How do I make the apple terminal window auto change colour scheme when I ssh to a specific server

前端 未结 10 1812
甜味超标
甜味超标 2020-12-12 12:58

When I ssh into a remote production server I would like the colour scheme of my terminal window to change to something brigh and scary, preferably red, to warn me that I am

10条回答
  •  悲&欢浪女
    2020-12-12 13:46

    Here's a combined solution based on a couple of existing answers that handles the exit. Also includes a little extra if you don't want to deal with 16 bit color values.

    This should be put in your ~/.bash_profile

    # Convert 8 bit r,g,b,a (0-255) to 16 bit r,g,b,a (0-65535)
    # to set terminal background.
    # r, g, b, a values default to 255
    set_bg () {
        r=${1:-255}
        g=${2:-255}
        b=${3:-255}
        a=${4:-255}
    
        r=$(($r * 256 + $r))
        g=$(($g * 256 + $g))
        b=$(($b * 256 + $b))
        a=$(($a * 256 + $a))
    
        osascript -e "tell application \"Terminal\" to set background color of window 1 to {$r, $g, $b, $a}"
    }
    
    # Set terminal background based on hex rgba values
    # r,g,b,a default to FF
    set_bg_from_hex() {
        r=${1:-FF}
        g=${2:-FF}
        b=${3:-FF}
        a=${4:-FF}
    
        set_bg $((16#$r)) $((16#$g)) $((16#$b)) $((16#$s))
    }
    
    # Wrapping ssh command with extra functionality
    ssh() {
        # If prod server of interest, change bg color
        if ...some check for server list
        then
            set_bg_from_hex 6A 05 0C
        end
    
        # Call original ssh command
        if command ssh "$@"
        then
            # on exit change back to your default
            set_bg_from_hex 24 34 52
        fi
    }
    
    • set_bg - takes 4 (8 bit) color values
    • set_bg_from_hex - takes 4 hex values. most of my color references I use are in hex, so this just makes it easier for me. It could be taken a step further to actually parse #RRGGBB instead of RR GG BB, but it works well for me.
    • ssh - wrapping the default ssh command with whatever custom logic you want. The if statement is used to handle the exit to reset the background color.

提交回复
热议问题