InstallWithPortalΒΆ

import desktop_entry_lib
import sys


def main() -> None:
    entry = desktop_entry_lib.DesktopEntry()
    entry.Name.default_text = "My Name"
    entry.desktop_id = "com.example.App.Entry"
    entry.Exec = "firefox"

    path = input("Please enter the path to an icon file:")

    if path == "":
        print("You haven't entered a path", file=sys.stderr)
        sys.exit(1)

    try:
        with open(path, "rb") as f:
            icon = f.read()
    except FileNotFoundError:
        print(f"{path} was not found", file=sys.stderr)
        sys.exit(1)

    try:
        response = entry.install_with_portal("", icon)
    except ModuleNotFoundError:
        print('jeepney is not installed. Run "pip install jeepney"', file=sys.stderr)
        sys.exit(1)
    except desktop_entry_lib.InstallWithPortalsNotAvailable:
        print("The DynamicLauncher portal is not available", file=sys.stderr)
        sys.exit(1)
    except desktop_entry_lib.InstallWithPortalError as ex:
        print(f"An error occurred: {ex.message}", file=sys.stderr)
        sys.exit(1)
    except desktop_entry_lib.InstallWithPortalsCanceled:
        print("The user canceled the installation", file=sys.stderr)
        sys.exit(1)

    print(f"Your desktop entry was successfully installed with the name {response['Name']}.")


if __name__ == "__main__":
    main()

View this example on Codeberg