Commits

v0.1.0
All users
Until Jan 16, 2026
January 2026
Su Mo Tu We Th Fr Sa
28 29 30 31 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7

Commits on January 14, 2026

  1. mfwolffe committed

Commits on January 13, 2026

  1. mfwolffe committed
  2. mfwolffe committed
  3. Fix i3 IPC FD leak with timeout-based stale client cleanup
    Clients that connect but never send messages or subscribe to events
    would accumulate indefinitely, eventually exhausting file descriptors.
    
    Add tracking for client creation time and last activity timestamp.
    Clients are now cleaned up if they have been idle for 60+ seconds
    without subscribing to any events or sending any messages.
    
    This approach is safer than treating UnexpectedEof as disconnect,
    which caused issues with polybar's connection handling.
    mfwolffe committed
  4. mfwolffe committed
  5. Add visual effects config infrastructure (disabled)
    - Add gradient border, animation, and shader config options
    - Add frame gradient rendering code (currently disabled)
    - Fix frame destruction to unmap before destroy
    - Gradient borders disabled due to lifecycle issues
    mfwolffe committed

Commits on January 12, 2026

  1. Add systemd session setup to gar-session.sh
    Enable proper systemd user service integration:
    - Import DISPLAY and XAUTHORITY to systemd user session
    - Update D-Bus activation environment
    - Start gar-session.target (binds to graphical-session.target)
    
    This allows user services like garbg.service to start reliably
    at login with access to the X11 display. The gar-session.target
    is needed because graphical-session.target has RefuseManualStart=yes.
    
    Pattern follows sway-systemd, i3-session, and ArchWiki systemd/User.
    mfwolffe committed
  2. mfwolffe committed
  3. Fix picom v12+ startup and improve cursor handling
    - Add --backend glx to picom commands (required for v12+, no default)
    - Add cursor_move (fleur) for floating window drag operations
    - Add clear_window_cursor() to prevent grab/window cursor conflicts
    - Pass appropriate cursor to grab_pointer() during drag/resize
    - Restore edge cursor after drag release
    - Add cursor_for_edge() helper for resize cursor selection
    mfwolffe committed
  4. Add floating window move/resize with mod+drag and edge hover
    - Support both Alt and Super mod keys for drag operations
    - Add resize cursors for all edges and corners
    - Change cursor on hover near floating window edges
    - Click and drag edges to resize without mod key
    - Keep button grabs on floating windows for edge detection
    mfwolffe committed
  5. Fix i3 IPC workspace list to only include active workspaces
    Only report workspaces that are visible or have windows to polybar,
    matching i3 behavior. Empty invisible workspaces are now filtered out.
    mfwolffe committed
  6. Add workspace_next and workspace_prev actions for cycling workspaces
    - Add WorkspaceNext/WorkspacePrev to Action enum
    - Cycle only through workspaces with windows (skip empty ones)
    - Add gar.workspace_next() and gar.workspace_prev() Lua bindings
    mfwolffe committed
  7. Filter duplicate UnmapNotify events from StructureNotify
    Only process UnmapNotify when event.event == root (SubstructureNotify).
    Ignore events sent directly to window (StructureNotify) to prevent
    double-processing which caused windows to be unmanaged incorrectly.
    mfwolffe committed
  8. Fix window unmap handling during workspace switches and moves
    Track intentional unmaps with ignore_unmap_count to prevent
    UnmapNotify handler from unmanaging windows we're just hiding.
    mfwolffe committed
  9. Fix focus tracking and cross-monitor moves for window operations
    - Set target workspace focus before switch_workspace in move_to_workspace
    - Add set_focus after swap and cross-monitor fallback in swap_direction
    - Call set_focus after move_to_monitor to update X11 focus
    mfwolffe committed
  10. Force cursor refresh on startup to clear DM artifacts
    Warp pointer in-place after setting root cursor to ensure X11
    redraws the cursor with our definition, clearing any stale cursor
    images from the display manager.
    mfwolffe committed
  11. Fix mouse click behavior: pass-through and no spurious warp
    - Move button grab/ungrab into set_focus() to ensure clicks reach apps
    - Don't warp pointer on _NET_ACTIVE_WINDOW (user is already interacting)
    mfwolffe committed
  12. Add bar_height config option to manually override struts
    Useful when dock/panel struts are incorrect (e.g., notch offset on Asahi).
    Set gar.set("bar_height", N) in config to reserve N pixels at top.
    mfwolffe committed
  13. mfwolffe committed
  14. mfwolffe committed
  15. mfwolffe committed
  16. mfwolffe committed
  17. mfwolffe committed