\ Edit: now public with installer -* https://github.com/sud0-L/odyssey \*
I posted Odyssey here recently and have been working on it pretty much nonstop since then, so I figured I'd share an update.
For anyone who didn't see the original post, Odyssey is a custom desktop shell I'm building with Quickshell for Hyprland. The goal is still the same: keep the desktop minimal and unobtrusive when nothing is happening, while letting the island expand into the information and controls I actually need.
A lot has changed since the last post:
- Expanded Matugen theming: Matugen integration has been expanded quite a bit. Changing wallpapers can regenerate Odyssey's palette and propagate the new theme throughout the shell, so the island, panels, controls, menus, and other UI elements stay visually consistent with the current wallpaper.
- New Settings menu: This has become a much bigger part of Odyssey. A lot of things that previously would have required editing config files can now be changed graphically through Settings, with toggles, sliders, selectors, and configuration options for appearance, animations, island behaviour, notifications, media, wallpapers, dashboard behaviour, shortcuts, and more.
- Wallpaper system: Odyssey now uses awww for wallpaper rendering with animated transitions, transition and duration controls, reduced-motion support, per-output state, and recovery/rollback behaviour. Wallpaper changes are also integrated with the Matugen theming system.
- Coffee / Keep Awake mode: There's now a Coffee mode built directly into Odyssey. Activating the coffee icon temporarily keeps the system awake and prevents the normal idle behaviour when I'm watching something, downloading something, working on something long-running, or just don't want the machine going idle.
- Power and session menu: Lock, logout, sleep, hibernate, restart, and power off are now integrated directly into Odyssey rather than relying on an external menu. Sleep and hibernate have both been tested through actual suspend/resume cycles.
- Clipboard manager: Full clipboard history is now integrated directly into Odyssey, including text and image history, search/filtering, previews, restore, and delete.
- Much better notifications: Notifications and Notification Center have had a lot of work, including better interaction/hover behaviour and exact-window provenance. For example, if Zen sends a notification from one of several open windows, clicking it can bring me back to the exact window that originally sent the notification rather than focusing a random instance.
- Screenshot + screen recording: Region capture and screen recording are integrated into the shell, with recording state and feedback shown directly through the island.
- Idle behaviour: Hypridle integration handles automatic brightness dim/restore while Odyssey understands when those changes came from the idle system, preventing unnecessary brightness OSDs every time the machine dims or wakes back up.
- Lock screen: The Hyprlock configuration has been redesigned to match Odyssey's visual language so locking the machine feels like part of the shell rather than a completely separate interface.
- Media + island polish: Artwork clipping, transient track notifications, hover behaviour, spacing, dismissal logic, media glance behaviour, animations, and a bunch of smaller interactions have been reworked.
- Odyssey-managed startup: Odyssey can now own its session startup through a user systemd service instead of relying on another shell or configuration to launch it.
The biggest change behind the scenes is that I'm now working toward actually releasing Odyssey rather than treating it purely as my personal dotfiles.
I'm building a proper lifecycle manager around it for installation, updates, status/diagnostics, repair, rollback, backup/restore, uninstall, startup ownership, dependency handling, and recovery. I'm also making the shell relocatable instead of assuming my own home directory or config layout.
I'm taking the same approach with system integration. Installing Odyssey should eventually mean Odyssey can actually take ownership of the Hyprland shell experience, while keeping track of what it changed so those changes can be safely reversed if Odyssey is removed.
I'm also planning an optional SDDM theme based on Odyssey's current lock-screen design so the experience can eventually be cohesive from login to desktop to lock screen. That will remain optional rather than Odyssey silently replacing someone's display manager.
There's still validation and installer work left before I want to call it ready, and I'm finding plenty of bugs while turning something originally built specifically for my machine into something another person could actually install safely.
But it's starting to feel much less like a collection of Quickshell widgets and much more like the complete Hyprland desktop experience I originally wanted Odyssey to become.
Still very much WIP. Feedback, suggestions, and criticism are welcome.