2025-03-15 21:41:09 -06:00
/* See LICENSE file for copyright and license details. */
/* Helper macros for spawning commands */
# define SHCMD(cmd) { .v = (const char*[]){ " / bin / sh", "-c", cmd, NULL } }
# define CMD(...) { .v = (const char*[]){ __VA_ARGS__, NULL } }
2025-03-16 19:38:17 -06:00
# include <X11/XF86keysym.h>
2025-03-15 21:41:09 -06:00
/* appearance */
static const unsigned int borderpx = 1 ; /* border pixel of windows */
2025-03-16 19:38:17 -06:00
static const unsigned int snap = 8 ; /* snap pixel */
static const int swallowfloating = 0 ; /* 1 means swallow floating windows by default */
2025-03-15 21:41:09 -06:00
static const int scalepreview = 4 ; /* Tag preview scaling */
static const int showbar = 1 ; /* 0 means no bar */
static const int topbar = 1 ; /* 0 means bottom bar */
/* Status is to be shown on: -1 (all monitors), 0 (a specific monitor by index), 'A' (active monitor) */
2025-03-16 16:41:06 -06:00
static const int statusmon = - 1 ;
2025-03-15 21:41:09 -06:00
static const unsigned int systrayspacing = 2 ; /* systray spacing */
static const int showsystray = 1 ; /* 0 means no systray */
/* alt-tab configuration */
static const unsigned int tabmodkey = 0x40 ; /* (Alt) when this key is held down the alt-tab functionality stays active. Must be the same modifier as used to run alttabstart */
static const unsigned int tabcyclekey = 0x17 ; /* (Tab) when this key is hit the menu moves one position forward in client stack. Must be the same key as used to run alttabstart */
static const unsigned int tabposy = 1 ; /* tab position on Y axis, 0 = top, 1 = center, 2 = bottom */
static const unsigned int tabposx = 1 ; /* tab position on X axis, 0 = left, 1 = center, 2 = right */
static const unsigned int maxwtab = 600 ; /* tab menu width */
static const unsigned int maxhtab = 200 ; /* tab menu height */
/* Indicators: see patch/bar_indicators.h for options */
static int tagindicatortype = INDICATOR_TOP_LEFT_SQUARE ;
static int tiledindicatortype = INDICATOR_NONE ;
static int floatindicatortype = INDICATOR_TOP_LEFT_SQUARE ;
2025-03-16 19:38:17 -06:00
static void ( * bartabmonfns [ ] ) ( Monitor * ) = { monocle /* , customlayoutfn */ } ;
2025-03-16 16:41:06 -06:00
static const char * fonts [ ] = { " monospace:size=13 " } ;
2025-03-16 10:07:06 -06:00
// static const char dmenufont[] = "monospace:size=10";
2025-03-15 21:41:09 -06:00
static char c000000 [ ] = " #000000 " ; // placeholder value
static char normfgcolor [ ] = " #bbbbbb " ;
static char normbgcolor [ ] = " #222222 " ;
static char normbordercolor [ ] = " #444444 " ;
static char normfloatcolor [ ] = " #db8fd9 " ;
static char selfgcolor [ ] = " #eeeeee " ;
static char selbgcolor [ ] = " #005577 " ;
static char selbordercolor [ ] = " #005577 " ;
static char selfloatcolor [ ] = " #005577 " ;
static char titlenormfgcolor [ ] = " #bbbbbb " ;
static char titlenormbgcolor [ ] = " #222222 " ;
static char titlenormbordercolor [ ] = " #444444 " ;
static char titlenormfloatcolor [ ] = " #db8fd9 " ;
static char titleselfgcolor [ ] = " #eeeeee " ;
static char titleselbgcolor [ ] = " #005577 " ;
static char titleselbordercolor [ ] = " #005577 " ;
static char titleselfloatcolor [ ] = " #005577 " ;
static char tagsnormfgcolor [ ] = " #bbbbbb " ;
static char tagsnormbgcolor [ ] = " #222222 " ;
static char tagsnormbordercolor [ ] = " #444444 " ;
static char tagsnormfloatcolor [ ] = " #db8fd9 " ;
static char tagsselfgcolor [ ] = " #eeeeee " ;
static char tagsselbgcolor [ ] = " #005577 " ;
static char tagsselbordercolor [ ] = " #005577 " ;
static char tagsselfloatcolor [ ] = " #005577 " ;
static char hidnormfgcolor [ ] = " #005577 " ;
static char hidselfgcolor [ ] = " #227799 " ;
static char hidnormbgcolor [ ] = " #222222 " ;
static char hidselbgcolor [ ] = " #222222 " ;
static char urgfgcolor [ ] = " #bbbbbb " ;
static char urgbgcolor [ ] = " #222222 " ;
static char urgbordercolor [ ] = " #ff0000 " ;
static char urgfloatcolor [ ] = " #db8fd9 " ;
static char scratchselfgcolor [ ] = " #FFF7D4 " ;
static char scratchselbgcolor [ ] = " #77547E " ;
static char scratchselbordercolor [ ] = " #894B9F " ;
static char scratchselfloatcolor [ ] = " #894B9F " ;
static char scratchnormfgcolor [ ] = " #FFF7D4 " ;
static char scratchnormbgcolor [ ] = " #664C67 " ;
static char scratchnormbordercolor [ ] = " #77547E " ;
static char scratchnormfloatcolor [ ] = " #77547E " ;
static char * colors [ ] [ ColCount ] = {
/* fg bg border float */
[ SchemeNorm ] = { normfgcolor , normbgcolor , normbordercolor , normfloatcolor } ,
[ SchemeSel ] = { selfgcolor , selbgcolor , selbordercolor , selfloatcolor } ,
[ SchemeTitleNorm ] = { titlenormfgcolor , titlenormbgcolor , titlenormbordercolor , titlenormfloatcolor } ,
[ SchemeTitleSel ] = { titleselfgcolor , titleselbgcolor , titleselbordercolor , titleselfloatcolor } ,
[ SchemeTagsNorm ] = { tagsnormfgcolor , tagsnormbgcolor , tagsnormbordercolor , tagsnormfloatcolor } ,
[ SchemeTagsSel ] = { tagsselfgcolor , tagsselbgcolor , tagsselbordercolor , tagsselfloatcolor } ,
[ SchemeHidNorm ] = { hidnormfgcolor , hidnormbgcolor , c000000 , c000000 } ,
[ SchemeHidSel ] = { hidselfgcolor , hidselbgcolor , c000000 , c000000 } ,
[ SchemeUrg ] = { urgfgcolor , urgbgcolor , urgbordercolor , urgfloatcolor } ,
[ SchemeScratchSel ] = { scratchselfgcolor , scratchselbgcolor , scratchselbordercolor , scratchselfloatcolor } ,
[ SchemeScratchNorm ] = { scratchnormfgcolor , scratchnormbgcolor , scratchnormbordercolor , scratchnormfloatcolor } ,
} ;
static const char * const autostart [ ] = {
2025-03-16 19:38:17 -06:00
" arrpc " , NULL ,
" dunst " , NULL ,
" /home/ganome/.local/bin/dwmbar " , NULL ,
" xrdb " , " /home/ganome/.Xresources " , NULL ,
" sh " , " /home/ganome/.local/bin/wallsetter.dwm " , NULL ,
" parcellite " , NULL ,
2025-03-16 21:29:15 -06:00
" picom " , " -b " , NULL ,
2025-03-15 21:41:09 -06:00
NULL /* terminate */
} ;
2025-04-02 10:11:54 -06:00
static const char * scratchpadcmd [ ] = { " s " , " kitty " , " --name=spterm " , NULL } ;
2025-03-15 21:41:09 -06:00
/* Tags
* In a traditional dwm the number of tags in use can be changed simply by changing the number
* of strings in the tags array . This build does things a bit different which has some added
* benefits . If you need to change the number of tags here then change the NUMTAGS macro in dwm . c .
*
* Examples :
*
* 1 ) static char * tagicons [ ] [ NUMTAGS * 2 ] = {
* [ DEFAULT_TAGS ] = { " 1 " , " 2 " , " 3 " , " 4 " , " 5 " , " 6 " , " 7 " , " 8 " , " 9 " , " A " , " B " , " C " , " D " , " E " , " F " , " G " , " H " , " I " } ,
* }
*
* 2 ) static char * tagicons [ ] [ 1 ] = {
* [ DEFAULT_TAGS ] = { " • " } ,
* }
*
* The first example would result in the tags on the first monitor to be 1 through 9 , while the
* tags for the second monitor would be named A through I . A third monitor would start again at
* 1 through 9 while the tags on a fourth monitor would also be named A through I . Note the tags
* count of NUMTAGS * 2 in the array initialiser which defines how many tag text / icon exists in
* the array . This can be changed to * 3 to add separate icons for a third monitor .
*
* For the second example each tag would be represented as a bullet point . Both cases work the
* same from a technical standpoint - the icon index is derived from the tag index and the monitor
* index . If the icon index is is greater than the number of tag icons then it will wrap around
* until it an icon matches . Similarly if there are two tag icons then it would alternate between
* them . This works seamlessly with alternative tags and alttagsdecoration patches .
*/
static char * tagicons [ ] [ NUMTAGS ] =
{
2025-03-16 19:38:17 -06:00
[ DEFAULT_TAGS ] = { " " , " " , " " , " " , " " , " " , " " , " " , " " } ,
2025-03-15 21:41:09 -06:00
[ ALTERNATIVE_TAGS ] = { " A " , " B " , " C " , " D " , " E " , " F " , " G " , " H " , " I " } ,
[ ALT_TAGS_DECORATION ] = { " <1> " , " <2> " , " <3> " , " <4> " , " <5> " , " <6> " , " <7> " , " <8> " , " <9> " } ,
} ;
/* There are two options when it comes to per-client rules:
* - a typical struct table or
* - using the RULE macro
*
* A traditional struct table looks like this :
* // class instance title wintype tags mask isfloating monitor
* { " Gimp " , NULL , NULL , NULL , 1 < < 4 , 0 , - 1 } ,
* { " Firefox " , NULL , NULL , NULL , 1 < < 7 , 0 , - 1 } ,
*
* The RULE macro has the default values set for each field allowing you to only
* specify the values that are relevant for your rule , e . g .
*
* RULE ( . class = " Gimp " , . tags = 1 < < 4 )
* RULE ( . class = " Firefox " , . tags = 1 < < 7 )
*
* Refer to the Rule struct definition for the list of available fields depending on
* the patches you enable .
*/
static const Rule rules [ ] = {
/* xprop(1):
* WM_CLASS ( STRING ) = instance , class
* WM_NAME ( STRING ) = title
* WM_WINDOW_ROLE ( STRING ) = role
* _NET_WM_WINDOW_TYPE ( ATOM ) = wintype
*/
RULE ( . wintype = WTYPE " DIALOG " , . isfloating = 1 )
RULE ( . wintype = WTYPE " UTILITY " , . isfloating = 1 )
RULE ( . wintype = WTYPE " TOOLBAR " , . isfloating = 1 )
RULE ( . wintype = WTYPE " SPLASH " , . isfloating = 1 )
2025-03-16 19:38:17 -06:00
RULE ( . class = " Gimp " , . tags = 1 < < 3 )
RULE ( . class = " Vivaldi-stable " , . tags = 1 < < 2 )
RULE ( . class = " Nemo " , . tags = 1 < < 6 )
RULE ( . class = " quassel " , . tags = 1 < < 8 )
2025-03-15 23:08:27 -06:00
RULE ( . class = " vesktop " , . tags = 1 < < 3 , . monitor = 1 )
2025-03-15 21:41:09 -06:00
RULE ( . instance = " spterm " , . scratchkey = ' s ' , . isfloating = 1 )
} ;
static const MonitorRule monrules [ ] = {
/* monitor tag layout mfact nmaster showbar topbar */
{ 1 , - 1 , 2 , - 1 , - 1 , - 1 , - 1 } , // use a different layout for the second monitor
{ - 1 , - 1 , 0 , - 1 , - 1 , - 1 , - 1 } , // default
} ;
/* Bar rules allow you to configure what is shown where on the bar, as well as
* introducing your own bar modules .
*
* monitor :
* - 1 show on all monitors
* 0 show on monitor 0
* ' A ' show on active monitor ( i . e . focused / selected ) ( or just - 1 for active ? )
* bar - bar index , 0 is default , 1 is extrabar
* alignment - how the module is aligned compared to other modules
* widthfunc , drawfunc , clickfunc - providing bar module width , draw and click functions
* name - does nothing , intended for visual clue and for logging / debugging
*/
static const BarRule barrules [ ] = {
/* monitor bar alignment widthfunc drawfunc clickfunc hoverfunc name */
{ - 1 , 0 , BAR_ALIGN_LEFT , width_tags , draw_tags , click_tags , hover_tags , " tags " } ,
{ 0 , 0 , BAR_ALIGN_RIGHT , width_systray , draw_systray , click_systray , NULL , " systray " } ,
{ - 1 , 0 , BAR_ALIGN_LEFT , width_ltsymbol , draw_ltsymbol , click_ltsymbol , NULL , " layout " } ,
{ statusmon , 0 , BAR_ALIGN_RIGHT , width_status , draw_status , click_status , NULL , " status " } ,
2025-03-16 19:38:17 -06:00
{ - 1 , 0 , BAR_ALIGN_NONE , width_bartabgroups , draw_bartabgroups , click_bartabgroups , NULL , " bartabgroups " } ,
2025-03-15 21:41:09 -06:00
} ;
/* layout(s) */
static const float mfact = 0.55 ; /* factor of master area size [0.05..0.95] */
static const int nmaster = 1 ; /* number of clients in master area */
static const int resizehints = 0 ; /* 1 means respect size hints in tiled resizals */
static const int lockfullscreen = 1 ; /* 1 will force focus on the fullscreen window */
static const Layout layouts [ ] = {
/* symbol arrange function */
2025-03-15 22:47:53 -06:00
{ " [ \\ ] " , dwindle } ,
2025-03-16 19:38:17 -06:00
{ " []= " , tile } , /* first entry is default */
2025-03-15 21:41:09 -06:00
{ " ><> " , NULL } , /* no layout function means floating behavior */
{ " [M] " , monocle } ,
{ " HHH " , grid } ,
} ;
/* 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 } } ,
/* commands */
static char dmenumon [ 2 ] = " 0 " ; /* component of dmenucmd, manipulated in spawn() */
2025-03-16 19:38:17 -06:00
/* static const char *dmenucmd[] = {
" dmenu_run " ,
" -m " , dmenumon ,
" -fn " , dmenufont ,
" -nb " , normbgcolor ,
" -nf " , normfgcolor ,
" -sb " , selbgcolor ,
" -sf " , selfgcolor ,
NULL
} ; */
2025-04-02 10:11:54 -06:00
static const char * termcmd [ ] = { " kitty " , NULL } ;
static const char * term2cmd [ ] = { " terminator " , NULL } ;
2025-03-16 19:38:17 -06:00
static const char * wallpapercmd [ ] = { " /home/ganome/.local/bin/wallsetter.dwm " , NULL } ;
static const char * roficmd [ ] = {
" rofi " ,
2025-03-15 22:27:02 -06:00
" -show " ,
" drun " ,
" --with-images " ,
NULL
2025-03-15 21:41:09 -06:00
} ;
static const Key keys [ ] = {
/* modifier key function argument */
2025-03-16 19:38:17 -06:00
{ MODKEY , XK_p , spawn , { . v = roficmd } } ,
2025-03-15 22:27:02 -06:00
{ MODKEY , XK_Return , spawn , { . v = termcmd } } ,
2025-03-16 19:38:17 -06:00
{ MODKEY | ShiftMask , XK_Return , spawn , { . v = term2cmd } } ,
2025-03-15 21:41:09 -06:00
{ MODKEY , XK_b , togglebar , { 0 } } ,
2025-03-16 19:38:17 -06:00
{ MODKEY | ShiftMask , XK_d , spawn , CMD ( " vesktop-bin " ) } ,
2025-03-15 21:41:09 -06:00
{ MODKEY , XK_j , focusstack , { . i = + 1 } } ,
{ MODKEY , XK_k , focusstack , { . i = - 1 } } ,
{ MODKEY , XK_i , incnmaster , { . i = + 1 } } ,
{ MODKEY , XK_d , incnmaster , { . i = - 1 } } ,
{ MODKEY , XK_h , setmfact , { . f = - 0.05 } } ,
{ MODKEY , 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 , { 0 } } ,
{ MODKEY | ShiftMask , XK_j , movestack , { . i = + 1 } } ,
{ MODKEY | ShiftMask , XK_k , movestack , { . i = - 1 } } ,
2025-03-16 19:38:17 -06:00
{ MODKEY | ControlMask , XK_Return , zoom , { 0 } } ,
2025-03-15 21:41:09 -06:00
{ Mod1Mask , XK_Tab , alttabstart , { 0 } } ,
2025-03-16 19:38:17 -06:00
{ MODKEY | ControlMask , XK_z , showhideclient , { 0 } } ,
{ MODKEY | ControlMask , XK_s , unhideall , { 0 } } ,
2025-03-15 22:27:02 -06:00
{ MODKEY | ShiftMask , XK_q , killclient , { 0 } } ,
{ MODKEY | ShiftMask , XK_e , quit , { 0 } } ,
{ MODKEY | ControlMask , XK_e , quit , { 1 } } ,
2025-03-15 21:41:09 -06:00
{ MODKEY , XK_t , setlayout , { . v = & layouts [ 0 ] } } ,
{ MODKEY , XK_f , setlayout , { . v = & layouts [ 1 ] } } ,
{ MODKEY , XK_m , setlayout , { . v = & layouts [ 2 ] } } ,
2025-03-16 19:38:17 -06:00
{ MODKEY | ControlMask , XK_z , showhideclient , { 0 } } ,
{ MODKEY | ControlMask , XK_s , unhideall , { 0 } } ,
{ MODKEY | ShiftMask , XK_n , spawn , { . v = wallpapercmd } } ,
{ 0 , XF86XK_AudioRaiseVolume , spawn , SHCMD ( " exec pactl set-sink-volume @DEFAULT_SINK@ +5% " ) } ,
{ 0 , XF86XK_AudioLowerVolume , spawn , SHCMD ( " exec pactl set-sink-volume @DEFAULT_SINK@ -5% " ) } ,
2025-04-02 10:11:54 -06:00
{ 0 , XF86XK_MonBrightnessUp , spawn , SHCMD ( " exec brightnessctl set +5% " ) } ,
{ 0 , XF86XK_MonBrightnessDown , spawn , SHCMD ( " exec brightnessctl set -5% " ) } ,
2025-03-16 19:38:17 -06:00
{ 0 , XF86XK_AudioMute , spawn , SHCMD ( " exec pactl set-sink-mute @DEFAULT_SINK@ toggle " ) } ,
{ 0 , XF86XK_AudioPlay , spawn , SHCMD ( " exec playerctl play-pause " ) } ,
{ 0 , XF86XK_AudioPause , spawn , SHCMD ( " exec playerctl play-pause " ) } ,
{ 0 , XF86XK_AudioNext , spawn , SHCMD ( " exec playerctl next " ) } ,
{ 0 , XF86XK_AudioPrev , spawn , SHCMD ( " exec playerctl previous " ) } ,
2025-03-15 21:41:09 -06:00
{ MODKEY , XK_space , setlayout , { 0 } } ,
{ MODKEY | ShiftMask , XK_space , togglefloating , { 0 } } ,
{ MODKEY , XK_grave , togglescratch , { . v = scratchpadcmd } } ,
{ MODKEY | ControlMask , XK_grave , setscratch , { . v = scratchpadcmd } } ,
{ MODKEY | ShiftMask , XK_grave , removescratch , { . v = scratchpadcmd } } ,
{ 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 } } ,
{ MODKEY | ControlMask , XK_comma , cyclelayout , { . i = - 1 } } ,
{ MODKEY | ControlMask , XK_period , cyclelayout , { . i = + 1 } } ,
TAGKEYS ( XK_1 , 0 )
TAGKEYS ( XK_2 , 1 )
TAGKEYS ( XK_3 , 2 )
TAGKEYS ( XK_4 , 3 )
TAGKEYS ( XK_5 , 4 )
TAGKEYS ( XK_6 , 5 )
TAGKEYS ( XK_7 , 6 )
TAGKEYS ( XK_8 , 7 )
TAGKEYS ( XK_9 , 8 )
} ;
/* button definitions */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static const Button buttons [ ] = {
/* click event mask button function argument */
{ ClkLtSymbol , 0 , Button1 , setlayout , { 0 } } ,
{ ClkLtSymbol , 0 , Button3 , setlayout , { . v = & layouts [ 2 ] } } ,
2025-03-16 19:38:17 -06:00
{ ClkWinTitle , 0 , Button1 , togglewin , { 0 } } ,
{ ClkWinTitle , 0 , Button3 , showhideclient , { 0 } } ,
2025-03-15 21:41:09 -06:00
{ 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 } } ,
{ ClkClientWin , MODKEY | ShiftMask , Button3 , dragcfact , { 0 } } ,
{ ClkClientWin , MODKEY | ShiftMask , Button1 , dragmfact , { 0 } } ,
{ ClkTagBar , 0 , Button1 , view , { 0 } } ,
{ ClkTagBar , 0 , Button3 , toggleview , { 0 } } ,
{ ClkTagBar , MODKEY , Button1 , tag , { 0 } } ,
{ ClkTagBar , MODKEY , Button3 , toggletag , { 0 } } ,
} ;
static const char * ipcsockpath = " /tmp/dwm.sock " ;
static IPCCommand ipccommands [ ] = {
IPCCOMMAND ( focusmon , 1 , { ARG_TYPE_SINT } ) ,
IPCCOMMAND ( focusstack , 1 , { ARG_TYPE_SINT } ) ,
IPCCOMMAND ( incnmaster , 1 , { ARG_TYPE_SINT } ) ,
IPCCOMMAND ( killclient , 1 , { ARG_TYPE_SINT } ) ,
IPCCOMMAND ( quit , 1 , { ARG_TYPE_NONE } ) ,
IPCCOMMAND ( setlayoutsafe , 1 , { ARG_TYPE_PTR } ) ,
IPCCOMMAND ( setmfact , 1 , { ARG_TYPE_FLOAT } ) ,
IPCCOMMAND ( setstatus , 1 , { ARG_TYPE_STR } ) ,
IPCCOMMAND ( tag , 1 , { ARG_TYPE_UINT } ) ,
IPCCOMMAND ( tagmon , 1 , { ARG_TYPE_UINT } ) ,
IPCCOMMAND ( togglebar , 1 , { ARG_TYPE_NONE } ) ,
IPCCOMMAND ( togglefloating , 1 , { ARG_TYPE_NONE } ) ,
IPCCOMMAND ( toggletag , 1 , { ARG_TYPE_UINT } ) ,
IPCCOMMAND ( toggleview , 1 , { ARG_TYPE_UINT } ) ,
IPCCOMMAND ( view , 1 , { ARG_TYPE_UINT } ) ,
IPCCOMMAND ( zoom , 1 , { ARG_TYPE_NONE } ) ,
IPCCOMMAND ( setcfact , 1 , { ARG_TYPE_FLOAT } ) ,
IPCCOMMAND ( cyclelayout , 1 , { ARG_TYPE_SINT } ) ,
2025-03-16 19:38:17 -06:00
IPCCOMMAND ( showhideclient , 1 , { ARG_TYPE_NONE } ) ,
2025-03-15 21:41:09 -06:00
} ;