From 53d9d054208f5b4fe6741689d206b1c121fa3d45 Mon Sep 17 00:00:00 2001 From: QuantumSoul <19613657+BinaryQuantumSoul@users.noreply.github.com> Date: Sat, 24 Jan 2026 16:49:29 +0100 Subject: [PATCH 1/8] =?UTF-8?q?Discord=20Midnight=20=E2=86=92=20Material?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Templates/discord.css | 383 +++++++---------------------------- 1 file changed, 69 insertions(+), 314 deletions(-) diff --git a/Assets/Templates/discord.css b/Assets/Templates/discord.css index 6da989f69..7d6bcf47c 100644 --- a/Assets/Templates/discord.css +++ b/Assets/Templates/discord.css @@ -1,329 +1,84 @@ /** -* @name noctalia-midnight -* @description a fork of midnight for noctalia-shell -* @author refact0r -* @version 2.1.1 -* @invite nz87hXyvcy -* @website https://github.com/refact0r/midnight-discord -* @source https://github.com/refact0r/midnight-discord/blob/master/themes/midnight.theme.css -* @authorId 508863359777505290 -* @authorLink https://www.refact0r.dev -*/ + * @name Material Noctalia + * @version 3.0.6 + * @description A fork of Material Discord for Noctalia Shell + * @author CapnKitten + * + * @website http://github.com/CapnKitten + * @source https://github.com/CapnKitten/BetterDiscord/blob/master/Themes/Material-Discord/css/source.css + * @donate https://paypal.me/capnkitten + * @invite jzJkA6Z + */ -/* import theme modules */ -@import url('https://refact0r.github.io/midnight-discord/build/midnight.css'); +@import url("https://capnkitten.github.io/BetterDiscord/Themes/Material-Discord/css/source.css"); -body { - /* font options */ - --font: ''; /* change to '' for default discord font */ - --code-font: ''; /* change to '' for default discord font */ - font-weight: 400; /* normal text font weight. DOES NOT AFFECT BOLD TEXT */ - - /* sizes */ - --gap: 12px; /* spacing between panels */ - --divider-thickness: 4px; /* thickness of unread messages divider and highlighted message borders */ - --border-thickness: 1px; /* thickness of borders around main panels. DOES NOT AFFECT OTHER BORDERS */ - - /* 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 */ - --border-hover-transition: 0.2s ease; /* transition for borders when hovered */ - - /* 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: on; /* off: default window controls, on: custom window controls */ - --window-control-size: 14px; /* size of custom window controls */ - - /* dms button options */ - --custom-dms-icon: custom; /* off: use default discord icon, hide: remove icon entirely, custom: use custom icon */ - --dms-icon-svg-url: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMjU2IgogICBoZWlnaHQ9IjI1NiIKICAgdmlld0JveD0iMCAwIDY3LjczMzMzNCA2Ny43MzMzMzQiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczEiIC8+CiAgPGcKICAgICBpZD0iZzEiCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMS4xMDEwODY5LDAsMCwxLjEwMTA4NjksLTMuNDIzODM0NywtMy40MjM0ODkzKSI+CiAgICA8ZwogICAgICAgaWQ9Imc1NSIKICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0LjIwNTU5MDUsMCwwLDQuMjA1NTkwNSwtMTQuNzg4ODk4LC0xODAuNDMzNjIpIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGg1NSIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6OS4xO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtwYWludC1vcmRlcjpmaWxsIG1hcmtlcnMgc3Ryb2tlIgogICAgICAgICBkPSJtIDExLjY0NjQ4NCw0My42NDI1NzggYSA3LjMxNDEzNTYsNy4zMTQxMzU2IDAgMCAwIC03LjMxMjQ5OTYsNy4zMTI1IDcuMzE0MTM1Niw3LjMxNDEzNTYgMCAwIDAgNy4zMTI0OTk2LDcuMzE0NDUzIDcuMzE0MTM1Niw3LjMxNDEzNTYgMCAwIDAgNy4xNTgyMDQsLTUuODk4NDM3IDYuMjIwMzMwMiw2LjIyMDMzMDIgMCAwIDEgLTMuNDE2MDE2LDMuNDY0ODQ0IGMgMC4wMDE1LDAuMjc3NDA2IDAuMDAzOSwwLjUzMjU1IDAuMDAzOSwwLjcyNjU2MiAtMC43Mzk0NDUsMCAtMS4zNzU4MzUsLTAuMTAxODg2IC0xLjkyMTg3NSwtMC4yNzE0ODQgYSA2LjIyMDMzMDIsNi4yMjAzMzAyIDAgMCAxIC0wLjQ0MTQwNiwwLjAzNTE2IDYuMjIwMzMwMiw2LjIyMDMzMDIgMCAwIDEgLTYuMjIwNzAzMiwtNi4yMjA3MDMgNi4yMjAzMzAyLDYuMjIwMzMwMiAwIDAgMSA2LjIyMDcwMzIsLTYuMjIwNzAzIDYuMjIwMzMwMiw2LjIyMDMzMDIgMCAwIDEgMC41NzYxNzIsMC4wMjczNCA3LjMxNDEzNTYsNy4zMTQxMzU2IDAgMCAwIC0xLjk1ODk4NSwtMC4yNjk1MzEgeiIgLz4KICAgIDwvZz4KICAgIDxwYXRoCiAgICAgICBpZD0icGF0aDU2IgogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MS4zNDYwODtzdHJva2UtbWl0ZXJsaW1pdDo5LjE7cGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZSIKICAgICAgIGQ9Im0gNDIuNjY0NDQsMzEuMjkxNDc0IGMgLTEuODAyODgyLDIuMDIzMTA1IC00Ljk1MDEzOSwyLjQ5MjY2MSAtOC41MjU0LDIuNTAyOCAtMi43MTgxNiwtMC4wMDc3IC01LjQ1MDQ3NiwtMC4xMjgyMjcgLTcuMjY5NTYsLTEuMzg5NTUxIC0xLjgxNjU0MiwwLjMyNDE4MiAtMi41NzkxNTcsMi4zNDQwMzMgLTIuNDE1ODY2LDQuNzAyNzc3IDEuMTY0NjQ3LDE2LjgyMjk2NyAxMS44MTY3MiwxNS43MzQ2NDUgMTEuOTEyMTk4LDE1LjcwNzE0NSAtNy43OTMzNjYsLTMuODAyNDQ3IC02LjUxNjQ5OCwtMTAuMDAwNDggLTYuNzcyNjIyLC0xMS45NzUyOTMgMC4zMjA5MjgsMy4zNDIzMyAzLjg5NTkyNiwxMi44NTY3NjQgMTcuMjM1NDk0LDEyLjg1Njc2NCAwLC00LjAwOTY1NSAwLjAxOTkyLC0xNC4zMTEwMzUgLTEuMjc5MDgsLTE3LjQ4NzAyNCAtMC40MDkxMjQsLTEuMjM3MzEyIC0xLjUyNTI2LC00LjU0Njk2MyAtMi44ODUxNjQsLTQuOTE3NjE4IHoiIC8+CiAgICA8cGF0aAogICAgICAgaWQ9InBhdGg1NyIKICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjMuNzY1NjU7c3Ryb2tlLW1pdGVybGltaXQ6OS4xO3BhaW50LW9yZGVyOmZpbGwgbWFya2VycyBzdHJva2UiCiAgICAgICBkPSJtIDIwLjk5MjAxMywxNi4wODcwMDQgYyAwLjYwODk0NCwxLjg2NTU0NSAxLjgzNTMzNCwzLjcwNDMxNCAzLjQ4MDA4Niw0LjQwMTc0NSAtMC40NTg3ODEsMS4zODI4MDQgLTAuNDYwODMxLDMuMDI0OTQ5IC0wLjQ2MDgzMSw0Ljc4MzEyNiAwLDQuOTI3ODk1IDQuNTMzNjk4LDguOTE5NDEzIDEwLjEzMDM1OSw4LjkzODU1OSA1LjU5NjY2NCwtMC4wMTkxMiAxMC4xMzAzNjcsLTQuMDEwNjY3IDEwLjEzMDM2NywtOC45Mzg1NTkgMCwtMS43NTgxNzcgLTAuMDAyMSwtMy40MDAzMjIgLTAuNDYwODMzLC00Ljc4MzEyNiAxLjY0NDc1MywtMC42OTc0MzEgMi44NzExNDIsLTIuNTM2MiAzLjQ4MDA4NCwtNC40MDE3NDUgLTEuOTg3Nzc2LC0wLjAzMDUgLTUuMTUwOTA4LDAuNzAwNzU3IC03Ljg1MDA0NywwLjc4NjU5NSAtMS4zNTE1MzksLTAuMzUxODQ1IC0zLjA4NjEzNywtMC41NDU4NjggLTUuMjk5NTcxLC0wLjU0ODIzMyAtMi4yMTM0MzEsMC4wMDI0IC0zLjk0ODAyNywwLjE5NjM2NyAtNS4yOTk1NjgsMC41NDgyMzMgLTIuNjk5MTM1LC0wLjA4NTg0IC01Ljg2MjI2NiwtMC44MTcxODcgLTcuODUwMDQ2LC0wLjc4NjU5NSB6IG0gNi43Nzc0MTksNC42NDgwNTMgYyAwLjU1NTQ3LC0wLjAxMzgzIDEuMjk5Nzc5LDAuMDYyMDQgMi4zMDQxNjEsMC4yNDYzMTkgMC42NzIxOTgsMC4xMjMzMDIgMS41MjM1MzYsMC40NTI0MDIgMi4wMzQwMTksMC43NTQ4MTMgMC45NTA4MDcsMC41NjMyNjQgMS4wNzM1OTUsMS4yMDc2OTcgMi4wMzQwMTUsMS4yMDc2OTcgMC45NjA0MiwwIDEuMDgzMjA3LC0wLjY0NDQzMyAyLjAzNDAxOCwtMS4yMDc2OTcgMC41MTA0ODMsLTAuMzAyNDE4IDEuMzYxODIyLC0wLjYzMTUxMSAyLjAzNDAyMSwtMC43NTQ4MTMgNC41OTE0NTksLTAuODQyMzI4IDMuODIxNzMyLDAuNTIzOTYyIDMuODIxNzMyLDIuODM2NTA1IDAsMi4zODcxMzIgLTEuOTM1MTU1LDQuMzIyMjkgLTQuMzIyMjkxLDQuMzIyMjkgLTAuNzYyOTUsLTAuMDAzNyAtMS41MTEzMzIsLTAuMjA5MzQgLTIuMTY5MDkxLC0wLjU5NTkwNSAtMC4wMTU0NiwwLjAzMzc1IC0wLjAyODg3LDAuMDY0ODQgLTAuMDQ3NjgsMC4wOTUzNSBsIC0wLjk2OTMzOCwxLjU3MzE4OSBjIC0wLjEwNTIzOSwwLjE3MTIyMiAtMC4yNDM3OTcsMC4yNTc0NjcgLTAuMzgxMzc4LDAuMjU0MjUxIC0wLjEzNzU4LDAuMDAzMSAtMC4yNzYxMzksLTAuMDgzMDMgLTAuMzgxMzc4LC0wLjI1NDI1MSBsIC0wLjk2OTMzOCwtMS41NzMxODkgYyAtMC4wMTg3MSwtMC4wMzA1IC0wLjAzMjEyLC0wLjA2MTU5IC0wLjA0NzY4LC0wLjA5NTM1IC0wLjY1Nzc2MywwLjM4NjU4NSAtMS40MDYxNDIsMC41OTIxODggLTIuMTY5MDkxLDAuNTk1OTA1IC0yLjM4NzEzNywwIC00LjMyMjI5LC0xLjkzNTE1OCAtNC4zMjIyOSwtNC4zMjIyOSAwLC0xLjgwNjY3MyAtMC40NjYyNzEsLTMuMDMzMTczIDEuNTE3NTY5LC0zLjA4MjgxNCB6IiAvPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoNTgiCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjIyMDUyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjkuMTtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtwYWludC1vcmRlcjpmaWxsIG1hcmtlcnMgc3Ryb2tlIgogICAgICAgZD0iTSAzMi4zMDQyLDI1LjMwMDU5NiBBIDEuOTkxNDQzOCwxLjk5MTQ0MzggMCAwIDEgMzAuNTc5NTU5LDI2LjI5NjMyIDEuOTkxNDQzOCwxLjk5MTQ0MzggMCAwIDEgMjguODU0OTE4LDI1LjMwMDU5NiIgLz4KICAgIDxwYXRoCiAgICAgICBpZD0icGF0aDU5IgogICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4yMjA1MjtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo5LjE7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7cGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZSIKICAgICAgIGQ9Ik0gMzkuNDI4MzM0LDI1LjMwMDU5NiBBIDEuOTkxNDQzOCwxLjk5MTQ0MzggMCAwIDEgMzcuNzAzNjk2LDI2LjI5NjMyIDEuOTkxNDQzOCwxLjk5MTQ0MzggMCAwIDEgMzUuOTc5MDUzLDI1LjMwMDU5NiIgLz4KICA8L2c+Cjwvc3ZnPg=='); /* 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 */ - - /* chatbar options */ - --custom-chatbar: separated; /* off: default chatbar, separated: chatbar separated from chat */ - --chatbar-height: 56px; /* height of the chatbar (56px by default, 47px to align with user panel, 56px recommended for separated) */ - - /* other options */ - --small-user-panel: off; /* off: default user panel, on: smaller user panel like in old discord */ +/* Material You addon */ +@import url("https://capnkitten.github.io/BetterDiscord/Themes/Material-Discord/css/addons/material-you/source.css"); +/* MATERIAL YOU DARK THEME SETTINGS */ +.theme-dark { + --saturation-modifier: 0.31; + --lightness-modifier: 0.225; + --text-lightness-modifier: 1.0; } -/* color options */ -:root { - --colors: on; /* off: discord default colors, on: midnight custom colors */ - - /* text colors */ - --text-0: {{colors.background.default.hex}}; /* text on colored elements */ - --text-1: {{colors.on_background.default.hex}}; /* other normally white text */ - --text-2: {{colors.on_surface.default.hex}}; /* headings and important text */ - --text-3: {{colors.on_surface_variant.default.hex}}; /* normal text */ - --text-4: {{colors.outline.default.hex}}; /* icon buttons and channels */ - --text-5: {{colors.outline_variant.default.hex}}; /* muted channels/chats and timestamps */ - - /* background and dark colors */ - --bg-1: {{colors.surface_container_lowest.default.hex}}; /* dark buttons when clicked */ - --bg-2: {{colors.surface_container_low.default.hex}}; /* dark buttons */ - --bg-3: {{colors.surface_container.default.hex}}; /* spacing, secondary elements */ - --bg-4: {{colors.surface.default.hex}}; /* main background color */ - --hover: {{colors.on_surface.default.hex}}15; /* channels and buttons when hovered */ - --active: {{colors.surface_container_highest.default.hex}}; /* channels and buttons when clicked or selected */ - --active-2: {{colors.surface.default.hex}}; /* extra state for transparent buttons */ - --message-hover: {{colors.surface_variant.default.hex}}40; /* messages when hovered */ - - /* accent colors */ - --accent-1: {{colors.primary.default.hex}}; /* links and other accent text */ - --accent-2: {{colors.primary_container.default.hex}}; /* small accent elements */ - --accent-3: {{colors.secondary.default.hex}}; /* accent buttons */ - --accent-4: {{colors.on_secondary_container.default.hex}}; /* accent buttons when hovered */ - --accent-5: {{colors.secondary.default.hex}}; /* accent buttons when clicked */ - --accent-new: {{colors.error.default.hex}}; /* stuff that's normally red like mute/deafen buttons */ - - --mention: linear-gradient(to right, color-mix(in hsl, {{colors.primary_container.default.hex}}, transparent 90%) 40%, transparent); /* background of messages that mention you */ - --mention-hover: linear-gradient(to right, color-mix(in hsl, {{colors.primary_container.default.hex}}, transparent 95%) 40%, transparent); /* background of messages that mention you when hovered */ - - --reply: linear-gradient(to right, color-mix(in hsl, {{colors.tertiary_container.default.hex}}, transparent 90%) 40%, transparent); /* background of messages that reply to you */ - --reply-hover: linear-gradient(to right, color-mix(in hsl, {{colors.tertiary_container.default.hex}}, transparent 95%) 40%, transparent); /* background of messages that reply to you when hovered */ - - /* status indicator colors */ - --online: var(--green-2); /* change to #43a25a for default */ - --dnd: var(--red-2); /* change to #d83a42 for default */ - --idle: var(--yellow-2); /* change to #ca9654 for default */ - --streaming: var(--purple-2); /* change to #593695 for default */ - --offline: var(--text-4); /* change to #83838b for default offline color */ - - /* border colors */ - --border-light: var(--hover); /* general light border color */ - --border: var(--active); /* general normal border color */ - --border-hover: var(--active); /* border color of panels when hovered */ - --button-border: hsl(230, 0%, 100%, 0.1); /* neutral border color of buttons */ - - /* base colors */ - --red-1: hsl(351deg, 74%, 78%); - --red-2: hsl(351deg, 74%, 73%); - --red-3: hsl(351deg, 74%, 73%); - --red-4: hsl(351deg, 74%, 68%); - --red-5: hsl(351deg, 74%, 63%); - - --green-1: hsl(105deg, 48%, 77%); - --green-2: hsl(105deg, 48%, 72%); - --green-3: hsl(105deg, 48%, 72%); - --green-4: hsl(105deg, 48%, 67%); - --green-5: hsl(105deg, 48%, 62%); - - --blue-1: hsl(199deg, 66%, 74%); - --blue-2: hsl(199deg, 66%, 69%); - --blue-3: hsl(199deg, 66%, 69%); - --blue-4: hsl(199deg, 66%, 64%); - --blue-5: hsl(199deg, 66%, 59%); - - --yellow-1: hsl(40deg, 70%, 83%); - --yellow-2: hsl(40deg, 70%, 78%); - --yellow-3: hsl(40deg, 70%, 78%); - --yellow-4: hsl(40deg, 70%, 73%); - --yellow-5: hsl(40deg, 70%, 68%); - - --purple-1: hsl(267deg, 83%, 85%); - --purple-2: hsl(267deg, 83%, 80%); - --purple-3: hsl(267deg, 83%, 80%); - --purple-4: hsl(267deg, 83%, 75%); - --purple-5: hsl(267deg, 83%, 70%); +/* MATERIAL YOU LIGHT THEME SETTINGS */ +.theme-light { + --saturation-modifier: 0.74; + --lightness-modifier: 2.125; + --text-lightness-modifier: 1.0; } -.divider__908e2:not(.isUnread__908e2) { - border-color: var(--bg-2); -} +:root, .theme-dark, .theme-light { + /* See options at https://github.com/CapnKitten/Material-Discord */ + /* Accent */ + --accent-hue: {{colors.primary.default.hue}}; + --accent-saturation: {{colors.primary.default.saturation}}%; + --accent-lightness: {{colors.primary.default.lightness}}%; + --accent-text-color: {{colors.on_primary.default.hex}}; -.bannerButton_de8008, .bannerColor_fb7f94 { - color: var(--text-1); -} + /* App */ + --app-bg: {{colors.surface.default.hex}}; + --main-color: {{colors.surface.default.hex}}; + --main-alt: {{colors.surface.default.hex}}; + --server-color: {{colors.surface.default.hex}}; + --status-picker-color: {{colors.surface_container.default.hex}}; + --sidebar-panel-color: {{colors.surface_container.default.hex}}; + --chat-color: {{colors.surface.default.hex}}; + --tooltip-color: {{colors.surface.default.hex}}; + --tooltip-text-color: {{colors.on_surface.default.hex}}; -/* Prevent scaling animation on DMS icon */ -.wrapper__6e9f8[data-list-item-id='guildsnav___home']:hover > .childWrapper__6e9f8::before, -.wrapper__6e9f8[data-list-item-id='guildsnav___home'].selected__6e9f8 > .childWrapper__6e9f8::before { - transform: rotate(-360deg) scale(1) !important; -} + /* Message */ + --message-color: {{colors.surface_container.default.hex}}; + --message-color-hover: hsl( + var(--accent-hue), + calc(var(--accent-saturation) * var(--saturation-modifier) * var(--saturation-factor)), + calc(var(--accent-lightness) * var(--lightness-modifier) * var(--ui-darkness-modifier) * 4) + ) !important; + --message-color-alt: {{colors.on_secondary.default.hex}}; + --attachment-color: {{colors.on_primary.default.hex}}; + --main-textarea-color: {{colors.primary.default.hex}}; + --main-textarea-button-color: {{colors.on_primary.default.hex}}; + --main-textarea-color-alt: {{colors.secondary.default.hex}}; + --main-textarea-border: {{colors.surface_container.default.hex}}; -/* Make timestamps use lighter text color */ -.timestamp_c19a55, -.timestampInline_c19a55, -.timestamp_c19a55 time, -.timestampInline_c19a55 time { - color: var(--text-4) !important; -} + /* Card */ + --card-color-filled: {{colors.surface_container.default.hex}}; + --card-color-hover: {{colors.inverse_primary.default.hex}}; + --card-color-active: {{colors.inverse_primary.default.hex}}; + --card-color-alt: {{colors.secondary_container.default.hex}}; + --card-color-alt-hover: {{colors.secondary.default.hex}}; + --card-border-color: {{colors.surface_container.default.hex}}; + --card-header-text-color: {{colors.on_surface.default.hex}}; -/* Make timestamps more readable by overriding inline styles */ -[class*="timestamp"], -[class*="timestamp"] time { - color: var(--text-4) !important; -} + /* Slider & Switch */ + --switch-knob-color: {{colors.surface_container.default.hex}}; + --switch-slider-color: {{colors.surface.default.hex}}; -.postTitleText_faa96b { - color: var(--text-2) !important; -} + /* Input */ + --input-text-color: {{colors.on_surface.default.hex}}; -.postTitleText_faa96b .highlight { - color: var(--text-2) !important; -} - -/* Make thread titles more readable by overriding inline styles */ -[class*="headerText"] [class*="postTitleText"], -[class*="headerText"] h3[class*="postTitleText"] { - color: var(--text-2) !important; -} - -.messageContent_c19a55, -.messageContent_faa96b { - color: var(--text-3) !important; -} - -.messageContent_c19a55 .highlight, -.messageContent_faa96b .highlight { - color: var(--text-2) !important; -} - -/* Make message content more readable by overriding inline styles */ -[class*="messageContent"] { - color: var(--text-3) !important; -} - -[class*="messageContent"] .highlight { - color: var(--text-2) !important; -} - -/* Make slowmode/cooldown text more readable by overriding inline styles */ -[class*="cooldownText"] { - color: var(--text-4) !important; -} - -/* Checkbox styling overrides */ -[class*="checkboxIndicator"] { - background-color: transparent !important; - border-color: var(--text-4) !important; -} - -[class*="checkboxOption"]:hover [class*="checkboxIndicator"] { - background-color: color-mix(in srgb, var(--accent-1) 20%, transparent) !important; - border-color: var(--accent-1) !important; -} - -[class*="checkboxOption"][data-selected] [class*="checkboxIndicator"] { - background-color: var(--accent-1) !important; - border-color: var(--accent-1) !important; -} - -[class*="checkboxOption"][data-selected]:hover [class*="checkboxIndicator"] { - background-color: var(--accent-3) !important; - border-color: var(--accent-3) !important; -} - -[data-slate-node="element"], -[data-slate-node="text"], -[data-slate-string="true"] { - color: var(--text-3) !important; -} - -[class*="eyebrow"][class*="badge"][class*="expressive"] { - color: var(--accent-1) !important; - background-color: color-mix(in srgb, var(--accent-1) 15%, transparent) !important; -} - -/* Outer circle (non-selected background) */ -._64e6155a0667273d-outerRadioBase { - fill: var(--bg-1) !important; /* background for non-selected radios */ - stroke: var(--border) !important; /* ring border */ - stroke-width: 1px; - transition: stroke 0.2s ease; -} - -/* Outer circle fill (selected) */ -._64e6155a0667273d-outerRadioFill { - fill: var(--bg-1) !important; /* accent color for selected */ - stroke: var(--border) !important; - opacity: 0; /* hidden by default */ - transition: opacity 0.2s ease; -} - -/* Inner dot (selected) */ -._64e6155a0667273d-innerDotRadio { - fill: var(--accent-1) !important; /* contrast dot */ - opacity: 0; /* hidden by default */ - transition: opacity 0.2s ease; -} - -/* Show outer fill + inner dot when selected (handles initial render & clicks) */ -.parentSelected__6e9f8 ._64e6155a0667273d-outerRadioFill, -.parentSelected__6e9f8 ._64e6155a0667273d-innerDotRadio, -._64e6155a0667273d-outerRadioFill[aria-checked="true"], -._64e6155a0667273d-innerDotRadio[aria-checked="true"], -._64e6155a0667273d-outerRadioFill[data-selected="true"], -._64e6155a0667273d-innerDotRadio[data-selected="true"] { - opacity: 1 !important; -} - -/* Hover effect for base ring */ -._64e6155a0667273d-outerRadioBase:hover { - stroke: var(--accent-1) !important; -} - -/* Checkbox checkmark and background for selected */ -._714a9a7abaf0392a-checkboxOption[data-selected="true"] ._714a9a7abaf0392a-checkboxIndicator { - background-color: var(--bg-1) !important; /* background of selected checkbox */ - border-color: var(--border) !important; /* optional: accent border */ -} - -._714a9a7abaf0392a-checkboxIndicator { - background-color: var(--bg-1) !important; /* background for non-selected checkboxes */ - border-color: var(--border) !important; /* neutral border */ - transition: background-color 0.2s ease, border-color 0.2s ease; -} - -._714a9a7abaf0392a-checkboxOption[data-selected="true"] ._714a9a7abaf0392a-checkStroke, -._714a9a7abaf0392a-checkboxOption[data-selected="true"] ._714a9a7abaf0392a-dot { - color: var(--accent-1) !important; /* checkmark/dot color */ -} - -/* Hover effect for selected checkbox */ -._714a9a7abaf0392a-checkboxOption[data-selected="true"]:hover ._714a9a7abaf0392a-checkboxIndicator { - background-color: var(--bg-1) !important; /* keep background consistent on hover */ -} - -._714a9a7abaf0392a-checkboxOption[data-selected="true"]:hover ._714a9a7abaf0392a-checkStroke, -._714a9a7abaf0392a-checkboxOption[data-selected="true"]:hover ._714a9a7abaf0392a-dot { - color: var(--accent-1) !important; /* keep checkmark accent color on hover */ -} - -/* Fix hover color for channel mentions */ -.channelMention:hover { - color: var(--text-1) !important; -} - -._3b95d7d910416e54-bar._3b95d7d910416e54-mention { - background-color: var(--accent-1) !important; -} -._3b95d7d910416e54-bar._3b95d7d910416e54-mention ._3b95d7d910416e54-text { - color: var(--text-0) !important; + /* Misc */ + --app-watermark-one: "Noctalia"; + --app-watermark-two: "Discord"; } From e553fffcdea068c49376a4f103e9e151491373d2 Mon Sep 17 00:00:00 2001 From: LionHeartP Date: Sat, 24 Jan 2026 18:08:04 +0200 Subject: [PATCH 2/8] discord.css template: various css fixes --- Assets/Templates/discord.css | 68 ++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/Assets/Templates/discord.css b/Assets/Templates/discord.css index 6da989f69..59f1181e4 100644 --- a/Assets/Templates/discord.css +++ b/Assets/Templates/discord.css @@ -252,7 +252,7 @@ body { } /* Outer circle (non-selected background) */ -._64e6155a0667273d-outerRadioBase { +[class*="outerRadioBase"] { fill: var(--bg-1) !important; /* background for non-selected radios */ stroke: var(--border) !important; /* ring border */ stroke-width: 1px; @@ -260,7 +260,7 @@ body { } /* Outer circle fill (selected) */ -._64e6155a0667273d-outerRadioFill { +[class*="outerRadioFill"] { fill: var(--bg-1) !important; /* accent color for selected */ stroke: var(--border) !important; opacity: 0; /* hidden by default */ @@ -268,47 +268,47 @@ body { } /* Inner dot (selected) */ -._64e6155a0667273d-innerDotRadio { +[class*="innerDotRadio"] { fill: var(--accent-1) !important; /* contrast dot */ opacity: 0; /* hidden by default */ transition: opacity 0.2s ease; } -/* Show outer fill + inner dot when selected (handles initial render & clicks) */ -.parentSelected__6e9f8 ._64e6155a0667273d-outerRadioFill, -.parentSelected__6e9f8 ._64e6155a0667273d-innerDotRadio, -._64e6155a0667273d-outerRadioFill[aria-checked="true"], -._64e6155a0667273d-innerDotRadio[aria-checked="true"], -._64e6155a0667273d-outerRadioFill[data-selected="true"], -._64e6155a0667273d-innerDotRadio[data-selected="true"] { +/* Show outer fill + inner dot when selected */ +[class*="radioSelection"][data-selected="true"] [class*="outerRadioFill"], +[class*="radioSelection"][data-selected="true"] [class*="innerDotRadio"], +[class*="radioSelection"][aria-checked="true"] [class*="outerRadioFill"], +[class*="radioSelection"][aria-checked="true"] [class*="innerDotRadio"], +.parentSelected__6e9f8 [class*="outerRadioFill"], +.parentSelected__6e9f8 [class*="innerDotRadio"] { opacity: 1 !important; } /* Hover effect for base ring */ -._64e6155a0667273d-outerRadioBase:hover { +[class*="outerRadioBase"]:hover { stroke: var(--accent-1) !important; } /* Checkbox checkmark and background for selected */ -._714a9a7abaf0392a-checkboxOption[data-selected="true"] ._714a9a7abaf0392a-checkboxIndicator { - background-color: var(--bg-1) !important; /* background of selected checkbox */ - border-color: var(--border) !important; /* optional: accent border */ +[class*="checkboxOption"][data-selected="true"] [class*="checkboxIndicator"] { + background-color: transparent !important; /* Removes the solid fill when selected */ + border-color: var(--accent-1) !important; /* Changes border to accent color when selected */ } -._714a9a7abaf0392a-checkboxIndicator { - background-color: var(--bg-1) !important; /* background for non-selected checkboxes */ - border-color: var(--border) !important; /* neutral border */ - transition: background-color 0.2s ease, border-color 0.2s ease; +[class*="checkboxIndicator"] { + background-color: transparent !important; + border-color: var(--border) !important; + transition: border-color 0.2s ease; } -._714a9a7abaf0392a-checkboxOption[data-selected="true"] ._714a9a7abaf0392a-checkStroke, -._714a9a7abaf0392a-checkboxOption[data-selected="true"] ._714a9a7abaf0392a-dot { +[class*="checkboxOption"][data-selected="true"] [class*="checkStroke"], +[class*="checkboxOption"][data-selected="true"] [class*="dot"] { color: var(--accent-1) !important; /* checkmark/dot color */ } /* Hover effect for selected checkbox */ -._714a9a7abaf0392a-checkboxOption[data-selected="true"]:hover ._714a9a7abaf0392a-checkboxIndicator { - background-color: var(--bg-1) !important; /* keep background consistent on hover */ +[class*="checkboxOption"]:hover [class*="checkboxIndicator"] { + border-color: var(--accent-1) /* keep background consistent on hover */ } ._714a9a7abaf0392a-checkboxOption[data-selected="true"]:hover ._714a9a7abaf0392a-checkStroke, @@ -321,9 +321,25 @@ body { color: var(--text-1) !important; } -._3b95d7d910416e54-bar._3b95d7d910416e54-mention { - background-color: var(--accent-1) !important; +[class*="unreadMentionsBar"] { + background-color: var(--accent-1) !important; + border: 1px solid var(--border); } -._3b95d7d910416e54-bar._3b95d7d910416e54-mention ._3b95d7d910416e54-text { - color: var(--text-0) !important; + +[class*="unreadMentionsBar"][class*="mention"] { + background-color: var(--accent-1) !important; +} + +[class*="unreadMentionsBar"][class*="unread"] { + background-color: var(--bg-1) !important; + border-color: var(--accent-1) !important; +} + +[class*="unreadMentionsBar"] [class*="text"] { + color: var(--text-0) !important; + font-weight: 700; +} + +[class*="unreadMentionsIndicator"] [class*="bar"] { + background-color: var(--accent-1) !important; } From 21774a5bba039f1d1e6e68d2eda8d283ad75ebac Mon Sep 17 00:00:00 2001 From: Lemmy Date: Sat, 24 Jan 2026 11:24:26 -0500 Subject: [PATCH 3/8] settings-colorscheme: show generated colors --- .../Tabs/ColorScheme/ColorsSubTab.qml | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/Modules/Panels/Settings/Tabs/ColorScheme/ColorsSubTab.qml b/Modules/Panels/Settings/Tabs/ColorScheme/ColorsSubTab.qml index 5428906ba..0f434060a 100644 --- a/Modules/Panels/Settings/Tabs/ColorScheme/ColorsSubTab.qml +++ b/Modules/Panels/Settings/Tabs/ColorScheme/ColorsSubTab.qml @@ -257,16 +257,42 @@ ColumnLayout { NBox { visible: Settings.data.colorSchemes.useWallpaperColors Layout.fillWidth: true - implicitHeight: description.implicitHeight + Style.marginL * 2 + implicitHeight: descriptionColumn.implicitHeight + Style.marginL * 2 color: Color.mSurface - NText { - id: description - anchors.fill: parent + + Column { + id: descriptionColumn + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top anchors.margins: Style.marginL - wrapMode: Text.WordWrap - text: I18n.tr("panels.color-scheme.method-description." + Settings.data.colorSchemes.generationMethod) - pointSize: Style.fontSizeS - color: Color.mOnSurfaceVariant + spacing: Style.marginM + + NText { + width: parent.width + wrapMode: Text.WordWrap + text: I18n.tr("panels.color-scheme.method-description." + Settings.data.colorSchemes.generationMethod) + pointSize: Style.fontSizeS + color: Color.mOnSurfaceVariant + } + + Row { + id: colorPreviewRow + spacing: Style.marginS + + property int diameter: 16 * Style.uiScaleRatio + + Repeater { + model: [Color.mPrimary, Color.mSecondary, Color.mTertiary, Color.mError] + + Rectangle { + width: colorPreviewRow.diameter + height: colorPreviewRow.diameter + radius: width * 0.5 + color: modelData + } + } + } } } From c90f2d9c6fca8bbbdd3b6b91db4d5b222864b889 Mon Sep 17 00:00:00 2001 From: Lemmy Date: Sat, 24 Jan 2026 13:48:02 -0500 Subject: [PATCH 4/8] templates: splitting discord in two --- Assets/Templates/discord-material.css | 84 ++++++ Assets/Templates/discord.css | 395 +++++++++++++++++++++----- 2 files changed, 404 insertions(+), 75 deletions(-) create mode 100644 Assets/Templates/discord-material.css diff --git a/Assets/Templates/discord-material.css b/Assets/Templates/discord-material.css new file mode 100644 index 000000000..7d6bcf47c --- /dev/null +++ b/Assets/Templates/discord-material.css @@ -0,0 +1,84 @@ +/** + * @name Material Noctalia + * @version 3.0.6 + * @description A fork of Material Discord for Noctalia Shell + * @author CapnKitten + * + * @website http://github.com/CapnKitten + * @source https://github.com/CapnKitten/BetterDiscord/blob/master/Themes/Material-Discord/css/source.css + * @donate https://paypal.me/capnkitten + * @invite jzJkA6Z + */ + +@import url("https://capnkitten.github.io/BetterDiscord/Themes/Material-Discord/css/source.css"); + +/* Material You addon */ +@import url("https://capnkitten.github.io/BetterDiscord/Themes/Material-Discord/css/addons/material-you/source.css"); + +/* MATERIAL YOU DARK THEME SETTINGS */ +.theme-dark { + --saturation-modifier: 0.31; + --lightness-modifier: 0.225; + --text-lightness-modifier: 1.0; +} + +/* MATERIAL YOU LIGHT THEME SETTINGS */ +.theme-light { + --saturation-modifier: 0.74; + --lightness-modifier: 2.125; + --text-lightness-modifier: 1.0; +} + +:root, .theme-dark, .theme-light { + /* See options at https://github.com/CapnKitten/Material-Discord */ + /* Accent */ + --accent-hue: {{colors.primary.default.hue}}; + --accent-saturation: {{colors.primary.default.saturation}}%; + --accent-lightness: {{colors.primary.default.lightness}}%; + --accent-text-color: {{colors.on_primary.default.hex}}; + + /* App */ + --app-bg: {{colors.surface.default.hex}}; + --main-color: {{colors.surface.default.hex}}; + --main-alt: {{colors.surface.default.hex}}; + --server-color: {{colors.surface.default.hex}}; + --status-picker-color: {{colors.surface_container.default.hex}}; + --sidebar-panel-color: {{colors.surface_container.default.hex}}; + --chat-color: {{colors.surface.default.hex}}; + --tooltip-color: {{colors.surface.default.hex}}; + --tooltip-text-color: {{colors.on_surface.default.hex}}; + + /* Message */ + --message-color: {{colors.surface_container.default.hex}}; + --message-color-hover: hsl( + var(--accent-hue), + calc(var(--accent-saturation) * var(--saturation-modifier) * var(--saturation-factor)), + calc(var(--accent-lightness) * var(--lightness-modifier) * var(--ui-darkness-modifier) * 4) + ) !important; + --message-color-alt: {{colors.on_secondary.default.hex}}; + --attachment-color: {{colors.on_primary.default.hex}}; + --main-textarea-color: {{colors.primary.default.hex}}; + --main-textarea-button-color: {{colors.on_primary.default.hex}}; + --main-textarea-color-alt: {{colors.secondary.default.hex}}; + --main-textarea-border: {{colors.surface_container.default.hex}}; + + /* Card */ + --card-color-filled: {{colors.surface_container.default.hex}}; + --card-color-hover: {{colors.inverse_primary.default.hex}}; + --card-color-active: {{colors.inverse_primary.default.hex}}; + --card-color-alt: {{colors.secondary_container.default.hex}}; + --card-color-alt-hover: {{colors.secondary.default.hex}}; + --card-border-color: {{colors.surface_container.default.hex}}; + --card-header-text-color: {{colors.on_surface.default.hex}}; + + /* Slider & Switch */ + --switch-knob-color: {{colors.surface_container.default.hex}}; + --switch-slider-color: {{colors.surface.default.hex}}; + + /* Input */ + --input-text-color: {{colors.on_surface.default.hex}}; + + /* Misc */ + --app-watermark-one: "Noctalia"; + --app-watermark-two: "Discord"; +} diff --git a/Assets/Templates/discord.css b/Assets/Templates/discord.css index 7d6bcf47c..6da989f69 100644 --- a/Assets/Templates/discord.css +++ b/Assets/Templates/discord.css @@ -1,84 +1,329 @@ /** - * @name Material Noctalia - * @version 3.0.6 - * @description A fork of Material Discord for Noctalia Shell - * @author CapnKitten - * - * @website http://github.com/CapnKitten - * @source https://github.com/CapnKitten/BetterDiscord/blob/master/Themes/Material-Discord/css/source.css - * @donate https://paypal.me/capnkitten - * @invite jzJkA6Z - */ +* @name noctalia-midnight +* @description a fork of midnight for noctalia-shell +* @author refact0r +* @version 2.1.1 +* @invite nz87hXyvcy +* @website https://github.com/refact0r/midnight-discord +* @source https://github.com/refact0r/midnight-discord/blob/master/themes/midnight.theme.css +* @authorId 508863359777505290 +* @authorLink https://www.refact0r.dev +*/ -@import url("https://capnkitten.github.io/BetterDiscord/Themes/Material-Discord/css/source.css"); +/* import theme modules */ +@import url('https://refact0r.github.io/midnight-discord/build/midnight.css'); -/* Material You addon */ -@import url("https://capnkitten.github.io/BetterDiscord/Themes/Material-Discord/css/addons/material-you/source.css"); +body { + /* font options */ + --font: ''; /* change to '' for default discord font */ + --code-font: ''; /* change to '' for default discord font */ + font-weight: 400; /* normal text font weight. DOES NOT AFFECT BOLD TEXT */ + + /* sizes */ + --gap: 12px; /* spacing between panels */ + --divider-thickness: 4px; /* thickness of unread messages divider and highlighted message borders */ + --border-thickness: 1px; /* thickness of borders around main panels. DOES NOT AFFECT OTHER BORDERS */ + + /* 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 */ + --border-hover-transition: 0.2s ease; /* transition for borders when hovered */ + + /* 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: on; /* off: default window controls, on: custom window controls */ + --window-control-size: 14px; /* size of custom window controls */ + + /* dms button options */ + --custom-dms-icon: custom; /* off: use default discord icon, hide: remove icon entirely, custom: use custom icon */ + --dms-icon-svg-url: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMjU2IgogICBoZWlnaHQ9IjI1NiIKICAgdmlld0JveD0iMCAwIDY3LjczMzMzNCA2Ny43MzMzMzQiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczEiIC8+CiAgPGcKICAgICBpZD0iZzEiCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMS4xMDEwODY5LDAsMCwxLjEwMTA4NjksLTMuNDIzODM0NywtMy40MjM0ODkzKSI+CiAgICA8ZwogICAgICAgaWQ9Imc1NSIKICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0LjIwNTU5MDUsMCwwLDQuMjA1NTkwNSwtMTQuNzg4ODk4LC0xODAuNDMzNjIpIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGg1NSIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6OS4xO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtwYWludC1vcmRlcjpmaWxsIG1hcmtlcnMgc3Ryb2tlIgogICAgICAgICBkPSJtIDExLjY0NjQ4NCw0My42NDI1NzggYSA3LjMxNDEzNTYsNy4zMTQxMzU2IDAgMCAwIC03LjMxMjQ5OTYsNy4zMTI1IDcuMzE0MTM1Niw3LjMxNDEzNTYgMCAwIDAgNy4zMTI0OTk2LDcuMzE0NDUzIDcuMzE0MTM1Niw3LjMxNDEzNTYgMCAwIDAgNy4xNTgyMDQsLTUuODk4NDM3IDYuMjIwMzMwMiw2LjIyMDMzMDIgMCAwIDEgLTMuNDE2MDE2LDMuNDY0ODQ0IGMgMC4wMDE1LDAuMjc3NDA2IDAuMDAzOSwwLjUzMjU1IDAuMDAzOSwwLjcyNjU2MiAtMC43Mzk0NDUsMCAtMS4zNzU4MzUsLTAuMTAxODg2IC0xLjkyMTg3NSwtMC4yNzE0ODQgYSA2LjIyMDMzMDIsNi4yMjAzMzAyIDAgMCAxIC0wLjQ0MTQwNiwwLjAzNTE2IDYuMjIwMzMwMiw2LjIyMDMzMDIgMCAwIDEgLTYuMjIwNzAzMiwtNi4yMjA3MDMgNi4yMjAzMzAyLDYuMjIwMzMwMiAwIDAgMSA2LjIyMDcwMzIsLTYuMjIwNzAzIDYuMjIwMzMwMiw2LjIyMDMzMDIgMCAwIDEgMC41NzYxNzIsMC4wMjczNCA3LjMxNDEzNTYsNy4zMTQxMzU2IDAgMCAwIC0xLjk1ODk4NSwtMC4yNjk1MzEgeiIgLz4KICAgIDwvZz4KICAgIDxwYXRoCiAgICAgICBpZD0icGF0aDU2IgogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MS4zNDYwODtzdHJva2UtbWl0ZXJsaW1pdDo5LjE7cGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZSIKICAgICAgIGQ9Im0gNDIuNjY0NDQsMzEuMjkxNDc0IGMgLTEuODAyODgyLDIuMDIzMTA1IC00Ljk1MDEzOSwyLjQ5MjY2MSAtOC41MjU0LDIuNTAyOCAtMi43MTgxNiwtMC4wMDc3IC01LjQ1MDQ3NiwtMC4xMjgyMjcgLTcuMjY5NTYsLTEuMzg5NTUxIC0xLjgxNjU0MiwwLjMyNDE4MiAtMi41NzkxNTcsMi4zNDQwMzMgLTIuNDE1ODY2LDQuNzAyNzc3IDEuMTY0NjQ3LDE2LjgyMjk2NyAxMS44MTY3MiwxNS43MzQ2NDUgMTEuOTEyMTk4LDE1LjcwNzE0NSAtNy43OTMzNjYsLTMuODAyNDQ3IC02LjUxNjQ5OCwtMTAuMDAwNDggLTYuNzcyNjIyLC0xMS45NzUyOTMgMC4zMjA5MjgsMy4zNDIzMyAzLjg5NTkyNiwxMi44NTY3NjQgMTcuMjM1NDk0LDEyLjg1Njc2NCAwLC00LjAwOTY1NSAwLjAxOTkyLC0xNC4zMTEwMzUgLTEuMjc5MDgsLTE3LjQ4NzAyNCAtMC40MDkxMjQsLTEuMjM3MzEyIC0xLjUyNTI2LC00LjU0Njk2MyAtMi44ODUxNjQsLTQuOTE3NjE4IHoiIC8+CiAgICA8cGF0aAogICAgICAgaWQ9InBhdGg1NyIKICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjMuNzY1NjU7c3Ryb2tlLW1pdGVybGltaXQ6OS4xO3BhaW50LW9yZGVyOmZpbGwgbWFya2VycyBzdHJva2UiCiAgICAgICBkPSJtIDIwLjk5MjAxMywxNi4wODcwMDQgYyAwLjYwODk0NCwxLjg2NTU0NSAxLjgzNTMzNCwzLjcwNDMxNCAzLjQ4MDA4Niw0LjQwMTc0NSAtMC40NTg3ODEsMS4zODI4MDQgLTAuNDYwODMxLDMuMDI0OTQ5IC0wLjQ2MDgzMSw0Ljc4MzEyNiAwLDQuOTI3ODk1IDQuNTMzNjk4LDguOTE5NDEzIDEwLjEzMDM1OSw4LjkzODU1OSA1LjU5NjY2NCwtMC4wMTkxMiAxMC4xMzAzNjcsLTQuMDEwNjY3IDEwLjEzMDM2NywtOC45Mzg1NTkgMCwtMS43NTgxNzcgLTAuMDAyMSwtMy40MDAzMjIgLTAuNDYwODMzLC00Ljc4MzEyNiAxLjY0NDc1MywtMC42OTc0MzEgMi44NzExNDIsLTIuNTM2MiAzLjQ4MDA4NCwtNC40MDE3NDUgLTEuOTg3Nzc2LC0wLjAzMDUgLTUuMTUwOTA4LDAuNzAwNzU3IC03Ljg1MDA0NywwLjc4NjU5NSAtMS4zNTE1MzksLTAuMzUxODQ1IC0zLjA4NjEzNywtMC41NDU4NjggLTUuMjk5NTcxLC0wLjU0ODIzMyAtMi4yMTM0MzEsMC4wMDI0IC0zLjk0ODAyNywwLjE5NjM2NyAtNS4yOTk1NjgsMC41NDgyMzMgLTIuNjk5MTM1LC0wLjA4NTg0IC01Ljg2MjI2NiwtMC44MTcxODcgLTcuODUwMDQ2LC0wLjc4NjU5NSB6IG0gNi43Nzc0MTksNC42NDgwNTMgYyAwLjU1NTQ3LC0wLjAxMzgzIDEuMjk5Nzc5LDAuMDYyMDQgMi4zMDQxNjEsMC4yNDYzMTkgMC42NzIxOTgsMC4xMjMzMDIgMS41MjM1MzYsMC40NTI0MDIgMi4wMzQwMTksMC43NTQ4MTMgMC45NTA4MDcsMC41NjMyNjQgMS4wNzM1OTUsMS4yMDc2OTcgMi4wMzQwMTUsMS4yMDc2OTcgMC45NjA0MiwwIDEuMDgzMjA3LC0wLjY0NDQzMyAyLjAzNDAxOCwtMS4yMDc2OTcgMC41MTA0ODMsLTAuMzAyNDE4IDEuMzYxODIyLC0wLjYzMTUxMSAyLjAzNDAyMSwtMC43NTQ4MTMgNC41OTE0NTksLTAuODQyMzI4IDMuODIxNzMyLDAuNTIzOTYyIDMuODIxNzMyLDIuODM2NTA1IDAsMi4zODcxMzIgLTEuOTM1MTU1LDQuMzIyMjkgLTQuMzIyMjkxLDQuMzIyMjkgLTAuNzYyOTUsLTAuMDAzNyAtMS41MTEzMzIsLTAuMjA5MzQgLTIuMTY5MDkxLC0wLjU5NTkwNSAtMC4wMTU0NiwwLjAzMzc1IC0wLjAyODg3LDAuMDY0ODQgLTAuMDQ3NjgsMC4wOTUzNSBsIC0wLjk2OTMzOCwxLjU3MzE4OSBjIC0wLjEwNTIzOSwwLjE3MTIyMiAtMC4yNDM3OTcsMC4yNTc0NjcgLTAuMzgxMzc4LDAuMjU0MjUxIC0wLjEzNzU4LDAuMDAzMSAtMC4yNzYxMzksLTAuMDgzMDMgLTAuMzgxMzc4LC0wLjI1NDI1MSBsIC0wLjk2OTMzOCwtMS41NzMxODkgYyAtMC4wMTg3MSwtMC4wMzA1IC0wLjAzMjEyLC0wLjA2MTU5IC0wLjA0NzY4LC0wLjA5NTM1IC0wLjY1Nzc2MywwLjM4NjU4NSAtMS40MDYxNDIsMC41OTIxODggLTIuMTY5MDkxLDAuNTk1OTA1IC0yLjM4NzEzNywwIC00LjMyMjI5LC0xLjkzNTE1OCAtNC4zMjIyOSwtNC4zMjIyOSAwLC0xLjgwNjY3MyAtMC40NjYyNzEsLTMuMDMzMTczIDEuNTE3NTY5LC0zLjA4MjgxNCB6IiAvPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoNTgiCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjIyMDUyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjkuMTtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtwYWludC1vcmRlcjpmaWxsIG1hcmtlcnMgc3Ryb2tlIgogICAgICAgZD0iTSAzMi4zMDQyLDI1LjMwMDU5NiBBIDEuOTkxNDQzOCwxLjk5MTQ0MzggMCAwIDEgMzAuNTc5NTU5LDI2LjI5NjMyIDEuOTkxNDQzOCwxLjk5MTQ0MzggMCAwIDEgMjguODU0OTE4LDI1LjMwMDU5NiIgLz4KICAgIDxwYXRoCiAgICAgICBpZD0icGF0aDU5IgogICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4yMjA1MjtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo5LjE7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7cGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZSIKICAgICAgIGQ9Ik0gMzkuNDI4MzM0LDI1LjMwMDU5NiBBIDEuOTkxNDQzOCwxLjk5MTQ0MzggMCAwIDEgMzcuNzAzNjk2LDI2LjI5NjMyIDEuOTkxNDQzOCwxLjk5MTQ0MzggMCAwIDEgMzUuOTc5MDUzLDI1LjMwMDU5NiIgLz4KICA8L2c+Cjwvc3ZnPg=='); /* 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 */ + + /* chatbar options */ + --custom-chatbar: separated; /* off: default chatbar, separated: chatbar separated from chat */ + --chatbar-height: 56px; /* height of the chatbar (56px by default, 47px to align with user panel, 56px recommended for separated) */ + + /* other options */ + --small-user-panel: off; /* off: default user panel, on: smaller user panel like in old discord */ -/* MATERIAL YOU DARK THEME SETTINGS */ -.theme-dark { - --saturation-modifier: 0.31; - --lightness-modifier: 0.225; - --text-lightness-modifier: 1.0; } -/* MATERIAL YOU LIGHT THEME SETTINGS */ -.theme-light { - --saturation-modifier: 0.74; - --lightness-modifier: 2.125; - --text-lightness-modifier: 1.0; +/* color options */ +:root { + --colors: on; /* off: discord default colors, on: midnight custom colors */ + + /* text colors */ + --text-0: {{colors.background.default.hex}}; /* text on colored elements */ + --text-1: {{colors.on_background.default.hex}}; /* other normally white text */ + --text-2: {{colors.on_surface.default.hex}}; /* headings and important text */ + --text-3: {{colors.on_surface_variant.default.hex}}; /* normal text */ + --text-4: {{colors.outline.default.hex}}; /* icon buttons and channels */ + --text-5: {{colors.outline_variant.default.hex}}; /* muted channels/chats and timestamps */ + + /* background and dark colors */ + --bg-1: {{colors.surface_container_lowest.default.hex}}; /* dark buttons when clicked */ + --bg-2: {{colors.surface_container_low.default.hex}}; /* dark buttons */ + --bg-3: {{colors.surface_container.default.hex}}; /* spacing, secondary elements */ + --bg-4: {{colors.surface.default.hex}}; /* main background color */ + --hover: {{colors.on_surface.default.hex}}15; /* channels and buttons when hovered */ + --active: {{colors.surface_container_highest.default.hex}}; /* channels and buttons when clicked or selected */ + --active-2: {{colors.surface.default.hex}}; /* extra state for transparent buttons */ + --message-hover: {{colors.surface_variant.default.hex}}40; /* messages when hovered */ + + /* accent colors */ + --accent-1: {{colors.primary.default.hex}}; /* links and other accent text */ + --accent-2: {{colors.primary_container.default.hex}}; /* small accent elements */ + --accent-3: {{colors.secondary.default.hex}}; /* accent buttons */ + --accent-4: {{colors.on_secondary_container.default.hex}}; /* accent buttons when hovered */ + --accent-5: {{colors.secondary.default.hex}}; /* accent buttons when clicked */ + --accent-new: {{colors.error.default.hex}}; /* stuff that's normally red like mute/deafen buttons */ + + --mention: linear-gradient(to right, color-mix(in hsl, {{colors.primary_container.default.hex}}, transparent 90%) 40%, transparent); /* background of messages that mention you */ + --mention-hover: linear-gradient(to right, color-mix(in hsl, {{colors.primary_container.default.hex}}, transparent 95%) 40%, transparent); /* background of messages that mention you when hovered */ + + --reply: linear-gradient(to right, color-mix(in hsl, {{colors.tertiary_container.default.hex}}, transparent 90%) 40%, transparent); /* background of messages that reply to you */ + --reply-hover: linear-gradient(to right, color-mix(in hsl, {{colors.tertiary_container.default.hex}}, transparent 95%) 40%, transparent); /* background of messages that reply to you when hovered */ + + /* status indicator colors */ + --online: var(--green-2); /* change to #43a25a for default */ + --dnd: var(--red-2); /* change to #d83a42 for default */ + --idle: var(--yellow-2); /* change to #ca9654 for default */ + --streaming: var(--purple-2); /* change to #593695 for default */ + --offline: var(--text-4); /* change to #83838b for default offline color */ + + /* border colors */ + --border-light: var(--hover); /* general light border color */ + --border: var(--active); /* general normal border color */ + --border-hover: var(--active); /* border color of panels when hovered */ + --button-border: hsl(230, 0%, 100%, 0.1); /* neutral border color of buttons */ + + /* base colors */ + --red-1: hsl(351deg, 74%, 78%); + --red-2: hsl(351deg, 74%, 73%); + --red-3: hsl(351deg, 74%, 73%); + --red-4: hsl(351deg, 74%, 68%); + --red-5: hsl(351deg, 74%, 63%); + + --green-1: hsl(105deg, 48%, 77%); + --green-2: hsl(105deg, 48%, 72%); + --green-3: hsl(105deg, 48%, 72%); + --green-4: hsl(105deg, 48%, 67%); + --green-5: hsl(105deg, 48%, 62%); + + --blue-1: hsl(199deg, 66%, 74%); + --blue-2: hsl(199deg, 66%, 69%); + --blue-3: hsl(199deg, 66%, 69%); + --blue-4: hsl(199deg, 66%, 64%); + --blue-5: hsl(199deg, 66%, 59%); + + --yellow-1: hsl(40deg, 70%, 83%); + --yellow-2: hsl(40deg, 70%, 78%); + --yellow-3: hsl(40deg, 70%, 78%); + --yellow-4: hsl(40deg, 70%, 73%); + --yellow-5: hsl(40deg, 70%, 68%); + + --purple-1: hsl(267deg, 83%, 85%); + --purple-2: hsl(267deg, 83%, 80%); + --purple-3: hsl(267deg, 83%, 80%); + --purple-4: hsl(267deg, 83%, 75%); + --purple-5: hsl(267deg, 83%, 70%); } -:root, .theme-dark, .theme-light { - /* See options at https://github.com/CapnKitten/Material-Discord */ - /* Accent */ - --accent-hue: {{colors.primary.default.hue}}; - --accent-saturation: {{colors.primary.default.saturation}}%; - --accent-lightness: {{colors.primary.default.lightness}}%; - --accent-text-color: {{colors.on_primary.default.hex}}; - - /* App */ - --app-bg: {{colors.surface.default.hex}}; - --main-color: {{colors.surface.default.hex}}; - --main-alt: {{colors.surface.default.hex}}; - --server-color: {{colors.surface.default.hex}}; - --status-picker-color: {{colors.surface_container.default.hex}}; - --sidebar-panel-color: {{colors.surface_container.default.hex}}; - --chat-color: {{colors.surface.default.hex}}; - --tooltip-color: {{colors.surface.default.hex}}; - --tooltip-text-color: {{colors.on_surface.default.hex}}; - - /* Message */ - --message-color: {{colors.surface_container.default.hex}}; - --message-color-hover: hsl( - var(--accent-hue), - calc(var(--accent-saturation) * var(--saturation-modifier) * var(--saturation-factor)), - calc(var(--accent-lightness) * var(--lightness-modifier) * var(--ui-darkness-modifier) * 4) - ) !important; - --message-color-alt: {{colors.on_secondary.default.hex}}; - --attachment-color: {{colors.on_primary.default.hex}}; - --main-textarea-color: {{colors.primary.default.hex}}; - --main-textarea-button-color: {{colors.on_primary.default.hex}}; - --main-textarea-color-alt: {{colors.secondary.default.hex}}; - --main-textarea-border: {{colors.surface_container.default.hex}}; - - /* Card */ - --card-color-filled: {{colors.surface_container.default.hex}}; - --card-color-hover: {{colors.inverse_primary.default.hex}}; - --card-color-active: {{colors.inverse_primary.default.hex}}; - --card-color-alt: {{colors.secondary_container.default.hex}}; - --card-color-alt-hover: {{colors.secondary.default.hex}}; - --card-border-color: {{colors.surface_container.default.hex}}; - --card-header-text-color: {{colors.on_surface.default.hex}}; - - /* Slider & Switch */ - --switch-knob-color: {{colors.surface_container.default.hex}}; - --switch-slider-color: {{colors.surface.default.hex}}; - - /* Input */ - --input-text-color: {{colors.on_surface.default.hex}}; - - /* Misc */ - --app-watermark-one: "Noctalia"; - --app-watermark-two: "Discord"; +.divider__908e2:not(.isUnread__908e2) { + border-color: var(--bg-2); +} + +.bannerButton_de8008, .bannerColor_fb7f94 { + color: var(--text-1); +} + +/* Prevent scaling animation on DMS icon */ +.wrapper__6e9f8[data-list-item-id='guildsnav___home']:hover > .childWrapper__6e9f8::before, +.wrapper__6e9f8[data-list-item-id='guildsnav___home'].selected__6e9f8 > .childWrapper__6e9f8::before { + transform: rotate(-360deg) scale(1) !important; +} + +/* Make timestamps use lighter text color */ +.timestamp_c19a55, +.timestampInline_c19a55, +.timestamp_c19a55 time, +.timestampInline_c19a55 time { + color: var(--text-4) !important; +} + +/* Make timestamps more readable by overriding inline styles */ +[class*="timestamp"], +[class*="timestamp"] time { + color: var(--text-4) !important; +} + +.postTitleText_faa96b { + color: var(--text-2) !important; +} + +.postTitleText_faa96b .highlight { + color: var(--text-2) !important; +} + +/* Make thread titles more readable by overriding inline styles */ +[class*="headerText"] [class*="postTitleText"], +[class*="headerText"] h3[class*="postTitleText"] { + color: var(--text-2) !important; +} + +.messageContent_c19a55, +.messageContent_faa96b { + color: var(--text-3) !important; +} + +.messageContent_c19a55 .highlight, +.messageContent_faa96b .highlight { + color: var(--text-2) !important; +} + +/* Make message content more readable by overriding inline styles */ +[class*="messageContent"] { + color: var(--text-3) !important; +} + +[class*="messageContent"] .highlight { + color: var(--text-2) !important; +} + +/* Make slowmode/cooldown text more readable by overriding inline styles */ +[class*="cooldownText"] { + color: var(--text-4) !important; +} + +/* Checkbox styling overrides */ +[class*="checkboxIndicator"] { + background-color: transparent !important; + border-color: var(--text-4) !important; +} + +[class*="checkboxOption"]:hover [class*="checkboxIndicator"] { + background-color: color-mix(in srgb, var(--accent-1) 20%, transparent) !important; + border-color: var(--accent-1) !important; +} + +[class*="checkboxOption"][data-selected] [class*="checkboxIndicator"] { + background-color: var(--accent-1) !important; + border-color: var(--accent-1) !important; +} + +[class*="checkboxOption"][data-selected]:hover [class*="checkboxIndicator"] { + background-color: var(--accent-3) !important; + border-color: var(--accent-3) !important; +} + +[data-slate-node="element"], +[data-slate-node="text"], +[data-slate-string="true"] { + color: var(--text-3) !important; +} + +[class*="eyebrow"][class*="badge"][class*="expressive"] { + color: var(--accent-1) !important; + background-color: color-mix(in srgb, var(--accent-1) 15%, transparent) !important; +} + +/* Outer circle (non-selected background) */ +._64e6155a0667273d-outerRadioBase { + fill: var(--bg-1) !important; /* background for non-selected radios */ + stroke: var(--border) !important; /* ring border */ + stroke-width: 1px; + transition: stroke 0.2s ease; +} + +/* Outer circle fill (selected) */ +._64e6155a0667273d-outerRadioFill { + fill: var(--bg-1) !important; /* accent color for selected */ + stroke: var(--border) !important; + opacity: 0; /* hidden by default */ + transition: opacity 0.2s ease; +} + +/* Inner dot (selected) */ +._64e6155a0667273d-innerDotRadio { + fill: var(--accent-1) !important; /* contrast dot */ + opacity: 0; /* hidden by default */ + transition: opacity 0.2s ease; +} + +/* Show outer fill + inner dot when selected (handles initial render & clicks) */ +.parentSelected__6e9f8 ._64e6155a0667273d-outerRadioFill, +.parentSelected__6e9f8 ._64e6155a0667273d-innerDotRadio, +._64e6155a0667273d-outerRadioFill[aria-checked="true"], +._64e6155a0667273d-innerDotRadio[aria-checked="true"], +._64e6155a0667273d-outerRadioFill[data-selected="true"], +._64e6155a0667273d-innerDotRadio[data-selected="true"] { + opacity: 1 !important; +} + +/* Hover effect for base ring */ +._64e6155a0667273d-outerRadioBase:hover { + stroke: var(--accent-1) !important; +} + +/* Checkbox checkmark and background for selected */ +._714a9a7abaf0392a-checkboxOption[data-selected="true"] ._714a9a7abaf0392a-checkboxIndicator { + background-color: var(--bg-1) !important; /* background of selected checkbox */ + border-color: var(--border) !important; /* optional: accent border */ +} + +._714a9a7abaf0392a-checkboxIndicator { + background-color: var(--bg-1) !important; /* background for non-selected checkboxes */ + border-color: var(--border) !important; /* neutral border */ + transition: background-color 0.2s ease, border-color 0.2s ease; +} + +._714a9a7abaf0392a-checkboxOption[data-selected="true"] ._714a9a7abaf0392a-checkStroke, +._714a9a7abaf0392a-checkboxOption[data-selected="true"] ._714a9a7abaf0392a-dot { + color: var(--accent-1) !important; /* checkmark/dot color */ +} + +/* Hover effect for selected checkbox */ +._714a9a7abaf0392a-checkboxOption[data-selected="true"]:hover ._714a9a7abaf0392a-checkboxIndicator { + background-color: var(--bg-1) !important; /* keep background consistent on hover */ +} + +._714a9a7abaf0392a-checkboxOption[data-selected="true"]:hover ._714a9a7abaf0392a-checkStroke, +._714a9a7abaf0392a-checkboxOption[data-selected="true"]:hover ._714a9a7abaf0392a-dot { + color: var(--accent-1) !important; /* keep checkmark accent color on hover */ +} + +/* Fix hover color for channel mentions */ +.channelMention:hover { + color: var(--text-1) !important; +} + +._3b95d7d910416e54-bar._3b95d7d910416e54-mention { + background-color: var(--accent-1) !important; +} +._3b95d7d910416e54-bar._3b95d7d910416e54-mention ._3b95d7d910416e54-text { + color: var(--text-0) !important; } From d1c5d132258a7f5c7661b9bf5c355a8b567b098e Mon Sep 17 00:00:00 2001 From: Lemmy Date: Sat, 24 Jan 2026 14:02:18 -0500 Subject: [PATCH 5/8] discord: dual templating - Midnight or Material Design, up to the user to select his favorite in the discord client. --- Assets/Templates/discord-material.css | 4 +-- .../{discord.css => discord-midnight.css} | 4 +-- Services/Theming/TemplateProcessor.qml | 26 ++++++++++++------- Services/Theming/TemplateRegistry.qml | 2 +- 4 files changed, 21 insertions(+), 15 deletions(-) rename Assets/Templates/{discord.css => discord-midnight.css} (99%) diff --git a/Assets/Templates/discord-material.css b/Assets/Templates/discord-material.css index 7d6bcf47c..5cc08848f 100644 --- a/Assets/Templates/discord-material.css +++ b/Assets/Templates/discord-material.css @@ -1,7 +1,7 @@ /** - * @name Material Noctalia + * @name Noctalia Material * @version 3.0.6 - * @description A fork of Material Discord for Noctalia Shell + * @description A fork of 'Material Discord' for Noctalia Shell * @author CapnKitten * * @website http://github.com/CapnKitten diff --git a/Assets/Templates/discord.css b/Assets/Templates/discord-midnight.css similarity index 99% rename from Assets/Templates/discord.css rename to Assets/Templates/discord-midnight.css index 59f1181e4..bbe1dcca5 100644 --- a/Assets/Templates/discord.css +++ b/Assets/Templates/discord-midnight.css @@ -1,6 +1,6 @@ /** -* @name noctalia-midnight -* @description a fork of midnight for noctalia-shell +* @name Noctalia Midnight +* @description A fork of 'Midnight' for Noctalia Shell * @author refact0r * @version 2.1.1 * @invite nz87hXyvcy diff --git a/Services/Theming/TemplateProcessor.qml b/Services/Theming/TemplateProcessor.qml index b469e1581..76b50f275 100644 --- a/Services/Theming/TemplateProcessor.qml +++ b/Services/Theming/TemplateProcessor.qml @@ -222,17 +222,23 @@ Singleton { const homeDir = Quickshell.env("HOME"); TemplateRegistry.applications.forEach(app => { if (app.id === "discord") { - // Handle Discord clients specially + // Handle Discord clients specially - multiple CSS themes if (isTemplateEnabled("discord")) { - app.clients.forEach(client => { - // Check if this specific client is detected - if (isDiscordClientEnabled(client.name)) { - lines.push(`\n[templates.discord_${client.name}]`); - lines.push(`input_path = "${Quickshell.shellDir}/Assets/Templates/${app.input}"`); - const outputPath = client.path.replace("~", homeDir) + "/themes/noctalia.theme.css"; - lines.push(`output_path = "${outputPath}"`); - } - }); + const inputs = Array.isArray(app.input) ? app.input : [app.input]; + inputs.forEach((inputFile, idx) => { + // Derive theme suffix from input filename: discord-midnight.css → midnight + const themeSuffix = inputFile.replace(/^discord-/, "").replace(/\.css$/, ""); + app.clients.forEach(client => { + if (isDiscordClientEnabled(client.name)) { + lines.push(`\n[templates.discord_${themeSuffix}_${client.name}]`); + lines.push(`input_path = "${Quickshell.shellDir}/Assets/Templates/${inputFile}"`); + // First input uses legacy name for backward compatibility + const outputFile = idx === 0 ? "noctalia.theme.css" : `noctalia-${themeSuffix}.theme.css`; + const outputPath = client.path.replace("~", homeDir) + `/themes/${outputFile}`; + lines.push(`output_path = "${outputPath}"`); + } + }); + }); } } else if (app.id === "code") { // Handle Code clients specially diff --git a/Services/Theming/TemplateRegistry.qml b/Services/Theming/TemplateRegistry.qml index d751fc4dd..325f7909f 100644 --- a/Services/Theming/TemplateRegistry.qml +++ b/Services/Theming/TemplateRegistry.qml @@ -147,7 +147,7 @@ Singleton { "id": "discord", "name": "Discord", "category": "misc", - "input": "discord.css", + "input": ["discord-midnight.css", "discord-material.css"], "clients": [ { "name": "vesktop", From c98946f4291bd94b9c30cda669cee399ed49e82b Mon Sep 17 00:00:00 2001 From: Lemmy Date: Sat, 24 Jan 2026 15:25:00 -0500 Subject: [PATCH 6/8] about: restoring the donation/support us button --- Assets/Translations/de.json | 2 +- Assets/Translations/en.json | 2 +- Assets/Translations/es.json | 2 +- Assets/Translations/fr.json | 2 +- Assets/Translations/hn.json | 5 + Assets/Translations/hu.json | 2 +- Assets/Translations/ja.json | 2 +- Assets/Translations/ku.json | 2 +- Assets/Translations/nl.json | 2 +- Assets/Translations/nn-NO.json | 120 ++++++++++++++++++ Assets/Translations/pl.json | 2 +- Assets/Translations/pt.json | 2 +- Assets/Translations/ru.json | 2 +- Assets/Translations/tr.json | 2 +- Assets/Translations/uk-UA.json | 2 +- Assets/Translations/zh-CN.json | 32 ++--- Assets/Translations/zh-TW.json | 2 +- .../Settings/Tabs/About/VersionSubTab.qml | 20 +-- 18 files changed, 165 insertions(+), 40 deletions(-) create mode 100644 Assets/Translations/hn.json create mode 100644 Assets/Translations/nn-NO.json diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index b6f6794ae..078292298 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -1528,12 +1528,12 @@ "enabled": "'Nicht stören' aktiviert", "enabled-desc": "Sie finden diese Benachrichtigungen in Ihrem Verlauf" }, + "donation-opened": "Spendenseite in Ihrem Browser geöffnet", "internet-limited": "Verbunden ohne Internet", "keyboard-layout": { "changed": "Tastaturlayout geändert zu {layout}", "title": "Tastatur" }, - "kofi-opened": "Ko-fi-Seite in Ihrem Browser geöffnet", "missing-control-center": { "description": "Das Kontrollzentrum-Widget wurde aus der Leiste entfernt. Um es erneut über die Leiste zu öffnen, fügen Sie das Widget wieder hinzu. Sie können es auch durch Rechtsklick auf die Leiste öffnen", "label": "Letztes Kontrollzentrum-Widget entfernt" diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index 56798ba86..b07873074 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -1528,12 +1528,12 @@ "enabled": "Do Not Disturb enabled", "enabled-desc": "You'll find these notifications in your history" }, + "donation-opened": "Donation page opened in your browser", "internet-limited": "Connected without internet", "keyboard-layout": { "changed": "Keyboard layout changed to {layout}", "title": "Keyboard" }, - "kofi-opened": "Ko-fi page opened in your browser", "missing-control-center": { "description": "The control center widget has been removed from the bar. To access it from the bar again, you will need to re-add the widget. You can open it with right clicking on the bar too", "label": "Last control center widget removed" diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index 07e127992..1a8e6e1d8 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -1528,12 +1528,12 @@ "enabled": "'No molestar' activado", "enabled-desc": "Encontrarás estas notificaciones en tu historial" }, + "donation-opened": "Página de donación abierta en tu navegador", "internet-limited": "Conectado sin Internet", "keyboard-layout": { "changed": "Distribución de teclado cambiada a {layout}", "title": "Teclado" }, - "kofi-opened": "Página de Ko-fi abierta en tu navegador", "missing-control-center": { "description": "El widget del centro de control se eliminó de la barra. Para acceder a él nuevamente desde la barra, debes volver a añadir el widget. También puedes abrirlo haciendo clic derecho en la barra", "label": "Se eliminó el último widget del centro de control" diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index c6b97c3f2..3ae48ee87 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -1528,12 +1528,12 @@ "enabled": "'Ne pas déranger' activé", "enabled-desc": "Vous trouverez ces notifications dans votre historique" }, + "donation-opened": "Page de donation ouverte dans votre navigateur", "internet-limited": "Connecté sans Internet", "keyboard-layout": { "changed": "Disposition du clavier changée vers {layout}", "title": "Clavier" }, - "kofi-opened": "Page Ko-fi ouverte dans votre navigateur", "missing-control-center": { "description": "Le widget du centre de contrôle a été retiré de la barre. Pour y accéder à nouveau depuis la barre, veuillez ré‑ajouter le widget. Vous pouvez aussi l'ouvrir en cliquant avec le bouton droit sur la barre", "label": "Dernier widget du centre de contrôle supprimé" diff --git a/Assets/Translations/hn.json b/Assets/Translations/hn.json new file mode 100644 index 000000000..f46c38b7f --- /dev/null +++ b/Assets/Translations/hn.json @@ -0,0 +1,5 @@ +{ + "toast": { + "donation-opened": "दान पृष्ठ आपके ब्राउज़र में खुला" + } +} diff --git a/Assets/Translations/hu.json b/Assets/Translations/hu.json index 006bedcd7..6828ae615 100644 --- a/Assets/Translations/hu.json +++ b/Assets/Translations/hu.json @@ -1528,12 +1528,12 @@ "enabled": "Ne zavarjanak bekapcsolva", "enabled-desc": "Ezeket az értesítéseket az előzményekben találja" }, + "donation-opened": "Az adományozási oldal megnyílt a böngésződben", "internet-limited": "Csatlakoztatva internet nélkül", "keyboard-layout": { "changed": "Billentyűzetkiosztás megváltozott: {layout}", "title": "Billentyűzet" }, - "kofi-opened": "A Ko-fi oldal megnyílt a böngészőjében", "missing-control-center": { "description": "A vezérlőközpont widget eltávolításra került a sávról. A sávról való újbóli eléréshez újra hozzá kell adnia a widgetet. Jobb kattintással is megnyithatja a sávon", "label": "Utolsó vezérlőközpont widget eltávolítva" diff --git a/Assets/Translations/ja.json b/Assets/Translations/ja.json index ed01c944b..0d4f42dee 100644 --- a/Assets/Translations/ja.json +++ b/Assets/Translations/ja.json @@ -1528,12 +1528,12 @@ "enabled": "おやすみモードを有効化", "enabled-desc": "通知は履歴に保存されます" }, + "donation-opened": "寄付ページがブラウザで開かれました", "internet-limited": "インターネット未接続", "keyboard-layout": { "changed": "キーボードレイアウトを {layout} に変更しました", "title": "キーボード" }, - "kofi-opened": "ブラウザで Ko-fi ページを開きました", "missing-control-center": { "description": "コントロールセンターウィジェットがバーから削除されました。再度アクセスするには、ウィジェットを追加し直す必要があります。バーを右クリックして開くことも可能です", "label": "最後のコントロールセンターが削除されました" diff --git a/Assets/Translations/ku.json b/Assets/Translations/ku.json index a3e2dd2e7..4cdbb0df6 100644 --- a/Assets/Translations/ku.json +++ b/Assets/Translations/ku.json @@ -1528,12 +1528,12 @@ "enabled": "Dengê dernexîne çalak e", "enabled-desc": "Hûn ê van agahdariyan di dîroka xwe de bibînin" }, + "donation-opened": "Rûpela bexşînê di geroka we de vebû", "internet-limited": "Pêwendîdar bê înternetê", "keyboard-layout": { "changed": "Şêwaza kilîtdankê bo {layout} hat guhertin", "title": "Klavyeya" }, - "kofi-opened": "Rûpela Ko-fi di geroka te de vebû", "missing-control-center": { "description": "Kurteya kontrolê ji barê hatiye rakirin. Ji bo ku hûn dîsa ji barê bigihîjinê, hûn ê hewce ne ku kurteyê ji nû ve zêde bikin. Her weha hûn dikarin bi rast-klîkkirina li ser barê jî vekin", "label": "Amûra dawî ya navenda kontrolê hate rakirin" diff --git a/Assets/Translations/nl.json b/Assets/Translations/nl.json index cf1981937..53df51239 100644 --- a/Assets/Translations/nl.json +++ b/Assets/Translations/nl.json @@ -1528,12 +1528,12 @@ "enabled": "'Niet storen' ingeschakeld", "enabled-desc": "Je vindt deze meldingen terug in je geschiedenis" }, + "donation-opened": "Donatiepagina geopend in uw browser", "internet-limited": "Verbonden zonder internet", "keyboard-layout": { "changed": "Toetsenbordindeling gewijzigd naar {layout}", "title": "Toetsenbord" }, - "kofi-opened": "Ko-fi-pagina geopend in je browser", "missing-control-center": { "description": "De bedieningscentrumwidget is uit de balk verwijderd. Om er vanuit de balk weer toegang toe te krijgen, moet je de widget opnieuw toevoegen. Je kunt het ook openen door met de rechtermuisknop op de balk te klikken", "label": "Laatste bedieningscentrumwidget verwijderd" diff --git a/Assets/Translations/nn-NO.json b/Assets/Translations/nn-NO.json new file mode 100644 index 000000000..ff75449bc --- /dev/null +++ b/Assets/Translations/nn-NO.json @@ -0,0 +1,120 @@ +{ + "actions": { + "clear-history": "Fjern historikk", + "close-app": "Steng {app}", + "connect-vpn": "Kopla til {app}", + "cycle-visualizer": "Skift visualiserar", + "disable-bluetooth": "Slå av Bluetooth", + "disable-dnd": "Slå av Ikkje forstyrr", + "disable-wifi": "Slå av Wi-Fi", + "disconnect-vpn": "Kopla frå {name}", + "enable-bluetooth": "Slå på Bluetooth", + "enable-dnd": "Slå på Ikkje forstyrr", + "enable-wifi": "Slå på Wi-Fi", + "launcher-settings": "Innstillingar for programveljar", + "lower-to-bottom": "Flytt til botnen", + "open-calendar": "Opna kalender", + "open-display-settings": "Innstillingar for skjerm", + "open-launcher": "Opna programveljar", + "open-settings": "Opna innstillingar", + "raise-to-top": "Flytt til toppen", + "random-wallpaper": "Tilfelleleg bakgrunnsbilete", + "run-custom-command": "Køyr eigendefinert kommando", + "show-active-only": "Vis berre aktive", + "show-all": "Vis alle", + "toggle-mute": "Slå ljod av/på", + "widget-settings": "Innstillingar for miniprogram" + }, + "authentication": { + "error": "Autentiseringsfeil", + "failed": "Autentisering feila" + }, + "bar": { + "active-window": { + "colorize-icons-description": "Farga ikonet til det aktive vindauga med temafargane.", + "hide-mode-description": "Styrer kva miniprogrammet gjer når det ikkje er eit aktivt vindauga.", + "scrolling-mode-description": "Styr når rullande tekst slår på for lange vindaugenamn.", + "show-app-icon-description": "Vis programikonet attmed vindaugenamnet.", + "show-app-icon-label": "Vis programikon" + }, + "audio-visualizer": { + "color-name-description": "Vel farge for visualiseraren.", + "color-name-label": "Fyll farge", + "hide-when-idle-description": "Når dette er på, gøymer visualiseraren seg med mindre noko aktivt spelar.", + "hide-when-idle-label": "Gøym når ingenting spelar av", + "width-description": "Eigendefinert komponentbreidd." + }, + "battery": { + "device-default": "Standard (Skjermeining)", + "device-description": "Vel kva for batterieining å visa.", + "device-label": "Batterieining", + "hide-if-idle-description": "Gøym miniprogrammet når batteriet ikkje ladar opp eller ut.", + "hide-if-idle-label": "Gøym når i dvale", + "hide-if-not-detected-description": "Gøym miniprogrammet når inga batterieining er funnen.", + "hide-if-not-detected-label": "Gøym når ikkje funnen", + "low-battery-threshold-description": "Vis åtvaring når batterinivået fell under dette prosenttalet.", + "low-battery-threshold-label": "Varslingsterskel for lågt batterinivå", + "show-noctalia-performance-description": "Vis ytingsmodusbrytaren for Noctalia i batterifanen.
Slår av skugger og animasjonar i Noctalia for å minka ressursbruk.", + "show-noctalia-performance-label": "Vis ytingsmodusbrytaren for Noctalia", + "show-power-profile-description": "Vis veljaren for energiprofil i batterifanen.", + "show-power-profile-label": "Vis kontrollane for energiprofil" + }, + "clock": { + "clock-display-description": "Tilpass klokkevisninga ved å leggja til merke frå lista. For å bruka 12-timarsformat må du ha med 'AP'-merket.", + "clock-display-label": "Klokkevisar", + "custom-font-description": "Vel eigendefinert skrifttype til klokkevisaren.", + "custom-font-label": "Eigendefinert skrifttype", + "custom-font-placeholder": "Vel eigendefinert skrifttype...", + "custom-font-search-placeholder": "Søk gjennom skrifttypar...", + "horizontal-bar-description": "Tips: Skriv \\n for å byrja ei ny linje", + "tooltip-format-description": "Formater streng til hjelpeteksten som kjem opp når peikaren er over klokka. Haldt dette tomt for å bruka standardteksten.", + "tooltip-format-label": "Hjelpetekstformat", + "use-custom-font-description": "Overstyr standardskrifttypen med eigendefinert skrifttype til klokka.", + "use-custom-font-label": "Bruk eigendefinert skrifttype", + "use-monospaced-font-description": "Når dette er på, brukar klokka fastbreiddeskrift.", + "use-monospaced-font-label": "Bruk fastbreiddeskrift", + "use-primary-color-description": "Når dette er på, vert primærfargen brukt for å hevja ut.", + "use-primary-color-label": "Bruk primærfarge", + "vertical-bar-description": "Bruk mellomrom for å skilja kvar del på ei ny linje.", + "vertical-bar-label": "Loddrett panel" + }, + "control-center": { + "browse-file": "Leita i filene", + "browse-library": "Leita i biblioteket", + "color-selection-description": "Gjev ikona temafargane.", + "enable-colorization-description": "Fargar kontrollsenterikonet med temafargane.", + "icon-description": "Vel ikon frå biblioteket eller eigendefinert fil.", + "select-custom-icon": "Vel eigendefinert ikon", + "use-distro-logo-description": "Bruk kjennemerket til distribusjonen din heller enn eigendefinert ikon.", + "use-distro-logo-label": "Bruk distrokjennemerke heller enn ikon" + }, + "custom-button": { + "collapse-condition-description": "Dersom utskrifta er lik dette, skyler knappen seg.", + "collapse-condition-label": "Skylevilkår", + "color-selection-description": "Gjev ikon og tekst temafargane.", + "color-selection-label": "Vel farge", + "display-command-output-description": "Gjev kommando for å køyra regelrett. Fyrste utskriftslinja vert vist som tekst.", + "display-command-output-label": "Vis kommando utskrift", + "display-command-output-stream-description": "Gjev kommando for å køyra heile tida.", + "dynamic-text": "Dynamisk tekst", + "enable-colorization-description": "Gjev temafargane til ikonet og teksten på den eigendefinerte knappen.", + "enable-colorization-label": "Slå på fargelegging", + "hide-mode-always-expanded": "Alltid utvida", + "hide-mode-description": "Styrer om miniprogrammet skal visast når kommandoen ikkje har utskrift.", + "hide-mode-expand-with-output": "Utvida med utskrift", + "hide-mode-label": "Skjulemodus", + "hide-mode-max-transparent": "Heilt utvida men gjennomsynleg", + "icon-description": "Vel ikon frå biblioteket.", + "ipc-identifier-description": "Særskild identifikator for IPC kommandoar. Bruk denne identifikatoren med 'qs -c noctalia-shell ipc call cb [handling] [identifikator]' for å styra denne knappen med IPC.", + "ipc-identifier-label": "IPC-identifikator", + "left-click-description": "Kommando som køyrer når knappen er venstreklikka.", + "left-click-label": "Venstreklikk", + "left-click-update-text": "Oppdater tekst som viser seg med venstreklikk", + "max-text-length-horizontal-description": "Øvre grense på kor mange teikn som kan visast i vassrett panel (0 for å skyla tekst).", + "max-text-length-horizontal-label": "Øvre grense på tekstlengd (vassrett)" + } + }, + "toast": { + "donation-opened": "Donasjonsside opna i nettlesaren din" + } +} diff --git a/Assets/Translations/pl.json b/Assets/Translations/pl.json index 0412bba65..71472c6a5 100644 --- a/Assets/Translations/pl.json +++ b/Assets/Translations/pl.json @@ -1528,12 +1528,12 @@ "enabled": "Nie przeszkadzać włączone", "enabled-desc": "Powiadomienia znajdziesz w swojej historii" }, + "donation-opened": "Strona darowizny otwarta w Twojej przeglądarce", "internet-limited": "Połączono bez dostępu do internetu", "keyboard-layout": { "changed": "Układ klawiatury zmieniony na {layout}", "title": "Klawiatura" }, - "kofi-opened": "Strona Ko-fi otwarta w przeglądarce", "missing-control-center": { "description": "Widżet centrum sterowania został usunięty z paska. Aby mieć do niego dostęp, musisz go dodać ponownie. Możesz go również otworzyć, klikając prawym przyciskiem na pasek", "label": "Ostatni widżet centrum sterowania usunięty" diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index a978ea4e3..6c9fb8898 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -1528,12 +1528,12 @@ "enabled": "'Não perturbe' ativado", "enabled-desc": "Você encontrará essas notificações no seu histórico" }, + "donation-opened": "Página de doação aberta no seu navegador", "internet-limited": "Conectado sem Internet", "keyboard-layout": { "changed": "Layout de teclado alterado para {layout}", "title": "Teclado" }, - "kofi-opened": "Página do Ko-fi aberta no seu navegador", "missing-control-center": { "description": "O widget da central de controle foi removido da barra. Para acessá-lo novamente pela barra, adicione o widget novamente. Você também pode abri-lo clicando com o botão direito na barra", "label": "Último widget da central de controle removido" diff --git a/Assets/Translations/ru.json b/Assets/Translations/ru.json index 43f6501de..f9dc83fcb 100644 --- a/Assets/Translations/ru.json +++ b/Assets/Translations/ru.json @@ -1528,12 +1528,12 @@ "enabled": "Режим 'Не беспокоить' включен", "enabled-desc": "Вы найдёте эти уведомления в своей истории" }, + "donation-opened": "Страница пожертвований открыта в вашем браузере", "internet-limited": "Подключено без доступа к интернету", "keyboard-layout": { "changed": "Раскладка клавиатуры изменена на {layout}", "title": "Клавиатура" }, - "kofi-opened": "Страница Ko-fi открыта в вашем браузере", "missing-control-center": { "description": "Виджет центра управления был удалён с панели. Чтобы снова получить к нему доступ с панели, вам нужно будет повторно добавить виджет. Вы также можете открыть его, нажав правой кнопкой мыши на панель", "label": "Последний виджет центра управления удалён" diff --git a/Assets/Translations/tr.json b/Assets/Translations/tr.json index 707ea1b49..5c0be59fe 100644 --- a/Assets/Translations/tr.json +++ b/Assets/Translations/tr.json @@ -1528,12 +1528,12 @@ "enabled": "'Rahatsız etme' etin", "enabled-desc": "Bu bildirimleri geçmişinizde bulacaksınız" }, + "donation-opened": "Bağış sayfası tarayıcınızda açıldı", "internet-limited": "İnternetsiz bağlandı", "keyboard-layout": { "changed": "Klavye düzeni {layout} olarak değiştirildi", "title": "Klavye" }, - "kofi-opened": "Ko-fi sayfası tarayıcınızda açıldı", "missing-control-center": { "description": "Kontrol merkezi araç takımı araç çubuğundan kaldırıldı. Araç çubuğundan tekrar erişmek için araç takımını yeniden eklemeniz gerekecek. Araç çubuğuna sağ tıklayarak da açabilirsiniz", "label": "Son kontrol merkezi araç takımı kaldırıldı" diff --git a/Assets/Translations/uk-UA.json b/Assets/Translations/uk-UA.json index efa8c3e8c..330b60773 100644 --- a/Assets/Translations/uk-UA.json +++ b/Assets/Translations/uk-UA.json @@ -1528,12 +1528,12 @@ "enabled": "'Не турбувати' увімкнено", "enabled-desc": "Ви знайдете ці сповіщення в своїй історії" }, + "donation-opened": "Сторінка пожертв відкрито у вашому браузері", "internet-limited": "Підключено без інтернету", "keyboard-layout": { "changed": "Розкладка клавіатури змінена на {layout}", "title": "Клавіатура" }, - "kofi-opened": "Сторінка Ko-fi відкрита у вашому браузері", "missing-control-center": { "description": "Віджет центру керування видалено з панелі. Щоб знову отримати до нього доступ з панелі, вам потрібно повторно додати віджет. Ви також можете відкрити його, клацнувши правою кнопкою миші на панелі", "label": "Останній віджет центру керування видалено" diff --git a/Assets/Translations/zh-CN.json b/Assets/Translations/zh-CN.json index a6bf27a05..0386e602b 100644 --- a/Assets/Translations/zh-CN.json +++ b/Assets/Translations/zh-CN.json @@ -51,7 +51,7 @@ "hide-if-idle-description": "当电池未充电或放电时,隐藏小部件。", "hide-if-idle-label": "空闲时隐藏", "hide-if-not-detected-description": "当系统未检测到电池时,隐藏该小部件。", - "hide-if-not-detected-label": "如果未被发现,则隐藏", + "hide-if-not-detected-label": "未检测到电池时隐藏", "low-battery-threshold-description": "当电量低于此百分比时显示警告。", "low-battery-threshold-label": "低电量警告阈值", "show-noctalia-performance-description": "在电池面板中显示 Noctalia 性能模式切换。
禁用 Noctalia 中的阴影和动画以减少资源使用。", @@ -212,7 +212,7 @@ "storage-usage-description": "显示磁盘空间使用情况。", "storage-usage-label": "存储用量", "swap-usage-description": "显示 Swap 使用情况。", - "swap-usage-label": "Swap 用量", + "swap-usage-label": "Swap", "use-monospace-font-description": "使用等宽字体以保持字符宽度一致。", "use-monospace-font-label": "等宽字体" }, @@ -283,7 +283,7 @@ "no-battery-detected": "未检测到电池", "plugged-in": "已接通电源", "power-profile": "电源模式", - "time-left": "剩余时间:{time}", + "time-left": "续航剩余:{time}", "time-until-full": "充满所需时间:{time}" }, "bluetooth": { @@ -1174,7 +1174,7 @@ "always-on-top-label": "始终置顶", "background-opacity-description": "调整 OSD 背景的不透明度。", "background-opacity-label": "背景不透明度", - "description": "配置状态反馈指示器,例如音量和亮度。", + "description": "配置用于在屏幕亮度、音量等状态发生变化时提供反馈的 OSD。", "duration-auto-hide-description": "调整 OSD 消失前的时间。", "duration-auto-hide-label": "自动隐藏超时", "duration-desc": "屏幕显示自动隐藏前保持可见的时长。", @@ -1185,7 +1185,7 @@ "general-desc": "配置 OSD 的可见性和行为。", "location-description": "OSD 出现的位置。", "monitors-desc": "在特定显示器上显示 OSD。若未选择,则默认全部。", - "title": "状态反馈 (OSD)", + "title": "状态反馈", "types-brightness-description": "当屏幕亮度发生变化时显示 OSD。", "types-brightness-label": "亮度", "types-custom-text-description": "显示来自 IPC 的自定义文本消息的 OSD。", @@ -1499,8 +1499,8 @@ "title": "飞行模式" }, "battery": { - "low": "电量低", - "low-desc": "电量为 {percent}%。请连接充电器" + "low": "电池电量低", + "low-desc": "电量仅剩 {percent}%,请插上充电器。" }, "bluetooth": { "address-copied": "地址已复制到剪贴板", @@ -1528,12 +1528,12 @@ "enabled": "'勿扰模式'已启用", "enabled-desc": "您可以在历史记录中找到这些通知" }, + "donation-opened": "捐赠页面已在您的浏览器中打开", "internet-limited": "已连接但无互联网", "keyboard-layout": { "changed": "键盘布局已更改为 {layout}", "title": "键盘" }, - "kofi-opened": "Ko-fi 页面已在您的浏览器中打开", "missing-control-center": { "description": "控制中心小部件已从状态栏中移除。要再次从状态栏访问它,您需要重新添加小部件。您也可以通过右键点击状态栏来打开它", "label": "最后一个控制中心小部件已移除" @@ -1647,8 +1647,8 @@ "apikey-help": "访问 NSFW 内容需要 API 密钥。", "apikey-label": "API 密钥", "apikey-managed-by-env": "通过 NOCTALIA_WALLHAVEN_API_KEY 环境变量进行管理。", - "apikey-placeholder": "输入您的Wallhaven API密钥", - "apply-all-monitors-description": "一次性将选定的壁纸应用到所有显示器。", + "apikey-placeholder": "输入您的 Wallhaven API 密钥", + "apply-all-monitors-description": "将选定的壁纸应用到所有显示器。", "apply-all-monitors-label": "应用到所有显示器", "categories-anime": "动漫", "categories-label": "分类", @@ -1660,17 +1660,17 @@ "purity-nsfw": "少儿不宜", "purity-sfw": "安全", "purity-sketchy": "可疑", - "ratios-all-portrait": "全部纵向", - "ratios-all-wide": "所有宽幅", - "ratios-any": "任何", + "ratios-all-portrait": "纵向", + "ratios-all-wide": "横向", + "ratios-any": "任意", "ratios-label": "宽高比", "resolution-atleast": "至少", "resolution-exact": "精确", "resolution-label": "分辨率", - "resolution-mode-label": "模式", + "resolution-mode-label": "匹配模式", "solid-color-tooltip": "纯色背景", - "sorting-date-added": "添加日期", - "sorting-favorites": "收藏", + "sorting-date-added": "上传日期", + "sorting-favorites": "收藏量", "sorting-label": "排序方式", "sorting-relevance": "相关性", "sorting-toplist": "排行榜", diff --git a/Assets/Translations/zh-TW.json b/Assets/Translations/zh-TW.json index 8e47b2d52..f236fc4b3 100644 --- a/Assets/Translations/zh-TW.json +++ b/Assets/Translations/zh-TW.json @@ -1528,12 +1528,12 @@ "enabled": "勿擾模式已啟用", "enabled-desc": "你會在歷史通知找到這些通知" }, + "donation-opened": "捐款頁面已在您的瀏覽器中開啟", "internet-limited": "已連接但沒有網際網路", "keyboard-layout": { "changed": "切換鍵盤佈局為 {layout}", "title": "鍵盤" }, - "kofi-opened": "已在瀏覽器打開 Ko-Fi 頁面", "missing-control-center": { "description": "控制中心小工具已經從工具列移除, 如果想重新自工具列存取, 你必須把小工具加回來; 你也可以在工具列直接點擊右鍵打開", "label": "最後一個控制中心小工具已解除" diff --git a/Modules/Panels/Settings/Tabs/About/VersionSubTab.qml b/Modules/Panels/Settings/Tabs/About/VersionSubTab.qml index 3cc0721fc..5462f62a7 100644 --- a/Modules/Panels/Settings/Tabs/About/VersionSubTab.qml +++ b/Modules/Panels/Settings/Tabs/About/VersionSubTab.qml @@ -493,22 +493,22 @@ ColumnLayout { } } - // NButton { - // icon: "heart" - // text: I18n.tr("panels.about.support") - // outlined: true - // onClicked: { - // Quickshell.execDetached(["xdg-open", "https://ko-fi.com/lysec"]); - // ToastService.showNotice(I18n.tr("panels.about.support"), I18n.tr("toast.kofi-opened")); - // } - // } - NButton { icon: "copy" text: I18n.tr("panels.about.copy-info") outlined: true onClicked: root.copyInfoToClipboard() } + + NButton { + icon: "heart" + text: I18n.tr("panels.about.support") + outlined: true + onClicked: { + Quickshell.execDetached(["xdg-open", "https://buymeacoffee.com/noctalia"]); + ToastService.showNotice(I18n.tr("panels.about.support"), I18n.tr("toast.kofi-opened")); + } + } } // System Information Section From d1290cc76fdcb1692d5b4ac9a775de92568f7eda Mon Sep 17 00:00:00 2001 From: Lemmy Date: Sat, 24 Jan 2026 15:31:09 -0500 Subject: [PATCH 7/8] buy_me_a_coffee --- .github/funding.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/funding.yml b/.github/funding.yml index dcb0c6229..ca81eba3b 100644 --- a/.github/funding.yml +++ b/.github/funding.yml @@ -1 +1 @@ -ko_fi: +buy_me_a_coffee: noctalia From 8f7e01d09b784a24903fc5369f49525123e9dc26 Mon Sep 17 00:00:00 2001 From: Lemmy Date: Sat, 24 Jan 2026 15:50:07 -0500 Subject: [PATCH 8/8] Change donation link to 'Buy Me a Coffee' Updated donation links and badges in the README. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 228cda154..914467601 100644 --- a/README.md +++ b/README.md @@ -123,9 +123,9 @@ A heartfelt thank you to our incredible community of [**contributors**](https:// While all donations are greatly appreciated, they are completely voluntary. - - Ko-Fi - +[buy-me-a-coffee]: https://www.buymeacoffee.com/noctalia +[![Buy me a Donut](https://assets.noctalia.dev/donate-badge.svg)][buy-me-a-coffee] + ### Thank you to everyone who supports the project 💜! * Gohma