10 releases
0.3.7 | Sep 22, 2023 |
---|---|
0.3.6 | Sep 22, 2023 |
0.3.5 | Apr 13, 2023 |
0.3.0 | Mar 29, 2023 |
0.1.0 | Mar 22, 2023 |
#212 in Unix APIs
27 downloads per month
39KB
804 lines
Hyprdock
A small utility to handle automatic monitor docking.
Breaking Changes
- change of config directory from hyprland config directory to hyprdock directory
HardRequirements
- acpid installed and running
Soft Requirements
These are programs that were meant to be used with hyprdock, however, the toml allows you to specify the commands you would like to run. So feel free to test out other programs.
- Hyprland
- swaylock
- systemd
behavior and features
- server mode
- if there is a monitor connected and you close the laptop lid, the laptop will be stopped from suspending and instead uses the external monitor
- without a monitor connected, closing the lid will suspend the laptop
- the name for the monitor is the first monitor specified in the hyprland.conf
- external: switches to external monitor only
- internal: switches to internal monitor only
- extend: extends monitors
- mirror: mirrors monitors
- export: save your current monitor configuration
optional name parameter -> save configuration with specific name - import: import a stored configuration
optional name parameter -> load configuration with specific name
Example config
path needs to be $HOME/.config/hypr/hyprdock.toml
monitor_name = "eDP-1"
open_bar_command = "eww open bar"
close_bar_command = "eww close-all"
reload_bar_command = "eww reload"
suspend_command = "systemctl suspend"
lock_command = "swaylock -c 000000"
utility_command = "playerctl --all-players -a pause"
get_monitors_command = "hyprctl monitors"
enable_internal_monitor_command = "hyprctl keyword monitor eDP-1,highrr,0x0,1"
disable_internal_monitor_command = "hyprctl keyword monitor eDP-1,disabled"
enable_external_monitor_command = "hyprctl keyword monitor ,highrr,0x0,1"
disable_external_monitor_command = "hyprctl keyword monitor ,disabled"
extend_command = "hyprctl keyword monitor ,highrr,1920x0,1"
mirror_command = "hyprctl keyword monitor ,highrr,0x0,1"
wallpaper_command = "hyprctl dispatch hyprpaper"
css_string = ""
multiple commands in 1 line
# make sure to leave a blank space between the start and end of the ;;, which marks the end and start of commands.
utility_command = "yourcommand args ;; yourothercommand args"
extend and mirror
You can specify which should be the default command after plugging in monitors or opening the laptop lid when an external monitor is still connected:
default_external_command = "extend" # or "mirror"
When are specific functions called?
- open_bar_command => used to open new bars on new monitors
- close_bar_command => used to close a bugged eww bar
- reload_bar_command => used to remove graphical errors with eww after re-enabling internal monitor
- suspend_command => used to suspend (on lid close without external monitor)
- lock_command => used to lock screen (on lid close without external monitor)
- utility_command => used before locking -> stop music etc
- get_monitors_command => used to check if external monitors are attached
- enable_internal_monitor_command => run after using internal only or opening the laptop lid after using external monitor only
- disable_internal_monitor_command => run after using external only or closing laptop lid with external monitor attached
- enable_external_monitor_command => run after disabling internal monitor or pluggin in an external monitor
- disable_external_monitor_command => run after using internal only or unplugging an external monitor
- extend_command => run after using extend or default function for external monitors
- mirror_command => run after using mirror or default function for external monitors
- wallpaper_command => run after plugging in a monitor
CSS
By default hyprdock uses your system gtk4 theme.
The style can be configured with your own CSS file.
Just overwrite the css_string variable in the toml configuration file.
List of IDs
- MainWindow
- MainBox
- InternalButton
- ExternalButton
- ExtendButton
- MirrorButton
- ExportButton
Dependencies
~18MB
~428K SLoC