Чи можу я змінити фон свого терміналу на основі імені хоста?


17

Я хотів би змінити колір тла терміналу на основі імені хоста. Моє міркування в основному полягає в тому, щоб мати додатковий спосіб нагадати собі, на якому сервері я перебуваю, тому я не роблю щось дурне.

Чи є у мене спосіб використовувати стандартний фон баклажанів, якщо я перебуваю на своїй локальній машині, а потім змінити червоний, якщо я сш на виробничий веб-сервер чи інші хости, які я міг би вказати?


Одна ідея: скрипт зміни до змінної середовища, яка обробляє налаштування терміналу. Складіть сценарій для кожного місця ви зазвичай SSH до і включати в себе зміна параметрів в цьому сценарії, ось керівництво , яке може допомогти: cyberciti.biz/faq / ... - таким чином , ви можете просто запустити скрипт , який не тільки з'єднає для вас, але налаштуйте термінал для конкретного сеансу.
MaQleod

1
На сайті ubuntu є те саме питання: askubuntu.com/questions/13705/… Розум, я не звинувачую вас, я його спочатку не знайшов :)
Стефано

Відповіді:


9

Ви можете використовувати опцію localcommand ssh / config для запуску команди, коли використовується псевдонім. я використовую

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

Це залежить від xtermcontrol і вашого терміна xterm. Імовірно, є й інші додатки для інших термінів.

Єдина проблема такого підходу полягає в тому, що це відбувається, коли ви телефонуєте ssh. Зміна кольору не може нічого скасувати. Я зробив це, обернувши функцію навколо ssh, але і у цього є свої недоліки.

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

7

Здається, що gnome-terminalдля додавання нової вкладки до наявного вікна з командного рядка немає функцій . Але є кілька варіантів для досягнення того, що ви хочете.

За профілями команд

Створіть новий gnome-terminalпрофіль для кожного хоста, в який ви будете приймати SSH. Якщо у вас є лише кілька хостів, до яких ви регулярно підключаєтесь, це може бути найпростішим. Кожен профіль може мати різний заголовок, колір переднього плану, колір тла, спеціальну команду та інші налаштування. Потім можна використовувати File -> Open Tabдля відкриття нової вкладки з обраним профілем.

Профіль повторного використання

Створіть новий gnome-terminalпрофіль, який використовуватиметься для відкриття нового вікна кожного разу, коли ви хочете підключитися до іншого хоста SSH (на основі цієї відповіді AskUbuntu, яку вказав Стефано ). Це було б добре, якщо ви часто підключаєтесь до багатьох різних хостів. Це не дозволить вам розрізняти різні gnome-terminalвікна, де ви підключені до різних хостів виключно за кольорами фону / переднього плану, але у вас буде різний заголовок на вікно.

  1. Створіть новий gnome-terminalпрофіль ( File -> New Profile) на основі Defaultпрофілю та назвіть його "RemoteHost" (зверніть увагу, немає пробілів у "RemoteHost", щоб полегшити команди).
  2. На Title and Commandвкладці змініть:
    1. Initial title: до "Віддаленого хоста"
    2. When terminal commands set their own titles: до Replace initial title
  3. На Colorsвкладці змініть:
    1. Зніміть прапорець Use colors from system theme
    2. Build-in schemes: до Custom
    3. Text color:та Background color:кольори на ваш вибір. Майте на увазі, що деякі команди (як ls) використовують кольори для їх виведення, і ви не хочете вибирати кольори, які ускладнюють читання результатів.
  4. Натисніть на Closeкнопку, щоб зберегти новий профіль.
  5. Тепер ви можете відкрити нове gnome-terminalвікно для кожного віддаленого хоста SSH за допомогою команди gnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehost. -tОпція встановлює gnome-terminalзаголовок вікна і -xопція виконує іншу частину командного рядка в терміналі. Ви навіть можете зробити aliasскорочення загальних натискань клавіш.

Командний рядок

Я знайшов цю запис у блозі із наступним сценарієм, який використовує команди xdotoolта wmctrlкоманди (вони не були встановлені за замовчуванням на Ubuntu, тому вам, можливо, потрібно буде встановити їх спочатку), щоб використовувати комбінацію клавіш gnome-terminal Ctrl+ Shift+, tщоб відкрити нову вкладку в поточному gnome-terminalвікні . Його можна змінити, щоб відкрити нову вкладку із певним профілем та виконати якусь команду для вас.

#!/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

Інший

Ви можете проявити творчість і спробувати деякі інші речі.

Ця відповідь SuperUser в основному використовує трохи акробатів "script-fu" для створення тимчасового gnome-terminalпрофілю, який використовується для відкриття нового вікна. Він може бути змінений для вашого використання.

Ви, ймовірно, можете використовувати ці питання StackOverflow Q&A та інші "скрипт-фу" акробати, щоб динамічно змінювати gnome-terminalназву кожного разу, коли ви SSH віддаленому хосту. Це було б не настільки помітно, як зміни кольору фону / переднього плану, але це було б краще, ніж стандартний Terminalзаголовок весь час.


6

Це буде працювати в Gnome, якщо ви готові використовувати нове вікно-термінал gnome для кожного сеансу ssh.

  1. Створіть новий профіль (з різним кольором фону) під назвою "Віддалений"

  2. Вставте наступне в .bash_aliases, або.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
    

Тепер sshc remote-machineвідкривається новий сеанс гном-терміналу з профілем "Віддалений". це дозволить розмежувати локальний та віддалений профілі.

Щоб розмістити декілька профілів / хостів, створіть кілька профілів і замість цього помістіть щось подібне .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

Тепер sshc Productionвідкриється нове вікно сеансу за допомогою профілю "Червоний", sshc Testвідкриється нове вікно сеансу за допомогою "Зеленого" профілю, а інші хости використовуватимуть профіль "За замовчуванням".


2

Збір усієї інформації з сайтів стека *** тут є найпростішим рішенням, яке я знайшов для mint mate + mate terminal (те саме, що і для gnome).

  1. У мате-терміналі визначають другий профіль з різним фоном.
  2. Перевірте, чи працюють клавіші за замовчуванням. Alt + PageDown / Alt + PageUp має змінювати профіль, а також фон.
  3. sudo apt get install xdotool

Тепер ви можете змінити / etc / ssh / ssh_config, щоб він міг змінити профіль після встановлення кожного сеансу ssh:

Host *
  PermitLocalCommand yes
  LocalCommand xdotool key Alt+Page_Down

Тепер, після встановлення кожного ssh-з'єднання в терміналі, профіль буде змінено, і ви ніколи більше не будете ставити небажане оновлення sql до виробничої бази :)

Однак не існує простого рішення повернутися до профілю за замовчуванням після закриття ssh-з'єднання. Але цього мені здається достатньо, і я не копав більше інформації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.