7 files changed,
349 insertions(+),
54 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2026-07-27 11:33:55 +0300
Authored at:
2026-07-25 18:24:07 +0300
Parent:
0387f74
M
config/kitty/kitty.conf
··· 38 38 focus_follows_mouse no 39 39 40 40 ## Mappings 41 -map alt+1 goto_tab 1 42 -map alt+2 goto_tab 2 43 -map alt+3 goto_tab 3 44 -map alt+4 goto_tab 4 45 -map alt+5 goto_tab 5 46 -map alt+6 goto_tab 6 47 -map alt+7 goto_tab 7 48 -map alt+8 goto_tab 8 49 -map alt+9 goto_tab 9 41 +# map alt+1 goto_tab 1 42 +# map alt+2 goto_tab 2 43 +# map alt+3 goto_tab 3 44 +# map alt+4 goto_tab 4 45 +# map alt+5 goto_tab 5 46 +# map alt+6 goto_tab 6 47 +# map alt+7 goto_tab 7 48 +# map alt+8 goto_tab 8 49 +# map alt+9 goto_tab 9 50 50 map kitty_mod+t new_tab_with_cwd 51 51 map kitty_mod+enter new_window_with_cwd 52 52
M
config/niri/config.kdl
··· 1 1 // vim: foldenable foldmethod=marker ts=2 sw=2 2 2 // auto start {{{ 3 -spawn-at-startup "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1" 4 -spawn-at-startup "~/.config/niri/waybar" 5 -spawn-at-startup "dunst" 6 -spawn-at-startup "hypridle" "-c" "/home/olex/.config/niri/hypridle.conf" 3 +spawn-at-startup "noctalia" 7 4 // }}} 8 5 // env {{{ 9 6 environment { 10 - QT_QPA_PLATFORM "wayland;xcb" 7 + XDG_CURRENT_DESKTOP "niri" 8 + ELECTRON_OZONE_PLATFORM_HINT "auto" 9 + GTK_IM_MODULE "simple" 10 + MOZ_ENABLE_WAYLAND "1" 11 + QT_QPA_PLATFORM "wayland" 12 + QT_QPA_PLATFORMTHEME "gtk3" 13 + QT_QPA_PLATFORMTHEME_QT6 "gtk3" 11 14 QT_WAYLAND_DISABLE_WINDOWDECORATION "1" 12 - MOZ_ENABLE_WAYLAND "1" 13 - GTK_IM_MODULE "simple" 14 15 } 15 16 // }}} 16 17 // inputs {{{ ··· 39 40 accel-profile "flat" 40 41 } 41 42 } 43 + 44 +switch-events { 45 + lid-close { spawn "noctalia" "msg" "session" "lock-and-suspend"; } 46 +} 42 47 /// }}} 43 48 // Monitors {{{ 44 49 // https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs ··· 78 83 } 79 84 // }}} 80 85 // general {{{ 81 -// disables client-side decorrations if possible 82 86 prefer-no-csd 83 87 hotkey-overlay { skip-at-startup; } 84 88 animations { off; } 89 +debug { honor-xdg-activation-with-invalid-serial; } 85 90 screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" 86 91 // }}} 87 92 // window/workspace rules {{{ ··· 112 117 window-rule { 113 118 match app-id="spotify" 114 119 match app-id="org.gnome.Snapshot" 115 - match app-id="org.gnome.Calendar" 116 120 match app-id="org.keepassxc.KeePassXC" 117 121 open-on-workspace "laptop" 118 122 } ··· 120 124 window-rule { 121 125 match app-id="Spotify" 122 126 match app-id="spotify" 123 - match app-id="zen" 124 127 match app-id="firefox" 125 128 match app-id="helium" 126 129 match app-id="Brave-browser" ··· 147 150 match app-id="org.telegram.desktop" 148 151 block-out-from "screen-capture" 149 152 } 153 + 154 +// noctalia 155 +layer-rule { 156 + match namespace="^noctalia-backdrop" 157 + place-within-backdrop true 158 +} 159 + 160 +window-rule { 161 + match app-id="dev.noctalia.Noctalia" 162 + open-floating true 163 + default-column-width { fixed 1080; } 164 + default-window-height { fixed 920; } 165 +} 150 166 // }}} 151 167 // keybinds {{{ 152 168 binds { 153 - Mod+d { spawn "dunstctl" "close"; } 154 169 Mod+q { close-window; } 155 - Mod+Alt+l { spawn "hyprlock"; } 156 - Mod+Return { spawn "ghostty"; } 157 - Mod+Shift+Escape { spawn "~/bin/wofi-power-menu" "niri";} 158 - Mod+Shift+Return { spawn "wofi"; } 170 + Mod+d { spawn "noctalia" "msg" "notification-clear-active"; } 171 + Mod+Alt+l { spawn "noctalia" "msg" "session" "lock"; } 172 + Mod+Shift+Escape { spawn "noctalia" "msg" "panel-toggle" "session"; } 173 + Mod+Shift+Return { spawn "noctalia" "msg" "panel-toggle" "launcher"; } 159 174 175 + Mod+Return { spawn "ghostty"; } 160 176 Mod+Shift+a { spawn "anki"; } 161 - Mod+Shift+r { spawn "sioyek"; } 162 - Mod+Shift+s { spawn "gelly"; } 177 + Mod+Shift+d { spawn "discord"; } 178 + Mod+Shift+s { spawn "sioyek"; } 163 179 Mod+Shift+t { spawn "Telegram"; } 164 180 Mod+Shift+w { spawn "helium-browser"; } 181 + 165 182 // func keys {{{ 166 - // audio 183 + XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%+"; } 167 184 XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-"; } 168 - XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } 169 185 XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } 170 - XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; } 171 - XF86AudioPlay allow-when-locked=true { spawn "playerctl" "play-pause"; } 172 - XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; } 173 - XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%+"; } 186 + XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } 187 + XF86AudioNext { spawn "playerctl" "next"; } 188 + XF86AudioPlay { spawn "playerctl" "play-pause"; } 189 + XF86AudioPrev { spawn "playerctl" "previous"; } 174 190 // brighthness 175 191 XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "set" "5%-"; } 176 192 XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "set" "+5%"; } ··· 183 199 Mod+O repeat=false { toggle-overview; } 184 200 Alt+Tab { focus-window-previous; } 185 201 186 - // window management {{{ 202 + // window management 187 203 Mod+Ctrl+f { toggle-window-floating; } 188 - 189 204 Mod+r { switch-preset-column-width; } 190 205 Mod+t { maximize-column; } 191 206 Mod+f { fullscreen-window; }
M
config/opencode/AGENTS.md
··· 1 1 # Plans 2 2 - At the end of each plan, give me a list of unresolved questions to answer, if any. Make the questions extremely concise. Sacrifice grammar for the sake of concision. 3 3 4 +# Code Style 5 +- Write the simplest correct implementation. No more. 6 +- Do not add defensive nil/error checks for conditions the type system or caller guarantees. 7 +- No comments on obvious code. Comments explain *why*, not *what*. 8 +- Do not extract one-use helpers. Inline unless used ≥2 times. 9 +- Do not create new types unless grouping data or implementing an interface. 10 +- Do not add input validation beyond existing patterns for the same thing. 11 + 4 12 # MCPs 5 13 - If you are unsure how to do something, use `grep-app` to search code examples from GitHub. 6 14 - When you need to search docs, use `context7` tools.
A
misc/noctalia.toml
··· 1 +[audio] 2 +enable_overdrive = true 3 + 4 +[backdrop] 5 +enabled = true 6 +tint_intensity = 0.79999998211860657 7 + 8 +[bar.default] 9 +capsule = true 10 +end = [ "keyboard_layout", "tray", "battery", "cpu", "volume", "clipboard", "notifications", "bluetooth", "network" ] 11 +margin_ends = 0 12 +padding = 16 13 +panel_overlap = 0 14 +radius = 0 15 +shadow = false 16 +start = [ "workspaces", "active_window" ] 17 +thickness = 35 18 + 19 +[battery] 20 +warning_threshold = 30 21 + 22 +[calendar] 23 +enabled = true 24 +refresh_minutes = 20 25 + 26 + [calendar.account.personal_google] 27 + name = "Google Calendar" 28 + type = "google" 29 + 30 +[control_center] 31 +hidden_tabs = [ "media", "monitor" ] 32 + 33 + [[control_center.shortcuts]] 34 + type = "wifi" 35 + 36 + [[control_center.shortcuts]] 37 + type = "caffeine" 38 + 39 + [[control_center.shortcuts]] 40 + type = "nightlight" 41 + 42 + [[control_center.shortcuts]] 43 + type = "notification" 44 + 45 + [[control_center.shortcuts]] 46 + type = "power_profile" 47 + 48 + [[control_center.shortcuts]] 49 + type = "dark_mode" 50 + 51 +[desktop_widgets] 52 +enabled = false 53 +schema_version = 2 54 +widget_order = [ "desktop-widget-0000000000000001" ] 55 + 56 + [desktop_widgets.grid] 57 + cell_size = 16 58 + major_interval = 4 59 + visible = true 60 + 61 + [desktop_widgets.widget.desktop-widget-0000000000000001] 62 + box_height = 0.0 63 + box_width = 0.0 64 + cx = 1796.0 65 + cy = 124.0 66 + output = "HDMI-A-1" 67 + rotation = 0.0 68 + type = "sysmon" 69 + 70 + [desktop_widgets.widget.desktop-widget-0000000000000001.settings] 71 + stat = "cpu_usage" 72 + stat2 = "cpu_temp" 73 + 74 +[idle] 75 +behavior_order = [ "lock", "screen-off", "lock-and-suspend" ] 76 + 77 + [idle.behavior.lock] 78 + action = "lock" 79 + enabled = true 80 + timeout = 600.0 81 + 82 + [idle.behavior.lock-and-suspend] 83 + action = "lock_and_suspend" 84 + enabled = true 85 + timeout = 900.0 86 + 87 + [idle.behavior.screen-off] 88 + action = "screen_off" 89 + enabled = true 90 + timeout = 660.0 91 + 92 +[location] 93 +address = "Городниця Звягель" 94 +custom_schedule = true 95 +sunrise = "06:00" 96 +sunset = "22:30" 97 + 98 +[lockscreen] 99 +fingerprint = false 100 + 101 +[lockscreen_widgets] 102 +enabled = true 103 +schema_version = 2 104 +widget_order = [ 105 + "lockscreen-login-box@HDMI-A-1", 106 + "lockscreen-login-box@eDP-1", 107 + "lockscreen-widget-0000000000000001", 108 + "lockscreen-widget-0000000000000002" 109 +] 110 + 111 + [lockscreen_widgets.grid] 112 + cell_size = 8 113 + major_interval = 4 114 + visible = true 115 + 116 + [lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-1"] 117 + box_height = 80.0 118 + box_width = 384.0 119 + cx = 960.0 120 + cy = 664.0 121 + output = "HDMI-A-1" 122 + rotation = 0.0 123 + type = "login_box" 124 + 125 + [lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-1".settings] 126 + background_color = "surface_variant" 127 + background_opacity = 0.0 128 + background_radius = 0.0 129 + center_password_text = false 130 + input_opacity = 1.0 131 + input_radius = 6.0 132 + show_caps_lock = true 133 + show_keyboard_layout = true 134 + show_login_button = false 135 + show_password_hint = true 136 + 137 + [lockscreen_widgets.widget."lockscreen-login-box@eDP-1"] 138 + box_height = 70.0 139 + box_width = 400.0 140 + cx = 972.0 141 + cy = 639.0 142 + output = "eDP-1" 143 + rotation = 0.0 144 + type = "login_box" 145 + 146 + [lockscreen_widgets.widget."lockscreen-login-box@eDP-1".settings] 147 + background_color = "surface_variant" 148 + background_opacity = 0.0 149 + background_radius = 12.0 150 + center_password_text = false 151 + input_opacity = 1.0 152 + input_radius = 6.0 153 + show_caps_lock = true 154 + show_keyboard_layout = true 155 + show_login_button = false 156 + show_password_hint = true 157 + 158 + [lockscreen_widgets.widget.lockscreen-widget-0000000000000001] 159 + box_height = 192.0 160 + box_width = 336.0 161 + cx = 960.0 162 + cy = 556.0 163 + output = "HDMI-A-1" 164 + rotation = 0.0 165 + type = "clock" 166 + 167 + [lockscreen_widgets.widget.lockscreen-widget-0000000000000001.settings] 168 + background = false 169 + 170 + [lockscreen_widgets.widget.lockscreen-widget-0000000000000002] 171 + box_height = 216.0 172 + box_width = 376.0 173 + cx = 960.0 174 + cy = 532.0 175 + output = "eDP-1" 176 + rotation = 0.0 177 + type = "clock" 178 + 179 + [lockscreen_widgets.widget.lockscreen-widget-0000000000000002.settings] 180 + background = false 181 + 182 +[nightlight] 183 +enabled = true 184 + 185 +[notification] 186 +collapse_on_dismiss = false 187 + 188 +[osd.kinds] 189 +keyboard_layout = false 190 +media = false 191 + 192 +[[plugins.source]] 193 +enabled = false 194 +kind = "git" 195 +location = "https://github.com/noctalia-dev/official-plugins" 196 +name = "official" 197 + 198 +[[plugins.source]] 199 +enabled = false 200 +kind = "git" 201 +location = "https://github.com/noctalia-dev/community-plugins" 202 +name = "community" 203 + 204 +[shell] 205 +clipboard_history_max_entries = 50 206 +niri_overview_type_to_launch_enabled = true 207 +polkit_agent = true 208 +popup_shadows = false 209 +screen_time_enabled = true 210 +settings_show_advanced = false 211 +show_location = false 212 + 213 + [shell.animation] 214 + enabled = false 215 + 216 + [shell.launcher] 217 + categories = false 218 + compact = true 219 + 220 + [shell.panel] 221 + clipboard_placement = "attached" 222 + open_near_click_clipboard = true 223 + open_near_click_control_center = true 224 + open_near_click_session = true 225 + 226 +[system.monitor] 227 +cpu_temp_activity_threshold = 55 228 +gpu_temp_activity_threshold = 55 229 + 230 +[theme] 231 +builtin = "Ayu" 232 +community_palette = "Peche" 233 +custom_palette = "wall-mc" 234 +mode = "dark" 235 +source = "community" 236 + 237 + [theme.templates] 238 + enable_community_templates = false 239 + 240 +[wallpaper] 241 +directory = "/home/olex/Pictures/walls" 242 +transition = [ "disc", "fade", "honeycomb", "stripes", "wipe", "zoom" ] 243 + 244 + [wallpaper.default] 245 + path = "/home/olex/Pictures/walls/31394ad8a3bdd0dd.PNG" 246 + 247 + [wallpaper.last] 248 + path = "/home/olex/Pictures/walls/31394ad8a3bdd0dd.PNG" 249 + 250 + [wallpaper.monitors.HDMI-A-1] 251 + path = "/home/olex/Pictures/walls/31394ad8a3bdd0dd.PNG" 252 + 253 + [wallpaper.monitors.eDP-1] 254 + path = "/home/olex/Pictures/walls/31394ad8a3bdd0dd.PNG" 255 + 256 +[widget.active_window] 257 +display = "text_only" 258 +interactive = false 259 +max_length = 360 260 +min_length = 0 261 + 262 +[widget.battery] 263 +display_mode = "graphic" 264 +hide_when_full = true 265 + 266 +[widget.bluetooth] 267 +enabled = false 268 + 269 +[widget.clock] 270 +format = "{:%H:%M %a, %d}" 271 + 272 +[widget.cpu] 273 +stat = "cpu_temp" 274 + 275 +[widget.keyboard_layout] 276 +show_icon = false 277 + 278 + [widget.keyboard_layout.custom_labels] 279 + "English (US)" = "eng" 280 + Ukrainian = "укр" 281 + 282 +[widget.workspaces] 283 +active_pill_size = 1.5
M
pacman.txt
··· 1 1 age 2 2 bat 3 -bc 4 3 blueman 5 4 brightnessctl 6 5 ctags 7 6 dash 8 7 direnv 9 -dunst 10 8 entr 11 9 eza 12 10 fd 13 11 fish 14 12 fzf 15 -gdb 16 13 ghostty 17 14 git 18 15 git-delta 19 16 github-cli 20 17 gnome-keyring 21 18 gnu-free-fonts 22 -grim 23 19 htop 24 -hypridle 25 -hyprlock 26 -impala 27 20 iwd 28 21 jujutsu 29 22 keepassxc 30 23 kitty 31 24 ly 25 +matugen 32 26 mergiraf 33 27 mise 34 28 mpv 29 +mpv-mpris 35 30 niri 36 31 nix 37 32 noto-fonts 33 +noto-fonts-cjk 38 34 noto-fonts-emoji 39 -opam 40 35 openssh 41 36 pipewire 42 37 pipewire-pulse 43 38 playerctl 44 -podman 45 39 polkit-gnome 46 40 power-profiles-daemon 41 +qt6-multimedia-ffmpeg 47 42 ripgrep 48 -rsync 49 -rustup 50 43 sd 51 44 selene 52 -slurp 53 -snapshot 54 -starship 55 45 stylua 56 46 syncthing 57 -taplo-cli 58 47 tealdeer 59 48 telegram-desktop 60 49 tmux ··· 65 54 ttf-jetbrains-mono 66 55 ttf-jetbrains-mono-nerd 67 56 ttf-liberation 68 -waybar 69 57 wget 70 58 wireguard-tools 71 -wiremix 72 59 wireplumber 73 60 xdg-desktop-portal-gnome 61 +xdg-desktop-portal-gtk 74 62 xh 63 +xwayland-satellite 75 64 yazi 76 -zathura 77 -zathura-pdf-mupdf 78 65 zoxide