LISGD(1)
π LISGD(1) β the libinput synthetic gesture daemon, but make it a group chat
okay so you're reading the lisgd page from the General Commands Manual and honestly? you're about to have a good time. this little icon is a daemon that turns your finger swipes into shell commands, and it's genuinely so much cooler than it sounds. stay with me bestie π«Ά
β¨ NAME β¨
lisgd β the libinput synthetic gesture daemon. that's the whole name, that's the whole vibe. π
π¦ SYNOPSIS π¦
lisgd [-d devicepath] [-g gesturespec]... [-t threshold] [-m timeoutms]
[-o orientation] [-w width] [-h height] [-r degreesofleniency] [-v]
note the ... after [-g gesturespec] β that's your cue to spam -g as many times as your heart desires. no cap. π
π₯ DESCRIPTION π₯
lisgd (short for libinput synthetic gesture daemon, which is a whole mouthful, so we're saying lisgd) lets you bind gestures based on libinput touch events to run specific commands to execute. like, for real: drag left-to-right with one finger and it runs a command for you β launching a terminal is the classic example, and it absolutely ate.
so here's what it understands:
- directional L-R, R-L, U-D, and D-U gestures, and
- diagnol (yes, we're spelling it that way, keep scrolling) LD-RU, RD-LU, UR-DL, UL-DR gestures
and those work with 1 through n fingers, and you can bind them to the screen's edges and/or make them sensitive to the distance of the gesture. three whole dimensions of gesture customization, we love to see it. π
now the main character energy part: unlike other libinput gesture daemons, lisgd uses touch events to recognize synthetic swipe gestures rather than using libinput's gesture events. why does that matter? because the advantage of this is that the synthetic gestures you define via lisgd can be used on touchscreens, which normal libinput gestures don't support. periodt. π
this program was built for use on the Pinephone β however it could be used in general for any device that supports touch events, like laptop touchscreens or similar. and a lil heads up: you may want to adjust the threshold depending on the device you're using. every touchscreen is different, bestie, respect its boundaries. πΈ
π OPTIONS π
-d,-d devicepathβ path of the dev filesystem device to monitor (like/dev/input/event1). that's your touchscreen's little home address. π-g,-g nfingers,gesture,edge,distance,actmode,commandβ the big one, the icon, the moment. this lets you bind a gesture, and here's the breakdown of all the pieces:nfingersis an integer β how many fingers go on this bad boy.gestureis one ofLR,RL,DU,UD,DLUR,DRUL,URDL,ULDR.edgeis one of*(any),N(none),L(left),R(right),T(top),B(bottom),TL(top left),TR(top right),BL(bottom left),BR(bottom right).distanceis one of*(any),S(short),M(medium),L(large).actmodeisR(release) for normal mode andP(pressed) for pressed mode β but this field may be omitted entirely for backward compatibility, so don't stress if you see the old short form around. π«Άcommandis the shell command to be executed. go off.
and the best part: the -g option can be used multiple times to bind multiple gestures. stack 'em like your fave jewelry. π
-m,-m timeoutmsβ number of milliseconds gestures must be performed within to be registered. after thetimeoutmsvalue, the gesture won't be registered. so like... speed it up or it doesn't count, sorry babe. π-o,-o orientationβ number of 90-degree rotations to translate gestures by. can be set to 0-3. for example, using1, a L-R gesture would become a U-D gesture. meant to be used for screen-rotation. your brain will adjust, i promise. π-r,-r degreesofleniencyβ number of degrees offset each 45-degree interval may still be recognized within. maximum value is 45. default value is 15. e.g. U-D is a 180 degree gesture but with 15 degrees of leniency will be recognized between 165-195 degrees. generous but not too generous. we stan healthy boundaries. π-t,-t distancethresholdβ threshold in libinput units (pixels) after which a gesture registers. defaults to 125. π-T,-T distancethreshold_pressedβ threshold in libinput units (pixels) after which a gesture registers when fingers are not lifted. defaults to 60. yes there's a separate one for pressed mode, keep up bestie. β-w,-w screnwidthβ allows you to specify the width of the screen area to be used for edge-based gestures. should be used in conjunction with-h. if unset, and either theDISPLAYorWAYLAND_DISPLAYenv var is set, X/Wayland dynamic screen geometry detection will be used instead. (and yes, it's spelledscrenwidthon the page β canonical spelling, don't @ me π)-h,-h screenheightβ allows you to specify the height of the screen area to be used for edge-based gestures. should be used in conjunction with-w. if unset, and either theDISPLAYorWAYLAND_DISPLAYenv var is set, X/Wayland dynamic screen geometry detection will be used instead. the other half of the power couple. π¦-s,-s edgessizecalingβ scale the edge sizes with this value. it is very usefull with very hidpi screens, to help detecting edge gestures. (spelling as-is, it's part of the lore now β¨)-vβ enables verbose mode which prints debugging messages. turn it on when you need to know what's actually happening in there. π
π SEE ALSO π
lisgd was built as part of Sxmo; an project to create a Pinephone UI out of simple and suckless programs. see: http://sr.ht/mil/Sxmo
go look, it's giving minimalism with taste. π
πΈ AUTHOR πΈ
lisgd is written by Miles Alan <m@milesalan.com> π
π§ CONTRIBUTING π§
Bugs and feature dicussions can be sent to ~mil/sxmo-devel@lists.sr.ht β that's the address verbatim, typos and all, it's iconic. π
okay that's the whole page, bestie, you're officially caught up. and a lil sign-off: this was lisgd(1) straight out of the General Commands Manual β go forth and swipe with intent. π
β¨π«Ά
π¦ where this page comes from
- alpine 3.24: lisgd-doc 0.4.0-r0 Β· MIT
- nixos 26.05: lisgd 0.4.0
- nixpkgs unstable: lisgd 0.4.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms