Aqui está um relatório sobre tudo o que encontrei até agora:
Isso está funcionando para mim e ainda não vi nenhum problema:
ACTIVE=$(ck-list-sessions | awk -F' = ' '
function f(){if(A=="TRUE"){P=U"\t"D;gsub("'"'"'","",P);print P}}
$1=="\tunix-user"{U=$2}
$1=="\tx11-display"{D=$2}
$1=="\tactive"{A=$2}
END{f()} /^[^\t]/{f()}
')
USERID=${ACTIVE% *} # tab
USERNAME=$(getent passwd $USERID|cut -f1 -d':')
DISPLAY=${ACTIVE#* } # tab
DISPLAY="$DISPLAY" su $USERNAME -c "zenity --info --title='My Title' --text='My text. Notice the single quotes.'"
Mas eu testei o comando notify-send (mencionado aqui ) e parece ser ainda mais apropriado para minha situação ....
Infelizmente, a desvantagem do KDE é que as notificações se escondem em breve e eu não encontrei uma maneira de desabilitar esse tempo limite (-t 0 não funcionou). Para meu caso de uso atual, tenho a tendência de gostar de uma caixa de diálogo que precisa ser dispensada com um clique no botão. Enfim, aqui estão os detalhes de notificar-enviar:
comando notify-send
O comando notify-send permite que você envie notificações da área de trabalho para o usuário por meio de um daemon de notificação a partir da linha de comando. Isso é útil para informar o usuário do desktop sobre um evento ou exibir alguma forma de informação sem ficar no caminho do usuário. Você precisa instalar o seguinte pacote:
$ sudo apt-get install libnotify-bin
Neste exemplo, envie uma notificação simples na área de trabalho pela linha de comando, digite:
notify-send "rsnapshot done :)"
No entanto, no processo de busca de soluções, também encontrei algo que eu absolutamente amo! Eu removerei todas as chamadas para o Zenity em todos os meus scripts e os substituirei pelo easybashgui.
easybashgui
link
EasyBashGUI is a Bash functions library for *BSD and GNU/Linux that
aims to give simple GUI functions using yad, gtkdialog, kdialog,
zenity, Xdialog, (c)dialog, whiptail or bash builtins depending on
KDE or GNOME running or not, Yad/Gtkdialog/Xdialog installed or not
and, eventually, X server running or not.
Eu também encontrei o Yad, que substituirá o Zenity para mim no futuro. easybashgui pode usar / chamar Zenity, yad, gtkdialog, kdialog, Xdialog, (c) diálogo, whiptail ou bash builtins. Então, estarei descontinuando o Zenity e usando o yad onde for apropriado.
yad
Exibir diálogos gráficos a partir de scripts de shell ou linha de comando - Google Project Hosting
link
O Yad (outra caixa de diálogo) é uma bifurcação do Zenity com muitas melhorias, como botões personalizados, diálogos adicionais, menu pop-up no ícone de notificação e muito mais.
There were two main reasons to make this fork. The first one is to
remove dependencies on deprecated libraries, such as libglade and
gnome-canvas. And the second one - as for me, Zenity looks like an
abandoned project. Its ChangeLog consists of just "bump version to..."
and "translation updated" for the long time, but many interesting
ideas which are ignored by developers/maintainers were in GNOME
Bugzilla.
uma nota
Como don_crissti menciona, as soluções neste unix.stackexchange.com são provavelmente relevantes:
Abra uma janela em um display X remoto (por que "Não é possível abrir o display")?