Toolbox: Integração de arquivos de desktop

Criado em 21 abr. 2020  ·  18Comentários  ·  Fonte: containers/toolbox

Se você instalar um aplicativo GUI (por exemplo, VS Code, GNOME Builder etc.), ele criará um arquivo de área de trabalho em / usr / share / applications. Mas a caixa de ferramentas isolou o sistema (exceto o homedir) e não ligará.
Se houver uma opção para criar um arquivo de desktop a partir dele, como:
$ toolbox desktop code.desktop fará:

  1. Copie /usr/share/applications/code.desktop para .local / share / applications / toolbox_code.desktop
  2. Altere todas as referências executáveis ​​(/ usr / bin / code ou código) para os conainers (/ usr / bin / code -> toolbox run / usr / bin / code et cetera)
  3. Copie o ícone para o armazenamento local do ícone

Adicione também a opção de remover:
$ toolbox desktop code.desktop -r
para remover ~ / .local / share / applications / toolbox_code.desktop e o ícone

1. Feature request 5. Good First Issue 5. Help Wanted

Comentários muito úteis

Eu estou indo para isso!

Todos 18 comentários

Olá @ oksoft-git! Isso parece interessante. Eu estava pensando em fornecer algo semelhante a isso. Você gostaria de fazer um PR com este recurso (mas não no Shell, mas no Go para a nova versão do Toolbox ?

@debarshiray , o que você acha?

Eu estou indo para isso!

Este recurso beneficiaria enormemente os usuários do silverblue, pois então você pode facilmente usar os aplicativos do contêiner

Seria possível incluir integração binária básica, para permitir a exportação de wrappers de comandos básicos para o sistema básico ou isso está fora do escopo do projeto?

Como wrappers de comando, quero dizer wrapper como este para o nano, por exemplo (pode ser mais complexo do que este para alguns programas)

!/bin/bash
toolbox nano "$@"

(flatpak faz algo assim, poderia investigar mais)

Olá @sandorex ! O recurso de que você está falando já está sendo rastreado aqui: # 145. É uma das prioridades depois de lançar a caixa de ferramentas atualizada. Embora esses dois recursos sejam semelhantes, a solução para eles é muito diferente.

Estou me perguntando agora se dar ao Toolbox o poder de criar / editar arquivos .desktop para aplicativos é realmente o caminho a percorrer. Seria necessário que o Toolbox soubesse onde localizar o arquivo .desktop existente, encontrar as linhas corretas, atualizá-las e mover / copiar o arquivo para um local onde a área de trabalho (nem todo mundo usa o GNOME Shell) vai encontrá-lo e usá-lo. Isso me parece um pedaço desnecessariamente grande de lógica que não teria muito uso.

Em vez disso, a seção da documentação com instruções sobre como atualizar um arquivo .desktop existente parece melhor para mim.

Se eu estiver errado sobre a complexidade, então, por favor, prove que estou errado.

Posso estar errado, mas os arquivos da área de trabalho são pesquisados ​​recursivamente em ~/.local/share/applications portanto, um diretório que contém apenas os arquivos da área de trabalho da caixa de ferramentas (por contêiner) e, em seguida, apenas remova os arquivos da área de trabalho que não existem no contêiner, mas a modificação não consigo realmente simplificar

A segunda abordagem seria atribuir essa responsabilidade a outro aplicativo ( toolbox-desktop-integration ) que permitiria a seleção de arquivos da área de trabalho para trazer para o host (colocá-los em suas pastas seria inteligente, como ~/.local/share/applications/_toolbox_XXX where XXX é o nome do contêiner)

Interessado em sua opinião @HarryMichal

Está quase pronto, mas não consigo extrair o caminho do ícone do arquivo da área de trabalho para copiar para o host.

_edit_: Criar uma ferramenta dedicada para isso será melhor. Eu vou recriar isso.

@ ondra05 Bom trabalho!

Há uma coisa que eu pessoalmente aprimoraria (embora não seja necessário) e que usar cat para ler o arquivo do contêiner, funcionará bem, mas é meio hacky, porque podman compartilha imagens com toolbox você pode usar podman cp para copiar arquivos entre o container e o host

Estou brincando com essa ideia neste script python. Atualmente ele instala arquivos de desktop, ícones, mime e metainfo. Ainda não adicionei um recurso de desinstalação, mas não parece muito difícil.

Infelizmente, não tenho tempo para fazer um aplicativo adequado, fiz a interface do usuário, mas GTK é um pé no saco, provavelmente farei apenas o aplicativo CLI algum dia (espero)

Infelizmente não tenho tempo para fazer um aplicativo adequado

Eu acho que uma GUI para isso é um exagero. Imho isso deve ser tratado com comandos na direção de toolbox export com sinalizadores como --remove e --list .

Vou tentar investigar isso. Eu me pergunto se é possível apenas adicionar um comando toolbox export APP que chama, digamos, este script python dentro da caixa de ferramentas de uma forma semelhante a toolbox run export.py ARGS . Embora seja claramente melhor fazer isso em movimento, isso envolve apenas a cópia de arquivos da caixa de ferramentas /usr para $XDG_DATA_DIR e pode ser mais simples usar um script para isso. Não sei qual é o mantenedor dessa possibilidade.

Note que tal extensão teria que levar muitas coisas em consideração, o problema de manipulação de ícones não é trivial, por exemplo.

Isso é semelhante à discussão sobre a adição do comando run , incluindo esta conversa IRC de #silverblue em Freenode:

From #silverblue on Freenode:

15:56 <rishi> otaylor: alexlarsson: Hey! Do you have any thoughts on            
      https://github.com/debarshiray/toolbox/pull/76 ?
15:57 <rishi> In short, people want to be able to do "toolbox run emacs".
15:57 <rishi> And I am worried about encroaching on Flatpak territory.
15:58 <alexlarsson> I don't think its a huge problem.
15:58 <otaylor> rishi: I suspect we need such functionality if we want the      
      toolbox to be a serious tool that people rely on
15:58 <alexlarsson> No 2 tools will be 100% non-overlapping
15:59 <alexlarsson> and i can imagine using this in non-flatpak like way
15:59 <alexlarsson> toolbox run some-service
15:59 <otaylor> rishi: I'd be more worried about adding, say, menu item         
      management so that it looks like 'toolbox run emacs' is a real app
16:00 <alexlarsson> I mean, some people use flatpak for cli stuff
16:00 <rishi> otaylor: alexlarsson: Okay!
16:00 <alexlarsson> which is not quite the point
16:00 <alexlarsson> Still, it works
16:01 <alexlarsson> The main thing is that the design decisions that drive      
      toolbox and flatpak are driven by a particular usecase
16:01 <alexlarsson> Not that they can't be used other ways
16:03 <rishi> Yeah, toolbox is very clearly: "use jhbuild on Silverblue".
16:04 <rishi> walters would say "separate development prefix", but that's       
      about it, I think.

Já é possível adicionar toolbox run emacs no arquivo .desktop do aplicativo instalado dentro do container. Ter um comando que realmente analisa e cria arquivos .desktop é outro passo na mesma direção, e não tenho certeza se é um passo longe demais.

@debarshiray o que você acha de um script python que copia arquivos de desktop, icondata e metadados? Já fiz um e está funcionando bem.

É definitivamente uma maneira de fazer isso. No entanto, estou hesitante em incluí-lo na Caixa de ferramentas agora.

Estou interessado em trabalhar neste assunto!

...
nem todo mundo usa GNOME Shell
...
Se eu estiver errado sobre a complexidade, então, por favor, prove que estou errado.

@HarryMichal Eu acredito que suas preocupações são desnecessárias.
Atualmente, os arquivos .desktop e os temas de arquivos de ícones são projetados para serem independentes da área de trabalho e estão sujeitos às
https://specifications.freedesktop.org/
https://specifications.freedesktop.org/desktop-entry-spec/latest/index.html
https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html

Para todos:
podemos projetar a funcionalidade necessária como DNF plugin talvez?

PS: acabei de perceber que o Flatpak já expõe os aplicativos, então poderíamos simplesmente pegar seu código emprestado, se necessário.

Ainda não adicionei um recurso de desinstalação, mas não parece muito difícil.

Obrigado @ A6GibKm , por favor! :)

Esta página foi útil?
0 / 5 - 0 avaliações