Je souhaite personnaliser les raccourcis clavier pour les applications qui sont épinglées sur mon lanceur d'unité (dans Ubuntu 16.04). Quelle est la ligne de commande pour exécuter (par exemple) la deuxième application épinglée? Le troisième (etc.)?
Tout indice sera très apprécié.
Edit 1
Comme indiqué par @CelticWarrior, Super + 1-9 devrait faire l'affaire. Pour une raison quelconque, ces liaisons ont cessé de fonctionner lors de la mise à niveau vers 16.04 (fonctionnait correctement dans 14.04). C'est pourquoi je souhaitais personnaliser le raccourci de manière appropriée.
Edit 2
Compiz Config Settings Manager m'a laissé assigner Super + Alt pour afficher le tableau de bord. L'ajout d'un 1-9 lance maintenant les applications épinglées. (Ne me laisserez pas simplement assigner à Super l'affichage du tiret, bien que ... réinitialiser par défaut annule simplement l'attribution de la clé.)
Jusqu'à présent, la cause de votre problème avec Super+number clés reste inconnue, mais je crois fermement que vous auriez besoin de vérifier si le Super clé est activée sous Unity Plugin dans Compiz Config Settings Manager. (disponible via la commande Sudo apt-get install compizconfig-settings-manager
).
L’approche en ligne de commande se ferait via cette commande:
dconf reset /org/compiz/profiles/unity/plugins/unityshell/show-launcher
Cependant, pour répondre à la question de titre que vous avez, à savoir s'il existe un outil de ligne de commande pour ouvrir un programme à partir du programme de lancement Unity. . . Eh bien, il n'y avait pas un outil comme celui jusqu'à présent. Le script ci-dessous remplit exactement cette fonction.
Comme indiqué par l'option -h
:
$ ./open_launcher_item.py -h
usage: open_launcher_item.py [-h] -i ITEM
optional arguments:
-h, --help show this help message and exit
-i ITEM, --item ITEM position of app on the launcher
Donc, si vous voulez lancer la première application sur le lanceur, faites
./open_launcher_item.py -i 0
Si vous voulez deuxième article,
./open_launcher_item.py -i 1
Pour que le script fonctionne, stockez-le dans le dossier ~/bin
. Si vous n'avez pas de dossier bin
dans votre dossier /home/USER
, créez-en un. Assurez-vous que le script est exécutable via la commande chmod +x ~/bin/open_launcher_item.py
ou en cliquant avec le bouton droit de la souris sur le fichier dans le gestionnaire de fichiers graphique et en cochant la case "Autoriser l'exécution en tant que programme" sous l'onglet Autorisations.
Pour que le raccourci clavier fonctionne, vous devez créer 9 raccourcis, et pour chacun d'eux, définissez la commande appropriée, avec -i 0
, -i 1
, et ainsi de suite jusqu'à -i 9
. Veuillez noter que vous devrez utiliser le chemin complet du script, c'est-à-dire /home/USER/bin/open_launcher_item.py -i 1
Aussi disponible sur GitHub
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: Serg Kolo , contact: [email protected]
# Date: January 15th, 2017
# Purpose: opens applications on Unity launcher according to position
# Tested on: Ubuntu 16.04 LTS
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gio,Gtk
import sys,argparse
class ApplicationOpener(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self,flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE)
self.args = None
self.schema = 'com.canonical.Unity.Launcher'
self.key = 'favorites'
def gsettings_get(self, schema, path, key):
"""Get value of gsettings schema"""
if path is None:
gsettings = Gio.Settings.new(schema)
else:
gsettings = Gio.Settings.new_with_path(schema, path)
return gsettings.get_value(key)
def get_launchers(self):
return [ i.replace('application://',"")
for i in self.gsettings_get(self.schema,None,self.key)
if i.startswith('application://')
]
def do_activate(self):
position = self.args.item
launchers = self.get_launchers()
if position > len(launchers):
position = -1
try:
Gio.DesktopAppInfo.new(launchers[position]).launch_uris(None)
except Exception as e:
subprocess.call(['zenity','--error','OOPS! SOMETHING WENT WRONG:\n' + str(e)])
return 0
def do_command_line(self, args):
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--item',
type=int,required=True,
help='position of app on the launcher')
self.args = parser.parse_args(args.get_arguments()[1:])
self.do_activate()
return 0
def main():
app = ApplicationOpener()
exit_status = app.run(sys.argv)
sys.exit(exit_status)
if __== '__main__':
main()