Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Requesting to run at startup

Offen
#159 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
42/100
Issue-Typ
Dokumentation
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet

Rechercherichtung

Beginne mit der Durchsicht der Flatpak Background portal API reference und des verlinkten elementary Calendar pull request. Untersuche anschließend die vorhandene App-Entwicklungsdokumentation dieses Repositorys, um die passende Stelle zu finden. Dokumentiere das Anfordern der Ausführung beim Start über D-Bus und libportal und stelle klar, ob eine Granite-Methode im Umfang liegt; abgeschlossen ist die Aufgabe, wenn der unterstützte Ansatz und die relevanten Optionen für Entwickler von Drittanbieter-Apps erläutert sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Needs Design
Problem

We don't currently document how apps should request to run at startup

Proposal

We should document using the background portal to request running at startup either manually through dbus, using libportal, or possibly adding a granite method for this

Prior Art (Optional)

This commit in Calendar: https://github.com/elementary/calendar/pull/681/files#diff-f4e5d48d751c670a8575715da1cb0a0976532427a8b6143c7fdede415a33ba6cR176

Particularly

        private void ask_for_background () {
             try {
                 var portal = Portal.Background.get ();
                 string[] cmd = { "io.elementary.calendar", "--background" };

                 window.export.begin ((obj, res) => {
                     var options = new HashTable<string, Variant> (str_hash, str_equal);
                     options["handle_token"] = Portal.generate_token ();
                     options["reason"] = _("Calendar wants to initialize with the session");
                     options["commandline"] = cmd;
                     options["dbus-activatable"] = false;
                     options["autostart"] = true;

                     // TODO: handle response
                     try {
                         portal.request_background (window.export.end (res), options);
                     } catch (Error e) {
                         warning ("couldnt ask for background access: %s", e.message);
                     }
                 });
             } catch (Error e) {
                 warning ("cloudnt connect to portal: %s", e.message);
             }
         }

and the portal class:

namespace Portal {
     const string DBUS_DESKTOP_PATH = "/org/freedesktop/portal/desktop";
     const string DBUS_DESKTOP_NAME = "org.freedesktop.portal.Desktop";
     Background? background = null;

     public static string generate_token () {
         return "%s_%i".printf (
             GLib.Application.get_default ().application_id.replace (".", "_"),
             Random.int_range (0, int32.MAX)
         );
     }

     [DBus (name = "org.freedesktop.portal.Background")]
     interface Background : Object {
         public abstract uint version { get; }

         public static Background @get () throws IOError, DBusError {
             if (background == null) {
                 var connection = GLib.Application.get_default ().get_dbus_connection ();
                 background = connection.get_proxy_sync<Background> (DBUS_DESKTOP_NAME, DBUS_DESKTOP_PATH);
             }

             return background;
         }

         public abstract ObjectPath request_background (string window_handle, HashTable<string, Variant> options) throws IOError, DBusError;
     }
 }
Vorherrschende Sprache
Keine Sprachdaten
Sterne
88
Forks
30
Ø Merge
1 T. 9 Std.
Gemergte PRs (30 T.)
1

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus elementary/docs

Alle Issues in elementary/docs

Ähnliche Issues

Weitere Issues zu Desktop Dev

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.