diff --git a/bin/screenshot_wayland.py b/bin/screenshot_wayland.py index 6161cd4..5f12603 100755 --- a/bin/screenshot_wayland.py +++ b/bin/screenshot_wayland.py @@ -14,7 +14,8 @@ from pathlib import Path from typing import * # Global constants -DIR = Path(f"{os.environ['HOME']}/Desktop/screenshots_tmp") # Default +RELATIVE_DIR = Path("Pictures/screenshots_wayland") # Default save directory +DIR = Path.home()/RELATIVE_DIR DIMENSIONS_REGEX = "([0-9]+),([0-9]+) ([0-9]+)x([0-9]+)" EXTENSION_REGEX = "\.([A-z0-9]+)$" @@ -95,7 +96,7 @@ def add_drop_shadow(img: Path, save: Path, back_color: str, shadow_color: str): canvas.paste(img, box=(border_width, border_width)) - canvas.save(save) + canvas.save(save, optimize=True) # Uses grim for wayland to take a screenshot. Default to full screen without # dims. exact_dims must match a slurp regex @@ -127,10 +128,7 @@ def take_subcommand(args): # Applies an edit to the latest screenshot def edit_subcommand(args): - ext = args.extension if args.extension else DEFAULT_EDIT_EXTENSION - quality = args.quality if args.quality is not None else DEFAULT_EDIT_QUALITY - - og_path, edit_path = get_edit_path(ext) + og_path, edit_path = get_edit_path(args.extension) if args.overwrite: edit_path = og_path @@ -148,7 +146,7 @@ def edit_subcommand(args): img = img.resize(args.size) elif args.rescale: img = img.reduce(int(1 / (args.rescale / 100))) - img.save(edit_path, quality=quality, method=6) + img.save(edit_path, quality=args.quality, method=6, optimize=True) if args.clipboard: copy_to_clipboard(edit_path) @@ -207,14 +205,14 @@ parser.add_argument( '-s', '--screenshot-dir', type=parser_dir, metavar="", - help='Save and edit directory. Default: ~/Desktop/screenshots_tmp', + help=f"Save and edit directory. Default: ~/{RELATIVE_DIR}", ); # Subcommands ==== subcommands = parser.add_subparsers(dest='subcommand', required=True); # Take ==== take_subcmd = subcommands.add_parser( - "take", help="Takes a screenshot. (Default is full screen)"); + "take", help="Takes a screenshot"); take_common = argparse.ArgumentParser(add_help=False); take_common.add_argument( @@ -222,7 +220,6 @@ take_common.add_argument( action='store_true', help='Save the screenshot to your clipboard', ); - take_common.add_argument( "file", nargs='?', type=Path, help="Save the screenshot to this file name" @@ -276,14 +273,15 @@ edit_subcmd.add_argument( help='Apply a drop shadow with a light/dark background', ); edit_subcmd.add_argument( - '-e', '--extension', + '-e', '--extension', metavar="", type=str, - metavar="", + default=DEFAULT_EDIT_EXTENSION, help='Change image extension and image type saved', ); edit_subcmd.add_argument( '-q', '--quality', type=parse_percent, + default=DEFAULT_EDIT_QUALITY, metavar='', help='Set quality of new image. [0, 100], higher means bigger file', ); @@ -294,8 +292,9 @@ edit_subcmd.add_argument( ); edit_subcmd.add_argument( "file", nargs='?', type=Path, - help="Save the edited screenshot to this file name" + help="Save the edited screenshot to this file name", ); + # Markup ==== markup_subcmd = subcommands.add_parser( "markup", help="Markup the latest screenshot in swappy"); @@ -327,4 +326,6 @@ match args.subcommand: case "edit": edit_subcommand(args) case "markup": + print("Markup is not ready for use yet") + exit(1) markup_latest(args)