* feat(niri): Add drag-and-drop workspace reordering
Add interactive drag-and-drop reordering for Niri workspace indicators
with smooth animations matching the system tray behavior.
- Add moveWorkspaceToIndex() to NiriService for workspace reordering
- Implement drag detection with 5px threshold
- Add shift animation for items between source and target
- Clamp drag offset to stay within workspace row bounds
- Reset drag state when workspace list changes during drag
- Visual feedback: opacity change, border highlight on drag/drop target
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(settings): Add workspace drag reorder toggle
Add workspaceDragReorder setting to enable/disable workspace
drag-and-drop reordering. Enabled by default, only visible on Niri.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* greetd: add lockScreenShowProfileImage option
* lockscreen/greetd: for non 24 hour formats, add 0 in front of single digit hours to ensure that everything is always centered properly - previously, it would only appear centered if on a double digit hour. also add getEffectiveTimeFormat function to GreetdSettings.
* clock: made pad 12 hour formats optional
---------
Co-authored-by: bbedward <bbedward@gmail.com>
* dankbar: show niri workspace names
Keep labels aligned with niri indices and live renames.
* dankbar: prefix named workspaces with index
Use workspace index toggle to show index: name labels.
* workspaces: change size conditions for workspace names
---------
Co-authored-by: bbedward <bbedward@gmail.com>
* niri: Handle new Cast events
* bar: Add screen sharing indicator
Configurable like other icons; on by default.
* lockscreen: Add screen sharing indicator
* feat: add configurable app ID substitutions setting
* feat: add live icon updates when substitutions change
* fix: cursor not showing on headerActions in non-collapsible cards
* fix: address PR review feedback
- add tags for search index
- remove hardcoded height from text fields
Steam Proton games use window class steam_app_XXXXX. Steam installs
icons as steam_icon_XXXXX. This maps between them so actual game
icons display instead of generic controller fallback.