Merge feature/identity-desktoptheme-font

Bring the Shift identity, metadata, containment, KCM/KDED, and documentation updates into the main integration branch.
This commit is contained in:
Marco Allegretti 2026-05-17 17:30:50 +02:00
commit d9877b86d0
896 changed files with 5295 additions and 3410 deletions

1
.gitignore vendored
View file

@ -24,3 +24,4 @@ build
.preview-config/
.preview-data/
preview.sh
.icon-gen/

View file

@ -11,3 +11,14 @@ Files: HACKING.md
Copyright: Plasma-Mobile contributors
License: CC-BY-SA-4.0
Files: icons/org.shift.icons/**/*.svg
Copyright: 2023 Phosphor Icons
2026 Shift contributors
License: MIT
Comment: SVG glyphs are adapted from Phosphor Icons regular 256px paths for the Shift icon theme.
Files: icons/org.shift.icons/index.theme
icons/org.shift.icons/README.md
Copyright: 2026 Marco Allegretti
License: EUPL-1.2

View file

@ -124,7 +124,7 @@ set_package_properties(KWinDBusInterface PROPERTIES DESCRIPTION "KWin DBus inter
find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS Auth)
set_package_properties(KF6::AuthCore PROPERTIES
TYPE REQUIRED
PURPOSE "Allows Plasma Mobile to configure Waydroid"
PURPOSE "Allows SHIFT to configure Waydroid"
)
if(PLASMA_MOBILE_LOCAL_KAUTH_INSTALL)
@ -149,6 +149,7 @@ plasma_install_package(${SHIFT_SHELL_PACKAGE_DIR} org.kde.plasma.mobileshell she
add_subdirectory(bin)
add_subdirectory(color-schemes)
add_subdirectory(fonts)
add_subdirectory(icons)
add_subdirectory(wallpapers)
add_subdirectory(components)
@ -165,7 +166,8 @@ if(BUILD_TESTING)
add_subdirectory(tests)
endif()
install(FILES org.kde.plasma.mobileshell.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
install(CODE "file(REMOVE \"\$ENV{DESTDIR}${KDE_INSTALL_FULL_METAINFODIR}/org.kde.plasma.mobileshell.metainfo.xml\")")
install(FILES org.shift.mobile.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
find_program(PlasmaOpenSettings plasma-open-settings)
set_package_properties(PlasmaOpenSettings PROPERTIES

View file

@ -1,6 +1,6 @@
# Hacking on Shift
Shift is a convergent Plasma Mobile shell. This guide covers
Shift is a convergent shell built on Plasma Mobile components. This guide covers
building and testing it locally without polluting your host system.
The approach: keep every build dependency inside a **distrobox** container
@ -89,8 +89,8 @@ sudo zypper install --no-confirm \
### Runtime dependencies (needed for preview, not for compilation)
The nested preview runs the system `plasmashell` binary. It needs a
complete Plasma Mobile runtime so all QML imports resolve:
The nested preview runs the system `plasmashell` binary. It needs the
complete runtime from the Plasma Mobile stack so all QML imports resolve:
```bash
sudo zypper install --no-confirm \
@ -204,6 +204,7 @@ export EGL_PLATFORM=wayland
export QT_QUICK_CONTROLS_STYLE=org.kde.breeze
export QT_QUICK_CONTROLS_MOBILE=true
export PLASMA_PLATFORM=phone:handset
# Compatibility note: the runtime shell package id intentionally remains upstream.
export PLASMA_DEFAULT_SHELL=org.kde.plasma.mobileshell
export QT_FORCE_STDERR_LOGGING=1
exec plasmashell --replace -p org.kde.plasma.mobileshell
@ -212,7 +213,8 @@ ENDSCRIPT
# Expose the project prefix to the host kwin_wayland so it can find
# KWin scripts (convergentwindows) and their QML dependencies.
# Also overlay ~/.config/plasma-mobile so KWin reads the mobile kwinrc
# Also overlay ~/.config/plasma-mobile so KWin reads the mobile kwinrc.
# That path is intentionally preserved for compatibility with existing config handling.
# (envmanager writes convergentwindowsEnabled, Placement, etc. there).
export XDG_DATA_DIRS="$PREFIX/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
export XDG_CONFIG_DIRS="$HOME/.config/plasma-mobile:${XDG_CONFIG_DIRS:-/etc/xdg}"
@ -234,9 +236,9 @@ Make it executable: `chmod +x preview.sh`.
1. `dbus-run-session` spins up an isolated D-Bus session so the nested
compositor doesn't clash with your running desktop.
2. Four environment exports give the **host** `kwin_wayland` access to
the project's `.prefix` (KWin scripts, QML plugins) and to
`~/.config/plasma-mobile` (where envmanager writes convergence
settings like `convergentwindowsEnabled`, `Placement`, etc.).
the project's `.prefix` (KWin scripts, QML plugins) and to
`~/.config/plasma-mobile` (the preserved compatibility path where envmanager writes convergence
settings like `convergentwindowsEnabled`, `Placement`, etc.).
3. `kwin_wayland` opens a window on your current desktop and creates a
Wayland socket named `shift-kwin`. Because of the exports it can
load the `convergentwindows` script, which handles maximising

43
LICENSES/OFL-1.1.txt Normal file
View file

@ -0,0 +1,43 @@
SIL OPEN FONT LICENSE
Version 1.1 - 26 February 2007
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting — in part or in whole — any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

View file

@ -1,11 +1,8 @@
# Shift
A fork of KDE Plasma Mobile that adds a desktop-class convergence mode.
Plasma Mobile is a phone shell. It doesn't try to be anything else.
Shift picks up where it leaves off: when you connect a monitor, keyboard,
or mouse, the same device should feel like a desktop. No second OS, no
separate session — one shell that adapts.
Shift is a fork of KDE Plasma Mobile focused on convergence.
When you connect a monitor, keyboard, or mouse, the same shell should still
work as a desktop-style environment. No second OS, no separate session.
## What's different from upstream
@ -15,6 +12,10 @@ that still works. Shift adds a **convergence mode** layer on top — toggled
via `plasmamobilerc` — that swaps in desktop-oriented behaviour without
replacing the phone UI underneath.
Compatibility-sensitive runtime identifiers such as
`org.kde.plasma.mobileshell` remain upstream-looking for now. The product is
SHIFT; the preserved identifiers are part of the current compatibility layer.
Key changes so far:
- **Unified dock** replacing the navigation panel in convergence mode,

View file

@ -1,6 +1,6 @@
# Shift
SHIFT is an open source shell built on KDE Plasma Mobile, designed to adapt fluidly to your computing needs across devices
SHIFT is an independent shell fork focused on convergence. It builds on KDE Plasma Mobile, keeps the upstream phone UI available, and layers desktop-oriented behaviour on top of the same session.
### Desktop demos
@ -8,8 +8,8 @@
![Docked mode](screenshots/quick_DesktopDemo_docked.webm)
![Tiling](screenshots/quick_DesktopDemo_tiling.webm)
Shift is a fork of [plasma-mobile](https://invent.kde.org/plasma/plasma-mobile).
The upstream phone UI is untouched; convergence adds a layer on top.
SHIFT tracks [plasma-mobile](https://invent.kde.org/plasma/plasma-mobile) as its upstream base.
The upstream phone UI remains intact; convergence-specific behaviour is added on top.
### What convergence mode changes
@ -43,6 +43,10 @@ cmake --build build
cmake --install build
```
Compatibility-sensitive identifiers such as `org.kde.plasma.mobileshell`
are intentionally preserved in the runtime and build instructions. They are
part of the current compatibility boundary, not the public product name.
### Disclaimer
SHIFT is an independent project based on KDE Plasma Mobile.
@ -61,7 +65,6 @@ SHIFT is not intended as a direct contribution to KDE Plasma Mobile.
However, if parts of this project are considered useful, contributions or ideas may be proposed upstream in a collaborative manner.
See [pm_README.md](pm_README.md) for the original Plasma Mobile README.
---

View file

@ -5,86 +5,6 @@
Exec=@CMAKE_INSTALL_FULL_LIBEXECDIR@/plasma-dbus-run-session-if-needed @CMAKE_INSTALL_FULL_LIBEXECDIR@/startplasmamobile-dev.sh
Type=Application
DesktopNames=KDE
Name=Plasma Mobile (Development)
Name[ar]=بلازما الجوال (التطوير)
Name[az]=Plasma Mobil (Tərtibat)
Name[ca]=Plasma Mobile (Desenvolupament)
Name[ca@valencia]=Plasma Mobile (desenvolupament)
Name[cs]=Plasma Mobile (Vývojová)
Name[de]=Plasma Mobile (Entwicklung)
Name[en_GB]=Plasma Mobile (Development)
Name[eo]=Plasma Poŝtelefono (Evoluo)
Name[es]=Plasma Mobile (desarrollo)
Name[eu]=Plasma Mugikorra (Garapena)
Name[fi]=Plasma Mobile (kehitys)
Name[fr]=Plasma Mobile (Développement)
Name[gl]=Plasma Mobile (desenvolvemento)
Name[he]=פלזמה לניידים (פיתוח)
Name[hu]=Plasma Mobile (fejlesztői)
Name[ia]=Plasma Mobile (Disveloppamento)
Name[is]=Plasma Mobile (þróunarútgáfa)
Name[it]=Plasma Mobile (sviluppo)
Name[ka]=Plasma Mobile (ბეტა)
Name[ko]=Plasma 모바일(개발)
Name[lv]=Plasma Mobile (izstrādē)
Name[nl]=Plasma Mobile (ontwikkeling)
Name[nn]=Plasma Mobile (utvikling)
Name[pa]= ਈਲ (ਵਿਕਾਸ)
Name[pl]=Przenośna Plazma (Rozwój)
Name[pt]=Plasma Mobile (Desenvolvimento)
Name[pt_BR]=Plasma Mobile (desenvolvimento)
Name[ru]=Plasma Mobile (разработка)
Name[sa]= ईल (विकास)
Name[sk]=Plasma Mobile (Vývoj)
Name[sl]=Plasma Mobile (Razvoj)
Name[sv]=Plasma mobil (utvecklingsversion)
Name[ta]=ி ி (ி)
Name[tr]=Plasma Cep (Geliştirme)
Name[uk]=Мобільна Плазма (версія у розробці)
Name[zh_CN]=Plasma Mobile (开发)
Name[zh_TW]=Plasma
Comment=Plasma Mobile by KDE
Comment[ar]=بلازما الجوال من كيدي
Comment[az]=KDE Plasma Mobil
Comment[ca]=Plasma Mobile, creat per la comunitat KDE
Comment[ca@valencia]=Plasma Mobile, creat per la comunitat KDE
Comment[cs]=Plasma Mobile od KDE
Comment[da]=Plasma Mobile fra KDE
Comment[de]=Plasma Mobile von KDE
Comment[en_GB]=Plasma Mobile by KDE
Comment[eo]=Plasma Mobile de KDE
Comment[es]=Plasma Mobile creado por KDE
Comment[et]=KDE Plasma Mobile
Comment[eu]=Plasma Mugikorra KDEk egina
Comment[fi]=KDE:n Plasma Mobile
Comment[fr]=Plasma Mobile par KDE
Comment[gl]=Plasma Mobile de KDE.
Comment[he]=פלזמה לניידים מבית KDE
Comment[hi]=
Comment[hu]=Plasma Mobile a KDE-től
Comment[ia]=Plasma Mobile per KDE
Comment[id]=Plasma Mobile oleh KDE
Comment[is]=Plasma Mobile frá KDE
Comment[it]=Plasma Mobile creato da KDE
Comment[ka]= Plasma, KDE-
Comment[ko]=KDE Plasma
Comment[lt]=Plasma mobilioji sąsaja pagal KDE
Comment[lv]=KDE Plasma Mobile
Comment[nl]=Plasma Mobile door KDE
Comment[nn]=Plasma Mobile frå KDE
Comment[pa]=KDE
Comment[pl]=Plazma Mobile stworzona przez KDE
Comment[pt]=Plasma Mobile do KDE
Comment[pt_BR]=Plasma Mobile do KDE
Comment[ro]=Plasma Mobile, de către KDE
Comment[ru]=KDE Plasma Mobile
Comment[sa]=
Comment[sk]=Plasma Mobile od KDE
Comment[sl]=Plasma Mobile od KDE
Comment[sv]=Plasma mobil av KDE
Comment[ta]=... ி ி
Comment[tr]=KDE tarafından yapılan Plasma Cep
Comment[uk]=Мобільна Плазма від KDE
Comment[zh_CN]=KDE Plasma Mobile
Comment[zh_TW]= KDE Plasma
Name=SHIFT (Development)
Comment=Convergent SHIFT shell session with development DBus setup
X-KDE-PluginInfo-Version=${PROJECT_VERSION}

View file

@ -6,92 +6,6 @@ Exec=@CMAKE_INSTALL_FULL_LIBEXECDIR@/plasma-dbus-run-session-if-needed ${CMAKE_I
TryExec=${CMAKE_INSTALL_FULL_BINDIR}/startplasmamobile
Type=Application
DesktopNames=KDE
Name=Plasma Mobile
Name[ar]=بلازما الجوال
Name[az]=Plasma Mobil
Name[ca]=Plasma Mobile
Name[ca@valencia]=Plasma Mobile
Name[cs]=Plasma Mobile
Name[da]=Plasma Mobile
Name[de]=Plasma Mobile
Name[en_GB]=Plasma Mobile
Name[eo]=Plasma Poŝtelefono
Name[es]=Plasma Mobile
Name[et]=Plasma Mobile
Name[eu]=Plasma Mugikorra
Name[fi]=Plasma Mobile
Name[fr]=Plasma Mobile
Name[gl]=Plasma Mobile
Name[he]=פלזמה לניידים
Name[hi]=
Name[hu]=Plasma Mobile
Name[ia]=Plasma Mobile
Name[id]=Plasma Mobile
Name[is]=Plasma Mobile
Name[it]=Plasma Mobile
Name[ka]=Plasma Mobile
Name[ko]=Plasma
Name[lt]=Plasma mobilioji sąsaja
Name[lv]=Plasma Mobile
Name[nl]=Plasma Mobile
Name[nn]=Plasma Mobile
Name[pa]=
Name[pl]=Przenośna Plazma
Name[pt]=Plasma Mobile
Name[pt_BR]=Plasma Mobile
Name[ro]=Plasma Mobile
Name[ru]=Plasma Mobile
Name[sa]=
Name[sk]=Plasma Mobile
Name[sl]=Plasma Mobile
Name[sv]=Plasma mobil
Name[ta]=ி ி
Name[tr]=Plasma Cep
Name[uk]=Мобільна Плазма
Name[zh_CN]=Plasma Mobile
Name[zh_TW]=Plasma
Comment=Plasma Mobile by KDE
Comment[ar]=بلازما الجوال من كيدي
Comment[az]=KDE Plasma Mobil
Comment[ca]=Plasma Mobile, creat per la comunitat KDE
Comment[ca@valencia]=Plasma Mobile, creat per la comunitat KDE
Comment[cs]=Plasma Mobile od KDE
Comment[da]=Plasma Mobile fra KDE
Comment[de]=Plasma Mobile von KDE
Comment[en_GB]=Plasma Mobile by KDE
Comment[eo]=Plasma Mobile de KDE
Comment[es]=Plasma Mobile creado por KDE
Comment[et]=KDE Plasma Mobile
Comment[eu]=Plasma Mugikorra KDEk egina
Comment[fi]=KDE:n Plasma Mobile
Comment[fr]=Plasma Mobile par KDE
Comment[gl]=Plasma Mobile de KDE.
Comment[he]=פלזמה לניידים מבית KDE
Comment[hi]=
Comment[hu]=Plasma Mobile a KDE-től
Comment[ia]=Plasma Mobile per KDE
Comment[id]=Plasma Mobile oleh KDE
Comment[is]=Plasma Mobile frá KDE
Comment[it]=Plasma Mobile creato da KDE
Comment[ka]= Plasma, KDE-
Comment[ko]=KDE Plasma
Comment[lt]=Plasma mobilioji sąsaja pagal KDE
Comment[lv]=KDE Plasma Mobile
Comment[nl]=Plasma Mobile door KDE
Comment[nn]=Plasma Mobile frå KDE
Comment[pa]=KDE
Comment[pl]=Plazma Mobile stworzona przez KDE
Comment[pt]=Plasma Mobile do KDE
Comment[pt_BR]=Plasma Mobile do KDE
Comment[ro]=Plasma Mobile, de către KDE
Comment[ru]=KDE Plasma Mobile
Comment[sa]=
Comment[sk]=Plasma Mobile od KDE
Comment[sl]=Plasma Mobile od KDE
Comment[sv]=Plasma mobil av KDE
Comment[ta]=... ி ி
Comment[tr]=KDE tarafından yapılan Plasma Cep
Comment[uk]=Мобільна Плазма від KDE
Comment[zh_CN]=KDE Plasma Mobile
Comment[zh_TW]= KDE Plasma
Name=SHIFT
Comment=Convergent SHIFT shell session
X-KDE-PluginInfo-Version=${PROJECT_VERSION}

View file

@ -60,6 +60,8 @@ Item {
Layout.preferredWidth: Kirigami.Units.iconSizes.smallMedium
Layout.preferredHeight: width
source: "low-brightness"
isMask: true
color: Kirigami.Theme.textColor
}
PC3.Slider {
@ -105,6 +107,8 @@ Item {
Layout.preferredWidth: Kirigami.Units.iconSizes.smallMedium
Layout.preferredHeight: width
source: "high-brightness"
isMask: true
color: Kirigami.Theme.textColor
}
}
}

View file

@ -90,6 +90,10 @@ QuickSettingsDelegate {
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: width
source: root.icon
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
}
ColumnLayout {

View file

@ -86,6 +86,10 @@ QuickSettingsDelegate {
implicitWidth: Kirigami.Units.iconSizes.smallMedium
implicitHeight: width
source: root.icon
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
}
}
}

View file

@ -142,6 +142,10 @@ Item {
implicitWidth: Kirigami.Units.iconSizes.smallMedium
implicitHeight: implicitWidth
source: root.icon
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
}
// Indicator bar
@ -235,6 +239,10 @@ Item {
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: implicitWidth
source: "go-next-symbolic"
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
opacity: 0.5
}
}

View file

@ -64,6 +64,10 @@ QQC2.Popup {
implicitWidth: Kirigami.Units.iconSizes.smallMedium
implicitHeight: implicitWidth
source: "preferences-desktop-notification-symbolic"
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
}
ColumnLayout {
@ -167,6 +171,10 @@ QQC2.Popup {
implicitWidth: Kirigami.Units.iconSizes.smallMedium
implicitHeight: implicitWidth
source: model.iconName ? model.iconName : (model.icon ? model.icon : "")
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
}
ColumnLayout {
@ -194,6 +202,10 @@ QQC2.Popup {
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: implicitWidth
source: "go-next-symbolic"
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
opacity: 0.45
}
}

View file

@ -135,6 +135,8 @@ Controls.Drawer {
width: Kirigami.Units.iconSizes.large
height: width
source: "view-preview"
isMask: true
color: Kirigami.Theme.textColor
visible: !walliePreview.visible
}

View file

@ -146,6 +146,8 @@ Window {
transformOrigin: Item.Center
rotation: root.angle
source: root.iconSource
isMask: true
color: Kirigami.Theme.textColor
}
}

View file

@ -195,6 +195,8 @@ Window {
Layout.preferredWidth: Kirigami.Units.iconSizes.smallMedium
Layout.preferredHeight: Kirigami.Units.iconSizes.smallMedium
source: "settings-configure"
isMask: true
color: Kirigami.Theme.textColor
}
PlasmaComponents.Label {
text: i18n("Open audio settings")

View file

@ -227,6 +227,10 @@ Item {
source: 'arrow-down'
implicitHeight: Kirigami.Units.iconSizes.small
implicitWidth: Kirigami.Units.iconSizes.small
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom

View file

@ -30,6 +30,10 @@ Item {
width: Math.min(parent.width, parent.height)
height: width
anchors.centerIn: parent
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
}
Controls.ToolTip.text: model.toolTipTitle ? model.toolTipTitle : (model.title ? model.title : "")

View file

@ -13,7 +13,6 @@ import org.kde.kirigami as Kirigami
import org.kde.kitemmodels
import org.kde.plasma.components 3.0 as PlasmaComponents
import org.kde.plasma.workspace.components 2.0 as PW
import org.kde.plasma.private.mobileshell.shellsettingsplugin as ShellSettings
import org.kde.plasma.private.mobileshell as MobileShell
import org.kde.plasma.private.battery // needed for charging state
@ -21,6 +20,35 @@ import org.kde.plasma.private.battery // needed for charging state
RowLayout {
property real textPixelSize: Kirigami.Units.gridUnit * 0.6
function batteryIconName(percent, charging) {
let name;
if (percent >= 95) {
name = "battery-100";
} else if (percent >= 85) {
name = "battery-090";
} else if (percent >= 75) {
name = "battery-080";
} else if (percent >= 65) {
name = "battery-070";
} else if (percent >= 55) {
name = "battery-060";
} else if (percent >= 45) {
name = "battery-050";
} else if (percent >= 35) {
name = "battery-040";
} else if (percent >= 25) {
name = "battery-030";
} else if (percent >= 15) {
name = "battery-020";
} else if (percent > 5) {
name = "battery-010";
} else {
name = "battery-000";
}
return charging ? name + "-charging" : name;
}
visible: MobileShell.BatteryInfo.isVisible
ListView {
@ -51,16 +79,17 @@ RowLayout {
height: batteryRepeater.height
PW.BatteryIcon {
Kirigami.Icon {
id: battery
Layout.alignment: Qt.AlignVCenter
Layout.fillHeight: true
width: batteryLabel.height
hasBattery: PluggedIn
percent: Percent
pluggedIn: ChargeState === BatteryControlModel.Charging
source: PluggedIn ? batteryIconName(Percent, ChargeState === BatteryControlModel.Charging) : "battery-missing"
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
}
PlasmaComponents.Label {

View file

@ -16,6 +16,10 @@ Kirigami.Icon {
id: connectionIcon
source: MobileShell.BluetoothInfo.icon
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
visible: MobileShell.BluetoothInfo.isVisible
}

View file

@ -33,6 +33,10 @@ Item {
anchors.fill: parent
visible: !connectingIndicator.visible
source: connectionIcon.icon
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
}
// Connecting indicator

View file

@ -33,6 +33,10 @@ Item {
height: parent.height
source: MobileShell.SignalStrengthInfo.icon
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
// don't show mobile indicator icon if the networkmanager one is already showing
visible: (!isInternetIndicatorMobileData || wirelessStatus.hotspotSSID.length !== 0) && MobileShell.SignalStrengthInfo.showIndicator

View file

@ -18,6 +18,10 @@ Kirigami.Icon {
id: paIcon
source: MobileShell.AudioInfo.icon
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
isMask: true
color: Kirigami.Theme.textColor
visible: MobileShell.AudioInfo.isVisible
}

View file

@ -5,7 +5,7 @@
# Folio Homescreen
This is the paged homescreen for Plasma Mobile.
This is the paged homescreen for SHIFT.
### How it works

View file

@ -118,7 +118,7 @@
"Name[uk]": "Фоліо",
"Name[zh_CN]": "Folio",
"Name[zh_TW]": "Folio",
"Website": "https://plasma-mobile.org"
"Website": "https://invent.kde.org/marcoa/shift-shell"
},
"X-Plasma-API-Minimum-Version": "6.0",
"X-Plasma-ContainmentType": "Desktop",

View file

@ -50,11 +50,13 @@ Item {
anchors.rightMargin: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing
anchors.fill: parent
Kirigami.SearchField {
QQC2.TextField {
id: searchField
onTextChanged: folio.ApplicationListSearchModel.setFilterFixedString(text)
Layout.maximumWidth: Kirigami.Units.gridUnit * 30
Layout.alignment: Qt.AlignHCenter
leftPadding: Kirigami.Units.iconSizes.small + Kirigami.Units.largeSpacing * 2
rightPadding: clearSearchArea.visible ? clearSearchArea.width + Kirigami.Units.largeSpacing : Kirigami.Units.largeSpacing
background: Rectangle {
radius: Kirigami.Units.cornerRadius
@ -76,6 +78,42 @@ Item {
font.weight: Font.Bold
Kirigami.Icon {
anchors.left: parent.left
anchors.leftMargin: Kirigami.Units.largeSpacing
anchors.verticalCenter: parent.verticalCenter
width: Kirigami.Units.iconSizes.small
height: width
source: "search"
isMask: true
color: Kirigami.Theme.textColor
opacity: 0.65
}
MouseArea {
id: clearSearchArea
anchors.right: parent.right
anchors.rightMargin: Kirigami.Units.smallSpacing
anchors.verticalCenter: parent.verticalCenter
width: Kirigami.Units.iconSizes.smallMedium
height: width
visible: searchField.text.length > 0
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: searchField.clear()
Kirigami.Icon {
anchors.centerIn: parent
width: Kirigami.Units.iconSizes.small
height: width
source: "window-close-symbolic"
isMask: true
color: Kirigami.Theme.textColor
opacity: clearSearchArea.containsMouse ? 0.9 : 0.65
}
}
Connections {
target: folio.HomeScreenState
function onViewStateChanged(): void {

View file

@ -157,6 +157,8 @@ Rectangle {
height: width
source: tile.catIcon
active: tileArea.containsMouse || tile.isActive
isMask: true
color: tile.isActive ? Kirigami.Theme.highlightColor : Kirigami.Theme.textColor
}
PlasmaComponents.Label {

View file

@ -330,6 +330,8 @@ MouseArea {
height: width
source: "start-here-shift"
active: homeMouseArea.containsMouse
isMask: true
color: Kirigami.Theme.textColor
}
MouseArea {
@ -400,6 +402,8 @@ MouseArea {
height: width
source: "user-desktop"
active: desktopMouseArea.containsMouse || WindowPlugin.WindowUtil.isShowingDesktop
isMask: true
color: Kirigami.Theme.textColor
}
PC3.ToolTip {
@ -508,6 +512,8 @@ MouseArea {
height: width
source: "activities"
active: overviewMouseArea.containsMouse
isMask: true
color: Kirigami.Theme.textColor
}
MouseArea {
@ -574,6 +580,8 @@ MouseArea {
height: width
source: "search"
active: searchMouseArea.containsMouse
isMask: true
color: Kirigami.Theme.textColor
}
PC3.ToolTip {
@ -899,6 +907,8 @@ MouseArea {
height: width
source: trashFilesModel.count > 0 ? "user-trash-full" : "user-trash"
active: trashMouseArea.containsMouse
isMask: true
color: Kirigami.Theme.textColor
}
PC3.ToolTip {
@ -1595,7 +1605,16 @@ MouseArea {
Kirigami.Icon {
anchors.fill: parent
source: "window-close"
source: "window-close-symbolic"
isMask: true
color: "white"
}
Rectangle {
anchors.fill: parent
radius: width / 2
color: Qt.rgba(0, 0, 0, 0.55)
z: -1
}
}
}

View file

@ -513,6 +513,8 @@ Item {
source: 'arrow-up'
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
isMask: true
color: Kirigami.Theme.textColor
implicitHeight: Kirigami.Units.iconSizes.small
implicitWidth: Kirigami.Units.iconSizes.small

View file

@ -53,6 +53,8 @@ MouseArea {
height: width
source: button.iconName
active: button.containsMouse || button.checked
isMask: true
color: Kirigami.Theme.textColor
}
PC3.ToolTip {

View file

@ -599,6 +599,8 @@ Window {
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: Kirigami.Units.iconSizes.small
source: "system-run"
isMask: true
color: Kirigami.Theme.textColor
}
PC3.Label {
@ -1022,6 +1024,8 @@ Window {
source: "starred"
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: Kirigami.Units.iconSizes.small
isMask: true
color: Kirigami.Theme.textColor
}
}
}
@ -1036,6 +1040,8 @@ Window {
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: Kirigami.Units.iconSizes.small
source: "input-gaming"
isMask: true
color: Kirigami.Theme.textColor
}
Repeater {

View file

@ -201,6 +201,8 @@ Window {
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: Kirigami.Units.iconSizes.small
Layout.alignment: Qt.AlignVCenter
isMask: true
color: "white"
}
QQC2.Label {

View file

@ -319,6 +319,8 @@ Item {
implicitWidth: Kirigami.Units.iconSizes.smallMedium
implicitHeight: Kirigami.Units.iconSizes.smallMedium
source: "low-brightness"
isMask: true
color: Kirigami.Theme.textColor
}
PC3.Slider {
@ -380,6 +382,8 @@ Item {
implicitWidth: Kirigami.Units.iconSizes.smallMedium
implicitHeight: Kirigami.Units.iconSizes.smallMedium
source: "high-brightness"
isMask: true
color: Kirigami.Theme.textColor
}
}
}
@ -403,6 +407,8 @@ Item {
implicitWidth: Kirigami.Units.iconSizes.smallMedium
implicitHeight: Kirigami.Units.iconSizes.smallMedium
source: "audio-volume-low"
isMask: true
color: Kirigami.Theme.textColor
}
PC3.Slider {
@ -462,6 +468,8 @@ Item {
implicitWidth: Kirigami.Units.iconSizes.smallMedium
implicitHeight: Kirigami.Units.iconSizes.smallMedium
source: "audio-volume-high"
isMask: true
color: Kirigami.Theme.textColor
}
}
}
@ -555,6 +563,8 @@ Item {
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: Kirigami.Units.iconSizes.small
source: "games-achievements"
isMask: true
color: Kirigami.Theme.textColor
}
PC3.Label {
text: GamingShell.GameModeControl.active
@ -659,6 +669,8 @@ Item {
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: Kirigami.Units.iconSizes.small
source: "input-gaming"
isMask: true
color: Kirigami.Theme.textColor
}
PC3.Label {

View file

@ -583,6 +583,8 @@ ContainmentItem {
height: width
source: "window-close-symbolic"
active: closeArea.containsMouse
isMask: true
color: Kirigami.Theme.textColor
}
PlasmaComponents.ToolTip {
text: i18n("Close")
@ -633,6 +635,8 @@ ContainmentItem {
height: width
source: "system-lock-screen"
active: lockArea.containsMouse
isMask: true
color: Kirigami.Theme.textColor
}
PlasmaComponents.ToolTip {
text: i18n("Lock Screen")
@ -665,6 +669,8 @@ ContainmentItem {
height: width
source: "system-reboot"
active: rebootArea.containsMouse
isMask: true
color: Kirigami.Theme.textColor
}
PlasmaComponents.ToolTip {
text: i18n("Restart")
@ -697,6 +703,8 @@ ContainmentItem {
height: width
source: "system-shutdown"
active: shutdownArea.containsMouse
isMask: true
color: Kirigami.Theme.textColor
}
PlasmaComponents.ToolTip {
text: i18n("Shut Down")

View file

@ -27,6 +27,8 @@ PC3.ToolButton {
implicitHeight: Kirigami.Units.iconSizes.smallMedium
Layout.fillHeight: true
source: iconName
isMask: true
color: Kirigami.Theme.textColor
}
QQC2.Label {

View file

@ -119,7 +119,7 @@
"Name[uk]": "Альціон",
"Name[zh_CN]": "Halcyon",
"Name[zh_TW]": "Halcyon",
"Website": "https://plasma-mobile.org"
"Website": "https://invent.kde.org/marcoa/shift-shell"
},
"X-Plasma-API-Minimum-Version": "6.0",
"X-Plasma-ContainmentType": "Desktop",

View file

@ -44,43 +44,7 @@
}
],
"Category": "Containments",
"Description": "Top panel for Plasma Mobile",
"Description[ar]": "اللوحة العلوية لبلازما الجوال",
"Description[ca@valencia]": "Quadro superior per a Plasma Mobile",
"Description[ca]": "Plafó superior per al Plasma Mobile",
"Description[cs]": "Horní panel pro Plasma Mobile",
"Description[de]": "Obere Kontrollleiste für Plasma Mobile",
"Description[en_GB]": "Top panel for Plasma Mobile",
"Description[eo]": "Supra panelo por Plasma Mobile",
"Description[es]": "Panel superior para Plasma Mobile",
"Description[eu]": "Plasma Mugikorrerako goiko panela",
"Description[fi]": "Yläpaneeli Plasma Mobileen",
"Description[fr]": "Panneau supérieur pour Plasma Mobile",
"Description[gl]": "Panel superior para Plasma Mobile.",
"Description[he]": "לוח עליון לפלזמה לניידים",
"Description[hu]": "Felső panel a Plasma Mobile-hoz",
"Description[ia]": "Pannello in alto per Plasma Mobile",
"Description[is]": "Toppspjald fyrir Plasma Mobile",
"Description[it]": "Pannello superiore per Plasma Mobile",
"Description[ka]": "Plasma Mobile-ის ზედა პანელი",
"Description[ko]": "Plasma 모바일의 최상위 패널",
"Description[lv]": "„Plasma Mobile“ augšējais panelis",
"Description[nl]": "Hoofdpaneel voor Plasma Mobile",
"Description[nn]": "Toppanel for Plasma Mobile",
"Description[pa]": "ਪਲਾਜ਼ਮਾ ਮੋਬਾਈਲ ਲਈ ਸਿਖਰਲਾ ਪੈਨਲ",
"Description[pl]": "Górny panel dla Przenośnej Plazmy",
"Description[pt]": "Painel de topo do Plasma Mobile",
"Description[pt_BR]": "Painel superior do Plasma Mobile",
"Description[ru]": "Верхняя панель Plasma Mobile",
"Description[sa]": "प्लाज्मा मोबाईलस्य कृते शीर्षपटलम्",
"Description[sk]": "Horný panel pre Plasma Mobile",
"Description[sl]": "Vrhnja plošča za Plasma Mobile",
"Description[sv]": "Överpanel för Plasma mobil",
"Description[ta]": "பிளாஸ்மா கைபேசிக்கான மேலோரப் பலகை",
"Description[tr]": "Plasma Cep için üst panel",
"Description[uk]": "Верхня панель для мобільної Плазми",
"Description[zh_CN]": "Plasma Mobile 的顶部面板",
"Description[zh_TW]": "Plasma 行動的頂部面板",
"Description": "Top panel for SHIFT",
"License": "GPLv2+",
"Name": "Phone Panel",
"Name[ar]": "لوحة الهاتف",
@ -126,7 +90,7 @@
"Name[uk]": "Панель телефону",
"Name[zh_CN]": "手机面板",
"Name[zh_TW]": "手機面板",
"Website": "https://plasma-mobile.org"
"Website": "https://invent.kde.org/marcoa/shift-shell"
},
"X-Plasma-API-Minimum-Version": "6.0",
"X-Plasma-ContainmentType": "Panel"

View file

@ -44,43 +44,7 @@
}
],
"Category": "Containments",
"Description": "Navigation panel for Plasma Mobile",
"Description[ar]": "لوحة التنقل لبلازما الجوال",
"Description[ca@valencia]": "Quadro de navegació per a Plasma Mobile",
"Description[ca]": "Plafó de navegació per al Plasma Mobile",
"Description[cs]": "Navigační panel pro Plasma Mobile",
"Description[de]": "Navigationsleiste für Plasma Mobile",
"Description[en_GB]": "Navigation panel for Plasma Mobile",
"Description[eo]": "Navigada panelo por Plasma Mobile",
"Description[es]": "Panel de navegación para Plasma Mobile",
"Description[eu]": "Plasma Mugikorrerako nabigazio-panela",
"Description[fi]": "Navigointipaneeli Plasma Mobilelle",
"Description[fr]": "Panneau de navigation pour Plasma Mobile",
"Description[gl]": "Panel de navegación para Plasma Mobile.",
"Description[he]": "לוח ניווט לפלזמה לניידים",
"Description[hu]": "Navigációs panel a Plasma Mobile-hoz",
"Description[ia]": "Pannello de Navigation per Plasma Mobile",
"Description[is]": "Flakkspjald fyrir Plasma Mobile",
"Description[it]": "Pannello di navigazione per Plasma Mobile",
"Description[ka]": "Plasma Mobile-ის ნავიგაციის პანელი",
"Description[ko]": "Plasma 모바일의 탐색 패널",
"Description[lv]": "„Plasma Mobile“ navigācijas panelis",
"Description[nl]": "Navigatiepaneel voor Plasma Mobile",
"Description[nn]": "Navigasjonspanel for Plasma Mobile",
"Description[pa]": "ਪਲਾਜ਼ਮਾ ਮੋਬਾਈਲ ਲਈ ਨੇਵੀਗੇਸ਼ਨ ਪੈਨਲ",
"Description[pl]": "Pasek poruszania się dla Przenośnej Plazmy",
"Description[pt]": "Painel de navegação do Plasma Mobile",
"Description[pt_BR]": "Painel de navegação do Plasma Mobile",
"Description[ru]": "Панель навигации Plasma Mobile",
"Description[sa]": "प्लाज्मा मोबाईलस्य कृते नेविगेशन पैनल",
"Description[sk]": "Navigačný panel pre Plasma Mobile",
"Description[sl]": "Krmilna plošča za Plasma Mobile",
"Description[sv]": "Navigeringspanel för Plasma mobil",
"Description[ta]": "பிளாஸ்மா கைபேசிக்கான உலாவல் பலகை",
"Description[tr]": "Plasma Cep için dolaşım paneli",
"Description[uk]": "Панель навігації для мобільної Плазми",
"Description[zh_CN]": "Plasma 移动版导航面板",
"Description[zh_TW]": "Plasma 行動的導覽面板",
"Description": "Navigation panel for SHIFT",
"License": "GPLv2+",
"Name": "Phone Task panel",
"Name[ar]": "لوحة مهمة الهاتف",
@ -126,7 +90,7 @@
"Name[uk]": "Панель завдань телефону",
"Name[zh_CN]": "手机任务面板",
"Name[zh_TW]": "手機工作面板",
"Website": "https://plasma-mobile.org"
"Website": "https://invent.kde.org/marcoa/shift-shell"
},
"X-Plasma-API-Minimum-Version": "6.0",
"X-Plasma-ContainmentType": "Panel"

View file

@ -0,0 +1,12 @@
# This is the official list of project authors for copyright purposes. The first name in the list (if there are several authors), will appear as "Principal design" in the "about" section of the font specimen on Google Fonts.
# This file is distinct from the CONTRIBUTORS.txt file.
# See the latter for an explanation.
#
# Names should be added to this file as:
# Name or Organization <email address>
Elliott Scott
Megan Eiswerth
Linus Boman
Theodore Petrosky
Letters from Sweden

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2020-2024 The Atkinson Hyperlegible Project Authors
SPDX-License-Identifier: OFL-1.1

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2020-2024 The Atkinson Hyperlegible Project Authors
SPDX-License-Identifier: OFL-1.1

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2020-2024 The Atkinson Hyperlegible Project Authors
SPDX-License-Identifier: OFL-1.1

View file

@ -0,0 +1,93 @@
Copyright 2020-2024 The Atkinson Hyperlegible Mono Project Authors (https://github.com/googlefonts/atkinson-hyperlegible-next-mono)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2020-2024 The Atkinson Hyperlegible Project Authors
SPDX-License-Identifier: OFL-1.1

View file

@ -0,0 +1,12 @@
# This is the official list of project authors for copyright purposes. The first name in the list (if there are several authors), will appear as "Principal design" in the "about" section of the font specimen on Google Fonts.
# This file is distinct from the CONTRIBUTORS.txt file.
# See the latter for an explanation.
#
# Names should be added to this file as:
# Name or Organization <email address>
Elliott Scott
Megan Eiswerth
Linus Boman
Theodore Petrosky
Letters from Sweden

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2020-2024 The Atkinson Hyperlegible Project Authors
SPDX-License-Identifier: OFL-1.1

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2020-2024 The Atkinson Hyperlegible Project Authors
SPDX-License-Identifier: OFL-1.1

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2020-2024 The Atkinson Hyperlegible Project Authors
SPDX-License-Identifier: OFL-1.1

View file

@ -0,0 +1,93 @@
Copyright 2020-2024 The Atkinson Hyperlegible Next Project Authors (https://github.com/googlefonts/atkinson-hyperlegible-next)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2020-2024 The Atkinson Hyperlegible Project Authors
SPDX-License-Identifier: OFL-1.1

22
fonts/CMakeLists.txt Normal file
View file

@ -0,0 +1,22 @@
# SPDX-FileCopyrightText: 2026 SHIFT Contributors
# SPDX-License-Identifier: GPL-2.0-or-later
# Install bundled font files (if any are present) into the system font dir
# so the shell session can render the configured default font even on
# distributions that do not package it.
#
# Drop OFL-licensed font files into fonts/AtkinsonHyperlegibleNext/ and
# fonts/AtkinsonHyperlegibleMono/ alongside their SPDX .license sidecars.
file(GLOB SHIFT_FONT_FILES
LIST_DIRECTORIES false
"${CMAKE_CURRENT_SOURCE_DIR}/*/*.ttf"
"${CMAKE_CURRENT_SOURCE_DIR}/*/*.otf"
)
if(SHIFT_FONT_FILES)
install(
FILES ${SHIFT_FONT_FILES}
DESTINATION ${KDE_INSTALL_DATADIR}/fonts/shift
)
endif()

36
fonts/README.md Normal file
View file

@ -0,0 +1,36 @@
<!--
SPDX-FileCopyrightText: 2026 SHIFT Contributors
SPDX-License-Identifier: GPL-2.0-or-later
-->
# Shift bundled fonts
Drop the Atkinson Hyperlegible Next and Atkinson Hyperlegible Mono font files
here, organised one family per subdirectory:
```
fonts/
AtkinsonHyperlegibleNext/
AtkinsonHyperlegibleNext-*.ttf
AtkinsonHyperlegibleNext-*.ttf.license
AtkinsonHyperlegibleMono/
AtkinsonHyperlegibleMono-*.ttf
AtkinsonHyperlegibleMono-*.ttf.license
```
Sources:
- https://www.brailleinstitute.org/freefont (Atkinson Hyperlegible Next + Mono)
License: SIL Open Font License 1.1. Add a `.license` sidecar next to each
binary file with:
```
SPDX-FileCopyrightText: 2024 Braille Institute of America, Inc.
SPDX-License-Identifier: OFL-1.1
```
The build globs every `*.ttf`/`*.otf` under these subdirectories at configure
time, so adding files later does not require editing CMake. If no fonts are
present, the install step is skipped silently — `lookandfeel/contents/defaults`
still requests the family, and the system falls back to whatever fontconfig
resolves "Atkinson Hyperlegible Next" to (e.g. a distro package).

View file

@ -8,3 +8,9 @@ ecm_install_icons(
DESTINATION ${KDE_INSTALL_ICONDIR}
THEME hicolor
)
install(
DIRECTORY org.shift.icons
DESTINATION ${KDE_INSTALL_ICONDIR}
PATTERN README.md EXCLUDE
)

View file

@ -0,0 +1,37 @@
# Shift Icon Theme
`org.shift.icons` is the icon theme selected by `lookandfeel/contents/defaults`.
It inherits only `hicolor`, so shell-owned glyphs used by the Shift UI need to exist in this theme or in the local hicolor source icon set.
The SVG glyphs are adapted from Phosphor Icons and licensed through the scoped REUSE metadata in `.reuse/dep5`.
Theme paths used here:
- `actions/symbolic/`: symbolic shell glyphs used by QML controls, status indicators, quick settings, window controls, and category icons.
- `places/symbolic/`: symbolic place glyphs used by the dock and shell surfaces.
- `apps/scalable/`: colored launcher icons for desktop-file app icon names that are part of the default Shift UI.
- `preferences/scalable/`: colored System Settings category and module icons for names that should not fall back to monochrome action glyphs.
Keep `preferences/scalable` before `actions/symbolic` in `index.theme`. System Settings looks up category and KCM module icons by name, and the icon theme specification searches theme directories in order. If symbolic action aliases come first, names such as `preferences-desktop-sound`, `preferences-system-time`, or `network-wireless-symbolic` resolve to dark monochrome SVGs instead of colored preference icons.
When a QML icon is owned by the shell, render it as a masked icon with an explicit theme color:
```qml
Kirigami.Icon {
source: "icon-name"
isMask: true
color: Kirigami.Theme.textColor
}
```
Use the same pattern for shell button properties such as `iconName` and `iconSource`. Do not force `isMask` for dynamic application icons from task, notification, applet, or launcher models; those can be colored app icons.
If a required icon name is only an alias for an existing glyph, keep it as a same-directory symbolic link, for example `rotation-allowed-symbolic.svg -> rotation-allowed.svg`.
Run the coverage guard after adding or renaming shell icon sources:
```sh
bash tests/check-shift-icon-theme.sh
```
The same check is registered with CTest as `shift-icon-theme-coverage`.
When Plasma packages are installed, the guard also scans their desktop metadata and QML icon fields so desktop shell, KCM, and applet icon names do not silently fall back to Breeze-only glyphs.

View file

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<circle cx="128" cy="44" r="16"/>
<path d="M72,88c18.67-8,37.33-12,56-12s37.33,4,56,12" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="128" y1="76" x2="128" y2="212" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="128" y1="120" x2="84" y2="212" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="128" y1="120" x2="172" y2="212" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 834 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<rect x="48" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="144" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="48" y="144" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="144" y="144" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 824 B

View file

@ -0,0 +1 @@
view-grid-symbolic.svg

View file

@ -0,0 +1 @@
view-grid-symbolic.svg

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<rect x="48" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="144" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="48" y="144" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="144" y="144" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 824 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<polyline points="64 88 16 128 64 168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="192 88 240 128 192 168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="160" y1="40" x2="96" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 641 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M48,216a24,24,0,0,1,24-24H208V32H72A24,24,0,0,0,48,56Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="48 216 48 224 192 224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 526 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<line x1="152" y1="104" x2="176" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="72" y1="104" x2="104" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="88" y1="88" x2="88" y2="120" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M105.91,152,63.8,199.8a28,28,0,0,1-47.37-24.66L32.79,91a52,52,0,0,1,51.1-43H172a52,52,0,1,1,0,104Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M150.09,152l42.11,47.8a28,28,0,0,0,47.37-24.66L223.21,91" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1,018 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M16,216H92a52,52,0,1,0-52-52C40,200,16,216,16,216Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M112.41,116.16C131.6,90.29,179.46,32,224,32c0,44.54-58.29,92.4-84.16,111.59" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M133,90.64a84.39,84.39,0,0,1,32.41,32.41" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 718 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,128c0,64-40,96-40,96s-40-32-40-96,40-96,40-96S168,64,168,128Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="37.46" y1="96" x2="218.54" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="37.46" y1="160" x2="218.54" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 822 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<circle cx="180" cy="164" r="28" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="52" cy="196" r="28" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="80 196 80 56 208 24 208 164" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 632 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M200,224H56a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h96l56,56V216A8,8,0,0,1,200,224Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="152 32 152 88 208 88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="136" x2="160" y2="136" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="168" x2="160" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 827 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<circle cx="128" cy="128" r="12"/><circle cx="196" cy="128" r="12"/><circle cx="60" cy="128" r="12"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 321 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<line x1="88" y1="32" x2="168" y2="32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M152,32V99.14l62.85,104.74A8,8,0,0,1,208,216H48a8,8,0,0,1-6.86-12.12L104,99.14V32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M71.63,153.08c13.23-2.48,32-1.41,56.37,10.92,32.25,16.33,54.75,12.91,67.5,7.65" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 740 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<circle cx="128" cy="128" r="40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M41.43,178.09A99.14,99.14,0,0,1,31.36,153.8l16.78-21a81.59,81.59,0,0,1,0-9.64l-16.77-21a99.43,99.43,0,0,1,10.05-24.3l26.71-3a81,81,0,0,1,6.81-6.81l3-26.7A99.14,99.14,0,0,1,102.2,31.36l21,16.78a81.59,81.59,0,0,1,9.64,0l21-16.77a99.43,99.43,0,0,1,24.3,10.05l3,26.71a81,81,0,0,1,6.81,6.81l26.7,3a99.14,99.14,0,0,1,10.07,24.29l-16.78,21a81.59,81.59,0,0,1,0,9.64l16.77,21a99.43,99.43,0,0,1-10,24.3l-26.71,3a81,81,0,0,1-6.81,6.81l-3,26.7a99.14,99.14,0,0,1-24.29,10.07l-21-16.78a81.59,81.59,0,0,1-9.64,0l-21,16.77a99.43,99.43,0,0,1-24.3-10l-3-26.71a81,81,0,0,1-6.81-6.81Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M104,126.94a64,64,0,0,1,80-90.29L144,80l5.66,26.34L176,112l43.35-40a64,64,0,0,1-90.29,80L73,217A24,24,0,0,1,39,183Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 446 B

View file

@ -0,0 +1 @@
arrow-down.svg

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<line x1="128" y1="40" x2="128" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="56 144 128 216 200 144" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 503 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<line x1="216" y1="128" x2="40" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="112 56 40 128 112 200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 502 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polyline points="144 56 216 128 144 200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 503 B

View file

@ -0,0 +1 @@
arrow-up.svg

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<line x1="128" y1="216" x2="128" y2="40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="56 112 128 40 200 112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 502 B

View file

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="88" y="24" width="80" height="128" rx="40"/>
<path d="M48 112a80 80 0 0 0 160 0"/>
<line x1="128" y1="192" x2="128" y2="232"/>
<line x1="88" y1="232" x2="168" y2="232"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 476 B

View file

@ -0,0 +1 @@
audio-volume-high.svg

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M80,168H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8H80l72-56V224Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="88" x2="80" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M192,106.85a32,32,0,0,1,0,42.3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M221.67,80a72,72,0,0,1,0,96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 804 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M80,168H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8H80l72-56V224Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="88" x2="80" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M192,106.85a32,32,0,0,1,0,42.3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 666 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M80,168H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8H80l72-56V224Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="88" x2="80" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M192,106.85a32,32,0,0,1,0,42.3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M221.67,80a72,72,0,0,1,0,96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 804 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M80,168H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8H80l72-56V224Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="240" y1="104" x2="192" y2="152" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="240" y1="152" x2="192" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="88" x2="80" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 809 B

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M80,168H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8H80l72-56V224Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="88" x2="80" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M192,106.85a32,32,0,0,1,0,42.3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M221.67,80a72,72,0,0,1,0,96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 804 B

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

View file

@ -0,0 +1 @@
battery.svg

Some files were not shown because too many files have changed in this diff Show more