Основываясь на отзывах в комментариях, попробовал эту команду: В терминальном окне это работает:
gnome-terminal -x bash -c "sudo ./serial"; xdotool getactivewindow windowminimize
Однако при запуске команды в программе запуска программа xdotool, похоже, игнорируется.
История фона:
Я пытаюсь определить способ минимизации окна терминала с помощью команды gnome-terminal. Мне нужен мой Ubuntu 14.04LTS remote pc для запуска нескольких сценариев и программы C при запуске. Этот удаленный компьютер предназначен для просмотра клиентами, поэтому монитор должен быть чистым. Я не видел возможности для минимизации: http://manpages.ubuntu.com/manpages/wily/man1/gnome-terminal.1.html. Лучшее, что я мог сделать, это сделать окна терминала маленькими, что приемлемо, если я не найду лучшего способа. Это моя команда, введенная в программу «Запуск приложений» Ubuntu:
gnome-terminal --geometry=60x2 --command "sudo ./My_C_Program"
Мои навыки программирования / Linux являются посредственными, но растут. Я ищу лучший способ сделать это.
Основываясь на комментарии / обратной связи, попробовал это:
gnome-terminal -x bash -c "sudo ./serial_ver2_machine3_free_air_3_95"; wmctrl -r :ACTIVE: -b add,shaded
Это работает так, как я хочу при выполнении в терминале окно!! Окно терминала затенено, но программа все еще запущена, и она появляется снова, когда я дважды щелкаю по значку терминала Ubuntu.
Однако при выполнении в «Startup Applications» окно терминала не «заштриховано». Использование «add, hidden» не работает. Использование «добавить, ниже» работает, за исключением того, что я использую фоновое изображение рабочего стола как часть просмотра клиента.
Другим решением является создание сеанса tmux при запуске системы и выполнение некоторых команд внутри. Тогда вы сможете подключиться к этой сессии независимо от того, внутри ssh или gnome-terminal. tmux имеет более расширенное использование, здесь я попытаюсь охватить самый базовый уровень.
1. Установите tmux: sudo apt update && sudo apt install tmux
1.. Создайте файл исполняемого файла исполняемого файла. Предположим, что он помещен в каталог пользователя $HOME и называется run-my-tmux-session:
touch "$HOME/run-my-tmux-session"
chmod +x "$HOME/run-my-tmux-session"
Скрипт должен выглядеть следующим образом:
#!/bin/bash
SESS="my-tmux-session" # Set the session name
if (tmux has-session -t "$SESS" 2> /dev/null); then # If session with name $SESS doesn't
echo "Session '$SESS' exists." # exists
else # create it and send few commands
tmux new-session -d -s $SESS
tmux send-keys -t $SESS "echo 'Now:'; while true; do printf '%(%c)T\r'; done" ENTER
fi
exit 0
3. Теперь, если вы выполнили ~/run-my-tmux-session, сценарий создаст сессию tmux, называемую my-tmux-session и выполнит несколько команд внутри нее. Вот несколько советов:
Чтобы перечислить все сеансы: tmux ls Чтобы убить сеанс или убить все сеансы:tmux kill-session -t <session-name>
tmux kill-session #
Привязать к существующему сеансу: tmux a -t <session-name>
tmux attach -t <session-name>
Отключение (отключение) сеанса выполните следующую команду из сеанса: tmux detach Чтобы отправить команду на сеанс без добавления: tmux send -t <sess-name> "<commands>" ENTER
tmux send-keys -t <sess-name> "<commands>" ENTER
3.. Запустить сеанс tmux из приложений запуска. Откройте приложения для запуска и создайте новую запись. Его команда должна быть (замените <user> на фактическое имя пользователя):
/home/<user>/run-my-tmux-session
4.B. Запустите сеанс tmux с crontab при перезагрузке. Отредактируйте файл crontab пользователя и добавьте следующие строки внизу Запуск приложений :
SHELL=/bin/bash
@reboot "$HOME/run-my-tmux-session"
4.B. Запустите tmux сеанса из /etc/rc.local. Это, наверное, лучшее решение! Отредактируйте файл /etc/rc.local и добавьте Startup Applications перед последней строкой в файле, то есть exit 0 (замените <user> на фактическое имя пользователя):
su -l <user> -c "/home/<user>/run-my-tmux-session"
sudo -iu <user> "/home/<user>/run-my-tmux-session"
Ссылки:
Чтобы перечислить все сеансы: tmux lsЧтобы перечислить все сеансы: tmux ls
Чтобы убить сеанс или убить все сеансы:tmux kill-session -t <session-name>
tmux kill-session #
ArchWiki Tmux | Руководство по настройке вашего Tmux.conf | Непосредственное введение в Tmux
Чтобы перечислить все сеансы: tmux ls
Чтобы убить сеанс или убить все сеансы: [!d12 ]
Ниже приведено обходное решение, использующее xdotool: Создайте дополнительный сценарий запуска, который будет выполнен в gnome-terminal, который открывается Startup Applications. Скрипт выполнит некоторые команды и минимизирует активное окно. Пожалуйста, внимательно прочитайте комментарии внутри тела сценария.
1. Установите xdotool: sudo apt update && sudo apt install xdotool
1.. Создайте файл исполняемого файла исполняемого файла. Предположим, что он помещен в каталог пользователя $HOME и называется run-and-minimize:
touch "$HOME/run-and-minimize"
chmod +x "$HOME/run-and-minimize"
Скрипт должен выглядеть следующим образом:
#!/bin/bash
# Put your commands here, for example:
echo 'The current time is:'
sleep 2 # Adjust this value. The mouse should not be moved while this period otherwise some other window could become active!
xdotool windowminimize $(xdotool getactivewindow) # Minimize the window
# Or put your commands here, for example:
while true; do printf '%(%c)T\r'; done & # Some commands must be pushed into the background (`&`) to be successfully interrupted with keep open the terminal window.
exec bash # Keep the window open after the above commands are finished or interrupted
3. Откройте приложения для запуска и создайте новую запись. Его команда должна быть:
gnome-terminal -x sh -c 'exec $HOME/run-and-minimize'
Я также успешно протестировал:
gnome-terminal -x bash -c 'exec $HOME/run-and-minimize'
Ссылки:
Что такое чтобы минимизировать терминал gnome?Ниже приведено обходное решение, использующее xdotool: Создайте дополнительный сценарий запуска, который будет выполнен в gnome-terminal, который открывается Startup Applications. Скрипт выполнит некоторые команды и минимизирует активное окно. Пожалуйста, внимательно прочитайте комментарии внутри тела сценария.
1. Установите xdotool: sudo apt update && sudo apt install xdotool
1.. Создайте файл исполняемого файла исполняемого файла. Предположим, что он помещен в каталог пользователя $HOME и называется run-and-minimize:
touch "$HOME/run-and-minimize"
chmod +x "$HOME/run-and-minimize"
Скрипт должен выглядеть следующим образом:
#!/bin/bash
# Put your commands here, for example:
echo 'The current time is:'
sleep 2 # Adjust this value. The mouse should not be moved while this period otherwise some other window could become active!
xdotool windowminimize $(xdotool getactivewindow) # Minimize the window
# Or put your commands here, for example:
while true; do printf '%(%c)T\r'; done & # Some commands must be pushed into the background (`&`) to be successfully interrupted with keep open the terminal window.
exec bash # Keep the window open after the above commands are finished or interrupted
3. Откройте приложения для запуска и создайте новую запись. Его команда должна быть:
gnome-terminal -x sh -c 'exec $HOME/run-and-minimize'
Я также успешно протестировал:
gnome-terminal -x bash -c 'exec $HOME/run-and-minimize'
Ссылки:
Что такое чтобы минимизировать терминал gnome?Ниже приведено обходное решение, использующее xdotool: Создайте дополнительный сценарий запуска, который будет выполнен в gnome-terminal, который открывается Startup Applications. Скрипт выполнит некоторые команды и минимизирует активное окно. Пожалуйста, внимательно прочитайте комментарии внутри тела сценария.
1. Установите xdotool: sudo apt update && sudo apt install xdotool
1.. Создайте файл исполняемого файла исполняемого файла. Предположим, что он помещен в каталог пользователя $HOME и называется run-and-minimize:
touch "$HOME/run-and-minimize"
chmod +x "$HOME/run-and-minimize"
Скрипт должен выглядеть следующим образом:
#!/bin/bash
# Put your commands here, for example:
echo 'The current time is:'
sleep 2 # Adjust this value. The mouse should not be moved while this period otherwise some other window could become active!
xdotool windowminimize $(xdotool getactivewindow) # Minimize the window
# Or put your commands here, for example:
while true; do printf '%(%c)T\r'; done & # Some commands must be pushed into the background (`&`) to be successfully interrupted with keep open the terminal window.
exec bash # Keep the window open after the above commands are finished or interrupted
3. Откройте приложения для запуска и создайте новую запись. Его команда должна быть:
gnome-terminal -x sh -c 'exec $HOME/run-and-minimize'
Я также успешно протестировал:
gnome-terminal -x bash -c 'exec $HOME/run-and-minimize'
Ссылки:
Что такое чтобы минимизировать терминал gnome?