# TeleportFling TODO Backlog of deferred / planned work, tracked outside of milestone milestones. ## Planned - [x] **Monitor picker in the GUI** — monitors are enumerated via hyprctl (Hyprland) and shown as a dropdown in the settings window; the selected monitor persists as `stream_index`. Falls back to a single indexed option on other compositors. - [x] **Surface runtime errors in the GUI** — the engine records the most recent capture/encode/packet/audio error and the GUI shows it in the status label and tray tooltip (highlighted as a danger). - [x] **`--config` flag** — the CLI and GUI accept a custom config path (`teleportfling --config /path/config.json`); explicit CLI flags override file values. Used by the systemd daemon unit in contrib/. - [x] **Run as a daemon** — `contrib/install-daemon.sh` installs a per-user systemd unit (`contrib/teleportfling.service`) that starts the headless CLI with its own config at `~/.config/teleportfling/daemon.json`. ## Future / Ideas (not yet scoped) - [ ] **Live settings changes mid-stream** — `flinger.SetConfig` for FPS/quality without a restart. - [ ] **Bitrate / bandwidth tuning** — options beyond the balanced 1080p30 default. - [ ] **Screen capture scaling / downsampling** — capture a scaled region rather than the monitor's native resolution. - [ ] **Multi-monitor verification** — the GUI monitor picker enumerates via hyprctl; confirm behaviour on a real multi-monitor setup. - [ ] **Non-Hyprland monitor enumeration** — portal-based fallback so the picker works on GNOME/KDE etc. (currently falls back to a single indexed option). - [ ] **Packaging** — Nix flake package, AppImage, and `.deb` for Debian/Ubuntu (in progress: flake package, AppImage and .deb scripts added under packaging/; verify on a real Debian/Ubuntu machine).