Compare commits

...

12 commits

Author SHA1 Message Date
847e516fcf Add Shift global theme preview assets
Install dedicated preview, fullscreen, splash, and lockscreen images (with SPDX sidecars) so the Global Theme card and look-and-feel previews represent Shift visuals.
2026-05-31 16:33:25 +02:00
130801a2d4 Refresh symbolic icon set and settings aliases
Replace outdated symbolic geometries with the current curated set and update preference wrappers to match. Add missing alias icons used by System Settings actions (draw-highlight, view-hidden, help-contents, color-picker).
2026-05-31 16:33:19 +02:00
37fa852960 Fix notification drawer text contrast
Force the notifications widget to use the Window color set instead of inheriting parent theme roles, preventing unreadable light-on-light content in the action drawer.
2026-05-31 16:33:12 +02:00
7115cb882d Replace outdated README videos with updated screenshots
Remove old DesktopDemo webm assets and their license sidecars from screenshots. Add SPDX license metadata for SHIFT-main.png and keep README aligned with static screenshot-based docs.
2026-05-31 16:26:37 +02:00
43e1477a14 Guard optional services and trim noisy logs
Skip brightness DBus calls when the service is unavailable and stop\nemitting expected-missing-service debug warnings in optional plugin\npaths.
2026-05-31 14:06:34 +02:00
dd3e366e17 Harden quick settings and volume OSD models
Clamp quick settings page math to valid bounds and guard volume OSD\ncontrols when PulseAudio objects are absent. Remove unused delegate\nrequired properties tied to enabled state.
2026-05-31 14:06:23 +02:00
9a3db42f74 Align Folio surfaces with Shift theme
Use Window color roles for app drawer and overlay scrims, and update\ndock keyboard navigation focus paths. Extend folio and convergence\nregression checks to lock in the new theme and navigation behavior.
2026-05-31 14:06:15 +02:00
08264e5759 Add wallpaper-driven Shift dynamic theming
Expose theme and accent controls in MobileShellSettings and the\nAppearance KCM. Generate ShiftWallpaperDark/Light from Shift base\nschemes, apply them through KDE color tools, and debounce wallpaper\ncolor updates. Register a dedicated dynamic-theming regression test.
2026-05-31 14:06:05 +02:00
4af811c97c Hide homescreen page dots in convergence
The convergence dock is now the bottom navigation surface, including the desktop pager. Hide the legacy homescreen page indicator wrapper there so page dots and drawer affordances do not compete with the dock.
2026-05-29 11:34:49 +02:00
301e3f802b Remove unused right-side desktop pager
All virtual desktop buttons now live beside the Desktop button, so the right-side pager branch can never render. Drop the dead delegate code and guard the dock invariant against reintroducing it.
2026-05-29 11:19:32 +02:00
b80c878487 Make dock pager follow keyboard focus order
Keep keyboard navigation aligned with the compact desktop pager group. Right from the Desktop button now enters the pager, pager buttons expose accessible activation, and focus continues into dock content after the last desktop.
2026-05-29 11:11:59 +02:00
2aae067337 Keep desktop pager buttons together in dock
Show all virtual desktop buttons as one compact group next to the Desktop button instead of splitting them across both dock edges. Update the convergence dock invariant so this layout does not regress.
2026-05-29 11:05:42 +02:00
146 changed files with 1331 additions and 639 deletions

View file

@ -2,12 +2,6 @@
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
![Desktop overview](screenshots/quick_DesktopDemo.webm)
![Docked mode](screenshots/quick_DesktopDemo_docked.webm)
![Tiling](screenshots/quick_DesktopDemo_tiling.webm)
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.

View file

@ -18,9 +18,6 @@ GameModeControl::GameModeControl(QObject *parent)
, m_iface(new QDBusInterface(s_service, s_path, s_iface, QDBusConnection::sessionBus(), this))
{
m_available = m_iface->isValid();
if (!m_available) {
qDebug() << "GameModeControl: Feral GameMode not available";
}
}
bool GameModeControl::available() const

View file

@ -25,8 +25,6 @@ PowerProfileControl::PowerProfileControl(QObject *parent)
// Subscribe to property changes
QDBusConnection::systemBus()
.connect(s_service, s_path, s_propIface, QStringLiteral("PropertiesChanged"), this, SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
} else {
qDebug() << "PowerProfileControl: power-profiles-daemon not available";
}
}

View file

@ -71,6 +71,8 @@ Item {
MobileShell.NotificationsWidget {
id: notificationWidget
readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
anchors.fill: parent
anchors.topMargin: root.topMargin + (isConvergence ? Kirigami.Units.gridUnit : 0)
anchors.rightMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? Kirigami.Units.gridUnit : Math.max(root.width - Kirigami.Units.gridUnit * 25, 0))

View file

@ -29,12 +29,12 @@ Item {
required property QS.QuickSettingsModel quickSettingsModel
readonly property real columns: Math.round(Math.min(6, Math.max(ShellSettings.Settings.quickSettingsColumns, width / intendedColumnWidth)))
readonly property real columnWidth: Math.floor(width / columns)
readonly property int minimizedColumns: Math.round(Math.min(8, Math.max(5, width / intendedMinimizedColumnWidth)))
readonly property real minimizedColumnWidth: Math.floor(width / minimizedColumns)
readonly property int columns: Math.max(1, Math.round(Math.min(6, Math.max(ShellSettings.Settings.quickSettingsColumns, width / intendedColumnWidth))))
readonly property real columnWidth: Math.max(1, Math.floor(width / columns))
readonly property int minimizedColumns: Math.max(1, Math.round(Math.min(8, Math.max(5, width / intendedMinimizedColumnWidth))))
readonly property real minimizedColumnWidth: Math.max(1, Math.floor(width / minimizedColumns))
readonly property real rowHeight: columnWidth * 0.7
readonly property real rowHeight: Math.max(1, columnWidth * 0.7)
readonly property real fullHeight: fullView.implicitHeight
readonly property real intendedColumnWidth: Kirigami.Units.gridUnit * 7
@ -43,16 +43,17 @@ Item {
property real fullViewProgress: 1
readonly property int columnCount: Math.floor(width/columnWidth)
readonly property int columnCount: Math.max(1, Math.floor(width / columnWidth))
readonly property int rowCount: {
let totalRows = Math.ceil(quickSettingsCount / columnCount);
let maxRows = root.isConvergence ? 3 : 5; // more than 5 is just disorienting
let targetRows = Math.floor(Window.height * (root.isConvergence ? 0.42 : 0.65) / rowHeight);
let targetRows = Math.max(1, Math.floor(Window.height * (root.isConvergence ? 0.42 : 0.65) / rowHeight));
return Math.max(1, Math.min(maxRows, Math.min(totalRows, targetRows)));
}
readonly property int pageSize: rowCount * columnCount
readonly property int quickSettingsCount: quickSettingsModel.count
readonly property int pageSize: Math.max(1, rowCount * columnCount)
readonly property int quickSettingsCount: Math.max(0, quickSettingsModel.count)
readonly property int pageCount: Math.max(1, Math.ceil(quickSettingsCount / pageSize))
// Management tiles promoted to full-width status rows in convergence.
readonly property var __managementCommands: ({
@ -279,7 +280,7 @@ Item {
Layout.maximumHeight: visible ? rowCount * rowHeight : 0
Repeater {
model: Math.ceil(quickSettingsCount / pageSize)
model: root.isConvergence ? 0 : root.pageCount
delegate: Flow {
id: flow
spacing: 0

View file

@ -26,7 +26,6 @@ MobileShell.BaseItem {
required property string text
required property string status
required property string icon
required property bool enabled
required property string settingsCommand
required property var toggleFunction

View file

@ -18,7 +18,6 @@ Item {
required property string text
required property string status
required property string icon
required property bool enabled
required property var toggleFunction
property bool compact: false

View file

@ -32,12 +32,19 @@ Controls.AbstractButton {
property string type // sink, source, source-output
property bool onlyOne: false
property bool useVolumeObject: true
// Whether this item is selected
readonly property bool supportsSelection: (baseItem.type == "sink" || baseItem.type == "source")
readonly property bool selected: supportsSelection && (model.PulseObject.hasOwnProperty("default") ? model.PulseObject.default : false)
readonly property bool hasPulseObject: model.PulseObject !== null && model.PulseObject !== undefined
readonly property bool hasVolumeObject: useVolumeObject && hasPulseObject
readonly property bool selected: supportsSelection && hasPulseObject && (model.PulseObject.hasOwnProperty("default") ? model.PulseObject.default : false)
onClicked: {
if (!hasPulseObject || !model.PulseObject.hasOwnProperty("default")) {
return;
}
// Set as the default audio device
model.PulseObject.default = true
}
@ -175,7 +182,7 @@ Controls.AbstractButton {
visible: model.HasVolume !== false // Devices always have volume but Streams don't necessarily
enabled: model.VolumeWritable
muted: model.Muted
volumeObject: model.PulseObject
volumeObject: baseItem.hasVolumeObject ? model.PulseObject : null
activeFocusOnTab: false // access from delegate
value: to, model.Volume
@ -215,7 +222,7 @@ Controls.AbstractButton {
}
PlasmaComponents.Label {
id: percentText
readonly property real value: model.PulseObject.volume > slider.to ? model.PulseObject.volume : slider.value
readonly property real value: baseItem.hasVolumeObject && model.PulseObject.volume > slider.to ? model.PulseObject.volume : slider.value
readonly property real displayValue: Math.round(value / PulseAudio.NormalVolume * 100.0)
Layout.alignment: Qt.AlignHCenter
Layout.minimumWidth: percentMetrics.advanceWidth

View file

@ -15,6 +15,7 @@ ListItemBase {
property QtObject devicesModel
readonly property bool isEventStream: Name == "sink-input-by-media-role:event"
useVolumeObject: !isEventStream
label: {
if (isEventStream) {

View file

@ -157,11 +157,13 @@ Window {
anchors.leftMargin: Kirigami.Units.smallSpacing * 2
anchors.rightMargin: Kirigami.Units.smallSpacing
property int volumePercent: PreferredDevice.sink.volume / PulseAudio.NormalVolume * 100.0
readonly property bool hasSink: PreferredDevice.sink !== null
property int volumePercent: hasSink ? PreferredDevice.sink.volume / PulseAudio.NormalVolume * 100.0 : 0
PlasmaComponents.ToolButton {
icon.name: !PreferredDevice.sink || (PreferredDevice.sink.muted ? "audio-volume-muted" : MobileShell.AudioInfo.icon)
text: !PreferredDevice.sink || (PreferredDevice.sink.muted ? i18n("Unmute") : i18n("Mute"))
enabled: containerLayout.hasSink
icon.name: containerLayout.hasSink ? (PreferredDevice.sink.muted ? "audio-volume-muted" : MobileShell.AudioInfo.icon) : "audio-volume-muted"
text: containerLayout.hasSink && PreferredDevice.sink.muted ? i18n("Unmute") : i18n("Mute")
display: Controls.AbstractButton.IconOnly
Layout.alignment: Qt.AlignVCenter
Layout.preferredWidth: Kirigami.Units.iconSizes.medium
@ -169,6 +171,9 @@ Window {
Layout.rightMargin: Kirigami.Units.smallSpacing
onClicked: {
if (!containerLayout.hasSink) {
return;
}
hideTimer.restart();
PreferredDevice.sink.muted = !PreferredDevice.sink.muted;
}
@ -185,11 +190,15 @@ Window {
to: PulseAudio.NormalVolume
stepSize: to / (to / PulseAudio.NormalVolume * 100.0)
volumeObject: PreferredDevice.sink
muted: PreferredDevice.sink.muted
value: PreferredDevice.sink.volume
enabled: containerLayout.hasSink
volumeObject: containerLayout.hasSink ? PreferredDevice.sink : null
muted: containerLayout.hasSink ? PreferredDevice.sink.muted : false
value: containerLayout.hasSink ? PreferredDevice.sink.volume : PulseAudio.MinimalVolume
onMoved: {
if (!containerLayout.hasSink) {
return;
}
PreferredDevice.sink.volume = value;
PreferredDevice.sink.muted = value === 0;
}
@ -202,7 +211,7 @@ Window {
// Otherwise it might be that the slider is at v10
// whereas PA rejected the volume change and is
// still at v15 (e.g.).
value = Qt.binding(() => PreferredDevice.sink.volume);
value = Qt.binding(() => containerLayout.hasSink ? PreferredDevice.sink.volume : PulseAudio.MinimalVolume);
hideTimer.restart();
}
}

View file

@ -201,7 +201,7 @@ Window {
}
PlasmaComponents.Label {
text: i18n("Open audio settings")
anchors.verticalCenter: parent.verticalCenter
Layout.alignment: Qt.AlignVCenter
}
}
}

View file

@ -119,7 +119,7 @@ QHash<int, QByteArray> PaginateModel::roleNames() const
int PaginateModel::rowsByPageSize(int size) const
{
return d->m_hasStaticRowCount ? size : !d->m_sourceModel ? 0 : qMin(d->m_sourceModel->rowCount() - d->m_firstItem, size);
return d->m_hasStaticRowCount ? qMax(size, 0) : !d->m_sourceModel ? 0 : qMax(qMin(d->m_sourceModel->rowCount() - d->m_firstItem, size), 0);
}
int PaginateModel::rowCount(const QModelIndex &parent) const

View file

@ -90,7 +90,6 @@ void RaiseLockscreen::setOverlay()
// Add event filter to listen for when wayland window appears, and try again
m_window->installEventFilter(this);
setInitialized(false);
qCWarning(LOGGING_CATEGORY) << "Unable to set overlay: unable to get wayland window";
return;
}
@ -99,13 +98,11 @@ void RaiseLockscreen::setOverlay()
connect(waylandWindow, &QNativeInterface::Private::QWaylandWindow::surfaceRoleCreated, this, [this, waylandWindow]() {
m_implementation->allow(waylandWindow->surface());
setInitialized(true);
qCDebug(LOGGING_CATEGORY) << "Initialized overlay successfully";
});
if (waylandWindow->surface()) {
m_implementation->allow(waylandWindow->surface());
setInitialized(true);
qCDebug(LOGGING_CATEGORY) << "Initialized overlay successfully";
}
}

View file

@ -6,11 +6,16 @@
#include <QDBusPendingCallWatcher>
#include <QDBusPendingReply>
namespace
{
const QString SOLID_POWER_MANAGEMENT_SERVICE = QStringLiteral("org.kde.Solid.PowerManagement");
}
ScreenBrightnessUtil::ScreenBrightnessUtil(QObject *parent)
: QObject{parent}
{
m_brightnessInterface =
new org::kde::Solid::PowerManagement::Actions::BrightnessControl(QStringLiteral("org.kde.Solid.PowerManagement"),
new org::kde::Solid::PowerManagement::Actions::BrightnessControl(SOLID_POWER_MANAGEMENT_SERVICE,
QStringLiteral("/org/kde/Solid/PowerManagement/Actions/BrightnessControl"),
QDBusConnection::sessionBus(),
this);
@ -24,14 +29,14 @@ ScreenBrightnessUtil::ScreenBrightnessUtil(QObject *parent)
this,
&ScreenBrightnessUtil::fetchMaxBrightness);
if (brightnessAvailable()) {
fetchBrightness();
fetchMaxBrightness();
}
// watch for brightness interface
m_brightnessInterfaceWatcher = new QDBusServiceWatcher(QStringLiteral("org.kde.Solid.PowerManagement.Actions.BrightnessControl"),
QDBusConnection::sessionBus(),
QDBusServiceWatcher::WatchForOwnerChange,
this);
m_brightnessInterfaceWatcher =
new QDBusServiceWatcher(SOLID_POWER_MANAGEMENT_SERVICE, QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForOwnerChange, this);
connect(m_brightnessInterfaceWatcher, &QDBusServiceWatcher::serviceRegistered, this, [this]() -> void {
fetchBrightness();
@ -51,6 +56,10 @@ int ScreenBrightnessUtil::brightness() const
void ScreenBrightnessUtil::setBrightness(int brightness)
{
if (!brightnessAvailable()) {
return;
}
m_brightnessInterface->setBrightness(brightness);
}
@ -66,6 +75,10 @@ bool ScreenBrightnessUtil::brightnessAvailable() const
void ScreenBrightnessUtil::fetchBrightness()
{
if (!brightnessAvailable()) {
return;
}
QDBusPendingReply<int> reply = m_brightnessInterface->brightness();
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
@ -83,6 +96,10 @@ void ScreenBrightnessUtil::fetchBrightness()
void ScreenBrightnessUtil::fetchMaxBrightness()
{
if (!brightnessAvailable()) {
return;
}
QDBusPendingReply<int> reply = m_brightnessInterface->brightnessMax();
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);

View file

@ -12,6 +12,7 @@ target_link_libraries(shellsettingsplugin PRIVATE
Qt::DBus
Qt::Gui
Qt::Quick
KF6::ConfigCore
Plasma::KWaylandClient
KF6::Service
KF6::Package

View file

@ -15,16 +15,163 @@
#include <QDBusMessage>
#include <QDBusPendingCall>
#include <QDebug>
#include <QDir>
#include <QFile>
#include <QProcess>
#include <QStandardPaths>
#include <QtMath>
const QString CONFIG_FILE = QStringLiteral("plasmamobilerc");
const QString GENERAL_CONFIG_GROUP = QStringLiteral("General");
const QString KDE_GLOBALS_CONFIG_GROUP = QStringLiteral("General");
const QString LOCKSCREEN_CONFIG_GROUP = QStringLiteral("Lockscreen");
const QString QUICKSETTINGS_CONFIG_GROUP = QStringLiteral("QuickSettings");
const QString WALLPAPER_THEME_MANUAL_DARK_KEY = QStringLiteral("wallpaperThemeManualDarkTheme");
const QString SHIFT_DARK_COLOR_SCHEME = QStringLiteral("ShiftDark");
const QString SHIFT_LIGHT_COLOR_SCHEME = QStringLiteral("ShiftLight");
const QString SHIFT_WALLPAPER_DARK_COLOR_SCHEME = QStringLiteral("ShiftWallpaperDark");
const QString SHIFT_WALLPAPER_LIGHT_COLOR_SCHEME = QStringLiteral("ShiftWallpaperLight");
const QString SHIFT_DARK_PLASMA_THEME = QStringLiteral("shift-dark");
const QString SHIFT_LIGHT_PLASMA_THEME = QStringLiteral("shift-light");
constexpr qreal MIN_NORMAL_CONTRAST = 4.5;
constexpr qreal MIN_INACTIVE_CONTRAST = 3.0;
constexpr qreal MIN_LINK_CONTRAST = 3.5;
namespace
{
QString baseColorSchemeName(bool dark)
{
return dark ? SHIFT_DARK_COLOR_SCHEME : SHIFT_LIGHT_COLOR_SCHEME;
}
QString wallpaperColorSchemeName(bool dark)
{
return dark ? SHIFT_WALLPAPER_DARK_COLOR_SCHEME : SHIFT_WALLPAPER_LIGHT_COLOR_SCHEME;
}
QString wallpaperColorSchemeDisplayName(bool dark)
{
return dark ? QStringLiteral("SHIFT Wallpaper Dark") : QStringLiteral("SHIFT Wallpaper Light");
}
QString rgbString(const QColor &color)
{
return QStringLiteral("%1,%2,%3").arg(color.red()).arg(color.green()).arg(color.blue());
}
qreal relativeLuminance(const QColor &color)
{
return 0.2126 * color.redF() + 0.7152 * color.greenF() + 0.0722 * color.blueF();
}
qreal linearizedChannel(qreal channel)
{
return channel <= 0.04045 ? channel / 12.92 : qPow((channel + 0.055) / 1.055, 2.4);
}
qreal wcagLuminance(const QColor &color)
{
return 0.2126 * linearizedChannel(color.redF()) + 0.7152 * linearizedChannel(color.greenF()) + 0.0722 * linearizedChannel(color.blueF());
}
qreal contrastRatio(const QColor &left, const QColor &right)
{
const qreal leftLum = wcagLuminance(left);
const qreal rightLum = wcagLuminance(right);
const qreal lighter = qMax(leftLum, rightLum);
const qreal darker = qMin(leftLum, rightLum);
return (lighter + 0.05) / (darker + 0.05);
}
QColor contrastingTextColor(const QColor &color);
QColor blendColors(const QColor &base, const QColor &overlay, qreal overlayAmount);
QColor ensureContrast(const QColor &foreground, const QColor &background, qreal minimumContrast)
{
if (contrastRatio(foreground, background) >= minimumContrast) {
return foreground;
}
const QColor highContrastTarget = contrastingTextColor(background);
for (int i = 1; i <= 12; ++i) {
const qreal amount = i / 12.0;
const QColor candidate = blendColors(foreground, highContrastTarget, amount);
if (contrastRatio(candidate, background) >= minimumContrast) {
return candidate;
}
}
return highContrastTarget;
}
QColor contrastingTextColor(const QColor &color)
{
const QColor white{Qt::white};
const QColor black{Qt::black};
return contrastRatio(color, white) >= contrastRatio(color, black) ? white : black;
}
QColor blendColors(const QColor &base, const QColor &overlay, qreal overlayAmount)
{
const qreal clampedAmount = qBound(0.0, overlayAmount, 1.0);
const qreal baseAmount = 1.0 - clampedAmount;
return QColor::fromRgbF(base.redF() * baseAmount + overlay.redF() * clampedAmount,
base.greenF() * baseAmount + overlay.greenF() * clampedAmount,
base.blueF() * baseAmount + overlay.blueF() * clampedAmount,
1.0);
}
void writeAccentEntries(const KSharedConfig::Ptr &config, const QString &groupName, const QColor &accentColor)
{
auto group = KConfigGroup{config, groupName};
group.writeEntry("DecorationFocus", rgbString(accentColor));
group.writeEntry("DecorationHover", rgbString(accentColor));
group.writeEntry("ForegroundActive", rgbString(accentColor));
}
void tintBackgroundEntries(const KSharedConfig::Ptr &config, const QString &groupName, const QColor &accentColor, bool dark)
{
auto group = KConfigGroup{config, groupName};
const QColor defaultBase = dark ? QColor(38, 41, 47) : QColor(244, 246, 251);
const QColor baseNormal = group.readEntry("BackgroundNormal", defaultBase);
const QColor baseAlternate = group.readEntry("BackgroundAlternate", baseNormal);
const qreal normalBlend = dark ? 0.22 : 0.12;
const qreal alternateBlend = dark ? 0.16 : 0.08;
group.writeEntry("BackgroundNormal", rgbString(blendColors(baseNormal, accentColor, normalBlend)));
group.writeEntry("BackgroundAlternate", rgbString(blendColors(baseAlternate, accentColor, alternateBlend)));
}
void tuneForegroundEntries(const KSharedConfig::Ptr &config, const QString &groupName, const QColor &accentColor, bool dark)
{
auto group = KConfigGroup{config, groupName};
const QColor bgNormal = group.readEntry("BackgroundNormal", dark ? QColor(34, 37, 50) : QColor(252, 252, 252));
const QColor baseNormal = contrastingTextColor(bgNormal);
const QColor baseInactive = blendColors(baseNormal, bgNormal, dark ? 0.44 : 0.56);
const QColor baseLink = dark ? blendColors(accentColor, QColor(Qt::white), 0.28) : blendColors(accentColor, QColor(Qt::black), 0.24);
const QColor fgNormal = ensureContrast(baseNormal, bgNormal, MIN_NORMAL_CONTRAST);
const QColor fgInactive = ensureContrast(baseInactive, bgNormal, MIN_INACTIVE_CONTRAST);
const QColor fgLink = ensureContrast(baseLink, bgNormal, MIN_LINK_CONTRAST);
const QColor fgActive = ensureContrast(accentColor, bgNormal, MIN_LINK_CONTRAST);
group.writeEntry("ForegroundNormal", rgbString(fgNormal));
group.writeEntry("ForegroundInactive", rgbString(fgInactive));
group.writeEntry("ForegroundActive", rgbString(fgActive));
group.writeEntry("ForegroundLink", rgbString(fgLink));
}
}
MobileShellSettings::MobileShellSettings(QObject *parent)
: QObject{parent}
, m_config{KSharedConfig::openConfig(CONFIG_FILE)}
, m_kdeGlobalsConfig{KSharedConfig::openConfig()}
{
m_wallpaperThemeTimer.setSingleShot(true);
m_wallpaperThemeTimer.setInterval(450);
connect(&m_wallpaperThemeTimer, &QTimer::timeout, this, [this]() -> void {
setDarkThemeEnabled(m_pendingWallpaperThemeDark);
});
m_configWatcher = KConfigWatcher::create(m_config);
connect(m_configWatcher.data(), &KConfigWatcher::configChanged, this, [this](const KConfigGroup &group, const QByteArrayList &names) -> void {
Q_UNUSED(names)
@ -53,6 +200,7 @@ MobileShellSettings::MobileShellSettings(QObject *parent)
Q_EMIT dynamicTilingLayoutStateChanged();
Q_EMIT snapLayoutsEnabledChanged();
Q_EMIT allowLogoutChanged();
Q_EMIT wallpaperThemeEnabledChanged();
}
if (group.name() == LOCKSCREEN_CONFIG_GROUP) {
Q_EMIT lockscreenLeftButtonActionChanged();
@ -62,6 +210,24 @@ MobileShellSettings::MobileShellSettings(QObject *parent)
Q_EMIT quickSettingsColumnsChanged();
}
});
m_kdeGlobalsConfigWatcher = KConfigWatcher::create(m_kdeGlobalsConfig);
connect(m_kdeGlobalsConfigWatcher.data(), &KConfigWatcher::configChanged, this, [this](const KConfigGroup &group, const QByteArrayList &names) -> void {
if (group.name() != KDE_GLOBALS_CONFIG_GROUP) {
return;
}
if (names.contains(QByteArrayLiteral("ColorScheme"))) {
Q_EMIT colorSchemeChanged();
Q_EMIT darkThemeEnabledChanged();
}
if (names.contains(QByteArrayLiteral("AccentColor")) || names.contains(QByteArrayLiteral("LastUsedCustomAccentColor"))) {
Q_EMIT accentColorChanged();
}
if (names.contains(QByteArrayLiteral("accentColorFromWallpaper"))) {
Q_EMIT wallpaperAccentEnabledChanged();
}
});
}
bool MobileShellSettings::vibrationsEnabled() const
@ -243,6 +409,312 @@ void MobileShellSettings::setConvergenceModeEnabled(bool enabled)
job->start();
}
QString MobileShellSettings::colorScheme() const
{
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
return group.readEntry("ColorScheme", SHIFT_DARK_COLOR_SCHEME);
}
bool MobileShellSettings::darkThemeEnabled() const
{
return isDarkColorScheme(colorScheme());
}
void MobileShellSettings::setDarkThemeEnabled(bool enabled)
{
const QString currentColorScheme = colorScheme();
const QString nextColorScheme = effectiveColorSchemeName(enabled);
const QString plasmaTheme = enabled ? SHIFT_DARK_PLASMA_THEME : SHIFT_LIGHT_PLASMA_THEME;
QColor accentOverride;
if (wallpaperAccentEnabled() && m_lastWallpaperThemeColor.isValid() && m_lastWallpaperThemeColor.alpha() != 0) {
accentOverride = m_lastWallpaperThemeColor;
} else if (!wallpaperAccentEnabled()) {
const QColor manualAccent = accentColor();
if (manualAccent.isValid() && manualAccent.alpha() != 0) {
accentOverride = manualAccent;
}
}
if (currentColorScheme == nextColorScheme && nextColorScheme == baseColorSchemeName(enabled)) {
return;
}
if (accentOverride.isValid() && accentOverride.alpha() != 0) {
applyColorScheme({QStringLiteral("--accent-color"), accentOverride.name(QColor::HexRgb), nextColorScheme});
} else {
QProcess::execute(QStringLiteral("plasma-apply-colorscheme"), {nextColorScheme});
m_kdeGlobalsConfig->reparseConfiguration();
}
QProcess::execute(QStringLiteral("plasma-apply-desktoptheme"), {plasmaTheme});
Q_EMIT colorSchemeChanged();
Q_EMIT darkThemeEnabledChanged();
}
bool MobileShellSettings::wallpaperThemeEnabled() const
{
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
return group.readEntry("wallpaperThemeEnabled", false);
}
void MobileShellSettings::setWallpaperThemeEnabled(bool enabled)
{
if (wallpaperThemeEnabled() == enabled) {
return;
}
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
if (enabled) {
group.writeEntry(WALLPAPER_THEME_MANUAL_DARK_KEY, darkThemeEnabled(), KConfigGroup::Notify);
}
group.writeEntry("wallpaperThemeEnabled", enabled, KConfigGroup::Notify);
m_config->sync();
if (!enabled) {
m_wallpaperThemeTimer.stop();
setDarkThemeEnabled(group.readEntry(WALLPAPER_THEME_MANUAL_DARK_KEY, darkThemeEnabled()));
}
Q_EMIT wallpaperThemeEnabledChanged();
}
void MobileShellSettings::applyWallpaperThemeColor(const QColor &color)
{
if (!wallpaperThemeEnabled() || !color.isValid() || color.alpha() == 0) {
return;
}
QColor opaqueColor = color;
opaqueColor.setAlpha(255);
const bool colorChanged = m_lastWallpaperThemeColor != opaqueColor;
m_lastWallpaperThemeColor = opaqueColor;
if (colorChanged) {
Q_EMIT wallpaperThemeColorChanged();
}
const qreal luminance = relativeLuminance(opaqueColor);
const bool shouldUseDarkTheme = luminance < 0.5;
const bool sameThemeBucket = darkThemeEnabled() == shouldUseDarkTheme;
if (wallpaperAccentEnabled() && colorChanged && sameThemeBucket) {
applyColorScheme({QStringLiteral("--accent-color"), opaqueColor.name(QColor::HexRgb), colorScheme()});
}
if (!m_wallpaperThemeTimer.isActive() && darkThemeEnabled() == shouldUseDarkTheme && !colorChanged) {
return;
}
m_pendingWallpaperThemeDark = shouldUseDarkTheme;
m_wallpaperThemeTimer.start();
}
QColor MobileShellSettings::wallpaperThemeColor() const
{
return m_lastWallpaperThemeColor;
}
QColor MobileShellSettings::accentColor() const
{
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
return group.readEntry("AccentColor", QColor(Qt::transparent));
}
void MobileShellSettings::setAccentColor(const QColor &color)
{
if (!color.isValid() || color.alpha() == 0) {
resetAccentColor();
return;
}
QColor opaqueColor = color;
opaqueColor.setAlpha(255);
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
group.writeEntry("accentColorFromWallpaper", false, KConfigGroup::Notify);
group.writeEntry("LastUsedCustomAccentColor", opaqueColor, KConfigGroup::Notify);
m_kdeGlobalsConfig->sync();
applyColorScheme({QStringLiteral("--accent-color"), opaqueColor.name(QColor::HexRgb), colorScheme()});
Q_EMIT wallpaperAccentEnabledChanged();
Q_EMIT accentColorChanged();
}
bool MobileShellSettings::wallpaperAccentEnabled() const
{
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
return group.readEntry("accentColorFromWallpaper", false);
}
void MobileShellSettings::setWallpaperAccentEnabled(bool enabled)
{
if (wallpaperAccentEnabled() == enabled) {
return;
}
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
group.writeEntry("accentColorFromWallpaper", enabled, KConfigGroup::Notify);
m_kdeGlobalsConfig->sync();
if (enabled && m_lastWallpaperThemeColor.isValid() && m_lastWallpaperThemeColor.alpha() != 0) {
applyColorScheme({QStringLiteral("--accent-color"), m_lastWallpaperThemeColor.name(QColor::HexRgb), colorScheme()});
Q_EMIT accentColorChanged();
}
if (!enabled) {
const QColor lastCustomColor = lastUsedCustomAccentColor();
if (lastCustomColor.isValid() && lastCustomColor.alpha() != 0) {
applyColorScheme({QStringLiteral("--accent-color"), lastCustomColor.name(QColor::HexRgb), colorScheme()});
} else {
resetAccentColor();
return;
}
}
Q_EMIT wallpaperAccentEnabledChanged();
}
void MobileShellSettings::resetAccentColor()
{
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
group.writeEntry("accentColorFromWallpaper", false, KConfigGroup::Notify);
group.deleteEntry("AccentColor", KConfigGroup::Notify);
m_kdeGlobalsConfig->sync();
applyColorScheme({colorScheme()});
Q_EMIT wallpaperAccentEnabledChanged();
Q_EMIT accentColorChanged();
}
QColor MobileShellSettings::lastUsedCustomAccentColor() const
{
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
return group.readEntry("LastUsedCustomAccentColor", QColor(Qt::transparent));
}
void MobileShellSettings::applyColorScheme(const QStringList &arguments)
{
QProcess::execute(QStringLiteral("plasma-apply-colorscheme"), arguments);
m_kdeGlobalsConfig->reparseConfiguration();
}
QString MobileShellSettings::effectiveColorSchemeName(bool dark) const
{
if (!wallpaperThemeEnabled() || !m_lastWallpaperThemeColor.isValid() || m_lastWallpaperThemeColor.alpha() == 0) {
return baseColorSchemeName(dark);
}
if (!ensureWallpaperColorScheme(m_lastWallpaperThemeColor, dark)) {
return baseColorSchemeName(dark);
}
return wallpaperColorSchemeName(dark);
}
bool MobileShellSettings::isDarkColorScheme(const QString &schemeName) const
{
return schemeName == SHIFT_DARK_COLOR_SCHEME || schemeName == SHIFT_WALLPAPER_DARK_COLOR_SCHEME;
}
bool MobileShellSettings::ensureWallpaperColorScheme(const QColor &accentColor, bool dark) const
{
if (!accentColor.isValid() || accentColor.alpha() == 0) {
return false;
}
const QString sourcePath =
QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("color-schemes/%1.colors").arg(baseColorSchemeName(dark)));
if (sourcePath.isEmpty()) {
qWarning() << "Unable to locate base Shift color scheme for wallpaper generation:" << baseColorSchemeName(dark);
return false;
}
const QString outputDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QStringLiteral("/color-schemes");
if (!QDir().mkpath(outputDir)) {
qWarning() << "Unable to create dynamic color-scheme directory:" << outputDir;
return false;
}
const QString outputPath = outputDir + QStringLiteral("/%1.colors").arg(wallpaperColorSchemeName(dark));
QFile::remove(outputPath);
if (!QFile::copy(sourcePath, outputPath)) {
qWarning() << "Unable to create wallpaper-derived color scheme:" << outputPath;
return false;
}
auto generatedConfig = KSharedConfig::openConfig(outputPath, KConfig::SimpleConfig);
auto generalGroup = KConfigGroup{generatedConfig, QStringLiteral("General")};
generalGroup.writeEntry("ColorScheme", wallpaperColorSchemeName(dark));
generalGroup.writeEntry("Name", wallpaperColorSchemeDisplayName(dark));
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Button"), accentColor);
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Complementary"), accentColor);
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Header"), accentColor);
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Header][Inactive"), accentColor);
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Tooltip"), accentColor);
writeAccentEntries(generatedConfig, QStringLiteral("Colors:View"), accentColor);
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Window"), accentColor);
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Button"), accentColor, dark);
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:View"), accentColor, dark);
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Window"), accentColor, dark);
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Header"), accentColor, dark);
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Header][Inactive"), accentColor, dark);
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Tooltip"), accentColor, dark);
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Button"), accentColor, dark);
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:View"), accentColor, dark);
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Window"), accentColor, dark);
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Header"), accentColor, dark);
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Header][Inactive"), accentColor, dark);
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Tooltip"), accentColor, dark);
auto complementaryGroup = KConfigGroup{generatedConfig, QStringLiteral("Colors:Complementary")};
const QColor complementaryBase = complementaryGroup.readEntry("BackgroundNormal", dark ? QColor(24, 27, 38) : QColor(42, 46, 50));
complementaryGroup.writeEntry("BackgroundNormal", rgbString(blendColors(complementaryBase, accentColor, dark ? 0.18 : 0.14)));
complementaryGroup.writeEntry("BackgroundAlternate", rgbString(blendColors(complementaryBase, accentColor, dark ? 0.12 : 0.09)));
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Complementary"), accentColor, dark);
auto selectionGroup = KConfigGroup{generatedConfig, QStringLiteral("Colors:Selection")};
const QColor selectionBackground = blendColors(accentColor, dark ? QColor(18, 20, 28) : QColor(255, 255, 255), dark ? 0.82 : 0.9);
const QColor selectionAlternate = blendColors(selectionBackground, dark ? QColor(0, 0, 0) : QColor(255, 255, 255), dark ? 0.16 : 0.24);
const QColor selectionForeground = ensureContrast(contrastingTextColor(selectionBackground), selectionBackground, MIN_NORMAL_CONTRAST);
const QColor selectionInactive =
ensureContrast(blendColors(selectionForeground, selectionBackground, dark ? 0.4 : 0.52), selectionBackground, MIN_INACTIVE_CONTRAST);
const QColor selectionLink = ensureContrast(blendColors(accentColor, selectionForeground, dark ? 0.3 : 0.2), selectionBackground, MIN_LINK_CONTRAST);
selectionGroup.writeEntry("BackgroundNormal", rgbString(selectionBackground));
selectionGroup.writeEntry("BackgroundAlternate", rgbString(selectionAlternate));
selectionGroup.writeEntry("DecorationFocus", rgbString(accentColor));
selectionGroup.writeEntry("DecorationHover", rgbString(accentColor));
selectionGroup.writeEntry("ForegroundActive", rgbString(selectionForeground));
selectionGroup.writeEntry("ForegroundNormal", rgbString(selectionForeground));
selectionGroup.writeEntry("ForegroundInactive", rgbString(selectionInactive));
selectionGroup.writeEntry("ForegroundLink", rgbString(selectionLink));
auto wmGroup = KConfigGroup{generatedConfig, QStringLiteral("WM")};
const QColor currentActiveBackground = wmGroup.readEntry("activeBackground", accentColor);
const QColor tintedActiveBackground = blendColors(currentActiveBackground, accentColor, dark ? 0.42 : 0.26);
const QColor currentInactiveBackground = wmGroup.readEntry("inactiveBackground", tintedActiveBackground);
const QColor tintedInactiveBackground = blendColors(currentInactiveBackground, accentColor, dark ? 0.24 : 0.14);
const QColor activeForeground = ensureContrast(contrastingTextColor(tintedActiveBackground), tintedActiveBackground, MIN_NORMAL_CONTRAST);
const QColor inactiveForeground = ensureContrast(blendColors(contrastingTextColor(tintedInactiveBackground), tintedInactiveBackground, dark ? 0.36 : 0.52),
tintedInactiveBackground,
MIN_INACTIVE_CONTRAST);
wmGroup.writeEntry("activeBackground", rgbString(tintedActiveBackground));
wmGroup.writeEntry("activeBlend", rgbString(activeForeground));
wmGroup.writeEntry("activeForeground", rgbString(activeForeground));
wmGroup.writeEntry("inactiveBackground", rgbString(tintedInactiveBackground));
wmGroup.writeEntry("inactiveBlend", rgbString(inactiveForeground));
wmGroup.writeEntry("inactiveForeground", rgbString(inactiveForeground));
generatedConfig->sync();
return true;
}
bool MobileShellSettings::autoHidePanelsEnabled() const
{
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};

View file

@ -9,9 +9,11 @@
#include <KConfigGroup>
#include <KConfigWatcher>
#include <KSharedConfig>
#include <QColor>
#include <QDBusConnection>
#include <QObject>
#include <QStringList>
#include <QTimer>
#include <qqmlregistration.h>
/**
@ -50,6 +52,14 @@ class MobileShellSettings : public QObject
// convergence mode
Q_PROPERTY(bool convergenceModeEnabled READ convergenceModeEnabled WRITE setConvergenceModeEnabled NOTIFY convergenceModeEnabledChanged)
// theme
Q_PROPERTY(QString colorScheme READ colorScheme NOTIFY colorSchemeChanged)
Q_PROPERTY(bool darkThemeEnabled READ darkThemeEnabled WRITE setDarkThemeEnabled NOTIFY darkThemeEnabledChanged)
Q_PROPERTY(bool wallpaperThemeEnabled READ wallpaperThemeEnabled WRITE setWallpaperThemeEnabled NOTIFY wallpaperThemeEnabledChanged)
Q_PROPERTY(QColor wallpaperThemeColor READ wallpaperThemeColor NOTIFY wallpaperThemeColorChanged)
Q_PROPERTY(QColor accentColor READ accentColor WRITE setAccentColor NOTIFY accentColorChanged)
Q_PROPERTY(bool wallpaperAccentEnabled READ wallpaperAccentEnabled WRITE setWallpaperAccentEnabled NOTIFY wallpaperAccentEnabledChanged)
// Auto Hide Panels
Q_PROPERTY(bool autoHidePanelsEnabled READ autoHidePanelsEnabled WRITE setAutoHidePanelsEnabled NOTIFY autoHidePanelsEnabledChanged)
@ -274,6 +284,19 @@ public:
*/
void setConvergenceModeEnabled(bool enabled);
QString colorScheme() const;
bool darkThemeEnabled() const;
void setDarkThemeEnabled(bool enabled);
bool wallpaperThemeEnabled() const;
void setWallpaperThemeEnabled(bool enabled);
Q_INVOKABLE void applyWallpaperThemeColor(const QColor &color);
QColor wallpaperThemeColor() const;
QColor accentColor() const;
void setAccentColor(const QColor &color);
bool wallpaperAccentEnabled() const;
void setWallpaperAccentEnabled(bool enabled);
Q_INVOKABLE void resetAccentColor();
/**
* Whether Auto Hide Panels is enabled.
*/
@ -368,6 +391,12 @@ Q_SIGNALS:
void actionDrawerTopRightModeChanged();
void quickSettingsColumnsChanged();
void convergenceModeEnabledChanged();
void colorSchemeChanged();
void darkThemeEnabledChanged();
void wallpaperThemeEnabledChanged();
void wallpaperThemeColorChanged();
void accentColorChanged();
void wallpaperAccentEnabledChanged();
void autoHidePanelsEnabledChanged();
void gamingModeEnabledChanged();
void gamingDismissHintEnabledChanged();
@ -383,7 +412,17 @@ Q_SIGNALS:
private:
void updateNavigationBarsInPlasma();
QColor lastUsedCustomAccentColor() const;
void applyColorScheme(const QStringList &arguments);
QString effectiveColorSchemeName(bool dark) const;
bool isDarkColorScheme(const QString &schemeName) const;
bool ensureWallpaperColorScheme(const QColor &accentColor, bool dark) const;
KConfigWatcher::Ptr m_configWatcher;
KConfigWatcher::Ptr m_kdeGlobalsConfigWatcher;
KSharedConfig::Ptr m_config;
KSharedConfig::Ptr m_kdeGlobalsConfig;
QTimer m_wallpaperThemeTimer;
bool m_pendingWallpaperThemeDark = false;
QColor m_lastWallpaperThemeColor;
};

View file

@ -17,6 +17,8 @@ import 'private'
Item {
id: root
required property Folio.HomeScreen folio
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
property var homeScreen

View file

@ -147,7 +147,7 @@ MobileShell.GridView {
contentItem: Rectangle {
radius: width / 2
color: Qt.rgba(1, 1, 1, 0.3)
color: Qt.rgba(Kirigami.Theme.textColor.r, Kirigami.Theme.textColor.g, Kirigami.Theme.textColor.b, 0.3)
}
}
}

View file

@ -16,9 +16,8 @@ Item {
id: root
property Folio.HomeScreen folio
// Do not override the colorset: in mobile mode we inherit Complementary
// from the containment (wallpaper context, white text); in convergence mode
// the drawerOverlay Window gives us Window context (system-adaptive).
// The AppDrawer owns a Window colorset so mobile and convergence use the
// same Shift theme roles.
function addSearchText(text: string) {
searchField.text += text;

View file

@ -96,13 +96,12 @@ MouseArea {
property real pagerButtonWidth: showPager ? Math.min(root.height, Kirigami.Units.gridUnit * 2.5) : 0
property int pagerWheelDelta: 0
property bool pagerWheelLocked: false
readonly property int pagerLeftCount: showPager ? Math.ceil(virtualDesktopInfo.numberOfDesktops / 2) : 0
readonly property int pagerRightCount: showPager ? virtualDesktopInfo.numberOfDesktops - pagerLeftCount : 0
readonly property int pagerLeftCount: showPager ? virtualDesktopInfo.numberOfDesktops : 0
property real desktopButtonWidth: convergenceMode ? root.height : 0
property real trashButtonWidth: convergenceMode ? root.height : 0
property real searchButtonWidth: convergenceMode ? root.height : 0
readonly property real leftControlsWidth: convergenceMode ? navButtonWidth + desktopButtonWidth + pagerLeftCount * pagerButtonWidth : 0
readonly property real rightControlsWidth: convergenceMode ? navButtonWidth + searchButtonWidth + trashButtonWidth + pagerRightCount * pagerButtonWidth : 0
readonly property real rightControlsWidth: convergenceMode ? navButtonWidth + searchButtonWidth + trashButtonWidth : 0
readonly property real dockCenterX: convergenceMode
? leftControlsWidth + (root.width - leftControlsWidth - rightControlsWidth) / 2
: root.width / 2
@ -296,16 +295,33 @@ MouseArea {
if (x >= bx && x < bx + pagerButtonWidth)
return (ids && i < ids.length) ? String(ids[i]) : ""
}
for (let i = 0; i < pagerRightCount; ++i) {
let bx = root.width - navButtonWidth - root.searchButtonWidth - root.trashButtonWidth - (pagerRightCount - i) * pagerButtonWidth
if (x >= bx && x < bx + pagerButtonWidth) {
let di = pagerLeftCount + i
return (ids && di < ids.length) ? String(ids[di]) : ""
}
}
return ""
}
function focusFirstDockContent() {
let firstPager = leftPagerRepeater.itemAt(0)
if (firstPager) { firstPager.forceActiveFocus(); return }
root.focusAfterPager()
}
function focusAfterPager() {
let first = repeater.itemAt(0)
if (first) { first.keyboardFocus(); return }
let firstTask = taskRepeater.itemAt(0)
if (firstTask) { firstTask.forceActiveFocus(); return }
searchButton.forceActiveFocus()
}
function focusBeforeSearch() {
let lastTask = taskRepeater.itemAt(taskRepeater.count - 1)
if (lastTask) { lastTask.forceActiveFocus(); return }
let lastFav = repeater.itemAt(repeater.count - 1)
if (lastFav) { lastFav.keyboardFocus(); return }
let lastPager = leftPagerRepeater.itemAt(leftPagerRepeater.count - 1)
if (lastPager) { lastPager.forceActiveFocus(); return }
desktopButton.forceActiveFocus()
}
function runningTaskStorageId(taskModel) {
var id = taskModel ? taskModel.AppId || "" : ""
if (id && !id.endsWith(".desktop"))
@ -448,13 +464,7 @@ MouseArea {
Keys.onEnterPressed: desktopButton.toggleDesktop()
Keys.onSpacePressed: desktopButton.toggleDesktop()
Keys.onLeftPressed: homeButton.forceActiveFocus()
Keys.onRightPressed: {
let first = repeater.itemAt(0)
if (first) { first.keyboardFocus(); return }
let firstTask = taskRepeater.itemAt(0)
if (firstTask) { firstTask.forceActiveFocus(); return }
searchButton.forceActiveFocus()
}
Keys.onRightPressed: root.focusFirstDockContent()
KeyboardHighlight {
anchors.fill: parent
@ -561,9 +571,7 @@ MouseArea {
Keys.onReturnPressed: root.folio.triggerOverview()
Keys.onEnterPressed: root.folio.triggerOverview()
Keys.onSpacePressed: root.folio.triggerOverview()
Keys.onLeftPressed: {
searchButton.forceActiveFocus()
}
Keys.onLeftPressed: searchButton.forceActiveFocus()
KeyboardHighlight {
anchors.fill: parent
@ -622,13 +630,7 @@ MouseArea {
Keys.onReturnPressed: root.folio.HomeScreenState.openSearchWidget()
Keys.onEnterPressed: root.folio.HomeScreenState.openSearchWidget()
Keys.onSpacePressed: root.folio.HomeScreenState.openSearchWidget()
Keys.onLeftPressed: {
let lastTask = taskRepeater.itemAt(taskRepeater.count - 1)
if (lastTask) { lastTask.forceActiveFocus(); return }
let lastFav = repeater.itemAt(repeater.count - 1)
if (lastFav) { lastFav.keyboardFocus(); return }
desktopButton.forceActiveFocus()
}
Keys.onLeftPressed: trashButton.forceActiveFocus()
Keys.onRightPressed: overviewButton.forceActiveFocus()
KeyboardHighlight {
@ -684,7 +686,7 @@ MouseArea {
}
}
// ---- Virtual desktop pager: left wing (desktops 1 .. ceil(N/2)) ----
// ---- Virtual desktop pager: compact group next to the Desktop button ----
Repeater {
id: leftPagerRepeater
model: root.pagerLeftCount
@ -708,6 +710,36 @@ MouseArea {
y: 0
width: root.pagerButtonWidth
height: root.height
activeFocusOnTab: root.showPager
function activateDesktop() {
if (leftDesktopBtn.desktopId) {
root.folio.activateVirtualDesktop(leftDesktopBtn.desktopId)
}
}
Accessible.role: Accessible.Button
Accessible.name: root.pagerDesktopName(leftDesktopBtn.index)
Accessible.onPressAction: leftDesktopBtn.activateDesktop()
Keys.onReturnPressed: leftDesktopBtn.activateDesktop()
Keys.onEnterPressed: leftDesktopBtn.activateDesktop()
Keys.onSpacePressed: leftDesktopBtn.activateDesktop()
Keys.onLeftPressed: {
let previous = leftPagerRepeater.itemAt(index - 1)
if (previous) { previous.forceActiveFocus(); return }
desktopButton.forceActiveFocus()
}
Keys.onRightPressed: {
let next = leftPagerRepeater.itemAt(index + 1)
if (next) { next.forceActiveFocus(); return }
root.focusAfterPager()
}
KeyboardHighlight {
anchors.fill: parent
visible: leftDesktopBtn.activeFocus
}
MobileShell.MotionStateLayer {
anchors.fill: parent
@ -745,8 +777,8 @@ MouseArea {
root.hideDockToolTip(leftDesktopBtn)
if (mouse.button === Qt.RightButton) {
leftPagerContextMenu.open()
} else if (leftDesktopBtn.desktopId) {
root.folio.activateVirtualDesktop(leftDesktopBtn.desktopId)
} else {
leftDesktopBtn.activateDesktop()
}
}
onPressAndHold: {
@ -793,117 +825,7 @@ MouseArea {
}
}
// ---- Virtual desktop pager: right wing (desktops ceil(N/2)+1 .. N) ----
Repeater {
id: rightPagerRepeater
model: root.pagerRightCount
delegate: Item {
id: rightDesktopBtn
required property int index
readonly property int desktopIndex: root.pagerLeftCount + index
readonly property string desktopId: {
let ids = virtualDesktopInfo.desktopIds
return (ids && desktopIndex < ids.length) ? String(ids[desktopIndex]) : ""
}
readonly property bool isCurrent: desktopId !== "" && String(desktopId) === String(virtualDesktopInfo.currentDesktop)
readonly property bool isDragTarget: {
if (root.taskPinDragIndex < 0) return false
let cx = root.taskBaseX(root.taskPinDragIndex) + root.dockCellWidth / 2 + root.taskPinDragOffset
return root.pagerButtonDesktopAt(cx) === desktopId
}
x: root.width - root.navButtonWidth - root.searchButtonWidth - root.trashButtonWidth - (root.pagerRightCount - index) * root.pagerButtonWidth
y: 0
width: root.pagerButtonWidth
height: root.height
MobileShell.MotionStateLayer {
anchors.fill: parent
anchors.margins: root.dockItemInset
radius: Kirigami.Units.cornerRadius
hovered: rightPagerHover.containsMouse
pressed: rightPagerHover.containsPress
active: rightDesktopBtn.isCurrent || rightDesktopBtn.isDragTarget
pressedOpacity: 0.18
activeOpacity: 0.18
activeHoverOpacity: 0.25
}
PC3.Label {
anchors.centerIn: parent
text: (rightDesktopBtn.desktopIndex + 1).toString()
color: rightDesktopBtn.isCurrent ? Kirigami.Theme.highlightColor : Kirigami.Theme.textColor
font.pixelSize: Math.round(parent.height * 0.3)
font.bold: rightDesktopBtn.isCurrent
}
PC3.ToolTip {
visible: root.activeDockToolTipItem === rightDesktopBtn && rightPagerHover.containsMouse && !rightPagerHover.containsPress && !rightPagerContextMenu.opened
text: root.pagerDesktopName(rightDesktopBtn.desktopIndex)
}
MouseArea {
id: rightPagerHover
anchors.fill: parent
hoverEnabled: true
acceptedButtons: Qt.LeftButton | Qt.RightButton
cursorShape: Qt.PointingHandCursor
onWheel: (wheel) => root.handlePagerWheel(wheel)
onClicked: (mouse) => {
root.hideDockToolTip(rightDesktopBtn)
if (mouse.button === Qt.RightButton) {
rightPagerContextMenu.open()
} else if (rightDesktopBtn.desktopId) {
root.folio.activateVirtualDesktop(rightDesktopBtn.desktopId)
}
}
onPressAndHold: {
root.hideDockToolTip(rightDesktopBtn)
rightPagerContextMenu.open()
haptics.buttonVibrate()
}
onContainsMouseChanged: {
if (containsMouse) {
root.requestDockToolTip(rightDesktopBtn)
} else {
root.hideDockToolTip(rightDesktopBtn)
}
}
onPressedChanged: {
if (pressed) {
root.hideDockToolTip(rightDesktopBtn)
}
}
}
PC3.Menu {
id: rightPagerContextMenu
popupType: T.Popup.Window
PC3.MenuItem {
icon.name: "list-add"
text: i18n("Add Virtual Desktop")
onTriggered: root.folio.createVirtualDesktop()
}
PC3.MenuItem {
icon.name: "list-remove"
text: i18n("Remove Virtual Desktop")
enabled: virtualDesktopInfo.numberOfDesktops > 1
onTriggered: root.folio.removeLastVirtualDesktop()
}
Controls.MenuSeparator {}
PC3.MenuItem {
icon.name: "preferences-desktop-virtual"
text: i18n("Configure Virtual Desktops…")
onTriggered: MobileShell.ShellUtil.executeCommand("plasma-open-settings kcm_kwin_virtualdesktops")
}
}
}
}
// ---- Trash button (convergence mode, sits between the right pager wing and the Overview button) ----
// ---- Trash button (convergence mode, sits between Search and Overview) ----
// Watches ~/.local/share/Trash/files to detect empty/full state.
// FolderListModel reacts to directory changes automatically.
@ -960,6 +882,8 @@ MouseArea {
Keys.onReturnPressed: Qt.openUrlExternally("trash:/")
Keys.onEnterPressed: Qt.openUrlExternally("trash:/")
Keys.onSpacePressed: Qt.openUrlExternally("trash:/")
Keys.onLeftPressed: root.focusBeforeSearch()
Keys.onRightPressed: searchButton.forceActiveFocus()
KeyboardHighlight {
anchors.fill: parent

View file

@ -31,7 +31,6 @@ Item {
property real rightMargin: 0
property bool interactive: true
readonly property color favouritesBarScrimColor: Qt.rgba(Kirigami.Theme.highlightColor.r, Kirigami.Theme.highlightColor.g, Kirigami.Theme.highlightColor.b, 0.14)
// non-widget drop animation
readonly property bool dropAnimationRunning: delegateDragItem.dropAnimationRunning || widgetDragItem.dropAnimationRunning
@ -363,7 +362,9 @@ Item {
Rectangle {
id: favouritesBarScrim
color: root.favouritesBarScrimColor
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.38)
Component.onCompleted: maskManager.assignToMask(this)
@ -389,6 +390,8 @@ Item {
folio: root.folio
maskManager: root.maskManager
homeScreen: root
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
// don't show in settings mode
opacity: 1 - folio.HomeScreenState.settingsOpenProgress
@ -493,6 +496,7 @@ Item {
// don't show in settings mode
opacity: 1 - folio.HomeScreenState.settingsOpenProgress
visible: opacity > 0 && !ShellSettings.Settings.convergenceModeEnabled
anchors.top: parent.top
anchors.left: parent.left

View file

@ -246,10 +246,12 @@ ContainmentItem {
Rectangle {
id: appDrawerBackground
anchors.fill: parent
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
// Convergence: no scrim (popup has own background); mobile: dark scrim
color: ShellSettings.Settings.convergenceModeEnabled
? "transparent"
: Qt.rgba(0, 0, 0, 0.6)
: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.46)
opacity: folio.HomeScreenState.appDrawerOpenProgress
}
@ -257,7 +259,9 @@ ContainmentItem {
Rectangle {
id: searchWidgetBackground
anchors.fill: parent
color: Qt.rgba(0, 0, 0, 0.3)
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.30)
opacity: folio.HomeScreenState.searchWidgetOpenProgress
}
@ -265,7 +269,9 @@ ContainmentItem {
Rectangle {
id: settingsViewBackground
anchors.fill: parent
color: Qt.rgba(0, 0, 0, 0.3)
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Window
color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.30)
opacity: folio.HomeScreenState.settingsOpenProgress
}

View file

@ -1,10 +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="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"/>
<polyline points="104 72 104 136 192 136 224 200 248 192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="104" cy="48" r="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,96H112a64,64,0,0,0,0,128c29.82,0,56.9-20.4,64-48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 834 B

After

Width:  |  Height:  |  Size: 674 B

View file

@ -1,7 +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="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"/>
<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>

Before

Width:  |  Height:  |  Size: 503 B

After

Width:  |  Height:  |  Size: 503 B

View file

@ -1,9 +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="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 class="ColorScheme-Text" fill="currentColor">
<rect x="88" y="24" width="80" height="144" rx="40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="200" x2="128" y2="240" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M200,128a72,72,0,0,1-144,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 476 B

After

Width:  |  Height:  |  Size: 651 B

View file

@ -1,8 +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="132" r="84" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="128" y1="132" x2="128" y2="84" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="128" y1="132" x2="168" y2="156" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="128 72 128 128 184 128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 637 B

After

Width:  |  Height:  |  Size: 495 B

View file

@ -0,0 +1 @@
color-picker.svg

View file

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

View file

@ -1,10 +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="M128,24a104,104,0,0,0,0,208h16a24,24,0,0,0,0-48h-8a16,16,0,0,1,0-32h24a72,72,0,0,0,0-144Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<circle cx="84" cy="108" r="10"/>
<circle cx="116" cy="76" r="10"/>
<circle cx="160" cy="80" r="10"/>
<circle cx="184" cy="120" r="10"/>
<path d="M128,192a24,24,0,0,1,24-24h46.21a24,24,0,0,0,23.4-18.65A96.48,96.48,0,0,0,224,127.17c-.45-52.82-44.16-95.7-97-95.17a96,96,0,0,0-95,96c0,41.81,26.73,73.44,64,86.61A24,24,0,0,0,128,192Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="76" r="12"/><circle cx="84" cy="100" r="12"/><circle cx="84" cy="156" r="12"/><circle cx="172" cy="100" r="12"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 556 B

After

Width:  |  Height:  |  Size: 647 B

View file

@ -1,6 +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="40 144 96 200 216 56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polyline points="88 136 112 160 168 104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 495 B

View file

@ -1,8 +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="M152,40H72A16,16,0,0,0,56,56V200a16,16,0,0,0,16,16H184a16,16,0,0,0,16-16V88Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polyline points="152 40 152 88 200 88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M104,168l-8,32,32-8,66.34-66.34a16,16,0,0,0-22.63-22.63Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polygon points="128 160 96 160 96 128 192 32 224 64 128 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168" y1="56" x2="200" y2="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M216,128v80a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8h80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 715 B

After

Width:  |  Height:  |  Size: 695 B

View file

@ -1,8 +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,40H168l40,40V208a8,8,0,0,1-8,8H56a8,8,0,0,1-8-8Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polyline points="88 40 88 104 160 104 160 40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<rect x="88" y="152" width="80" height="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M216,83.31V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8H172.69a8,8,0,0,1,5.65,2.34l35.32,35.32A8,8,0,0,1,216,83.31Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M80,216V152a8,8,0,0,1,8-8h80a8,8,0,0,1,8,8v64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="72" x2="96" y2="72" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 675 B

After

Width:  |  Height:  |  Size: 748 B

View file

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

View file

@ -0,0 +1 @@
../../preferences/scalable/preferences-desktop-color.svg

View file

@ -1,9 +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="40" y="48" width="176" height="160" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="40" y1="160" x2="216" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<circle cx="80" cy="184" r="8"/>
<line x1="112" y1="184" x2="176" y2="184" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<rect x="40" y="144" width="176" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="40" y="48" width="176" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="180" cy="80" r="12"/><circle cx="180" cy="176" r="12"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 690 B

After

Width:  |  Height:  |  Size: 590 B

View file

@ -1,7 +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="M24,88V64A16,16,0,0,1,40,48h60.69a8,8,0,0,1,5.65,2.34l19.32,19.32A8,8,0,0,0,131.31,72H216a16,16,0,0,1,16,16V192a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="24" y1="96" x2="232" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M216.89,208H39.38A7.4,7.4,0,0,1,32,200.62V80H216a8,8,0,0,1,8,8V200.89A7.11,7.11,0,0,1,216.89,208Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M32,80V56a8,8,0,0,1,8-8H92.69a8,8,0,0,1,5.65,2.34L128,80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 595 B

View file

@ -1,10 +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="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<ellipse cx="128" cy="128" rx="40" ry="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M56,88c18,13.33,44.85,20,72,20s54-6.67,72-20" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M56,168c18-13.33,44.85-20,72-20s54,6.67,72,20" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<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>

Before

Width:  |  Height:  |  Size: 951 B

After

Width:  |  Height:  |  Size: 822 B

View file

@ -1,6 +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="96 48 176 128 96 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<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>

Before

Width:  |  Height:  |  Size: 360 B

After

Width:  |  Height:  |  Size: 503 B

View file

@ -1,12 +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="M96,144V80a16,16,0,0,1,32,0v48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M128,128V96a16,16,0,0,1,32,0v40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M160,136v-24a16,16,0,0,1,32,0v48a56,56,0,0,1-56,56h-8a56,56,0,0,1-56-56v-16a16,16,0,0,1,32,0v8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<circle cx="112" cy="48" r="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="112" y1="8" x2="112" y2="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="80" y1="20" x2="86" y2="26" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="144" y1="20" x2="138" y2="26" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M64,76a52,52,0,0,1,104,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M72,224,42.68,174a20,20,0,0,1,34.64-20L96,184V76a20,20,0,0,1,40,0v56a20,20,0,0,1,40,0v16a20,20,0,0,1,40,0v36c0,24-8,40-8,40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 589 B

View file

@ -0,0 +1 @@
dialog-information.svg

View file

@ -0,0 +1 @@
../../preferences/scalable/ktip.svg

View file

@ -1,11 +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="24" y="64" width="208" height="128" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="64" y1="104" x2="64.01" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<line x1="104" y1="104" x2="104.01" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<line x1="144" y1="104" x2="144.01" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<line x1="184" y1="104" x2="184.01" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<line x1="72" y1="152" x2="184" y2="152" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<rect x="24" y="56" width="208" height="144" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="96" x2="200" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="160" x2="64" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="160" x2="160" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="160" x2="200" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -1,8 +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="80" y="24" width="96" height="208" rx="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="128" y1="24" x2="128" y2="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="80" y1="96" x2="176" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<rect x="56" y="24" width="144" height="208" rx="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="112" x2="128" y2="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="112" x2="200" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 652 B

After

Width:  |  Height:  |  Size: 655 B

View file

@ -1,7 +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="56" x2="128" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="40" x2="128" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 502 B

After

Width:  |  Height:  |  Size: 502 B

View file

@ -1,6 +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="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 360 B

After

Width:  |  Height:  |  Size: 361 B

View file

@ -1,6 +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="32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="128" r="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="64" y1="64" x2="56" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="64" y1="192" x2="56" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="64" x2="200" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="192" x2="200" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="40" y1="128" x2="32" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="216" x2="128" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="216" y1="128" x2="224" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M108.11,28.11A96.09,96.09,0,0,0,227.89,147.89,96,96,0,1,1,108.11,28.11Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 402 B

View file

@ -1,7 +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="72" y="48" width="40" height="160" rx="8"/>
<rect x="144" y="48" width="40" height="160" rx="8"/>
<rect x="152" y="40" width="56" height="176" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="48" y="40" width="56" height="176" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 325 B

After

Width:  |  Height:  |  Size: 523 B

View file

@ -1,6 +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="72"/>
<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 253 B

After

Width:  |  Height:  |  Size: 353 B

View file

@ -1,8 +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" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="32" y="48" width="192" height="160" rx="8" fill="none"/>
<circle cx="68" cy="84" r="12" stroke="none"/>
<circle cx="108" cy="84" r="12" stroke="none"/>
<g class="ColorScheme-Text" fill="currentColor">
<rect x="32" y="48" width="192" height="160" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="68" cy="84" r="12"/><circle cx="108" cy="84" r="12"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 467 B

After

Width:  |  Height:  |  Size: 437 B

View file

@ -1,10 +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="88 48 48 48 48 88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polyline points="168 48 208 48 208 88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polyline points="208 168 208 208 168 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polyline points="88 208 48 208 48 168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<circle cx="128" cy="128" r="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M208,208H48a16,16,0,0,1-16-16V80A16,16,0,0,1,48,64H80L96,40h64l16,24h32a16,16,0,0,1,16,16V192A16,16,0,0,1,208,208Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="132" r="36" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 916 B

After

Width:  |  Height:  |  Size: 578 B

View file

@ -1,10 +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="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M40 176a96 96 0 0 1 176 0"/>
<line x1="128" y1="176" x2="176" y2="112"/>
<line x1="72" y1="176" x2="184" y2="176"/>
<line x1="80" y1="112" x2="96" y2="128"/>
<line x1="128" y1="80" x2="128" y2="104"/>
<g class="ColorScheme-Text" fill="currentColor">
<line x1="120" y1="160" x2="216" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M56.44,160a73,73,0,0,1-.44-8,72.06,72.06,0,0,1,95-68.25" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M220.62,104.64a104.38,104.38,0,0,1,5.48,82,8,8,0,0,1-7.57,5.37H37.46a8.05,8.05,0,0,1-7.57-5.41A104.06,104.06,0,0,1,24,151.19C24.44,94,71.73,47.49,129,48a103.68,103.68,0,0,1,46.4,11.38" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 507 B

After

Width:  |  Height:  |  Size: 821 B

View file

@ -1,8 +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="32" width="160" height="192" rx="20" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="96" y1="64" x2="160" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<circle cx="128" cy="184" r="10"/>
<rect x="32" y="48" width="192" height="160" rx="16" transform="translate(256) rotate(90)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="48" y1="64" x2="208" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="48" y1="192" x2="208" y2="192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 547 B

After

Width:  |  Height:  |  Size: 691 B

View file

@ -1,8 +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="100" cy="124" r="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M148,68a72,72,0,1,1-48,132c24,0,40-16,40-36s-16-32-32-32H92a24,24,0,0,1,0-48h16a40,40,0,0,0,40-16Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<circle cx="172" cy="88" r="12"/>
<path d="M128,192a24,24,0,0,1,24-24h46.21a24,24,0,0,0,23.4-18.65A96.48,96.48,0,0,0,224,127.17c-.45-52.82-44.16-95.7-97-95.17a96,96,0,0,0-95,96c0,41.81,26.73,73.44,64,86.61A24,24,0,0,0,128,192Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="76" r="12"/><circle cx="84" cy="100" r="12"/><circle cx="84" cy="156" r="12"/><circle cx="172" cy="100" r="12"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 596 B

After

Width:  |  Height:  |  Size: 647 B

View file

@ -1,9 +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="40" y="56" width="176" height="120" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="88" y1="208" x2="168" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M120,112V88a12,12,0,0,1,24,0v32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M144,120V104a12,12,0,0,1,24,0v28a40,40,0,0,1-40,40h-4a40,40,0,0,1-40-40v-12a12,12,0,0,1,24,0v4" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M64,76a52,52,0,0,1,104,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M72,224,42.68,174a20,20,0,0,1,34.64-20L96,184V76a20,20,0,0,1,40,0v56a20,20,0,0,1,40,0v16a20,20,0,0,1,40,0v36c0,24-8,40-8,40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 863 B

After

Width:  |  Height:  |  Size: 589 B

View file

@ -1,10 +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" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<line x1="216" y1="56" x2="40" y2="56"/>
<line x1="104" y1="104" x2="104" y2="176"/>
<line x1="152" y1="104" x2="152" y2="176"/>
<path d="M200,56l-8,152a16,16,0,0,1-16,16H80a16,16,0,0,1-16-16L56,56" fill="none"/>
<path d="M96,56V40a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V56" fill="none"/>
<g class="ColorScheme-Text" fill="currentColor">
<line x1="216" y1="56" x2="40" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="104" x2="104" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="104" x2="152" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,56V40a16,16,0,0,0-16-16H104A16,16,0,0,0,88,40V56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 595 B

After

Width:  |  Height:  |  Size: 963 B

View file

@ -1,7 +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="88" r="40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M56,216c12.53-35.11,39-56,72-56s59.47,20.89,72,56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<circle cx="128" cy="96" r="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M32,216c19.37-33.47,54.55-56,96-56s76.63,22.53,96,56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 512 B

After

Width:  |  Height:  |  Size: 515 B

View file

@ -1,12 +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="40" y="40" width="56" height="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<rect x="160" y="40" width="56" height="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<rect x="40" y="160" width="56" height="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="136" y1="136" x2="136" y2="176" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="176" y1="136" x2="216" y2="136" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="176" y1="176" x2="176" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="136" y1="216" x2="216" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<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="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="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="144" y1="144" x2="144" y2="176" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="144 208 176 208 176 144" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="176" y1="160" x2="208" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="208" y1="192" x2="208" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1,14 +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="40" y="48" width="176" height="168" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="40" y1="96" x2="216" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="88" y1="32" x2="88" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="168" y1="32" x2="168" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<circle cx="92" cy="136" r="8"/>
<circle cx="128" cy="136" r="8"/>
<circle cx="164" cy="136" r="8"/>
<circle cx="92" cy="172" r="8"/>
<circle cx="128" cy="172" r="8"/>
<rect x="40" y="40" width="176" height="176" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="176" y1="24" x2="176" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="24" x2="80" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="40" y1="88" x2="216" y2="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="88 128 104 120 104 184" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M138.14,128a16,16,0,1,1,26.64,17.63L136,184h32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 960 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,6 +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="M40,56H216l-72,80v56l-32,16V136Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<path d="M34.1,61.38A8,8,0,0,1,40,48H216a8,8,0,0,1,5.92,13.38L152,136v58.65a8,8,0,0,1-3.56,6.66l-32,21.33A8,8,0,0,1,104,216V136Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 450 B

View file

@ -1,6 +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 24 64 192 232 192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="24" y1="64" x2="64" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 64 192 64 192 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="192" x2="192" y2="232" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polyline points="160 48 208 48 208 96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="104" x2="208" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 208 48 208 48 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="152" x2="48" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="208 160 208 208 160 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="152" x2="208" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="48 96 48 48 96 48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="104" x2="48" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 780 B

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -1,6 +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 24 64 192 232 192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="24" y1="64" x2="64" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 64 192 64 192 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="192" x2="192" y2="232" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<polyline points="160 48 208 48 208 96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="104" x2="208" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 208 48 208 48 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="152" x2="48" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="208 160 208 208 160 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="152" x2="208" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="48 96 48 48 96 48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="104" x2="48" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 780 B

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1 @@
preferences-system-windows-effect-eyeonscreen.svg

View file

@ -0,0 +1 @@
../../preferences/scalable/preferences-desktop-effects.svg

View file

@ -1,6 +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="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="56" y="56" width="144" height="144" rx="8"/>
<g class="ColorScheme-Text" fill="currentColor">
<rect x="40" y="40" width="176" height="176" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 372 B

View file

@ -1,6 +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="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<line x1="64" y1="184" x2="192" y2="184"/>
<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"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 361 B

View file

@ -1,6 +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="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M96 32h64l-16 56 40 40-56 16-40 80-16-16 40-80-40-40 56-16Z"/>
<g class="ColorScheme-Text" fill="currentColor">
<path d="M229.66,98.34a8,8,0,0,0,0-11.31L169,26.34a8,8,0,0,0-11.31,0L100.39,83.8S72.64,69.93,43,93.85a8,8,0,0,0-.65,11.91l107.9,107.89a8,8,0,0,0,12-.83c8.39-11.16,21.57-34.09,10.11-57Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96.29" y1="159.71" x2="48" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 652 B

View file

@ -1,7 +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="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="64" y="80" width="112" height="112" rx="8"/>
<path d="M96 80V48h112v112h-32"/>
<g class="ColorScheme-Text" fill="currentColor">
<polyline points="168 168 216 168 216 40 88 40 88 88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="40" y="88" width="128" height="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 385 B

After

Width:  |  Height:  |  Size: 519 B

View file

@ -1,9 +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="112" cy="112" r="72" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="163" y1="163" x2="216" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="112" y1="80" x2="112" y2="144" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="80" y1="112" x2="144" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="80" y1="112" x2="144" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="112" y1="80" x2="112" y2="144" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 779 B

After

Width:  |  Height:  |  Size: 783 B

View file

@ -1,8 +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="112" cy="112" r="72" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="163" y1="163" x2="216" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="80" y1="112" x2="144" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
<line x1="80" y1="112" x2="144" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 637 B

After

Width:  |  Height:  |  Size: 642 B

View file

@ -1,11 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bef264" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="48" y="88" width="144" height="80" rx="16"/>
<line x1="208" y1="112" x2="208" y2="144"/>
<line x1="84" y1="112" x2="84" y2="144"/>
<line x1="120" y1="112" x2="120" y2="144"/>
<line x1="156" y1="112" x2="156" y2="144"/>
<g style="color:#ffffff" fill="currentColor">
<rect x="16" y="64" width="200" height="128" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="96" x2="96" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="96" x2="56" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="248" y1="96" x2="248" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 560 B

After

Width:  |  Height:  |  Size: 853 B

View file

@ -1,9 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<circle cx="128" cy="128" r="72"/>
<path d="M120 120h8v48h8"/>
<line x1="124" y1="88" x2="124" y2="88" stroke-width="24"/>
<g style="color:#ffffff" fill="currentColor">
<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M120,120a8,8,0,0,1,8,8v40a8,8,0,0,0,8,8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="124" cy="84" r="12"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 454 B

After

Width:  |  Height:  |  Size: 596 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#7c3aed"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#ddd6fe" fill-opacity="0.18"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<circle cx="88" cy="176" r="24"/>
<circle cx="176" cy="152" r="24"/>
<path d="M112 176V80l88-24v96"/>
<line x1="112" y1="104" x2="200" y2="80"/>
<g style="color:#ffffff" 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>

Before

Width:  |  Height:  |  Size: 477 B

After

Width:  |  Height:  |  Size: 865 B

View file

@ -1,12 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#15803d"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bbf7d0" fill-opacity="0.18"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M64 160v-24a64 64 0 0 1 128 0v24"/>
<rect x="56" y="128" width="144" height="64" rx="16"/>
<line x1="88" y1="88" x2="68" y2="60"/>
<line x1="168" y1="88" x2="188" y2="60"/>
<line x1="104" y1="160" x2="104" y2="160" stroke-width="24"/>
<line x1="152" y1="160" x2="152" y2="160" stroke-width="24"/>
<g style="color:#ffffff" fill="currentColor">
<circle cx="164" cy="148" r="12"/><circle cx="92" cy="148" r="12"/><path d="M24,184V161.13C24,103.65,70.15,56.2,127.63,56A104,104,0,0,1,232,160v24a8,8,0,0,1-8,8H32A8,8,0,0,1,24,184Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="32" y1="48" x2="63.07" y2="79.07" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="224" y1="48" x2="193.1" y2="78.9" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 638 B

After

Width:  |  Height:  |  Size: 852 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#67e8f9" fill-opacity="0.16"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="48" y="72" width="160" height="112" rx="16"/>
<line x1="80" y1="112" x2="176" y2="112"/>
<line x1="80" y1="144" x2="176" y2="144"/>
<line x1="104" y1="176" x2="152" y2="176"/>
<g style="color:#ffffff" fill="currentColor">
<rect x="24" y="56" width="208" height="144" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="96" x2="200" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="160" x2="64" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="160" x2="160" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="160" x2="200" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 517 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,9 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<circle cx="112" cy="112" r="56"/>
<line x1="152" y1="152" x2="200" y2="200"/>
<line x1="88" y1="112" x2="136" y2="112"/>
<g style="color:#ffffff" fill="currentColor">
<circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 453 B

After

Width:  |  Height:  |  Size: 561 B

View file

@ -1,11 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<circle cx="84" cy="128" r="32"/>
<circle cx="172" cy="88" r="28"/>
<circle cx="172" cy="176" r="28"/>
<line x1="113" y1="115" x2="147" y2="100"/>
<line x1="113" y1="141" x2="147" y2="164"/>
<g style="color:#ffffff" fill="currentColor">
<line x1="160" y1="72" x2="160" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="120" y1="112" x2="120" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="152" x2="80" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="40" y1="192" x2="40" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 523 B

After

Width:  |  Height:  |  Size: 844 B

View file

@ -1,12 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="72" y="48" width="112" height="64" rx="12"/>
<path d="M128 112v40"/>
<path d="M80 152h96v40"/>
<path d="M80 152v40"/>
<rect x="48" y="192" width="64" height="32" rx="8"/>
<rect x="144" y="192" width="64" height="32" rx="8"/>
<g style="color:#ffffff" fill="currentColor">
<line x1="160" y1="72" x2="160" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="120" y1="112" x2="120" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="152" x2="80" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="40" y1="192" x2="40" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 566 B

After

Width:  |  Height:  |  Size: 844 B

View file

@ -1,12 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M56 104a104 104 0 0 1 144 0"/>
<path d="M84 132a64 64 0 0 1 88 0"/>
<path d="M112 160a24 24 0 0 1 32 0"/>
<circle cx="128" cy="196" r="10" fill="#ffffff" stroke="none"/>
<line x1="184" y1="164" x2="184" y2="212"/>
<line x1="160" y1="188" x2="208" y2="188"/>
<g style="color:#ffffff" fill="currentColor">
<circle cx="128" cy="128" r="32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M181.67,80a71.94,71.94,0,0,1,0,96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M74.33,176a71.94,71.94,0,0,1,0-96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M208,49.62a111.88,111.88,0,0,1,0,156.76" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M48,206.38A111.88,111.88,0,0,1,48,49.62" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 599 B

After

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

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M48 104a112 112 0 0 1 160 0"/>
<path d="M80 136a68 68 0 0 1 96 0"/>
<path d="M112 168a24 24 0 0 1 32 0"/>
<circle cx="128" cy="200" r="10" fill="#ffffff" stroke="none"/>
<g style="color:#ffffff" fill="currentColor">
<circle cx="128" cy="204" r="12"/><path d="M232,93.19a164,164,0,0,0-208,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M200,129a116,116,0,0,0-144,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,165a68,68,0,0,0-80,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 511 B

After

Width:  |  Height:  |  Size: 731 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<circle cx="112" cy="112" r="56"/>
<line x1="152" y1="152" x2="200" y2="200"/>
<path d="M92 112h40"/>
<path d="M112 92v40"/>
<g style="color:#ffffff" fill="currentColor">
<circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 456 B

After

Width:  |  Height:  |  Size: 561 B

View file

@ -1,11 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#14b8a6" fill-opacity="0.18"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<circle cx="128" cy="68" r="16" fill="#ffffff" stroke="none"/>
<path d="M72 108c18.67-8 37.33-12 56-12s37.33 4 56 12"/>
<line x1="128" y1="96" x2="128" y2="196"/>
<line x1="128" y1="132" x2="88" y2="208"/>
<line x1="128" y1="132" x2="168" y2="208"/>
<g style="color:#ffffff" fill="currentColor">
<polyline points="104 72 104 136 192 136 224 200 248 192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="104" cy="48" r="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,96H112a64,64,0,0,0,0,128c29.82,0,56.9-20.4,64-48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 582 B

After

Width:  |  Height:  |  Size: 735 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c7d2fe" fill-opacity="0.18"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="56" y="56" width="56" height="56" rx="10"/>
<rect x="144" y="56" width="56" height="56" rx="10"/>
<rect x="56" y="144" width="56" height="56" rx="10"/>
<rect x="144" y="144" width="56" height="56" rx="10"/>
<g style="color:#ffffff" 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>

Before

Width:  |  Height:  |  Size: 548 B

After

Width:  |  Height:  |  Size: 885 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c4b5fd" fill-opacity="0.16"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="64" y="72" width="112" height="112" rx="24"/>
<path d="M184 96h24"/>
<path d="M184 128h32"/>
<path d="M184 160h24"/>
<g style="color:#ffffff" fill="currentColor">
<polyline points="160 48 208 48 208 96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="104" x2="208" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 208 48 208 48 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="152" x2="48" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="208 160 208 208 160 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="152" x2="208" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="48 96 48 48 96 48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="104" x2="48" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 458 B

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<circle cx="112" cy="112" r="56"/>
<line x1="152" y1="152" x2="200" y2="200"/>
<path d="M84 112h56"/>
<path d="M112 84v56"/>
<g style="color:#ffffff" fill="currentColor">
<circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 456 B

After

Width:  |  Height:  |  Size: 561 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#1d4ed8"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#93c5fd" fill-opacity="0.16"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="64" y="64" width="48" height="48" rx="10"/>
<rect x="144" y="64" width="48" height="48" rx="10"/>
<rect x="64" y="144" width="48" height="48" rx="10"/>
<rect x="144" y="144" width="48" height="48" rx="10"/>
<g style="color:#ffffff" 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>

Before

Width:  |  Height:  |  Size: 548 B

After

Width:  |  Height:  |  Size: 885 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#1d4ed8"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#60a5fa" fill-opacity="0.16"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="48" y="64" width="160" height="108" rx="16"/>
<line x1="96" y1="204" x2="160" y2="204"/>
<line x1="112" y1="172" x2="104" y2="204"/>
<line x1="144" y1="172" x2="152" y2="204"/>
<g style="color:#ffffff" fill="currentColor">
<rect x="32" y="48" width="192" height="144" rx="16" transform="translate(256 240) rotate(180)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="160" y1="224" x2="96" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 518 B

After

Width:  |  Height:  |  Size: 618 B

View file

@ -1,9 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M64 80h128a16 16 0 0 1 16 16v64a16 16 0 0 1-16 16h-48l-40 32v-32H64a16 16 0 0 1-16-16V96a16 16 0 0 1 16-16Z"/>
<line x1="92" y1="120" x2="164" y2="120"/>
<line x1="92" y1="148" x2="140" y2="148"/>
<g style="color:#ffffff" fill="currentColor">
<path d="M96,192a32,32,0,0,0,64,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M56,104a72,72,0,0,1,144,0c0,35.82,8.3,64.6,14.9,76A8,8,0,0,1,208,192H48a8,8,0,0,1-6.88-12C47.71,168.6,56,139.81,56,104Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 537 B

After

Width:  |  Height:  |  Size: 645 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c7d2fe" fill-opacity="0.18"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M80 48h72l40 40v120H80Z"/>
<path d="M152 48v40h40"/>
<line x1="104" y1="128" x2="152" y2="128"/>
<line x1="104" y1="160" x2="176" y2="160"/>
<g style="color:#ffffff" 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>

Before

Width:  |  Height:  |  Size: 482 B

After

Width:  |  Height:  |  Size: 382 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#db2777"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#fbcfe8" fill-opacity="0.18"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M72 184 120 64h16l48 120"/>
<line x1="96" y1="136" x2="160" y2="136"/>
<line x1="192" y1="64" x2="192" y2="112"/>
<line x1="168" y1="88" x2="216" y2="88"/>
<g style="color:#ffffff" 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>

Before

Width:  |  Height:  |  Size: 497 B

After

Width:  |  Height:  |  Size: 564 B

View file

@ -1,8 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#be123c"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#fda4af" fill-opacity="0.16"/>
<g fill="#ffffff">
<path d="M73 184 119 68h18l46 116h-20l-11-30H104l-11 30zm38-48h34l-17-46z"/>
<path d="M163 180c-13 0-23-8-23-20 0-14 13-21 32-21h12v-3c0-10-6-16-18-16-8 0-15 3-22 8l-8-13c9-7 20-11 33-11 22 0 35 12 35 32v48h-18l-1-9c-5 4-12 5-22 5zm6-15c9 0 15-4 15-11v-3h-10c-10 0-15 3-15 9 0 4 4 5 10 5z"/>
<g style="color:#ffffff" fill="currentColor">
<polygon points="128 160 96 160 96 128 192 32 224 64 128 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168" y1="56" x2="200" y2="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M216,128v80a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8h80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 545 B

After

Width:  |  Height:  |  Size: 756 B

View file

@ -1,11 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#7c3aed"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#ddd6fe" fill-opacity="0.18"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M80 88h96a48 48 0 0 1 46 62l-12 40a20 20 0 0 1-34 8l-28-30h-40l-28 30a20 20 0 0 1-34-8l-12-40a48 48 0 0 1 46-62Z"/>
<line x1="80" y1="128" x2="112" y2="128"/>
<line x1="96" y1="112" x2="96" y2="144"/>
<line x1="160" y1="124" x2="160" y2="124" stroke-width="24"/>
<line x1="188" y1="140" x2="188" y2="140" stroke-width="24"/>
<g style="color:#ffffff" 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>

Before

Width:  |  Height:  |  Size: 666 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#67e8f9" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M96 144V80a16 16 0 0 1 32 0v48"/>
<path d="M128 128V96a16 16 0 0 1 32 0v40"/>
<path d="M160 136v-24a16 16 0 0 1 32 0v48a56 56 0 0 1-56 56h-8a56 56 0 0 1-56-56v-16a16 16 0 0 1 32 0v8"/>
<circle cx="112" cy="48" r="16"/>
<g style="color:#ffffff" fill="currentColor">
<path d="M64,76a52,52,0,0,1,104,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M72,224,42.68,174a20,20,0,0,1,34.64-20L96,184V76a20,20,0,0,1,40,0v56a20,20,0,0,1,40,0v16a20,20,0,0,1,40,0v36c0,24-8,40-8,40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 560 B

After

Width:  |  Height:  |  Size: 650 B

View file

@ -1,12 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#334155"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#94a3b8" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="36" y="76" width="184" height="112" rx="20"/>
<line x1="76" y1="112" x2="76.01" y2="112" stroke-width="20"/>
<line x1="112" y1="112" x2="112.01" y2="112" stroke-width="20"/>
<line x1="148" y1="112" x2="148.01" y2="112" stroke-width="20"/>
<line x1="184" y1="112" x2="184.01" y2="112" stroke-width="20"/>
<line x1="88" y1="152" x2="168" y2="152"/>
<g style="color:#ffffff" fill="currentColor">
<rect x="24" y="56" width="208" height="144" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="96" x2="200" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="160" x2="64" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="160" x2="160" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="160" x2="200" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 688 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,11 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0369a1"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#7dd3fc" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="14">
<circle cx="128" cy="128" r="72"/>
<ellipse cx="128" cy="128" rx="32" ry="72"/>
<line x1="56" y1="128" x2="200" y2="128"/>
<path d="M72 92c14 10 35 16 56 16s42-6 56-16"/>
<path d="M72 164c14-10 35-16 56-16s42 6 56 16"/>
<g style="color:#ffffff" 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>

Before

Width:  |  Height:  |  Size: 552 B

After

Width:  |  Height:  |  Size: 883 B

View file

@ -1,9 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#475569"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#cbd5e1" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="80" y="44" width="96" height="168" rx="48"/>
<line x1="128" y1="44" x2="128" y2="96"/>
<line x1="80" y1="104" x2="176" y2="104"/>
<g style="color:#ffffff" fill="currentColor">
<rect x="56" y="24" width="144" height="208" rx="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="112" x2="128" y2="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="112" x2="200" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 471 B

After

Width:  |  Height:  |  Size: 716 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#7c3aed"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#ddd6fe" fill-opacity="0.18"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<path d="M64 184h128"/>
<path d="M88 184V112a40 40 0 0 1 80 0v72"/>
<path d="M112 208a24 24 0 0 0 32 0"/>
<path d="M128 56V40"/>
<g style="color:#ffffff" fill="currentColor">
<path d="M96,192a32,32,0,0,0,64,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M56,104a72,72,0,0,1,144,0c0,35.82,8.3,64.6,14.9,76A8,8,0,0,1,208,192H48a8,8,0,0,1-6.88-12C47.71,168.6,56,139.81,56,104Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 461 B

After

Width:  |  Height:  |  Size: 646 B

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#475569"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#cbd5e1" fill-opacity="0.14"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<rect x="52" y="84" width="88" height="88" rx="16"/>
<rect x="160" y="64" width="44" height="128" rx="22"/>
<line x1="182" y1="64" x2="182" y2="104"/>
<line x1="76" y1="200" x2="116" y2="200"/>
<g style="color:#ffffff" fill="currentColor">
<rect x="40" y="144" width="176" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="40" y="48" width="176" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="180" cy="80" r="12"/><circle cx="180" cy="176" r="12"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 526 B

After

Width:  |  Height:  |  Size: 651 B

View file

@ -1,15 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c7d2fe" fill-opacity="0.18"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<circle cx="128" cy="128" r="40"/>
<path d="M128 48v24"/>
<path d="M128 184v24"/>
<path d="M48 128h24"/>
<path d="M184 128h24"/>
<path d="M72 72l17 17"/>
<path d="M167 167l17 17"/>
<path d="M184 72l-17 17"/>
<path d="M89 167l-17 17"/>
<g style="color:#ffffff" 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>

Before

Width:  |  Height:  |  Size: 567 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,8 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c4b5fd" fill-opacity="0.15"/>
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
<circle cx="112" cy="112" r="52"/>
<line x1="152" y1="152" x2="196" y2="196"/>
<g style="color:#ffffff" fill="currentColor">
<circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 411 B

After

Width:  |  Height:  |  Size: 562 B

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