#!/usr/bin/env python3 """Initialize gnome-keyring with empty password for autologin systems. This script creates the 'login' keyring collection with an empty password, allowing gnome-keyring to auto-unlock without PAM password entry. Only runs once - exits immediately if login keyring already exists. """ import os import sys # Check if login keyring already exists keyring_dir = os.path.expanduser("~/.local/share/keyrings") login_keyring = os.path.join(keyring_dir, "login.keyring") if os.path.exists(login_keyring): sys.exit(0) try: import secretstorage except ImportError: print("python-secretstorage not installed", file=sys.stderr) sys.exit(1) try: connection = secretstorage.dbus_init() # Check if login collection exists via D-Bus collections = list(secretstorage.get_all_collections(connection)) for collection in collections: if collection.get_label() == "login" or collection.get_label() == "Login": # Already exists sys.exit(0) # Create login collection with empty password secretstorage.create_collection(connection, "Login", password=b"") # Set as default os.makedirs(keyring_dir, exist_ok=True) with open(os.path.join(keyring_dir, "default"), "w") as f: f.write("login") except Exception as e: print(f"Failed to initialize keyring: {e}", file=sys.stderr) sys.exit(1)