Почему кнопка Gtk Filechooser не выбирает ни один файл в моей сборке flatpak?

У меня есть кнопка выбора файла, которая вызывает изменение в строке заголовка всякий раз, когда с ней выбирается файл. И, кажется, он отлично работает в моей сборке без плоских пакетов.

import gtk.Application : Application;
import gtk.ApplicationWindow : ApplicationWindow;
import gio.Application : GioApp = Application;
import gtkc.gtktypes : GApplicationFlags, FileChooserAction;
import gtk.FileChooserButton : FileChooserButton;

const string AppID = `org.github.flatfcbtest`;

int main(string[] args)
{
    auto app = new App();
    return app.run(args);
}

public class App : Application
{
public:
    this(const string appID = AppID, const GApplicationFlags flags = GApplicationFlags.FLAGS_NONE)
    {
        super(appID, flags);

        addOnActivate(delegate void(GioApp _) {

            auto pw = new PrimaryWindow(this);
            pw.showAll();
        });
    }
}

class PrimaryWindow : ApplicationWindow
{
    this(Application app)
    {
        super(app);
        setSizeRequest(500, 300);

        auto fcb = new FileChooserButton(`Select file`, FileChooserAction.OPEN);
        fcb.addOnFileSet(delegate void (FileChooserButton _) {
            setTitle(`file set!`);
        });
        add(fcb);

    }
}

(справочник по GtkD)

Однако в моих сборках flatpak файл, выбранный с помощью кнопки выбора, ничего не выбирает, и он продолжает говорить (Нет). Однако моя строка заголовка изменяется соответствующим образом, поэтому я знаю, что сигнал был испущен кнопкой выбора файла.

Вот мой список разрешений flatpak:

finish-args:
  - --socket=fallback-x11
  - --share=ipc
  - --filesystem=host
  - --device=all
  - --socket=session-bus

Что вызывает это?


person Hossain Adnan    schedule 05.07.2020    source источник


Ответы (1)


Обычно, если вы отправляете плоский пакет, вы хотите избежать --filesystem=host и просто использовать GtkFileChooserNative вместо этого. Этот класс поддерживает порталы, позволяя пользователю выбирать файлы, к которым приложение не имеет разрешения на доступ само по себе.

Это гораздо лучший подход, чем предоставление приложению полного доступа к файловой системе. GtkFileChooserNative по-прежнему будет работать в приложении, отличном от flatpak, и вы не заметите никакой разницы, если только вы не делаете что-то необычное.

Что касается вашего вопроса о том, почему GtkFileChooser не работает с --filesystem=host, я не знаю.

person andy.holmes    schedule 05.07.2020