web-dev-qa-db-ja.com

最小化されたGnomeターミナルでスクリプトを開始するにはどうすればよいですか?

次のように、新しいGnomeターミナルでコマンドを開始できます。

Nohup gnome-terminal --window-with-profile=Background --command ls >/dev/null 2>&1&

https://askubuntu.com/a/46630/7146 および https://stackoverflow.com/a/10708326/236081 に基づく)

ただし、ランチャーで新しいターミナルウィンドウを最小化して起動する必要があります。どうやってやるの?

4
david.libremone

最小化 および maximising ウィンドウに対して与えられたいくつかの回答に基づいてソリューションを作成しました。ただし、この場合は、このGnomeターミナル(他のGnomeターミナルではない)のみをターゲットにしたかったので、--titleを使用して名前を付けました。

Nohup gnome-terminal --title="Tiny Terminal" --window-with-profile=Background --command "$argv" >/dev/null 2>&1&

「Tiny Terminal」という名前のウィンドウ用に悪魔のパイルールを作成しました:

(if
(is (window_name) "Tiny Terminal")
(begin (minimize) )
)

(必要に応じて、gdevilspieを使用してGUIでこのルールを作成できます。)

これにより、元の望ましい効果が得られます。しかし、試してみると、端末を最大化された状態に復元することも必要であることに気付きました 別の回答で説明されています

1
david.libremone

Gnome-Terminalには最小化を開始するオプションがありません。

これを行うための回避策は次のとおりです。

最初にwmctrlが必要ですが、このバージョンにはウィンドウを最小化するオプションがないため、リポジトリのバージョンではありません。 (wmctrlを既にインストールしている場合は、削除する必要があります)。

Github https://github.com/geekless/wmctrl/archive/master.Zip からバージョンをダウンロードしてインストールします(INSTALLファイルに従ってください-> ./configureその後Sudo make install )。 error: X11/Xmu/WinUtil.hを取得した場合は、Sudo apt-get install libxmu-devをインストールしてから再試行する必要があります。

次に、たとえばコマンドラインからこれを実行できます。

gnome-terminal -x sh -c "ls; bash" & disown && sleep 3 &&  wmctrl -i -Y  $(wmctrl -l | awk -F' ' 'END{print $1}')

説明:

  1. gnome-terminal -x sh -c "ls; bash" & disownバックグラウンドでgnome-terminalを実行し、コマンドを実行します(この場合はls
  2. sleep 3 gnome-terminalウィンドウが表示されるまで待機します(この値を試してみてください。ハードウェアによっては、3秒は短くても長くてもかまいません)
  3. wmctrl -i -Y -i->ウィンドウ引数を数値として解釈し、-Y->ウィンドウをアイコン化(最小化)します
  4. $(wmctrl -l | awk -F' ' 'END{print $1}')または$(wmctrl -l | tail -1 | cut -d' ' -f1)最後に開いたウィンドウのウィンドウIDを取得します(この場合はgnome-terminalのウィンドウIDでなければなりません)

簡単にするために、$HOME/.bashrcファイルに関数を追加できます:

gterm-min() {
    gnome-terminal -x sh -c "$1; bash" & disown  
    sleep 3   
    wmctrl -i -Y  $(wmctrl -l | awk -F' ' 'END{print $1}')
}

次のように使用できます:

gterm-min "ls -la"
3
TuKsn

ウィンドウを作成した後、ウィンドウを最小化しますか?

$ (mate-terminal --window-with-profile=Background --title=xxx  --command top >/dev/null 2>&1 &); sleep 0.1; xdotool windowminimize $(xdotool search --name xxx|head -1)

私はGnomeの代わりにMateを使用しますが、mate-terminalgnome-terminalに置き換えても同じように機能するはずです。

$ (gnome-terminal --window-with-profile=Background --title=xxx  --command top >/dev/null 2>&1&); sleep 0.1; xdotool windowminimize $(xdotool search --name xxx|head -1)

まず、mate-terminalで新しいウィンドウを作成し、--title=xxxオプションを使用して名前を割り当てます。その後、xdotool search --name xxx|head -1を使用してこのウィンドウのIDを見つけ、xdotool windowminimizeに渡します。ウィンドウの作成には少し時間が必要なため、sleep 0.1遅延が必要です。

ウィンドウタイトルを使用する代わりに、他の検索オプションを使用することもできます。

$ xdotool search Usage: xdotool search [options] regexp_pattern
--class         check regexp_pattern agains the window class
--classname     check regexp_pattern agains the window classname
--maxdepth N    set search depth to N. Default is infinite.
                -1 also means infinite.
--onlyvisible   matches only windows currently visible
--pid PID       only show windows belonging to specific process
                Not supported by all X11 applications
--screen N      only search a specific screen. Default is all screens
--desktop N     only search a specific desktop number
--limit N       break search after N results
--name          check regexp_pattern agains the window name
--title         DEPRECATED. Same as --name.
--all           Require all conditions match a window. Default is --any
--any           Windows matching any condition will be reported
--sync          Wait until a search result is found.
-h, --help      show this help output

If none of --name, --classname, or --class are specified, the  defaults are: --name --classname --class

--class 'mate-terminal'オプションを使用した例:

(mate-terminal --command 'top' &) && sleep 0.1 && xdotool windowminimize $(xdotool search --class 'mate-terminal' |sort|tail -1)

これはgnomeで機能するはずです:

(gnome-terminal --command 'top' &) && sleep 0.1 && xdotool windowminimize $(xdotool search --class 'gnome-terminal' |sort|tail -1)

新しく作成されたウィンドウは最後に表示されるはずなので、xdotool searchの出力をソートします。

3
Nykakin

スリープせず、ループなしで「言語ツール」サーバーを起動する方法は次のとおりです。

#!/bin/bash

LT_WIN_NAME='The Language Tool'

xterm -geometry 126x12+0+0 -T "${LT_WIN_NAME}" -e\
 Java -cp languagetool-server.jar org.languagetool.server.HTTPServer --allow-Origin "*" &
xdotool windowminimize $(xdotool search --sync --name "${LT_WIN_NAME}")
0
Aubin