diff --git a/home-manager/plasma.nix b/home-manager/plasma.nix index 6547f8e..04899a8 100644 --- a/home-manager/plasma.nix +++ b/home-manager/plasma.nix @@ -1,120 +1,162 @@ +{ user, ... }: { - programs.plasma = { + programs.plasma = + let + font = { + family = "ComicCodeLigatures Nerd Font"; + pointSize = 10; + }; + in + { + enable = true; + workspace = { + theme = "Breeze"; + iconTheme = "Breeze Dark"; + colorScheme = "CatppuccinMochaBlue"; + cursor = { + size = 24; + theme = "Breeze"; + }; + windowDecorations = { + library = "org.kde.breeze"; + theme = "Breeze"; + }; + }; + fonts = { + general = font; + fixedWidth = font; + small = { + family = "ComicCodeLigatures Nerd Font"; + pointSize = 8; + }; + toolbar = font; + menu = font; + windowTitle = font; + }; + hotkeys.commands = { + "spectacle-screenshot" = { + name = "Spectacle Screenshot"; + command = "/etc/nixos/scripts/py/spectacle-screenshot.py"; + comment = "Take a screenshot of a region on the screen and automatically upload it to Zipline"; + keys = [ + "Print" + "Meta+S" + ]; + }; + "spectacle-recording" = { + name = "Spectacle Recording"; + command = "/etc/nixos/scripts/py/spectacle-screenshot.py --record"; + comment = "Record a region on the screen and automatically upload it to Zipline"; + keys = [ + "Shift+Print" + "Meta+Shift+S" + ]; + }; + }; + panels = [ + { + location = "bottom"; + screen = "all"; + widgets = [ + { + kickoff = { + sortAlphabetically = true; + icon = "nix-snowflake"; + }; + } + { + iconTasks = { + launchers = [ + "applications:floorp.desktop" + "applications:ytmdesktop.desktop" + "applications:vesktop.desktop" + "applications:steam.desktop" + "applications:org.prismlauncher.PrismLauncher.desktop" + "applications:code.desktop" + "applications:org.kde.konsole.desktop" + "applications:org.kde.dolphin.desktop" + ]; + }; + } + "org.kde.plasma.marginsseperator" + "org.kde.plasma.systemtray" + "org.kde.plasma.colorpicker" + { + digitalClock = { + calendar.firstDayOfWeek = "sunday"; + date.format.custom = "dddd, MMMM d | M/d/yyyy"; + time = { + format = "12h"; + showSeconds = "always"; + }; + timeZone = { + format = "offset"; + alwaysShow = true; + }; + font = { + family = "ComicCodeLigatures Nerd Font"; + size = 16; + }; + }; + } + #FIXME - I can't figure out what this id is supposed to be 😭 + #"org.kde.plasma.peekatdesktop" + ]; + } + ]; + window-rules = [ + { + description = "Application settings for Code"; + match = { + window-class = { + value = "code code-url-handler"; + type = "exact"; + }; + }; + apply = { + desktopfile = "/etc/profiles/per-user/cswimr/share/applications/code.desktop"; + }; + } + ]; + spectacle.shortcuts = { + captureActiveWindow = [ ]; + captureCurrentMonitor = [ ]; + captureEntireDesktop = [ ]; + captureRectangularRegion = [ ]; + captureWindowUnderCursor = [ ]; + launch = [ ]; + }; + configFile = { + kcminputrc.Keyboard.NumLock.value = 0; + kwinrc.Plugins.sheetEnabled = true; + kwinrc.Plugins.wobblywindowsEnabled = true; + kwinrc.Plugins.zoomEnabled = false; + }; + }; + programs.konsole = { enable = true; - workspace = { - theme = "Breeze"; - iconTheme = "Breeze Dark"; - colorScheme = "CatppuccinMochaBlue"; - cursor = { - size = 24; - theme = "Breeze"; - }; - windowDecorations = { - library = "org.kde.breeze"; - theme = "Breeze"; - }; - }; - hotkeys.commands = { - "spectacle-screenshot" = { - name = "Spectacle Screenshot"; - command = "/etc/nixos/scripts/py/spectacle-screenshot.py"; - comment = "Take a screenshot of a region on the screen and automatically upload it to Zipline"; - keys = [ - "Print" - "Meta+S" - ]; - }; - "spectacle-recording" = { - name = "Spectacle Recording"; - command = "/etc/nixos/scripts/py/spectacle-screenshot.py --record"; - comment = "Record a region on the screen and automatically upload it to Zipline"; - keys = [ - "Shift+Print" - "Meta+Shift+S" - ]; - }; - }; - panels = [ - { - location = "bottom"; - screen = "all"; - widgets = [ - { - kickoff = { - sortAlphabetically = true; - icon = "nix-snowflake"; - }; - } - { - iconTasks = { - launchers = [ - "applications:floorp.desktop" - "applications:ytmdesktop.desktop" - "applications:vesktop.desktop" - "applications:steam.desktop" - "applications:org.prismlauncher.PrismLauncher.desktop" - "applications:code.desktop" - "applications:org.kde.konsole.desktop" - "applications:org.kde.dolphin.desktop" - ]; - }; - } - "org.kde.plasma.marginsseperator" - "org.kde.plasma.systemtray" - "org.kde.plasma.colorpicker" - { - digitalClock = { - calendar.firstDayOfWeek = "sunday"; - date.format.custom = "dddd, MMMM d | M/d/yyyy"; - time = { - format = "12h"; - showSeconds = "always"; - }; - timeZone = { - format = "offset"; - alwaysShow = true; - }; - font = null; - # { - # family = "Noto Sans"; - # style = "Medium"; - # weight = 100; - # size = 18; - # }; - }; - } - #FIXME - I can't figure out what this id is supposed to be 😭 - #"org.kde.plasma.peekatdesktop" - ]; - } - ]; - window-rules = [ - { - description = "Application settings for Code"; - match = { - window-class = { - value = "code code-url-handler"; - type = "exact"; + defaultProfile = "xonsh"; + profiles = { + "xonsh" = { + command = "/run/current-system/sw/bin/xonsh"; + colorScheme = "Catppuccin-Mocha"; + font = { + name = "ComicCodeLigatures Nerd Font"; + size = 12; + }; + extraConfig = { + "General" = { + "Directory" = "/home/${user}"; + "Icon" = "nix-snowflake"; + "StartInCurrentSessionDir" = false; + }; + "Interaction Options" = { + "AllowEscapedLinks" = true; + "OpenLinksByDirectClickEnabled" = true; + "UnderlineFilesEnabled" = true; }; }; - apply = { - desktopfile = "/etc/profiles/per-user/cswimr/share/applications/code.desktop"; - }; - } - ]; - spectacle.shortcuts = { - captureActiveWindow = [ ]; - captureCurrentMonitor = [ ]; - captureEntireDesktop = [ ]; - captureRectangularRegion = [ ]; - captureWindowUnderCursor = [ ]; - launch = [ ]; - }; - configFile = { - kcminputrc.Keyboard.NumLock.value = 0; - kwinrc.Plugins.sheetEnabled = true; - kwinrc.Plugins.wobblywindowsEnabled = true; - kwinrc.Plugins.zoomEnabled = false; + }; }; }; }