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.
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
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..."])
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:
Ajoutez la commande:
/path/to/autohide_launcher.py
Donnez-lui un nom à votre goût
Définir un raccourci clavier pour basculer le script
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
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.
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):
sudo apt-get install git
cd /opt ; sudo git clone https://github.com/SergKolo/sergrep.git
sudo chmod -R +x sergrep
Le fichier s’appelle toggle_unity_launcher.sh
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.
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.
#!/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 "$@"