From 2533dcdee685d213c021c090333a944420a0dbfa Mon Sep 17 00:00:00 2001 From: lucy Date: Wed, 2 Sep 2026 00:30:16 +0200 Subject: [PATCH] add screenshit script for mango --- flake.lock | 118 +++++++++++++++++++++++++++++++++- flake.nix | 4 +- modules/home/screenshot | 15 +++++ modules/programs/mango.nix | 125 ++++++++++++++++++++++++++++++++++++- 4 files changed, 257 insertions(+), 5 deletions(-) create mode 100644 modules/home/screenshot diff --git a/flake.lock b/flake.lock index 33025fe..8a0c507 100644 --- a/flake.lock +++ b/flake.lock @@ -38,6 +38,24 @@ "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, + "locked": { + "lastModified": 1782949081, + "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, "locked": { "lastModified": 1785627969, "narHash": "sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw=", @@ -70,6 +88,28 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": [ + "mango", + "scenefx", + "systems" + ] + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "fromYaml": { "flake": false, "locked": { @@ -128,12 +168,34 @@ "type": "github" } }, - "nixcord": { + "mango": { "inputs": { "flake-parts": "flake-parts", "nixpkgs": [ "nixpkgs" ], + "scenefx": "scenefx" + }, + "locked": { + "lastModified": 1788238778, + "narHash": "sha256-BhA+TEkGryxU9hppp8UItTNBllZz09hX8pwMjtk1Jdo=", + "owner": "mangowm", + "repo": "mango", + "rev": "53d729c0476fc50534835dcdaf58ad314a32a34d", + "type": "github" + }, + "original": { + "owner": "mangowm", + "repo": "mango", + "type": "github" + } + }, + "nixcord": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ], "nixpkgs-nixcord": "nixpkgs-nixcord", "treefmt-nix": "treefmt-nix" }, @@ -168,6 +230,21 @@ } }, "nixpkgs-lib": { + "locked": { + "lastModified": 1782614948, + "narHash": "sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC+eBu2zKlp8=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "db3f255737b94216eb71cce308e2912cf6bc2d7c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-lib_2": { "locked": { "lastModified": 1785031560, "narHash": "sha256-OmshNvn2vupOFpYinLUu+1Dnpu4n7Q5N3ggGVNHpkUI=", @@ -203,6 +280,7 @@ "base16": "base16", "helium": "helium", "home-manager": "home-manager", + "mango": "mango", "nixcord": "nixcord", "nixpkgs": "nixpkgs", "tt-discord": "tt-discord", @@ -211,6 +289,29 @@ "tt-terminal": "tt-terminal" } }, + "scenefx": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "mango", + "nixpkgs" + ], + "systems": "systems_2" + }, + "locked": { + "lastModified": 1782624992, + "narHash": "sha256-vUjLG6eubEhJJVa9LPygIcVmNoHwYbSUTJcWEcbxnU4=", + "owner": "wlrfx", + "repo": "scenefx", + "rev": "37ccd723bef49e6891156ffafce8f549f01446cc", + "type": "github" + }, + "original": { + "owner": "wlrfx", + "repo": "scenefx", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -226,6 +327,21 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index ee41a0c..215c68a 100644 --- a/flake.nix +++ b/flake.nix @@ -6,7 +6,7 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; nixcord.url = "github:4evy/nixcord"; nixcord.inputs.nixpkgs.follows = "nixpkgs"; - mangowm = { + mango = { url = "github:mangowm/mango"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -39,7 +39,7 @@ base16, home-manager, nixcord, - mangowm, + mango, ... }@inputs: let diff --git a/modules/home/screenshot b/modules/home/screenshot new file mode 100644 index 0000000..3b38f63 --- /dev/null +++ b/modules/home/screenshot @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail + +case "${1:-fullscreen}" in + region) + g=$(slurp -d); [ -z "$g" ] && exit 1 + grim -g "$g" - | wl-copy ;; + window) + g=$(mmsg get focusing-client | jq -r '"\(.x),\(.y) \(.width)x\(.height)"') + [ -z "$g" ] && exit 1 + grim -g "$g" - | wl-copy ;; + output) + grim -o "$(mmsg get cursorpos | jq -r .monitor)" - | wl-copy;; + *) grim - | wl-copy;; +esac diff --git a/modules/programs/mango.nix b/modules/programs/mango.nix index 18585a4..5672bb7 100644 --- a/modules/programs/mango.nix +++ b/modules/programs/mango.nix @@ -1,6 +1,127 @@ -{pkgs,lib,inputs}: { - +{ + pkgs, + lib, + inputs, + ... +}: +{ + home.file.screenshot = { + enable = true; + executable = true; + source = ../home/screenshot; + target = ".config/mango/scripts/screenshot"; + }; wayland.windowManager.mango = { enable = true; + settings = { + cursor_theme = "macOS"; + cursor_size = 24; + border_radius = 16; + animations = 1; + layer_animations = 0; + animation_type_open = "slide"; + animation_type_close = "slide"; + animation_fade_in = 1; + animation_fade_out = 1; + tag_animation_direction = 1; + zoom_initial_ratio = 0.4; + zoom_end_ratio = 0.8; + fadein_begin_opacity = 0; + fadeout_begin_opacity = 1; + animation_duration_move = 500; + animation_duration_open = 400; + animation_duration_tag = 350; + animation_duration_close = 800; + animation_duration_focus = 0; + animation_curve = { + open = "0.23,1.0,0.32,1.05"; + move = "0.23,1.0,0.32,1"; + tag = "0.23,1.0,0.32,1.03"; + close = "0.23,1.0,0.32,1"; + focus = "0.23,1.0,0.32,1"; + opafadeout = "0.5,0.5,0.5,0"; + opafadein = "0.46,1.0,0.29,0"; + }; + new_is_master = 0; + tag_num = 9; + repeat_rate = 25; + repeat_delay = 600; + xkb_rules_layout = "eu"; + tap_to_click = 1; + mouse_accel_profile = 1; + mouse_accel_speed = -0.4; + gappih = 5; + gappiv = 5; + gappoh = 10; + gappov = 10; + borderpx = 4; + bind = [ + + # reload config + "SUPER,r,reload_config" + + "SUPER,space,spawn,fuzzel" + "SUPER,Return,spawn,foot" + + "SUPER+SHIFT,q,quit" + "SUPER,q,killclient" + + "SUPER+SHIFT,S,spawn_shell,$HOME/.config/mango/scripts/screenshot region" + "ALT+SHIFT,S,spawn_shell,$HOME/.config/mango/scripts/screenshot output" + "ALT+CTRL,S,spawn_shell,$HOME/.config/mango/scripts/screenshot window" + + "SUPER+SHIFT,Up,exchange_client,up" + "SUPER+SHIFT,Down,exchange_client,down" + "SUPER+SHIFT,Left,exchange_client,left" + "SUPER+SHIFT,Right,exchange_client,right" + "SUPER,Up,focusdir,up" + "SUPER,Down,focusdir,down" + "SUPER,Left,focusdir,left" + "SUPER,Right,focusdir,right" + + "SUPER,v,togglefloating" + + "SUPER,1,view,1,0" + "SUPER,2,view,2,0" + "SUPER,3,view,3,0" + "SUPER,4,view,4,0" + "SUPER,5,view,5,0" + "SUPER,6,view,6,0" + "SUPER,7,view,7,0" + "SUPER,8,view,8,0" + "SUPER,9,view,9,0" + + "SUPER+SHIFT,1,tag,1,0" + "SUPER+SHIFT,2,tag,2,0" + "SUPER+SHIFT,3,tag,3,0" + "SUPER+SHIFT,4,tag,4,0" + "SUPER+SHIFT,5,tag,5,0" + "SUPER+SHIFT,6,tag,6,0" + "SUPER+SHIFT,7,tag,7,0" + "SUPER+SHIFT,8,tag,8,0" + "SUPER+SHIFT,9,tag,9,0" + + "SUPER,comma,focusmon,left" + "SUPER,period,focusmon,right" + + "NONE,XF86MonBrightnessUp,spawn,brightnessctl s +10%" + "NONE,XF86MonBrightnessDown,spawn,brightnessctl s 10%-" + + "NONE,XF86AudioRaiseVolume,spawn,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + "NONE,XF86AudioLowerVolume,spawn,wpctl set-volume @DEFAULT_SINK@ 5%-" + "NONE,XF86AudioMute,spawn,wpctl set-mute @DEFAULT_SINK@ toggle" + "SHIFT,XF86AudioMute,spawn,wpctl set-mute @DEFAULT_SOURCE@ toggle" + + "NONE,XF86AudioNext,spawn,playerctl next" + "NONE,XF86AudioPrev,spawn,playerctl previous" + "NONE,XF86AudioPlay,spawn,playerctl play-pause" + + ]; + mousebind = [ + "SUPER,btn_left,moveresize,curmove" + "SUPER,btn_right,moveresize,curresize" + "ALT,btn_left,moveresize,curresize" + ]; + }; }; }