Comando do terminal para executar aplicativos fixados na unidade bar

2

Desejo personalizar os atalhos de teclado para aplicativos que são fixados no meu launcher de unidade (no Ubuntu 16.04). Qual é a linha de comando para executar (digamos) o segundo aplicativo fixado? O terceiro (etc.)?

Qualquer sugestão será muito apreciada.

Editar 1

Como apontado por @CelticWarrior, Super + 1-9 deve fazer o truque. Por alguma razão, essas ligações pararam de funcionar quando eu atualizei para 16.04 (funcionou bem em 14.04). É por isso que eu desejei personalizar novamente o atalho de forma apropriada.

Editar 2

Gerenciador de configurações de configuração do Compiz, permita-me atribuir Super + Alt para visualizar o traço. Adicionar um 1-9 agora inicia os aplicativos fixados. (Não vou permitir que eu simplesmente atribua Super para ver o Dash, embora ... redefinir para o padrão simplesmente desassina a chave.)

    
por emagar 09.01.2017 / 19:26

1 resposta

2

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()
    
por Sergiy Kolodyazhnyy 16.01.2017 / 08:18