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 <hr1...@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
> @@ -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} }, \
> @@ -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
> @@ -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);
> @@ -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

Reply via email to