#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

#747 in Command line utilities

Download history 28/week @ 2024-02-24 1/week @ 2024-03-02 315/week @ 2024-03-16 27/week @ 2024-03-23 31/week @ 2024-03-30

373 downloads per month

MIT license

26KB
583 lines

waycorner

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.

https://user-images.githubusercontent.com/1593486/120075347-cd7cc400-c098-11eb-9a76-7fb26ee9cab9.mp4

Installation

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

Manually

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

Configuration

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.

[left]
# 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.
[left.output]
# 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.

Logging

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

Dependencies

~8–16MB
~187K SLoC