Examples
This page provides complete configuration examples to help you get started.
Basic Setup
A minimal configuration with a few popular plugins:
pyprland.toml
[pyprland]
plugins = [
"scratchpads",
"magnify",
"expose",
]
[scratchpads.term]
command = "kitty --class kitty-dropterm"
class = "kitty-dropterm"
size = "75% 60%"
animation = "fromTop"
[scratchpads.volume]
command = "pavucontrol"
class = "org.pulseaudio.pavucontrol"
size = "40% 90%"
animation = "fromRight"
lazy = truehyprland.conf
$pypr = /usr/bin/pypr
bind = $mainMod, A, exec, $pypr toggle term
bind = $mainMod, V, exec, $pypr toggle volume
bind = $mainMod, B, exec, $pypr expose
bind = $mainMod SHIFT, Z, exec, $pypr zoomFull-Featured Setup
A comprehensive configuration demonstrating multiple plugins and features:
pyprland.toml
[pyprland]
plugins = [
"scratchpads",
"lost_windows",
"monitors",
"toggle_dpms",
"magnify",
"expose",
"shift_monitors",
"workspaces_follow_focus",
]
[monitors.placement]
"Acer".top_center_of = "Sony"
[workspaces_follow_focus]
max_workspaces = 9
[expose]
include_special = false
[scratchpads.stb]
animation = "fromBottom"
command = "kitty --class kitty-stb sstb"
class = "kitty-stb"
lazy = true
size = "75% 45%"
[scratchpads.stb-logs]
animation = "fromTop"
command = "kitty --class kitty-stb-logs stbLog"
class = "kitty-stb-logs"
lazy = true
size = "75% 40%"
[scratchpads.term]
animation = "fromTop"
command = "kitty --class kitty-dropterm"
class = "kitty-dropterm"
size = "75% 60%"
[scratchpads.volume]
animation = "fromRight"
command = "pavucontrol"
class = "org.pulseaudio.pavucontrol"
lazy = true
size = "40% 90%"
unfocus = "hide"hyprland.conf
# Use pypr-client for faster response in key bindings
$pypr = uwsm-app -- /usr/local/bin/pypr-client
bind = $mainMod SHIFT, Z, exec, $pypr zoom
bind = $mainMod ALT, P, exec, $pypr toggle_dpms
bind = $mainMod SHIFT, O, exec, $pypr shift_monitors +1
bind = $mainMod, B, exec, $pypr expose
bind = $mainMod, K, exec, $pypr change_workspace +1
bind = $mainMod, J, exec, $pypr change_workspace -1
bind = $mainMod, L, exec, $pypr toggle_dpms
bind = $mainMod SHIFT, M, exec, $pypr toggle stb stb-logs
bind = $mainMod, A, exec, $pypr toggle term
bind = $mainMod, V, exec, $pypr toggle volumeNOTE
This example uses pypr-client for faster key binding response. See Commands: pypr-client for details.
Advanced Features
Variables
You can define reusable variables in your configuration to avoid repetition and make it easier to switch terminals or other tools.
Define variables in the [pyprland.variables] section:
[pyprland.variables]
term = "foot"
term_classed = "foot -a" # For kitty, use "kitty --class"Then use them in plugin configurations that support variable substitution:
[scratchpads.term]
command = "[term_classed] scratchterm"
class = "scratchterm"This way, switching from foot to kitty only requires changing the variables, not every scratchpad definition.
See Variables for more details.
Text Filters
Some plugins support text filters for transforming output. Filters use a syntax similar to sed's s command:
filter = 's/foo/bar/' # Replace first "foo" with "bar"
filter = 's/foo/bar/g' # Replace all occurrences
filter = 's/.*started (.*)/\1 has started/' # Regex with capture groups
filter = 's#</?div>##g' # Use different delimiterSee Filters for more details.
Community Examples
Browse community-contributed configuration files:
Feel free to share your own configurations by contributing to the repository.
Tips
- Optimizations - Performance tuning tips
- Troubleshooting - Common issues and solutions
- Multiple Configuration Files - Split your config for better organization