เหตุใดปุ่ม Gtk Filechooser จึงไม่เลือกไฟล์ใด ๆ ใน buildpak ของฉัน

ฉันมีปุ่มตัวเลือกไฟล์ที่ทำให้เกิดการเปลี่ยนแปลงในแถบหัวเรื่องทุกครั้งที่เลือกไฟล์ และดูเหมือนว่าจะทำงานได้ดีในโครงสร้างที่ไม่ใช่ 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)

อย่างไรก็ตาม ใน builds 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)


โดยทั่วไป หากคุณจัดส่ง flatpak คุณต้องหลีกเลี่ยง --filesystem=host และใช้ GtkFileChooserNative แทน คลาสนี้รองรับพอร์ทัล อนุญาตให้ผู้ใช้เลือกไฟล์ที่แอปพลิเคชันไม่มีสิทธิ์ในการเข้าถึงด้วยตัวเอง

นี่เป็นแนวทางที่ดีกว่าการให้แอปพลิเคชันเข้าถึงระบบไฟล์เต็มรูปแบบ GtkFileChooserNative จะยังคงทำงานในแอปพลิเคชันที่ไม่ใช่ flatpak และคุณไม่ควรสังเกตเห็นความแตกต่างใดๆ เว้นแต่ว่าคุณกำลังทำอะไรที่แปลกใหม่

สำหรับคำถามของคุณว่าทำไม GtkFileChooser ถึงใช้งานไม่ได้กับ --filesystem=host ฉันไม่รู้

person andy.holmes    schedule 05.07.2020