{self, ...}: {
  flake.nixosModules.hyprland = {
    pkgs,
    pkgs-unstable,
    ...
  }: {
    environment.systemPackages = with pkgs; [
      awww #wallpaper daemon
      gruvbox-gtk-theme
      hyprcursor
      capitaine-cursors-themed # cursor theme
      papirus-icon-theme
      papirus-folders
      self.packages.${pkgs.system}.custom-wallpaper
      self.packages.${pkgs.system}.custom-dontkillsteam # kill app (if not steam or tomato-c
      self.packages.${pkgs.system}.custom-killall # kill all windows except focused window
      xdg-utils
    ];
    # enable hyprland WM
    programs.hyprland = {
      enable = true;
      package = pkgs-unstable.hyprland; # we use the unstable branch to get the latest features
      withUWSM = true;
      xwayland.enable = true;
    };

    xdg.portal = {
      enable = true;
      extraPortals = [
        pkgs.xdg-desktop-portal-wlr
        pkgs.xdg-desktop-portal-gtk
      ];
    };
    # removes uxterm
    services.xserver.excludePackages = [pkgs.xterm];

    # Enable the X11 windowing system.
    services.xserver.enable = true;
  };
  flake.homeModules.hyprland-laptop = _: {
    wayland.windowManager.hyprland.settings = {
      exec-once = [
        "qtbatticon" # custom battery tray
        "nixpkgs-notifier listen" # tracks PR merge in nixos-unstable
      ];
      monitor = [
        "eDP-1, highres@highrr, 0x0, 1"
      ];
    };
  };
  flake.homeModules.hyprland-desktop = _: {
    wayland.windowManager.hyprland.settings = {
      monitor = [
        ", highres@highrr, auto, 0.75"
      ];
    };
  };
  flake.homeModules.hyprland = {pkgs-unstable, ...}: let
    wallpaper = ../../assets/wallpaper1.jpg;
  in {
    #refer to https://wiki.hypr.land/Nix/Hyprland-on-Home-Manager/
    wayland.windowManager.hyprland.enable = true;
    wayland.windowManager.hyprland.package = pkgs-unstable.hyprland;
    #hint Electron apps to use on wayland;
    home.sessionVariables.NIXOS_OZONE_WL = "1";
    wayland.windowManager.hyprland.plugins = [
      #pkgs-unstable.hyprlandPlugins.hyprspace # currently broken
      pkgs-unstable.hyprlandPlugins.hypr-dynamic-cursors
    ];
    wayland.windowManager.hyprland.configType = "hyprlang";
    wayland.windowManager.hyprland.settings = {
      "$mod" = "SUPER";
      "$term" = "kitty";
      "$editor" = "nvim";
      "$notes" = "kitty --class \"custom-obsidianvaults\" --name \"Select Obsidian vault\" --hold custom-obsidianvaults";
      "$file" = "dolphin";
      "$browser" = "kitty --class \"custom-librewolfprofiles\" --name \"Select LibreWolf profile\" --hold custom-librewolfprofiles";
      # ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
      # █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
      animations = {
        enabled = true;
        bezier = [
          "wind, 0.05, 0.9, 0.1, 1.05"
          "winIn, 0.1, 1.1, 0.1, 1.1"
          "winOut, 0.3, -0.3, 0, 1"
          "liner, 1, 1, 1, 1"
        ];
        animation = [
          "windows, 1, 6, wind, slide"
          "windowsIn, 1, 6, winIn, slide"
          "windowsOut, 1, 5, winOut, slide"
          "windowsMove, 1, 5, wind, slide"
          "border, 1, 1, liner"
          "borderangle, 1, 30, liner, loop"
          "fade, 1, 10, default"
          "workspaces, 1, 5, wind"
        ];
      };

      # █▀▀ █▄░█ █░█
      # ██▄ █░▀█ ▀▄▀

      # See https://wiki.hyprland.org/Configuring/Environment-variables/
      env = [
        "PATH, $PATH:$scrPath"
        "XDG_CURRENT_DESKTOP,Hyprland"
        "XDG_SESSION_TYPE,wayland"
        "XDG_SESSION_DESKTOP,Hyprland"
        "QT_QPA_PLATFORM,wayland;xcb"
        "QT_QPAPLATFORMTHEME,qt6ct"
        "QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
        "MOZ_ENABLE_WAYLAND,1"
        "GDK_SCALE,1"
      ];

      # █ █▄░█ █▀█ █░█ ▀█▀
      # █ █░▀█ █▀▀ █▄█ ░█░

      input = {
        kb_layout = ["ch"];
        follow_mouse = 1;
        sensitivity = 0;
        force_no_accel = 1;
      };

      # █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀ █▀
      # █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ ▄█
      # caelestia shell drawers toggle dashboard
      # caelestia shell drawers toggle utilities

      bind = [
        #hyprland/utility keybindings
        "$mod, W, togglefloating"
        "$mod, G, togglegroup"
        "Alt, Return, fullscreen"
        "$mod, Left, movefocus, l"
        "$mod, Right, movefocus, r"
        "$mod, Up, movefocus, u"
        "$mod, Down, movefocus, d"
        "Alt, Tab, movefocus, d"
        "$mod, 1, workspace, 1"
        "$mod, 2, workspace, 2"
        "$mod, 3, workspace, 3"
        "$mod, 4, workspace, 4"
        "$mod, 5, workspace, 5"
        "$mod, 6, workspace, 6"
        "$mod, 7, workspace, 7"
        "$mod, 8, workspace, 8"
        "$mod, 9, workspace, 9"
        "$mod, 0, workspace, 10"
        "$mod+Ctrl, Right, workspace, r+1"
        "$mod+Ctrl, Left, workspace, r-1"
        "$mod+Ctrl, Doown, workspace, empty"
        "$mod+Shift, 1, movetoworkspace, 1"
        "$mod+Shift, 2, movetoworkspace, 2"
        "$mod+Shift, 3, movetoworkspace, 3"
        "$mod+Shift, 4, movetoworkspace, 4"
        "$mod+Shift, 5, movetoworkspace, 5"
        "$mod+Shift, 6, movetoworkspace, 6"
        "$mod+Shift, 7, movetoworkspace, 7"
        "$mod+Shift, 8, movetoworkspace, 8"
        "$mod+Shift, 9, movetoworkspace, 9"
        "$mod+Shift, 0, movetoworkspace, 10"
        "$mod+Ctrl+Alt, Right, movetoworkspace, r+1"
        "$mod+Ctrl+Alt, Left, movetoworkspace, r-1"
        #"$mod, Backspace, exec, wlogout -b 4 -T 600 -B 600"
        "$mod, Backspace, exec, caelestia shell drawers toggle session"
        "$mod+Shift+Ctrl, Left, movewindow, l"
        "$mod+Shift+Ctrl, Right, movewindow, r"
        "$mod+Shift+Ctrl, Up, movewindow, u"
        "$mod+Shift+Ctrl, Down, movewindow, d"
        "$mod, mouse_down, workspace, e+1"
        "$mod, mouse_up, workspace, e-1"
        "$mod, V, exec, cliphist list | rofi -dmenu| cliphist decode | wl-copy" # copy paste
        "$mod, B, exec, hyprkeys -bkr | rofi -dmenu"
        #"$mod, A, tagwindow, noborder" # used to not apply image border
        "$mod, S, togglespecialworkspace,"
        "Alt+$mod, S, movetoworkspace, special"
        # for the scrolling layout
        "$mod, A, layoutmsg, move -col"
        "$mod, D, layoutmsg, move +col"
        #apps keybindings
        "$mod, T, exec, $term"
        "$mod, E, exec, $file"
        "$mod, F, exec, $browser"
        "$mod, N, exec, $notes"
        #"$mod+Shift, A, exec, rofi -show drun"
        "$mod+Shift, A, exec, caelestia shell drawers toggle launcher"
        "$mod, Q, exec, custom-dontkillsteam"
        #"Ctrl+Alt, W, exec, pkill waybar || waybar"
        "Ctrl+Alt, W, exec, caelestia shell drawers toggle sidebar"
        #"$mod, L, exec, swaylock -eFLK -i ${wallpaper}"
        "$mod, L, exec, caelestia shell lock lock"
        #"$mod, F11, exec, hyprshot -m  window"
        ", F11, exec, caelestia screenshot"
        #"$mod_SHIFT, S, exec, hyprshot -m region --clipboard only"
        # "$mod_SHIFT, S, exec, qs ipc call screenshot toggle"
        "$mod_SHIFT, S, exec, caelestia shell picker open"
        # framework 16 rgb macropad
        "Ctrl+$mod, 6, exec, custom-killall" # pos 1 1 killall apps except focused one
        #"Ctrl+Alt, 7, exec, custom-performance" # pos 2 1 start performance mode
        "Ctrl+Alt, 7, exec, caelestia shell gameMode toggle"
        # reloads the autostart programs # pos 3 1
        # we passed to caelestia-shell and stoped using that
        /*
          "Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=16 -e sh -c 'custom-weather'"
        "Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=11 -e sh -c 'custom-cowsay'"
        "Ctrl+$mod, 4, exec, kitty -e 'custom-launch'"
        "Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=5 -e btm --theme gruvbox --disable-click --disable_advanced_kill --enable_cache_memory -g -R -T "
        "Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=1 -e sh -c 'cmatrix -br'"
        #"Ctrl+Alt, 1, exec, swaync-client -t" # pos 4 1 notification center
        "Ctrl+Alt, 1, exec, qs ipc call notifications toggle"
        */
        "Ctrl+Alt, 1, exec, caelestia shell drawers toggle sidebar"
        "Ctrl+$mod, 4, exec, caelestia shell notifs toggleDnd"
        "Ctrl+$mod, 3, exec, pavucontrol" # pos 1 2 audiocontrol
        "Ctrl+Shift+Alt, 0, exec, kitty --hold --class \"custom-changeAudioOutput\" --name \"Select audio output\" zsh -c \"custom-changeAudioOutput\"" # pos 2 2 change audio output fzf
        "Ctrl+$mod, 5, exec, gnome-characters" # pos 3 2 special chars
        "Ctrl+Alt, 8, exec, hyprpicker | tee >(wl-copy) | cliphist store" # pos 4 2 colorpicker
        "Ctrl+Alt, 0, exec, custom-tomato" # pos 1 3 pomodoro app
        "Ctrl+Alt, 2, exec, custom-bottom" # pos 2 3 btm (like htop but cleaner)
        "Ctrl+Alt, 9, exec, anki"
        # if hyprexpo plugin enabled bind = $mainMod, Space, hyprexpo:expo, toggle
        # maybe exec sudo framework-tools-tui

        #plugins keybindings
        #"$mod, SPACE, overview:toggle, "
      ];
      binde = [
        "$mod+Shift, Right, resizeactive, 30 0"
        "$mod+Shift, Left, resizeactive, -30, 0"
        "$mod+Shift, Up, resizeactive, 0 -30"
        "$mod+Shift, Down, resizeactive,m 0 30"
      ];
      bindl = [
        ", F1, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle" #toggle audio mute
        ", F5, exec, playerctl play-pause" # media F4-F6
        ", F4, exec, playerctl previous"
        ", F6, exec, playerctl next"
      ];
      bindel = [
        ", F2, exec, pactl set-sink-volume @DEFAULT_SINK@ -10%" # decrease volume
        ", F3, exec, pactl set-sink-volume @DEFAULT_SINK@ +10%" # increase volume
        ", F7, exec, brightnessctl s 10%-" # decrease brightness
        ", F8, exec, brightnessctl s +10%" # increase brightness
      ];
      bindm = [
        "$mod, mouse:272, movewindow"
        "$mod, mouse:273, resizewindow"
        "$mod, Z, movewindow"
        "$mod, X, resizewindow"
      ];
      # █░░ ▄▀█ █░█ █▄░█ █▀▀ █░█
      # █▄▄ █▀█ █▄█ █░▀█ █▄▄ █▀█
      exec-once = [
        "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" # for XDPH
        "dbus-update-activation-environment --systemd --all" # for XDPH
        "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" # for XDPH
        "systemctl --user start xdg-desktop-portal-wlr.service"
        "blueman-applet" # systray app for Bluetooth
        "udiskie --no-automount --smart-tray" # front-end that allows to manage removable media
        "nm-applet --indicator" # systray app for Network/wifi
        #setups clipboard
        "rm -rf ~/.cache/cliphist/ && wl-paste --type text --watch cliphist store & wl-paste --type image --watch cliphist store"
        #"wl-paste --type text --watch cliphist store" # clipboard store text data
        #"wl-paste --type image --watch cliphist store" # clipboard store image data
        "custom-batterynotify"
        "custom-batterywarning"
        #"birdtray" # thunderbird tray app # curently broken
        #wallpapers/b
        "awww img ${wallpaper}"
        "awww-daemon"
        "sleep 1 && custom-wallpaper"
        "custom-checkKdrive && custom-mountkdrive" # checks if the remote works and mount it
        #"waybar"
        "custom-gitnotify"
        "custom-checkMatrix" # checks if matrix-commander-rs is connected which is important for other stuff
        #"custom-obsidianbackup" # backups the obsidian notes to kdrive and to a timed hidden dir (~/.Notes.backup/)
        #"QS-notifycache" # builds the cache that will be used for the notification history
        "sleep 4 & caelestia-shell" #works better if it sleeps a bit before
        "sleep 20 && ngcp pull --automatic" # see github.com/tomasriveral/nix-git-cherry-picker
        /*
           We stopped using that ######################### maybe we should desactivate those scripts
        # login autostart
        #######################
        "[workspace 1 silent]  sleep 1 && kitty -o font_size=16 -e sh -c 'custom-weather'"
        "[workspace 1 silent] sleep 1 && kitty -o font_size=11 -e sh -c 'custom-cowsay'"
        "[workspace 1 silent] kitty -e 'custom-launch'"
        "[workspace 1 silent] sleep 1 && kitty -o font_size=5 -e btm --theme gruvbox --disable-click --disable_advanced_kill --enable_cache_memory -g -R -T "
        "[workspace 1 silent] sleep 1 && kitty -o font_size=1 -e sh -c 'cmatrix -br'"
        ######################
        ######################
        */
      ];
      splash = true; # remove default background on startup
      # gestures (also keybindings)
      gesture = [
        "3, right, move, +col"
        "3, left, move, -col"
      ];

      # █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀
      # █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█

      dwindle = {
        preserve_split = true;
      };
      scrolling = {
        column_width = 0.45;
      };

      # █▀▄▀█ █ █▀ █▀▀
      # █░▀░█ █ ▄█ █▄▄

      misc = {
        vrr = 0;
        force_default_wallpaper = 0;
      };
      xwayland = {
        force_zero_scaling = true;
      };

      # █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█
      # █░▀░█ █▄█ █#░▀█ █ ░█░ █▄█ █▀▄
      monitor = [
        #",preferred, auto, auto"
        "HDMI-A-1, highres2highrr, auto-left, 1"
      ];
      # _______  ___      __   __  _______  ___   __    _  _______
      #|       ||   |    |  | |  ||       ||   | |  |  | ||       |
      #|    _  ||   |    |  | |  ||    ___||   | |   |_| ||  _____|
      #|   |_| ||   |    |  |_|  ||   | __ |   | |       || |_____
      #|    ___||   |___ |       ||   ||  ||   | |  _    ||_____  |
      #|   |    |       ||       ||   |_| ||   | | | |   | _____| |
      #|___|    |_______||_______||_______||___| |_|  |__||_______|
      #
      "plugin:dynamic-cursors" = {
        enabled = true;
        threshold = 2;
        mode = "rotate";
        rotate = {
          # length in px of the simulated stick used to rotate the cursor
          # most realistic if this is your actual cursor size
          length = 20;
          offset = 0;
        };
        shake = {
          enabled = true;
          # use nearest-neighbour (pixelated) scaling when shaking
          # may look weird when effects are enabled
          nearest = true;
          threshold = 4;
          # magnification level immediately after shake start
          base = 4.0;
          # magnification increase per second when continuing to shake
          speed = 4.0;
          # how much the speed is influenced by the current shake intensitiy
          influence = 0.0;

          # maximal magnification the cursor can reach
          # values below 1 disable the limit (e.g. 0)
          limit = 0.0;

          # time in millseconds the cursor will stay magnified after a shake has ended
          timeout = 2000;

          # show cursor behaviour `tilt`, `rotate`, etc. while shaking
          effects = true;

          # enable ipc events for shake
          ipc = false;
        };
      };
      "plugin:overview" = {
        disableGestures = true;
        showEmptyWorkspace = true;
        workspaceActiveBorder = "rgb(ab7746)";
        disableBlur = true;
      };

      #####################################################
      #####################################################
      # theme
      decoration = {
        dim_special = 0.3;
        rounding = 18;
        blur = {
          special = true;
          enabled = true;
          size = 4;
          passes = 2;
          new_optimizations = true;
          ignore_opacity = true;
        };
      };
      general = {
        gaps_in = 5;
        gaps_out = 15;
        border_size = 4;
        "col.active_border" = "rgba(ca6702ff) rgba(ecd3a0ff) 45deg";
        "col.inactive_border" = "rgba(f1dca7d9) rgba(ffe1a8d9) 45deg";
        layout = "dwindle";
        resize_on_border = true;
      };
      group = {
        "col.border_active" = "rgba(ca6702ff) rgba(ecd3a0ff) 45deg";
        "col.border_inactive" = "rgba(f1dca7d9) rgba(ffe1a8d9) 45deg";
        "col.border_locked_active" = "rgba(ca6702ff) rgba(ecd3a0ff) 45deg";
        "col.border_locked_inactive" = "rgba(f1dca7d9) rgba(ffe1a8d9) 45deg";
      };
      ####################################################
      ##################################################

      # /$$      /$$                     /$$
      #| $$  /$ | $$                    | $$
      #| $$ /$$$| $$  /$$$$$$   /$$$$$$ | $$   /$$  /$$$$$$$  /$$$$$$   /$$$$$$   /$$$$$$$  /$$$$$$
      #| $$/$$ $$ $$ /$$__  $$ /$$__  $$| $$  /$$/ /$$_____/ /$$__  $$ |____  $$ /$$_____/ /$$__  $$
      #| $$$$_  $$$$| $$  \ $$| $$  \__/| $$$$$$/ |  $$$$$$ | $$  \ $$  /$$$$$$$| $$      | $$$$$$$$
      #| $$$/ \  $$$| $$  | $$| $$      | $$_  $$  \____  $$| $$  | $$ /$$__  $$| $$      | $$_____/
      #| $$/   \  $$|  $$$$$$/| $$      | $$ \  $$ /$$$$$$$/| $$$$$$$/|  $$$$$$$|  $$$$$$$|  $$$$$$$
      #|__/     \__/ \______/ |__/      |__/  \__/|_______/ | $$____/  \_______/ \_______/ \_______/
      #                                                     | $$
      #                                                     | $$
      #                                                     |__/
      #     see https://wiki.hypr.land/Configuring/Workspace-Rules/
      workspace = [
        "1, layout:master"
        "2, layout:scrolling, layoutopt:direction:right"
        "name:special, layout:scrolling"
        # used for smart gaps along some windowrules
        #"w[tv1], gapsout:1, gapsin:1"
        #"f[1], gapsout:1, gapsin:1"
      ];

      # █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀
      # ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█
      windowrule = [
        "opacity 0.90 0.90, match:class ^(firefox)$"
        "opacity 0.90 0.90, match:class ^(Brave-browser)$"
        "opacity 0.80 0.80, match:class ^(code-oss)$"
        "opacity 0.80 0.80, match:class ^(Code)$"
        "opacity 0.80 0.80, match:class ^(code-url-handler)$"
        "opacity 0.80 0.80, match:class ^(code-insiders-url-handler)$"
        "opacity 0.75 0.75, match:class ^(kitty)$"
        "opacity 0.80 0.80, match:class ^(org.kde.dolphin)$"
        "opacity 0.80 0.80, float on, match:class ^(org.kde.ark)$"
        "opacity 0.80 0.80, float on, match:class ^(nwg-look)$"
        "opacity 0.80 0.80, float on, match:class ^(qt5ct)$"
        "opacity 0.80 0.80, float on, match:class ^(qt6ct)$"
        "opacity 0.80 0.80, float on, match:class ^(kvantummanager)$"
        "opacity 0.80 0.70, float on, match:class ^(org.pulseaudio.pavucontrol)$"
        "opacity 0.80 0.70, float on, match:class ^(blueman-manager)$"
        "opacity 0.80 0.70, float on, match:class ^(nm-applet)$"
        "opacity 0.80 0.70, float on, match:class ^(nm-connection-editor)$"
        "opacity 0.80 0.70, float on, match:class ^(org.kde.polkit-kde-authentication-agent-1)$"
        "opacity 0.80 0.70, match:class ^(polkit-gnome-authentication-agent-1)$"
        "opacity 0.80 0.70, match:class ^(org.freedesktop.impl.portal.desktop.gtk)$"
        "opacity 0.80 0.70, match:class ^(org.freedesktop.impl.portal.desktop.hyprland)$"
        "opacity 0.70 0.70, match:class ^([Ss]team)$"
        "opacity 0.70 0.70, match:class ^(steamwebhelper)$"
        "opacity 0.70 0.70, match:class ^(Spotify)$"
        "opacity 0.70 0.70, match:initial_title ^(Spotify Free)$"
        "opacity 0.90 0.90, float on, match:class ^(com.github.rafostar.Clapper)$"
        "opacity 0.80 0.80, match:class ^(com.github.tchx84.Flatseal)$"
        "opacity 0.80 0.80, match:class ^(hu.kramo.Cartridges)$"
        "opacity 0.80 0.80, match:class ^(com.obsproject.Studio)$"
        "opacity 0.80 0.80, match:class ^(gnome-boxes)$"
        "opacity 0.80 0.80, match:class ^(discord)$"
        "opacity 0.80 0.80, match:class ^(WebCord)$"
        "opacity 0.80 0.80, match:class ^(ArmCord)$"
        "opacity 0.80 0.80, float on, match:class ^(app.drey.Warp)$"
        "opacity 0.80 0.80, float on, match:class ^(net.davidotek.pupgui2)$"
        "opacity 0.80 0.80, float on, match:class ^(yad)$"
        "opacity 0.80 0.80, float on, match:class ^(Signal)$"
        "opacity 0.80 0.80, float on, match:class ^(io.github.alainm23.planify)$"
        "opacity 0.80 0.80, float on, match:class ^(io.gitlab.theevilskeleton.Upscaler)$"
        "opacity 0.80 0.80, float on, match:class ^(com.github.unrud.VideoDownloader)$"
        "opacity 0.80 0.80, float on, match:class ^(io.gitlab.adhami3310.Impression)$"
        "opacity 0.80 0.80, float on, match:class ^(io.missioncenter.MissionCenter)$"
        "opacity 0.80 0.80, match:class ^(io.github.flattool.Warehouse)$"
        "float on, match:class ^(org.kde.dolphin)$, match:title ^(Progress Dialog — Dolphin)$"
        "float on, match:class ^(org.kde.dolphin)$, match:title ^(Copying — Dolphin)$"
        "float on, match:class ^(firefox)$, match:title ^(Picture-in-Picture)$"
        "float on, match:class ^(firefox)$, match:title ^(Library)$"
        "float on, match:class ^(kitty)$, match:title ^(top)$"
        "float on, match:class ^(kitty)$, match:title ^(btop)$"
        "float on, match:class ^(kitty)$, match:title ^(htop)$"
        "float on, match:class ^(vlc)$"
        "float on, match:class ^(eog)$"
        "float on, size 400 225, match:class ^(custom-librewolfprofiles)$"
        "float on, size 1050 200, match:class ^(custom-changeAudioOutput)$"
        "float on, size 400 175, match:class ^(custom-obsidianvaults)$"
        "float on, size 600 600, match:initial_class ^(custom-pomodoro)$"
        "float on, size 1500 800, match:initial_class ^(custom-bottom)$"
        # smart gaps/border is ugly with caelestia-shell
        #"border_size 2, match:float 0, match:workspace w[tv1]"
        #"rounding 1, match:float 0, match:workspace w[tv1]"
        #"border_size 2, match:float 0, match:workspace f[1]"
        #"rounding 1, match:float 0, match:workspace f[1]"
      ];
      # add a float for tomato when in kitty
      #"plugin:imgborders:noimgborders, tag:noborder"
      layerrule = [
        "blur on, ignore_alpha 0, match:namespace rofi"
        "blur on, ignore_alpha 0, match:namespace notifications"
        "blur on, ignore_alpha 0, match:namespace swaync-notification-window"
        "blur on, ignore_alpha 0, match:namespace swaync-control-center"
        "blur on, match:namespace logout_dialog"
      ];
    };
  };
}
