Trying some Quickshell stuff with Noctalia

See I am WAYY too lazy to write all that CSS...maybe if I were like a
graphic designer or something but I'm not.
Oddly though, this feels like a desktop environment. I'm a little
worried about battery life too.
I'm happiest that this got nightlight to work lol.
I also switched to NetworkManager for the interface.
I think doing stuff very manually was good education and I don't regret
it, but...lets be so fr there's no real reason to be doing all that.
This commit is contained in:
foreverpyrite
2025-09-30 21:13:21 +00:00
parent 49dadf232b
commit afce2ca400
7 changed files with 611 additions and 26 deletions

View File

@@ -15,7 +15,7 @@ let {
$launcher = { $launcher = {
type = "launcher" type = "launcher"
favorites = ["firefox" "discord" "steam"] // favorites = ["firefox" "discord" "steam"]
show_names = false show_names = false
show_icons = true show_icons = true
} }
@@ -45,19 +45,19 @@ let {
$sys_info = { $sys_info = {
type = "sys_info" type = "sys_info"
interval.memory = 30 interval.memory = 15
interval.cpu = 1 interval.cpu = 1
interval.temps = 5 // interval.temps = 5
interval.disks = 300 // interval.disks = 300
interval.networks = 3 interval.networks = 3
format = [ format = [
" {cpu_percent}% | {cpu_frequency} GHz | {temp_c@CPUTIN}°C" " {cpu_percent}% "
" {memory_used} / {memory_total} GB ({memory_available} {swap_used} / {swap_total} GB ({swap_free} | {swap_percent}%)" " {memory_used} / {memory_total} GB"
"󰋊 {disk_used#T@/:.1} / {disk_total#T@/:.1} TB ({disk_percent@/}%) | {disk_read} / {disk_write} MB/s" // "󰋊 {disk_used#T@/:.1} / {disk_total#T@/:.1} TB ({disk_percent@/}%) | {disk_read} / {disk_write} MB/s"
"󰓢 {net_down@enp39s0} / {net_up@enp39s0} Mbps" "󰓢 {net_down@wlan0} / {net_up@wlan0} Mbps"
// "󰖡 {load_average1} | {load_average5} | {load_average15}" // "󰖡 {load_average1} | {load_average5} | {load_average15}"
"󰥔 {uptime}" // "󰥔 {uptime}"
] ]
} }
@@ -108,12 +108,13 @@ let {
// -- end custom -- // -- end custom --
$left = [ $workspaces $launcher ] $left = [ $workspaces $launcher ]
$right = [ $sys_info $volume $clipboard $power_menu $clock $notifications ] $right = [ $sys_info $clipboard $power_menu $clock $notifications ]
} }
in { in {
anchor_to_edges = true anchor_to_edges = true
position = "top" position = "top"
icon_theme = "Paper" icon_theme = "Paper"
height = 32
start = $left start = $left
end = $right end = $right

View File

@@ -0,0 +1,276 @@
@define-color color_bg #2d2d2d;
@define-color color_bg_dark #1c1c1c;
@define-color color_border #424242;
@define-color color_border_active #6699cc;
@define-color color_text #ffffff;
@define-color color_urgent #8f0a0a;
/* -- base styles -- */
* {
font-family: NimbusSansDOT Nerd Font;
font-size: 16px;
border: none;
border-radius: 0;
}
box, menubar, button {
background-color: @color_bg;
background-image: none;
box-shadow: none;
}
button, label {
color: @color_text;
}
button:hover {
background-color: @color_bg_dark;
}
scale trough {
min-width: 1px;
min-height: 2px;
}
#bar {
border-top: 1px solid @color_border;
}
.popup {
border: 1px solid @color_border;
padding: 1em;
}
.container {
height: 0px;
}
/* -- bluetooth -- */
.popup-bluetooth {
min-height: 14em;
min-width: 24em;
}
.popup-bluetooth .header {
padding-bottom: 1.0em;
margin-bottom: 0.6em;
border-bottom: 1px solid @color_border;
}
.popup-bluetooth .header .label {
margin-left: 0.5em;
}
.popup-bluetooth .disabled .spinner {
min-width: 2.0em;
min-height: 2.0em;
padding: 0.4em;
}
.popup-bluetooth .devices .box .device {
margin-bottom: 0.4em;
}
.popup-bluetooth .devices .icon {
min-width: 2.5em;
min-height: 2.5em;
margin-right: 0.8em;
}
.popup-bluetooth .devices .box .device .status .footer-label {
font-size: 0.8em;
}
.popup-bluetooth .devices .box .device .spinner {
min-width: 1.5em;
min-height: 1.5em;
margin: 0.5em;
}
/* -- clipboard -- */
.clipboard {
margin-left: 5px;
font-size: 1.1em;
}
.popup-clipboard .item {
padding-bottom: 0.3em;
border-bottom: 1px solid @color_border;
}
/* -- clock -- */
.clock {
font-weight: bold;
margin-left: 5px;
}
.popup-clock .calendar-clock {
color: @color_text;
font-size: 2.5em;
padding-bottom: 0.1em;
}
.popup-clock .calendar {
background-color: @color_bg;
color: @color_text;
}
.popup-clock .calendar .header {
padding-top: 1em;
border-top: 1px solid @color_border;
font-size: 1.5em;
}
.popup-clock .calendar:selected {
background-color: @color_border_active;
}
/* -- launcher -- */
.launcher .item {
margin-right: 4px;
}
.launcher .ifix examtem:not(.focused):hover {
background-color: @color_bg_dark;
}
.launcher .open {
border-bottom: 1px solid @color_text;
}
.launcher .focused {
border-bottom: 1px solid @color_border_active;
}
.launcher .urgent {
border-bottom-color: @color_urgent;
}
.popup-launcher {
padding: 0;
}
.popup-launcher .popup-item:not(:first-child) {
border-top: 1px solid @color_border;
}
/* -- music -- */
.music:hover * {
background-color: @color_bg_dark;
}
.popup-music .album-art {
margin-right: 1em;
}
.popup-music .icon-box {
margin-right: 0.4em;
}
.popup-music .title .icon, .popup-music .title .label {
font-size: 1.7em;
}
.popup-music .controls *:disabled {
color: @color_border;
}
.popup-music .volume .slider slider {
border-radius: 100%;
}
.popup-music .volume .icon {
margin-left: 4px;
}
.popup-music .progress .slider slider {
border-radius: 100%;
}
/* notifications */
.notifications .count {
font-size: 0.6rem;
background-color: @color_text;
color: @color_bg;
border-radius: 100%;
margin-right: 3px;
margin-top: 3px;
padding-left: 4px;
padding-right: 4px;
opacity: 0.7;
}
/* -- script -- */
.script {
padding-left: 10px;
}
/* -- sys_info -- */
.sysinfo {
margin-left: 10px;
}
.sysinfo .item {
margin-left: 5px;
}
/* -- tray -- */
.tray {
margin-left: 10px;
}
/* -- volume -- */
.popup-volume .device-box {
border-right: 1px solid @color_border;
}
/* -- workspaces -- */
.workspaces .item.focused {
box-shadow: inset 0 -3px;
background-color: @color_bg_dark;
}
.workspaces .item.urgent {
background-color: @color_urgent;
}
.workspaces .item:hover {
box-shadow: inset 0 -3px;
}
/* -- custom: power menu -- */
.popup-power-menu #header {
font-size: 1.4em;
padding-bottom: 0.4em;
margin-bottom: 0.6em;
border-bottom: 1px solid @color_border;
}
.popup-power-menu .power-btn {
border: 1px solid @color_border;
padding: 0.6em 1em;
}
.popup-power-menu #buttons > *:nth-child(1) .power-btn {
margin-right: 1em;
}

View File

@@ -117,7 +117,7 @@ input {
// https://yalter.github.io/niri/Configuration:-Layout // https://yalter.github.io/niri/Configuration:-Layout
layout { layout {
// Set gaps around windows in logical pixels. // Set gaps around windows in logical pixels.
gaps 8 gaps 4
// When to center a column when changing focus, options are: // When to center a column when changing focus, options are:
// - "never", default behavior, focusing an off-screen column will keep at the left // - "never", default behavior, focusing an off-screen column will keep at the left
@@ -165,7 +165,7 @@ layout {
// off // off
// How many logical pixels the ring extends out from the windows. // How many logical pixels the ring extends out from the windows.
width 4 width 2
// Colors can be set in a variety of ways: // Colors can be set in a variety of ways:
// - CSS named colors: "red" // - CSS named colors: "red"
@@ -274,8 +274,11 @@ layout {
// See the binds section below for more spawn examples. // See the binds section below for more spawn examples.
// This line starts waybar, a commonly used bar for Wayland compositors. // This line starts waybar, a commonly used bar for Wayland compositors.
spawn-at-startup "ironbar" // spawn-at-startup "ironbar"
spawn-at-startup "swaync" // spawn-at-startup "swaync"
// Trying this noctalia thing and we will go from there
spawn-at-startup "qs" "-c" "noctalia-shell"
// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: // To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup:
// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" // spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell"
@@ -348,10 +351,20 @@ window-rule {
// Example: enable rounded corners for all windows. // Example: enable rounded corners for all windows.
window-rule { window-rule {
geometry-corner-radius 12 geometry-corner-radius 20
clip-to-geometry true clip-to-geometry true
} }
// Suggested for Noctalia
layer-rule {
match namespace="^quickshell-overview$"
place-within-backdrop true
}
debug {
honor-xdg-activation-with-invalid-serial
}
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
@@ -367,10 +380,29 @@ binds {
// shows a list of important hotkeys. // shows a list of important hotkeys.
Mod+Shift+Slash { show-hotkey-overlay; } Mod+Shift+Slash { show-hotkey-overlay; }
// Core Noctalia binds
Mod+D { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "launcher" "toggle"; }
Mod+S { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "controlCenter" "toggle"; }
Mod+Comma { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "settings" "toggle"; }
// Audio controls
XF86AudioRaiseVolume { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "volume" "increase"; }
XF86AudioLowerVolume { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "volume" "decrease"; }
XF86AudioMute { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "volume" "muteOutput"; }
// Brightness controls
XF86MonBrightnessUp { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "brightness" "increase"; }
XF86MonBrightnessDown { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "brightness" "decrease"; }
// Utility shortcuts
Mod+V { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "launcher" "clipboard"; }
// Mod+C { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "launcher" "calculator"; }
Mod+Alt+L { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "lockScreen" "toggle"; }
// Suggested binds for running programs: terminal, app launcher, screen locker. // Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+T hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; } Mod+T hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; }
Mod+D hotkey-overlay-title="Run an Application: anyrun" { spawn "anyrun"; } Alt+Space hotkey-overlay-title="Run an Application: anyrun" { spawn "anyrun"; }
Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; } // Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
// Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc. // Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc.
// Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`. // Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`.
@@ -380,9 +412,9 @@ binds {
// Example volume keys mappings for PipeWire & WirePlumber. // Example volume keys mappings for PipeWire & WirePlumber.
// The allow-when-locked=true property makes them work even when the session is locked. // The allow-when-locked=true property makes them work even when the session is locked.
// Using spawn-sh allows to pass multiple arguments together with the command. // Using spawn-sh allows to pass multiple arguments together with the command.
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } // 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-"; } // 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"; } // 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"; } XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
// On the topic of this, if you ever get a media (player) manager, the numpad keys // On the topic of this, if you ever get a media (player) manager, the numpad keys
// are KP_Divide, KP_Multiply, and KP_Subtract you weirdo // are KP_Divide, KP_Multiply, and KP_Subtract you weirdo
@@ -390,8 +422,8 @@ binds {
// Example brightness key mappings for brightnessctl. // Example brightness key mappings for brightnessctl.
// You can use regular spawn with multiple arguments too (to avoid going through "sh"), // You can use regular spawn with multiple arguments too (to avoid going through "sh"),
// but you need to manually put each argument in separate "" quotes. // but you need to manually put each argument in separate "" quotes.
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } // XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
XF86MonBrightnessDown 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. // Open/close the Overview: a zoomed-out view of workspaces and windows.
// You can also move the mouse into the top-left hot corner, // You can also move the mouse into the top-left hot corner,
@@ -543,10 +575,11 @@ binds {
Mod+BracketLeft { consume-or-expel-window-left; } Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; } Mod+BracketRight { consume-or-expel-window-right; }
// These have just messed with me lowkey
// Consume one window from the right to the bottom of the focused column. // Consume one window from the right to the bottom of the focused column.
Mod+Comma { consume-window-into-column; } // Mod+Comma { consume-window-into-column; }
// Expel the bottom window from the focused column to the right. // Expel the bottom window from the focused column to the right.
Mod+Period { expel-window-from-column; } // Mod+Period { expel-window-from-column; }
Mod+R { switch-preset-column-width; } Mod+R { switch-preset-column-width; }
// Cycling through the presets in reverse order is also possible. // Cycling through the presets in reverse order is also possible.
@@ -581,7 +614,8 @@ binds {
Mod+Shift+Equal { 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+V { toggle-window-floating; } // These keybinds don't feel ergonomic in the slightest
Mod+Alt+V { toggle-window-floating; }
Mod+Shift+V { switch-focus-between-floating-and-tiling; } Mod+Shift+V { switch-focus-between-floating-and-tiling; }
// Toggle tabbed column display mode. // Toggle tabbed column display mode.

View File

@@ -0,0 +1,16 @@
{
"mError": "#f38ba8",
"mOnError": "#11111b",
"mOnPrimary": "#11111b",
"mOnSecondary": "#11111b",
"mOnSurface": "#cdd6f4",
"mOnSurfaceVariant": "#a3b4eb",
"mOnTertiary": "#11111b",
"mOutline": "#4c4f69",
"mPrimary": "#cba6f7",
"mSecondary": "#fab387",
"mShadow": "#11111b",
"mSurface": "#1e1e2e",
"mSurfaceVariant": "#313244",
"mTertiary": "#94e2d5"
}

View File

@@ -0,0 +1,229 @@
{
"appLauncher": {
"backgroundOpacity": 1,
"enableClipboardHistory": true,
"pinnedExecs": [
],
"position": "center",
"sortByMostUsed": true,
"useApp2Unit": false
},
"audio": {
"cavaFrameRate": 60,
"mprisBlacklist": [
],
"preferredPlayer": "",
"visualizerType": "linear",
"volumeOverdrive": false,
"volumeStep": 5
},
"bar": {
"backgroundOpacity": 1,
"density": "default",
"floating": false,
"marginHorizontal": 1.25,
"marginVertical": 0.25,
"monitors": [
],
"position": "top",
"showCapsule": true,
"widgets": {
"center": [
{
"hideUnoccupied": false,
"id": "Workspace",
"labelMode": "index"
}
],
"left": [
{
"id": "SystemMonitor",
"showCpuTemp": true,
"showCpuUsage": true,
"showDiskUsage": false,
"showMemoryAsPercent": false,
"showMemoryUsage": true,
"showNetworkStats": false
},
{
"autoHide": true,
"id": "ActiveWindow",
"scrollingMode": "hover",
"showIcon": true
},
{
"autoHide": true,
"id": "MediaMini",
"scrollingMode": "hover",
"showAlbumArt": false,
"showVisualizer": false,
"visualizerType": "linear"
}
],
"right": [
{
"id": "ScreenRecorder"
},
{
"id": "Tray"
},
{
"hideWhenZero": true,
"id": "NotificationHistory",
"showUnreadBadge": true
},
{
"id": "WiFi"
},
{
"id": "Bluetooth"
},
{
"displayMode": "onhover",
"id": "Battery",
"warningThreshold": 30
},
{
"displayMode": "onhover",
"id": "Volume"
},
{
"displayMode": "onhover",
"id": "Brightness"
},
{
"formatHorizontal": "HH:mm ddd, MMM dd",
"formatVertical": "HH mm - dd MM",
"id": "Clock",
"useMonospacedFont": true,
"usePrimaryColor": true
},
{
"customIconPath": "",
"icon": "noctalia",
"id": "ControlCenter",
"useDistroLogo": false
}
]
}
},
"brightness": {
"brightnessStep": 5
},
"colorSchemes": {
"darkMode": true,
"matugenSchemeType": "scheme-rainbow",
"predefinedScheme": "Catppuccin",
"useWallpaperColors": false
},
"dock": {
"autoHide": false,
"backgroundOpacity": 1,
"exclusive": false,
"floatingRatio": 1,
"monitors": [
],
"pinnedApps": [
]
},
"general": {
"animationDisabled": false,
"animationSpeed": 1.1500000000000001,
"avatarImage": "/home/foreverpyrite/Pictures/Pysprite/ForeverPyrite Head.png",
"dimDesktop": true,
"forceBlackScreenCorners": false,
"radiusRatio": 1,
"screenRadiusRatio": 1,
"showScreenCorners": false
},
"hooks": {
"darkModeChange": "",
"enabled": false,
"wallpaperChange": ""
},
"location": {
"name": "New York",
"showWeekNumberInCalendar": false,
"use12hourFormat": false,
"useFahrenheit": true
},
"matugen": {
"enableUserTemplates": false,
"foot": false,
"fuzzel": false,
"ghostty": false,
"gtk3": false,
"gtk4": false,
"kitty": false,
"pywalfox": false,
"qt5": false,
"qt6": false,
"vesktop": false
},
"network": {
"wifiEnabled": true
},
"nightLight": {
"autoSchedule": true,
"dayTemp": "6500",
"enabled": true,
"forced": true,
"manualSunrise": "06:30",
"manualSunset": "18:30",
"nightTemp": "4000"
},
"notifications": {
"alwaysOnTop": false,
"criticalUrgencyDuration": 15,
"doNotDisturb": false,
"lastSeenTs": 1759199713000,
"location": "top_right",
"lowUrgencyDuration": 3,
"monitors": [
],
"normalUrgencyDuration": 8,
"respectExpireTimeout": false
},
"osd": {
"autoHideMs": 2000,
"enabled": true,
"location": "top_right",
"monitors": [
]
},
"screenRecorder": {
"audioCodec": "opus",
"audioSource": "default_output",
"colorRange": "limited",
"directory": "/home/foreverpyrite/Videos",
"frameRate": 60,
"quality": "very_high",
"showCursor": true,
"videoCodec": "h264",
"videoSource": "portal"
},
"settingsVersion": 12,
"ui": {
"fontBillboard": "Inter",
"fontDefault": "NimbusSansDOT Nerd Font",
"fontFixed": "Hack Nerd Font Mono",
"idleInhibitorEnabled": false,
"monitorsScaling": [
]
},
"wallpaper": {
"directory": "/home/foreverpyrite/Pictures/Wallpapers",
"enableMultiMonitorDirectories": false,
"enabled": false,
"fillColor": "#000000",
"fillMode": "crop",
"monitors": [
],
"randomEnabled": false,
"randomIntervalSec": 300,
"setWallpaperOnAllMonitors": true,
"transitionDuration": 1500,
"transitionEdgeSmoothness": 0.05,
"transitionType": "random"
}
}

View File

@@ -2,7 +2,9 @@
"extras": [ "extras": [
"lazyvim.plugins.extras.lang.python", "lazyvim.plugins.extras.lang.python",
"lazyvim.plugins.extras.lang.rust", "lazyvim.plugins.extras.lang.rust",
"lazyvim.plugins.extras.lang.toml" "lazyvim.plugins.extras.lang.tailwind",
"lazyvim.plugins.extras.lang.toml",
"lazyvim.plugins.extras.util.mini-hipatterns"
], ],
"install_version": 8, "install_version": 8,
"news": { "news": {

View File

@@ -0,0 +1,27 @@
-- I don't know why I got rid of this lol, it's not like markdown-oxide was gonna replace it
-- For configuration options: https://github.com/obsidian-nvim/obsidian.nvim/blob/main/lua/obsidian/config/default.lua
return {
"obsidian-nvim/obsidian.nvim",
version = "*", -- recommended, use latest release instead of latest commit
ft = "markdown",
-- Replace the above line with this if you only want to load obsidian.nvim for markdown files in your vault:
-- event = {
-- -- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand'.
-- -- E.g. "BufReadPre " .. vim.fn.expand "~" .. "/my-vault/*.md"
-- -- refer to `:h file-pattern` for more examples
-- "BufReadPre path/to/my-vault/*.md",
-- "BufNewFile path/to/my-vault/*.md",
-- },
---@module 'obsidian'
---@type obsidian.config
opts = {
workspaces = {
{
name = "Vault",
path = "~/Obsidian/Vault/",
},
},
-- see below for full list of options 👇
},
}