Xdotool не минимизирует окно терминала при использовании в загрузочном приложении при загрузке pc?

Основываясь на отзывах в комментариях, попробовал эту команду: В терминальном окне это работает:

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» не работает. Использование «добавить, ниже» работает, за исключением того, что я использую фоновое изображение рабочего стола как часть просмотра клиента.

2
задан 6 October 2017 в 21:35

4 ответа

Другим решением является создание сеанса 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 ]

1
ответ дан 22 May 2018 в 17:51
  • 1
    Я сделал сценарий, как вы описали, и использовал опцию 4.A, и она запустила мою программу c и работала в фоновом режиме через tmux. tmux стоит изучать и использовать. Решено! – Quickseal 9 October 2017 в 19:51

Ниже приведено обходное решение, использующее 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?
1
ответ дан 24 July 2018 в 18:26

Ниже приведено обходное решение, использующее 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?
0
ответ дан 22 May 2018 в 17:51
  • 1
    Эта команда, введенная в окне терминала, работает: gnome-terminal -x bash -c "sudo ./serial" ;; xdotool getactivewindow windowminimize Однако при запуске команды в программе запуска программа xdotool, похоже, игнорируется. Пакет загрузок с окнами терминала на экране. – Quickseal 6 October 2017 в 18:07
  • 2
    Привет, @Quickseal, я прошу только от любопытства. Вы пробовали это решение? Интересно, в каких случаях это не сработает. – pa4080 9 October 2017 в 20:31
  • 3
    Привет, @ pa4080. Я пробовал ваши шаги, но изо всех сил пытался заставить его работать, поэтому решил попробовать вариант tmux. Возможно, моя ошибка заключается в том, что весь синтаксис корректен в сценарии bash, поэтому для других, глядя на это, это может сработать для них. – Quickseal 10 October 2017 в 22:01
  • 4
    @Quickseal, спасибо за комментарий! – pa4080 10 October 2017 в 22:03

Ниже приведено обходное решение, использующее 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?
1
ответ дан 18 July 2018 в 05:46

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

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