wlrctl(1)

✨ wlrctl β€” like, the manual, but make it make sense ✨

okay bestie, so wlrctl is a command line utility for miscellaneous wlroots extensions πŸ’… it's a General Commands Manual situation, manual name wlrctl(1), and yes we're doing this whole thing together, no skimming, no skipping, because every single flag matters and I refuse to let you miss one 🫢


🌸 SYNOPSIS 🌸

wlrctl [options...] [command]

that's the whole vibe. options, then a command. slay.


✨ OPTIONS ✨

  • -h, --help β€” shows you a help message and then dips out. bye! πŸ‘‹
  • -v, --version β€” tells you which version of wlrctl you're running and then quits. iconic.

πŸŽ€ COMMANDS πŸŽ€

  • keyboard <action> β€” use a virtual keyboard ⌨️
  • pointer <action> β€” use a virtual pointer device πŸ–±οΈ
  • window|toplevel <action> β€” use the foreign toplevel interface πŸͺŸ
  • output { <action> | <identifier> [config_action] } β€” use the output management interface πŸ–₯️

πŸ’– KEYBOARD ACTIONS πŸ’–

  • type <string> [modifiers ...] β€” sends a string to be typed into the focused client. literally typing for you, main character energy fr fr

modifiers <SHIFT,CTRL,ALT,SUPER> β€” a comma-separated list of modifiers that get held down on the virtual keyboard while string is being typed. so like, held the whole time. no cap.


🌈 POINTER ACTIONS 🌈

  • click [button] β€” clicks a mouse button. if you don't specify one, it clicks the default button, which is the left one.
  • move <dx> <dy> β€” moves the cursor. dx is the displacement in the positive-right direction, dy is the displacement in the positive-downward direction. negative numbers are allowed. units are pixels. math but make it cursor ✨
  • scroll <dy> <dx> β€” scrolls the cursor. dy is the amount of vertical scroll, dx is the amount of horizontal scroll. negative numbers are allowed. (yes, dy first, I know, read it again, it's fine πŸ™ˆ)

πŸ¦‹ TOPLEVEL ACTIONS πŸ¦‹

  • minimize [matches...] β€” tells the compositor to minimize the matching windows.
  • maximize [matches...] β€” tells the compositor to maximize the matching windows.
  • fullscreen [matches...] β€” tells the compositor to fullscreen the matching windows.
  • focus [matches...] β€” tells the compositor to focus the matching windows.
  • find [matches...] β€” exits with a successful return code iff there is at least one window matching the criteria you gave. so like, a little yes/no vibe check πŸ”₯
  • wait [matches...] β€” waits, and only returns a successful return code once all the matching windows have closed. but heads up: if there are no matches, it exits with a failing return code immediately. zero patience, honestly πŸ’€
  • waitfor [matches...] β€” waits to return a successful return code until there is at least one window that matches the criteria you asked for. patient queen behavior πŸ‘‘

⭐ OUTPUT ACTIONS ⭐

  • list β€” lists the names of all known outputs πŸ“‹

πŸ’œ TOPLEVEL MATCHSPEC πŸ’œ

okay this is the part where people get confused so we're doing this slowly and gently 🧚

a match is a colon separated attribute/value pair. for example: to match a firefox window, a suitable match value is app_id:firefox.

you may give any number of match specifiers, and a window must match all of them to be considered. (all, bestie. every single one. it's giving strict.)

here's the spicy part β€” if the app_id or title keys are specified more than once, a window may match any of the given values. but for everything else, later key/value pairs override previous ones.

also, a match without a key is assumed to be an app_id, so just firefox works in the example above. cute, right? πŸ“

currently supported attributes are: app_id, title, and state.

supported state values are: maximized, minimized, active, and fullscreen, plus their negations: unmaximized, unminimized, inactive, and unfullscreen. you can also use a - prefix instead, for example state:-fullscreen.


πŸ‘‘ AUTHOR πŸ‘‘

written by Ronan Pigott <rpigott@berkeley.edu> β€” thank you for your service, legend 🫑


and that's the whole page, bestie!! this one's dated 2026-01-29, manual name wlrctl(1), and it's the wlrctl page for the General Commands Manual. go forth and control your windows, you absolute icon πŸ’–βœ¨πŸŽ€πŸ¦‹ no cap.

πŸ“¦ where this page comes from