screen shot

This commit is contained in:
2026-08-03 22:29:39 +09:00
parent a7c6a1507c
commit e4eb1802d7
2 changed files with 57 additions and 0 deletions
+7
View File
@@ -1,5 +1,7 @@
{ lib, pkgs, ... }: { lib, pkgs, ... }:
let let
screenshot = import ./screenshot.nix { inherit pkgs; };
systemctl = lib.getExe' pkgs.systemd "systemctl"; systemctl = lib.getExe' pkgs.systemd "systemctl";
keybind = key: actionAttrs: { keybind = key: actionAttrs: {
@@ -38,6 +40,8 @@ let
}; };
in in
{ {
home.packages = [ screenshot ];
wayland.windowManager.labwc = { wayland.windowManager.labwc = {
enable = true; enable = true;
# NixOS owns the package so Home Manager only generates the user config. # NixOS owns the package so Home Manager only generates the user config.
@@ -75,6 +79,9 @@ in
(snapToEdge "W-C-Up" "up") (snapToEdge "W-C-Up" "up")
(snapToEdge "W-C-Down" "down") (snapToEdge "W-C-Down" "down")
(confirmAction "W-S-e" "Exit labwc?" "Exit") (confirmAction "W-S-e" "Exit labwc?" "Exit")
(execute "Print" "labwc-screenshot region")
(execute "C-Print" "labwc-screenshot output")
(execute "A-Print" "labwc-screenshot all")
# spawn applications (sync with niri modules/applications/niri/home.nix) # spawn applications (sync with niri modules/applications/niri/home.nix)
(execute "W-t" "ghostty") (execute "W-t" "ghostty")
+50
View File
@@ -0,0 +1,50 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "labwc-screenshot";
runtimeInputs = with pkgs; [
coreutils
grim
slurp
wl-clipboard
xdg-user-dirs
];
text = ''
mode="''${1:-region}"
pictures_dir="$(xdg-user-dir PICTURES)"
if [[ -z "$pictures_dir" ]]; then
pictures_dir="$HOME/Pictures"
fi
output_dir="$pictures_dir/Screenshots"
output_file="$output_dir/Screenshot from $(date '+%Y-%m-%d %H-%M-%S').png"
mkdir -p "$output_dir"
case "$mode" in
region)
geometry="$(slurp)" || exit 0
grim -g "$geometry" "$output_file"
;;
output)
geometry="$(slurp -o)" || exit 0
grim -g "$geometry" "$output_file"
;;
all)
grim "$output_file"
;;
*)
echo "Unknown screenshot mode: $mode" >&2
exit 2
;;
esac
wl-copy --type image/png < "$output_file"
'';
}