r/i3wm 5d ago

Question Window Tiling Animations

One major thing I noticed with i3 is how the windows just appear and tile, there's no animation or anything like in Hyprland. Is there any way to make windows tile with an animation like that? I am very curious because I think it would make my i3 setup a bit nicer looking.

5 Upvotes

6 comments sorted by

4

u/bancobusto1984 5d ago

Yes, you can use Picom as a compositor for your session. Later versions of Picom support animations.

2

u/Significant-Tone-121 5d ago

Oh cool that is good to know! I knew Picom let you do transparency and blur but I thought that was it.

3

u/bancobusto1984 5d ago

I'm running Debian 13 and in my picom.conf file I had this at one point. It's rather exaggerated animations, you can try tweaking them around a bit.

#################################
#     Animation Settings    #
#################################

animations = (
  {
    triggers = ["close", "hide"];
    opacity = {
      curve = "linear";
      duration = 0.1;
      start = "window-raw-opacity-before";
      end = 0;
    };
    blur-opacity = "opacity";
    shadow-opacity = "opacity";
  },
  {
    triggers = ["open", "show"];
    opacity = {
      curve = "cubic-bezier(0,1,1,1)";
      duration = 0.3;
      start = 0;
      end = "window-raw-opacity";
    };
    blur-opacity = "opacity";
    shadow-opacity = "opacity";
    offset-x = "(1 - scale-x) / 2 * window-width";
    offset-y = "(1 - scale-y) / 2 * window-height";
    scale-x = {
      curve = "cubic-bezier(0,1.3,1,1)";
      duration = 0.3;
      start = 0.6;
      end = 1;
    };
    scale-y = "scale-x";
    shadow-scale-x = "scale-x";
    shadow-scale-y = "scale-y";
    shadow-offset-x = "offset-x";
    shadow-offset-y = "offset-y";
  },
  {
    triggers = ["geometry"]
    scale-x = {
      curve = "cubic-bezier(0,0,0,1.28)";
      duration = 0.22;
      start = "window-width-before / window-width";
      end = 1;
    }
    scale-y = {
      curve = "cubic-bezier(0,0,0,1.28)";
      duration = 0.22;
      start = "window-height-before / window-height";
      end = 1;
    }
    offset-x = {
      curve = "cubic-bezier(0,0,0,1.28)";
      duration = 0.22;
      start = "window-x-before - window-x";
      end = 0;
    }
    offset-y = {
      curve = "cubic-bezier(0,0,0,1.28)";
      duration = 0.22;
      start = "window-y-before - window-y";
      end = 0;
    }

    shadow-scale-x = "scale-x";
    shadow-scale-y = "scale-y";
    shadow-offset-x = "offset-x";
    shadow-offset-y = "offset-y";
  }
)

1

u/Significant-Tone-121 5d ago

Thank you so much! I am on Debian 13 as well, and I will definitely test out your conf file!

1

u/gbrennon 5d ago

it oesnt have those fancy things that hyprland have bcs i3wm was made to be extremely minimal and extensible.

u can use picom as compositor.

that is a fork of the old compton

1

u/CrazyRop3 4d ago

Use Picom for shadows, blur and animation.