From 29c4815b881d6d742eaeff1d8101d9073b6116ef Mon Sep 17 00:00:00 2001 From: moons Date: Tue, 4 Aug 2026 14:59:21 +0900 Subject: [PATCH] screenshot --- modules/applications/labwc/home.nix | 10 ++-- modules/applications/labwc/meta.nix | 5 +- modules/applications/labwc/screenshot.nix | 50 ----------------- .../applications/niri/home/keybindings.nix | 1 + modules/applications/niri/home/nixos.nix | 13 +++++ modules/applications/niri/meta.nix | 5 +- modules/applications/screenshot/home.nix | 53 +++++++++++++++++++ modules/applications/screenshot/meta.nix | 3 ++ modules/profiles/interface/labwc/nixos.nix | 2 - modules/profiles/interface/niri/nixos.nix | 2 - 10 files changed, 81 insertions(+), 63 deletions(-) delete mode 100644 modules/applications/labwc/screenshot.nix create mode 100644 modules/applications/screenshot/home.nix create mode 100644 modules/applications/screenshot/meta.nix diff --git a/modules/applications/labwc/home.nix b/modules/applications/labwc/home.nix index 0bb983a..4fc5ba0 100644 --- a/modules/applications/labwc/home.nix +++ b/modules/applications/labwc/home.nix @@ -1,7 +1,5 @@ { lib, pkgs, ... }: let - screenshot = import ./screenshot.nix { inherit pkgs; }; - systemctl = lib.getExe' pkgs.systemd "systemctl"; keybind = key: actionAttrs: { @@ -62,8 +60,6 @@ let }; in { - home.packages = [ screenshot ]; - wayland.windowManager.labwc = { enable = true; # NixOS owns the package so Home Manager only generates the user config. @@ -117,9 +113,9 @@ in (snapToEdge "W-C-Up" "up") (snapToEdge "W-C-Down" "down") (confirmAction "W-S-e" "Exit labwc?" "Exit") - (execute "Print" "labwc-screenshot region") - (execute "C-Print" "labwc-screenshot output") - (execute "A-Print" "labwc-screenshot all") + (execute "Print" "screenshot region") + (execute "C-Print" "screenshot output") + (execute "A-Print" "screenshot all") # spawn applications (sync with niri modules/applications/niri/home.nix) (execute "W-t" "ghostty") diff --git a/modules/applications/labwc/meta.nix b/modules/applications/labwc/meta.nix index d94ccce..b312e24 100644 --- a/modules/applications/labwc/meta.nix +++ b/modules/applications/labwc/meta.nix @@ -1,5 +1,8 @@ { description = "labwc Wayland stacking compositor"; - includes = [ "systems.wayland" ]; + includes = [ + "systems.wayland" + "applications.screenshot" + ]; } diff --git a/modules/applications/labwc/screenshot.nix b/modules/applications/labwc/screenshot.nix deleted file mode 100644 index a463759..0000000 --- a/modules/applications/labwc/screenshot.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ 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" - ''; -} diff --git a/modules/applications/niri/home/keybindings.nix b/modules/applications/niri/home/keybindings.nix index 8f3ceb7..9c6331a 100644 --- a/modules/applications/niri/home/keybindings.nix +++ b/modules/applications/niri/home/keybindings.nix @@ -1,3 +1,4 @@ +# niri のデフォルトキーバインド。編集しないこと。 { "Mod+Shift+Slash".action.show-hotkey-overlay = { }; diff --git a/modules/applications/niri/home/nixos.nix b/modules/applications/niri/home/nixos.nix index b0da7c1..2f787f6 100644 --- a/modules/applications/niri/home/nixos.nix +++ b/modules/applications/niri/home/nixos.nix @@ -41,6 +41,19 @@ in hotkey-overlay.title = "Move Window to Monitor Down"; }; + "Print".action.spawn = [ + "screenshot" + "region" + ]; + "Ctrl+Print".action.spawn = [ + "screenshot" + "output" + ]; + "Alt+Print".action.spawn = [ + "screenshot" + "all" + ]; + # spawn applications (sync with labwc modules/applications/labwc/home.nix) "Mod+T" = { action.spawn = "ghostty"; diff --git a/modules/applications/niri/meta.nix b/modules/applications/niri/meta.nix index 7f01757..a52b83d 100644 --- a/modules/applications/niri/meta.nix +++ b/modules/applications/niri/meta.nix @@ -2,7 +2,10 @@ { description = "niri Wayland compositor"; - includes = [ "systems.wayland" ]; + includes = [ + "systems.wayland" + "applications.screenshot" + ]; imports = { nixos = [ diff --git a/modules/applications/screenshot/home.nix b/modules/applications/screenshot/home.nix new file mode 100644 index 0000000..ded9256 --- /dev/null +++ b/modules/applications/screenshot/home.nix @@ -0,0 +1,53 @@ +{ pkgs, ... }: +{ + home.packages = [ + (pkgs.writeShellApplication { + name = "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" + ''; + }) + ]; +} diff --git a/modules/applications/screenshot/meta.nix b/modules/applications/screenshot/meta.nix new file mode 100644 index 0000000..dffdfae --- /dev/null +++ b/modules/applications/screenshot/meta.nix @@ -0,0 +1,3 @@ +{ + description = "Wayland screenshot command"; +} diff --git a/modules/profiles/interface/labwc/nixos.nix b/modules/profiles/interface/labwc/nixos.nix index 7b02952..4bff9fc 100644 --- a/modules/profiles/interface/labwc/nixos.nix +++ b/modules/profiles/interface/labwc/nixos.nix @@ -2,8 +2,6 @@ { environment.systemPackages = with pkgs; [ alacritty - grim - slurp wf-recorder ]; } diff --git a/modules/profiles/interface/niri/nixos.nix b/modules/profiles/interface/niri/nixos.nix index 7b02952..4bff9fc 100644 --- a/modules/profiles/interface/niri/nixos.nix +++ b/modules/profiles/interface/niri/nixos.nix @@ -2,8 +2,6 @@ { environment.systemPackages = with pkgs; [ alacritty - grim - slurp wf-recorder ]; }