diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-14 18:19:36 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-14 18:19:36 +0200 |
| commit | 299cd762de30b5ae162cf599e929b61752645077 (patch) | |
| tree | 2cee2ace27e81fa354370598c8e50aded73e9000 | |
| parent | 562273597fa3831363d9ac4a30b7263b7bc69b3e (diff) | |
| download | quickshell-299cd762de30b5ae162cf599e929b61752645077.tar.gz quickshell-299cd762de30b5ae162cf599e929b61752645077.zip | |
feat(desktop): pin glyphs to Inconsolata Nerd Font
Glyphs are Nerd Font private-use codepoints, and relying on per-codepoint fontconfig fallback from Noto Sans let the same codepoint resolve to a different glyph in a different Nerd Font.
A Theme.iconFamily now names the render family once, and every glyph Text uses it, while fontFamily stays Noto Sans for words and labels. The ethernet glyph moves from \uf6ff to \uef44, the fa-ethernet codepoint present in Inconsolata.
| -rw-r--r-- | desktop/Page.qml | 2 | ||||
| -rw-r--r-- | desktop/Tile.qml | 2 | ||||
| -rw-r--r-- | desktop/modules/network/NetworkPage.qml | 6 | ||||
| -rw-r--r-- | desktop/modules/network/NetworkRow.qml | 2 | ||||
| -rw-r--r-- | desktop/modules/sound/Osd.qml | 4 | ||||
| -rw-r--r-- | desktop/modules/sound/SoundPage.qml | 4 | ||||
| -rw-r--r-- | desktop/modules/sound/TransportButton.qml | 2 | ||||
| -rw-r--r-- | shared/Theme.qml | 6 |
8 files changed, 17 insertions, 11 deletions
diff --git a/desktop/Page.qml b/desktop/Page.qml index 0c29806..1bf312c 100644 --- a/desktop/Page.qml +++ b/desktop/Page.qml @@ -33,7 +33,7 @@ Item { Text { anchors.centerIn: parent text: "" - font { family: Theme.fontFamily; pixelSize: 14 } + font { family: Theme.iconFamily; pixelSize: 14 } color: Theme.text } diff --git a/desktop/Tile.qml b/desktop/Tile.qml index 0451c39..d78edb5 100644 --- a/desktop/Tile.qml +++ b/desktop/Tile.qml @@ -40,7 +40,7 @@ Rectangle { Text { text: tile.icon - font { family: Theme.fontFamily; pixelSize: 22 } + font { family: Theme.iconFamily; pixelSize: 22 } color: tile.active ? Theme.accent : Theme.text } diff --git a/desktop/modules/network/NetworkPage.qml b/desktop/modules/network/NetworkPage.qml index b032a72..e40f233 100644 --- a/desktop/modules/network/NetworkPage.qml +++ b/desktop/modules/network/NetworkPage.qml @@ -37,8 +37,8 @@ Column { Text { anchors.verticalCenter: parent.verticalCenter - text: "\uf6ff" - font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 2 } + text: "\uef44" + font { family: Theme.iconFamily; pixelSize: Theme.fontSize - 2 } color: Theme.subtext } @@ -98,7 +98,7 @@ Column { id: wifiGlyph anchors.verticalCenter: parent.verticalCenter text: "\uf1eb" - font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 2 } + font { family: Theme.iconFamily; pixelSize: Theme.fontSize - 2 } color: Theme.subtext } diff --git a/desktop/modules/network/NetworkRow.qml b/desktop/modules/network/NetworkRow.qml index 34c134b..3afab9a 100644 --- a/desktop/modules/network/NetworkRow.qml +++ b/desktop/modules/network/NetworkRow.qml @@ -62,7 +62,7 @@ Rectangle { anchors.verticalCenter: parent.verticalCenter visible: row.secured() text: "\uf023" - font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 4 } + font { family: Theme.iconFamily; pixelSize: Theme.fontSize - 4 } color: Theme.overlay } diff --git a/desktop/modules/sound/Osd.qml b/desktop/modules/sound/Osd.qml index 677d211..424b9c3 100644 --- a/desktop/modules/sound/Osd.qml +++ b/desktop/modules/sound/Osd.qml @@ -112,7 +112,7 @@ Scope { anchors.verticalCenter: parent.verticalCenter width: 30 horizontalAlignment: Text.AlignHCenter - font.family: Theme.fontFamily + font.family: Theme.iconFamily font.pixelSize: 24 color: win.muted ? Theme.red : Theme.accent text: { @@ -200,7 +200,7 @@ Scope { anchors.centerIn: parent visible: Player.artUrl === "" || parent.children[0].status !== Image.Ready text: "" - font { family: Theme.fontFamily; pixelSize: 20 } + font { family: Theme.iconFamily; pixelSize: 20 } color: Theme.overlay } } diff --git a/desktop/modules/sound/SoundPage.qml b/desktop/modules/sound/SoundPage.qml index 7a757c9..31f9e7c 100644 --- a/desktop/modules/sound/SoundPage.qml +++ b/desktop/modules/sound/SoundPage.qml @@ -79,7 +79,7 @@ Column { Text { anchors.verticalCenter: parent.verticalCenter text: page.stateIcon(audio, modelData.label === "Input") - font { family: Theme.fontFamily; pixelSize: Theme.fontSize } + font { family: Theme.iconFamily; pixelSize: Theme.fontSize } color: audio?.muted ? Theme.red : Theme.accent } @@ -120,7 +120,7 @@ Column { Text { id: chevron text: section.expanded ? "\uf077" : "\uf078" - font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 4 } + font { family: Theme.iconFamily; pixelSize: Theme.fontSize - 4 } color: Theme.overlay } } diff --git a/desktop/modules/sound/TransportButton.qml b/desktop/modules/sound/TransportButton.qml index 2c1f498..b6dd53f 100644 --- a/desktop/modules/sound/TransportButton.qml +++ b/desktop/modules/sound/TransportButton.qml @@ -25,7 +25,7 @@ Rectangle { Text { anchors.centerIn: parent text: btn.glyph - font { family: Theme.fontFamily; pixelSize: 14 } + font { family: Theme.iconFamily; pixelSize: 14 } color: Theme.text } diff --git a/shared/Theme.qml b/shared/Theme.qml index 423dd49..6f172e7 100644 --- a/shared/Theme.qml +++ b/shared/Theme.qml @@ -39,6 +39,12 @@ Singleton { readonly property string fontFamily: "Noto Sans" readonly property int fontSize: 16 + // Glyphs are Nerd Font private-use codepoints. They render with this + // family, not fontFamily: fontconfig otherwise falls back per codepoint + // and the same codepoint can be a different glyph in a different Nerd + // Font. Inconsolata Nerd Font is the desktop's monospaced font. + readonly property string iconFamily: "Inconsolata Nerd Font" + // Parsed rather than imported: a generated file cannot be a QML import // without a qmldir next to it, and the cache directory has no reason to // carry one. The format is fixed and machine-written, so a regex is enough. |
