You are not logged in.

#1 2024-09-25 08:34:13

fam007e
Member
Registered: 2024-05-04
Posts: 8

How to configure `config.h` for `dwm` to have screenshare button work?

I am facing issue while using the screen share/ presentation button to work in my `dwm` as I want to use for projector presentation as well. I am using `XF86keysym.h` header files info in the config.h below. So I want know what do I need to add to have this functionality to my laptop. My laptop is Lenovo Ideapad 3 (15ITL6/82H8).

Here's my `config.h` template:

/* appearance */
#include <X11/XF86keysym.h>
static const unsigned int refresh_rate    = 60;
static const unsigned int enable_noborder = 1;
static const unsigned int borderpx        = 1;
static const unsigned int snap            = 26;
static const int swallowfloating          = 1;
static const unsigned int systraypinning  = 0;
static const unsigned int systrayonleft   = 0;
static const unsigned int systrayspacing  = 6;
static const int systraypinningfailfirst  = 1;
static const int showsystray              = 1;
static const int showbar                  = 1;
static const int topbar                   = 1;
#define ICONSIZE                          16
#define ICONSPACING                       6
#define SHOWWINICON                       1

/* fonts */
static const char *fonts[] = {
    "MesloLGS Nerd Font Mono:size=12",
    "NotoColorEmoji:pixelsize=12:antialias=true:autohint=true"
};

/* colors */
static const char normbordercolor[]           = "#3B4252";
static const char normbgcolor[]               = "#2E3440";
static const char normfgcolor[]               = "#D8DEE9";
static const char selbordercolor[]            = "#434C5E";
static const char selbgcolor[]                = "#434C5E";
static const char selfgcolor[]                = "#ECEFF4";

static const char *colors[][3] = {
    /*               fg           bg           border   */
    [SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor },
    [SchemeSel]  = { selfgcolor,  selbgcolor,  selbordercolor },
};

/* autostart */
static const char *const autostart[] = {
    "xset", "s", "off", NULL,
    "xset", "s", "noblank", NULL,
    "xset", "-dpms", NULL,
    "dbus-update-activation-environment", "--systemd", "--all", NULL,
    "/usr/lib/mate-polkit/polkit-mate-authentication-agent-1", NULL,
    "flameshot", NULL,
    "dunst", NULL,
    "picom", "--animations", "-b", NULL,
    "~/DWM/scripts/wallpapersSS", NULL,
    "~/DWM/scripts/status", NULL,
    "slstatus", NULL,
    "kitty", NULL,
    NULL /* terminate */
};

/* tagging */
static const char *tags[] = { "", "", "", "", "" };
static const char ptagf[] = "[%s %s]";
static const char etagf[] = "[%s]";
static const int lcaselbl = 0;

static const Rule rules[] = {
    /* class     instance  title           tags mask  isfloating  isterminal  noswallow  monitor */
    { "St",      NULL,     NULL,           0,         0,          1,          0,        -1 },
    { "kitty",   NULL,     NULL,           0,         0,          1,          0,        -1 },
    { NULL,      NULL,     "Event Tester", 0,         0,          0,          1,        -1 }, /* xev */
};

/* layout(s) */
static const float mfact     = 0.75;
static const int nmaster     = 1;
static const int resizehints = 0;
static const int lockfullscreen = 1;

static const Layout layouts[] = {
    /* symbol     arrange function */
    { "",      tile },    /* first entry is default */
    { "",      NULL },    /* no layout function means floating behavior */
    { "",      monocle },
};

/* key definitions */
#define MODKEY Mod4Mask
#define TAGKEYS(KEY,TAG) \
    { MODKEY,                       KEY,      view,           {.ui = 1 << TAG} }, \
    { MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 << TAG} }, \
    { MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 << TAG} }, \
    { MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << TAG} }

#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
#define STATUSBAR "dwmblocks"


/* commands */
static const char *launchercmd[]      = { "rofi", "-show", "drun", NULL };
static const char *launcheremojicmd[] = { "rofi", "-show", "emoji", NULL };
static const char *launchercalccmd[]  = { "rofi", "-show", "calc", "-no-show-match", "-no-sort", NULL };
static const char *termcmd[]          = { "kitty", NULL };
static const char *togglemutecmd[]    = { "~/DWM/scripts/sounds", NULL };
static const char *volumeupcmd[]      = { "amixer", "-D", "pulse", "sset", "Master", "5%+", NULL };
static const char *volumedowncmd[]    = { "amixer", "-D", "pulse", "sset", "Master", "5%-", NULL };
static const char *brightnessupcmd[]  = { "xbacklight", "-inc", "5", NULL };
static const char *brightnessdowncmd[]= { "xbacklight", "-dec", "5", NULL };
static const char *micmutecmd[]       = { "amixer", "-D", "pulse", "sset", "Capture", "toggle", NULL };
static const char *airplanecmd[]      = { "nmcli", "radio", "all", "off", NULL };
static const char *playpausecmd[]     = { "playerctl", "play-pause", NULL };
static const char *nextcmd[]          = { "playerctl", "next", NULL };
static const char *prevcmd[]          = { "playerctl", "previous", NULL };
static const char *wifimenu[]         = { "~/DWM/scripts/wifimenu", NULL };
static const char *powermenu[]         = { "~/DWM/scripts/powermenu", NULL };

static Key keys[] = {
    /* modifier                     key            function                argument */
    { MODKEY,                       XK_r,          spawn,                  {.v = launchercmd} },
    { MODKEY|ControlMask,           XK_r,          spawn,                  SHCMD ("protonrestart")},
    { ControlMask,                  XK_e,          spawn,                  {.v = launcheremojicmd} },
    { MODKEY,        	    	    XK_c,          spawn,                  {.v = launchercalccmd} },
    { ControlMask|Mod1Mask,         XK_t,          spawn,                  {.v = termcmd } },
    { MODKEY,                       XK_b,          spawn,                  SHCMD ("brave-browser-nightly")},
    { MODKEY|ShiftMask,             XK_b,          spawn,                  SHCMD ("tor-browser")},
    { MODKEY,                       XK_p,          spawn,                  {.v = powermenu } },
    { MODKEY|ShiftMask,             XK_p,          spawn,                  SHCMD ("flameshot gui -p ~/Pictures/Screenshots/")},
    { MODKEY|ControlMask,           XK_p,          spawn,                  SHCMD ("flameshot full -p ~/Pictures/Screenshots/")},
    { MODKEY,                       XK_v,          spawn,                  SHCMD ("vlc")},
    { MODKEY,                       XK_l,          spawn,                  SHCMD ("slock")},
    { MODKEY,                       XK_e,          spawn,                  SHCMD ("thunar")},
    { MODKEY,                       XK_z,          spawn,                  SHCMD ("~/.local/bin/zed")},
    { MODKEY,                       XK_w,          spawn,                  {.v = wifimenu } },
    { MODKEY|ControlMask,           XK_w,          spawn,                  SHCMD("feh --randomize --bg-fill ~/Pictures/Wallpapers/*")},
    { MODKEY|ShiftMask,             XK_w,          spawn,                  SHCMD ("looking-glass-client -F")},
    { 0, 			        XF86XK_AudioMute,      spawn,       		   {.v = togglemutecmd } },
    { 0,			      XF86XK_AudioRaiseVolume, spawn, 	               {.v = volumeupcmd } },
    { 0, 			      XF86XK_AudioLowerVolume, spawn,           	   {.v = volumedowncmd } },
    { 0, 			       XF86XK_MonBrightnessUp, spawn,	               {.v = brightnessupcmd } },
    { 0,			     XF86XK_MonBrightnessDown, spawn, 	               {.v = brightnessdowncmd } },
    { 0,                      XF86XK_AudioMicMute, spawn,                  {.v = micmutecmd } },
    { 0,                         XF86XK_WLAN,      spawn,                  {.v = airplanecmd } },
    { 0,                         XF86XK_AudioPlay, spawn,                  {.v = playpausecmd } },
    { 0,                         XF86XK_AudioNext, spawn,                  {.v = nextcmd } },
    { 0,                         XF86XK_AudioPrev, spawn,                  {.v = prevcmd } },
    { MODKEY|ControlMask,           XK_b,          togglebar,              {0} },
    { MODKEY,                       XK_j,          focusstack,             {.i = +1 } },
    { MODKEY,                       XK_k,          focusstack,             {.i = -1 } },
    { MODKEY|ShiftMask,             XK_j,          movestack,              {.i = +1 } },
    { MODKEY|ShiftMask,             XK_k,          movestack,              {.i = -1 } },
    { MODKEY,                       XK_i,          incnmaster,             {.i = +1 } },
    { MODKEY,                       XK_d,          incnmaster,             {.i = -1 } },
    { MODKEY,                       XK_h,          setmfact,               {.f = -0.05} },
    { MODKEY|ControlMask,           XK_l,          setmfact,               {.f = +0.05} },
    { MODKEY|ShiftMask,             XK_h,          setcfact,               {.f = +0.25} },
    { MODKEY|ShiftMask,             XK_l,          setcfact,               {.f = -0.25} },
    { MODKEY|ShiftMask,             XK_o,          setcfact,               {.f =  0.00} },
    { MODKEY,                       XK_Return,     zoom,                   {0} },
    { MODKEY,                       XK_Tab,        view,                   {0} },
    { MODKEY,                       XK_q,          killclient,             {0} },
    { MODKEY,                       XK_t,          setlayout,              {.v = &layouts[0]} },
    { MODKEY,                       XK_f,          setlayout,              {.v = &layouts[1]} },
    { MODKEY,                       XK_m,          setlayout,              {.v = &layouts[2]} },
    { MODKEY,                       XK_space,      setlayout,              {0} },
    { MODKEY|ShiftMask,             XK_space,      togglefloating,         {0} },
    { MODKEY,                       XK_0,          view,                   {.ui = ~0 } },
    { MODKEY|ShiftMask,             XK_0,          tag,                    {.ui = ~0 } },
    { MODKEY,                       XK_comma,      focusmon,               {.i = -1 } },
    { MODKEY,                       XK_period,     focusmon,               {.i = +1 } },
    { MODKEY|ShiftMask,             XK_comma,      tagmon,                 {.i = -1 } },
    { MODKEY|ShiftMask,             XK_period,     tagmon,                 {.i = +1 } },
    TAGKEYS(                        XK_1,                                  0),
    TAGKEYS(                        XK_2,                                  1),
    TAGKEYS(                        XK_3,                                  2),
    TAGKEYS(                        XK_4,                                  3),
    TAGKEYS(                        XK_5,                                  4),
    { MODKEY|ShiftMask,             XK_e,          quit,                   {0} },
};

static Button buttons[] = {
    /* click                event mask      button          function        argument */
    { ClkLtSymbol,          0,              Button1,        setlayout,      {0} },
    { ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &layouts[2]} },
    { ClkWinTitle,          0,              Button2,        zoom,           {0} },
    { ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },
    { ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },
    { ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
    { ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },
    { ClkTagBar,            0,              Button1,        view,           {0} },
    { ClkTagBar,            0,              Button3,        toggleview,     {0} },
    { ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
    { ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
};

Last edited by fam007e (2024-09-25 08:35:19)

Offline

#2 2024-09-25 10:31:41

Head_on_a_Stick
Member
From: The Wirral
Registered: 2014-02-20
Posts: 8,725
Website

Re: How to configure `config.h` for `dwm` to have screenshare button work?

What does `xev` show when you use this mysterious "screen share" button? Can you use that keycode in config.h?


Para todos todo, para nosotros nada

Offline

#3 2024-09-25 12:46:21

fam007e
Member
Registered: 2024-05-04
Posts: 8

Re: How to configure `config.h` for `dwm` to have screenshare button work?

Head_on_a_Stick wrote:

What does `xev` show when you use this mysterious "screen share" button? Can you use that keycode in config.h?

It actually opens up my `rofi` based `powermenu`... ?

Last edited by fam007e (2024-09-25 12:48:41)

Offline

#4 2024-09-25 13:04:14

Head_on_a_Stick
Member
From: The Wirral
Registered: 2014-02-20
Posts: 8,725
Website

Re: How to configure `config.h` for `dwm` to have screenshare button work?

Looks like `powermenu` is bound to <Mod4>+p so change that line to run your sharing thingy.


Para todos todo, para nosotros nada

Offline

#5 2024-09-25 15:12:38

seth
Member
Registered: 2012-09-03
Posts: 60,782

Re: How to configure `config.h` for `dwm` to have screenshare button work?

For explanation, it's actually fairly common these days that keyboards have keys that don't generate unique symbols, but just fire the windows shortcut for the action.
In this case win+p for the "project mode"

Please always remember to mark resolved threads by editing your initial posts subject - so others will know that there's no task left, but maybe a solution to find.
Thanks.

Online

#6 2024-09-25 16:11:14

fam007e
Member
Registered: 2024-05-04
Posts: 8

Re: How to configure `config.h` for `dwm` to have screenshare button work?

seth wrote:

For explanation, it's actually fairly common these days that keyboards have keys that don't generate unique symbols, but just fire the windows shortcut for the action.
In this case win+p for the "project mode"

Please always remember to mark resolved threads by editing your initial posts subject - so others will know that there's no task left, but maybe a solution to find.
Thanks.

Is it possible to assign that key value by assigning `Xf86keysym.h` to that of the button `F7`? I kind of want to keep my `Super+P` for powermenu as it's like in my muscle memory now. Therefore as you can see how I used that header values and mapping to use volume up/down and play/pause... So I wanted to know can I extract a key variable which represents my `F7` and assign it to project mode...

I hope my lack of english is not affecting me explain my situation here.

Offline

#7 2024-09-25 16:46:58

seth
Member
Registered: 2012-09-03
Posts: 60,782

Re: How to configure `config.h` for `dwm` to have screenshare button work?

No, the key simply shortwires that shortcut - the OS cannot see a difference between you pressing super+p and you pressing this key.
Not the kernel, not he display server, not any cilent - the mapping happens in the hardware.

Online

#8 2024-09-25 17:10:21

Trilby
Inspector Parrot
Registered: 2011-11-29
Posts: 30,330
Website

Re: How to configure `config.h` for `dwm` to have screenshare button work?

You could, however, just use F7 if that's the key the symbol is on.  Just don't hold the Fn key with it.


"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman

Offline

Board footer

Powered by FluxBB