Alias na sessão da área de trabalho do KDE

1

Pode ser definido como alias para a sessão da área de trabalho, como pode ser definido no terminal? Na verdade, não tenho certeza se as sessões de área de trabalho funcionam da mesma maneira. Existe algum intérprete central que interprete os comandos de todas as aplicações GUI (algum tipo de shell de back-end) ou como funciona?

O que eu preciso fazer é configurar o alias gvim="gvim --remote-tab-silent" para a sessão do KDE, assim nas configurações do Krusader ou em qualquer outro aplicativo GUI quando eu invoco gvim, gvim com --remote-tab -silent será invocado.

Como fazer isso (sem envolver no script)?

    
por Arkonix 23.04.2014 / 18:30

1 resposta

2

Depende. Programas gráficos geralmente usam os mesmos métodos que os não gráficos; isto é, um dos:

  • Às vezes, o programa entrega uma lista de parâmetros diretamente ao kernel, usando algo como:

    if (fork() == 0)
        execlp("vim", "--remote-tab-silent", "/home/LeNoob/somefile.txt", NULL);
    

    As várias funções exec*() dizem ao kernel, "execute exatamente essa coisa e passe essa lista exata de opções de linha de comando para argv[] ."

  • Outras vezes, os programas solicitarão ao shell - /bin/sh - interpretar uma linha de comando:

    system("vim $HOME/.bashrc");
    

    É praticamente o mesmo shell dos terminais, mas é executado no modo não interativo usando a opção -c . Além disso, é sempre /bin/sh por convenção, independentemente de qual shell (bash, zsh ...) você escolheu para usar interativamente. Então, o acima é praticamente o mesmo que:

    if (fork() == 0)
        execl("/bin/sh", "-c", "vim $HOME/.bashrc");
    

    (O próprio shell, é claro, usará exec*() diretamente.)

  • Por fim, os ambientes de área de trabalho que usam o D-Bus podem usá-lo para iniciar vários serviços simplesmente enviando uma mensagem para o "nome do barramento" desejado (por exemplo, org.gnome.gedit ). Também conhecido como "ativação de barramento", quando o dbus-daemon vê um programa enviando uma mensagem para um nome de barramento que atualmente "não possui", ele procura sua configuração pelo caminho do programa e novamente usa exec () para iniciá-lo.

    Este é um recurso D-Bus comumente usado, mas principalmente apenas para serviços em segundo plano como "dconf". No futuro, o GNOME está planejando usar isso para também iniciar aplicativos comuns como o Nautilus ou o Gedit. No entanto, neste momento, ele usa o mesmo método que todos os outros DEs, lendo o arquivo .desktop relevante [veja abaixo] e exec () 'inserindo o programa diretamente, então estou apenas incluindo isto para completar.

(É claro que programas reais não têm "vim" e "somefile.txt" codificados neles - eles usam algo como getenv("EDITOR") e o nome do arquivo desejado - mas você obtém o ponto.)

No entanto, nada disso importa , uma vez que o shell nunca interpreta apelidos no modo não interativo, e enquanto interpretaria as funções do shell, ele nunca lerá o seu ~/.bashrc para ver quais funções você definiu.

Portanto, as próximas perguntas são: como você configura o gVim como seu editor de texto; e seu programa procura pelos diretórios gvim in $ PATH ou leva o caminho completo /usr/bin/gvim de seu arquivo de configuração?

Programas baseados em terminal usam a variável $EDITOR , então, em vez de EDITOR=gvim , você pode usar EDITOR="gvim --remote-tab-silent" em seu ~ / .profile ou similar.

Os ambientes de área de trabalho encontram o gVim de acordo com /usr/share/applications/gvim.desktop - especificamente, a linha Exec=gvim -f %F , que somente diz a eles para iniciar gvim , mas não diz onde está, então $ PATH será usado. Isso significa que pode ser substituído de duas maneiras:

  • você pode criar um script que envolva gvim e coloque em algum lugar no início do $ PATH. Por exemplo, chame o script ~/bin/gvim e, em seguida, coloque ~/bin no início de $ PATH;

  • ou você pode copiar o arquivo .desktop de / usr para ~/.local/share/applications/gvim.desktop e alterar a linha Exec= para ter as opções desejadas:

    Exec=gvim --remote-tab-silent -f %F
    

    (Normalmente, as alterações serão coletadas imediatamente, mas, se não forem, tente executar kbuildsycoca4 ou kbuildsycoca4 --noincremental de um terminal.)

por 23.04.2014 / 18:59

Tags