No description
  • Rust 77.8%
  • Nix 22.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-21 23:56:58 -04:00
.forgejo/workflows chore: Add release action 2026-08-06 21:16:11 -04:00
.vscode chore: Initial commit 2026-08-06 16:13:49 -04:00
src chore: Actual error handling 2026-08-06 21:08:34 -04:00
.envrc chore: Initial commit 2026-08-06 16:13:49 -04:00
.gitignore chore: Initial commit 2026-08-06 16:13:49 -04:00
cargo-hot.nix feat: Initial version 2026-08-06 19:46:58 -04:00
Cargo.lock chore: Actual error handling 2026-08-06 21:08:34 -04:00
Cargo.toml chore: Actual error handling 2026-08-06 21:08:34 -04:00
devenv.lock chore: Initial commit 2026-08-06 16:13:49 -04:00
devenv.nix feat: Initial version 2026-08-06 19:46:58 -04:00
devenv.yaml chore: Initial commit 2026-08-06 16:13:49 -04:00
image.png chore: Add screenshot 2026-08-06 21:39:13 -04:00
README.md Update README 2026-08-21 23:56:58 -04:00
TODO.md feat: Add cancel button 2026-08-06 20:52:47 -04:00

hypr-share-picker

Replaces the default hyprland-share-picker binary to provide a nicer UI when selecting screenshare sources.

screenshot

Installation (Nix)

Packaged in thegrind-nixpkgs.

1. Add the input

# flake.nix
{
  inputs = {
    thegrind-nixpkgs.url = "git+https://gitgud.boo/thegrind/nixpkgs";
  };
}

Make the input available to your modules (specialArgs/extraSpecialArgs on your nixosSystem / homeManagerConfiguration, or _module.args), then pull the overlay in wherever you build pkgs:

nixpkgs.overlays = [ inputs.thegrind-nixpkgs.overlays.default ];

2. Set up

{ pkgs, lib, ... }:

let
  picker = pkgs.thegrind.hypr-share-picker;
in
{
  home.packages = [ picker ];

  # XDPH probes for a binary named `hyprland-share-picker` by default, so it has
  # to be told about this one explicitly.
  xdg.configFile."hypr/xdph.conf".text = ''
    screencopy {
      custom_picker_binary = ${lib.getExe picker}
    }
  '';
}

Import it from your home-manager config:

imports = [ ./hypr-share-picker.nix ];

Then restart the portal:

systemctl --user restart xdg-desktop-portal-hyprland xdg-desktop-portal
NixOS (system-wide) instead of home-manager
{ pkgs, lib, ... }:

let
  picker = pkgs.thegrind.hypr-share-picker;
in
{
  environment.systemPackages = [ picker ];

  environment.etc."xdg/hypr/xdph.conf".text = ''
    screencopy {
      custom_picker_binary = ${lib.getExe picker}
    }
  '';
}

Note a user's ~/.config/hypr/xdph.conf takes precedence over /etc/xdg.