---
name: "wlcctrl"
section: "1"
platform: "linux"
package: "kylin-wayland-compositor"
version: "1.3.2-1"
release: "Arch Linux 2026-11-07"
platforms: ["linux"]
url: "https://carta.tech/man/wlcctrl"
---

# wlcctrl(1)

A command line utility for kylin-wayland-compositor

## NAME

wlcctrl - A command line utility for kylin-wayland-compositor

## SYNOPSIS

wlcctrl \[command\] \[options...\]

## GLOBAL OPTIONS

- **--help**

  Show a help message and quit.

- **-v, --version**

  Show a wlcctrl version and quit.

- **--exec** \<str\>

  Execute a shell command.

- **--sleep** \<int\_ms\>

  Set sleep time in milliseconds. Can be combined with other commands.

  example:

  wlcctrl --keydown a --sleep 1000 --keyup a wlcctrl --mousepress 1 --sleep 200 --mouserelease 1

- **--path** \<str\>

  Set screenshot save path (PNG format). Uses last value when set multiple times.

  with **--windowcapture**:

  Set the window screenshot saved path.

  with **--workspacecapture**:

  Set the workspace screenshot saved path.

  with **--fullscreencapture**:

  Set the screen/output screenshot saved path.

  example: wlcctrl --windowcapture uuid --path "/home/kylin/xxx.png"

- **-o** \<o\_uuid\>

  Specify output device by UUID. Uses last value when set multiple times.

## KEYBOARD OPTIONS

- **--keystring** \<string\>

  Send a string to be typed into the focused client. No commands can chain after 'keystring'.

- **--key** \<key\>

  Send key events. Single key or key combination.

  Note: CapsLock(58), NumLock(69), ScrollLock(70) may not switch states normally. For reliable lock key functionality, use ydotool instead.

  Key mappings:

  "PrintScreen" -\> "sys\_req" "esc" -\> "escape" "ctrl" -\> "control\_l" "shift" -\> "shift\_l" "alt" -\> "alt\_l" "winleft" -\> "super\_l" "enter" -\> "return"

  Valid keys: escape, return, shift\_l, shift\_r, control\_l, control\_r, meta\_l, meta\_r, alt\_l, alt\_r, page\_up, page\_down, menu, caps\_lock, pause, break, print, sys\_req, scroll\_lock, num\_lock, etc.

  Multiple keys separated by '+'.

  examples:

  wlcctrl --key control\_l+alt\_l+t wlcctrl --key ctrl+alt+t wlcctrl --key super\_l

- **--keyup** \<key\>

  Release a single key.

- **--keydown** \<key\>

  Press a single key.

  with **--keyup**:

  Indicate pressing and releasing a key.

  otherwise: Indicate the state of a key being pressed individually. The command defaults to releasing the key upon completion.

## POINTER OPTIONS

- **--mousebutton** \<button\>

  Click mouse button.

  Button codes:

  1 = BTN\_LEFT 2 = BTN\_RIGHT 3 = BTN\_MIDDLE 4 = BTN\_EXTRA 5 = BTN\_SIDE 6 = BTN\_FORWARD 7 = BTN\_BACK

  example:

  wlcctrl --mousebutton 2

- **--mousepress** \[button\]

  Press a mouse button.

  Button codes:

  1 = BTN\_LEFT 2 = BTN\_RIGHT 3 = BTN\_MIDDLE 4 = BTN\_EXTRA 5 = BTN\_SIDE 6 = BTN\_FORWARD 7 = BTN\_BACK

  with **--mouserelease**

  Indicate pressing and releasing a mouse button.

  width **--mousemove**

  Can be combined into a drag-and-drop action.

  otherwise: Indicate the state of an individual mouse button being pressed. The command defaults to releasing the mouse button upon completion.

  example: Click a mouse button.

  wlcctrl --mousepress 2 --mouserelease 2

  example: Complete a drag-and-drop action.

  /wlcctrl --mousemove 500,600 --mousepress 1 --mousemove 100,200 --mouserelease 1

- **--mouserelease** \[button\]

  Release a mouse button.

  Button codes: BTN\_LEFT-\>1 \| BTN\_RIGHT-\>2 \| BTN\_MIDDLE-\>3 \| BTN\_EXTRA-\>4 \| BTN\_SIDE-\>5 \| BTN\_FORWARD-\>6 \| BTN\_BACK-\>7

- **--mousemove** \<dx,dy\>

  Move cursor. dx = right displacement, dy = down displacement. Only non-negative numbers allowed. Units: pixels.

  example:

  wlcctrl --mousemove 100,500

**--scroll** \[**-x** \<dx\>\] \[**-y** \<dy\>\]

Scroll cursor. Negative numbers allowed.

examples:

wlcctrl --scroll -y 10 wlcctrl --scroll -x 10 -y 20

- **--getmouselocation**

  Get the current mouse position.

## TOPLEVEL OPTIONS

- **-l, --list**

  List the names of all known toplevel.

**--windowmove** \<w\_uuid\> \[options...\]

Move the window to a specified position.

- **-x** \<dx\>

  *dx* is the displacement in positive-right direction.

- **-y** \<dy\>

  *dy* is the displacement in the positive-downward direction.

Only non-negative numbers are allowed.

example: wlcctrl --windowmove 182fcd8f-6136-413b-aa1b-c77b066ebe23 -x 200 -y 400

**--windowsize** \<w\_uuid\> \[options...\]

Resize the window. *w\_uuid*: This is the UUID of the toplevel device.

- **-w** \<width\>

  *width* is the desired window width.

- **-h** \<height\>

  *height* is the desired window height.

Units are pixels.

example: wlcctrl --windowsize 182fcd8f-6136-413b-aa1b-c77b066ebe23 -w 800 -h 600

- **--windowminimize** \<w\_uuid\>

  Minimize window. *w\_uuid* is the UUID of the toplevel.

- **--windowmaximize** \<w\_uuid\>

  Maximize window. The default output device is the primary display. *w\_uuid* is the UUID of the toplevel.

  with **-o**

  Set the output device for the action.

  example: wlcctrl --windowmaximize \<w\_uuid\> -o \<o\_uuid\>

- **--windowfullscreen** \<w\_uuid\>

  Fullscreen window. The default output device is the primary display. *w\_uuid* is the UUID of the toplevel.

  with **-o**

  Set the output device for the action.

  example: wlcctrl --windowfullscreen \<w\_uuid\> -o \<o\_uuid\>

- **--windowenter** \<w\_uuid:uuid\>

  Add the window into the specified workspace. *w\_uuid* is the UUID of the toplevel. *uuid* is the workspace that window to be entered.

- **--windowleave** \<w\_uuid:uuid\>

  Remove the window from the specified workspace. *w\_uuid* is the UUID of the toplevel. *uuid* is the workspace that window to be left.

- **--movewindowtoworkspace** \<w\_uuid:uuid\>

  Move the window to the specified workspace. *w\_uuid* is the UUID of the toplevel. *uuid* is the workspace that window moved to.

- **--movewindowtooutput** \<w\_uuid:o\_uuid\>

  Move the window to the specified output device. *w\_uuid* is the UUID of the toplevel. *o\_uuid* is the UUID of the output device.

- **--windowmap** \<w\_uuid\>

  Restore window. *w\_uuid* is the UUID of the toplevel.

- **--windowclose** \<w\_uuid\>

  Close window. *w\_uuid* is the UUID of the toplevel.

- **--windowkill** \<app\_id\>

  Force close all windows of the specified app\_id.

- **--windowactivate** \<w\_uuid\>

  Activate the specified window. *w\_uuid* is the UUID of the toplevel.

- **--windowcapture** \<w\_uuid\>

  Take a screenshot of a window. Saved by default in the current working directory. *w\_uuid* is the UUID of the toplevel.

- **--getactivewindow**

  Get the current active window.

- **--getwindowname** \<w\_uuid\>

  Query the app ID, title, icon and pid of a specific window. *w\_uuid* is the UUID of the toplevel.

- **--getwindowgeometry** \<w\_uuid\>

  Query the geometry of a specific window. *w\_uuid* is the UUID of the toplevel.

- **--search** \<name\>

  Obtain the window UUID list by checking if the regular expression pattern matches the window app\_id, icon and title.

## OUTPUT OPTIONS

- **--outputs**

  List the name of all known outputs.

- **--getdisplaygeometry** \<o\_uuid\>

  Get the geometry of a specified output. *o\_uuid* is the UUID of the output device.

- **--fullscreencapture**

  Take a fullscreen screenshot. Saved the file to the current working directory by default. By default, capture a fullscreen image of the primary display.

  example: wlcctrl --fullscreencapture

  with **-o**

  Set the output device for the action.

  example: wlcctrl --fullscreencapture -o \<o\_uuid\>

- **--setarea** \<x,y,width,height\>

  Area screenshot. Set the position and size of the rectangular region. The default output device is the primary display.

  *x* is X coordinate of the screenshot area in output coordinate. *y* is Y coordinate of the screenshot area in output coordinate. *width* is Width of the screenshot area. *height* is Height of the screenshot area.

  with **-o**

  Set the output device for the area.

  with **--path**

  Set the screenshot save path.

  example: wlcctrl --setarea 10,40,500,100 --path "/home/kylin/xxx.png"

  wlcctrl --setarea 10,40,500,500 --path "/home/kylin/xxx111.png" -o d4d40b7b-5e2e-396a-eaa2-7b5efea5a3ec

- **--getpixelcolor** \<x,y\>

  Get the RGBA value of a pixel at a specified position. The default output device is the primary display. *x* is X coordinate of the point in output coordinate. *y* is Y coordinate of the point in output coordinate.

  with **-o**

  Set the output device for the pixel location.

  example: wlcctrl --getpixelcolor 100,3

## WORKSPACE OPTIONS

- **--workspace**

  List the name of all known workspaces.

- **--workspacecapture** \<uuid:o\_uuid\>

  Take a screenshot of a workspace. Saved the file to the current working directory by default. *uuid* is the workspace that needs to be captured. *o\_uuid* is the UUID of the output device.

- **--workspaceadd** \<num\>

  Add new workspaces. If *num* is unspecified, a workspace will be added by default.

- **--workspaceremove** \<uuid\>

  Remove the specified workspace. *uuid*: The workspace that needs to be operated on.

- **--workspaceactive** \<uuid\>

  Activate the specified workspace. *uuid* is the workspace that needs to be operated on.
