Как я могу запустить скрипт в свернутом терминале 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 )

Однако я хочу, чтобы окно нового терминала было свернуто в Launcher. Как я могу это сделать?

4
задан 23 May 2017 в 15:39

4 ответа

Я основывал свое решение на некоторых ответах, данных для уменьшение и увеличение окна. В этом случае, тем не менее, я хотел быть нацеленным просто на этот Терминал Gnome (но не другие Терминалы Gnome), таким образом, я дал ему имя с помощью --title:

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

И созданный правило Круга дьявола для окон, названных "Крошечный Терминал":

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

(Если Вы предпочитаете, можно использовать gdevilspie для создания этого правила в GUI.)

Это достигает исходного желаемого влияния. Однако, когда я испытал его, я понял, что также хотел, чтобы терминал восстановил к максимизируемому состоянию, , который обращен в отдельном ответе .

1
ответ дан 23 May 2017 в 15:39

Терминал Gnome не имеет никакой опции запуститься минимизированный.

следующее является больше обходным решением, чтобы сделать это:

Первый wmctrl необходим, но не версия из репозиториев, потому что эта версия не имеет опции tho, минимизирует окна . (Если Вы уже установили wmctrl, необходимо удалить его).

Загрузка версия от github https://github.com/geekless/wmctrl/archive/master.zip и установки это (следуют за файлом УСТАНОВКИ-> ./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 выполненный терминал гнома в фоне и выполняется, команда (в этом случае ls)
  2. sleep 3 ожидают, пока окно терминала гнома не появляется (можно экспериментировать с этим значением, 3 секунды могли быть должными к короткому или к длинному, зависят от аппаратных средств)
  3. wmctrl -i -Y-i-> аргументы окна Interpret, поскольку числовое значение,-Y-> Представляют в виде значка (минимизируют) окно
  4. $(wmctrl -l | awk -F' ' 'END{print $1}') или $(wmctrl -l | tail -1 | cut -d' ' -f1), добираются, идентификатор окна последнего открытого окна (должен быть идентификатор окна терминала гнома в этом случае)
<час>

Для упрощения его, можно добавить функцию к Вашему $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
ответ дан 23 May 2017 в 15:39

Что относительно того, чтобы минимизировать Ваше окно после создания его?

$ (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-terminal с gnome-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 для нахождения идентификатора этого окна и я передаю его 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-terminal --command 'top' &) && sleep 0.1 && xdotool windowminimize $(xdotool search --class 'gnome-terminal' |sort|tail -1)

Я сортирую вывод xdotool search так как недавно созданное окно должно быть последним перечисленным.

3
ответ дан 23 May 2017 в 15:39

Вот то, как я запускаю "сервер" Инструмента Языка, безо сна, без цикла:

#!/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
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: