Some terminal color functions, including directory-based prompt colors

All of this code is taken from my ~/.bashrc. Note that some variables are outside of functions. It should be easy to adapt everything below to your own preferences.
This is my PS1 prompt. Note how the color variables are used.
COLOR_1="\[\e[1;37m\]"
COLOR_2="\[\e[0;37m\]"
COLOR_3="\[\e[1;34m\]"
COLOR_4="\[\e[1;30m\]"
function set_ps1()
PS1="\n${COLOR_3}┌─[${COLOR_2}\u${COLOR_3}@${COLOR_4}\h ${COLOR_2}\w${COLOR_3}]\n${COLOR_3}└─> ${COLOR_2}"
set_ps1
A while ago I wrote this function to change the color of "decorations" in the prompt. It works by changing one of the color variables. If invoked with a number it will set the corresponding color, otherwise it will choose a random color from the available palette.
_palette=$(tput colors)
function color()
NUMBER=$1
if [ -z "$NUMBER" ]; then
NUMBER=$[ ( $RANDOM % $_palette ) + 1 ]
echo "number $NUMBER"
fi
COLOR_3="\[\e[0;38;5;${NUMBER}m\]"
set_ps1
Recently, when I was playing with colors, I also wrote this function to display the 256-color palette so I could easily choose a color to pass to the function above. If you pass it an argument, it will display the palette in a wide format.
function colors()
for NUMBER in $(seq 0 15); do
printf "\e[0;38;5;${NUMBER}m%4d" $NUMBER
done
echo ""
if [ -z "$1" ]; then
for _I in $(seq 0 5); do
for _J in $(seq 0 5); do
for _K in $(seq 0 5); do
NUMBER=$((16 + $_I + 6 * $_J + 36 * $_K ))
printf "\e[0;38;5;${NUMBER}m%4d" $NUMBER
done
echo -n " "
for _K in $(seq 0 5); do
NUMBER=$((16 + 36 * $_I + $_J + 6 * $_K))
printf "\e[0;38;5;${NUMBER}m%4d" $NUMBER
done
echo -n " "
for _K in $(seq 0 5); do
NUMBER=$((16 + 6 * $_I + 36 * $_J + $_K))
printf "\e[0;38;5;${NUMBER}m%4d" $NUMBER
done
echo ""
done
echo ""
done
else
for _I in $(seq 0 5); do
for _J in $(seq 0 5); do
for _K in $(seq 0 5); do
NUMBER=$((16 + 6 * $_I + $_J + 36 * $_K))
printf "\e[0;38;5;${NUMBER}m%4d" $NUMBER
#echo -n " $_I$_J$_K"
done
echo -n " "
done
echo ""
done
echo ""
for _I in $(seq 0 5); do
for _J in $(seq 0 5); do
for _K in $(seq 0 5); do
NUMBER=$((16 + $_I + 36 * $_J + 6 * $_K))
printf "\e[0;38;5;${NUMBER}m%4d" $NUMBER
#echo -n " $_I$_J$_K"
done
echo -n " "
done
echo ""
done
echo ""
for _I in $(seq 0 5); do
for _J in $(seq 0 5); do
for _K in $(seq 0 5); do
NUMBER=$((16 + 36 * $_I + 6 * $_J + $_K))
printf "\e[0;38;5;${NUMBER}m%4d" $NUMBER
#echo -n " $_I$_J$_K"
done
echo -n " "
done
echo ""
done
echo ""
fi
for NUMBER in $(seq 232 255); do
printf "\e[0;38;5;${NUMBER}m%4d" $NUMBER
done
Even more recently, I've been using certain colors to provide visual cues about directory location that let me quickly scan open terminals to find the one I want, so I've written this function, which will change the PS1 prompt based on directory. Just add in cases as you need them and change the colors as you like (the colors below are just an example). You can use it synonymously with "cd".
function ccd()
cd $@
_dir=$(pwd)/
case $_dir in
~/projects/*)
color 202
/tmp/*)
color 49
/usr/*)
color 190
color 12
esac
Use this thread to post your own terminal color functions or variations of others that you've found here, along with feedback, discussion, etc.

I expect this to become something of a bargain bin for terminal color functions. A bit of rummaging might turn up a few gems, but most of it will be worthless crap to most.

Similar Messages

  • RGB values of current terminal color settings?

    The colors displayed for different ANSI escape codes are configurable via .Xdefaults or directly on the command line via other ANSI escapes.
    Is there any way to dump the current values from a terminal? For example, given the ANSI escape code "\033[31m", I would like to know the current RGB values used to display it.
    Obviously this will depend on the terminal (e.g. urxvt can have different settings from xterm), but I'm hoping that there is some obscure tool to do this.

    Coincidentally, I recently wrote a script to do exactly this: query all the color values from a terminal emulator and show them in a nice table. I was planning to make a thread for this, but this thread is perfect.  In my opinion, the strategy of querying colors from the terminal itself is superior (when it is supported by the terminal) to mucking around with .Xresources, .Xdefaults, or "xrdb --query", which only work in pretty limited situations. The drawbacks of my approach are: (1) it can be challenging to make the same code work on different terminal emulators, and (2) you have to use it from the terminal you want to query, and not from within a screen or tmux session. (I think there may be partial workarounds for (2), but I haven't implemented them.) I've tested my code on a number of terminals, and the upshot is that xterm and urxvt are supported flawlessly, and VTE-based terminals like gnome-terminal and XFCE's "Terminal" are almost fully supported. (I wasn't able to query the default foreground and background colors, but everything else seems to work.) Most other X terminals don't seem to support this method of querying color values.
    Here's an example of what the script produces:
    Obviously, that's a heavily formatted table, but I think the code has enough comments that you can take what you need from it. It works under python 3 or python 2.7.
    Edit: This version is superseded by the one in post #27, which is structured better. I'm leaving this here since some of the future replies refer to it.
    #!/usr/bin/python
    This is a Python script to show off your terminal ANSI colors (or more
    colors, if your terminal has them). It works on both Python 2.7 and
    Python 3.
    This script must be run from the terminal whose colors you want to
    showcase. Not all terminal types are supported (see below). At the
    very minimum, 16-color support is required.
    Fully supported terminals:
    xterm
    urxvt
    For these terminals, this script can show a color table with correct RGB
    values for each color. It queries the RGB values from the terminal
    itself, so it works even if you change the colors after starting the
    terminal.
    Mostly supported terminals: pretty much all VTE-based terminals. This
    includes:
    vte
    Terminal (XFCE)
    gnome-terminal
    terminator
    tilda
    and many more. These are on "mostly" status because I don't know how to
    query their foreground and background colors. Everything else works,
    though, albeit with noticeable slowness (which may be beyond this
    script's control).
    Somewhat supported terminals: pretty much all other X-client terminals
    I've tried. These include:
    konsole (KDE)
    terminology (Enlightenment)
    Eterm (Enlightenment)
    (etc.)
    For these terminals, the script can output a color table just fine, but
    without RGB values.
    Unsupported terminals:
    ajaxterm
    Linux virtual console (i.e., basic TTY without X-windows)
    Warning: do not run this script on the Linux virtual console unless you
    want a garbled TTY! That said, you can still type `tput reset<Enter>'
    afterward to get back to a usable console. :-) The situation with
    ajaxterm is similar, but not as bad.
    If a terminal isn't mentioned here, I probably haven't tried it. Attempt
    at your own risk!
    Note regarding screen/tmux: this script can theoretically be run from a
    screen or tmux session, but you will not get any RGB values in the
    output (indeed, a screen session can be opened on multiple terminals
    simultaneously, so there typically isn't a well defined color value for
    a given index). However, it's interesting to observe that screen and
    tmux emulate a 256 color terminal independently of the terminal(s)
    to which they are attached, which is very apparent if you run the script
    with 256-color output on a screen session attached to a terminal with 8-
    or 16-color terminfo (or with $TERM set to such).
    This code is licensed under the terms of the GNU General Public License:
    http://www.gnu.org/licenses/gpl-3.0.html
    and with absolutely no warranty. All use is strictly at your own risk.
    from sys import stdin, stdout, stderr
    import re
    import select
    import termios
    from collections import defaultdict
    from argparse import (ArgumentParser, ArgumentError)
    # Operating system command
    osc = "\033]"
    # String terminator
    # ("\033\\" is another option, but "\007" seems to be understood by
    # more terminals. Terminology, for example, doesn't seem to like
    # "\033\\".)
    st = "\007"
    # Control sequence introducer
    csi = "\033["
    # ANSI SGR0
    reset = csi + 'm'
    # Errors that may be raised by rgb_query
    num_errors = 0
    class InvalidResponseError(Exception):
    The terminal's response couldn't be parsed.
    def __init__(self, q, r):
    global num_errors
    num_errors += 1
    Exception.__init__(self, "Couldn't parse response " + repr(r) +
    " to query " + repr(q))
    class NoResponseError(Exception):
    The terminal didn't respond, or we were too impatient.
    def __init__(self, q):
    global num_errors
    num_errors += 1
    Exception.__init__(self, "Timeout on query " + repr(q))
    # Wrappers for xterm & urxvt operating system controls.
    # These codes are all common to xterm and urxvt. Their responses aren't
    # always in the same format (xterm generally being more consistent), but
    # the regular expression used to parse the responses is general enough
    # to work for both.
    # Note: none of these functions is remotely thread-safe.
    def get_fg(timeout):
    Get the terminal's foreground (text) color as a 6-digit
    hexadecimal string.
    return rgb_query([10], timeout)
    def get_bg(timeout):
    Get the terminal's background color as a 6-digit hexadecimal
    string.
    return rgb_query([11], timeout)
    def get_color(a, timeout):
    Get color a as a 6-digit hexadecimal string.
    return rgb_query([4, a], timeout)
    def test_fg(timeout):
    Return True if the terminal responds to the "get foreground" query
    within the time limit and False otherwise.
    return test_rgb_query([10], timeout)
    def test_bg(timeout):
    Return True if the terminal responds to the "get background" query
    within the time limit and False otherwise.
    return test_rgb_query([11], timeout)
    def test_color(timeout):
    Return True if the terminal responds to the "get color 0" query
    within the time limit and False otherwise.
    return test_rgb_query([4, 0], timeout)
    def test_rgb_query(q, timeout):
    Determine if the terminal supports query q.
    Arguments: `q' and `timeout' have the same interpretation as in
    rgb_query().
    Return: True if the terminal gives a valid response within the
    time limit and False otherwise.
    This function will not raise InvalidResponseError or
    NoResponseError, but any other errors raised by rgb_query will
    be propagated.
    try:
    rgb_query(q, timeout)
    return True
    except (InvalidResponseError, NoResponseError):
    return False
    # String to use for color values that couldn't be determined
    rgb_placeholder = '??????'
    # This is what we expect the terminal's response to a query for a color
    # to look like. If we didn't care about urxvt, we could get away with a
    # simpler implementation here, since xterm and vte seem to give pretty
    # consistent and systematic responses. But I actually use urxvt most of
    # the time, so....
    ndec = "[0-9]+"
    nhex = "[0-9a-fA-F]+"
    crgb = ("\033\\]({ndec};)+rgba?:" +
    "({nhex})/({nhex})/({nhex})(/({nhex}))?").format(**vars())
    re_response = re.compile(crgb)
    # The problem I'm attempting to work around with this complicated
    # implementation is that if you supply a terminal with a query that it
    # does not recognize or does not have a good response to, it will simply
    # not respond *at all* rather than signaling the error in any way.
    # Moreover, there is a large variation in how long terminals take to
    # respond to valid queries, so it's difficult to know whether the
    # terminal has decided not to respond at all or it needs more time.
    # This is why rgb_query has a user-settable timeout.
    P = select.poll()
    P.register(stdin.fileno(), select.POLLIN)
    def flush_input():
    Discard any input that can be read at this moment.
    repeat = True
    while repeat:
    evs = P.poll(0)
    if len(evs) > 0:
    stdin.read()
    repeat = True
    else:
    repeat = False
    def rgb_query(q, timeout=-1):
    Query a color-valued terminal parameter.
    Arguments:
    q: The query code as a sequence of nonnegative integers, i.e.,
    [q0, q1, ...] if the escape sequence in pseudo-Python is
    "\033]{q0};{q1};...;?\007"
    timeout: how long to wait for a response. (negative means
    wait indefinitely if necessary)
    Return: the color value as a 6-digit hexadecimal string.
    Errors:
    NoResponseError will be raised if the query times out.
    InvalidResponseError will be raised if the terminal's
    response can't be parsed.
    See
    http://invisible-island.net/xterm/ctlseqs/ctlseqs.html
    ("Operating System Controls") to see the various queries
    supported by xterm. Urxvt supports some, but not all, of them,
    and has a number of its own (see man -s7 urxvt).
    Warning: before calling this function, make sure the terminal is
    in noncanonical, non-blocking mode.
    query = osc + ';'.join([str(k) for k in q]) + ';?' + st
    flush_input()
    stdout.write(query)
    stdout.flush()
    # This is addmittedly flawed, since it assumes the entire response
    # will appear in one shot. It seems to work in practice, though.
    evs = P.poll(timeout)
    if len(evs) == 0:
    raise NoResponseError(query)
    r = stdin.read()
    m = re_response.search(r)
    if not m:
    raise InvalidResponseError(query, r)
    # (possibly overkill, since I've never seen anything but 4-digit RGB
    # components in responses from terminals, in which case `nd' is 4
    # and `u' is 0xffff, and the following can be simplified as well
    # (and parse_component can be eliminated))
    nd = len(m.group(2))
    u = int('f'*nd, 16)
    # An "rgba"-type reply (for urxvt) is apparently actually
    # rgba:{alpha}/{alpha * red}/{alpha * green}/{alpha * blue}
    # I opt to extract the actual RGB values by eliminating alpha. (In
    # other words, the alpha value is discarded completely in the
    # reported color value, which is a compromise I make in order to get
    # an intuitive and compact output.)
    if m.group(5):
    # There is an alpha component
    alpha = float(int(m.group(2), 16))/u
    idx = [3, 4, 6]
    else:
    # There is no alpha component
    alpha = 1.0
    idx = [2, 3, 4]
    c_fmt = '%0' + ('%d' % nd) + 'x'
    components = [int(m.group(i), 16) for i in idx]
    t = tuple(parse_component(c_fmt % (c/alpha)) for c in components)
    return "%02X%02X%02X" % t
    def parse_component(s):
    Take a string representation of a hexadecimal integer and transorm
    the two most significant digits into an actual integer (or double
    the string if it has only one character).
    n = len(s)
    if n == 1:
    s += s
    elif n > 2:
    s = s[:2]
    return int(s, 16)
    def test_num_colors(timeout):
    Attempt to determine the number of colors we are able to query from
    the terminal. timeout is measured in milliseconds and has the same
    interpretation as in rgb_query. A larger timeout is safer but will
    cause this function to take proportionally more time.
    if not test_color(timeout):
    return 0
    a = 0
    b = 1
    while test_rgb_query([4, b], timeout):
    a = b
    b += b
    while b - a > 1:
    c = (a + b)>>1
    if test_rgb_query([4, c], timeout):
    a = c
    else:
    b = c
    return b
    class ColorDisplay(object):
    Class for producing a colored display of terminal RGB values.
    def __init__(self, timeout=100, color_level=3, do_query=True):
    timeout: same interpretation as in rgb_query. A larger timeout
    will be used a small number of times to test the
    capabilities of the terminal.
    color_level: how much color should be in the output. Use 0 to
    suppress all color and 3 or greater for maximum coloredness.
    do_query: whether to attempt to query RGB values from the
    terminal or just use placeholders everywhere
    self.timeout=timeout
    self.color_level=color_level
    # try getting the rgb value for color 0 to decide whether to
    # bother trying to query any more colors.
    self.do_query = do_query and test_color(self.timeout*5)
    def none_factory():
    return None
    # colors for highlighting
    self.hi = defaultdict(none_factory)
    self.hi['['] = 10
    self.hi[']'] = 10
    self.hi['+'] = 9
    self.hi['/'] = 9
    for c in '0123456789ABCDEF':
    self.hi[c] = 12
    def show_ansi(self):
    Show the 16 ANSI colors (colors 0-15).
    color_order = [0, 1, 3, 2, 6, 4, 5, 7]
    names = [' Black ', ' Red ', ' Green ', ' Yellow ',
    ' Blue ', ' Magenta', ' Cyan ', ' White ']
    stdout.write(self.fgcolor('15', 3))
    for k in range(8):
    a = color_order[k]
    stdout.write(names[a])
    stdout.write('\n')
    stdout.write(self.fgcolor(None, 3))
    c = None
    for k in range(8):
    a = color_order[k]
    c = self.hiprint(' [%X/%X] ' % (a, 8 + a), c)
    stdout.write('\n')
    self.show_color_table([0,8], color_order)
    def show_color_cube(self, n):
    Show the "RGB cube" (xterm colors 16-231 (256-color) or 16-79
    (88-color)). The cube has sides of length 6 or 4 (for 256-color
    or 88-color, respectively).
    base = {256:6, 88:4}[n]
    c = None
    c = self.hiprint('[ + ] ', c)
    for w in range(base):
    c = self.hiprint('[%X] ' % w, c)
    stdout.write('\n\n' + self.fgcolor(None, 3))
    for u in range(base):
    for v in range(base):
    stdout.write(' '*v)
    x = (u*base + v)*base
    self.hiprint(' [%02X] ' % (16 + x))
    for w in range(base):
    self.show_color(x + w + 16)
    stdout.write('\n')
    stdout.write('\n\n')
    def show_grayscale_ramp(self, end):
    Show the "grayscale ramp" (xterm colors 232-255 (256-color) or
    80-87 (88-color)).
    start = {256:232, 88:80}[end]
    n = end - start
    vals = [self.get_color(a) for a in range(start, end)]
    #stdout.write(reset)
    c = None
    c = self.hiprint('[ ', c)
    for v in range(n):
    c = self.hiprint('%02X ' % (start + v), c)
    c = self.hiprint(']\n', c)
    stdout.write('\n ' + self.fgcolor(None, 3))
    for v in range(n):
    stdout.write(' ' + self.block(start + v, 2))
    stdout.write('\n ')
    for u in range(3):
    for v in range(n):
    stdout.write(' ')
    stdout.write(self.fgcolor(start + v, 2))
    stdout.write(vals[v][2*u : 2*(u + 1)])
    stdout.write(self.fgcolor(None, 2))
    stdout.write('\n ')
    stdout.write('\n')
    def show_colors(self, n):
    Make a table showing colors 0 through n-1.
    self.show_color_table(range(0,n,8), range(8), n, True)
    def show_color_table(self, rows, cols, stop=-1, label=False):
    Make a color table with all possible color indices of the form
    rows[k] + cols[j] that are less than `stop' (if `stop' is not
    negative). If label is True, then print row and column labels.
    if label:
    self.hiprint('[ + ]')
    stdout.write(self.fgcolor(None, 3))
    for a in cols:
    stdout.write(' ' + self.octal(a) + ' ')
    stdout.write('\n')
    if label:
    stdout.write(' ')
    stdout.write('\n')
    for b in rows:
    if label:
    stdout.write(self.octal(b) + ' ')
    for a in cols:
    c = a + b
    if stop < 0 or c < stop:
    self.show_color(b + a)
    else:
    stdout.write(' ')
    stdout.write('\n')
    stdout.write('\n')
    def show_color(self, a):
    Make a pretty display of color number `a', showing a block of
    that color followed by the 6-character hexadecimal code for the
    color.
    stdout.write(' ' + self.block(a) + ' ')
    stdout.write(self.fgcolor(a, 2) + (self.get_color(a)))
    stdout.write(self.fgcolor(None, 2))
    def hiprint(self, s, last_color=-1):
    Print s to stdout, highlighting digits, brackets, etc. if the
    color level allows it.
    Arguments:
    s: the string to print.
    last_color: the current terminal foreground color. This
    should be `None' if no color is set, or the current
    color index, or something else (like a negative integer)
    if the color isn't known. (The last option is always
    safe and will force this function to do the right
    thing.)
    Return: the current foreground color, which can be passed as
    last_color to the next call if the color isn't changed in
    between.
    for c in s:
    if c == ' ':
    color = last_color
    else:
    color = self.hi[c]
    if color != last_color:
    stdout.write(self.fgcolor(color, 3))
    stdout.write(c)
    last_color = color
    return last_color
    def octal(self, x):
    Return a base-8 string for the integer x, highlighted if the
    color level allows it.
    return self.fgcolor(self.hi['+'], 3) + '0' + \
    self.fgcolor(self.hi['0'], 3) + ('%03o' % x)
    def block(self, c, n=1):
    Return a string that prints as a block of color `c' and size `n'.
    return self.bgcolor(c, 1) + ' '*n + self.bgcolor(None, 1)
    # Changing the foreground and background colors.
    # While the 38;5 and 48;5 SGR codes are less portable than the usual
    # 30-37 and 40-47, these codes seem to be fairly widely implemented (on
    # X-windows terminals, screen, and tmux) and support the whole color
    # range, as opposed to just colors 0-8. They also make it very easy to
    # set the background to a given color without needing to mess around
    # with bold or reverse video (which are hardly portable themselves).
    # This is useful even for the 16 ANSI colors.
    def fgcolor(self, a=None, level=-1):
    Return a string designed to set the foreground color to `a' when
    printed to the terminal. None means default.
    if self.color_level >= level:
    if a is None:
    return csi + '39m'
    else:
    return csi + '38;5;' + str(a) + 'm'
    else:
    return ''
    def bgcolor(self, a=None, level=-1):
    Return a string designed to set the background color to `a' when
    printed to the terminal. None means default.
    if self.color_level >= level:
    if a is None:
    return csi + '49m'
    else:
    return csi + '48;5;' + str(a) + 'm'
    else:
    return ''
    def get_color(self, a):
    if self.do_query:
    try:
    return get_color(a, timeout=self.timeout)
    except (InvalidResponseError, NoResponseError):
    return rgb_placeholder
    else:
    return rgb_placeholder
    # Command-line arguments
    timeout_dft = 200
    parser = ArgumentParser(
    description="Python script to show off terminal colors.",
    epilog="Run this script from the terminal whose colors " +
    "you want to showcase. " +
    "For a brief synopsis of which terminal types are " +
    "supported, see the top of the source code.")
    mode_group = parser.add_mutually_exclusive_group()
    p_choices = [16, 88, 256]
    arg_p = mode_group.add_argument(
    '-p', '--pretty',
    action='store_true', default=False,
    help="show colors 0 through N-1 in a pretty format. " +
    ("N must belong to %r. " % p_choices) +
    "If N > 16, it should be the actual number of colors " +
    "supported by the terminal, or the output will almost " +
    "certainly not be pretty.")
    mode_group.add_argument(
    '-f', '--flat',
    action='store_true', default=False,
    help="show a simple table with colors 0 through N-1. ")
    parser.add_argument(
    'n', nargs='?', metavar='N',
    type=int, default=16,
    help="number of colors to show. " +
    "Unless you explicitly supply -p/--pretty or -f/--flat, " +
    "--pretty is used if possible and --flat is used " +
    "otherwise. " +
    "N defaults to 16, showing the ANSI colors 0-15. " +
    "If N is 0, the script will attempt to determine the " +
    "maximum number of colors automatically " +
    "(which may be slow).")
    parser.add_argument(
    '--no-fgbg',
    action='store_false', dest='fgbg', default=True,
    help="suppress display of foreground/background colors.")
    parser.add_argument(
    '--no-query',
    action='store_false', dest='do_query', default=True,
    help="don't try to query any RGB values from the terminal " +
    "and just use placeholders.")
    parser.add_argument(
    '-t', '--timeout', metavar='T',
    type=int, default=timeout_dft,
    help="how long to wait for the terminal to "
    "respond to a query, in milliseconds " +
    "[default: {0}]. ".format(timeout_dft) +
    "If your output has '?' characters " +
    "instead of RGB values " +
    "or junk printed after the script runs, " +
    "increasing this value may or may not " +
    "help, depending on the terminal. " +
    "A negative T will behave like infinity.")
    parser.add_argument(
    '-l', '--level', metavar='L',
    type=int, default=3,
    help="choose how much color to use in the output. " +
    "(0 = no color; 3 = most color [default])")
    if __name__ == '__main__':
    args = parser.parse_args()
    assert not (args.pretty and args.flat)
    if args.pretty:
    if args.n not in p_choices:
    raise ArgumentError(
    arg_p,
    "N must belong to %r" % p_choices)
    tc_save = None
    try:
    tc_save = termios.tcgetattr(stdout.fileno())
    tc = termios.tcgetattr(stdout.fileno())
    # Don't echo the terminal's responses
    tc[3] &= ~termios.ECHO
    # Noncanonical mode (i.e., disable buffering on the terminal
    # level)
    tc[3] &= ~termios.ICANON
    # Make input non-blocking
    tc[6][termios.VMIN] = 0
    tc[6][termios.VTIME] = 0
    termios.tcsetattr(stdout.fileno(), termios.TCSANOW, tc)
    if args.n == 0:
    args.n = test_num_colors(args.timeout)
    # We are guaranteed to have failed some queries now, but
    # that isn't meaningful.
    num_errors = 0
    if not (args.pretty or args.flat):
    if args.n in p_choices:
    args.pretty = True
    else:
    args.flat = True
    if args.level >= 1:
    stdout.write(reset)
    if args.fgbg:
    if args.do_query:
    try:
    bg = get_bg(timeout=args.timeout)
    except (InvalidResponseError, NoResponseError):
    bg = rgb_placeholder
    try:
    fg = get_fg(timeout=args.timeout)
    except (InvalidResponseError, NoResponseError):
    fg = rgb_placeholder
    else:
    bg = rgb_placeholder
    fg = rgb_placeholder
    stdout.write("\n Background: %s\n" % bg)
    stdout.write(" Foreground: %s\n\n" % fg)
    C = ColorDisplay(args.timeout, args.level, args.do_query)
    if args.pretty:
    assert args.n in p_choices
    stdout.write('\n ANSI colors:\n\n')
    C.show_ansi()
    if args.n > 16:
    stdout.write('\n RGB cube:\n\n')
    C.show_color_cube(args.n)
    stdout.write(' Grayscale ramp:\n\n')
    C.show_grayscale_ramp(args.n)
    else:
    C.show_colors(args.n)
    if num_errors > 0:
    stderr.write("Warning: not all queries succeeded\n" +
    "Warning: (output contains " +
    "placeholders and may be inaccurate)\n")
    finally:
    if args.level >= 1:
    stdout.write(reset)
    flush_input()
    if tc_save != None:
    termios.tcsetattr(stdout.fileno(),
    termios.TCSANOW, tc_save)
    Run it as
    python showcolors.py -h
    to get an overview of the functionality.
    TL;DR: you can echo a string like "\033]4;13;?\007" to an xterm, and it will output the RGB value of color #13 to itself in the form "\033]4;13;rgb:rrrr/gggg/bbbb\007", which you can then read and parse. To try it out:
    $ echo -en "\033]4;13;?\007"
    There are some subtleties if you want this to work on other terminals like urxvt; for that you can experiment yourself or read the code. 
    Further reading: http://invisible-island.net/xterm/ctlseqs/ctlseqs.html (heading "Operating System Controls").
    Xyne, regarding determining the number of colors: I don't know how to do that completely reliably. You can try simply
    tput colors
    but this relies on the value of $TERM and its terminfo and thus may be unreliable. A kludgy but workable way to do this using the "rgb_query" function in my script is to query color values using binary search to find the highest color value the terminal will allow you to query. The main problem with this is that if you query an invalid color index, then the terminal just won't respond at all, and if you query a valid index, it will respond but after a somewhat unpredictable delay, so it's hard to know for sure which one is the case. Like I said, it's kludgy but workable.
    Edit: I went ahead and added that functionality to my script. Try running it as
    python showcolors.py 0
    or look at the function "test_num_colors".
    Last edited by Lux Perpetua (2012-10-22 11:18:21)

  • I am havign huge problems getting itunes 11.1.4 working on my windows 7 laptop. I have run itunes for some years, and regularly updated it when prompted. I have followed many of the suggestions e.g. uninstalling reinstalling, etc

    I have spent hours trying to get itunes working on my laptop.
    The only functinoality I crave is to be able to get pictures off my iphone 5 (which has the latest ios installed.), as almost all other functinoality of itunes I find painful beyond belief. It has the worst ergonomics I think of any software I have ever used, which is bizarely at odds with the mobile decvices, which by and large work quite nicely (indeed, why I bought them!)
    My laptop runs windows 7. It has all the latest microsoft updates installed (I am religious about this: it always has had.)
    I have run itunes on this machine for some years, regularly updating when I am prompted to.
    A few days back i was prompted to update to 11.1.4
    It failed to install badly. whatever I try at some point during the install process the installer just hangs, or never terminates.
    All communication between computer and iphone functionality has been lost.
    Nothing eles on my machine is behaving oddly. slowly etc. it is only apple stuff that isn't working.
    I googled and found a lot of recurring themes on apple forums:
    So far I have tried:
    uninstalling / reinstalling. (hangs during installation).
    Restarting the machine between uninstall and reinstall.
    Searching and removing any directories/ contents related to apple, after the uninstall, prior to machine reboot.
    I have even used iobit uninstaller, as removing apple software as you know is almost impossible (ever tried disabbling the quicktime updater that runs at startup? it's like a virus !!)
    I have removed all apple software incl quicktime.
    I have tried the microsoft software installer fixit link often posted to.
    i have tried unpacking the apple installation file, using the latest version of winrar, to try installing one at a time.
    I have found the installation is very very very slow (it looks as though it hangs, but i leave it running in the background, after 15-20 minutes, the status starts advancing for example). so far I have managed to install the first few components up to applesoftware  update,msi, and they seem to need to be run multiple times.
    (this last one took about 40 minutes).
    I have been very careful to install / uninstall the software components int eh "prescribed" order.
    I have tried each step multiple times, rebooting the machine numerous times, cleaning temp folders (with ccleaner) etc.
    I ave tried installing when my virus checker AVG is disabled.
    (i have virus checked the machine with AVG and malware bytes, I have the latest microsft security essential updates installed.)
    I ahve tried stopping apple services (as suggested in one of the apple forum posts).
    As you can gather I'm seriously tearing my hair out.
    I presume there is some kind of generic bug in this installer: as a friend had exactly the same problem on sunday night, with a different machine, running windows 7, and a couple of her colleagues at work has had the self same problem over the weekend, though none of them seem to have gone to the lengths I have yet !
    I tried doing a system restore, but my machine seems to have lunched all previous system restore points, so I can't . Arrrrrgggg !
    Is an older version of itunes available so i can install that instead ?
    What should I do next ?
    Jonathan

    I have spent hours trying to get itunes working on my laptop.
    The only functinoality I crave is to be able to get pictures off my iphone 5 (which has the latest ios installed.), as almost all other functinoality of itunes I find painful beyond belief. It has the worst ergonomics I think of any software I have ever used, which is bizarely at odds with the mobile decvices, which by and large work quite nicely (indeed, why I bought them!)
    My laptop runs windows 7. It has all the latest microsoft updates installed (I am religious about this: it always has had.)
    I have run itunes on this machine for some years, regularly updating when I am prompted to.
    A few days back i was prompted to update to 11.1.4
    It failed to install badly. whatever I try at some point during the install process the installer just hangs, or never terminates.
    All communication between computer and iphone functionality has been lost.
    Nothing eles on my machine is behaving oddly. slowly etc. it is only apple stuff that isn't working.
    I googled and found a lot of recurring themes on apple forums:
    So far I have tried:
    uninstalling / reinstalling. (hangs during installation).
    Restarting the machine between uninstall and reinstall.
    Searching and removing any directories/ contents related to apple, after the uninstall, prior to machine reboot.
    I have even used iobit uninstaller, as removing apple software as you know is almost impossible (ever tried disabbling the quicktime updater that runs at startup? it's like a virus !!)
    I have removed all apple software incl quicktime.
    I have tried the microsoft software installer fixit link often posted to.
    i have tried unpacking the apple installation file, using the latest version of winrar, to try installing one at a time.
    I have found the installation is very very very slow (it looks as though it hangs, but i leave it running in the background, after 15-20 minutes, the status starts advancing for example). so far I have managed to install the first few components up to applesoftware  update,msi, and they seem to need to be run multiple times.
    (this last one took about 40 minutes).
    I have been very careful to install / uninstall the software components int eh "prescribed" order.
    I have tried each step multiple times, rebooting the machine numerous times, cleaning temp folders (with ccleaner) etc.
    I ave tried installing when my virus checker AVG is disabled.
    (i have virus checked the machine with AVG and malware bytes, I have the latest microsft security essential updates installed.)
    I ahve tried stopping apple services (as suggested in one of the apple forum posts).
    As you can gather I'm seriously tearing my hair out.
    I presume there is some kind of generic bug in this installer: as a friend had exactly the same problem on sunday night, with a different machine, running windows 7, and a couple of her colleagues at work has had the self same problem over the weekend, though none of them seem to have gone to the lengths I have yet !
    I tried doing a system restore, but my machine seems to have lunched all previous system restore points, so I can't . Arrrrrgggg !
    Is an older version of itunes available so i can install that instead ?
    What should I do next ?
    Jonathan

  • Using substring function in the dashboard prompt

    Hi,
    I want to use a function in the dashboard prompt.
    Example: Subject Area:Paint --> Products --> Color
    I want to take second letter of color, describe a label for it and use this label in prompt. The formula is below;
    CASE WHEN (SUBSTRING(Products.Color FROM 2 FOR 1) = 'a') THEN 'AAA' ELSE 'BBB' END
    Dashboard prompt should list 3 choices; All choices, AAA, BBB.
    When selecting AAA in the prompt, these colors should be listed in the request; Carriage House Red, Dante, Manchester Red.
    I created a dashboard prompt (add a function) and a request. When selecting AAA in the prompt, it sends "AAA" as prompt, not sends "a". So I couldn't reach the result.
    Is it possible? Could anyone help me ASAP?
    Thanks & Best Regards,

    Create a column in the logical layer using the same formula that you described. Then use the new column in the prompt. Then add the new column to the report as 'is prompted'.

  • I have a task, that is i want to retrive the details from active directory based on name and i want show that details into grid view.

    Hi All,
    I have a task, that is i want to retrive the details from active directory based on name and i want show that details into grid view.
    Can any one help how to start.
    Thanks in advance!

    Hi AnilKarthik,
    You can get user details by name using DirectoryService namespace. Then you can create a DataTable to restore the information and then bind to the SharePoint GridView.
    Here are some deatiled code demos for your reference:
    how to get userdetails from Active Directory based on username using asp.net:
    http://www.aspdotnet-suresh.com/2011/03/how-to-get-userdetails-from-active.html
    How to get User Data from the Active Directory:
    http://www.codeproject.com/Articles/6778/How-to-get-User-Data-from-the-Active-Directory
    Using SPGridView to bound to list data in SharePoint:
    http://nishantrana.me/2009/03/23/using-spgridview-to-bound-to-list-data-in-sharepoint/
    Best Regards
    Zhengyu Guo
    TechNet Community Support

  • I cannot play some songs on itunes, I get a prompt for an old email address which not longer exists and I don't know the password.  HOw can I get them authorized to my new email address and password?

    I cannot play some songs on itunes, I get a prompt for an old email address which no longer exists and I don't remember the password.  How can I get these tunes transferred to my new email address and password?

    In one of the help pages for managing your Apple ID (http://support.apple.com/kb/HE40), it shows two separate sections, one for Apple ID and one for Primary Email address. When I go to manage my Apple ID, I see only a single section for both. Can the two be 'separated', especially when you face the situation of having to discontinue your email address for some reason?
    I also noticed that when navigating to Apple ID Support Communities, it shows my nickname 'dishdy'. How and when did I insert this? In the current sequence for creating an Apple ID I don't see this. In my current profile I don't see this.
    In any case, I have freed myself from my previous Apple ID (@artemis.it) on my iPhone.
    Thanks for your help.

  • How can I solve this error message? Some of your photos, including the photo "IMG_0374.jpg", were not copied to the iPad "(my name's) iPad" because they cannot be displayed on your iPad.

    how can I solve this error message? "Some of your photos, including the photo “IMG_0374.jpg”, were not copied to the iPad “(my name’s) iPad” because they cannot be displayed on your iPad."
    There were 273 photos in the event syncing from my Mac, but only the last 103 made it to the ipad. Most of the photos were taken by an iphone. I would appreciate any thoughts or insights - thanks.

    Adrian-
    That error message suggests the photo is somehow corrupt.
    Do you have the Apple Camera Connection Kit?  You can set up a USB thumb drive with MS-DOS FAT-32 format and copy your photos to it into a folder named DCIM.  Assuming they have an 8 character plus suffix name, the iPad will recognize them and give you the option of transferring them via the Kit's USB adapter.
    Once they are transferred, you can find out if there is a problem with any.
    Fred

  • Searching of programs/includes/tables based on string

    Hi Experts,
    I have a requirement, is there any program or transaction code to search programs/includes/tables based on the fields
    (Eg. company code, sales organization, country, currency) in the selection screen or any other method. 
    Please suggest, if any solution.
    Thanks,
    GR

    Hi,
    You will not find a program for this requirement & that too based on a field.
    I would suggest if you have the package then SE80 will be the best transaction which will give you all the objects like Tables/programs/FM/Enhancement that come under a package.
    Also if you do a whereused list on fields like Company code, Sales organization, Country, you will end up getting a massive list of objects where it is used.
    Regards
    Abhii

  • I want to change the "find" color from its green to some other color

    I would like to be able to change the color of "Find" (which is on the Edit Menu) to some other color; on some websites the background color is almost the same shade as green (and I wouldn't know if that's because of my Windows OS color selections (under Properties), or its native to Firefox color selection (and IF that can be changed somewhere on one of the menus, I haven't been able to find it).
    == N/A

    Are you referring to the font used for your entires in the text boxes and date boxes?  Or the Month and Date fonts?  If it's the latter you can't.
    If it the former select the font, click on the Option button at the bottom right and then click on the Settings button in the tray that comes out. There you will be able to change the font, size and color everywhere in the calendar:
    Happy Holidays

  • Call an ABAP program or a function module from command prompt/python script

    Dear All,
    I want to call a function module/ABAP program from command prompt or a python script.
    Let me explain with an example.
    There is a function module "z_add" that takes  two integers as input parameters and generates their sum.
    the sum is the output parameter.
    Now i want to call this function module from command prompt / python script and pass parameters to this function module.
    In return i must get the sum(i.e. the output of function module).
    I tried using STARTRFC ,was able to call the FM but could not get the return value(output) from FM.
    Can you please provide me the code of such a function module and the method to call it thereby passing parameters and getting the sum.
    Thanks and regards,
    Gaurav
    Edited by: gauravkec2005 on Mar 4, 2010 7:41 AM

    thank you both!  helpful answers! :o)
    anyway! 
    i have written the program which is called from the SAPScript:
        /:       PERFORM GET_VATNUMBER IN PROGRAM ZFI_F140_OPERATIONS
        /:       USING &BKPF-BUKRS&
        /:       CHANGING &VATNUMBER&
        CE       VAT Registration No : &VATNUMBER&
        REPORT zfi_f140_operations.
        FORM get_vatnumber TABLES in_par  STRUCTURE itcsy
                                  out_par STRUCTURE itcsy.
          DATA: lv_co_code TYPE bukrs,
                lv_vat_no  TYPE stceg.
          READ TABLE in_par WITH KEY name = 'BKPF-BUKRS'.
          MOVE in_par-value TO lv_co_code.
          SELECT SINGLE stceg FROM t001
            INTO lv_vat_no WHERE bukrs = lv_co_code.
          out_par-name = 'VATNUMBER'.
          WRITE lv_vat_no TO out_par-value.
          CONDENSE out_par-value.
          MODIFY out_par INDEX 1.
        ENDFORM.              
    it is not working and i cannot work out why... 
    i have not been ABAPing for very long but have had a go.... 
    any thoughts as to what i have done wrong?
    or point me where i should be looking?  thank you!

  • Our software vendor tells to use FF 3.5.1. because of some printer issues with their web based program. How safe is it to work with FF 3.5.1 in 2012?

    Our software vendor tells to use FF 3.5.1. because of some printer issues with their web based program. How safe is it to work with FF 3.5.1 in 2012?

    Thanks for the reply. I'll have a look at your solution.

  • Seperate include directory for i486-mingw32 cross-compiler toolchain

    I've installed the mingw32 cross-compiler. I noticed that when using this compiler, a seperate, non-standard include directory is used. So instead of copying all of the dependencies headers to compile the software, is there an easier way of including both directories?
    Thanks.

    I've installed the mingw32 cross-compiler. I noticed that when using this compiler, a seperate, non-standard include directory is used. So instead of copying all of the dependencies headers to compile the software, is there an easier way of including both directories?
    Thanks.

  • How to setup Wireless Clients MAC+Active Directory based acess

    Dear Gents,
    I want to setup Wireless Clients MAC+Active Directory based acess on AP 1242 standalone Wireless series .
    Steps i have configured :
    1) SSID manger  under Open authentication : Selected with EAP.
    2) under advacned Radius : s
    MAC Address  Authentication
    MAC Addresses Authenticated by:
    Authentication Server Only
    3) Server Manger : Current server list
    added the radius ip address 10.1.200.x
    EAP  Authentication
    MAC  Authentication
    Accounting
    Priority  1:  < NONE >10.113.253.1010.1.200.23410.8.200.1510.15.200.15
    Priority  1: < NONE >10.113.253.1010.1.200.23410.8.200.1510.15.200.15
    Priority  1: < NONE >10.113.253.1010.1.200.23410.8.200.1510.15.200.15
    Priority  2:  < NONE >10.113.253.1010.1.200.23410.8.200.1510.15.200.15
    Priority  2:  < NONE >10.113.253.1010.1.200.23410.8.200.1510.15.200.15
    Priority  2:  < NONE >10.113.253.1010.1.200.23410.8.200.1510.15.200.15
    Priority  3:  < NONE >10.113.253.1010.1.200.23410.8.200.1510.15.200.15
    Priority  3:  < NONE >10.113.253.1010.1.200.23410.8.200.1510.15.200.15
    Priority  3: < NONE >10.113.253.1010.1.200.23410.8.200.1510.15.200.15
    From ACS - Radius  we have choose a Group x( named as Mac-address group )
    All the wireless Client ( laptops ) mac-address are added as add username option and enter username
    as mac-address & enter the mac-address as pwd second option of password TAB.

    Hi Akber,
    I think you didnt understood what i was trying to say here :-( No problem..I will explain my theory again.Your requirment is to autheticate user from ACS internal database (you have already added the MAC address as the username on your ACS internal database) as well as from ACS external database (in your case this is AD).
    What i was saying is when when authetication request comes to raidus server it checks its internal database and if it find a valid username and password (here it will the MAC address and password which you have entered to the ACS database) the ACS will not query the external database (in your case the AD) for authetication.
    You can not have ACS to look in to both MAC and AD database at the same time.
    Hope this clears your doubt.
    Regards
    Najaf

  • Give me some examples for functions for read POST, write POST, modify POST

    Give me some examples for functions for read POST, write POST, modify POST, create and delete theme in forum. This functions have to be make like Remote Methods

    Give me some examples for functions for read POST, write POST, modify POST, create and delete theme in forum. This functions have to be make like Remote Methods

  • [svn:bz-trunk] 20582: Add support for destination-include directory-path=" mydir"/ .

    Revision: 20582
    Revision: 20582
    Author:   [email protected]
    Date:     2011-03-03 12:35:14 -0800 (Thu, 03 Mar 2011)
    Log Message:
    Add support for <destination-include directory-path="mydir"/>.
    This will process each file ending in ".xml" as an individual <destination-include file-path=""/> element, allowing a web application to define a directory of destination configuration snippets.
    Added a new API to ConfigurationFileResolver.java: getFiles(String dir).
    This returns a list of XML files contained in this directory relative to the current configuration file.
    Updated both the ServletResourceResolver and the LocalFileResolver with implementations.
    Modified Paths:
        blazeds/trunk/modules/common/src/flex/messaging/config/ConfigurationConstants.java
        blazeds/trunk/modules/common/src/flex/messaging/config/ConfigurationFileResolver.java
        blazeds/trunk/modules/common/src/flex/messaging/config/LocalFileResolver.java
        blazeds/trunk/modules/core/src/flex/messaging/config/ServerConfigurationParser.java
        blazeds/trunk/modules/core/src/flex/messaging/config/ServletResourceResolver.java

    Remember that Arch Arm is a different distribution, but we try to bend the rules and provide limited support for them.  This may or may not be unique to Arch Arm, so you might try asking on their forums as well.

Maybe you are looking for