Skip to content

VortexCoyote/hyprfocus

Folders and files

Image for: Folders and files
NameName
Last commit message
Last commit date

Latest commit

Image for: Latest commit
 

History

Image for: History
48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image for: Repository files navigation

⚠️ this repo is inactive and will be archived! please consider using pyt0xic's fork instead, as it's being actively maintained!

hyprfocus

a plugin which provides focus animations for us borderless folks, originally inspired by flashfocus!

i'm on a tight schedule, so pull requests are welcome!

animations

Image for: animations

flash

shrink

compilation & installation

Image for: compilation & installation

instructions based on the official wiki

hyprpm

1) add hyprfocus

hyprpm add https://github.com/VortexCoyote/hyprfocus

2) verify that it's installed

hyprpm list

3) enable it and reload

hyprpm enable hyprfocus && hyprpm reload

4) (OPTIONAL) make sure plugins are loaded at startup

this goes into you hyprland config: exec-once = hyprpm reload -n

manual

1) clone hyprfocus and cd into it

git clone https://github.com/VortexCoyote/hyprfocus && cd hyprfocus

2) clone hyprland and cd into it

git clone --recursive https://github.com/hyprwm/Hyprland && cd Hyprland

3) checkout the correct release tag matching with your version of hyprland

git checkout tags/v0.26.0

4) prepare the hyprland source for plugin compilation

make all && sudo make installheaders

5) cd back and make

cd .. && make all

6) profit, make sure you use the full path to the .so file

hyprctl plugin load <full .so path>

If you compile hyprland manually and install with sudo make install you can skip the cloning hyprland sources and make pluginenv part.

getting started

Image for: getting started

to start using hyprfocus, add this to your hyprland config:

plugin = <full .so path>

plugin:hyprfocus {
    enabled = yes

    keyboard_focus_animation = shrink
    mouse_focus_animation = flash

    bezier = bezIn, 0.5,0.0,1.0,0.5
    bezier = bezOut, 0.0,0.5,0.5,1.0

    flash {
        flash_opacity = 0.7

        in_bezier = bezIn
        in_speed = 0.5

        out_bezier = bezOut
        out_speed = 3
    }

    shrink {
        shrink_percentage = 0.8

        in_bezier = bezIn
        in_speed = 0.5

        out_bezier = bezOut
        out_speed = 3
    }
}

plugin configuration

enabled (yes/no) -> enable or disable the plugin

keyboard_focus_animation (flash/shrink/nothing) -> animation for keyboard-driven focus

mouse_focus_animation (flash/shrink/nothing) -> animation for mouse pressed focus (setting input:follow_mouse = 0, input:float_switch_override_focus = 0 and input:mouse_refocus = false is recommended)

animations configuration

animations can be configured within the plugin scope with the following syntax:

plugin:hyprfocus {
    <animation> {

    }
}

shared animation variables

in_bezier (bezier) -> bezier curve towards the animation apex

out_bezier (bezier) -> bezier curve towards the default window state

in_speed (float) -> speed for the 'in' bezier

out_speed (float) -> speed for the 'out' bezier

flash

flash_opacity (float) -> opacity to during the flash's apex

shrink

shrink_percentage (float) -> the amount a window has shrunk during the animation's apex

dispatching

hyprfocus can also flash the currently focused window through the animatefocused dispatcher:

bind = $mod, space, animatefocused

future plans

Image for: future plans

I'm mostly planning on implementing more animations, for example a popin-popout bounce animation. But if you have any suggestions, feel free to create a git issue!

About

Image for: About

a focus animation plugin for Hyprland inspired by Flashfocus

Topics

Resources

License

Stars

Watchers

Forks

Releases

Image for: Releases
No releases published