diff options
Diffstat (limited to 'unsaver.1')
-rw-r--r-- | unsaver.1 | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/unsaver.1 b/unsaver.1 new file mode 100644 index 0000000..5a69b40 --- /dev/null +++ b/unsaver.1 @@ -0,0 +1,216 @@ +.\" Man page generated from reStructuredText. +. +.TH UNSAVER 1 "2020-05-19" "0.3.0" "Urchlay" +.SH NAME +unsaver \- deactivate screensaver on joystick activity +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.\" RST source for unsaver(1) man page. Convert with: +. +.\" rst2man.py unsaver.rst > unsaver.1 +. +.SH SYNOPSIS +.sp +unsaver [\fB\-i interval[s|ms]\fP] [\fB\-m\fP | \fB\-k keycode\fP | \fB\-b button\fP | \fB\-c command\fP | \fB\-x\fP ] [\fB\-d dir\fP] [\fB\-j name\fP] [\fB\-f\fP] [\fB\-F\fP] [\fB\-D\fP] [\fBjoydev [joydev ...]\fP] +.SH DESCRIPTION +.sp +unsaver lets you play games with your joysticks/gamepads without the screen +saver activating due to lack of keyboard/mouse input. It can also prevent +the screensaver from activating when a fullscreen window is in use (e.g. +while watching a movie). +.sp +Multiple joystick devices can be monitored. By default, unsaver +monitors up to 16 devices, named /dev/input/js0 through js15. +These devices don\(aqt have to actually exist: they can come and go +as joysticks are plugged in and unplugged. +.sp +Every \fIinterval\fP milliseconds (250, or whatever \fB\-i\fP is set to), unsaver +checks to see if there\(aqs been any activity on any of the devices it\(aqs +monitoring. If so, it sends a fake mouse movement, keystroke, or mouse +button click, which the screen saver will see as activity. +.sp +It\(aqs recommended to let unsaver find the joysticks itself. However, +you can pass one or more device names (or just numbers) if the default +doesn\(aqt do the right thing for you. In this case, only these devices +will be monitored (no search is done). +.sp +unsaver should be started from your \fB\&.xinitrc\fP or whatever X startup +script your window manager or desktop environment uses. By default, it +will exit when the X server does. There\(aqs no PID file: use "pkill unsaver" +if you need to kill the daemon. +.SH OPTIONS +.INDENT 0.0 +.TP +.B \-\-help +Print usage summary +.TP +.BI \-i \ <interval> +Interval to check for activity. Can be given in seconds +with \fIs\fP suffix (e.g. \fB1s\fP), or milliseconds with \fIm\fP +(e.g. \fB200m\fP). If just a number is given, it\(aqs assumed +to be in seconds if it\(aqs under 100, otherwise it\(aqs treated +as milliseconds. Default: 250m. +.TP +.BI \-k \ <keycode> +Send this keycode when activity is detected. Default +is to search the keymap for an unused code. If you set this +manually, it should be a keycode that \fIdoesn\(aqt\fP map to a keysym +in your usual keymapping (use "xmodmap \-pk" to find one). +.TP +.BI \-b \ <button> +Send a click of this button when activity is detected, +rather than a keystroke. Should be a button that +applications don\(aqt normally respond to (6 or higher), +but in some environments, the window manager responds to +all the \(aqextra\(aq buttons as though they were button 1. +.TP +.B \-m +Send mouse movements rather than a keystroke. This will +move the pointer 10 pixels to the right and down, then +10 pixels to the left and up, then warp the pointer back +to its starting point. +.TP +.BI \-c \ <command> +Run a command when activity is detected, rather than +sending a fake keystroke/click/motion. It\(aqs recommended +to set \fIinterval\fP to at least 1 second when using this +option, to avoid excess process\-spawning overhead. +.TP +.B \-x +Same as \fB\-c "xscreensaver\-command \-deactivate" \-i 1s\fP\&. +.TP +.B \-f +Deactivate screensaver if a fullscreen window is detected. +This isn\(aqt likely to be 100% reliable yet. +.TP +.B \-F +Same as \fB\-f\fP, but also disables joystick monitoring entirely. +Note that \fB\-j\fP, \fB\-d\fP, and \fBjoydev\fP are ignored +with this option. +.UNINDENT +.sp +These options are intended for developers and \fIreally\fP shouldn\(aqt be +needed for normal use: +.INDENT 0.0 +.TP +.BI \-d \ <dir> +Path to the directory containing joystick device nodes. +Default is "/dev/input". This directory is monitored with +inotify(7) so unsaver will be aware of hotplug events. +.TP +.BI \-j \ <name> +Name of joystick device nodes, without any numeric +suffix. Default is "js". +.TP +.B \-D +Debug mode: run in foreground and print verbose messages. +.UNINDENT +.sp +A space is required between an option and its argument, as shown +above. Use e.g. \fB\-i 300\fP, not \fB\-i300\fP\&. +.SH NOTES +.sp +unsaver was tested with xlock(1) and xscreensaver(1). All 3 modes +(keycode, mouse click, and mouse motion) work with xscreensaver. +xlock doesn\(aqt respond to mouse motion, so use the keycode or click +modes with it. +.sp +unsaver can monitor up to MAX_STICKS joysticks. This is a compile time +constant, normally set to 16. See the \fB\-\-help\fP output to find out +the compiled\-in default. +.sp +\fBjoydev\fP arguments can be either a path to a device node (e.g. +\fI/dev/input/js0\fP or similar), or a number, which will have the default +device basename prepended to it. This is normally "/dev/input/js", but +can be changed via the \fB\-d\fP and \fB\-j\fP options. Note that (currently) +all the joystick devices have to be in the same directory for unsaver +to detect hotplug events! +.sp +Note that it\(aqs \fInot\fP an error to give nonexistent joystick device names. +unsaver will wait for devices to come into existence (e.g. as created +by \fBudev\fP). +.sp +If the screensaver is configured to lock the screen, and it has already +done so, pressing a joystick button/direction will just bring up the +password dialog, same as pressing a key or mouse button would. +.sp +unsaver depends on the XTest extension being present in the X server. If +you get a "X server doesn\(aqt support XTest extension" error, see your X +server documentation to find out how to enable XTest. +.sp +The fullscreen window monitoring has only been tested on a system with +a single monitor, and may not work properly in multi\-head environments. +.SH EXIT STATUS +.sp +Without the \-D option, the exit status is 0 (success) if unsaver +successfully forked into the background. +.sp +A non\-zero exit status means an error in the command line arguments, +or else fork() failed. No daemon will be running in this case. +.sp +With the \-D option, unsaver never exits until it\(aqs killed. +.SH BUGS +.sp +There\(aqs no way to distinguish between an invalid device name and a +device name that doesn\(aqt happen to exist yet because its device hasn\(aqt +been plugged in yet. Try to avoid typos, if you really have to use device +names (better to autodetect). +.sp +Normally once daemonized, unsaver is very robust. However, if something +does go wrong, there\(aqs no way to find out what. Probably there should +be a log file, or use syslog (or is that overkill?). +.sp +It should be (but currently isn\(aqt) possible to at least work in +mouse\-motion mode even without the XTest extension, via XWarpPointer(). +.sp +unsaver isn\(aqt portable. It only works on Linux, at least for now, for +three reasons: +.INDENT 0.0 +.IP \(bu 2 +It uses the Linux joystick API. +.IP \(bu 2 +It uses inotify(7) to detect joystick hotplug events. +.IP \(bu 2 +I haven\(aqt even looked at other OSes to see if it would be possible +to port the code. +.UNINDENT +.\" EXAMPLES +. +.\" ======== +. +.SH LICENSE +.sp +unsaver is released under the WTFPL: Do WTF you want with this. +.SH AUTHOR +.sp +unsaver was written by B. Watson <\fI\%yalhcru@gmail.com\fP>. +.SH SEE ALSO +.sp +jstest(1), jscal(1), sdl\-jstest(1), sdl2\-jstest(2) +.\" Generated by docutils manpage writer. +. |