Ho una combinazione di tasti per ToggleShowDesktop
. Quando premo Menu , tutte le finestre vengono ridotte a icona e vedo il mio sfondo del desktop (come previsto):
<keybind key="Menu">
<action name="ToggleShowDesktop"/>
</keybind>
Ora il problema è che non voglio vedere il mio sfondo. Sto usando terminator
come sfondo, ovvero quando avvio terminator
, viene posizionato sul livello sottostante:
<application name="terminator">
<focus>yes</focus>
<layer>below</layer>
<desktop>1</desktop>
<position>
<y>0</y>
<x>0</x>
</position>
<skip_taskbar>yes</skip_taskbar>
<maximized>true</maximized>
</application>
È possibile configurare ToggleShowDesktop
in modo da lasciare inalterato lo strato "sotto"? cioè voglio che solo le normali finestre siano ridotte a icona, ma non terminator
. In altre parole, voglio che il terminatore si comporti come farebbe lo sfondo normale, non influenzato da ToggleShowDesktop
.
Sto usando Debian Wheezy
con LXDE
.
(usando il metodo suggerito da @Suchipi):
Ho omesso alcuni dettagli dalla mia domanda originale e ora questi dettagli sembrano essere rilevanti dopo tutto:
La mia configurazione ha 2 monitor e 4 desktop virtuali. Quindi ho "8 sfondi" da riempire con terminator
. Da quello che ho letto in precedenza, presumevo che queste 8 finestre dovessero essere distinguibili, quindi ho creato 8 simboli per terminator
, cioè:
/usr/bin/terminator-wallpaper-1a -> terminator
/usr/bin/terminator-wallpaper-1b -> terminator
/usr/bin/terminator-wallpaper-2a -> terminator
...
In effetti ha creato 8 diverse applicazioni (con nomi diversi).
Allo stesso modo, in .config/openbox/lxde-rc.xml
Non ho 1, ma 8 definizioni:
<application name="terminator-wallpaper-1a">
<desktop>1</desktop>
<position>
<monitor>1</monitor>
</position>
...
</application>
<application name="terminator-wallpaper-1b">
<desktop>1</desktop>
<position>
<monitor>2</monitor>
</position>
...
</application>
<application name="terminator-wallpaper-2a">
<desktop>2</desktop>
<position>
<monitor>1</monitor>
</position>
...
</application>
E infine, in /.config/autostart
Ho 8 *.desktop
file, da avviare automaticamente dopo il login:
/.config/autostar/terminator-wallpaper-1a.desktop
/.config/autostar/terminator-wallpaper-1b.desktop
/.config/autostar/terminator-wallpaper-2a.desktop
Questo mi sembra troppo complicato e poco elegante, ma non vedevo un modo migliore per farlo.
Ora, quando seguo le istruzioni di @Suchipi, accade quanto segue:
1) la parte con devilspie
funziona bene. Si scopre che ho bisogno solo di una definizione che copra tutte le mie 8 finestre (sostituendo matches
per is
):
$ cat .devilspie/terminator.ds
(if
(matches (application_name) "terminator-wallpaper")
(begin
(wintype "desktop")
)
)
E posso vedere con obxprop
che funzioni come previsto.
$ obxprop | egrep '(_OB_APP|_NET_WM_WINDOW_TYPE)'
_OB_APP_TYPE(UTF8_STRING) = "normal"
_OB_APP_TITLE(UTF8_STRING) = "None"
_OB_APP_CLASS(UTF8_STRING) = "Terminator-wallpaper-1"
_OB_APP_NAME(UTF8_STRING) = "terminator-wallpaper-1"
_OB_APP_ROLE(UTF8_STRING) =
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP
2) ora la parte con xdotool
è più complicato:
prima di tutto, usando 100%
per la risoluzione non funziona, cioè la finestra scompare (non la vedo). Quando si utilizza statico:
xdotool search --class "Terminator-wallpaper-1a" windowunmap --sync windowmap windowsize %1 1920 1056
questo funziona per desktop 1 monitor 1. Ma quando lo eseguo per altri desktop, non ha alcun effetto, ad es.:
xdotool search --class "Terminator-wallpaper-2a" windowunmap --sync windowmap windowsize %1 1920 1056
In realtà, funziona anche per altri desktop, ma solo se eseguo xdotool
comando sul desktop specifico, che voglio influenzare. cioè devo passare al desktop 2
ed esegui xdotool search --class "Terminator-wallpaper-2a"
e poi funziona.
Inoltre, mi chiedevo se il windowsize %1
gioca un ruolo qui.
AGGIORNAMENTO 07-12-2019:
quindi, ora sto provando a configurare lo stesso sistema su Debian Buster (Openbox 3.6) e sto riscontrando un nuovo problema. Sospetto che alcune proprietà siano cambiate nella nuova versione di openbox.
Tutto sembra come prima, ovvero:
terminator-wallpaper-1a --profile wallpaper -b &
terminator-wallpaper-1b --profile wallpaper -b &
xdotool search --class 'Terminator-wallpaper-1a' windowunmap --sync windowmap windowsize %1 1920 1180
xdotool search --class 'Terminator-wallpaper-1b' windowunmap --sync windowmap windowsize %1 1920 1180
Ricevo due terminali come sfondo. Ma il problema è che solo uno di questi terminali è effettivamente utilizzabile. L'altro è "sfocato" e anche quando ci clicco sopra con il mouse, non riesco a metterlo a fuoco. Cioè, posso vedere il terminale, ma non riesco a digitarlo.
Correlati:configurare suffisso per accettare la posta da due WAN?Questo problema non esisteva né esisteva prima, nella versione precedente di Openbox
Come posso risolvere questo problema?
Risposta accettata:
Openbox darà la funzionalità che stai cercando alle finestre il cui _OB_APP_TYPE
la proprietà è impostata su "desktop" (puoi usare obxprop
per controllare le proprietà di una finestra).
Quindi dobbiamo impostare il _OB_APP_TYPE
per la finestra del terminatore su "desktop" in modo che ciò avvenga.
Leggere il codice sorgente di openbox, in client.c
Ho potuto vedere quel _OB_APP_TYPE
viene ereditato da _NET_WM_WINDOW_TYPE
. Quindi ho cercato un'applicazione che potesse cambiare _NET_WM_WINDOW_TYPE
. L'applicazione che ho trovato si chiama devilspie
.
Innanzitutto, installalo:
sudo apt-get install devilspie
Successivamente, creeremo la cartella per devilspie
file di configurazione:
mkdir ~/.devilspie
Ora aggiungeremo un file di configurazione che dice a devilspie
per cercare applicazioni denominate terminator
e imposta il tipo di finestra su desktop
. Inserisci quanto segue in ~/.devilspie/terminator.ds
:
(if
(is (application_name) "terminator")
(begin
(wintype "desktop")
)
)
Ora, se esegui devilspie
(o devilspie -a
per influenzare le finestre esistenti anziché solo quelle appena create) noterai se usi obxprop
sul terminatore quel _NET_WM_WINDOW_TYPE
è cambiato, ma _OB_APP_TYPE
non ha ancora. Usiamo xdotool
per annullare la mappatura e rimappare la finestra (nella terminologia X11 questo significa che smetteremo di disegnare e inizieremo a disegnare la finestra), il che dovrebbe forzare openbox a notare il valore.
Installa xdotool:
sudo apt-get install xdotool
Quindi eseguiamo il seguente script per trovare il terminator
finestra, annulla la mappatura, attendi fino a quando non è stata annullata la mappatura, quindi rimappala. Ridimensioniamo anche la finestra perché quando è stata non mappata e rimappata ha perso la sua massimizzazione:
xdotool search --class "terminator" windowunmap --sync windowmap windowsize %1 1024 768
Sostituisci 1024 768
con la tua risoluzione Tieni inoltre presente che le versioni più recenti di xdotool
rispetto a quelli trovati nel supporto per repository apt di Debian usando 100% 100%
invece di una risoluzione statica. Puoi trovare .deb
pacchetti per le versioni più recenti di xdotool
alla pagina googlecode di xdotool.
La finestra del terminatore diventerà immediatamente non decorata e se ora usi obxprop
, vedrai che entrambi i valori sono stati impostati correttamente. Se ora premi il tasto, hai associato ToggleShowDesktop
per alcune volte, la finestra del terminatore rimarrà sempre attiva.
Per renderlo persistente, ti consigliamo di eseguire questi comandi all'accesso. La pagina wiki di LXDE per LXSession mostra diversi modi per farlo (globale, per utente, per profilo, ecc.). Supponendo che tu voglia queste impostazioni solo per il tuo utente e sotto il profilo LXDE (l'impostazione predefinita), ti consigliamo di modificare ~/.config/lxsession/LXDE/autostart
e aggiungi i comandi che abbiamo eseguito, tenendo presente che il comando xdotool deve essere eseguito dopo il rendering della finestra di terminator, quindi fai qualcosa come (sleep 1s & xdotool ...)
. Puoi anche impostare questi comandi come combinazioni di tasti in openbox, se lo desideri.