Impostazione per mostrare solo le applicazioni dell'area di lavoro corrente nel programma di avvio?


30

È possibile avere le applicazioni aperte dell'area di lavoro corrente nel programma di avvio ma non quelle di altre aree di lavoro?


Penso che ctrl + (1,2,3,4) sia usato per cambiare area di lavoro. Ma controlla le scorciatoie nelle impostazioni di sistema ...
Alvar,

Tenere premuto il tasto SUPER (tasto Windows) per visualizzare una panoramica di tutte le scorciatoie Unity disponibili. Dai un'occhiata anche a queste domande e risposte .
Glutanimate,

Ho modificato la tua seconda domanda riguardante le scorciatoie dal tuo post perché è un duplicato e ha già ricevuto una risposta. Vedo che questa è la tua prima domanda (Benvenuto in Askubuntu!): È più facile per noi aiutarti se fai una sola domanda per post. Ti preghiamo di tenerlo presente in futuro quando utilizzi AU.
Glutanimate,

Stessa domanda come qui . Tuttavia, a quello manca una risposta.
RPiAwesomeness

Probabilmente non è la risposta che stai cercando, ma la mancanza di personalizzazione dell'unità. Se hai esigenze particolari o desideri un maggiore controllo sul desktop, dovresti considerare di passare a un ambiente desktop più flessibile, come KDE.
Conchylicultor,

Risposte:


30

Per Ubuntu Dock fornito con Ubuntu 17.10 e versioni successive (con GNOME)

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 inserisci qui la descrizione dell'immagine


1
la domanda non ha assolutamente nulla a che fare con l'estensione Dash To Dock Gnome. la domanda riguarda Unity Launcher, che Dash To Dock non è nemmeno compatibile con Unity.
crookedleaf

2
@crookedleaf Ubuntu è passato a GNOME con un dash-to-dock reimpostato di default con 17.10.
Seth,

1
@Seth Ma OP utilizza Unity, non Gnome. Quindi OP ha usato accidentalmente il tag "Unity" oppure utilizza una versione di Ubuntu con Unity.
crookedleaf,

3
@crookedleaf O dobbiamo solo mantenere le domande aggiornate in modo che abbiano anche le ultime risposte :)
Seth

1
Funziona alla grande in 18.04 / w gnome. Grazie! Si noti che l'estensione può anche essere facilmente installata dal sito Web: extensions.gnome.org/extension/307/dash-to-dock
Jeff Ward

8

Come rendere le applicazioni non rintracciabili su (altri) spazi di lavoro

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.

La soluzione; cos'è e come funziona in pratica

  • 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: inserisci qui la descrizione dell'immaginedopo aver premuto il tasto di scelta rapida:inserisci qui la descrizione dell'immagine

  • Premendo nuovamente la combinazione di tasti schortcut, riappariranno le finestre e le relative applicazioni.

  • Poiché la combinazione di tasti nasconde solo le finestre e le applicazioni dall'area di lavoro corrente , è possibile passare successivamente a un'altra area di lavoro senza un segno di ciò che è (nascosto) nell'area di lavoro corrente.
  • Anche lo svelamento viene eseguito (solo) nell'area di lavoro corrente, quindi in breve, il processo di occultamento e svelamento è completamente indipendente per area di lavoro .

Il copione

#!/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]])

Come usare

  1. Lo script ha bisogno di entrambi wmctrle xdotool:

    sudo apt-get install wmctrl xdotool
    
  2. Copia lo script in un file vuoto, salvalo come toggle_visibility.py
  3. 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

  4. 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
    

Spiegazione

Come detto, lo script usa xdotool's windowunmap, per nascondere (completamente) le finestre e le applicazioni a cui appartengono. Il copione:

  • legge qual è l'area di lavoro corrente
  • legge le finestre, che esistono nell'area di lavoro corrente (solo)
  • scrive l'elenco delle finestre in un file, che prende il nome dallo spazio di lavoro corrente
  • nasconde le finestre

Alla prossima esecuzione, lo script:

  • controlla se esiste il file, corrispondente allo spazio di lavoro corrente
  • in tal caso, legge l'elenco delle finestre e rivela le finestre.

alternando così la visibilità di finestre e applicazioni sull'area di lavoro corrente.


Grande. Ora solo se riesco a trovare un modo per eseguire automaticamente lo script quando mi sposto sull'altra area di lavoro in modo che scompaiano magicamente e poi riappaiano quando torno indietro. Forse potrei scrivere uno script Python per sostituire il tasto scorciatoia per ctrl+ shift+arrow key
Gio Yein Tun

1
Il 17.10 questo è ora possibile. Vedi altre risposte
Martin Melka,

6

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.


1
Non commentare la segnalazione di bug, limitati a segnalarlo come un problema nella parte superiore della pagina.
Flimm,

@Flimm ti capita di sapere quale desktop manager ha questa funzionalità?
Cesar,

2
l'unità sembra grande ma la mancanza di personalizzazione è davvero frustrante.
Programster il
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.