È possibile avere le applicazioni aperte dell'area di lavoro corrente nel programma di avvio ma non quelle di altre aree di lavoro?
È possibile avere le applicazioni aperte dell'area di lavoro corrente nel programma di avvio ma non quelle di altre aree di lavoro?
Risposte:
Bene, le altre risposte sono piuttosto vecchie, quindi penso che valga la pena aggiungere una risposta aggiornata. È possibile farlo ora e non troppo difficile (con Ubuntu 17.10 e con Gnome).
Basta usare dconf-editor :
sudo apt install dconf-editor
Passa a org> gnome> shell> estensioni> dash-to-dock e controlla isolate-workspace
Usando xdotool
's windowunmap
, è possibile nascondere completamente una finestra. La finestra, né la sua applicazione, si trova più nell'icona di avvio e non viene più elencata nell'output di wmctrl
.
Teoricamente, questo potrebbe essere collegato al "motore dello spazio di lavoro", che è stato usato in questa e in questa risposta. Sarebbe stata la soluzione più elegante.
Tuttavia, il processo di nascondere solo le finestre su altre aree di lavoro e di alzare automaticamente quelle nell'area di lavoro corrente è troppo impegnativo per essere utilizzato in uno script in background in corso (per ora), e non è improbabile che anche "prendere un raffreddore". Dato che Windows viene perso definitivamente in caso di errori, ho quindi deciso di non offrire la procedura come processo automatico (in background).
Se questa risposta ti è comunque utile o no dipende dalla situazione e dal motivo per cui desideri nascondere le icone delle applicazioni, in esecuzione su altre aree di lavoro; la decisione è tua.
Uno script, disponibile sotto un tasto di scelta rapida, apparentemente facendo scomparire completamente tutte le finestre nell'area di lavoro corrente (e quindi le applicazioni). Ciò significa che l'icona dell'applicazione nel programma di avvio di Unity non mostra alcuna attività dell'applicazione:
Tre applicazioni in esecuzione: dopo aver premuto il tasto di scelta rapida:
Premendo nuovamente la combinazione di tasti schortcut, riappariranno le finestre e le relative applicazioni.
#!/usr/bin/env python3
import subprocess
import os
import time
datadir = os.environ["HOME"]+"/.config/maptoggle"
if not os.path.exists(datadir):
os.makedirs(datadir)
workspace_data = datadir+"/wspacedata_"
def get_wlist(res):
res = get_res()
try:
wlist = [l.split() for l in subprocess.check_output(["wmctrl", "-lG"]).decode("utf-8").splitlines()]
return [w for w in wlist if all([
0 < int(w[2]) < res[0],
0 < int(w[3]) < res[1],
"_NET_WM_WINDOW_TYPE_NORMAL" in subprocess.check_output(["xprop", "-id", w[0]]).decode("utf-8"),
])]
except subprocess.CalledProcessError:
pass
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current(res):
# get the current viewport
vp_data = subprocess.check_output(
["wmctrl", "-d"]
).decode("utf-8").split()
dt = [int(n) for n in vp_data[3].split("x")]
cols = int(dt[0]/res[0])
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
curr_col = int(curr_vpdata[0]/res[0])+1
curr_row = int(curr_vpdata[1]/res[1])
return str(curr_col+curr_row*cols)
res = get_res()
try:
f = workspace_data+current(res)
wlist = eval(open(f).read().strip())
for w in wlist:
subprocess.Popen(["xdotool", "windowmap", w[0]])
os.remove(f)
except FileNotFoundError:
current_windows = get_wlist(res)
open(f, "wt").write(str(current_windows))
for w in current_windows:
subprocess.Popen(["xdotool", "windowunmap", w[0]])
Lo script ha bisogno di entrambi wmctrl
e xdotool
:
sudo apt-get install wmctrl xdotool
toggle_visibility.py
Prova- esegui lo script: in una finestra terminale, esegui il comando:
python3 /path/to/toggle_visibility.py
Ora apri una nuova finestra del terminale (poiché la prima sembra scomparire dalla faccia della terra) ed esegui di nuovo lo stesso comando. Tutte le finestre dovrebbero riapparire.
NB : assicurati di non avere finestre "preziose" aperte durante il test
Se tutto funziona correttamente, aggiungi il comando a una combinazione di tasti di scelta rapida: scegli: Impostazioni di sistema> "Tastiera"> "Tasti di scelta rapida"> "Tasti di scelta rapida personalizzati". Fai clic su "+" e aggiungi il comando:
python3 /path/to/toggle_visibility.py
Come detto, lo script usa xdotool
's windowunmap
, per nascondere (completamente) le finestre e le applicazioni a cui appartengono. Il copione:
Alla prossima esecuzione, lo script:
alternando così la visibilità di finestre e applicazioni sull'area di lavoro corrente.
ctrl
+ shift
+arrow key
Purtroppo è impossibile.
Unity mostra sempre tutte le applicazioni ovunque e non c'è modo di cambiarle. C'è una segnalazione di bug - https://bugs.launchpad.net/ayatana-design/+bug/683170 Ma sembra che gli sviluppatori non facciano nulla. Probabilmente se contrassegni nella parte superiore della pagina che questo bug ti interessa, ciò aiuterà gli sviluppatori a comprendere l'importanza di tale opzione.