{ config, lib, ... }: let
inherit (lib) enabled mkIf;
in mkIf config.isDesktop {
home-manager.sharedModules = [
(homeArgs: let
system24Theme = if config.isLinux then
"${homeArgs.config.home.homeDirectory}/.config/vesktop/themes/system24.css"
else
"${config.users.users.${config.system.primaryUser}.home}/.config/vesktop/themes/system24.css";
in {
programs.vesktop = enabled {
settings = {
discordBranch = "ptb";
tray = true;
minimizeToTray = false;
autoStartMinimized = false;
staticTitle = true;
enableMenu = true;
disableSmoothScroll = false;
hardwareAcceleration = true;
hardwareVideoAcceleration = true;
appBadge = false;
enableTaskbarFlashing = false;
disableMinSize = true;
clickTrayToShowHide = true;
customTitleBar = false;
enableSplashScreen = false;
};
vencord = {
useSystem = true;
settings = {
autoUpdate = false;
transparent = false;
disableMinSize = true;
notifications.useNative = "always";
enabledThemes = [ "system24" ];
};
# themes.system24 = system24Theme;
};
};
home.file.".config/vesktop/themes/system24.theme.css".text = /* css */ ''
/**
* @name system24
* @description a tui-style discord theme.
* @author refact0r
* @version 2.0.0
* @invite nz87hXyvcy
* @website https://github.com/refact0r/system24
* @source https://github.com/refact0r/system24/blob/master/theme/system24.theme.css
* @authorId 508863359777505290
* @authorLink https://www.refact0r.dev
*/
/* import theme modules */
@import url('https://refact0r.github.io/system24/build/system24.css');
body {
/* font, change to "" for default discord font */
--font: "DM Mono"; /* change to "" for default discord font */
--code-font: "DM Mono"; /* change to "" for default discord font */
font-weight: 300; /* text font weight. 300 is light, 400 is normal. DOES NOT AFFECT BOLD TEXT */
letter-spacing: -0.05ch; /* decreases letter spacing for better readability. recommended on monospace fonts.*/
/* sizes */
--gap: 12px; /* spacing between panels */
--divider-thickness: 4px; /* thickness of unread messages divider and highlighted message borders */
--border-thickness: 2px; /* thickness of borders around main panels. DOES NOT AFFECT OTHER BORDERS */
--border-hover-transition: 0.2s ease; /* transition for borders when hovered */
/* animation/transition options */
--animations: on; /* off: disable animations/transitions, on: enable animations/transitions */
--list-item-transition: 0.2s ease; /* transition for list items */
--dms-icon-svg-transition: 0.4s ease; /* transition for the dms icon */
/* top bar options */
--top-bar-height: var(--gap); /* height of the top bar (discord default is 36px, old discord style is 24px, var(--gap) recommended if button position is set to titlebar) */
--top-bar-button-position: titlebar; /* off: default position, hide: hide buttons completely, serverlist: move inbox button to server list, titlebar: move inbox button to channel titlebar (will hide title) */
--top-bar-title-position: off; /* off: default centered position, hide: hide title completely, left: left align title (like old discord) */
--subtle-top-bar-title: off; /* off: default, on: hide the icon and use subtle text color (like old discord) */
/* window controls */
--custom-window-controls: off; /* off: default window controls, on: custom window controls */
--window-control-size: 14px; /* size of custom window controls */
/* dms button options */
--custom-dms-icon: off; /* off: use default discord icon, hide: remove icon entirely, custom: use custom icon */
--dms-icon-svg-url: url(""); /* icon svg url. MUST BE A SVG. */
--dms-icon-svg-size: 90%; /* size of the svg (css mask-size property) */
--dms-icon-color-before: var(--icon-subtle); /* normal icon color */
--dms-icon-color-after: var(--white); /* icon color when button is hovered/selected */
--custom-dms-background: off; /* off to disable, image to use a background image (must set url variable below), color to use a custom color/gradient */
--dms-background-image-url: url(""); /* url of the background image */
--dms-background-image-size: cover; /* size of the background image (css background-size property) */
--dms-background-color: linear-gradient(70deg, var(--blue-2), var(--purple-2), var(--red-2)); /* fixed color/gradient (css background property) */
/* background image options */
--background-image: off; /* off: no background image, on: enable background image (must set url variable below) */
--background-image-url: url(""); /* url of the background image */
/* transparency/blur options */
/* NOTE: TO USE TRANSPARENCY/BLUR, YOU MUST HAVE TRANSPARENT BG COLORS. FOR EXAMPLE: --bg-4: hsla(220, 15%, 10%, 0.7); */
--transparency-tweaks: off; /* off: no changes, on: remove some elements for better transparency */
--remove-bg-layer: off; /* off: no changes, on: remove the base --bg-3 layer for use with window transparency (WILL OVERRIDE BACKGROUND IMAGE) */
--panel-blur: off; /* off: no changes, on: blur the background of panels */
--blur-amount: 12px; /* amount of blur */
--bg-floating: var(--bg-3); /* set this to a more opaque color if floating panels look too transparent. only applies if panel blur is on */
/* other options */
--small-user-panel: on; /* off: default user panel, on: smaller user panel like in old discord */
/* unrounding options */
--unrounding: on; /* off: default, on: remove rounded corners from panels */
/* styling options */
--custom-spotify-bar: on; /* off: default, on: custom text-like spotify progress bar */
--ascii-titles: on; /* off: default, on: use ascii font for titles at the start of a channel */
--ascii-loader: system24; /* off: default, system24: use system24 ascii loader, cats: use cats loader */
/* panel labels */
--panel-labels: on; /* off: default, on: add labels to panels */
--label-color: var(--text-muted); /* color of labels */
--label-font-weight: 500; /* font weight of labels */
}
/* color options */
:root {
--colors: on; /* off: discord default colors, on: midnight custom colors */
/* text colors */
--text-0: var(--bg-4); /* text on colored elements */
--text-1: oklch(95% 0 0); /* other normally white text */
--text-2: oklch(85% 0 0); /* headings and important text */
--text-3: oklch(75% 0 0); /* normal text */
--text-4: oklch(60% 0 0); /* icon buttons and channels */
--text-5: oklch(40% 0 0); /* muted channels/chats and timestamps */
/* background and dark colors */
--bg-1: oklch(31% 0 0); /* dark buttons when clicked */
--bg-2: oklch(27% 0 0); /* dark buttons */
--bg-3: oklch(23% 0 0); /* spacing, secondary elements */
--bg-4: oklch(19% 0 0); /* main background color */
--hover: oklch(54% 0 0 / 0.1); /* channels and buttons when hovered */
--active: oklch(54% 0 0 / 0.2); /* channels and buttons when clicked or selected */
--active-2: oklch(54% 0 0 / 0.3); /* extra state for transparent buttons */
--message-hover: var(--hover); /* messages when hovered */
/* accent colors */
--accent-1: var(--purple-1); /* links and other accent text */
--accent-2: var(--purple-2); /* small accent elements */
--accent-3: var(--purple-3); /* accent buttons */
--accent-4: var(--purple-4); /* accent buttons when hovered */
--accent-5: var(--purple-5); /* accent buttons when clicked */
--accent-new: var(--red-2); /* stuff that's normally red like mute/deafen buttons */
--mention: linear-gradient(to right, color-mix(in hsl, var(--accent-2), transparent 90%) 40%, transparent); /* background of messages that mention you */
--mention-hover: linear-gradient(to right, color-mix(in hsl, var(--accent-2), transparent 95%) 40%, transparent); /* background of messages that mention you when hovered */
--reply: linear-gradient(to right, color-mix(in hsl, var(--text-3), transparent 90%) 40%, transparent); /* background of messages that reply to you */
--reply-hover: linear-gradient(to right, color-mix(in hsl, var(--text-3), transparent 95%) 40%, transparent); /* background of messages that reply to you when hovered */
/* status indicator colors */
--online: var(--green-2); /* change to #40a258 for default */
--dnd: var(--red-2); /* change to #d83a41 for default */
--idle: var(--yellow-2); /* change to #cc954c for default */
--streaming: var(--purple-2); /* change to ##9147ff for default */
--offline: var(--text-4); /* change to #82838b for default offline color */
/* border colors */
--border-light: var(--hover); /* general light border color */
--border: var(--active); /* general normal border color */
--border-hover: var(--accent-2); /* border color of panels when hovered */
--button-border: hsl(220, 0%, 100%, 0.1); /* neutral border color of buttons */
/* base colors */
--red-1: oklch(75% 0.13 0);
--red-2: oklch(70% 0.13 0);
--red-3: oklch(65% 0.13 0);
--red-4: oklch(60% 0.13 0);
--red-5: oklch(55% 0.13 0);
--green-1: oklch(75% 0.12 170);
--green-2: oklch(70% 0.12 170);
--green-3: oklch(65% 0.12 170);
--green-4: oklch(60% 0.12 170);
--green-5: oklch(55% 0.12 160);
--blue-1: oklch(75% 0.11 215);
--blue-2: oklch(70% 0.11 215);
--blue-3: oklch(65% 0.11 215);
--blue-4: oklch(60% 0.11 215);
--blue-5: oklch(55% 0.11 215);
--yellow-1: oklch(80% 0.12 90);
--yellow-2: oklch(75% 0.12 90);
--yellow-3: oklch(70% 0.12 90);
--yellow-4: oklch(65% 0.12 90);
--yellow-5: oklch(60% 0.12 90);
--purple-1: oklch(75% 0.12 310);
--purple-2: oklch(70% 0.12 310);
--purple-3: oklch(65% 0.12 310);
--purple-4: oklch(60% 0.12 310);
--purple-5: oklch(55% 0.12 310);
}
'';
})
];
}