Re: [hackers] [dwm][patch] Print Screen (screenshots) using maim

From: Hiltjo Posthuma <hiltjo_AT_codemadness.org>
Date: Mon, 4 Jan 2021 19:01:47 +0100

On Mon, Jan 04, 2021 at 03:17:32PM +0000, Hritik Vijay wrote:
> From c196805f9fed6e5a62cb606a417605df5648f3ad Mon Sep 17 00:00:00 2001
> From: Hritik Vijay <hr1t1k_AT_protonmail.com>
> Date: Mon, 4 Jan 2021 20:38:37 +0530
> Subject: [PATCH] Print Screen using maim
>
> This patch uses maim to take screenshots with some intuitive keybindings.
> Look at config.def.h for the defaults.
> Note that you'd need to #define #WINKEY to proper ModnMask on your
> hardware.
>

The hackers mailinglist is for upstream patches, see:
https://suckless.org/community/

> These are default masks with the PrintScr key
> ShiftMask starts with S i.e. Select
> ControlMask starts with C i.e. Copy to clipboard
> WINKEY starts with W i.e. current window
> ---
> config.def.h | 8 ++++++++
> dwm.c | 27 +++++++++++++++++++++++++++
> 2 files changed, 35 insertions(+)
>
> diff --git a/config.def.h b/config.def.h
> index 1c0b587..dba9bbb 100644
> --- a/config.def.h
> +++ b/config.def.h
> _AT_@ -45,6 +45,7 @@ static const Layout layouts[] = {
>
> /* key definitions */
> #define MODKEY Mod1Mask
> +#define WINKEY Mod4Mask
> #define TAGKEYS(KEY,TAG) \
> { MODKEY, KEY, view, {.ui = 1 << TAG} }, \
> { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
> _AT_@ -94,6 +95,13 @@ static Key keys[] = {
> TAGKEYS( XK_8, 7)
> TAGKEYS( XK_9, 8)
> { MODKEY|ShiftMask, XK_q, quit, {0} },
> + { 0 , XK_Print , printscr , {.ui = 0}} ,
> + { ControlMask , XK_Print, printscr , {.ui = ControlMask}} ,
> + { ShiftMask , XK_Print, printscr , {.ui = ShiftMask}} ,
> + { ControlMask|ShiftMask, XK_Print, printscr , {.ui = ControlMask|ShiftMask}} ,
> + { WINKEY , XK_Print, printscr , {.ui = WINKEY}} ,
> + { WINKEY|ControlMask , XK_Print, printscr , {.ui = WINKEY|ShiftMask|ControlMask}} ,
> +
> };
>
> /* button definitions */
> diff --git a/dwm.c b/dwm.c
> index 664c527..7735671 100644
> --- a/dwm.c
> +++ b/dwm.c
> _AT_@ -186,6 +186,7 @@ static void motionnotify(XEvent *e);
> static void movemouse(const Arg *arg);
> static Client *nexttiled(Client *c);
> static void pop(Client *);
> +static void printscr(const Arg *arg);
> static void propertynotify(XEvent *e);
> static void quit(const Arg *arg);
> static Monitor *recttomon(int x, int y, int w, int h);
> _AT_@ -2127,6 +2128,32 @@ zoom(const Arg *arg)
> pop(c);
> }
>
> +void
> +printscr(const Arg *arg){
> + /*
> + ShiftMask starts with S i.e. Select
> + ControlMask starts with C i.e. Copy to clipboard
> + WINKEY starts with W i.e. current Window
> + */
> +
> + char maim[128] = "maim";
> + char *bash[] = {"/bin/bash", "-c", maim, NULL };
> +

Why hardcode bash?

> + if (arg->ui & ShiftMask)
> + strcat(maim, " -s");
> +
> + if (arg->ui & WINKEY)
> + strcat(maim, " -i $(xdotool getactivewindow)");
> +
> + if (arg->ui & ControlMask)
> + strcat(maim, " | xclip -selection clipboard -t image/png");
> + else
> + strcat(maim, " ~/Pictures/screenshots/$(date +%Y%m%d%H%M%S).jpg");
> +
> + const Arg sbash = {.v = bash};
> + spawn(&sbash);
> +}
> +

Seems non-idiomatic.

> int
> main(int argc, char *argv[])
> {
> --
> 2.29.2
>

-- 
Kind regards,
Hiltjo
Received on Mon Jan 04 2021 - 19:01:47 CET

This archive was generated by hypermail 2.3.0 : Mon Jan 04 2021 - 19:12:28 CET