about summary refs log tree commit diff
path: root/pkgs/applications/graphics/gscreenshot/default.nix
blob: a09b39bdadb45426803494d3432caf0cb496dc05 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{ lib
, fetchFromGitHub
, python3Packages
, gettext
, gobject-introspection
, gtk3
, wrapGAppsHook3
, xdg-utils
, scrot
, slop
, xclip
, grim
, slurp
, wl-clipboard
, waylandSupport ? true
, x11Support ? true
}:

python3Packages.buildPythonApplication rec {
  pname = "gscreenshot";
  version = "3.5.0";

  src = fetchFromGitHub {
    owner = "thenaterhood";
    repo = "${pname}";
    rev = "refs/tags/v${version}";
    sha256 = "sha256-BA118PwMslqvnlRES2fEgTjzfNvKNVae7GzWSyuaqYM=";
  };

  # needed for wrapGAppsHook3 to function
  strictDeps = false;
  # tests require a display and fail
  doCheck = false;

  nativeBuildInputs = [ wrapGAppsHook3 ];
  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 utilities.

      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 ];
  };
}