Gnome (Ubuntu): come portare in primo piano una finestra del programma usando una riga di comando dal terminale?


14

Ho un certo ambiente di lavoro con dozzine di Windows aperti. Come posso portare in primo piano una finestra con un nome / titolo noto a livello di codice o usando la riga di comando?

Risposte:


12

Usavo wmctrl -a <name>, che funziona bene, ma recentemente passato a xdotool, ad esempio:

xdotool search --name <name-or-regex-for-name> windowraise

Ha anche molte altre funzionalità.

Installare:

sudo apt-get install xdotool


5
xdotool windowraiseporta la finestra in primo piano ma non mette a fuoco la finestra o passa al desktop con la finestra. invece, windowactivatefarà tutti e tre.
jozxyqk,

6

Bene, dopo sudo apt-get install wmctrl, puoi giocare con questo script bash:

#! /bin/bash

WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird

# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:

if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0

Che ho trovato qui


4
Non sono necessarie le parentesi quadre e le levette:if ! wmctrl -l | grep -q "$WINTITLE"
In pausa fino a nuovo avviso.

wmctrlha -iun'opzione, che supporta l'utilizzo della finestra con il suo identificatore esadecimale. E così puoi farlo wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai- il che farebbe qualcosa di simile
vlad-ardelean l'

0

Quando si utilizza xdotool, sembra difficile portare in primo piano tutte le finestre per una determinata applicazione o classe utilizzando un solo comando. Finisco per avere risultati migliori avvolgendolo in un forciclo a livello di shell. Usando Bash:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

Alcune osservazioni:

  • Per impostazione predefinita, xdotool searchcercherà il modello (qui Firefox) in nome finestra, classe e nome classe. Se si vuole restringere la spazio di ricerca, utilizzare le pertinenti --class, --nameo --classnameopzioni.
  • L' --desktop 0opzione limita la ricerca al primo desktop. Questa sembra essere una soluzione alternativa per evitare quanto XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)menzionato in alcuni commenti.
  • Al momento della stesura di questo documento, il xdotool progetto è bloccato dal 2015. Rimane ancora il mio strumento preferito. Per motivi personali, Jordan Sissel (l'autore originale) non è così attivo come in passato, quindi non esitate a contribuire al progetto.


Questa è una copia di una risposta che ho pubblicato su AskUbuntu , ma penso che sia indipendente dal sapore Linux, quindi potrebbe essere utile anche qui.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.