#!/usr/bin/env python3 """Native messaging host bridging Chrome to KGet's D-Bus service.""" import json import os import struct import subprocess import sys def default_download_dir(): home = os.path.expanduser("~") try: result = subprocess.run( ["xdg-user-dir", "DOWNLOAD"], capture_output=True, text=True, timeout=5 ) downloads = result.stdout.strip() except (FileNotFoundError, subprocess.TimeoutExpired): downloads = "" # xdg-user-dir falls back to bare $HOME (not $HOME/Downloads) when # there's no ~/.config/user-dirs.dirs at all -- treat that as not found. if not downloads or downloads.rstrip("/") == home.rstrip("/"): return os.path.join(home, "Downloads") return downloads def read_message(): raw_length = sys.stdin.buffer.read(4) if len(raw_length) < 4: return None (length,) = struct.unpack("