Posso modificare il background del mio terminale in base al nome host?


17

Vorrei cambiare il colore del mio sfondo del terminale in base al nome host. Il mio ragionamento per questo è principalmente quello di avere un modo extra per ricordare a me stesso su quale server mi trovo, quindi non faccio qualcosa di stupido.

C'è un modo in cui posso farlo usare lo sfondo di melanzane standard se sono sul mio computer locale, quindi cambiare rosso se utilizzo un server Web di produzione o altri host che potrei specificare?


Un'idea, script la modifica alla variabile ambientale che gestisce le impostazioni del terminale. Crea uno script per ogni luogo in cui ti trovi e includi la modifica delle impostazioni in quello script, ecco una guida che può aiutarti: cyberciti.biz/faq/… - in questo modo puoi semplicemente eseguire uno script che non si collegherà solo per te, ma personalizzerà il terminale per quella particolare sessione.
MaQleod,

1
C'è la stessa domanda sul sito di Ubuntu: askubuntu.com/questions/13705/… Mente, non ti biasimo, neanche all'inizio l'ho trovata :)
Stefano,

Risposte:


9

È possibile utilizzare l'opzione localcommand di ssh / config per eseguire un comando ogni volta che viene utilizzato un alias. Io uso

host hostname
    user myusername
    localcommand xtermcontrol --bg '#abc'

Questo dipende da xtermcontrol e dal fatto che il termine è xterm. Presumibilmente ci sono altre app per altri termini.

L'unico problema con questo approccio è che succede quando chiami ssh. Non c'è nulla per annullare il cambio di colore. L'ho fatto avvolgendo una funzione attorno a ssh, ma anche questo ha i suoi svantaggi.

function ssh() {
  FG=$(xtermcontrol --get-fg)
  BG=$(xtermcontrol --get-bg)
  $(which ssh) "$@"
  xtermcontrol --fg="$FG"
  xtermcontrol --bg="$BG"
}

7

Non sembra esserci alcuna funzionalità gnome-terminalper aggiungere una nuova scheda a una finestra esistente dalla riga di comando. Ma ci sono alcune opzioni per realizzare ciò che desideri.

Profili per comando

Crea un nuovo gnome-terminalprofilo per ogni host in cui SSH. Se hai solo pochi host a cui ti colleghi regolarmente, questo potrebbe essere il più semplice. Ogni profilo può avere un titolo diverso, colore di primo piano, colore di sfondo, comando personalizzato e altre impostazioni definite. Quindi è possibile utilizzare File -> Open Tabper aprire una nuova scheda con il profilo selezionato.

Profilo riutilizzabile

Crea un nuovo gnome-terminalprofilo che verrà utilizzato per aprire una nuova finestra ogni volta che vuoi connetterti a un diverso host SSH (basato su questa risposta AskUbuntu che Stefano ha sottolineato). Funzionerebbe bene se ti connetti frequentemente a molti host diversi. Ciò non ti consentirà di distinguere tra diverse gnome-terminalfinestre in cui sei connesso a host diversi solo sui colori di sfondo / primo piano, ma avrai un titolo diverso per finestra.

  1. Crea un nuovo gnome-terminalprofilo ( File -> New Profile) basato sul Defaultprofilo e chiamalo "RemoteHost" (nota, nessuno spazio in "RemoteHost" per facilitare i comandi).
  2. Nella Title and Commandscheda, modifica:
    1. Initial title: a "Host remoto"
    2. When terminal commands set their own titles: per Replace initial title
  3. Nella Colorsscheda, modifica:
    1. Deseleziona Use colors from system theme
    2. Build-in schemes: per Custom
    3. Text color:e Background color:ai colori di tua scelta. Tieni presente che alcuni comandi (come ls) usano i colori per il loro output e non vuoi scegliere colori che renderanno difficile leggere l'output.
  4. Fai clic sul Closepulsante per salvare il tuo nuovo profilo.
  5. Ora puoi aprire una nuova gnome-terminalfinestra per ogni host SSH remoto usando il comando gnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehost. L' -topzione imposta il gnome-terminaltitolo della finestra e l' -xopzione esegue il resto della riga di comando nel terminale. Si potrebbe anche fare un aliasaccorciamento dei tasti totali.

Riga di comando

Ho trovato questo post di blog con il seguente script che utilizza i comandi xdotoole wmctrl(non sono stati installati di default su Ubuntu, quindi potrebbe essere necessario installarli prima) per utilizzare la scorciatoia da tastiera gnome-terminal Ctrl+ Shift+ tper aprire una nuova scheda nella gnome-terminalfinestra corrente . Potrebbe essere modificato per aprire una nuova scheda con un profilo specifico ed eseguire alcuni comandi per te.

#!/bin/bash
# Path: /usr/local/bin/gnome-terminal
if [ "x$*" != "x" ]; then
  /usr/bin/gnome-terminal "$@"
else
  pgrep -u "$USER" gnome-terminal | grep -qv "$$"
  if [ "$?" == "0" ]; then
    WID=`xdotool search --class "gnome-terminal" | head -1`
    xdotool windowfocus $WID
    xdotool key ctrl+shift+t
    wmctrl -i -a $WID
  else
    /usr/bin/gnome-terminal
  fi
fi

Altro

Potresti diventare creativo e provare altre cose.

Questa risposta di SuperUser utilizza fondamentalmente un po 'di acrobati "script-fu" per creare un gnome-terminalprofilo temporaneo che viene utilizzato per aprire una nuova finestra. Potrebbe essere modificato per l'uso.

Probabilmente potresti usare queste domande e risposte StackOverflow e altri acrobati "script-fu" per cambiare dinamicamente il gnome-terminaltitolo ogni volta che SSH su un host remoto. Non sarebbe così importante come i cambiamenti di colore di sfondo / primo piano, ma sarebbe sempre meglio di un Terminaltitolo standard .


6

Funzionerà in Gnome, SE sei disposto a usare una nuova finestra gnome-terminal per ogni sessione SSH.

  1. Crea un nuovo profilo (con colore di sfondo diverso) chiamato "Remoto"

  2. Inserire quanto segue in .bash_aliases, o.bashrc

    ### add to .bash_aliases, for differentiating between local and remote hosts 
    sshhelper() {
       gnome-terminal --window-with-profile=Remote -x bash -c "ssh $1";
    }
    alias sshc=sshhelper
    

Ora sshc remote-machineapre una nuova sessione gnome-terminal con il profilo "Remoto". questo distinguerà tra profili locali e profili remoti.

Per ospitare più profili / host, crea più profili e inserisci invece qualcosa del genere .bash_aliases:

### add to .bash_aliases, for differentiating between multiple remote hosts
sshhelper() {
    HOST=`echo $1 | cut -d'@' -f2`

    case $HOST in
        Production )  PROFILE="Red" ;;
        Test )        PROFILE="Green" ;;
        # ... if you have more cases ...
        *)           PROFILE="Default" ;;
    esac

    gnome-terminal --window-with-profile=$PROFILE -x bash -c "ssh $1";
}

# alias ssh=sshhelper    # this will "override" the ssh command, but may break other stuff!
alias sshc=sshhelper

Ora sshc Productionaprirà una nuova finestra di sessione usando il profilo "Rosso", sshc Testaprirà una nuova finestra di sessione usando il profilo "Verde" e altri host useranno il profilo "Predefinito".


2

Raccogliere tutte le informazioni dai siti stack *** qui è la soluzione più semplice che ho trovato per il compagno di zecca + mate terminal (come per lo gnomo).

  1. In mate terminal definire il secondo profilo, con sfondo diverso.
  2. Controlla se i tasti predefiniti funzionano Alt + PageDown / Alt + PageUp dovrebbero cambiare il profilo e anche lo sfondo.
  3. sudo apt get install xdotool

Ora puoi modificare / etc / ssh / ssh_config, in modo che possa cambiare il profilo dopo aver stabilito ogni sessione ssh:

Host *
  PermitLocalCommand yes
  LocalCommand xdotool key Alt+Page_Down

Ora, dopo che ogni connessione ssh è stata stabilita nel terminale, il profilo verrà modificato e non verrà mai più inserito un aggiornamento sql indesiderato nel database di produzione :)

Tuttavia, non esiste una soluzione semplice per tornare al profilo predefinito dopo la chiusura della connessione ssh. Ma questo mi sembra abbastanza, e non ho scavato per ulteriori informazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.