Formatting

This commit is contained in:
pancakes 2025-07-29 00:00:03 +10:00
parent d6cb5c683f
commit 51c960f95a
Signed by: pancakes
SSH key fingerprint: SHA256:yrp4c4hhaPoPG07fb4QyQIgAdlbUdsJvUAydJEWnfTw
6 changed files with 494 additions and 415 deletions

View file

@ -4,10 +4,10 @@ auto-format = true
[[language]] [[language]]
name = "xml" name = "xml"
file-types = [ "xml", "svg", "xsd", "xslt", "xsl", "ui" ] file-types = ["xml", "svg", "xsd", "xslt", "xsl", "ui"]
auto-format = true auto-format = true
formatter = { command = "xmllint", args = ["--format", "-"] } formatter = { command = "xmllint", args = ["--format", "-"] }
language-servers = [ "xml" ] language-servers = ["xml"]
[language-server.xml] [language-server.xml]
command = "lemminx" command = "lemminx"

View file

@ -1,7 +1,6 @@
debug { debug {
disable-cursor-plane disable-cursor-plane
} }
input { input {
touchpad { touchpad {
tap tap
@ -12,50 +11,41 @@ input {
scroll-method "two-finger" scroll-method "two-finger"
disabled-on-external-mouse disabled-on-external-mouse
} }
mouse { mouse {
accel-profile "flat" accel-profile "flat"
} }
} }
// You can configure outputs by their name, which you can find // You can configure outputs by their name, which you can find
// by running `niri msg outputs` while inside a niri instance. // by running `niri msg outputs` while inside a niri instance.
output "eDP-1" { output "eDP-1" {
scale 1.5 scale 1.5
transform "normal" transform "normal"
// position x=1280 y=0 // position x=1280 y=0
} }
output "LG Electronics LG ULTRAGEAR 404NTCZ0R931" { output "LG Electronics LG ULTRAGEAR 404NTCZ0R931" {
scale 1.5 scale 1.5
variable-refresh-rate on-demand=true variable-refresh-rate on-demand=true
} }
layout { layout {
gaps 10 gaps 10
center-focused-column "on-overflow" center-focused-column "on-overflow"
always-center-single-column always-center-single-column
preset-column-widths { preset-column-widths {
proportion 0.33333 proportion 0.33333
proportion 0.5 proportion 0.5
proportion 0.66667 proportion 0.66667
} }
default-column-width {
default-column-width { proportion 0.5; } proportion 0.5
}
focus-ring { focus-ring {
off off
} }
border { border {
width 2 width 2
active-color "#bb9af7" active-color "#bb9af7"
inactive-color "#414868" inactive-color "#414868"
} }
shadow { shadow {
on on
softness 30 softness 30
@ -63,7 +53,6 @@ layout {
offset x=0 y=5 offset x=0 y=5
color "#0007" color "#0007"
} }
tab-indicator { tab-indicator {
place-within-column place-within-column
gap 4 gap 4
@ -71,20 +60,16 @@ layout {
gaps-between-tabs 4 gaps-between-tabs 4
corner-radius 5 corner-radius 5
} }
background-color "transparent" background-color "transparent"
} }
hotkey-overlay { hotkey-overlay {
skip-at-startup skip-at-startup
} }
overview { overview {
workspace-shadow { workspace-shadow {
off off
} }
} }
// Utilities // Utilities
spawn-at-startup "/usr/lib/polkit-kde-authentication-agent-1" spawn-at-startup "/usr/lib/polkit-kde-authentication-agent-1"
spawn-at-startup "swayidle" "-w" spawn-at-startup "swayidle" "-w"
@ -96,152 +81,115 @@ spawn-at-startup "udiskie"
spawn-at-startup "wl-paste" "--watch" "cliphist" "store" spawn-at-startup "wl-paste" "--watch" "cliphist" "store"
spawn-at-startup "cliphist" "wipe" spawn-at-startup "cliphist" "wipe"
spawn-at-startup "flatpak" "run" "it.mijorus.smile" "--start-hidden" spawn-at-startup "flatpak" "run" "it.mijorus.smile" "--start-hidden"
environment { environment {
CLIPHIST_MAX_ITEMS "20" CLIPHIST_MAX_ITEMS "20"
ELECTRON_OZONE_PLATFORM_HINT "auto" ELECTRON_OZONE_PLATFORM_HINT "auto"
PROTON_ENABLE_WAYLAND "1" PROTON_ENABLE_WAYLAND "1"
TERMINAL "kitty" TERMINAL "kitty"
} }
cursor { cursor {
xcursor-theme "Adwaita" xcursor-theme "Adwaita"
xcursor-size 24 xcursor-size 24
} }
workspace "web" workspace "web"
workspace "chat" workspace "chat"
workspace "dev" workspace "dev"
workspace "games" workspace "games"
prefer-no-csd prefer-no-csd
// You can change the path where screenshots are saved. // You can change the path where screenshots are saved.
// A ~ at the front will be expanded to the home directory. // A ~ at the front will be expanded to the home directory.
// The path is formatted with strftime(3) to give you the screenshot date and time. // The path is formatted with strftime(3) to give you the screenshot date and time.
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
// Window rules let you adjust behavior for individual windows. // Window rules let you adjust behavior for individual windows.
// Find more information on the wiki: // Find more information on the wiki:
// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules // https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules
// Make windows open floating // Make windows open floating
window-rule { window-rule {
match app-id=r#"^it\.mijorus\.smile$"# match app-id="^it\\.mijorus\\.smile$"
open-floating true open-floating true
} }
// Open the Firefox picture-in-picture player as floating by default. // Open the Firefox picture-in-picture player as floating by default.
window-rule { window-rule {
match app-id=r#"firefox"# title="^Picture-in-Picture$" match app-id="firefox" title="^Picture-in-Picture$"
open-floating true open-floating true
} }
// Block out windows from screen capture // Block out windows from screen capture
window-rule { window-rule {
match app-id=r#"discord"# match app-id="discord"
block-out-from "screencast" block-out-from "screencast"
} }
// Display Steam notifications in corner of the screen // Display Steam notifications in corner of the screen
window-rule { window-rule {
match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"# match app-id="steam" title="^notificationtoasts_\\d+_desktop$"
default-floating-position x=0 y=0 relative-to="bottom-right" default-floating-position x=0 y=0 relative-to="bottom-right"
} }
// Open windows in web workspace // Open windows in web workspace
window-rule { window-rule {
match app-id=r#"firefox$"# at-startup=true match app-id="firefox$" at-startup=true
match app-id=r#"thunderbird$"# match app-id="thunderbird$"
open-on-workspace "web" open-on-workspace "web"
} }
// Open windows in chat workspace // Open windows in chat workspace
window-rule { window-rule {
match app-id="discord" match app-id="discord"
open-on-workspace "chat" open-on-workspace "chat"
} }
// Open windows in games workspace // Open windows in games workspace
window-rule { window-rule {
match app-id="gamescope" match app-id="gamescope"
match app-id=r#"PrismLauncher$"# match app-id="PrismLauncher$"
match app-id="steam" match app-id="steam"
open-on-workspace "games" open-on-workspace "games"
} }
// Dont auto focus // Dont auto focus
window-rule { window-rule {
match app-id="steam" match app-id="steam"
open-focused false open-focused false
} }
// Maximize at startup // Maximize at startup
window-rule { window-rule {
match app-id=r#"firefox$"# at-startup=true match app-id="firefox$" at-startup=true
match app-id="discord" at-startup=true match app-id="discord" at-startup=true
match app-id="steam" at-startup=true match app-id="steam" at-startup=true
open-maximized true open-maximized true
} }
// Enable rounded corners for all windows. // Enable rounded corners for all windows.
window-rule { window-rule {
geometry-corner-radius 5 geometry-corner-radius 5
clip-to-geometry true clip-to-geometry true
} }
// Indicate screencasted windows with red colors. // Indicate screencasted windows with red colors.
window-rule { window-rule {
match is-window-cast-target=true match is-window-cast-target=true
border { border {
active-color "#ff0000" active-color "#ff0000"
inactive-color "#aa0000" inactive-color "#aa0000"
} }
shadow { shadow {
color "#aa0000" color "#aa0000"
} }
tab-indicator { tab-indicator {
active-color "#ff0000" active-color "#ff0000"
inactive-color "#aa0000" inactive-color "#aa0000"
} }
} }
// Enable shadows on launcher and notifications // Enable shadows on launcher and notifications
layer-rule { layer-rule {
match namespace="^launcher$" match namespace="^launcher$"
shadow { shadow {
on on
} }
geometry-corner-radius 5 geometry-corner-radius 5
} }
layer-rule { layer-rule {
match namespace=r#"^wpaperd-"# match namespace="^wpaperd-"
place-within-backdrop true place-within-backdrop true
} }
// Block out mako notifications from screencasts. // Block out mako notifications from screencasts.
layer-rule { layer-rule {
match namespace="swaync-notification-window" match namespace="swaync-notification-window"
block-out-from "screencast" block-out-from "screencast"
} }
binds { binds {
// Keys consist of modifiers separated by + signs, followed by an XKB key name // Keys consist of modifiers separated by + signs, followed by an XKB key name
// in the end. To find an XKB name for a particular key, you may use a program // in the end. To find an XKB name for a particular key, you may use a program
@ -249,85 +197,168 @@ binds {
// //
// "Mod" is a special modifier equal to Super when running on a TTY, and to Alt // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
// when running as a winit window. // when running as a winit window.
// Mod-Shift-/, which is usually the same as Mod-?, // Mod-Shift-/, which is usually the same as Mod-?,
// shows a list of important hotkeys. // shows a list of important hotkeys.
Mod+Shift+Slash { show-hotkey-overlay; } Mod+Shift+Slash {
show-hotkey-overlay
}
// Suggested binds for running programs: terminal, app launcher, screen locker. // Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+Return { spawn "kitty"; } Mod+Return {
Mod+D { spawn "fuzzel"; } spawn "kitty"
Mod+V hotkey-overlay-title="Manage clipboard" { spawn "sh" "-c" "cliphist list | fuzzel --dmenu --placeholder clipboard --with-nth 2 | cliphist decode | wl-copy"; } }
Super+Alt+L { spawn "swaylock"; } Mod+D {
Mod+E { spawn "kitty" "-e" "yazi"; } spawn "fuzzel"
Mod+Shift+E { spawn "nautilus"; } }
Mod+Shift+D { spawn "emacsclient" "--alternate-editor=" "--create-frame"; } Mod+V hotkey-overlay-title="Manage clipboard" {
Mod+Period { spawn "flatpak" "run" "it.mijorus.smile"; } spawn "sh" "-c" "cliphist list | fuzzel --dmenu --placeholder clipboard --with-nth 2 | cliphist decode | wl-copy"
Control+Shift+Escape { spawn "kitty" "-e" "btop"; } }
Super+Alt+L {
spawn "swaylock"
}
Mod+E {
spawn "kitty" "-e" "yazi"
}
Mod+Shift+E {
spawn "nautilus"
}
Mod+Shift+D {
spawn "emacsclient" "--alternate-editor=" "--create-frame"
}
Mod+Period {
spawn "flatpak" "run" "it.mijorus.smile"
}
Control+Shift+Escape {
spawn "kitty" "-e" "btop"
}
// You can also use a shell. Do this if you need pipes, multiple commands, etc. // You can also use a shell. Do this if you need pipes, multiple commands, etc.
// Note: the entire command goes as a single argument in the end. // Note: the entire command goes as a single argument in the end.
// Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; } // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; }
// Volume keys mappings for PipeWire & WirePlumber. // Volume keys mappings for PipeWire & WirePlumber.
XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; } XF86AudioRaiseVolume allow-when-locked=true {
XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; } spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"
XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } }
XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } XF86AudioLowerVolume allow-when-locked=true {
spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"
Alt+F4 { close-window; } }
Mod+Shift+Q { close-window; } XF86AudioMute allow-when-locked=true {
spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"
Mod+O { toggle-overview; } }
XF86AudioMicMute allow-when-locked=true {
Mod+H { focus-column-left; } spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"
Mod+J { focus-window-down-or-top; } }
Mod+K { focus-window-up-or-bottom; } Alt+F4 {
Mod+L { focus-column-right; } close-window
}
Mod+Shift+H { move-column-left; } Mod+Shift+Q {
Mod+Shift+J { move-window-down; } close-window
Mod+Shift+K { move-window-up; } }
Mod+Shift+L { move-column-right; } Mod+O {
toggle-overview
Mod+Home { focus-column-first; } }
Mod+End { focus-column-last; } Mod+H {
Mod+Shift+Home { move-column-to-first; } focus-column-left
Mod+Shift+End { move-column-to-last; } }
Mod+J {
Mod+Page_Down { focus-workspace-down; } focus-window-down-or-top
Mod+Page_Up { focus-workspace-up; } }
Mod+U { focus-workspace-down; } Mod+K {
Mod+I { focus-workspace-up; } focus-window-up-or-bottom
Mod+Ctrl+Page_Down { move-column-to-workspace-down; } }
Mod+Ctrl+Page_Up { move-column-to-workspace-up; } Mod+L {
Mod+Ctrl+U { move-column-to-workspace-down; } focus-column-right
Mod+Ctrl+I { move-column-to-workspace-up; } }
Mod+Shift+H {
Mod+Shift+Page_Down { move-workspace-down; } move-column-left
Mod+Shift+Page_Up { move-workspace-up; } }
Mod+Shift+U { move-workspace-down; } Mod+Shift+J {
Mod+Shift+I { move-workspace-up; } move-window-down
}
Mod+Shift+K {
move-window-up
}
Mod+Shift+L {
move-column-right
}
Mod+Home {
focus-column-first
}
Mod+End {
focus-column-last
}
Mod+Shift+Home {
move-column-to-first
}
Mod+Shift+End {
move-column-to-last
}
Mod+Page_Down {
focus-workspace-down
}
Mod+Page_Up {
focus-workspace-up
}
Mod+U {
focus-workspace-down
}
Mod+I {
focus-workspace-up
}
Mod+Ctrl+Page_Down {
move-column-to-workspace-down
}
Mod+Ctrl+Page_Up {
move-column-to-workspace-up
}
Mod+Ctrl+U {
move-column-to-workspace-down
}
Mod+Ctrl+I {
move-column-to-workspace-up
}
Mod+Shift+Page_Down {
move-workspace-down
}
Mod+Shift+Page_Up {
move-workspace-up
}
Mod+Shift+U {
move-workspace-down
}
Mod+Shift+I {
move-workspace-up
}
// You can bind mouse wheel scroll ticks using the following syntax. // You can bind mouse wheel scroll ticks using the following syntax.
// These binds will change direction based on the natural-scroll setting. // These binds will change direction based on the natural-scroll setting.
// //
// To avoid scrolling through workspaces really fast, you can use // To avoid scrolling through workspaces really fast, you can use
// the cooldown-ms property. The bind will be rate-limited to this value. // the cooldown-ms property. The bind will be rate-limited to this value.
// You can set a cooldown on any bind, but it's most useful for the wheel. // You can set a cooldown on any bind, but it's most useful for the wheel.
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } Mod+WheelScrollDown cooldown-ms=150 {
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } focus-workspace-down
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } Mod+WheelScrollUp cooldown-ms=150 {
focus-workspace-up
Mod+WheelScrollRight { focus-column-right; } }
Mod+WheelScrollLeft { 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
}
// Usually scrolling up and down with Shift in applications results in // Usually scrolling up and down with Shift in applications results in
// horizontal scrolling; these binds replicate that. // horizontal scrolling; these binds replicate that.
Mod+Shift+WheelScrollDown { focus-column-right; } Mod+Shift+WheelScrollDown {
Mod+Shift+WheelScrollUp { focus-column-left; } focus-column-right
}
Mod+Shift+WheelScrollUp {
focus-column-left
}
// Similarly, you can bind touchpad scroll "ticks". // Similarly, you can bind touchpad scroll "ticks".
// Touchpad scrolling is continuous, so for these binds it is split into // Touchpad scrolling is continuous, so for these binds it is split into
// discrete intervals. // discrete intervals.
@ -336,7 +367,6 @@ binds {
// touchpads by default. // touchpads by default.
// Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; } // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
// Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; } // Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
// You can refer to workspaces by index. However, keep in mind that // You can refer to workspaces by index. However, keep in mind that
// niri is a dynamic workspace system, so these commands are kind of // niri is a dynamic workspace system, so these commands are kind of
// "best effort". Trying to refer to a workspace index bigger than // "best effort". Trying to refer to a workspace index bigger than
@ -345,56 +375,123 @@ binds {
// //
// For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
// will all refer to the 3rd workspace. // will all refer to the 3rd workspace.
Mod+1 { focus-workspace 1; } Mod+1 {
Mod+2 { focus-workspace 2; } focus-workspace 1
Mod+3 { focus-workspace 3; } }
Mod+4 { focus-workspace 4; } Mod+2 {
Mod+5 { focus-workspace 5; } focus-workspace 2
Mod+6 { focus-workspace 6; } }
Mod+7 { focus-workspace 7; } Mod+3 {
Mod+8 { focus-workspace 8; } focus-workspace 3
Mod+9 { focus-workspace 9; } }
Mod+Shift+1 { move-column-to-workspace 1; } Mod+4 {
Mod+Shift+2 { move-column-to-workspace 2; } focus-workspace 4
Mod+Shift+3 { move-column-to-workspace 3; } }
Mod+Shift+4 { move-column-to-workspace 4; } Mod+5 {
Mod+Shift+5 { move-column-to-workspace 5; } focus-workspace 5
Mod+Shift+6 { move-column-to-workspace 6; } }
Mod+Shift+7 { move-column-to-workspace 7; } Mod+6 {
Mod+Shift+8 { move-column-to-workspace 8; } focus-workspace 6
Mod+Shift+9 { move-column-to-workspace 9; } }
Mod+7 {
Mod+Ctrl+1 { move-window-to-workspace 1; } focus-workspace 7
Mod+Ctrl+2 { move-window-to-workspace 2; } }
Mod+Ctrl+3 { move-window-to-workspace 3; } Mod+8 {
Mod+Ctrl+4 { move-window-to-workspace 4; } focus-workspace 8
Mod+Ctrl+5 { move-window-to-workspace 5; } }
Mod+Ctrl+6 { move-window-to-workspace 6; } Mod+9 {
Mod+Ctrl+7 { move-window-to-workspace 7; } focus-workspace 9
Mod+Ctrl+8 { move-window-to-workspace 8; } }
Mod+Ctrl+9 { move-window-to-workspace 9; } Mod+Shift+1 {
move-column-to-workspace 1
}
Mod+Shift+2 {
move-column-to-workspace 2
}
Mod+Shift+3 {
move-column-to-workspace 3
}
Mod+Shift+4 {
move-column-to-workspace 4
}
Mod+Shift+5 {
move-column-to-workspace 5
}
Mod+Shift+6 {
move-column-to-workspace 6
}
Mod+Shift+7 {
move-column-to-workspace 7
}
Mod+Shift+8 {
move-column-to-workspace 8
}
Mod+Shift+9 {
move-column-to-workspace 9
}
Mod+Ctrl+1 {
move-window-to-workspace 1
}
Mod+Ctrl+2 {
move-window-to-workspace 2
}
Mod+Ctrl+3 {
move-window-to-workspace 3
}
Mod+Ctrl+4 {
move-window-to-workspace 4
}
Mod+Ctrl+5 {
move-window-to-workspace 5
}
Mod+Ctrl+6 {
move-window-to-workspace 6
}
Mod+Ctrl+7 {
move-window-to-workspace 7
}
Mod+Ctrl+8 {
move-window-to-workspace 8
}
Mod+Ctrl+9 {
move-window-to-workspace 9
}
// Switches focus between the current and the previous workspace. // Switches focus between the current and the previous workspace.
Mod+Tab { focus-workspace-previous; } Mod+Tab {
focus-workspace-previous
}
// The following binds move the focused window in and out of a column. // 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 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. // If the window is already in a column, they will expel it out.
Mod+BracketLeft { consume-or-expel-window-left; } Mod+BracketLeft {
Mod+BracketRight { consume-or-expel-window-right; } consume-or-expel-window-left
}
Mod+R { switch-preset-column-width; } Mod+BracketRight {
Mod+Shift+R { switch-preset-window-height; } consume-or-expel-window-right
Mod+Ctrl+R { reset-window-height; } }
Mod+F { maximize-column; } Mod+R {
Mod+Shift+F { fullscreen-window; } switch-preset-column-width
}
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. // Expand the focused column to space not taken up by other fully visible columns.
// Makes the column "fill the rest of the space". // Makes the column "fill the rest of the space".
Mod+Ctrl+F { expand-column-to-available-width; } Mod+Ctrl+F {
expand-column-to-available-width
Mod+C { center-column; } }
Mod+C {
center-column
}
// Finer width adjustments. // Finer width adjustments.
// This command can also: // This command can also:
// * set width in pixels: "1000" // * set width in pixels: "1000"
@ -403,22 +500,32 @@ binds {
// * adjust width as a percentage of screen width: "-10%" or "+10%" // * 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, // 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. // set-column-width "100" will make the column occupy 200 physical screen pixels.
Mod+Minus { set-column-width "-10%"; } Mod+Minus {
Mod+Equal { set-column-width "+10%"; } set-column-width "-10%"
}
Mod+Equal {
set-column-width "+10%"
}
// Finer height adjustments when in column with other windows. // Finer height adjustments when in column with other windows.
Mod+Shift+Minus { set-window-height "-10%"; } Mod+Shift+Minus {
Mod+Shift+Equal { set-window-height "+10%"; } set-window-height "-10%"
}
Mod+Shift+Equal {
set-window-height "+10%"
}
// Move the focused window between the floating and the tiling layout. // Move the focused window between the floating and the tiling layout.
Mod+B { toggle-window-floating; } Mod+B {
Mod+Shift+B { switch-focus-between-floating-and-tiling; } toggle-window-floating
}
Mod+Shift+B {
switch-focus-between-floating-and-tiling
}
// Toggle tabbed column display mode. // Toggle tabbed column display mode.
// Windows in this column will appear as vertical tabs, // Windows in this column will appear as vertical tabs,
// rather than stacked on top of each other. // rather than stacked on top of each other.
Mod+W { toggle-column-tabbed-display; } Mod+W {
toggle-column-tabbed-display
}
// Actions to switch layouts. // Actions to switch layouts.
// Note: if you uncomment these, make sure you do NOT have // Note: if you uncomment these, make sure you do NOT have
// a matching layout switch hotkey configured in xkb options above. // a matching layout switch hotkey configured in xkb options above.
@ -426,15 +533,24 @@ binds {
// since it will switch twice upon pressing the hotkey (once by xkb, once by niri). // since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
// Mod+Space { switch-layout "next"; } // Mod+Space { switch-layout "next"; }
// Mod+Shift+Space { switch-layout "prev"; } // Mod+Shift+Space { switch-layout "prev"; }
Print {
Print { screenshot; } screenshot
Shift+Print { screenshot-screen; } }
Alt+Print { screenshot-window; } Shift+Print {
screenshot-screen
Mod+Alt+Return { set-dynamic-cast-window; } }
Mod+Alt+Shift+Return { set-dynamic-cast-monitor; } Alt+Print {
Mod+Alt+Shift+Backspace { clear-dynamic-cast-target; } screenshot-window
}
Mod+Alt+Return {
set-dynamic-cast-window
}
Mod+Alt+Shift+Return {
set-dynamic-cast-monitor
}
Mod+Alt+Shift+Backspace {
clear-dynamic-cast-target
}
// Applications such as remote-desktop clients and software KVM switches may // Applications such as remote-desktop clients and software KVM switches may
// request that niri stops processing the keyboard shortcuts defined here // 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. // so they may, for example, forward the key presses as-is to a remote machine.
@ -443,13 +559,20 @@ binds {
// //
// The allow-inhibiting=false property can be applied to other binds as well, // 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. // which ensures niri always processes them, even when an inhibitor is active.
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } Mod+Escape allow-inhibiting=false {
toggle-keyboard-shortcuts-inhibit
}
// The quit action will show a confirmation dialog to avoid accidental exits. // The quit action will show a confirmation dialog to avoid accidental exits.
Mod+Shift+Escape { quit; } Mod+Shift+Escape {
Ctrl+Alt+Delete { quit; } quit
}
Ctrl+Alt+Delete {
quit
}
// Powers off the monitors. To turn them back on, do any input like // Powers off the monitors. To turn them back on, do any input like
// moving the mouse or pressing any other key. // moving the mouse or pressing any other key.
Mod+Shift+P { power-off-monitors; } Mod+Shift+P {
power-off-monitors
}
} }

View file

@ -1,103 +1,107 @@
// -*- mode: jsonc -*- // -*- mode: jsonc -*-
{ {
"layer": "top", "layer": "top",
"spacing": 8, "spacing": 8,
"modules-left": [ "modules-left": [
"niri/workspaces", "niri/workspaces",
"privacy", "privacy",
"niri/window" "niri/window"
], ],
"modules-center": [ "modules-center": [
"clock" "clock"
], ],
"modules-right": [ "modules-right": [
"tray", "tray",
"idle_inhibitor", "idle_inhibitor",
"battery", "battery",
"power-profiles-daemon", "power-profiles-daemon",
"wireplumber", "wireplumber",
"bluetooth", "bluetooth",
"network", "network",
"custom/notifications" "custom/notifications"
], ],
"niri/workspaces": { "niri/workspaces": {
"format": "{icon}", "format": "{icon}",
"format-icons": { "format-icons": {
"web": "󰈹", "web": "󰈹",
"chat": "󰭹", "chat": "󰭹",
"dev": "", "dev": "",
"games": "󰊖" "games": "󰊖"
}
},
"privacy": {
"icon-size": 12
},
"clock": {
"format": "{:%a %H:%M}",
"tooltip-format": "<tt>{calendar}</tt>",
"calendar": {
"format": {
"today": "<b><u>{}</u></b>"
}
}
},
"tray": {
"spacing": 4,
"reverse-direction": true
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"battery": {
"format": "{icon} {capacity}%"
},
"power-profiles-daemon": {
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"wireplumber": {
"format": "{icon} {volume}%",
"format-muted": " Muted",
"format-icons": ["", "", ""]
},
"bluetooth": {
"format-disabled": "",
"format-connected": " {num_connections}"
},
"network": {
"format-ethernet": "󰛳 Wired",
"format-wifi": " {essid}",
"format-disconnected": "󰅛 Disconnected",
"tooltip-format-ethernet": "Interface: {ifname}\nIP: {ipaddr}\nGateway: {gwaddr}",
"tooltip-format-wifi": "{frequency}GHz {signalStrength}%\n\nInterface: {ifname}\nIP: {ipaddr}\nGateway: {gwaddr}",
"tooltip-format-disconnected": ""
},
"custom/notifications": {
"exec": "swaync-client -swb",
"exec-if": "which swaync-client",
"return-type": "json",
"format": "{icon}",
"format-icons": {
"notification": "<span foreground='red'><sup></sup></span>",
"none": "",
"dnd-notification": "<span foreground='red'><sup></sup></span>",
"dnd-none": "",
"inhibited-notification": "<span foreground='red'><sup></sup></span>",
"inhibited-none": "",
"dnd-inhibited-notification": "<span foreground='red'><sup></sup></span>",
"dnd-inhibited-none": ""
},
"on-click": "swaync-client -t -sw",
"on-click-right": "swaync-client -d -sw",
"tooltip-format": "Notifications",
"escape": true
} }
} },
"privacy": {
"icon-size": 12
},
"clock": {
"format": "{:%a %H:%M}",
"tooltip-format": "<tt>{calendar}</tt>",
"calendar": {
"format": {
"today": "<b><u>{}</u></b>"
}
}
},
"tray": {
"spacing": 4,
"reverse-direction": true
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"battery": {
"format": "{icon} {capacity}%"
},
"power-profiles-daemon": {
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"wireplumber": {
"format": "{icon} {volume}%",
"format-muted": " Muted",
"format-icons": [
"",
"",
""
]
},
"bluetooth": {
"format-disabled": "",
"format-connected": " {num_connections}"
},
"network": {
"format-ethernet": "󰛳 Wired",
"format-wifi": " {essid}",
"format-disconnected": "󰅛 Disconnected",
"tooltip-format-ethernet": "Interface: {ifname}\nIP: {ipaddr}\nGateway: {gwaddr}",
"tooltip-format-wifi": "{frequency}GHz {signalStrength}%\n\nInterface: {ifname}\nIP: {ipaddr}\nGateway: {gwaddr}",
"tooltip-format-disconnected": ""
},
"custom/notifications": {
"exec": "swaync-client -swb",
"exec-if": "which swaync-client",
"return-type": "json",
"format": "{icon}",
"format-icons": {
"notification": "<span foreground='red'><sup></sup></span>",
"none": "",
"dnd-notification": "<span foreground='red'><sup></sup></span>",
"dnd-none": "",
"inhibited-notification": "<span foreground='red'><sup></sup></span>",
"inhibited-none": "",
"dnd-inhibited-notification": "<span foreground='red'><sup></sup></span>",
"dnd-inhibited-none": ""
},
"on-click": "swaync-client -t -sw",
"on-click-right": "swaync-client -d -sw",
"tooltip-format": "Notifications",
"escape": true
}
}

View file

@ -1,46 +1,46 @@
* { * {
/* `otf-font-awesome` is required to be installed for icons */ /* `otf-font-awesome` is required to be installed for icons */
font-family: FontAwesome, Inter, sans-serif; font-family: FontAwesome, Inter, sans-serif;
font-size: 12px; font-size: 12px;
} }
window#waybar { window#waybar {
background-color: rgba(26, 27, 38, 0.95); background-color: rgba(26, 27, 38, 0.95);
color: #c0caf5; color: #c0caf5;
transition-property: background-color; transition-property: background-color;
transition-duration: .5s; transition-duration: .5s;
} }
button { button {
/* Avoid rounded borders under each button name */ /* Avoid rounded borders under each button name */
border: none; border: none;
border-radius: 0; border-radius: 0;
padding: 0 4px; padding: 0 4px;
} }
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover { button:hover {
background: inherit; background: inherit;
box-shadow: inset 0 0 transparent; box-shadow: inset 0 0 transparent;
} }
#workspaces button { #workspaces button {
background-color: transparent; background-color: transparent;
color: #ffffff; color: #ffffff;
} }
#workspaces button:hover { #workspaces button:hover {
background: rgba(0, 0, 0, 0.2); background: rgba(0, 0, 0, 0.2);
} }
#workspaces button.focused { #workspaces button.focused {
background-color: #bb9af7; background-color: #bb9af7;
color: #15161e; color: #15161e;
} }
#workspaces button.urgent { #workspaces button.urgent {
background-color: #e0af68; background-color: #e0af68;
color: #15161e; color: #15161e;
} }
#clock, #clock,
@ -51,80 +51,81 @@ button:hover {
#idle_inhibitor, #idle_inhibitor,
#power-profiles-daemon, #power-profiles-daemon,
#custom-notifications { #custom-notifications {
padding: 0 4px; padding: 0 4px;
min-width: 1.5em; min-width: 1.5em;
color: #c0caf5; color: #c0caf5;
} }
#window, #window,
#workspaces { #workspaces {
margin: 0 4px; margin: 0 4px;
} }
/* If workspaces is the leftmost module, omit left margin */ /* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces { .modules-left>widget:first-child>#workspaces {
margin-left: 0; margin-left: 0;
} }
#clock { #clock {
font-weight: bold; font-weight: bold;
} }
#battery.charging, #battery.plugged { #battery.charging,
background-color: #9ece6a; #battery.plugged {
color: #15161e; background-color: #9ece6a;
color: #15161e;
} }
#battery.critical:not(.charging) { #battery.critical:not(.charging) {
background-color: #f7768e; background-color: #f7768e;
color: #15161e; color: #15161e;
} }
#power-profiles-daemon.performance { #power-profiles-daemon.performance {
background-color: #e0af68; background-color: #e0af68;
color: #15161e; color: #15161e;
} }
#power-profiles-daemon.power-saver { #power-profiles-daemon.power-saver {
background-color: #9ece6a; background-color: #9ece6a;
color: #15161e; color: #15161e;
} }
label:focus { label:focus {
background-color: #000000; background-color: #000000;
} }
#network.disconnected { #network.disconnected {
background-color: #f7768e; background-color: #f7768e;
color: #15161e; color: #15161e;
} }
#wireplumber.muted { #wireplumber.muted {
background-color: #f7768e; background-color: #f7768e;
color: #15161e; color: #15161e;
} }
#tray > .passive { #tray>.passive {
-gtk-icon-effect: dim; -gtk-icon-effect: dim;
} }
#tray > .needs-attention { #tray>.needs-attention {
-gtk-icon-effect: highlight; -gtk-icon-effect: highlight;
background-color: #e0af68; background-color: #e0af68;
color: #15161e; color: #15161e;
} }
#idle_inhibitor.activated { #idle_inhibitor.activated {
background-color: #e0af68; background-color: #e0af68;
color: #15161e; color: #15161e;
} }
#privacy { #privacy {
padding: 0; padding: 0;
} }
#privacy-item { #privacy-item {
padding: 0 4px; padding: 0 4px;
background-color: #e0af68; background-color: #e0af68;
color: #15161e; color: #15161e;
} }

View file

@ -1,49 +1,49 @@
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "C" ] on = ["g", "C"]
run = "cd ~/config" run = "cd ~/config"
desc = "Go to dotfiles" desc = "Go to dotfiles"
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "d" ] on = ["g", "d"]
run = "cd ~/Documents" run = "cd ~/Documents"
desc = "Go to Documents" desc = "Go to Documents"
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "D" ] on = ["g", "D"]
run = "cd ~/Downloads" run = "cd ~/Downloads"
desc = "Go to Downloads" desc = "Go to Downloads"
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "g", "s" ] on = ["g", "g", "s"]
run = "cd ~/.local/share/Steam/steamapps/common" run = "cd ~/.local/share/Steam/steamapps/common"
desc = "Go to steamapps" desc = "Go to steamapps"
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "m" ] on = ["g", "m"]
run = "cd ~/Music" run = "cd ~/Music"
desc = "Go to Music" desc = "Go to Music"
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "P" ] on = ["g", "P"]
run = "cd ~/Projects" run = "cd ~/Projects"
desc = "Go to Projects" desc = "Go to Projects"
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "p", "p" ] on = ["g", "p", "p"]
run = "cd ~/Pictures" run = "cd ~/Pictures"
desc = "Go to Pictures" desc = "Go to Pictures"
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "p", "s" ] on = ["g", "p", "s"]
run = "cd ~/Pictures/Screenshots" run = "cd ~/Pictures/Screenshots"
desc = "Go to Screenshots" desc = "Go to Screenshots"
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "v", "v" ] on = ["g", "v", "v"]
run = "cd ~/Videos" run = "cd ~/Videos"
desc = "Go to Videos" desc = "Go to Videos"
[[mgr.prepend_keymap]] [[mgr.prepend_keymap]]
on = [ "g", "v", "r" ] on = ["g", "v", "r"]
run = "cd ~/Videos/Recording" run = "cd ~/Videos/Recording"
desc = "Go to Recordings" desc = "Go to Recordings"

View file

@ -1,49 +0,0 @@
[[manager.prepend_keymap]]
on = [ "g", "C" ]
run = "cd ~/config"
desc = "Go to dotfiles"
[[manager.prepend_keymap]]
on = [ "g", "d" ]
run = "cd ~/Documents"
desc = "Go to Documents"
[[manager.prepend_keymap]]
on = [ "g", "D" ]
run = "cd ~/Downloads"
desc = "Go to Downloads"
[[manager.prepend_keymap]]
on = [ "g", "g", "s" ]
run = "cd ~/.local/share/Steam/steamapps/common"
desc = "Go to steamapps"
[[manager.prepend_keymap]]
on = [ "g", "m" ]
run = "cd ~/Music"
desc = "Go to Music"
[[manager.prepend_keymap]]
on = [ "g", "P" ]
run = "cd ~/Projects"
desc = "Go to Projects"
[[manager.prepend_keymap]]
on = [ "g", "p", "p" ]
run = "cd ~/Pictures"
desc = "Go to Pictures"
[[manager.prepend_keymap]]
on = [ "g", "p", "s" ]
run = "cd ~/Pictures/Screenshots"
desc = "Go to Screenshots"
[[manager.prepend_keymap]]
on = [ "g", "v", "v" ]
run = "cd ~/Videos"
desc = "Go to Videos"
[[manager.prepend_keymap]]
on = [ "g", "v", "r" ]
run = "cd ~/Videos/Recording"
desc = "Go to Recordings"