MCPcopy Create free account
hub / github.com/VortexCoyote/hyprfocus

github.com/VortexCoyote/hyprfocus @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
19 symbols 27 edges 7 files 1 documented · 5% updated 2y ago★ 18013 open issues

Browse by type

Functions 16 Types & classes 3
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

⚠️ 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

flash

preview

shrink

preview

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

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

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!

Core symbols most depended-on inside this repo

Shape

Method 10
Function 6
Class 3

Languages

C++100%

Modules by API surface

src/main.cpp7 symbols
src/IFocusAnimation.cpp4 symbols
src/Shrink.cpp2 symbols
src/IFocusAnimation.hpp2 symbols
src/Flash.cpp2 symbols
src/Shrink.hpp1 symbols
src/Flash.hpp1 symbols

For agents

$ claude mcp add hyprfocus \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page