Comment afficher le lanceur Unity dans un seul espace de travail?

Je souhaite que le programme de lancement ne soit actif que dans l’espace de travail principal. Par exemple, j’aime garder la fenêtre Cisortingx en mode d’affichage complet sans lanceur (dans l’espace de travail II).

Comme beaucoup de choses, cela n’existe pas autant que je sache, MAIS , cela peut être fait avec un peu de créativité et les bons outils.

entrez la description de l'image ici

Comment cela peut être fait

En supposant que vous soyez sur 14.04 (avec python3), vous pouvez utiliser un script à exécuter en arrière-plan, qui garde une trace de votre fenêtre courante et définit le lanceur à masquer ou non, selon la fenêtre actuelle.

  • Ce que vous devez d’abord faire, c’est installer wmctrl :

     sudo apt-get install wmctrl 

    Nous avons besoin de wmctrl pour obtenir des informations sur la taille totale de toutes les fenêtres et pour pouvoir lire des informations sur la section actuelle dans laquelle nous nous trouvons.

  • Une fois que cela est fait, copiez le script ci-dessous dans un fichier vide et autohide_launcher.py sous autohide_launcher.py (conservez le nom ainsi) et rendez-le exécutable (!) .

    Dans la ligne hide_launcher , choisissez les fenêtres dans lesquelles vous voulez masquer automatiquement le programme de lancement (définissez “True”) et utilisez le nombre correct d’entrées correspondant à votre nombre de fenêtres. La liste se lit par ligne de fenêtre, de gauche à droite.

 #!/usr/bin/env python3 import subprocess import time # set the hide-launcher values for your viewports; in rows/columns hide_launcher = (False, True, True, True) # don't change anything below (or it must be the time.sleep(2) interval) key = " org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ " pr_get = "gsettings get "; pr_set = "gsettings set " check = pr_get+key+"launcher-hide-mode" hide = pr_set+key+"launcher-hide-mode 1" show = pr_set+key+"launcher-hide-mode 0" def get_value(command): return subprocess.check_output( ["/bin/bash", "-c", command]).decode('utf-8').ssortingp() # get screen resolution output = get_value("xrandr").split(); idf = output.index("current") screen_res = (int(output[idf+1]), int(output[idf+3].replace(",", ""))) while True: # get total span size all viewports, position data wsp_info = get_value("wmctrl -d").ssortingp() scr_data = [item.split("x") for item in wsp_info.split(" ") if "x" in item][0] # get current position (viewport coordinates) VP = eval(wsp_info[wsp_info.find("VP: "):].split(" ")[1]) # calculated viewports rows / columns VP_hor = int(scr_data[0])/int(screen_res[0]) VP_vert = int(scr_data[1])/int(screen_res[1]) # calculated viewport positions range_hor = [i*screen_res[0] for i in range(int(VP_hor))] range_vert = [i*screen_res[1] for i in range(int(VP_vert))] viewports = [(h, range_vert[i])for i in range(len(range_vert)) for h in range_hor] current_viewport = viewports.index(VP); a_hide = get_value(check) if (hide_launcher[current_viewport], a_hide == "0") == (True, True): subprocess.Popen(["/bin/bash", "-c", hide]) elif (hide_launcher[current_viewport], a_hide == "0") == (False, False): subprocess.Popen(["/bin/bash", "-c", show]) else: pass time.sleep(1) 
  • Vous pouvez lancer le script avec la commande:

     /path/to/autohide_launcher.py 

Activer / Désactiver l’auto-masquage par fenêtre

Cependant, il est plus pratique d’utiliser le script ci-dessous pour avoir une commande permettant d’activer / désactiver le script.

Copiez le script ci-dessous dans un fichier vide et enregistrez-le sous le nom start_stop.py , dans le même dossier que le script autohide_launcher.py . Rendez-le également exécutable (!). Maintenant, vous pouvez basculer la fonction de masquage automatique avec la commande

 /path/to/start_stop.py 

Le script start / stop:

 #!/usr/bin/env python3 import os import subprocess script_dir = os.path.dirname(os.path.abspath(__file__)) cmd = "ps -ef | grep autohide_launcher.py" run = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").split("\n") match = [line for line in run if script_dir+"/"+"autohide_launcher.py" in line] if len(match) != 0: subprocess.Popen(["kill", match[0].split()[1]]) subprocess.Popen(["notify-send", "autohide per viewport stopped..."]) else: subprocess.Popen(["/bin/bash", "-c", script_dir+"/"+"autohide_launcher.py"]) subprocess.Popen(["notify-send", "autohide per viewport started..."]) 

entrez la description de l'image ici

Autres moyens de démarrer ou d’arrêter le script

Il existe plusieurs autres moyens de basculer le script de manière pratique:

Ajoutez le script à vos apoplications de démarrage

Si vous souhaitez exécuter le script de manière permanente en arrière-plan:

  • Ouvrez les applications de démarrage et choisissez “Ajouter”.
  • Ajoutez la commande:

     /path/to/autohide_launcher.py 
  • Donnez-lui un nom à votre goût

Définir un raccourci clavier pour basculer le script

  • Ouvrez les Paramètres système et choisissez: “Clavier”> “Raccourcis”> “Raccourcis personnalisés”.
  • Créez un nouveau raccourci de votre choix, avec la commande:

     /path/to/start_stop.py 

    Vous pouvez maintenant basculer entre les zones de masquage automatique par fenêtre avec la combinaison de touches.


posté sur gist.gisthub

introduction

Unity Launcher et Compiz ne disposent pas d’un paramètre permettant d’afficher uniquement le programme de lancement dans une fenêtre spécifique. Toutefois, il est possible d’utiliser le paramètre hide launcher pour rechercher les modifications dans la fenêtre et le modifier en conséquence. La fenêtre d’affichage en haut à gauche correspond aux coordonnées 0,0 ; il doit donc exister une interrogation pour savoir si nous sums ou non sur cette fenêtre – sinon, non-lancement du lanceur.

Le script ci-dessous fait exactement cela.

Obtenir le script

Le code source peut être copié à partir d’ici directement ou téléchargé à partir de mon référentiel git en exécutant les commandes suivantes (évidemment dans le terminal):

  1. sudo apt-get install git
  2. cd /opt ; sudo git clone https://github.com/SergKolo/sergrep.git
  3. sudo chmod -R +x sergrep

Le fichier s’appelle toggle_unity_launcher.sh

Comment fonctionne le script

Le script peut être appelé sans options (pour afficher le lanceur uniquement dans la fenêtre en haut à gauche) ou avec les options -x et -y pour définir une fenêtre spécifique, comme ceci

  toggle_unity_launcher.sh -x 1366 -y 0 

Le drapeau -h imprimera l’utilisation.

Faire exécuter le script à la connexion

Le script peut être démarré lors de la connexion en ajoutant un chemin complet au fichier (y compris les options -x et -y ) et des arguments dans les applications de démarrage, comme suit.

entrez la description de l'image ici

Code source

 #!/usr/bin/env bash # ########################################################### # Author: Serg Kolo , contact: [email protected] # Date: April 8th , 2016 # Purpose: Set Unity launcher to show up only on # specific viewport. By default - viewport 0,0 # Written for: http://askubuntu.com/q/349247/295286 # Tested on: Ubuntu 14.04 LTS ########################################################### # Copyright: Serg Kolo , 2016 # # Permission to use, copy, modify, and dissortingbute this software is hereby granted # without fee, provided that the copyright notice above and this permission statement # appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. ARGV0="$0" ARGC=$# print_usage() { cat << EOF Copyright 2016 Serg Kolo Usage: toggle_unity_launcher.sh [-x INT -y INT] [-h] The script toggles Unity Launcher on user-defined viewport By default - launcher appears only on 0, 0 -x and -y flags serve to set custom viewport Use 'xprop -root -notype _NET_DESKTOP_VIEWPORT' to find the exact coordinates of a viewport you want to set EOF } get_viewport() { xprop -root -notype _NET_DESKTOP_VIEWPORT | awk -F '=' '{printf "%s",substr($2,2)}' } set_launcher_mode() { dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode $1 } poll_viewport_change() { while [ "$(get_viewport)" = "$VIEWPORT" ] do set_launcher_mode 0 sleep 0.25 done } parse_args() { local OPTIND opt while getopts "x:y:h" opt do case ${opt} in x) XPOS=${OPTARG} ;; y) YPOS=${OPTARG} ;; h) print_usage exit 0 ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; esac done shift $((OPTIND-1)) } main() { local XPOS=0 local YPOS=0 parse_args "$@" local VIEWPORT=$(printf "%s, %s" "$XPOS" "$YPOS" ) while true do poll_viewport_change set_launcher_mode 1 # happens only when # previous function exits sleep 0.25 done } main "$@"