49 votes

Paramétrage pour n'afficher que les applications de l'espace de travail actuel dans le lanceur ?

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 ?

67voto

Jakub Kopyś Points 903

Pour Ubuntu Dock livré avec Ubuntu 17.10 et plus (avec GNOME)

Les autres réponses sont assez anciennes, je pense donc qu'il vaut la peine d'ajouter une réponse actualisée. Il est possible de le faire dès maintenant et ce n'est pas trop difficile (avec Ubuntu 17.10 et Gnome).

Il suffit d'utiliser dconf-éditeur :

sudo apt install dconf-editor

Naviguez jusqu'à org > gnome > Shell > extensions > dash-to-dock et vérifier isoler les espaces de travail enter image description here

7voto

Jacob Vlijm Points 78990

Comment rendre les applications intraçables sur les (autres) espaces de travail ?

Utilisation xdotool 's windowunmap il est possible de masquer complètement une fenêtre. La fenêtre et son application n'apparaissent plus dans l'icône du lanceur et ne sont même plus listées dans la sortie de la commande wmctrl .

Théoriquement, cette pourrait être connecté au "workspace-engine", qui a été utilisé en y répondre. Cela aurait été la solution la plus élégante.

Cependant, le processus de seulement masquer les fenêtres sur d'autres espaces de travail et de relever automatiquement celles qui se trouvent sur l'espace de travail. espace de travail actuel est trop exigeant pour être utilisé dans le cadre d'une arrière-plan script (pour l'instant), et il n'est pas improbable qu'il s'agisse aussi d'un "rhume". Étant donné que Windows est définitivement perdu en cas d'erreur, j'ai décidé de ne pas proposer la procédure en tant que processus automatique (en arrière-plan).

L'utilité de cette réponse 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 ; la décision vous appartient.

La solution : ce qu'elle est et comment elle fonctionne en pratique

  • Un script, disponible sous une touche de raccourci, semble rendre tous les Windows sur l'espace de travail actuel (et donc les applications) disparaissent complètement. 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 : enter image description here Après avoir appuyé sur la touche de raccourci : enter image description here

  • En appuyant à nouveau sur la combinaison de touches de raccourci, les fenêtres et leurs applications réapparaissent.

  • Étant donné que la combinaison de touches ne fait que masquer les fenêtres et les applications de l'écran d'accueil, il est préférable de ne pas utiliser cette combinaison de touches. espace de travail actuel vous pouvez ensuite passer à un autre espace de travail sans avoir connaissance de ce qui est (caché) dans l'espace de travail actuel.

  • En outre dissimulation se fait (uniquement) sur l'espace de travail courant, de sorte qu'en bref, le processus de masquage et de démasquage se fait de manière totalement indépendante. 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 l'utiliser

  1. Le script a besoin des deux éléments suivants wmctrl y xdotool :

    sudo apt-get install wmctrl xdotool
  2. Copiez le script dans un fichier vide, enregistrez-le sous le nom de toggle_visibility.py

  3. Test - exécuter le script : dans une fenêtre de terminal, exécuter 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 Pour les tests, il faut s'assurer qu'aucune fenêtre "importante" n'est ouverte.

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

    python3 /path/to/toggle_visibility.py

Explication

Comme indiqué, le script utilise xdotool 's windowunmap Le logiciel de gestion de l'interface utilisateur permet de masquer (complètement) Windows et les applications auxquelles ils appartiennent. Le script :

  • lit 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 l'exécution suivante, le script :

  • vérifie si le fichier correspondant à l'espace de travail actuel existe
  • si c'est le cas, lit la liste des fenêtres et décachette les fenêtres.

ce qui permet d'alterner la visibilité des fenêtres et des applications dans l'espace de travail actuel.

5voto

smartmouse Points 101

Malheureusement, c'est impossible.

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

1voto

Harsh Gundecha Points 111

Cacher l'application/fenêtre dans le commutateur alt-tab

  1. installer dconf-editor en utilisant la commande suivante
    • sudo apt-get install dconf-editor
  2. lancer dconf-editor à partir du menu ou du terminal en utilisant la commande suivante
    • dconf-editor
  3. dans dconf, visitez l'emplacement
    • pour l'utilisation de l'app-swicther
      • /org/gnome/shell/app-switcher/current-workspace-only
    • Pour la fenêtre-swithcer, utiliser ce qui suit
      • /org/gnome/shell/window-switcher/current-workspace-only
    • note : vous pouvez également modifier les deux
  4. bouton/interrupteur d'arrêt qui indique Utiliser la valeur par défaut
  5. remplacer le Valeur personnalisée からして false a true
  6. enregistrer les modifications en cliquant sur Appliquer en bas à droite de dconf

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X