{ lib , fetchFromGitHub , python3Packages , gettext , gobject-introspection , gtk3 , wrapGAppsHook , xdg-utils , scrot , slop , xclip , grim , slurp , wl-clipboard , waylandSupport ? true , x11Support ? true }: python3Packages.buildPythonApplication rec { pname = "gscreenshot"; version = "3.4.0"; src = fetchFromGitHub { owner = "thenaterhood"; repo = "${pname}"; rev = "v${version}"; sha256 = "YuISiTUReX9IQpckIgbt03CY7klnog/IeOtfBoQ1DZM="; }; # needed for wrapGAppsHook to function strictDeps = false; # tests require a display and fail doCheck = false; nativeBuildInputs = [ wrapGAppsHook ]; propagatedBuildInputs = [ gettext gobject-introspection gtk3 xdg-utils ] ++ lib.optionals waylandSupport [ # wayland deps grim slurp wl-clipboard ] ++ lib.optionals x11Support [ # X11 deps scrot slop xclip python3Packages.xlib ] ++ (with python3Packages; [ pillow pygobject3 setuptools ]); patches = [ ./0001-Changing-paths-to-be-nix-compatible.patch ]; meta = { description = "A screenshot frontend (CLI and GUI) for a variety of screenshot backends"; longDescription = '' gscreenshot provides a common frontend and expanded functionality to a number of X11 and Wayland screenshot and region selection utilties. In a nutshell, gscreenshot supports the following: - Capturing a full-screen screenshot - Capturing a region of the screen interactively - Capturing a window interactively - Capturing the cursor - Capturing the cursor, using an alternate cursor glyph - Capturing a screenshot with a delay - Showing a notification when a screenshot is taken - Capturing a screenshot from the command line or a custom script - Capturing a screenshot using a GUI - Saving to a variety of image formats including 'bmp', 'eps', 'gif', 'jpeg', 'pcx', 'pdf', 'ppm', 'tiff', 'png', and 'webp'. - Copying a screenshot to the system clipboard - Opening a screenshot in the configured application after capture Other than region selection, gscreenshot's CLI is non-interactive and is suitable for use in scripts. ''; homepage = "https://github.com/thenaterhood/gscreenshot"; license = lib.licenses.gpl2Only; platforms = lib.platforms.linux; maintainers = [ lib.maintainers.davisrichard437 ]; }; }