it-swarm.com.de

Terminal-Befehl zum Ausführen von Apps, die an die Unity-Leiste gebunden sind

Ich möchte Tastaturkürzel für Apps anpassen, die an meinen Unity Launcher (in Ubuntu 16.04) gebunden sind. Was ist die Befehlszeile, um die zweite angeheftete App auszuführen? Das dritte (etc.)?

Jeder Hinweis wird sehr geschätzt.


Edit 1

Wie von @CelticWarrior gezeigt, sollte Super + 1-9 den Trick machen. Aus irgendeinem Grund funktionierten diese Bindungen nicht mehr, als ich ein Upgrade auf 16.04 durchführte (14.04 funktionierte einwandfrei). Aus diesem Grund wollte ich die Verknüpfung entsprechend anpassen.


Edit 2

Mit Compiz Config Settings Manager kann ich Super + Alt zuweisen, um den Dash anzuzeigen. Durch Hinzufügen von 1 bis 9 werden jetzt die angehefteten Apps gestartet. (Ich kann nicht einfach Super zuweisen, um den Dash anzuzeigen. Beim Zurücksetzen auf die Standardeinstellung wird jedoch die Zuweisung des Schlüssels aufgehoben.)

2
emagar

Das Kernproblem angehen

Soweit die Ursache Ihres Problems mit Super+number Schlüssel bleiben unbekannt, aber ich bin der festen Überzeugung, dass Sie prüfen müssen, ob die Super Der Schlüssel ist unter Unity Plugin im Compiz Config Settings Manager aktiviert. (Erhältlich über den Befehl Sudo apt-get install compizconfig-settings-manager).

Der Befehlszeilenansatz würde über diesen Befehl erfolgen:

dconf reset /org/compiz/profiles/unity/plugins/unityshell/show-launcher

Adressierung der Titelfrage

Um jedoch die Titelfrage zu beantworten, die Sie haben, nämlich ob es ein Befehlszeilentool zum Öffnen eines Programms aus Unity Launcher gibt. . . Naja, so ein Tool gab es bisher nicht. Das unten angegebene Skript führt genau diese Funktion aus.

Verwendung

Wie bei der Option -h Angegeben:

$ ./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

Wenn Sie also die erste App auf dem Launcher starten möchten, tun Sie dies

./open_launcher_item.py -i 0

Wenn Sie einen zweiten Artikel wünschen,

./open_launcher_item.py -i 1

Speichern Sie das Skript im Ordner ~/bin, Damit es funktioniert. Wenn sich in Ihrem Ordner /home/USER Kein Ordner bin befindet, erstellen Sie einen. Stellen Sie sicher, dass das Skript über den Befehl chmod +x ~/bin/open_launcher_item.py Oder durch Klicken mit der rechten Maustaste auf die Datei im grafischen Dateimanager ausführbar ist, und aktivieren Sie "Ausführung als Programm zulassen" auf der Registerkarte "Berechtigungen".

Damit es für Tastenkombinationen funktioniert, müssen Sie 9 Tastenkombinationen erstellen und für jede von ihnen den entsprechenden Befehl mit -i 0, -i 1 Usw. bis -i 9. Bitte beachten Sie, dass Sie vollständiger Pfad zum Skript verwenden müssen, d. H. /home/USER/bin/open_launcher_item.py -i 1

Skriptquelle

Auch verfügbar auf 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