Add custom walker-based share picker with monitor descriptions
Problem
The current Qt-based hyprland-share-picker has several issues that don't align with Omarchy's design:
- Generic labels: Shows "Screen 0", "Screen 1", "Screen 2" instead of actual monitor names, making it hard to identify which monitor to share on multi-monitor setups
- Takes half the screen: The Qt dialog is unnecessarily large and intrusive
- Doesn't support themes: Uses Qt's default styling which looks out of place in Omarchy
- No keyboard navigation: In a keyboard-centric system like Omarchy, you can't search or quickly select with the keyboard
Solution
This PR adds a custom walker-based share picker that:
- Shows friendly monitor names from Hyprland descriptions
- Compact and themeable - Uses walker's dmenu mode, integrates with Omarchy themes
- Fully keyboard-driven - Search and select with keyboard, matching Omarchy's workflow
- Supports all features - Screen/Window/Region selection with restore token support
Before (Qt picker)
After (Walker picker)
Implementation
- Script:
bin/omarchy-hyprland-share-picker- Custom picker using walker - Config:
default/hypr/xdph.conf- Configures xdg-desktop-portal-hyprland - Migration: Copies config to
~/.config/hypr/xdph.conf
Benefits
- No extra dependencies - Uses
hyprctl - Omarchy consistency - Matches walker-based design language
- Better UX - Searchable, keyboard-driven, clear monitor identification
Context
PR #144 proposed a similar wofi-based picker but was closed
The Qt picker comes from upstream xdg-desktop-portal-hyprland
This looks gorgeous! And just what I worked on today. I had the issue, that the screen picker always was showing up twice, whenever I shared the screen. I could work around by setting the Allow a restore token by default, which did the trick. I documented it here: https://www.ssp.sh/brain/screen-sharing-on-wayland-hyprland-with-chrome/
But my next stance was to try to change the eDP and DP-1, as I never know which one is my monitor. I couldn't figure it out. But This looks like a straight forward solution, and looks gorgeous. And everything with the keyboard. Thanks for sharing! If that does not have any side effects, so I couldn't share anymore in certain apps, I'll definitely use this.
In fact, it does fire several times when I tested it with Google Meet. I believe the reason is that it requests access the first time to render a preview in the screen sharing UI itself, and then the second time for the actual call. This is my theory because in Discord and OBS Studio, I did not have this problem. But I would lie if I said that I dug deep into this issue.
I've created this package https://aur.archlinux.org/packages/xdph-dmenu-sharepicker a while back. it lets you use any dmenu not just walker.
Nice ! I was thinking thinking about doing similar PR :)
It broke after update to Omarchy 3.1.1 so I need to fix it.
Opened a PR to make it work with the latest version of Omarchy here 👍️ https://github.com/hoblin/omarchy/pull/1
Thanks @t4t5 Merged and marked as ready for review.
I don't really like the multi-step approach. Have you tested the script I shared above? Isn't that... less cumbersome?
Have you tested the script I shared above?
No, I didn't. Sorry, a little busy. My primary concern is additional dependencies that make it less stable. In the way it is implemented, the only dependencies we use are those that already exist in Omarchy.
Have you tested the script I shared above?
No, I didn't. Sorry, a little busy. My primary concern is additional dependencies that make it less stable. In the way it is implemented, the only dependencies we use are those that already exist in Omarchy.
it's not a dependency. it's a dmenu script. literally just bash.
I wished to have this one in! The default hyprland-share-picker really kills the vibe.
It's like if grandma was dressed in a trash bag and showing up in a fashion show...