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