diff options
| author | Ben Sima <ben@bensima.com> | 2025-12-22 16:31:13 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bensima.com> | 2025-12-22 16:31:13 -0500 |
| commit | a5a6bfc8a5d632a76335d3021a9ae8f423efd40d (patch) | |
| tree | 18484cf773c99a01e614d364ad0e34c1c8f6283d | |
| parent | 824a42ad72d90420713e6e87d75fedcb1366295e (diff) | |
Add ef-dream themes for bat, fzf, telegram; reorganize polybar with GPU monitoring; fix xmonad tab colors
| -rw-r--r-- | lib/common.nix | 33 | ||||
| -rw-r--r-- | lib/ef-dream-bat.tmTheme | 195 | ||||
| -rw-r--r-- | lib/ef-dream-telegram.tdesktop-theme | 411 | ||||
| -rw-r--r-- | lib/polybar.nix | 69 | ||||
| -rw-r--r-- | lib/xmonad.hs | 8 | ||||
| -rw-r--r-- | profiles/beryllium.nix | 5 |
6 files changed, 695 insertions, 26 deletions
diff --git a/lib/common.nix b/lib/common.nix index 5675a23..58f8b76 100644 --- a/lib/common.nix +++ b/lib/common.nix @@ -67,14 +67,9 @@ in { programs.bat = { enable = true; - config = { theme = "catppuccin-mocha"; }; + config = { theme = "ef-dream"; }; themes = { - catppuccin-mocha = builtins.readFile (pkgs.fetchFromGitHub { - owner = "catppuccin"; - repo = "bat"; - rev = "d714cc1d358ea51bfc02550dabab693f70cccea0"; - hash = "sha256-Q5B4NDrfCIK3UAMs94vdXnR42k4AXCqZz6sRn8bzmf4="; - } + "/themes/Catppuccin Mocha.tmTheme"); + ef-dream = builtins.readFile ./ef-dream-bat.tmTheme; }; }; @@ -157,17 +152,25 @@ in { enable = true; enableBashIntegration = true; colors = { - # ef-dream inspired - "bg+" = "#3b393e"; + # ef-dream palette "bg" = "#232025"; - "hl" = "#ffaacf"; + "bg+" = "#322f34"; "fg" = "#efd5c5"; - "header" = "#d0b0ff"; - "info" = "#d0b0ff"; - "pointer" = "#f3c09a"; - "marker" = "#57b0ff"; "fg+" = "#efd5c5"; - "hl+" = "#ffaacf"; + "hl" = "#ffaacf"; + "hl+" = "#d0b0ff"; + "border" = "#8f8886"; + "gutter" = "#232025"; + "header" = "#b0a0cf"; + "info" = "#c0b24f"; + "marker" = "#51b04f"; + "pointer" = "#f3c09a"; + "prompt" = "#57b0ff"; + "spinner" = "#6fb3c0"; + "separator" = "#3b393e"; + "scrollbar" = "#8f8886"; + "label" = "#b0a0cf"; + "query" = "#efd5c5"; }; defaultCommand = "rg --files"; changeDirWidgetCommand = "fd --type d"; # M-c diff --git a/lib/ef-dream-bat.tmTheme b/lib/ef-dream-bat.tmTheme new file mode 100644 index 0000000..9d15d82 --- /dev/null +++ b/lib/ef-dream-bat.tmTheme @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>name</key> + <string>ef-dream</string> + <key>settings</key> + <array> + <dict> + <key>settings</key> + <dict> + <key>background</key> + <string>#232025</string> + <key>foreground</key> + <string>#efd5c5</string> + <key>caret</key> + <string>#f3c09a</string> + <key>lineHighlight</key> + <string>#322f34</string> + <key>selection</key> + <string>#3b393e</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Comment</string> + <key>scope</key> + <string>comment</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#8f8886</string> + <key>fontStyle</key> + <string>italic</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>String</string> + <key>scope</key> + <string>string</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#51b04f</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Number</string> + <key>scope</key> + <string>constant.numeric</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#8fcfd0</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Constant</string> + <key>scope</key> + <string>constant.language, constant.character, constant.other</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#6fb3c0</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Keyword</string> + <key>scope</key> + <string>keyword, storage</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#d0b0ff</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Function</string> + <key>scope</key> + <string>entity.name.function, support.function</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#ffaacf</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Type</string> + <key>scope</key> + <string>entity.name.type, support.type, support.class</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#57b0ff</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Variable</string> + <key>scope</key> + <string>variable</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#efd5c5</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Operator</string> + <key>scope</key> + <string>keyword.operator</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#efd5c5</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Preprocessor</string> + <key>scope</key> + <string>meta.preprocessor, entity.name.function.preprocessor</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#c0b24f</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Tag</string> + <key>scope</key> + <string>entity.name.tag, entity.other.attribute-name</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#ffaacf</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Error</string> + <key>scope</key> + <string>invalid</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#ff6f6f</string> + <key>fontStyle</key> + <string>bold</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Diff Inserted</string> + <key>scope</key> + <string>markup.inserted</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#51b04f</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Diff Deleted</string> + <key>scope</key> + <string>markup.deleted</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#ff6f6f</string> + </dict> + </dict> + <dict> + <key>name</key> + <string>Diff Changed</string> + <key>scope</key> + <string>markup.changed</string> + <key>settings</key> + <dict> + <key>foreground</key> + <string>#c0b24f</string> + </dict> + </dict> + </array> +</dict> +</plist> diff --git a/lib/ef-dream-telegram.tdesktop-theme b/lib/ef-dream-telegram.tdesktop-theme new file mode 100644 index 0000000..b440c90 --- /dev/null +++ b/lib/ef-dream-telegram.tdesktop-theme @@ -0,0 +1,411 @@ +// Description: ef-dream Theme for Telegram Desktop +// Based on protesilaos ef-themes + +// ef-dream Color Palette +bgMain: #232025; +bgDim: #322f34; +bgAlt: #3b393e; +fgMain: #efd5c5; +fgDim: #8f8886; +fgAlt: #b0a0cf; +cursor: #f3c09a; +red: #ff6f6f; +green: #51b04f; +yellow: #c0b24f; +blue: #57b0ff; +magenta: #ffaacf; +magentaCooler: #d0b0ff; +cyan: #6fb3c0; + +// Helpers +rippleBg: #ffffff20; +transparent: #00000000; + +// Main +windowBg: bgMain; +windowFg: fgMain; +windowBgOver: bgDim; +windowBgRipple: rippleBg; +windowFgOver: fgMain; +windowSubTextFg: fgDim; +windowSubTextFgOver: fgAlt; +windowBoldFg: cursor; +windowBoldFgOver: cursor; +windowBgActive: cursor; +windowFgActive: bgMain; +windowActiveTextFg: blue; +windowShadowFg: #00000080; +windowShadowFgFallback: #000000; +shadowFg: transparent; +slideFadeOutBg: bgMain; +slideFadeOutShadowFg: transparent; +imageBg: #000000; +imageBgTransparent: #ffffff; + +// Buttons +activeButtonBg: cursor; +activeButtonBgOver: yellow; +activeButtonBgRipple: rippleBg; +activeButtonFg: bgMain; +activeButtonFgOver: bgMain; +activeButtonSecondaryFg: fgMain; +activeButtonSecondaryFgOver: fgMain; +activeLineFg: blue; +activeLineFgError: red; +lightButtonBg: bgMain; +lightButtonBgOver: bgDim; +lightButtonBgRipple: rippleBg; +lightButtonFg: fgAlt; +lightButtonFgOver: cursor; +attentionButtonFg: red; +attentionButtonFgOver: red; +attentionButtonBgOver: #ff6f6f40; +attentionButtonBgRipple: rippleBg; +outlineButtonBg: bgMain; +outlineButtonBgOver: bgDim; +outlineButtonOutlineFg: blue; +outlineButtonBgRipple: rippleBg; + +// Menu +menuBg: bgMain; +menuBgOver: bgDim; +menuBgRipple: rippleBg; +menuIconFg: fgDim; +menuIconFgOver: cursor; +menuSubmenuArrowFg: fgDim; +menuFgDisabled: bgAlt; +menuSeparatorFg: bgAlt; + +// Scroll +scrollBarBg: fgDim; +scrollBarBgOver: cursor; +scrollBg: bgDim; +scrollBgOver: bgDim; + +// Other +smallCloseIconFg: fgDim; +smallCloseIconFgOver: red; +radialFg: magenta; +radialBg: bgDim; +placeholderFg: bgAlt; +placeholderFgActive: fgDim; +inputBorderFg: fgDim; +filterInputBorderFg: fgDim; +checkboxFg: fgDim; +sliderBgInactive: bgDim; +sliderBgActive: cursor; +tooltipBg: bgDim; +tooltipFg: fgMain; +tooltipBorderFg: transparent; + +// Title bar +titleBg: bgMain; +titleShadow: transparent; +titleButtonFg: fgDim; +titleButtonBgOver: bgDim; +titleButtonFgOver: cursor; +titleButtonCloseBg: bgMain; +titleButtonCloseFg: fgDim; +titleButtonCloseBgOver: red; +titleButtonCloseFgOver: bgMain; +titleFgActive: fgMain; +titleFg: fgDim; + +// Boxes +boxBg: bgMain; +boxTextFg: fgMain; +boxTextFgGood: green; +boxTextFgError: red; +boxTitleFg: cursor; +boxSearchBg: bgDim; +boxTitleAdditionalFg: fgDim; +boxTitleCloseFg: fgDim; +boxTitleCloseFgOver: red; + +// Members +membersAboutLimitFg: fgDim; +contactsBg: bgMain; +contactsBgOver: bgDim; +contactsNameFg: fgMain; +contactsStatusFg: fgDim; +contactsStatusFgOver: fgDim; +contactsStatusFgOnline: green; + +// Sidebar +dialogsBg: bgMain; +dialogsNameFg: fgMain; +dialogsChatIconFg: fgDim; +dialogsDateFg: fgDim; +dialogsTextFg: fgDim; +dialogsTextFgService: fgAlt; +dialogsDraftFg: red; +dialogsVerifiedIconBg: blue; +dialogsVerifiedIconFg: bgMain; +dialogsSendingIconFg: fgDim; +dialogsSentIconFg: green; +dialogsUnreadBg: magenta; +dialogsUnreadBgMuted: bgAlt; +dialogsUnreadFg: bgMain; +dialogsBgOver: bgDim; +dialogsNameFgOver: fgMain; +dialogsChatIconFgOver: fgDim; +dialogsDateFgOver: fgDim; +dialogsTextFgOver: fgDim; +dialogsTextFgServiceOver: fgAlt; +dialogsDraftFgOver: red; +dialogsVerifiedIconBgOver: blue; +dialogsVerifiedIconFgOver: bgMain; +dialogsSendingIconFgOver: fgDim; +dialogsSentIconFgOver: green; +dialogsUnreadBgOver: magenta; +dialogsUnreadBgMutedOver: bgAlt; +dialogsUnreadFgOver: bgMain; +dialogsBgActive: bgDim; +dialogsNameFgActive: cursor; +dialogsChatIconFgActive: cursor; +dialogsDateFgActive: fgDim; +dialogsTextFgActive: fgMain; +dialogsTextFgServiceActive: fgAlt; +dialogsDraftFgActive: red; +dialogsVerifiedIconBgActive: blue; +dialogsVerifiedIconFgActive: bgMain; +dialogsSendingIconFgActive: fgDim; +dialogsSentIconFgActive: green; +dialogsUnreadBgActive: magentaCooler; +dialogsUnreadBgMutedActive: bgAlt; +dialogsUnreadFgActive: bgMain; +dialogsForwardBg: bgDim; +dialogsForwardFg: fgAlt; +searchedBarBg: bgDim; +searchedBarFg: fgDim; + +// History +historyTextInFg: fgMain; +historyTextOutFg: fgMain; +historyCaptionInFg: fgDim; +historyCaptionOutFg: fgDim; +historyFileNameInFg: fgMain; +historyFileNameOutFg: fgMain; +historyOutIconFg: green; +historyOutIconFgSelected: green; +historyIconFgInverted: bgMain; +historySendingOutIconFg: fgDim; +historySendingInIconFg: fgDim; +historySendingInvertedIconFg: bgAlt; +historyCallArrowInFg: green; +historyCallArrowOutFg: green; +historyCallArrowMissedInFg: red; +historyCallArrowMissedOutFg: red; +historyUnreadBarBg: bgDim; +historyUnreadBarBorder: bgAlt; +historyUnreadBarFg: fgAlt; +historyForwardChooseBg: #00000040; +historyForwardChooseFg: fgMain; +historyPeer1NameFg: red; +historyPeer1UserpicBg: red; +historyPeer2NameFg: green; +historyPeer2UserpicBg: green; +historyPeer3NameFg: yellow; +historyPeer3UserpicBg: yellow; +historyPeer4NameFg: blue; +historyPeer4UserpicBg: blue; +historyPeer5NameFg: magenta; +historyPeer5UserpicBg: magenta; +historyPeer6NameFg: magentaCooler; +historyPeer6UserpicBg: magentaCooler; +historyPeer7NameFg: cyan; +historyPeer7UserpicBg: cyan; +historyPeer8NameFg: cursor; +historyPeer8UserpicBg: cursor; +historyPeerUserpicFg: bgMain; +historyScrollBarBg: fgDim; +historyScrollBarBgOver: cursor; +historyScrollBg: bgDim; +historyScrollBgOver: bgDim; + +// Messages +msgInBg: bgDim; +msgInBgSelected: bgAlt; +msgOutBg: bgAlt; +msgOutBgSelected: #3b393e; +msgSelectOverlay: #57b0ff40; +msgStickerOverlay: #57b0ff40; +msgInServiceFg: fgAlt; +msgInServiceFgSelected: fgAlt; +msgOutServiceFg: fgAlt; +msgOutServiceFgSelected: fgAlt; +msgInShadow: transparent; +msgInShadowSelected: transparent; +msgOutShadow: transparent; +msgOutShadowSelected: transparent; +msgInDateFg: fgDim; +msgInDateFgSelected: fgDim; +msgOutDateFg: fgDim; +msgOutDateFgSelected: fgDim; +msgServiceFg: fgMain; +msgServiceBg: bgDim; +msgServiceBgSelected: bgAlt; +msgInReplyBarColor: blue; +msgInReplyBarSelColor: blue; +msgOutReplyBarColor: cursor; +msgOutReplyBarSelColor: cursor; +msgImgReplyBarColor: fgMain; +msgInMonoFg: cyan; +msgOutMonoFg: cyan; +msgInBgOver: bgDim; +msgInBgSelected: bgAlt; +msgOutBgOver: bgAlt; +msgOutBgSelected: bgAlt; +msgDateImgFg: fgMain; +msgDateImgBg: #00000080; +msgDateImgBgOver: #00000080; +msgDateImgBgSelected: #00000080; +msgFileThumbLinkInFg: blue; +msgFileThumbLinkInFgSelected: blue; +msgFileThumbLinkOutFg: cursor; +msgFileThumbLinkOutFgSelected: cursor; +msgFileInBg: blue; +msgFileInBgOver: blue; +msgFileInBgSelected: blue; +msgFileOutBg: cursor; +msgFileOutBgOver: cursor; +msgFileOutBgSelected: cursor; +msgFile1Bg: blue; +msgFile1BgDark: blue; +msgFile1BgOver: blue; +msgFile1BgSelected: blue; +msgFile2Bg: green; +msgFile2BgDark: green; +msgFile2BgOver: green; +msgFile2BgSelected: green; +msgFile3Bg: red; +msgFile3BgDark: red; +msgFile3BgOver: red; +msgFile3BgSelected: red; +msgFile4Bg: yellow; +msgFile4BgDark: yellow; +msgFile4BgOver: yellow; +msgFile4BgSelected: yellow; +msgWaveformInActive: blue; +msgWaveformInActiveSelected: blue; +msgWaveformInInactive: bgAlt; +msgWaveformInInactiveSelected: bgAlt; +msgWaveformOutActive: cursor; +msgWaveformOutActiveSelected: cursor; +msgWaveformOutInactive: bgAlt; +msgWaveformOutInactiveSelected: bgAlt; +msgBotKbOverBgAdd: bgDim; +msgBotKbIconFg: fgDim; +msgBotKbRippleBg: rippleBg; +mediaInFg: fgDim; +mediaInFgSelected: fgDim; +mediaOutFg: fgDim; +mediaOutFgSelected: fgDim; +youtubePlayIconBg: red; +youtubePlayIconFg: bgMain; +videoPlayIconBg: bgMain; +videoPlayIconFg: fgMain; +toastBg: bgDim; +toastFg: fgMain; +reportSpamBg: bgDim; +reportSpamFg: fgDim; +historyToDownShadow: transparent; +historyComposeAreaBg: bgMain; +historyComposeAreaFg: fgMain; +historyComposeAreaFgService: fgAlt; +historyComposeIconFg: fgDim; +historyComposeIconFgOver: cursor; +historySendIconFg: cursor; +historySendIconFgOver: cursor; +historyPinnedBg: bgDim; +historyReplyBg: bgDim; +historyReplyIconFg: blue; +historyReplyCancelFg: fgDim; +historyReplyCancelFgOver: red; +historyComposeButtonBg: bgDim; +historyComposeButtonBgOver: bgAlt; +historyComposeButtonBgRipple: rippleBg; +overviewCheckBg: transparent; +overviewCheckFg: bgMain; +overviewCheckFgActive: bgMain; +overviewPhotoSelectOverlay: #57b0ff40; +profileStatusFgOver: fgDim; +notificationsBoxMonitorFg: fgMain; +notificationsBoxScreenBg: bgMain; +notificationSampleUserpicFg: fgDim; +notificationSampleCloseFg: fgDim; +notificationSampleTextFg: fgDim; +notificationSampleNameFg: fgMain; +mainMenuBg: bgMain; +mainMenuCoverBg: bgDim; +mainMenuCoverFg: fgMain; +mediaPlayerBg: bgMain; +mediaPlayerActiveFg: cursor; +mediaPlayerInactiveFg: fgDim; +mediaPlayerDisabledFg: bgAlt; +mediaviewFileBg: bgMain; +mediaviewFileNameFg: fgMain; +mediaviewFileSizeFg: fgDim; +mediaviewFileRedCornerFg: red; +mediaviewFileYellowCornerFg: yellow; +mediaviewFileGreenCornerFg: green; +mediaviewFileBlueCornerFg: blue; +mediaviewFileExtFg: bgMain; +mediaviewMenuBg: bgMain; +mediaviewMenuBgOver: bgDim; +mediaviewMenuBgRipple: rippleBg; +mediaviewMenuFg: fgMain; +mediaviewBg: #000000eb; +mediaviewVideoBg: bgMain; +mediaviewControlBg: #00000080; +mediaviewControlFg: fgMain; +mediaviewCaptionBg: #00000080; +mediaviewCaptionFg: fgMain; +mediaviewTextLinkFg: blue; +mediaviewSaveMsgBg: bgDim; +mediaviewSaveMsgFg: fgMain; +mediaviewPlaybackActive: cursor; +mediaviewPlaybackInactive: bgAlt; +mediaviewPlaybackActiveOver: cursor; +mediaviewPlaybackInactiveOver: bgDim; +mediaviewPlaybackProgressFg: fgMain; +mediaviewPlaybackIconFg: fgMain; +mediaviewPlaybackIconFgOver: cursor; +mediaviewTransparentBg: bgMain; +mediaviewTransparentFg: fgDim; +emojiPanBg: bgMain; +emojiPanCategories: bgDim; +emojiPanHeaderFg: fgDim; +emojiPanHeaderBg: bgMain; +stickerPanDeleteBg: #00000080; +stickerPanDeleteFg: fgMain; +stickerPreviewBg: #000000b0; +callBg: bgMain; +callNameFg: fgMain; +callFingerprintBg: bgDim; +callStatusFg: fgDim; +callIconFg: fgMain; +callAnswerBg: green; +callAnswerRipple: rippleBg; +callAnswerBgOuter: #51b04f40; +callHangupBg: red; +callHangupRipple: rippleBg; +callCancelBg: fgDim; +callCancelFg: bgMain; +callCancelRipple: rippleBg; +callMuteRipple: rippleBg; +callBarBg: bgDim; +callBarMuteRipple: rippleBg; +introBg: bgMain; +introTitleFg: cursor; +introDescriptionFg: fgDim; +introErrorFg: red; +introCoverTopBg: bgDim; +introCoverBottomBg: bgMain; +introCoverIconsFg: cursor; +introCoverPlaneTrace: fgAlt; +introCoverPlaneInner: fgMain; +introCoverPlaneOuter: cursor; +introCoverPlaneTop: bgMain; +dialogsMenuIconFg: fgDim; +dialogsMenuIconFgOver: cursor; diff --git a/lib/polybar.nix b/lib/polybar.nix index d3d5c3d..8a48d94 100644 --- a/lib/polybar.nix +++ b/lib/polybar.nix @@ -45,21 +45,24 @@ in { separator-foreground = colors.${theme}.highlight; }; - # Bottom bar: memory, temp, network (stacked above CPU bar) + # Bottom bar: memory, disk, network "bar/bottom" = bar-common // { bottom = true; offset-y = "${toString bar-height}pt"; modules-left = [ "mem" ]; - modules-center = [ "temp" ]; + modules-center = [ "disk" ]; modules-right = [ "network-speed" ]; separator = " │ "; separator-foreground = colors.${theme}.highlight; }; - # CPU bar: very bottom, just CPU cores - "bar/cpu" = bar-common // { + # GPU bar: CPU and GPU metrics + "bar/gpu" = bar-common // { bottom = true; - modules-center = [ "cpu" ]; + modules-left = [ "cpu" ]; + modules-right = [ "nvidia-gpu" ]; + separator = " │ "; + separator-foreground = colors.${theme}.highlight; }; "module/ewmh" = { @@ -191,6 +194,62 @@ in { format-disconnected = ""; }; + "module/disk" = { + type = "internal/fs"; + interval = 30; + mount-0 = "/"; + format-mounted = "<label-mounted>"; + label-mounted = "DISK %percentage_used%%"; + label-mounted-foreground = colors.${theme}.yellow; + }; + + "module/nvidia-gpu" = { + type = "custom/script"; + exec = let + script = pkgs.writeShellScript "polybar-nvidia" '' + data=$(/run/current-system/sw/bin/nvidia-smi --query-gpu=temperature.gpu,memory.used,memory.total,utilization.gpu --format=csv,noheader,nounits) + + # Parse CSV and trim whitespace + temp=$(${pkgs.coreutils}/bin/echo "$data" | ${pkgs.gawk}/bin/awk -F, '{print $1}' | ${pkgs.coreutils}/bin/tr -d ' ') + mem_used=$(${pkgs.coreutils}/bin/echo "$data" | ${pkgs.gawk}/bin/awk -F, '{print $2}' | ${pkgs.coreutils}/bin/tr -d ' ') + mem_total=$(${pkgs.coreutils}/bin/echo "$data" | ${pkgs.gawk}/bin/awk -F, '{print $3}' | ${pkgs.coreutils}/bin/tr -d ' ') + util=$(${pkgs.coreutils}/bin/echo "$data" | ${pkgs.gawk}/bin/awk -F, '{print $4}' | ${pkgs.coreutils}/bin/tr -d ' ') + + # Calculate memory percentage + mem_pct=$((mem_used * 100 / mem_total)) + + # Temp indicator + if [ "$temp" -lt 60 ]; then + temp_icon="❄" + temp_color="%{F#6fb3c0}" + elif [ "$temp" -lt 80 ]; then + temp_icon="🌡" + temp_color="%{F#c0b24f}" + else + temp_icon="🔥" + temp_color="%{F#ff6f6f}" + fi + + # Usage bar + bars="▁▂▃▄▅▆▇█" + idx=$((util / 13)) + if [ $idx -gt 7 ]; then idx=7; fi + bar="''${bars:$idx:1}" + + if [ "$util" -lt 30 ]; then + util_color="%{F#51b04f}" + elif [ "$util" -lt 70 ]; then + util_color="%{F#c0b24f}" + else + util_color="%{F#ff6f6f}" + fi + + ${pkgs.coreutils}/bin/echo "''${temp_color}''${temp_icon} ''${temp}°C%{F-} │ GPU ''${util}% ''${util_color}''${bar}%{F-} │ MEM ''${mem_pct}%" + ''; + in "${script}"; + interval = 2; + }; + }; }; } diff --git a/lib/xmonad.hs b/lib/xmonad.hs index 3903671..34681d9 100644 --- a/lib/xmonad.hs +++ b/lib/xmonad.hs @@ -183,10 +183,12 @@ addSpace = myTabCfg theme = def { fontName = "xft:Fira Sans:size=10:ant", - activeBorderColor = highlight theme, + activeBorderColor = "#f3c09a", -- cursor/orange inactiveBorderColor = background theme, - activeColor = highlight theme, - inactiveColor = background theme + activeColor = "#f3c09a", -- cursor/orange background + inactiveColor = background theme, + activeTextColor = background theme, -- dark text on orange + inactiveTextColor = foreground theme } myLayout theme = diff --git a/profiles/beryllium.nix b/profiles/beryllium.nix index d6c6a06..2907b1f 100644 --- a/profiles/beryllium.nix +++ b/profiles/beryllium.nix @@ -91,12 +91,11 @@ in { services.polybar.enable = true; services.polybar.config."bar/top".monitor = "DP-0"; services.polybar.config."bar/bottom".monitor = "DP-0"; - services.polybar.config."bar/cpu".monitor = "DP-0"; + services.polybar.config."bar/gpu".monitor = "DP-0"; services.polybar.script = '' polybar top & polybar bottom & - sleep 0.5 - polybar cpu & + polybar gpu & ''; } |
