Я могу запустить команду в новом терминале 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. Как я могу это сделать?
У 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}')
Объяснение:
gnome-terminal -x sh -c "ls; bash" & disown запустите gnome-terminal в фоновом режиме и выполните команду (в этом случае ls) sleep 3 дождитесь появления окна gnome-терминала (вы можете поэкспериментировать с этим значением, 3 секунды может быть короткий или длинный, зависит от вашего оборудования) wmctrl -i -Y -i -> интерпретировать аргументы окна как числовое значение, -Y -> значить (сворачивать) окно $(wmctrl -l | awk -F' ' 'END{print $1}') или $(wmctrl -l | tail -1 | cut -d' ' -f1) получать идентификатор окна последнего открытого window (в этом случае должен быть идентификатор окна gnome-terminal)Чтобы упростить его, вы можете добавить функцию в свой файл $HOME/.bashrc:
, вы можете использовать его следующим образом:
gterm-min "ls -la"
Как насчет минимизации вашего окна после его создания?
$ (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)
Я использую Mate вместо 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, чтобы найти 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
Пример использования :
(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, поскольку последнее созданное окно должно быть последним.
Вот как я запускаю сервер «Language Tool» без сна, без цикла:
#!/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}")