Posso de alguma forma permitir que um aplicativo GUI em execução dentro de um flatpak permita acessar e executar um binário em /bin
respectivamente /var/bin
?
Mesmo se eu permitir acesso total ao sistema ( --filesystem=host
), ele não poderá ver/encontrar o arquivo lá.
Meu caso de uso seria executar shellcheck
.
Existem diferentes maneiras:
host
acesso, você pode, por exemplo, rodar/usr/local/bin/example
em/var/run/host/usr/local/bin/example
. Ou seja/usr/local
, está montado em/var/run/host/usr/local
.Gerar comandos fora do flatpak
Você pode usar
flatpak-spawn
para executar comandos em um ambiente diferente.No entanto, geralmente você deseja iniciar os comandos no sistema host, saindo da caixa de proteção. Para fazer isso, você obviamente precisa enfraquecer a caixa de areia do flatpak. Basta adicionar esta permissão:
Depois, você pode
flatpak-spawn --host
executar comandos fora do flatpak do host.Agora, para realmente usar isso em uma GUI, esperamos que você tenha algumas maneiras de alterar o caminho para os binários que deseja executar lá. Isso pode ficar complicado, pois você precisa passar parâmetros adicionais e, no final, pode acabar tendo que escrever pequenos scripts wrapper.
No meu caso, eu realmente fiz, e você pode encontrá-los aqui . Eles permitem (no meu caso) que o Atom (mas provavelmente possível com qualquer IDE) seja executado
shellcheck
ougpg
…Você pode usar o método HostCommand da interface org.freedesktop.Flatpak.Development Dbus: https://github.com/flatpak/flatpak/blob/master/data/org.freedesktop.Flatpak.xml#L43
Um exemplo usando Python: https://stackoverflow.com/questions/39494813/pass-file-descriptor-via-a-dbus-function-call-from-python-aka-call-flatpaks-ho