Vous souhaitez afficher uniquement les applications de l'espace de travail actuel dans le lanceur?

30

Est-il possible d'avoir les applications ouvertes de l'espace de travail actuel dans le lanceur mais pas celles des autres espaces de travail?

user165749
la source
Je pense que ctrl + (1,2,3,4) est utilisé pour changer d'espace de travail. Mais vérifiez les raccourcis dans les paramètres du système ...
Alvar
Maintenez la touche SUPER (touche Windows) enfoncée pour afficher un aperçu de tous les raccourcis Unity disponibles. Consultez également cette Q&R .
Glutanimate
J'ai modifié votre deuxième question concernant les raccourcis de votre message, car il s'agit d'un doublon et il a déjà été répondu. Je vois que c'est votre première question (Bienvenue sur Askubuntu!): Il est plus facile pour nous de vous aider si vous ne posez qu'une seule question par message. Veuillez garder cela à l'esprit à l'avenir lorsque vous utiliserez AU.
Glutanimate
Même question qu'ici . Cependant, celui-là manque de réponse.
RPiAwesomeness
Probablement pas la réponse que vous cherchez, mais le manque d'unité de personnalisation. Si vous avez des besoins particuliers ou souhaitez plus de contrôle sur votre bureau, vous devriez envisager de passer à un environnement de bureau plus flexible, comme KDE.
Conchylicultor

Réponses:

30

Pour Ubuntu Dock livré avec Ubuntu 17.10 et versions ultérieures (avec GNOME)

Eh bien, les autres réponses sont assez anciennes, donc je pense qu'il vaut la peine d'ajouter une réponse à jour. Il est possible de le faire dès maintenant et pas trop dur tbh (Avec Ubuntu 17.10 et avec Gnome).

Utilisez simplement dconf-editor :

sudo apt install dconf-editor

Naviguez vers org> gnome> shell> extensions> dash-to-dock et vérifiez isolate-workspaces entrez la description de l'image ici

Jakub Kopyś
la source
1
la question n'a absolument rien à voir avec l'extension Dash To Dock Gnome. la question concerne Unity Launcher, que Dash To Dock n'est même pas compatible avec Unity.
crookedleaf
2
@crookedleaf Ubuntu est passé à GNOME avec un dash-to-dock recréé par défaut avec 17.10.
Seth
1
@Seth Mais OP utilise Unity, pas Gnome. Donc, soit OP vient d'utiliser accidentellement la balise "Unity", soit ils utilisent une version Ubuntu avec Unity.
crookedleaf
3
@crookedleaf Ou nous avons juste besoin de garder les questions à jour pour qu'ils aient aussi les dernières réponses :)
Seth
1
Fonctionne très bien dans 18.04 / w gnome. Merci! Notez que l'extension peut également être facilement installée à partir du site Web: extensions.gnome.org/extension/307/dash-to-dock
Jeff Ward
8

Comment rendre les applications introuvables sur les (autres) espaces de travail

À xdotooll' aide de windowunmap, il est possible de masquer complètement une fenêtre. La fenêtre, ni son application, n'apparaît plus dans l'icône du lanceur, et n'est même plus répertoriée dans la sortie de wmctrl.

Théoriquement, cela pourrait être connecté au "moteur d'espace de travail", qui a été utilisé dans ceci et cette réponse. Cela aurait été la solution la plus élégante.

Cependant, le processus consistant à masquer uniquement les fenêtres des autres espaces de travail et à augmenter automatiquement celles de l' espace de travail actuel est trop exigeant pour être utilisé dans un script d' arrière-plan en cours (pour l'instant), et il est peu probable qu'il "attrape un rhume" également. Comme les fenêtres sont définitivement perdues en cas d'erreur, j'ai donc décidé de ne pas proposer la procédure comme un processus automatique (en arrière-plan).

Si cette réponse vous est néanmoins utile ou non, cela dépend de la situation et de la raison pour laquelle vous souhaitez masquer les icônes des applications, fonctionnant sur d'autres espaces de travail; c'est ta décision.

La solution; ce que c'est et comment ça marche dans la pratique

  • Un script, disponible sous une touche de raccourci, faisant apparemment disparaître complètement toutes les fenêtres de l'espace de travail actuel (et donc des applications). Cela signifie que l'icône de l'application dans le lanceur Unity ne montre aucune activité de l'application:

    Trois applications en cours d'exécution: entrez la description de l'image iciaprès avoir appuyé sur la touche de raccourci:entrez la description de l'image ici

  • En appuyant à nouveau sur la combinaison de touches schortcut, les fenêtres et leurs applications réapparaîtront.

  • Étant donné que la combinaison de touches ne masquera que les fenêtres et les applications de l' espace de travail actuel , vous pouvez ensuite basculer vers un autre espace de travail sans signe de ce qui est (masqué) sur l'espace de travail actuel.
  • Le dévoilement est également effectué (uniquement) sur l'espace de travail actuel, donc en bref, le processus de masquage et de dévoilement est complètement indépendant par espace de travail .

Le script

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

Comment utiliser

  1. Le script a besoin des deux wmctrlet xdotool:

    sudo apt-get install wmctrl xdotool
    
  2. Copiez le script dans un fichier vide, enregistrez-le sous toggle_visibility.py
  3. Testez- exécutez le script: dans une fenêtre de terminal, exécutez la commande:

    python3 /path/to/toggle_visibility.py
    

    Ouvrez maintenant une nouvelle fenêtre de terminal (puisque la première a apparemment disparu de la surface de la terre) et exécutez à nouveau la même commande. Toutes les fenêtres devraient réapparaître.

    NB : assurez-vous de ne pas avoir de fenêtres "précieuses" ouvertes pendant le test

  4. Si tout fonctionne correctement, ajoutez la commande à une combinaison de touches de raccourci: choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:

    python3 /path/to/toggle_visibility.py
    

Explication

Comme dit précédemment, le script utilise xdotool's' windowunmappour masquer (complètement) les fenêtres et les applications auxquelles elles appartiennent. Le script:

  • lit quel est l'espace de travail actuel
  • lit les fenêtres qui existent sur l'espace de travail actuel (uniquement)
  • écrit la liste des fenêtres dans un fichier, nommé d'après l'espace de travail actuel
  • cache les fenêtres

Lors de la prochaine exécution, le script:

  • vérifie si le fichier correspondant à l'espace de travail actuel existe
  • dans l'affirmative, lit la liste des fenêtres et affiche les fenêtres.

basculant ainsi la visibilité des fenêtres et des applications sur l'espace de travail actuel.

Jacob Vlijm
la source
Génial. Maintenant, seulement si je peux trouver un moyen d'exécuter automatiquement le script lorsque je passe à l'autre espace de travail afin qu'ils disparaissent comme par magie, puis réapparaissent lorsque je recule. Peut-être que je pourrais écrire un script python pour remplacer la touche de raccourci pour ctrl+ shift+arrow key
Thu Yein Tun
1
Le 17.10, c'est désormais possible. Voir d'autres réponses.
Martin Melka
6

Malheureusement, c'est impossible.

Unity affiche toujours toutes les applications de partout et il n'y a aucun moyen de changer cela. Il existe un rapport de bogue - https://bugs.launchpad.net/ayatana-design/+bug/683170 Mais il semble que les développeurs ne feront rien. Probablement, si vous marquez en haut de la page que ce bogue vous affecte, cela aidera les développeurs à comprendre l'importance d'une telle option.

dofeoct
la source
1
Ne commentez pas le rapport de bogue, marquez-le simplement comme vous affectant en haut de la page.
Flimm
@Flimm savez-vous quel gestionnaire de bureau a cette fonctionnalité?
Cesar
2
l'unité semble grande mais le manque de personnalisation est vraiment frustrant.
Programster