Skip to content

feat: add desktop actions (jump lists) and pinned folder stacks - #3

Open
NothingManTR wants to merge 1 commit into
thepathless:mainfrom
NothingManTR:feat/jump-lists-and-features
Open

feat: add desktop actions (jump lists) and pinned folder stacks#3
NothingManTR wants to merge 1 commit into
thepathless:mainfrom
NothingManTR:feat/jump-lists-and-features

Conversation

@NothingManTR

Copy link
Copy Markdown
Contributor

Summary

This PR introduces two major productivity features to Omadock:

1. ⚡ FreeDesktop Desktop Actions / Jump Lists

  • Parses .desktop [Desktop Action ...] sections across standard XDG application paths (~/.local/share/applications, /usr/share/applications, flatpak exports, etc.).
  • Displays quick actions directly in the app right-click context menu (e.g., New Incognito Window in Chromium/Brave/Firefox, New Empty Window in VS Code, New Chat in messaging apps).
  • Introduces a dedicated MenuDivider component for clean 1px section separators.

2. 🗂️ Pinned Folder Stacks

  • Enables pinning folders (~/Downloads, ~/Documents, ~/Projects, or any custom directory) to the dock.
  • Clicking a pinned folder displays a sleek, minimalist single-column popover matching standard Omadock context menu styling.
  • Displays recent files with their respective file icons, filenames, and file sizes.
  • Single-click to open files immediately via xdg-open, plus an "Open in File Manager" action at the bottom.
  • Safe middle text truncation (Text.ElideMiddle) ensuring long filenames never overflow the card bounds.
  • Dismisses automatically whenever the dock autohides.
  • Native GTK folder chooser integrated into Omadock Settings (Folders & Stacks ›).

💬 Question / Advice for Maintainers: TUI & Terminal App Window Identity

During development, we explored whether terminal/TUI applications (e.g., battop, btop, htop, nvim, yazi) launched inside terminal emulators (foot, alacritty, kitty) could be dynamically recognized as distinct dock items with their own icon rather than grouping under the generic terminal emulator.

Because standard terminal windows share the emulator's app_id ("foot"), dynamic child-process tree inspection via /proc in background timers introduced race conditions and polling overhead.

If maintainers or community members have ideas on the cleanest way to handle TUI app window identification on Hyprland/Wayland (e.g., via xdg-terminal-exec --app-id=... vs compositor metadata), we would love to hear your advice and collaborate on it for a future update!

- Desktop Actions / Jump Lists:
  * Parse FreeDesktop .desktop [Desktop Action] sections across all XDG application directories
  * Expose quick actions (e.g. Incognito, New Window, New Chat, Projects) in app context menus
  * Add MenuDivider component for clean 1px section separators

- Pinned Folder Stacks:
  * Allow pinning custom folders and standard XDG user dirs (Downloads, Documents, etc.) to the dock
  * Minimalist, overflow-safe single-column popover matching standard Omadock context menu styling
  * Quick 1-click file launching with xdg-open and open in file manager action
  * Native GTK folder selection integration in Omadock Settings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant