add niri config

This commit is contained in:
Alexander Navarro 2025-10-26 16:19:47 -03:00
parent 7c1b64881b
commit 5b5e426d94
7 changed files with 501 additions and 3 deletions

View file

@ -21,6 +21,7 @@ depends = []
"configs/mako" = "~/.config/mako"
"configs/mise" = "~/.config/mise"
"configs/mpv" = "~/.config/mpv"
"configs/niri" = "~/.config/niri"
"configs/nvim" = "~/.config/nvim"
"configs/rofi" = "~/.config/rofi"
"configs/swappy" = "~/.config/swappy"

View file

@ -7,3 +7,17 @@ monitorv2 {
supports_wide_color = true
supports_hdr = true
}
monitorv2 {
output = desc:LG Electronics LG ULTRAWIDE 406NTRL99958
mode = 3440x1440@159.96
position = auto
supports_wide_color = 1
supports_hdr = 1
}
workspace = 1, monitor:DP-1, persistent:true
workspace = 2, monitor:DP-1, persistent:true
workspace = 3, monitor:DP-1, persistent:true
workspace = 4, monitor:DP-1, persistent:true
workspace = 5, monitor:DP-1, persistent:true

View file

@ -72,13 +72,20 @@ general {
layout = master
}
# decoration {
decoration {
# rounding = 2
# drop_shadow = true
# shadow_range = 4
# shadow_render_power = 3
# col.shadow = rgba($baseAlphaee)
# }
blur {
enabled = false
}
shadow {
enabled = false
}
}
animations {
enabled = true
@ -118,6 +125,7 @@ misc {
mouse_move_focuses_monitor = false
animate_manual_resizes = false
vrr = 0
}
# ── Layouts ───────────────────────────────────────────────────────────

443
configs/niri/config.kdl Normal file
View file

@ -0,0 +1,443 @@
input {
keyboard {
xkb {
layout "latam"
options "caps:escape"
}
// Enable numlock on startup, omitting this setting disables it.
numlock
}
// Next sections include libinput settings.
// Omitting settings disables them, or leaves them at their default values.
// All commented-out settings here are examples, not defaults.
touchpad {
// off
tap
// dwt
// dwtp
// drag false
// drag-lock
natural-scroll
// accel-speed 0.2
// accel-profile "flat"
// scroll-method "two-finger"
// disabled-on-external-mouse
}
mouse {
// off
// natural-scroll
// accel-speed 0.2
// accel-profile "flat"
// scroll-method "no-scroll"
}
trackpoint {
// off
// natural-scroll
// accel-speed 0.2
// accel-profile "flat"
// scroll-method "on-button-down"
// scroll-button 273
// scroll-button-lock
// middle-emulation
}
// warp-mouse-to-focus
focus-follows-mouse
}
output "DP-1" {
variable-refresh-rate on-demand=true
}
layout {
gaps 10
always-center-single-column
center-focused-column "never"
preset-column-widths {
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
proportion 0.33333
proportion 0.5
proportion 0.66667
}
preset-window-heights {
}
default-column-width {
}
focus-ring {
// Uncomment this line to disable the focus ring.
// off
// How many logical pixels the ring extends out from the windows.
width 2
active-color "#7fc8ff"
inactive-color "#505050"
}
}
spawn-at-startup "/usr/lib/pam_kwallet_init"
spawn-at-startup "udieskiiw"
spawn-at-startup "brave"
// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup:
// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell"
hotkey-overlay {
skip-at-startup
}
// Uncomment this line to ask the clients to omit their client-side decorations if possible.
// If the client will specifically ask for CSD, the request will be honored.
// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
// This option will also fix border/focus ring drawing behind some semitransparent windows.
// After enabling or disabling this, you need to restart the apps for this to take effect.
// prefer-no-csd
screenshot-path null
animations {
// Uncomment to turn off all animations.
// off
// Slow down all animations by this factor. Values below 1 speed them up instead.
// slowdown 3.0
}
window-rule {
// This regular expression is intentionally made as specific as possible,
// since this is the default config, and we want no false positives.
// You can get away with just app-id="wezterm" if you want.
match app-id="^org\\.wezfurlong\\.wezterm$"
default-column-width {
}
}
window-rule {
match app-id="firefox$" title="^Picture-in-Picture$"
open-floating true
}
window-rule {
match app-id="^org\\.keepassxc\\.KeePassXC$"
match app-id="^org\\.gnome\\.World\\.Secrets$"
// block-out-from "screen-capture"
// Use this instead if you want them visible on third-party screenshot tools.
block-out-from "screencast"
}
window-rule {
match app-id="brave-browser"
match at-startup=true
default-column-width {
proportion 0.75
}
}
window-rule {
geometry-corner-radius 4
clip-to-geometry true
}
binds {
Mod+Shift+Slash {
show-hotkey-overlay
}
Mod+Return hotkey-overlay-title="Open a Terminal: kitty" {
spawn "kitty"
}
Mod+D hotkey-overlay-title="Run an Application: Rofi" {
spawn "rofi" "-show" "drun" "-run-command" "uwsm app -- {cmd}"
}
XF86AudioRaiseVolume allow-when-locked=true {
spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"
}
XF86AudioLowerVolume allow-when-locked=true {
spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"
}
XF86AudioMute allow-when-locked=true {
spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
}
XF86AudioMicMute allow-when-locked=true {
spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
}
XF86MonBrightnessUp allow-when-locked=true {
spawn "brightnessctl" "--class=backlight" "set" "+10%"
}
XF86MonBrightnessDown allow-when-locked=true {
spawn "brightnessctl" "--class=backlight" "set" "10%-"
}
// Open/close the Overview: a zoomed-out view of workspaces and windows.
// You can also move the mouse into the top-left hot corner,
// or do a four-finger swipe up on a touchpad.
Mod+A repeat=false {
toggle-overview
}
Mod+Shift+Q repeat=false {
close-window
}
Mod+Tab {
focus-column-right-or-first
}
Mod+shift+Tab {
focus-column-left-or-last
}
Mod+Left {
focus-column-left
}
Mod+Down {
focus-window-or-workspace-down
}
Mod+Up {
focus-window-or-workspace-up
}
Mod+Right {
focus-column-right
}
Mod+H {
focus-column-left
}
Mod+J {
focus-window-or-workspace-down
}
Mod+K {
focus-window-or-workspace-up
}
Mod+L {
focus-column-right
}
Mod+Shift+Left {
move-column-left
}
Mod+Shift+Down {
move-window-down-or-to-workspace-down
}
Mod+Shift+Up {
move-window-up-or-to-workspace-up
}
Mod+Shift+Right {
move-column-right
}
Mod+Shift+H {
move-column-left
}
Mod+Shift+J {
move-window-down-or-to-workspace-down
}
Mod+Shift+K {
move-window-up-or-to-workspace-up
}
Mod+Shift+L {
move-column-right
}
Mod+Home {
focus-column-first
}
Mod+End {
focus-column-last
}
Mod+Ctrl+Home {
move-column-to-first
}
Mod+Ctrl+End {
move-column-to-last
}
Mod+WheelScrollDown cooldown-ms=150 {
focus-column-right
}
Mod+WheelScrollUp cooldown-ms=150 {
focus-column-left
}
Mod+Ctrl+WheelScrollDown cooldown-ms=150 {
move-column-to-workspace-down
}
Mod+Ctrl+WheelScrollUp cooldown-ms=150 {
move-column-to-workspace-up
}
Mod+WheelScrollRight {
focus-column-right
}
Mod+WheelScrollLeft {
focus-column-left
}
Mod+Ctrl+WheelScrollRight {
move-column-right
}
Mod+Ctrl+WheelScrollLeft {
move-column-left
}
Mod+Shift+WheelScrollDown cooldown-ms=150 {
focus-workspace-down
}
Mod+Shift+WheelScrollUp cooldown-ms=150 {
focus-workspace-up
}
Mod+Ctrl+Shift+WheelScrollDown {
move-column-right
}
Mod+Ctrl+Shift+WheelScrollUp {
move-column-left
}
// Similarly, you can bind touchpad scroll "ticks".
// Touchpad scrolling is continuous, so for these binds it is split into
// discrete intervals.
// These binds are also affected by touchpad's natural-scroll, so these
// example binds are "inverted", since we have natural-scroll enabled for
// touchpads by default.
// Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; }
// Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; }
Mod+1 {
focus-workspace 1
}
Mod+2 {
focus-workspace 2
}
Mod+3 {
focus-workspace 3
}
Mod+4 {
focus-workspace 4
}
Mod+5 {
focus-workspace 5
}
Mod+6 {
focus-workspace 6
}
Mod+7 {
focus-workspace 7
}
Mod+8 {
focus-workspace 8
}
Mod+9 {
focus-workspace 9
}
Mod+Shift+1 {
move-window-to-workspace 1
}
Mod+Shift+2 {
move-window-to-workspace 2
}
Mod+Shift+3 {
move-window-to-workspace 3
}
Mod+Shift+4 {
move-window-to-workspace 4
}
Mod+Shift+5 {
move-window-to-workspace 5
}
Mod+Shift+6 {
move-window-to-workspace 6
}
Mod+Shift+7 {
move-window-to-workspace 7
}
Mod+Shift+8 {
move-window-to-workspace 8
}
Mod+Shift+9 {
move-window-to-workspace 9
}
// Switches focus between the current and the previous workspace.
Mod+Bar {
focus-workspace-previous
}
// The following binds move the focused window in and out of a column.
// If the window is alone, they will consume it into the nearby column to the side.
// If the window is already in a column, they will expel it out.
Mod+BraceLeft {
consume-or-expel-window-left
}
Mod+BraceRight {
consume-or-expel-window-right
}
// Consume one window from the right to the bottom of the focused column.
Mod+Comma {
consume-window-into-column
}
// Expel the bottom window from the focused column to the right.
Mod+Period {
expel-window-from-column
}
Mod+R {
switch-preset-column-width
}
// Cycling through the presets in reverse order is also possible.
// Mod+R { switch-preset-column-width-back; }
Mod+Shift+R {
switch-preset-window-height
}
Mod+Ctrl+R {
reset-window-height
}
Mod+F {
maximize-column
}
Mod+Shift+F {
fullscreen-window
}
// Expand the focused column to space not taken up by other fully visible columns.
// Makes the column "fill the rest of the space".
Mod+Ctrl+F {
expand-column-to-available-width
}
Mod+C {
center-column
}
// Center all fully visible columns on screen.
Mod+Ctrl+C {
center-visible-columns
}
// Finer width adjustments.
// This command can also:
// * set width in pixels: "1000"
// * adjust width in pixels: "-5" or "+5"
// * set width as a percentage of screen width: "25%"
// * adjust width as a percentage of screen width: "-10%" or "+10%"
// Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
// set-column-width "100" will make the column occupy 200 physical screen pixels.
Mod+Minus {
set-column-width "-10%"
}
Mod+Plus {
set-column-width "+10%"
}
// Finer height adjustments when in column with other windows.
Mod+Shift+Minus {
set-window-height "-10%"
}
Mod+Shift+Equal {
set-window-height "+10%"
}
// Move the focused window between the floating and the tiling layout.
Mod+Shift+Space {
toggle-window-floating
}
Mod+Space {
switch-focus-between-floating-and-tiling
}
// Toggle tabbed column display mode.
// Windows in this column will appear as vertical tabs,
// rather than stacked on top of each other.
Mod+W {
toggle-column-tabbed-display
}
Print {
screenshot
}
Shift+Ctrl+Print {
screenshot-screen
}
Shift+Print {
screenshot-window
}
// Applications such as remote-desktop clients and software KVM switches may
// request that niri stops processing the keyboard shortcuts defined here
// so they may, for example, forward the key presses as-is to a remote machine.
// It's a good idea to bind an escape hatch to toggle the inhibitor,
// so a buggy application can't hold your session hostage.
//
// The allow-inhibiting=false property can be applied to other binds as well,
// which ensures niri always processes them, even when an inhibitor is active.
Mod+Escape allow-inhibiting=false {
toggle-keyboard-shortcuts-inhibit
}
// The quit action will show a confirmation dialog to avoid accidental exits.
Mod+Shift+E {
quit
}
Ctrl+Alt+Delete {
quit
}
}

View file

@ -16,6 +16,7 @@ return {
go = { "gofumpt", "goimports_reviser", "golines" },
html = { "djlint", "prettierd", stop_after_first = true },
kotlin = { "ktlint" },
kdl = { "kdlfmt" },
htmldjango = { "djlint", stop_after_first = true },
javascript = { "biome" },
javascriptreact = { "biome" },

View file

@ -9,7 +9,7 @@
"margin-left": 10,
"margin-right": 10,
"modules-left": ["hyprland/workspaces"],
"modules-left": ["niri/workspaces", "niri/window"],
"modules-center": ["clock"],
"modules-right": [
"tray",
@ -23,6 +23,21 @@
],
"hyprland/workspaces": {
"all-outputs": false,
"format": "{icon}",
"format-icons": {
"1": "",
"2": "",
"3": "",
"9": "",
"10": "󰌳",
"default": ""
},
"sort-by-number": true,
"active-only": false
},
"niri/workspaces": {
"all-outputs": false,
"format": "{icon}",
"format-icons": {
@ -38,6 +53,16 @@
"sort-by-number": true,
"active-only": false
},
"niri/window": {
"format": "{app_id}: {title}",
"rewrite": {
"(.*): (.*)": "$2",
"brave-browser: (.*) - Brave": "🌎 $1",
"Kitty: (.*)": " $1"
}
},
"backlight": {
"format": "<span color='#8ccf7e'>󱩖 </span> {percent}% ",
"device": "intel_backlight",

View file

@ -14,6 +14,12 @@
border-radius:5px;
}
#window {
border-radius: 20px;
padding-left: 10px;
padding-right: 10px;
}
#workspaces button{
padding: .25rem .5rem;
margin-right: .5rem;