Enfrentando a questão central
Até agora, a causa do seu problema com as chaves Super + número permanece desconhecida, mas eu acredito strongmente que você precisaria verificar se o Super está habilitada em Unity Plugin no Compiz Config Settings Manager. (obtenível através do comando sudo apt-get install compizconfig-settings-manager
).
A abordagem de linha de comando seria através deste comando:
dconf reset /org/compiz/profiles/unity/plugins/unityshell/show-launcher
Enfrentando a questão do título
No entanto, para abordar a questão do título que você tem, ou seja, se existe uma ferramenta de linha de comando para abrir um programa do iniciador do Unity. . . bem, não havia uma ferramenta como essa até agora. O script abaixo executa exatamente essa função.
Uso
Conforme fornecido por -h
option:
$ ./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
Então, se você quiser lançar o primeiro aplicativo no iniciador, faça
./open_launcher_item.py -i 0
Se você quiser o segundo item,
./open_launcher_item.py -i 1
Para fazer o script funcionar, armazene-o na pasta ~/bin
. Se você não tiver a pasta bin
na sua pasta /home/USER
, crie uma. Assegure-se de que o script seja executável através do comando chmod +x ~/bin/open_launcher_item.py
, ou clique com o botão direito do mouse no gerenciador de arquivos gráfico e marque a opção "Permitir execução como programa" na guia Permissões.
Para que funcione como atalho de teclado, você terá que criar 9 atalhos e, para cada um deles, definir o comando apropriado, com -i 0
, -i 1
e assim por diante, até -i 9
. Observe que você precisará usar caminho completo no script, ou seja, /home/USER/bin/open_launcher_item.py -i 1
Origem do script
Também disponível em 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 __name__ == '__main__':
main()