aboutsummaryrefslogtreecommitdiff
path: root/modules/user
diff options
context:
space:
mode:
authorRosa <rosaontheweb@proton.me>2026-05-02 18:14:47 -0400
committerRosa <rosaontheweb@proton.me>2026-05-02 18:14:47 -0400
commit4c469658f9a5d7b169a0267ef1849da7e42f2c87 (patch)
tree2c36b7c31bf081d358b120ab015557374c5a4267 /modules/user
parent674773e81d4f922c904fefee4a00cda6808f31a5 (diff)
move screenshot script to separate file
Diffstat (limited to 'modules/user')
-rw-r--r--modules/user/desktop/apps/fuzzel.nix1
-rw-r--r--modules/user/desktop/scripts/screenshot.sh16
-rw-r--r--modules/user/desktop/sessions/sway.nix21
3 files changed, 24 insertions, 14 deletions
diff --git a/modules/user/desktop/apps/fuzzel.nix b/modules/user/desktop/apps/fuzzel.nix
index 4399237..4d0bdf3 100644
--- a/modules/user/desktop/apps/fuzzel.nix
+++ b/modules/user/desktop/apps/fuzzel.nix
@@ -12,6 +12,7 @@
counter = "7f849cff";
input = "cdd6f4ff";
match = "cba6f7ff";
+ message = "a6adc8ff";
placeholder = "7f849cff";
prompt = "bac2deff";
selection = "585b70ff";
diff --git a/modules/user/desktop/scripts/screenshot.sh b/modules/user/desktop/scripts/screenshot.sh
new file mode 100644
index 0000000..f7d607b
--- /dev/null
+++ b/modules/user/desktop/scripts/screenshot.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+# Bash screenshot script. Requires grim, slurp, sway, fuzzel, libnotify and jq.
+IFS=$'\n'
+screenshot_targets=$(swaymsg -rt get_outputs | jq -r '.[].name' | sort)
+screenshot_targets+=($'\nSpecific region') # i LOVE bash
+selected_target="$(printf '%s' "${screenshot_targets[@]}" | fuzzel --hide-prompt --mesg='What would you like to screenshot?' --mesg-mode=expand --minimal-lines --dmenu)"
+outfile="$HOME/Pictures/Screenshots/$(date +'%F_%H.%M.%S.png')"
+
+send_notification() {
+ notify-send "Screenshot taken" "Screenshot saved to <b>$1</b>."
+}
+
+case $selected_target in
+ 'Specific region') grim -g "$(slurp)" "$outfile" && send_notification "$outfile";;
+ *) grim -o "$selected_target" "$outfile" && send_notification "$outfile" ;;
+esac
diff --git a/modules/user/desktop/sessions/sway.nix b/modules/user/desktop/sessions/sway.nix
index 3684853..631235a 100644
--- a/modules/user/desktop/sessions/sway.nix
+++ b/modules/user/desktop/sessions/sway.nix
@@ -9,7 +9,10 @@
config = {
gtk.enable = lib.mkDefault config.desktop.sessions.sway.enable;
home.packages = lib.mkIf config.desktop.sessions.sway.enable [
+ # needed for various scripts
pkgs.grim
+ pkgs.jq
+ pkgs.libnotify
pkgs.slurp
];
@@ -153,26 +156,16 @@
grim = "${pkgs.grim}/bin/grim";
launcher = "${pkgs.fuzzel}/bin/fuzzel";
mod = config.wayland.windowManager.sway.config.modifier;
- screenshotDir = "~/Pictures/Screenshots";
+ scripts = {
+ screenshot = pkgs.writeShellScript "screenshot" (builtins.readFile ../scripts/screenshot.sh);
+ };
terminal = "${pkgs.foot}/bin/foot";
in
{
"${mod}+Return" = "exec ${terminal}";
"${mod}+R" = "exec ${launcher}";
"${mod}+B" = "exec ${pkgs.librewolf}/bin/librewolf";
- "${mod}+Shift+S" = "exec ${(pkgs.writeShellScript "screenshot" ''
- screenshot_type=$(printf 'monitor\nregion' | ${launcher} --mesg='What would you like to screenshot?' --hide-prompt --dmenu --minimal-lines --width=34)
- screenshot_filename=$(date +'%F_%H.%M.%S.png')
-
- send_notif() {
- ${pkgs.libnotify}/bin/notify-send -u low "Screenshot taken" "Screenshot saved as $screenshot_filename"
- }
-
- case $screenshot_type in
- 'monitor') ${grim} -o $(${pkgs.sway}/bin/swaymsg -rt get_workspaces | ${pkgs.jq}/bin/jq -r '.[] | select(.focused) | .output') ${screenshotDir}/$screenshot_filename && send_notif ;;
- 'region') ${grim} -g "$(${pkgs.slurp}/bin/slurp)" ${screenshotDir}/$screenshot_filename && send_notif ;;
- esac
- '')}";
+ "${mod}+Shift+S" = "exec ${scripts.screenshot}";
"${mod}+Alt+L" = "exec ${pkgs.swaylock}/bin/swaylock";
"${mod}+Alt+K" = "input type:keyboard xkb_switch_layout next";
"${mod}+Alt+Q" = "exit";