Intereting Posts
SSH на два адреса, используйте тот, который подключается первым Как использовать специальную переменную оболочки в операторах If then буфер обмена не работает при подключении через rdesktop к xrdp-sesman Означает ли следующая ошибка, что моя система скомпрометирована? Удалить yum repo с помощью yum Сканирование сетевых устройств Есть ли какая-либо команда для включения / выключения расширения php из командной строки? Доступ к NFS-ресурсу без прав root Как правильно построить минимальное ядро ​​FreeBSD? Просмотр сообщений системной консоли в графическом интерфейсе Являются ли эти разные способы использования? Ошибка сборки драйвера устройства: неверный формат модуля insmod Как скопировать три файла одновременно, а не один файл за один раз в сценарии оболочки bash? Как вернуть потерянную сессию в RHEL: Использование NoMachine Прокрутка 360 градусов с помощью Apple Magic Mouse в Linux?

Сохранять диалоги «Zenity» всегда на верхнем плане на переднем плане

Есть ли способ обнаружить, что диалог Zenity потерял фокус?

Я хотел бы оставить диалоговое окно на переднем плане, если пользователь не нажмет ESC .

Я пытаюсь добавить его в этот скрипт :

 #!/bin/bash # requires these packages from ubuntu repository: # wmctrl, zenity, x11-utils # and the script mouse-speed # This procect on git: https://github.com/rubo77/mouse-speed ######## configuration ########## # seconds between micro breaks microbreak_time=$(( 10 * 60 )) # micro break duration in seconds microbreak_duration=15 # seconds between long breaks longbreak_time=$(( 120 * 60 )) # message to display message="Try focussing a far object outside the window with the eye to relax!" longbreak_message="Change your seating or continue work in a standing/sitting position" #postpone label postpone="Postpone" window_title="typebreak" # global zoom of your window manager: ZOOM=2 # height in px of the top system-bar: TOPMARGIN=57 # sum in px of all horizontal borders: HORIZONTALMARGIN=40 # get width of screen and height of screen SCREEN_WIDTH=$(xwininfo -root | awk '$1=="Width:" {print $2}') SCREEN_HEIGHT=$(xwininfo -root | awk '$1=="Height:" {print $2}') # width and height W=$(( $SCREEN_WIDTH / $ZOOM - 2 * $HORIZONTALMARGIN )) H=$(( $SCREEN_HEIGHT / $ZOOM - 2 * $TOPMARGIN )) function slow_down(){ #zenity --warning --text "slow down mouse"; mouse-speed -d 30 } while true; do # short loop every few minutes to look around sleep $microbreak_time ( echo "99" sleep $(( $microbreak_duration - 2 )) echo "# Mouse speed reset to 100%" sleep 2 echo "100" ) | if ( sleep 1 && wmctrl -F -a "$window_title" -b add,maximized_vert,maximized_horz && sleep 3 && wmctrl -F -a "$window_title" -b add,above ) & ( zenity --progress --text "$message" --percentage=0 --auto-close --height=$H --width=$W --pulsate --title="$window_title" --cancel-label="$postpone" ); then #zenity --info --text "Maus normal speed!" mouse-speed -r else slow_down fi done & while true; do # second long loop to change seat position sleep $longbreak_time zenity --warning --text "$longbreak_message" --title="$window_title - long break" done 

 #!/bin/bash # This will wait one second and then steal focus and make the Zenity dialog box always-on-top (aka. 'above'). (sleep 1 && wmctrl -F -a "I am on top" -b add,above) & (zenity --info --title="I am on top" --text="How to help Zenity to get focus and be always on top") 

Источник:

У вас могут возникнуть проблемы, если вы запустите это как задание cron. Окружающая среда Cron не знает вашего X-дисплея, dbus или рабочего стола и не отображает окно zenity или не держит его сверху. Добавление DISPLAY =: 0 перед тем как wmctrl и zenity решает проблему:

(sleep 1 && DISPLAY=:0 wmctrl -F -a "I am on top" -b add,above) & (DISPLAY=:0 zenity --info --title="I am on top" --text="How to help Zenity to get focus and be always on top")