Como usar o mesmo seletor de arquivos para aplicativos QT e GTK


3

O seletor de arquivos para aplicativos GTK + (por exemplo, Firefox) é assim:

insira a descrição da imagem aqui

Para aplicativos qt (por exemplo, nomacs), é assim:

insira a descrição da imagem aqui

Existe uma maneira de usar o seletor de arquivos QT para os aplicativos GTK e QT?

Estou executando o arco 4.20 com o KDE instalado.

Respostas:


3

Geralmente não. O GTK e o Qt têm diferentes janelas de diálogo do navegador de arquivos, porque a janela de diálogo do navegador de arquivos é parte integrante do kit de ferramentas, não é algum módulo externo que você pode simplesmente trocar por outro.


Dito isto, é tipo de possível, mas apenas para GTK 3.20 e posterior. Não afetará os programas GTK 2. (Na verdade, isso não afetará todos os programas do GTK 3, apenas alguns. Principalmente, não funcionará com aplicativos que adicionam seus próprios elementos personalizados à caixa de diálogo, e a maioria dos outros não sei por quê. Felizmente, funciona com Firefox, que provavelmente será 95% do seu caso de uso.)

Para fazer isso, você pode forçar o kit de ferramentas GTK a usar 'portais' - um recurso de integração Flatpak, que normalmente permite que programas em área restrita abram vários selecionadores no sistema host (fora da sandbox) e recebam o resultado. Isso significa necessariamente que o aplicativo / kit de ferramentas precisa, de alguma forma, chamar um selecionador externo em vez de usar seu selecionador, e o dito selecionador externo pode ser intercambiável.

Nessa situação, você deseja ativar esse recurso sem envolver o Flatpak e existe uma opção oculta para ele (embora apenas para desenvolvedores - e, como já mencionei, funciona apenas para alguns aplicativos).

Aviso adicional: Essa é uma opção muito ampla e pode fazer com que muitas outras operações passem pelo 'portal' - como configurações da área de trabalho, configuração de proxy e assim por diante. Sua milhagem pode variar. Garantia anulada se o selo estiver quebrado.

  1. Você precisará instalar dois componentes:

    • O principal serviço de portal (broker), chamado xdg-desktop-portal .

    • A implementação do portal do KDE (interface do usuário), chamada xdg-desktop-portal-kde .

  2. Como você está usando o KDE, basta instalar esses pacotes e eles serão iniciados automaticamente quando necessário. Pule o resto desta parte e pule direto para o passo 3.

    Enquanto isso, aqueles que tentam fazer isso dentro do GNOME precisarão iniciar tudo manualmente e adicionar uma variável de ambiente forçando ambos os componentes a usar os comportamentos do KDE. Primeiro inicie a implementação específica do KDE, dizendo para desabilitar a coisa usual de "masquerade como GTK" do Qt:

    XDG_CURRENT_DESKTOP="KDE" /usr/lib/xdg-desktop-portal-kde &
    

    Em seguida, inicie o broker do portal, usando a mesma variável de ambiente para escolher a implementação do portal KDE iniciada anteriormente e não a do GNOME:

    XDG_CURRENT_DESKTOP="KDE" /usr/lib/xdg-desktop-portal &
    

    Alternativamente, para fazer tudo automagicamente iniciar via D-Bus, você pode querer passar essas variáveis ​​de ambiente para dbus-daemon e systemd em vez disso:

    dbus-update-activation-environment --systemd XDG_CURRENT_DESKTOP="KDE"
    systemctl --user stop xdg-desktop-portal{,-gtk}
    pkill -f xdg-desktop-portal
    
  3. Finalmente, inicie seu aplicativo baseado no GTK3, dizendo para usar portais mesmo fora do ambiente Flatpak:

    GTK_USE_PORTAL="1" zenity --file-selection
    GTK_USE_PORTAL="1" firefox
    

Dos meus testes, isso funciona com o Zenity, o Firefox, o GEdit, mas não funciona com o Mousepad ou o Evince. (Eu não testei o Chromium, mas ele já tem seus próprios selecionadores de arquivos que podem ser trocados.)


Você pode esclarecer como fazer o passo 3? Devo escrever isso em um arquivo, no terminal ou em outra coisa? Como posso trocar o seletor de arquivos do Chromium?
HanMah

Para quem lê: eu descobri como fazer isso. 1) Clique com o botão direito no aplicativo 2) Clique no aplicativo de edição 3) Vá para Aplicativos 4) Na caixa de comando, prefixar "GTK_USE_PORTAL = 1"
HanMah
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.