3 ms·
echo "set background=dark" > /etc/vim/vimrc.local
by cleeus 10y ago
echo "set background=dark" > /etc/vim/vimrc.local
- _RPM 10y agoYou should use `>>` in order not truncate the existing file if there is one.
- JoshTriplett 10y agoFor this and a hundred other things, I prefer to use a git home directory.
- raimue 10y agoAll users in your team are forced to use dark terminal backgrounds?
- JoshTriplett 10y agoYou can actually autodetect whether the terminal background is light or dark. For any xterm-compatible terminal, write '\x1b]11;?\x07' to the terminal, and it'll write back a string telling you the foreground color (for instance, '\x1b]11;rgb:0000/0000/0000\x07', which if written back would set the foreground color). If the color matches 'rgb/RRRR/GGGG/BBBB', compute the luminance of that color, and assume a dark background if <0.5 and light otherwise.
- moosingin3space 10y agoI didn't know about this, but from now on, when writing CLIs that use color, I'm going to take this into account!
- JoshTriplett 10y agoAwesome; more tools should do that. Some caveats, though: * You might not get a response from every terminal, so limit how long you wait. * If you don't already have echo turned off, turn if off before sending the sequence, because otherwise it'll be visible as though the user typed it. * You don't know that the color will use the "rgb:RRRR/GGGG/BBBB" format (a terminal can return anything XParseColor can understand); just read the string from the escape to the terminator, look for 'rgb:', and ignore formats you don't understand. * To calculate whether a color is "light" or "dark", see https://en.wikipedia.org/wiki/Luma_%28video%29 https://en.wikipedia.org/wiki/Luma_%28video%29: dark = (0.299*red + 0.587*green + 0.114*blue) < 0.5;
- moosingin3space 10y agoHave you measured how long typical terminals take to respond? Regarding the third point, it might be a good idea to just feed it to XParseColor and process it from there.
- JoshTriplett 10y ago> Have you measured how long typical terminals take to respond? Arbitrarily long. Consider that a user might run your application over SSH via a high-latency network connection. Better to just handle it asynchronously. Your input loop needs to watch for escape sequences anyway, so watch for that one and process it when or if you see it. Sadly, that only works for interactive screen-oriented applications, not run-and-exit command-line applications that want to use color. > Regarding the third point, it might be a good idea to just feed it to XParseColor and process it from there. That assumes you have libX11 and an X Display available. The former is a heavy dependency for a CLI application, and the latter requires you to connect to the X server. I'd suggest just manually handling the common case of "rgb:R/G/B" (where each component may use 1-4 digits and requires scaling accordingly), and then deal with anything else if your users actually encounter it in the wild.
- moosingin3space 10y agoI assume XParseColor would therefore limit portability to OS X or Wayland Linux. I stand corrected. I was speaking of this regarding screen-oriented termbox/curses applications, not run-and-exit applications.