Enable file-overwriting in screenshot script

This commit is contained in:
Akemi Izuko 2023-12-23 20:13:59 -07:00
parent 8567acd75c
commit d1efe71eda
Signed by: akemi
GPG key ID: 8DE0764E1809E9FC
2 changed files with 49 additions and 48 deletions

View file

@ -92,15 +92,13 @@ def take_subcommand(args):
case "light":
add_drop_shadow(save_path, save_path, 'white', 'black')
case "dark":
add_drop_shadow(save_path, save_path, '#515e6e', 'black')
add_drop_shadow(save_path, save_path, '#d3869b', 'black')
if args.clipboard:
copy_to_clipboard(save_path)
if args.file is not None and not os.path.isfile(args.file):
if args.file is not None:
shutil.copyfile(save_path, args.file)
elif args.file is not None:
raise Exception(f"Refusing to overwrite {args.file}")
# Provides a drawing editor for the latest image
def markup_latest(args):
@ -162,11 +160,11 @@ take_subcmd.add_argument(
# Different possible screenshot regions
region = take_subcmd.add_subparsers(dest='region', required=True);
region.add_parser(
full = region.add_parser(
'full', help='Take a screenshot of the entire screen');
exact = region.add_parser(
'exact', help="Exact dimensions of screenshot: 'x,y width,height'");
region.add_parser(
select = region.add_parser(
'select', help="Use `slurp` to select a region with your mouse");
exact.add_argument(
'dimensions',
@ -175,9 +173,16 @@ exact.add_argument(
help="Exact dimensions of screenshot: 'x,y width,height'"
);
take_subcmd.add_argument(
"file", nargs='?',
type=Path,
full.add_argument(
"file", nargs='?', type=Path,
help="Save the screenshot to this file name"
);
exact.add_argument(
"file", nargs='?', type=Path,
help="Save the screenshot to this file name"
);
select.add_argument(
"file", nargs='?', type=Path,
help="Save the screenshot to this file name"
);
# Edit ====
@ -186,7 +191,7 @@ edit_subcmd = subcommands.add_parser(
edit_subcmd.add_argument(
'-r', '--resize',
type=int,
metavar="<pixels>",
metavar="<percent>",
help='Resize the latest screenshot instead of taking a new one',
);
edit_subcmd.add_argument(
@ -197,9 +202,9 @@ edit_subcmd.add_argument(
);
edit_subcmd.add_argument(
'-d', '--drop-shadow',
type=int,
metavar="<pixels>",
help='Save the screenshot with a drop shadow of x pixels',
action='store',
choices=['light', 'dark'],
help='Apply a drop shadow with a light/dark background',
);
edit_subcmd.add_argument(
'-e', '--extension',

View file

@ -49,14 +49,10 @@ set $menu fuzzel -fmonospace:size=14 -l10 -w40 \
# Sound effects and additional features
set $volume_command ~/.config/sway/pulse_audio_volume.sh
set $volume_change_sound ~/.config/sway/volume_change_sound.mp3
set $screenshot_sound ffplay -nodisp -autoexit -v error ~/.config/sway/screenshot_sound.mp3
set $screenshot_sound ffplay -nodisp -autoexit -v error \
~/.config/sway/screenshot_sound.mp3
# TODO: Unique sensible name
set $original_path ~/Desktop/shrink_screenshot_out.png
set $compress_path ~/Desktop/shrink_screenshot_out.webp
set $shrink_path ~/Desktop/shrink_screenshot_out.png
# Duplicate screenshot path, for quick uploads
set $screenshot_tmp /dev/shm/screenshot_shm.png
#╔─────────────────────────────────────────────────────────────────────────────╗
#│ Pαηεs αηd cδηταiηεrs |
@ -299,30 +295,30 @@ bindsym $mod2+Escape exec ~/.config/sway/sway_exit.sh
# Screenshots ====
bindsym $mod2+6 mode "screenshots"
bindsym $mod2+5 mode "screenshots"; exec ~/.configs_pointer/bin/screenshot_wayland.sh area --clipboard && $screenshot_sound
bindsym $mod2+4 mode "screenshots"; exec ~/.configs_pointer/bin/screenshot_wayland.sh \
-c -d 40 -s "$(~/.config/sway/window_dimensions.sh)" $original_path && $screenshot_sound
bindsym $mod2+5 mode "screenshots"; exec ~/.configs_pointer/bin/screenshot_wayland.py take -c select $screenshot_tmp && $screenshot_sound
bindsym $mod2+4 mode "screenshots"; exec ~/.configs_pointer/bin/screenshot_wayland.py \
take -c -d "$(colo.sh -t)" exact "$(~/.config/sway/window_dimensions.py)" $screenshot_tmp && $screenshot_sound
mode "screenshots" {
# Screenshooting in processing "steps"
# 1. Get screenshot
bindsym a exec ~/.configs_pointer/bin/screenshot_wayland.sh area --clipboard \
$original_path && $screenshot_sound
bindsym f exec ~/.configs_pointer/bin/screenshot_wayland.sh full --clipboard \
$original_path && $screenshot_sound
bindsym s mode "default"; exec ~/.configs_pointer/bin/screenshot_wayland.sh markup
bindsym a exec ~/.configs_pointer/bin/screenshot_wayland.py take -c select \
$screenshot_tmp && $screenshot_sound
bindsym f exec ~/.configs_pointer/bin/screenshot_wayland.py take -c full \
$screenshot_tmp && $screenshot_sound
bindsym m mode "default"; exec ~/.configs_pointer/bin/screenshot_wayland.py markup
# 2. Downsize the screenshot, since 4k is too big
bindsym 1 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '10%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 2 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '20%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 3 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '30%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 4 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '40%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 5 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '50%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 6 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '60%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 7 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '70%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 8 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '80%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 9 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '90%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 0 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '100%' --clipboard --extension png $shrink_path && $screenshot_sound
bindsym 1 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '10%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
bindsym 2 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '20%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
bindsym 3 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '30%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
bindsym 4 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '40%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
bindsym 5 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '50%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
bindsym 6 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '60%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
bindsym 7 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '70%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
bindsym 8 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '80%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
bindsym 9 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '90%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
bindsym 0 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '100%' --clipboard --extension png $screenshot_tmp && $screenshot_sound
# OR compress image
bindsym space mode "shrink_screenshots"
@ -337,16 +333,16 @@ mode "screenshots" {
mode "shrink_screenshots" {
# 2. Compress the screenshot, hard
bindsym 1 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '10%' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 2 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '20%' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 3 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '30%' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 4 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '40%' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 5 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '50%' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 6 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '60%' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 7 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '70%' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 8 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '80%' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 9 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '90%' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 0 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '100' --clipboard --extension webp $compress_path && $screenshot_sound
bindsym 1 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '10%' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym 2 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '20%' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym 3 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '30%' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym 4 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '40%' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym 5 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '50%' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym 6 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '60%' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym 7 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '70%' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym 8 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '80%' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym 9 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '90%' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym 0 exec ~/.configs_pointer/bin/screenshot_wayland.sh --resize '100' --clipboard --extension webp $screenshot_tmp && $screenshot_sound
bindsym space mode "screenshots"