ホスト名に基づいて端末のバックグラウンドを変更できますか?


17

ホスト名に基づいて端末の背景色を変更したいのですが。この理由は主に、自分がどのサーバーにいるのかを思い出させるための特別な方法があるためです。

ローカルマシンにいる場合は標準のau子の背景を使用し、sshを本番Webサーバーまたは指定可能な他のホストに変更すると赤に変わりますか?


1つのアイデアは、端末設定を処理する環境変数への変更をスクリプト化します。通常、sshする場所ごとにスクリプトを作成し、そのスクリプトの設定への変更を含めます。ここに役立つガイドがあります。cyberciti.biz / faq / -この方法では、接続するだけではないスクリプトを実行できますただし、その特定のセッション用に端末をカスタマイズします。
MaQleod

1
ubuntuサイトにも同じ質問があります:askubuntu.com/questions/13705/…気にしないでください。私はあなたを責めません。最初はそれも見つかりませんでした:)
Stefano

回答:


9

ssh / configのlocalcommandオプションを使用して、エイリアスが使用されるたびにコマンドを実行できます。私が使う

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-terminalSSHを使用するホストごとに新しいプロファイルを作成します。定期的に接続するホストが数台しかない場合は、これが最も簡単な場合があります。各プロファイルには、異なるタイトル、前景色、背景色、カスタムコマンド、その他の設定を定義できます。その後、を使用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

その他

あなたは創造的になり、他のことを試すことができます。

このスーパーユーザーの回答では、基本的に、「script-fu」アクロバットを少しgnome-terminal使用して、新しいウィンドウを開くために使用される一時プロファイルを作成します。それはあなたの使用のために修正されるかもしれません。

このStackOverflowのQ&Aと「script-fu」アクロバットを使用gnome-terminalして、リモートホストにSSHで接続するたびにタイトルを動的に変更することができます。背景/前景の色の変化ほど目立ちませんが、Terminal常に標準のタイトルよりも優れています。


6

sshセッションごとに新しいgnome-terminalウィンドウを使用する場合、これはGnomeで機能します。

  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開きます新しい「リモート」プロファイルを持つgnome-terminalのセッションを。これにより、ローカルプロファイルとリモートプロファイルが区別されます。

複数のプロファイル/ホストに対応するには、複数のプロファイルを作成し、.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

ここでstack ***サイトからすべての情報を収集することは、ミントメイト+メイト端末(gnomeと同じ)で見つけた最も簡単な解決策です。

  1. mateターミナルで、背景が異なる2番目のプロファイルを定義します。
  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接続が閉じられた後、デフォルトのプロファイルに戻す簡単な解決策はありません。しかし、これは私には十分に見えます、そして、私は詳細について掘りませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.