Skip to content

Conversation

@trigg
Copy link
Owner

@trigg trigg commented Sep 4, 2025

Road to v1.0.0

This PR represents a complete overhaul of this project. The project had languished in GTK3 for quite long enough and needed to be updated. The old Cairo-drawing code path was a tangle.

This update WILL break users experience, but the plan is to break the least number of features and the least number of places it can run.

Requirements before merging

MUST HAVE

  • Fully working wlroots layer shell implementation
  • Fully working X11 with compositor implementation
    • Window position & Layer have been removed from GTK so must be done via XLib
  • X11 without compositor MUST NOT leave the desktop unusable. Quit if detected
  • Fully working X11/Gamescope overlay using atom
    • Gamescope codepath needs a mechanism to place each overlay into a gtk grid in a parent overlay
  • All removed config options removed and hidden from Settings Window
  • Voice overlay drawn & laid out using Gtk Widgets
  • Text overlay drawn & laid out using Gtk Widgets
  • Notification overlay drawn & laid out using Gtk Widgets
  • Settings Window re-organised
    • Try to organise sections in each window
    • Hide sections when disabled

Preferable

  • Working X11 without compositor. XShape used to cut out the bounding box of the shown elements. Ugly black boxes but should be managable

Would-Be-Nice

  • Working X11 without compositor with a pixel-by-pixel XShape mask (similar to current stable)
  • System tray / App Indicator with menu
    • Probably need to write a dbus impl ourselves...
  • Option to rotate usernames
  • Option to limit username by size rather than character count

Changes so far

  • Ripped out entire Cairo code paths
  • Rendering is done via Gtk Widgets. No custom render. Use CSS and layout management
  • Removed features from voice overlay
    • Right align split into two options
    • Removed text baseline adjustment
    • Removed user overflow options
  • Removed features from notification overlay
    • Reverse order
  • Removed features from text overlay
    • Custom emojis in text
    • Attached images
  • Removed ALL floating window positions
  • Reorganised config reading into each overlay
  • Monitor selection updated to GTK4
  • X11 support re-created using XLib & EWMH where needed
  • Connector changes
    • Moving away from entire-state data blobs where possible
    • Send initial state where appropriate, and changes as they happen
    • Use more timeouts where possible in place of iteration counting

To fix or remove

    • settings: systemtray & menu

- Ripped out entire Cairo code paths
- Removed features from voice overlay
- - Circle avatars removed
- - Right align split into two options
- - Removed text baseline adjustment
- - Floating window positions
- - Removed user overflow options
- Reorganised config reading into each overlay
- Broken and not yet fixed:
- - voice: Only speaking & speaking grace
- - voice: Hide on mouseover
- - text: All of it
- - notification: All of it
- - settings: monitor selection
- - settings: systemtray & menu
- - x11: all support
@trigg trigg added this to the 1.0 Complete Overhaul milestone Sep 5, 2025
- Reach out to XLib to set window position & above-hint for X11 desktops
- Use PIL after all, to allow Webp and potentially other image formats
- Brought Notifications back to working state
- Implemented text align for notifications
- Fixed voice overlay blanking when leaving a channel
- Stopped connector caching text chat, just pass on messages as they happen
- reimplemented text overlay
- text chat hides when empty
- Added stub for update message
- implemented recolour of loaded pixbuf
- made svg files for mute and deaf
- Fixed section and config reset crash
- reimplemented circle avatars after all
- Improved talking border clarity at larger size
- We could probably let user choose mute & deaf pix. But not happening right now
-
- make data handlers into a gtk box, not window itself
- non-compositor code path should quit for now until we make any kind of working XShape impl
- Fix channel rpc by keeping the reference...
- - Added 'No discord present'
- - Added 'Discord version invalid'
- - Flattened all intermediary states to 'Voice chat joining'
- - Flattened both connected to one state
- Version invalid ALWAYS shows on voice overlay
- 'No discord' is on by default
- Retry connection starts at 5 seconds and scales up another 5 seconds every consecutive fail
- Strip voice cache and text cache from connector
- Unset cached 'authed' on reconnect
- Detect invalid discord versions
- Moved much more logic for voice overlay into UserBox
- Request new user avatar image only when details actually changed
- Fixed only_talking and grace
- Fixed X11 with compositor
- Fixed Gamescope compat
- XWayland needs testing
-  Fixed edgecase crashes in notifications
-  Set notification and text to hide at start, before content
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants