web-dev-qa-db-fra.com

Commande de terminal pour exécuter des applications épinglées dans la barre d'unité

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é.)

2
emagar

Aborder le problème central

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

Répondre à la question du titre

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.

Usage

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

Source du script

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()
1
Sergiy Kolodyazhnyy