-
-
Save palopezv/efd34059af6126ad970940bcc6a90f2e to your computer and use it in GitHub Desktop.
/** | |
* dwmconfig.h | |
* Hardware multimedia keys | |
*/ | |
/* Somewhere at the beginning of config.h include: */ | |
/* | |
You obviously need the X11 development packages installed, X11proto in particular, but | |
here is the location of the keysyms header upstream copy if you can't bother | |
using the contents of your own hard drive. ;-P | |
https://cgit.freedesktop.org/xorg/proto/x11proto/tree/XF86keysym.h | |
*/ | |
#include <X11/XF86keysym.h> | |
/* If you use pipewire add somewhere in your constants definition section. Use "wpctl status" to | |
find out the real sink ID, 0 is a placeholder here. */ | |
static const char *upvol[] = { "/usr/bin/wpctl", "set-volume", "0", "5%+", NULL }; | |
static const char *downvol[] = { "/usr/bin/wpctl", "set-volume", "0", "5%-", NULL }; | |
static const char *mutevol[] = { "/usr/bin/wpctl", "set-mute", "0", "toggle", NULL }; | |
/* czardien made it work with @DEFAULT_AUDIO_SINK@ */ | |
static const char *upvol[] = { "/usr/bin/wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%+", NULL }; | |
static const char *downvol[] = { "/usr/bin/wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%-", NULL }; | |
static const char *mutevol[] = { "/usr/bin/wpctl", "set-mute", "@DEFAULT_AUDIO_SINK@", "toggle", NULL }; | |
/* If you use pulsaudio add somewhere in your constants definition section instead. */ | |
static const char *upvol[] = { "/usr/bin/pactl", "set-sink-volume", "0", "+5%", NULL }; | |
static const char *downvol[] = { "/usr/bin/pactl", "set-sink-volume", "0", "-5%", NULL }; | |
static const char *mutevol[] = { "/usr/bin/pactl", "set-sink-mute", "0", "toggle", NULL }; | |
/* AidenThing suggests using this general solution for dynamically changing outputs. */ | |
static const char *upvol[] = { "/usr/bin/pactl", "set-sink-volume", "@DEFAULT_SINK@", "+5%", NULL }; | |
static const char *downvol[] = { "/usr/bin/pactl", "set-sink-volume", "@DEFAULT_SINK@", "-5%", NULL }; | |
static const char *mutevol[] = { "/usr/bin/pactl", "set-sink-mute", "@DEFAULT_SINK@", "toggle", NULL }; | |
/* If you use amixer, use this instead. Thanks go to DaniOrt3ga. */ | |
static const char *upvol[] = { "/usr/bin/amixer", "set", "Master", "5%+", NULL }; | |
static const char *downvol[] = { "/usr/bin/amixer", "set", "Master", "5%-", NULL }; | |
static const char *mutevol[] = { "/usr/bin/amixerl", "set", "Master", "toggle", NULL }; | |
/* To use light add this to the constant definition section. Thanks Hritik14. */ | |
static const char *light_up[] = { "/usr/bin/light", "-A", "5", NULL }; | |
static const char *light_down[] = { "/usr/bin/light", "-U", "5", NULL }; | |
/* Add to keys[] array. With 0 as modifier, you are able to use the keys directly. */ | |
static Key keys[] = { | |
{ 0, XF86XK_AudioLowerVolume, spawn, {.v = downvol } }, | |
{ 0, XF86XK_AudioMute, spawn, {.v = mutevol } }, | |
{ 0, XF86XK_AudioRaiseVolume, spawn, {.v = upvol } }, | |
}; | |
/* If you have a small laptop keyboard or don't want to spring your fingers too far away. */ | |
static Key keys[] = { | |
{ MODKEY, XK_F11, spawn, {.v = downvol } }, | |
{ MODKEY, XK_F9, spawn, {.v = mutevol } }, | |
{ MODKEY, XK_F12, spawn, {.v = upvol } }, | |
}; | |
/* To use light add this to the keys[] array. Thanks Hritik14. */ | |
static Key keys[] = { | |
{ 0, XF86XK_MonBrightnessUp, spawn, {.v = light_up} }, | |
{ 0, XF86XK_MonBrightnessDown, spawn, {.v = light_down} }, | |
}; |
Thanks, it work on my laptop.
KINO
Thanks! It helped!
Thanks bro, it helpful.
I want ask you if can I use it because I am not finding the licencing?
thanks it helped a lot!
i have a problem... how can i change the mute and volume of Headphone and Master simultaneously? because when i mute when my Headphone is connected it doesn't mute it...
So, this question might be stupid, but where is the constants definition section? I can't seem to find it.
@oyMarcel Look for the section where constants are defined. The C syntax is static const char *pointer
.
@ahmedsamyh You'll need to write a small script or program in the language of your choice that executes what you need and map it to a key combination in your keyboard, I advice you write another to undo it as well ;-).
Worked like a charm!
Amazing! Thanks.
This works! Thanks.
PERFECT
That helped me. Thank you so much :-D
In case you use amixer:
static const char *upvol[] = { "/usr/bin/amixer", "set", "Master", "5%+", NULL };
static const char *downvol[] = { "/usr/bin/amixer", "set", "Master", "5%-", NULL };
static const char *mutevol[] = { "/usr/bin/amixer", "set", "Master", "toggle", NULL };
Check the +/- position
i used amixer long time ago but thanks :)
how do i install the x11 dev thing on arch?
GOD BLESS YOU DUDE!
If you're using pulse and your default is not always the same, use:
static const char *upvol[] = { "/usr/bin/pactl", "set-sink-volume", "@DEFAULT_SINK@", "+5%", NULL };
static const char *downvol[] = { "/usr/bin/pactl", "set-sink-volume", "@DEFAULT_SINK@", "-5%", NULL };
static const char *mutevol[] = { "/usr/bin/pactl", "set-sink-mute", "@DEFAULT_SINK@", "toggle", NULL };
With pipewire
I ended up using @DEFAULT_AUDIO_SINK@
so I didn't have to fetch the Audio sink ID with wpctl status
; seems to be working:
static const char *upvol[] = { "/usr/bin/wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%+", NULL };
static const char *downvol[] = { "/usr/bin/wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%-", NULL };
static const char *mutevol[] = { "/usr/bin/wpctl", "set-mute", "@DEFAULT_AUDIO_SINK@", "toggle", NULL };
Edit: and of course thanks a million for the gist
@czardien thank you for the contribution and you're very welcome. 😁
@AidenThing thank you for your contribution and my apologies for not seeing it before.
For wpctl it's wise to set a maximum limit for set-volume; above 100% distortion will creep in, and just for safety too. Add "-l 1.0" to the wpctl command to increase volume to avoid that.
Awesome! Thank you so much.
In case someone wonders how to Play/Pause/Skip/GoBack on your fav media player:
static const char *playpause[] = { "/usr/bin/playerctl", "play-pause", NULL };
static const char *play_next[] = { "/usr/bin/playerctl", "next", NULL };
static const char *play_prev[] = { "/usr/bin/playerctl", "previous", NULL};
static Key keys[] = {
{ 0, XF86XK_AudioPlay, spawn, {.v = playpause } },
{ 0, XF86XK_AudioPrev, spawn, {.v = play_prev } },
{ 0, XF86XK_AudioNext, spawn, {.v = play_next } },
};
Also install playerctl.
What are the keys to change vol?