#wayland #execute-command #swaywm #wlroots #wayland-compositor #wayland-protocol #hot-corners

app waycorner

Hot corners for Wayland. Create anchors in the corners of your monitors and execute a command of your choice.

5 releases

0.2.3 Mar 21, 2024
0.2.2 Mar 19, 2024
0.2.1 May 20, 2023
0.2.0 May 20, 2023
0.1.4 Apr 18, 2022

#904 in Command line utilities

Download history 16/week @ 2024-02-23 13/week @ 2024-03-01 176/week @ 2024-03-15 166/week @ 2024-03-22 31/week @ 2024-03-29 71/week @ 2024-04-19 8/week @ 2024-04-26

174 downloads per month

MIT license

583 lines


Hot corners for Wayland. Create anchors in the corners of your monitors and execute a command of your choice.

Note: Currently only tested on swaywm. Though it should work on any Wayland compositor that supports the xdg-output protocol.



If you would like waycorner to be available on your distro's package manager, feel free to make an issue if you have some time to help.

Arch User Repository (AUR)

paru -S waycorner

Cargo (crates.io)

cargo install waycorner --locked


git clone git@github.com:AndreasBackx/waycorner.git
cd waycorner
cargo install --path . --locked


Default configuration location is ~/.config/waycorner/config.toml, this needs to be created manually. You can also specify a different location using --config. Preview your configuration with the --preview flag.

# Shell commands to execute when hotcorner is triggered,
# at least one is required.

# Command to run when cursor enters hotcorner.
# `command` is an alias for `enter_command`.
enter_command = [ "notify-send", "enter" ]
# Command to run when cursor exits hotcorner.
exit_command = [ "notify-send", "exit" ]

# Locations of the hot corners.
# Options:
# - for corners: top_left, top_right, bottom_right, and bottom_left;
# - for edges: top, bottom, right, left.
locations = ["bottom_right", "bottom_left"]  # default

# Size of the hot corners in pixels, for edges the size means the width
# for vertical edges, and height for horizontal edges. The other dimension
# will be the width/height of your display - the set margin.
size = 10  # default

# Margin on the sides of the hot edges, only applicable to edge locations.
# See the comment with sizes attribute above.
margin = 20  # default

# Timeout in milliseconds before command is triggered.
timeout_ms = 250  # default

# Hex color of the corner when previewed, supports transparency. (#AARRGGBB or #RRGGBB)
# (Useful for debuging purposes when setting up several hot corners.)
color = #FFFF0000  # default

# Optional output config to specify what output to use.
# Regex to match output descriptions on.
# Regex engine is similar to RE2: https://github.com/rust-lang/regex
# Use `swaymsg -t get_outputs` to get a list of outputs in the format:
# Output ${NAME} '${DESCRIPTION}'
description = ""  # default, empty means all outputs

Then add exec waycorner to your swaywm config.


Pass RUST_LOG with either trace, debug, info, warn, or error. To set the logging level, default is error. See env_logger documentation.


~187K SLoC