dotool(1)
π dotool β the manual page, but make it slay π
okay bestie, sit down, hydrate, because we're about to talk about dotool, from the dotool(1) manual. it's a uinput tool. it's iconic. let's go. β¨
πΈ NAME πΈ
dotool β a uinput tool, aka the thing that types for you. no cap.
π SYNOPSIS π
dotool < actions
that's it. that's the whole vibe. you feed it actions on stdin and it goes off. π
π¦ DESCRIPTION π¦
dotool reads actions from stdin and simulates keyboard/mouse input using Linux's uinput module.
so basically it's a puppet master for your keyboard and mouse. it's giving main character energy, honestly. lowkey obsessed. π
π PERMISSION π
dotool requires write permission to /dev/uinput, which is granted to users in group input by a udev rule.
you can test:
echo type hello | dotool
and if need be, you could add your user to group input with:
groupadd -f input
usermod -a -G input $USER
and then it's foolproof to reboot to make the group and rule effective.
okay so real talk: that reboot? not optional. do it, bestie. the group and the rule need it to actually kick in. π€
β¨οΈ KEYBOARD LAYOUTS β¨οΈ
dotool may type gobbledygook if it's simulating keycodes for a different keyboard layout than your environment is expecting.
(not the gobbledygook era π we do not claim her.)
you can specify the layout with the environment variables DOTOOL_XKB_LAYOUT and DOTOOL_XKB_VARIANT. for example:
echo type azerty | DOTOOL_XKB_LAYOUT=fr dotool
you can also specify the name to give the virtual keyboard with the environment variable DOTOOL_KEYBOARD_NAME, which can be useful making rules for your environment.
currently the type action has only heuristic support for dead keys. (heuristic. as in vibes-based. she's trying her best π«Ά)
β¨ OPTIONS β¨
-h,--helpβ print help and exit. the classic.--list-keysβ print the possible Linux keys and exit.--list-x-keysβ print the possible XKB keys and exit.--versionβ print the version and exit.
π ACTIONS π
π key / keydown / keyup
key CHORD...keydown CHORD...keyup CHORD...
press and/or release each CHORD. a CHORD is a key or a key with modifiers, such as a, shift+a or ctrl+shift+a.
the supported modifiers are super, altgr, ctrl, alt and shift.
keys can be specified by Linux names, XKB names prefixed with x:, or Linux keycodes prefixed with k:. the Linux names are case-insensitive, except uppercase character keys also simulate shift. this example types !!! with the us layout:
echo key shift+1 x:exclam shift+k:2 | dotool
the way that one line flexes three different naming schemes?? we stan a polyglot. π₯
π type
type TEXTβ type TEXT. yes, really. go off.
π click / buttondown / buttonup
click left/middle/rightbuttondown left/middle/rightbuttonup left/middle/right
press and/or release a mouse button.
π wheel / hwheel
wheel AMOUNThwheel AMOUNT
scroll a vertical/horizontal mouse wheel by a positive or negative AMOUNT.
π mouseto
mouseto X Yβ jump the cursor to the position X Y, where X and Y are percentages between0.0and1.0.
π mousemove
mousemove X Yβ move the cursor relative to its current position.
π keydelay / keyhold / typedelay / typehold
keydelay MILLISECONDSkeyhold MILLISECONDStypedelay MILLISECONDStypehold MILLISECONDS
set the delay between/holding each key with the key* actions/type action.
the default keydelay and typedelay is 2ms, and the default keyhold and typehold is 8ms.
girlies who tune their own timing? different breed. πβ¨
π LONG-RUNNING INSTANCE π
each instance of dotool has an initial delay registering the virtual devices, but you can keep writing actions to a long-running instance. the daemon and client, dotoold and dotoolc, let you do this with a pipe behind the scenes, for example:
dotoold &
echo type super | dotoolc
echo type speedy | dotoolc
so like. start her up once, then just keep whispering to her through dotoolc. no more startup delay. it's giving efficiency, it's giving connoisseur. π§
π EXAMPLES π
this greets the world:
echo type hi | dotool
this screams for roughly three seconds:
{ echo keydown A; sleep 3; echo key H shift+1; } | dotool
three whole seconds of screaming. commitment. respect. π (also note that shift+1 is !, iykyk.)
π AUTHOR π
John Gebbie
okay bestie that's the whole page, you're officially fluent in dotool π«Ά this was the dotool(1) page from the General Commands Manual, dated 2026-10-19, and yes she's still out here being the most useful little uinput girlie in the game. mwah. π
go type something iconic, bestie π«
π¦ where this page comes from
- fedora 43: dotool 1.6-1.fc43 Β· GPL-3.0-only AND MIT
- fedora 44: dotool 1.6-1.fc44 Β· GPL-3.0-only AND MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms