Skip to content

Conversation

hoblin
Copy link

@hoblin hoblin commented Oct 7, 2025

Problem

The current Qt-based hyprland-share-picker has several issues that don't align with Omarchy's design:

  1. 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
  2. Takes half the screen: The Qt dialog is unnecessarily large and intrusive
  3. Doesn't support themes: Uses Qt's default styling which looks out of place in Omarchy
  4. 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)

screenshot-2025-10-07_20-20-41

After (Walker picker)

screenshot-2025-10-07_20-14-30 screenshot-2025-10-07_20-15-33 screenshot-2025-10-07_20-16-12

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

  1. No extra dependencies - Uses hyprctl
  2. Omarchy consistency - Matches walker-based design language
  3. 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

@sspaeti
Copy link

sspaeti commented Oct 7, 2025

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.

@hoblin
Copy link
Author

hoblin commented Oct 7, 2025

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.

@abenz1267
Copy link
Contributor

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.

@vaqMAD
Copy link

vaqMAD commented Oct 8, 2025

Nice ! I was thinking thinking about doing similar PR :)

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.

4 participants