Uncommon Tips & Tricks
The easiest way to accomplish this is to set this using XKB settings, for example:
input {
kb_layout = us,pl
kb_options = grp:alt_shift_toggle
}
The first layout defined in the input section will be the one used for binds by default.
For example:
us,ua
-> config binds would be e.g.SUPER, A
, while onua,us
->SUPER, Cyrillic_ef
You can change this behavior globally or per-device by setting
resolve_binds_by_sym = 1
. In that case, binds will activate when the symbol typed matches the symbol specified in the bind.For example: if your layouts are
us,fr
and have a bind forSUPER, A
you’d need to press the first letter on the second row while theus
layout is active and the first letter on the first row while thefr
layout is active.
You can also bind a key to execute hyprctl switchxkblayout
for more keybind freedom.
See Using hyprctl.
To find the valid layouts and kb_options
, you can check out the /usr/share/X11/xkb/rules/base.lst
. For example:
To get the layout name of a language:
grep -i 'persian' /usr/share/X11/xkb/rules/base.lst
To get the list of keyboard shortcuts you can put in the kb_options
to toggle keyboard layouts:
grep 'grp:.*toggle' /usr/share/X11/xkb/rules/base.lst
If you want to disable all keybinds with another keybind (make a keybind toggle of sorts) you can just use a submap with only a keybind to exit it.
bind=MOD,KEY,submap,clean
submap=clean
bind=MOD,KEY,submap,reset
submap=reset
input {
kb_options = ctrl:nocaps
}
input {
kb_options = caps:swapescape
}
Steam will exit entirely when it’s last window is closed using the killactive
dispatcher.
To minimize Steam to tray, use the following script to close applications:
if [ "$(hyprctl activewindow -j | jq -r ".class")" = "Steam" ]; then
xdotool getactivewindow windowunmap
else
hyprctl dispatch killactive ""
fi
Some XWayland games like Rhythm Doctor and Friday Night Funkin’ mods like to move the windows by themselves, but that often doesn’t work by default.
For example, if you want to configure Rhythm Doctor, you’d have to:
- Set input rules
input {
# ...
follow_mouse=0
float_switch_override_focus=0
}
- Set the windowrule
windowrule=windowdance,title:^(Rhythm Doctor)$
# windowrule=forceinput,title:^(Rhythm Doctor)$ # May also be needed
- Have fun!
Click the GIF below to see a full demo video
To use Shimeji programs like this, set the following rules:
windowrule=float, com-group_finity-mascot-Main
windowrule=noblur, com-group_finity-mascot-Main
windowrule=nofocus, com-group_finity-mascot-Main
windowrule=noshadow, com-group_finity-mascot-Main
windowrule=noborder, com-group_finity-mascot-Main
The app indicator probably won’t show, so you’ll have tokillall -9 java
to kill them.
For increased performance in games, or for less distractions at a keypress
- create file
~/.config/hypr/gamemode.sh && chmod +x ~/.config/hypr/gamemode.sh
and add:
#!/usr/bin/env sh
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
if [ "$HYPRGAMEMODE" = 1 ] ; then
hyprctl --batch "\
keyword animations:enabled 0;\
keyword decoration:drop_shadow 0;\
keyword decoration:blur:enabled 0;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword decoration:rounding 0"
exit
fi
hyprctl reload
Edit to your liking of course. If animations are enabled, it disables all the pretty stuff. Otherwise, the script reloads your config to grab your defaults.
- Add this to your
hyprland.conf
:
bind = WIN, F1, exec, ~/.config/hypr/gamemode.sh
The hotkey toggle will be WIN+F1, but you can change this to whatever you want.