From 89ec18a8e4269563737a253bcbbe788ca4644c36 Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Sun, 12 Jan 2025 22:51:24 -0500 Subject: [PATCH] feat: bake in light and dark icon theme --- src/apps/deskflow-gui/MainWindow.cpp | 39 ++-- src/apps/deskflow-gui/MainWindow.ui | 12 +- src/apps/deskflow-gui/dialogs/AboutDialog.cpp | 13 +- .../dialogs/ServerConfigDialog.cpp | 5 +- .../dialogs/ServerConfigDialog.ui | 3 - .../deskflow-gui/dialogs/SettingsDialog.cpp | 12 +- .../deskflow-gui/dialogs/SettingsDialog.ui | 4 +- src/apps/deskflow-gui/main.cpp | 4 + src/apps/res/deskflow.qrc | 56 +++++- src/apps/res/icons/128x128/tray-dark.png | Bin 4274 -> 0 bytes src/apps/res/icons/128x128/tray-light.png | Bin 4504 -> 0 bytes src/apps/res/icons/128x128/tray.png | Bin 8582 -> 0 bytes src/apps/res/icons/64x64/copy-dark.png | Bin 1206 -> 0 bytes src/apps/res/icons/64x64/copy-light.png | Bin 1867 -> 0 bytes src/apps/res/icons/64x64/folder.png | Bin 919 -> 0 bytes src/apps/res/icons/64x64/padlock.png | Bin 1828 -> 0 bytes src/apps/res/icons/64x64/user-trash.png | Bin 3815 -> 0 bytes src/apps/res/icons/64x64/video-display.png | Bin 2579 -> 0 bytes .../actions/16/document-open.svg | 7 + .../deskflow-dark/actions/16/edit-copy.svg | 8 + .../res/icons/deskflow-dark/actions/16@2x | 1 + .../res/icons/deskflow-dark/actions/16@3x | 1 + .../actions/22/document-open.svg | 7 + .../deskflow-dark/actions/22/edit-copy.svg | 8 + .../res/icons/deskflow-dark/actions/22@2x | 1 + .../res/icons/deskflow-dark/actions/22@3x | 1 + .../actions/24/document-open.svg | 8 + .../deskflow-dark/actions/24/edit-copy.svg | 13 ++ .../res/icons/deskflow-dark/actions/24@2x | 1 + .../res/icons/deskflow-dark/actions/24@3x | 1 + .../actions/32/dialog-cancel.svg | 13 ++ .../actions/32/dialog-ok-apply.svg | 1 + .../deskflow-dark/actions/32/dialog-ok.svg | 1 + .../actions/32/document-open.svg | 7 + .../res/icons/deskflow-dark/actions/32@2x | 1 + .../res/icons/deskflow-dark/actions/32@3x | 1 + .../apps/64/deskflow-symbolic.svg | 29 +++ .../icons/deskflow-dark/apps/64/deskflow.svg | 29 +++ .../devices/64/video-display.svg | 89 +++++++++ src/apps/res/icons/deskflow-dark/index.theme | 177 ++++++++++++++++++ .../deskflow-dark/places/64/user-trash.svg | 11 ++ .../deskflow-dark/status/64/dialog-error.svg | 25 +++ .../status/64/dialog-information.svg | 25 +++ .../status/64/dialog-positive.svg | 25 +++ .../status/64/dialog-question.svg | 25 +++ .../status/64/dialog-warning.svg | 25 +++ .../deskflow-dark/status/64/security-high.svg | 29 +++ .../deskflow-dark/status/64/security-low.svg | 29 +++ .../status/64/security-medium.svg | 29 +++ .../actions/16/document-open.svg | 13 ++ .../deskflow-light/actions/16/edit-copy.svg | 11 ++ .../res/icons/deskflow-light/actions/16@2x | 1 + .../res/icons/deskflow-light/actions/16@3x | 1 + .../actions/22/document-open.svg | 14 ++ .../deskflow-light/actions/22/edit-copy.svg | 11 ++ .../res/icons/deskflow-light/actions/22@2x | 1 + .../res/icons/deskflow-light/actions/22@3x | 1 + .../actions/24/document-open.svg | 12 ++ .../deskflow-light/actions/24/edit-copy.svg | 13 ++ .../res/icons/deskflow-light/actions/24@2x | 1 + .../res/icons/deskflow-light/actions/24@3x | 1 + .../actions/32/dialog-cancel.svg | 13 ++ .../actions/32/dialog-ok-apply.svg | 1 + .../deskflow-light/actions/32/dialog-ok.svg | 1 + .../actions/32/document-open.svg | 13 ++ .../res/icons/deskflow-light/actions/32@2x | 1 + .../res/icons/deskflow-light/actions/32@3x | 1 + .../apps/64/deskflow-symbolic.svg | 29 +++ .../icons/deskflow-light/apps/64/deskflow.svg | 29 +++ .../devices/64/video-display.svg | 89 +++++++++ src/apps/res/icons/deskflow-light/index.theme | 177 ++++++++++++++++++ .../deskflow-light/places/64/user-trash.svg | 11 ++ .../deskflow-light/status/64/dialog-error.svg | 25 +++ .../status/64/dialog-information.svg | 25 +++ .../status/64/dialog-positive.svg | 25 +++ .../status/64/dialog-question.svg | 25 +++ .../status/64/dialog-warning.svg | 25 +++ .../status/64/security-high.svg | 29 +++ .../deskflow-light/status/64/security-low.svg | 29 +++ .../status/64/security-medium.svg | 29 +++ src/lib/gui/config/Screen.h | 3 +- src/lib/gui/style_utils.h | 37 ++++ 82 files changed, 1411 insertions(+), 62 deletions(-) delete mode 100644 src/apps/res/icons/128x128/tray-dark.png delete mode 100644 src/apps/res/icons/128x128/tray-light.png delete mode 100644 src/apps/res/icons/128x128/tray.png delete mode 100644 src/apps/res/icons/64x64/copy-dark.png delete mode 100644 src/apps/res/icons/64x64/copy-light.png delete mode 100644 src/apps/res/icons/64x64/folder.png delete mode 100644 src/apps/res/icons/64x64/padlock.png delete mode 100644 src/apps/res/icons/64x64/user-trash.png delete mode 100644 src/apps/res/icons/64x64/video-display.png create mode 100644 src/apps/res/icons/deskflow-dark/actions/16/document-open.svg create mode 100644 src/apps/res/icons/deskflow-dark/actions/16/edit-copy.svg create mode 120000 src/apps/res/icons/deskflow-dark/actions/16@2x create mode 120000 src/apps/res/icons/deskflow-dark/actions/16@3x create mode 100644 src/apps/res/icons/deskflow-dark/actions/22/document-open.svg create mode 100644 src/apps/res/icons/deskflow-dark/actions/22/edit-copy.svg create mode 120000 src/apps/res/icons/deskflow-dark/actions/22@2x create mode 120000 src/apps/res/icons/deskflow-dark/actions/22@3x create mode 100644 src/apps/res/icons/deskflow-dark/actions/24/document-open.svg create mode 100644 src/apps/res/icons/deskflow-dark/actions/24/edit-copy.svg create mode 120000 src/apps/res/icons/deskflow-dark/actions/24@2x create mode 120000 src/apps/res/icons/deskflow-dark/actions/24@3x create mode 100644 src/apps/res/icons/deskflow-dark/actions/32/dialog-cancel.svg create mode 100644 src/apps/res/icons/deskflow-dark/actions/32/dialog-ok-apply.svg create mode 120000 src/apps/res/icons/deskflow-dark/actions/32/dialog-ok.svg create mode 100644 src/apps/res/icons/deskflow-dark/actions/32/document-open.svg create mode 120000 src/apps/res/icons/deskflow-dark/actions/32@2x create mode 120000 src/apps/res/icons/deskflow-dark/actions/32@3x create mode 100644 src/apps/res/icons/deskflow-dark/apps/64/deskflow-symbolic.svg create mode 100644 src/apps/res/icons/deskflow-dark/apps/64/deskflow.svg create mode 100644 src/apps/res/icons/deskflow-dark/devices/64/video-display.svg create mode 100644 src/apps/res/icons/deskflow-dark/index.theme create mode 100644 src/apps/res/icons/deskflow-dark/places/64/user-trash.svg create mode 100644 src/apps/res/icons/deskflow-dark/status/64/dialog-error.svg create mode 100644 src/apps/res/icons/deskflow-dark/status/64/dialog-information.svg create mode 100644 src/apps/res/icons/deskflow-dark/status/64/dialog-positive.svg create mode 100644 src/apps/res/icons/deskflow-dark/status/64/dialog-question.svg create mode 100644 src/apps/res/icons/deskflow-dark/status/64/dialog-warning.svg create mode 100644 src/apps/res/icons/deskflow-dark/status/64/security-high.svg create mode 100644 src/apps/res/icons/deskflow-dark/status/64/security-low.svg create mode 100644 src/apps/res/icons/deskflow-dark/status/64/security-medium.svg create mode 100644 src/apps/res/icons/deskflow-light/actions/16/document-open.svg create mode 100644 src/apps/res/icons/deskflow-light/actions/16/edit-copy.svg create mode 120000 src/apps/res/icons/deskflow-light/actions/16@2x create mode 120000 src/apps/res/icons/deskflow-light/actions/16@3x create mode 100644 src/apps/res/icons/deskflow-light/actions/22/document-open.svg create mode 100644 src/apps/res/icons/deskflow-light/actions/22/edit-copy.svg create mode 120000 src/apps/res/icons/deskflow-light/actions/22@2x create mode 120000 src/apps/res/icons/deskflow-light/actions/22@3x create mode 100644 src/apps/res/icons/deskflow-light/actions/24/document-open.svg create mode 100644 src/apps/res/icons/deskflow-light/actions/24/edit-copy.svg create mode 120000 src/apps/res/icons/deskflow-light/actions/24@2x create mode 120000 src/apps/res/icons/deskflow-light/actions/24@3x create mode 100644 src/apps/res/icons/deskflow-light/actions/32/dialog-cancel.svg create mode 100644 src/apps/res/icons/deskflow-light/actions/32/dialog-ok-apply.svg create mode 120000 src/apps/res/icons/deskflow-light/actions/32/dialog-ok.svg create mode 100644 src/apps/res/icons/deskflow-light/actions/32/document-open.svg create mode 120000 src/apps/res/icons/deskflow-light/actions/32@2x create mode 120000 src/apps/res/icons/deskflow-light/actions/32@3x create mode 100644 src/apps/res/icons/deskflow-light/apps/64/deskflow-symbolic.svg create mode 100644 src/apps/res/icons/deskflow-light/apps/64/deskflow.svg create mode 100644 src/apps/res/icons/deskflow-light/devices/64/video-display.svg create mode 100644 src/apps/res/icons/deskflow-light/index.theme create mode 100644 src/apps/res/icons/deskflow-light/places/64/user-trash.svg create mode 100644 src/apps/res/icons/deskflow-light/status/64/dialog-error.svg create mode 100644 src/apps/res/icons/deskflow-light/status/64/dialog-information.svg create mode 100644 src/apps/res/icons/deskflow-light/status/64/dialog-positive.svg create mode 100644 src/apps/res/icons/deskflow-light/status/64/dialog-question.svg create mode 100644 src/apps/res/icons/deskflow-light/status/64/dialog-warning.svg create mode 100644 src/apps/res/icons/deskflow-light/status/64/security-high.svg create mode 100644 src/apps/res/icons/deskflow-light/status/64/security-low.svg create mode 100644 src/apps/res/icons/deskflow-light/status/64/security-medium.svg diff --git a/src/apps/deskflow-gui/MainWindow.cpp b/src/apps/deskflow-gui/MainWindow.cpp index f001b5def..42cc6a981 100644 --- a/src/apps/deskflow-gui/MainWindow.cpp +++ b/src/apps/deskflow-gui/MainWindow.cpp @@ -67,10 +67,6 @@ using CoreMode = CoreProcess::Mode; using CoreConnectionState = CoreProcess::ConnectionState; using CoreProcessState = CoreProcess::ProcessState; -const auto kColorfulIconFile = ":/icons/128x128/tray.png"; -const auto kLightIconFile = ":/icons/128x128/tray-light.png"; -const auto kDarkIconFile = ":/icons/128x128/tray-dark.png"; - MainWindow::MainWindow(ConfigScopes &configScopes, AppConfig &appConfig) : ui{std::make_unique()}, m_ConfigScopes(configScopes), @@ -96,8 +92,13 @@ MainWindow::MainWindow(ConfigScopes &configScopes, AppConfig &appConfig) m_actionTestCriticalError{new QAction(tr("Test Critical Error"), this)}, m_actionTestFatalError{new QAction(tr("Test Fatal Error"), this)} { - ui->setupUi(this); + const auto themeName = QStringLiteral("deskflow-%1").arg(iconMode()); + if (QIcon::themeName().isEmpty()) + QIcon::setThemeName(themeName); + else + QIcon::setFallbackThemeName(themeName); + ui->setupUi(this); // Setup Actions m_actionAbout->setText(tr("About %1...").arg(kAppName)); m_actionAbout->setMenuRole(QAction::AboutRole); @@ -624,18 +625,18 @@ void MainWindow::saveSettings() void MainWindow::setIcon() { -#ifdef Q_OS_MAC - QIcon icon; - if (appConfig().colorfulTrayIcon()) - icon.addFile(kColorfulIconFile); - else { - icon.addFile(kDarkIconFile); - icon.setIsMask(true); + // Using a theme icon that is packed in exe renders an invisible icon + // Instead use the resource path of the packed icon + // TODO Report to Qt ref the bug here + QString iconString = QStringLiteral(":/icons/deskflow-%1/apps/64/deskflow").arg(iconMode()); + if (!appConfig().colorfulTrayIcon()) { + iconString.append(QStringLiteral("-symbolic")); } -#else - QIcon icon(appConfig().colorfulTrayIcon() ? kColorfulIconFile : isDarkMode() ? kDarkIconFile : kLightIconFile); + m_trayIcon->setIcon(QIcon(iconString)); +#ifdef Q_OS_MAC + if (!appConfig().colorfulTrayIcon()) + m_trayIcon->icon().setIsMask(true); #endif - m_trayIcon->setIcon(icon); } void MainWindow::handleLogLine(const QString &line) @@ -776,6 +777,7 @@ void MainWindow::updateStatus() const auto connection = m_CoreProcess.connectionState(); const auto process = m_CoreProcess.processState(); + ui->lblConnectionSecurityStatus->setVisible(false); switch (process) { using enum CoreProcessState; @@ -812,6 +814,7 @@ void MainWindow::updateStatus() break; case Connected: { + ui->lblConnectionSecurityStatus->setVisible(true); if (m_SecureSocket) { setStatus(tr("%1 is connected (with %2)").arg(kAppName, m_CoreProcess.secureSocketVersion())); } else { @@ -967,9 +970,11 @@ void MainWindow::secureSocket(bool secureSocket) { m_SecureSocket = secureSocket; if (secureSocket) { - ui->m_pLabelPadlock->show(); + ui->lblConnectionSecurityStatus->setToolTip(tr("Secure Connection")); + ui->lblConnectionSecurityStatus->setPixmap(QIcon::fromTheme(QIcon::ThemeIcon::SecurityHigh).pixmap(QSize(32, 32))); } else { - ui->m_pLabelPadlock->hide(); + ui->lblConnectionSecurityStatus->setToolTip(tr("Insecure Connection")); + ui->lblConnectionSecurityStatus->setPixmap(QIcon::fromTheme(QIcon::ThemeIcon::SecurityLow).pixmap(QSize(32, 32))); } } diff --git a/src/apps/deskflow-gui/MainWindow.ui b/src/apps/deskflow-gui/MainWindow.ui index 8744a583d..cd4b70545 100644 --- a/src/apps/deskflow-gui/MainWindow.ui +++ b/src/apps/deskflow-gui/MainWindow.ui @@ -522,7 +522,7 @@ QLayout::SizeConstraint::SetDefaultConstraint - + true @@ -541,12 +541,6 @@ - - :/icons/64x64/padlock.png - - - true - @@ -654,8 +648,6 @@ btnApplySettings btnToggleCore - - - + diff --git a/src/apps/deskflow-gui/dialogs/AboutDialog.cpp b/src/apps/deskflow-gui/dialogs/AboutDialog.cpp index 3f8f74b7c..708ff347d 100644 --- a/src/apps/deskflow-gui/dialogs/AboutDialog.cpp +++ b/src/apps/deskflow-gui/dialogs/AboutDialog.cpp @@ -34,14 +34,13 @@ AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), ui{std::make_unique { ui->setupUi(this); - auto copyIcon = QIcon::fromTheme( - QIcon::ThemeIcon::EditCopy, deskflow::gui::isDarkMode() ? QIcon(s_darkCopy) : QIcon(s_lightCopy) - ); - ui->lblIcon->setFixedSize(fontMetrics().height() * 6, fontMetrics().height() * 6); - ui->lblIcon->setPixmap(QPixmap(QStringLiteral(":/icons/128x128/tray.png")) - .scaledToWidth(fontMetrics().height() * 6, Qt::SmoothTransformation)); + const int px = (fontMetrics().height() * 6); + const QSize pixmapSize(px, px); + ui->lblIcon->setFixedSize(pixmapSize); - ui->btnCopyVersion->setIcon(copyIcon); + ui->lblIcon->setPixmap(QPixmap(QIcon::fromTheme("deskflow").pixmap(QSize().scaled(pixmapSize, Qt::KeepAspectRatio)))); + + ui->btnCopyVersion->setIcon(QIcon::fromTheme(QIcon::ThemeIcon::EditCopy)); connect(ui->btnCopyVersion, &QPushButton::clicked, this, &AboutDialog::copyVersionText); // Set up the displayed version number diff --git a/src/apps/deskflow-gui/dialogs/ServerConfigDialog.cpp b/src/apps/deskflow-gui/dialogs/ServerConfigDialog.cpp index 5cc48dfa6..95b379edb 100644 --- a/src/apps/deskflow-gui/dialogs/ServerConfigDialog.cpp +++ b/src/apps/deskflow-gui/dialogs/ServerConfigDialog.cpp @@ -45,9 +45,8 @@ ServerConfigDialog::ServerConfigDialog(QWidget *parent, ServerConfig &config, Ap { ui->setupUi(this); - const auto folderIcon = - QIcon::fromTheme(QIcon::ThemeIcon::DocumentOpen, QIcon(QStringLiteral(":/icons/64x64/folder.png"))); - ui->m_pButtonBrowseConfigFile->setIcon(folderIcon); + ui->m_pButtonBrowseConfigFile->setIcon(QIcon::fromTheme(QIcon::ThemeIcon::DocumentOpen)); + ui->m_pTrashScreenWidget->setPixmap(QIcon::fromTheme("user-trash").pixmap(QSize(64, 64))); // force the first tab, since qt creator sets the active tab as the last one // the developer was looking at, and it's easy to accidentally save that. diff --git a/src/apps/deskflow-gui/dialogs/ServerConfigDialog.ui b/src/apps/deskflow-gui/dialogs/ServerConfigDialog.ui index fa3d6afd8..6391002be 100644 --- a/src/apps/deskflow-gui/dialogs/ServerConfigDialog.ui +++ b/src/apps/deskflow-gui/dialogs/ServerConfigDialog.ui @@ -70,9 +70,6 @@ - - :/icons/64x64/user-trash.png - diff --git a/src/apps/deskflow-gui/dialogs/SettingsDialog.cpp b/src/apps/deskflow-gui/dialogs/SettingsDialog.cpp index f06a43f25..1758bb699 100644 --- a/src/apps/deskflow-gui/dialogs/SettingsDialog.cpp +++ b/src/apps/deskflow-gui/dialogs/SettingsDialog.cpp @@ -46,10 +46,8 @@ SettingsDialog::SettingsDialog( ui->setupUi(this); - const auto folderIcon = - QIcon::fromTheme(QIcon::ThemeIcon::DocumentOpen, QIcon(QStringLiteral(":/icons/64x64/folder.png"))); - ui->m_pPushButtonTlsCertPath->setIcon(folderIcon); - ui->m_pButtonBrowseLog->setIcon(folderIcon); + ui->m_pPushButtonTlsCertPath->setIcon(QIcon::fromTheme(QIcon::ThemeIcon::DocumentOpen)); + ui->m_pButtonBrowseLog->setIcon(QIcon::fromTheme(QIcon::ThemeIcon::DocumentOpen)); // force the first tab, since qt creator sets the active tab as the last one // the developer was looking at, and it's easy to accidentally save that. @@ -245,11 +243,7 @@ void SettingsDialog::loadFromConfig() ui->rb_icon_colorful->setChecked(true); else ui->rb_icon_mono->setChecked(true); - - ui->rb_icon_mono->setIcon( - isDarkMode() ? QIcon(QStringLiteral(":/icons/128x128/tray-dark.png")) - : QIcon(QStringLiteral(":/icons/128x128/tray-light.png")) - ); + ui->rb_icon_mono->setIcon(QIcon(QStringLiteral(":/icons/deskflow-%1/apps/64/deskflow-symbolic").arg(iconMode()))); updateTlsControls(); } diff --git a/src/apps/deskflow-gui/dialogs/SettingsDialog.ui b/src/apps/deskflow-gui/dialogs/SettingsDialog.ui index 92694c4a7..d946bef59 100644 --- a/src/apps/deskflow-gui/dialogs/SettingsDialog.ui +++ b/src/apps/deskflow-gui/dialogs/SettingsDialog.ui @@ -176,7 +176,7 @@ - :/icons/128x128/tray.png:/icons/128x128/tray.png + :/icons/common/deskflow.svg:/icons/common/deskflow.svg @@ -187,7 +187,7 @@ - :/icons/128x128/tray-dark.png:/icons/128x128/tray-dark.png + :/icons/deskflow-dark/apps/64/deskflow-symbolic.svg:/icons/deskflow-dark/apps/64/deskflow-symbolic.svg diff --git a/src/apps/deskflow-gui/main.cpp b/src/apps/deskflow-gui/main.cpp index e13bc2848..c172d0729 100644 --- a/src/apps/deskflow-gui/main.cpp +++ b/src/apps/deskflow-gui/main.cpp @@ -27,6 +27,7 @@ #include "gui/dotenv.h" #include "gui/messages.h" #include "gui/string_utils.h" +#include "gui/style_utils.h" #include #include @@ -118,6 +119,9 @@ int main(int argc, char *argv[]) } #endif + // Sets the fallback icon path + setIconFallbackPaths(); + qInstallMessageHandler(deskflow::gui::messages::messageHandler); qInfo("%s v%s", kAppName, qPrintable(kVersion)); diff --git a/src/apps/res/deskflow.qrc b/src/apps/res/deskflow.qrc index 7e0928ddc..64fe0445e 100644 --- a/src/apps/res/deskflow.qrc +++ b/src/apps/res/deskflow.qrc @@ -1,14 +1,50 @@ - - icons/64x64/copy-dark.png - icons/64x64/copy-light.png - icons/64x64/folder.png - icons/64x64/padlock.png - icons/64x64/user-trash.png - icons/64x64/video-display.png - icons/128x128/tray.png - icons/128x128/tray-dark.png - icons/128x128/tray-light.png + + icons/deskflow-dark/actions/16/edit-copy.svg + icons/deskflow-dark/actions/16/document-open.svg + icons/deskflow-dark/actions/22/edit-copy.svg + icons/deskflow-dark/actions/22/document-open.svg + icons/deskflow-dark/actions/24/edit-copy.svg + icons/deskflow-dark/actions/24/document-open.svg + icons/deskflow-dark/actions/32/dialog-cancel.svg + icons/deskflow-dark/actions/32/dialog-ok.svg + icons/deskflow-dark/actions/32/dialog-ok-apply.svg + icons/deskflow-dark/actions/32/document-open.svg + icons/deskflow-dark/apps/64/deskflow.svg + icons/deskflow-dark/apps/64/deskflow-symbolic.svg + icons/deskflow-dark/devices/64/video-display.svg + icons/deskflow-dark/places/64/user-trash.svg + icons/deskflow-dark/status/64/dialog-error.svg + icons/deskflow-dark/status/64/dialog-information.svg + icons/deskflow-dark/status/64/dialog-positive.svg + icons/deskflow-dark/status/64/dialog-question.svg + icons/deskflow-dark/status/64/dialog-warning.svg + icons/deskflow-dark/status/64/security-high.svg + icons/deskflow-dark/status/64/security-low.svg + icons/deskflow-dark/status/64/security-medium.svg + icons/deskflow-dark/index.theme + icons/deskflow-light/actions/16/edit-copy.svg + icons/deskflow-light/actions/16/document-open.svg + icons/deskflow-light/actions/22/edit-copy.svg + icons/deskflow-light/actions/22/document-open.svg + icons/deskflow-light/actions/24/edit-copy.svg + icons/deskflow-light/actions/24/document-open.svg + icons/deskflow-light/actions/32/dialog-cancel.svg + icons/deskflow-light/actions/32/dialog-ok.svg + icons/deskflow-light/actions/32/dialog-ok-apply.svg + icons/deskflow-light/actions/32/document-open.svg + icons/deskflow-light/apps/64/deskflow.svg + icons/deskflow-light/apps/64/deskflow-symbolic.svg + icons/deskflow-light/devices/64/video-display.svg + icons/deskflow-light/status/64/dialog-error.svg + icons/deskflow-light/status/64/dialog-information.svg + icons/deskflow-light/status/64/dialog-positive.svg + icons/deskflow-light/status/64/dialog-question.svg + icons/deskflow-light/status/64/dialog-warning.svg + icons/deskflow-light/status/64/security-high.svg + icons/deskflow-light/status/64/security-low.svg + icons/deskflow-light/status/64/security-medium.svg + icons/deskflow-light/index.theme image/placeholder.png image/welcome.png diff --git a/src/apps/res/icons/128x128/tray-dark.png b/src/apps/res/icons/128x128/tray-dark.png deleted file mode 100644 index 893bb0d75aeef3f5949a75e2a1fbc7be91ba76e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4274 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 Fe*l#@Ng4nE diff --git a/src/apps/res/icons/64x64/copy-dark.png b/src/apps/res/icons/64x64/copy-dark.png deleted file mode 100644 index 65aa860574f8cdf1e13f54fd82bda304c3dba03f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1206 zcmV;n1WEgeP)Y}j6g_WdENnLQe`xENbr%&Nv4~id-+=fDK%`JoRTWJZtwN|2kWj?}kSg^@ut0?n z6_za8g;SL+DoO3}WNPPmKJH^NnRsS0&z=v@*pcT-PoB{{dEPnq+;iV^0#s2&6;)JG zMHN*nX|N=dcE5Y@3Fo8B^H^Zx?fT2LPuCw8_5E6sNtR__zV+qpxnyX2=l+!=X3clHF7XA)p**#$C3D6dES+vXwpk-CS7&y^|At3)si7u=M5IUU~(x=a!|NU`K z*K_x9#(?dedv{Z9p6c~qKL2d}qq&wqPuH((+?>zm>FaOq-zY%=3fk?q^y%LI699l= zl)HJlbg6lggb-yDFv$bx%ma!C4gg|a3ZS|6^kCMr5-~#$C~qeh zm3vnC&)5T$Ga{4;CyY+#ATRuLSzlRM3EY=RK)c?O7`D{(L{n!F$F;ED?n(zys*jdKj!%{P{f~ncNv; zxO%l!o&us^TdlS<>-$gBd%$_Q$H`kno@EE0yA6gxC-VWB2P8E)dEJXLy8uZ%Aj$cj z#R4DKwt#oZ0(C#WAJ;t#sj6@V5K$_(Pv!yXvwTV;TCG+LaFKdbq-8Tee;?46%KzzK ze@HzbuiQNqh*=#Zzy3XT_o03wot&mwn!tbXtz8jS{s2*cqJrfH&Y z^ubR!j(YzIL0C`wQ*OZuh^jz@=J>5mRn^#`XzLUDsh428M$nUiXdw zh<|R~y#3R{lt2>sC#`dzq>~d4*KuK476yX>27>|geh-#A>Ro^T-5bo`P%J_TOp?0~ zXqx0zRfXd?a2yMcN{Uc$!_Mg0Fzq7Hi`7dLP7N!dj5gLs~hzQ2mxe=6j@Y8W@ z*tR#kYYUun7{>;VO#_x=*+gRP&c>aGS=Y#l0>At1gFTn%dfY*lDeI%{T zs1Rc0x_D%B`-{!Z%{O`0$%<6K?(W?t=k=MsgL7_fZEZQIqKYc2sG^E0s>m7t1D2Xz U(yiUWwEzGB07*qoM6N<$f-ECNxc~qF diff --git a/src/apps/res/icons/64x64/copy-light.png b/src/apps/res/icons/64x64/copy-light.png deleted file mode 100644 index 690386905949781d555c148d9e8587e155dbaba4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1867 zcmV-R2ekN!P)Z056+Q31H#7VaElPw*DN!1r$RdS>E{dY)wu=CPlN2c6qW{3_qFpow64yn#=%)Xn z%fdilqz2+eSJ~HYlQ^**1udG^C@jg5+{l`l_m#z)Pl}{CvW5;~UVzYWIO4naymQaJ z_Yqjw!WOo$g)MAh3wuV5&GOJ2Z@l)VG4_W~!$A`K=6l!Pd#A4N7qdL1jQMeYWrdyw z06PyK{^;`M%XH<+74y^p0Kkj^HaB0Il{BYfAAWeZ_BBM+j3N4VX@K}9I>i`)h(DVE zaLxe`7-P>C0O_tX#z4dX(6a%63)}_FIVJZv82c6gaBy(Yiev3f3qIZPG~o0v=NwW> zFw5-Cn>T-O{`~ow%b?bJ_r{GI|Ee8;J9oBV?RdWq4#VfdL%HdD!d7a0c)s)28Z=u0 z7-N5}@*Pr2@#<@@{^I@X@BgJ%0F=@I#si>YwbWl-;aVFA@x(;yRtO%v!_5C4Y@Y*A zF90vU{L;kFKKtyS0DykKhrwWVZklrc{x1FXf|jWJXb(AqR$fByi> z%gb{NoF%Vn)uR>-a8Ar``-vzEJ_TYf0E}vYTbO}}aPQvdFlHXRPFWdE0hk*DiW*RC zVTl|FrX~c6bT0<)uII>rJ9oAc3c8)o1&HCxFZZyt)E$#H3R>$Y?i`Cjd!7%@DMuVSe2Zehzr$9>gbLYO7 z36OJ)XHML{{RyO0WBykl2!cvy5IN;pLG1EY+VlKukg7EWhyc#LEMU$>HpmchaE?R= zCfDMAe+B*i$_ePsGK%NdsScE@Ky4|&xmTLlZr{F}oDi`j_;jjc*xTDftJOM@1{8xS z2S+2~=XPHRnokwT7vagUqM@~O$QZ{E#!T{=J&^_!b33QA17h6g&p*G8;c)E;TWVr} z3*OP6u(|pDBrS@<#6bkyy7hO2VKlP_Ov>-#y<(Y7wZZp;!a+*y4B+6LXY>mK0>HsJ zD;#R1njio~$7(>irqhJ$(ON%E6Ih)L;2@%ej&9MSCY1AaQu~~1z$8%{m+Pa!`@Vl< z=TqQnV}J{umr7rLmWM+-IfAlK$P;*udJ_Z~}8`mJoh{gjYhN7&^R3E7#%1#KSAJ^HX~(-TiezHK;CZhF*(Yz&&K6p`rO&G zXE7KIE7$i~HGy+pj|QZ{bM7U8V{86+5U2!1Dt4adAq+!EDWSE7*5>p9 z@H_#|#R%O~M{-Sw;}}XQ7-PT^r7xDN!C-*la5z(bAEyuLDX^3>10as$O5^s-00cph zupr+BrwgtvHpXPmNGYL|N*Iurrjs={|PXw2!h~96*$R= zn?64&=;AAiB3NtC>zz4!Y5@4YfA`j{zkPS~zM0T)xRY{g*4Ngv=IKd-*V-VC4<`m) z1SF0ltn^o4VP8Bo0It1z?bjDBTIxYdwe9=SVo!7NU5Nt zf>bf2jM3^e(Od1&?#}MRQ%!-ZSFe6m1%TIIKOZwN2*D=~Ez^RZw9{dHh{xdpqA&(A z0`~~yGc=^{8BX#pa(wVgsfj_4-Z#)7Mp#-}0uiCvY(fZuGs|6cdtIee z{L|~#uYdZ@0Dz?@$K#uuQMylKKoms?!$SyS%#e0W`j}b*7q9{bG(?YY=fe-?%b_>1LGgb)iK6&CN zmwt8WUR57!1Hiy&Yc=-v9^uiW|7VpTZJX1Mt$6JQ8J)d%on-_mV@MexjwRaNHk!=_ z8qW>TY&DFM>W_o|@Y2PL7v)L(tPKFo?4SSh-}^uN_ZMIEN=?$pus;30&1QRREjrz{ zXtmmHWAtNd&AZ%szj^EJ%ez?E!WOo$g)MAh3tL!q`x+=aW8E+BEqMR{002ovPDHLk FV1me$mRSG* diff --git a/src/apps/res/icons/64x64/folder.png b/src/apps/res/icons/64x64/folder.png deleted file mode 100644 index fb96ebdfe9f8ab1b0de979ff60afbcbee7764e3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 919 zcmV;I18Dq-P)@~0drDELIAGL9O(c600d`2O+f$vv5yP*Al(5=FmwZS1;7d*k5!9ER8bzGD`;3j=>~$Azz)a`h*YXxOwQ?y z6GMDU6FZRDo=-v~zC7@04s&KaiNYApryq{idIzu$y=~yJ(5lsa|Duf&pn?}$CqIv1 zYzt3CNhJCLpIlx*2_!1#RrV<-{kk3Pqv@VoD}UiUF4)YkE>MfG5T7sm72B(sMcEY}i#I@alDSJ&&; z&gWk{$U#*F-lOfH!zC;-Qh9+4)&F0e*3CLHAOd}CqgJaq$bbkOVKWvKA}~PfSIB?} z%!vrhi3rSz2+WBH%!vrh$y~ZI*21NZ#CNSs-x$?H5n1ti$UqK(whx0ZW^i{l&-PH! z$R^NO7T2n>xPaLOS~RTDDR{y*;?uDSer zdV$8a>84KfFt>s9v(X^ERgvNExPw6MgW);~)!}rCCBI3go5BPp)D& znbk`O%*8~3%GmR0^wDF`-KCjkSSYs7!IdhIqpurD9RAXUD(oQ8T%jtAgDW))lfd}W zwe@|8zVNOjEdo34hwz5kk3Ne72%+Fg6quMe?CL25LS2jpS6m=h97&18+HD9FTz{M6 z??VFpZOh=U6TeLohYxk3qQMmv7>_=GUQZIoD7a!>C_R2bV&WJ!2`W!ga4`=86YAa3 z0D6^cU7w`j3J3(o>s{*Y(XU+yEbv|0Ih|VXLVbh4@SgZ8?WC4^cM`*TchVIqdSLj; zCGNI}K;9E~6B^0m#A;!wcZZ~P;iH81fl}{2kkm{`A|z1i-GFetJBj-x>y^B%e zXij^z3>QT(P|aCBd~+|5$263Ji^@WgXYA&*OE(}Cfdl33arQx_;2|m7Hs0NvVA^07 tRMNrWmrs;?D`O1$7}T%a*7F{6@DD%Je2PPL64U?y002ovPDHLkV1kKHqu>Al diff --git a/src/apps/res/icons/64x64/padlock.png b/src/apps/res/icons/64x64/padlock.png deleted file mode 100644 index 55909fe94ee9b338da62c18e6bb3d93475365235..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1828 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 ppZ(=1%NYP?0Gt7E2EcpUz6L + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/actions/16/edit-copy.svg b/src/apps/res/icons/deskflow-dark/actions/16/edit-copy.svg new file mode 100644 index 000000000..2ada8e576 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/16/edit-copy.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/actions/16@2x b/src/apps/res/icons/deskflow-dark/actions/16@2x new file mode 120000 index 000000000..19c7bdba7 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/16@2x @@ -0,0 +1 @@ +16 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/actions/16@3x b/src/apps/res/icons/deskflow-dark/actions/16@3x new file mode 120000 index 000000000..19c7bdba7 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/16@3x @@ -0,0 +1 @@ +16 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/actions/22/document-open.svg b/src/apps/res/icons/deskflow-dark/actions/22/document-open.svg new file mode 100644 index 000000000..00b703cc7 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/22/document-open.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/actions/22/edit-copy.svg b/src/apps/res/icons/deskflow-dark/actions/22/edit-copy.svg new file mode 100644 index 000000000..1799625db --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/22/edit-copy.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/actions/22@2x b/src/apps/res/icons/deskflow-dark/actions/22@2x new file mode 120000 index 000000000..8fdd954df --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/22@2x @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/actions/22@3x b/src/apps/res/icons/deskflow-dark/actions/22@3x new file mode 120000 index 000000000..8fdd954df --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/22@3x @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/actions/24/document-open.svg b/src/apps/res/icons/deskflow-dark/actions/24/document-open.svg new file mode 100644 index 000000000..355bd8971 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/24/document-open.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/actions/24/edit-copy.svg b/src/apps/res/icons/deskflow-dark/actions/24/edit-copy.svg new file mode 100644 index 000000000..47aa337f4 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/24/edit-copy.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/actions/24@2x b/src/apps/res/icons/deskflow-dark/actions/24@2x new file mode 120000 index 000000000..cabf43b5d --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/24@2x @@ -0,0 +1 @@ +24 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/actions/24@3x b/src/apps/res/icons/deskflow-dark/actions/24@3x new file mode 120000 index 000000000..cabf43b5d --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/24@3x @@ -0,0 +1 @@ +24 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/actions/32/dialog-cancel.svg b/src/apps/res/icons/deskflow-dark/actions/32/dialog-cancel.svg new file mode 100644 index 000000000..3825b6843 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/32/dialog-cancel.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/actions/32/dialog-ok-apply.svg b/src/apps/res/icons/deskflow-dark/actions/32/dialog-ok-apply.svg new file mode 100644 index 000000000..46bb9d6ba --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/32/dialog-ok-apply.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/actions/32/dialog-ok.svg b/src/apps/res/icons/deskflow-dark/actions/32/dialog-ok.svg new file mode 120000 index 000000000..6774aa851 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/32/dialog-ok.svg @@ -0,0 +1 @@ +dialog-ok-apply.svg \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/actions/32/document-open.svg b/src/apps/res/icons/deskflow-dark/actions/32/document-open.svg new file mode 100644 index 000000000..f1f893d19 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/32/document-open.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/actions/32@2x b/src/apps/res/icons/deskflow-dark/actions/32@2x new file mode 120000 index 000000000..1758dddcc --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/32@2x @@ -0,0 +1 @@ +32 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/actions/32@3x b/src/apps/res/icons/deskflow-dark/actions/32@3x new file mode 120000 index 000000000..1758dddcc --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/actions/32@3x @@ -0,0 +1 @@ +32 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-dark/apps/64/deskflow-symbolic.svg b/src/apps/res/icons/deskflow-dark/apps/64/deskflow-symbolic.svg new file mode 100644 index 000000000..d28405d34 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/apps/64/deskflow-symbolic.svg @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/apps/64/deskflow.svg b/src/apps/res/icons/deskflow-dark/apps/64/deskflow.svg new file mode 100644 index 000000000..41012b964 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/apps/64/deskflow.svg @@ -0,0 +1,29 @@ + + + + diff --git a/src/apps/res/icons/deskflow-dark/devices/64/video-display.svg b/src/apps/res/icons/deskflow-dark/devices/64/video-display.svg new file mode 100644 index 000000000..fd8ce1b13 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/devices/64/video-display.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/index.theme b/src/apps/res/icons/deskflow-dark/index.theme new file mode 100644 index 000000000..7933b6b01 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/index.theme @@ -0,0 +1,177 @@ +[Icon Theme] +Name=deskflow-dark + +Comment=Striped down Breeze Dark by the KDE VDG + +DisplayDepth=32 + +#Inherits=breeze-dark,hicolor + +Example=folder + +FollowsColorScheme=true + +DesktopDefault=48 +DesktopSizes=16,22,32,48,64,128,256 +ToolbarDefault=22 +ToolbarSizes=16,22,32,48 +MainToolbarDefault=22 +MainToolbarSizes=16,22,32,48 +SmallDefault=16 +SmallSizes=16,22,32,48 +PanelDefault=48 +PanelSizes=16,22,32,48,64,128,256 +DialogDefault=32 +DialogSizes=16,22,32,48,64,128,256 + +KDE-Extensions=.svg + +########## Directories +########## ordered by category and alphabetically + +Directories=actions/16,actions/22,actions/24,actions/32,apps/64,devices/64,places/64,status/64 +ScaledDirectories=actions/16@2x,actions/16@3x,actions/22@2x,actions/22@3x,actions/24@2x,actions/24@3x,actions/32@2x,actions/32@3x + +[apps/64] +Size=64 +Context=Applications +Type=Scalable +MinSize=22 +MaxSize=256 + + +########## Actions +########## ordered by size + +#16x16 - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/16] +Size=16 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#16x16@2x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/16@2x] +Size=16 +Scale=2 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#16x16@3x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/16@3x] +Size=16 +Scale=3 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + + +#22x22 - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/22] +Size=22 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#22x22@2x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/22@2x] +Size=22 +Scale=2 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#22x22@3x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/22@3x] +Size=22 +Scale=3 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#24x24 - Fixed size - GTK icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/24] +Size=24 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#24x24@2x - Fixed size - GTK icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/24@2x] +Size=24 +Scale=2 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#24x24@3x - Fixed size - GTK icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/24@3x] +Size=24 +Scale=3 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#32x32 - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/32] +Size=32 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#32x32@2x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/32@2x] +Size=32 +Scale=2 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#32x32@3x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/32@3x] +Size=32 +Scale=3 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +########## Status +########## ordered by size + +#64x64 - Fixed size - For folder icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Color +[places/64] +Size=64 +Type=Scalable +Context=Places +MinSize=48 +MaxSize=256 + + +#64x64 - Fixed size - For dialog icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Color +[status/64] +Size=64 +Context=Status +Type=Scalable +MinSize=22 +MaxSize=256 + +#64x64 - Fixed size - For dialog icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Color +[devices/64] +Size=64 +Context=Devices +Type=Scalable +MinSize=22 +MaxSize=256 diff --git a/src/apps/res/icons/deskflow-dark/places/64/user-trash.svg b/src/apps/res/icons/deskflow-dark/places/64/user-trash.svg new file mode 100644 index 000000000..afe30e992 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/places/64/user-trash.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/status/64/dialog-error.svg b/src/apps/res/icons/deskflow-dark/status/64/dialog-error.svg new file mode 100644 index 000000000..afce0a18b --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/status/64/dialog-error.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/status/64/dialog-information.svg b/src/apps/res/icons/deskflow-dark/status/64/dialog-information.svg new file mode 100644 index 000000000..44380233e --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/status/64/dialog-information.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/status/64/dialog-positive.svg b/src/apps/res/icons/deskflow-dark/status/64/dialog-positive.svg new file mode 100644 index 000000000..192508839 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/status/64/dialog-positive.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/status/64/dialog-question.svg b/src/apps/res/icons/deskflow-dark/status/64/dialog-question.svg new file mode 100644 index 000000000..945905205 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/status/64/dialog-question.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/status/64/dialog-warning.svg b/src/apps/res/icons/deskflow-dark/status/64/dialog-warning.svg new file mode 100644 index 000000000..e28d0627c --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/status/64/dialog-warning.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/status/64/security-high.svg b/src/apps/res/icons/deskflow-dark/status/64/security-high.svg new file mode 100644 index 000000000..3a0a63034 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/status/64/security-high.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/status/64/security-low.svg b/src/apps/res/icons/deskflow-dark/status/64/security-low.svg new file mode 100644 index 000000000..a668052d0 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/status/64/security-low.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-dark/status/64/security-medium.svg b/src/apps/res/icons/deskflow-dark/status/64/security-medium.svg new file mode 100644 index 000000000..2f5734848 --- /dev/null +++ b/src/apps/res/icons/deskflow-dark/status/64/security-medium.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/actions/16/document-open.svg b/src/apps/res/icons/deskflow-light/actions/16/document-open.svg new file mode 100644 index 000000000..5c2480414 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/16/document-open.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/src/apps/res/icons/deskflow-light/actions/16/edit-copy.svg b/src/apps/res/icons/deskflow-light/actions/16/edit-copy.svg new file mode 100644 index 000000000..266e34b89 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/16/edit-copy.svg @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/actions/16@2x b/src/apps/res/icons/deskflow-light/actions/16@2x new file mode 120000 index 000000000..19c7bdba7 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/16@2x @@ -0,0 +1 @@ +16 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/actions/16@3x b/src/apps/res/icons/deskflow-light/actions/16@3x new file mode 120000 index 000000000..19c7bdba7 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/16@3x @@ -0,0 +1 @@ +16 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/actions/22/document-open.svg b/src/apps/res/icons/deskflow-light/actions/22/document-open.svg new file mode 100644 index 000000000..d0a9ce0dc --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/22/document-open.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/apps/res/icons/deskflow-light/actions/22/edit-copy.svg b/src/apps/res/icons/deskflow-light/actions/22/edit-copy.svg new file mode 100644 index 000000000..2557953b0 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/22/edit-copy.svg @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/actions/22@2x b/src/apps/res/icons/deskflow-light/actions/22@2x new file mode 120000 index 000000000..8fdd954df --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/22@2x @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/actions/22@3x b/src/apps/res/icons/deskflow-light/actions/22@3x new file mode 120000 index 000000000..8fdd954df --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/22@3x @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/actions/24/document-open.svg b/src/apps/res/icons/deskflow-light/actions/24/document-open.svg new file mode 100644 index 000000000..8ea9505f0 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/24/document-open.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/actions/24/edit-copy.svg b/src/apps/res/icons/deskflow-light/actions/24/edit-copy.svg new file mode 100644 index 000000000..f64382e48 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/24/edit-copy.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/actions/24@2x b/src/apps/res/icons/deskflow-light/actions/24@2x new file mode 120000 index 000000000..cabf43b5d --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/24@2x @@ -0,0 +1 @@ +24 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/actions/24@3x b/src/apps/res/icons/deskflow-light/actions/24@3x new file mode 120000 index 000000000..cabf43b5d --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/24@3x @@ -0,0 +1 @@ +24 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/actions/32/dialog-cancel.svg b/src/apps/res/icons/deskflow-light/actions/32/dialog-cancel.svg new file mode 100644 index 000000000..2179310eb --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/32/dialog-cancel.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/src/apps/res/icons/deskflow-light/actions/32/dialog-ok-apply.svg b/src/apps/res/icons/deskflow-light/actions/32/dialog-ok-apply.svg new file mode 100644 index 000000000..d05eca7b2 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/32/dialog-ok-apply.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/actions/32/dialog-ok.svg b/src/apps/res/icons/deskflow-light/actions/32/dialog-ok.svg new file mode 120000 index 000000000..6774aa851 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/32/dialog-ok.svg @@ -0,0 +1 @@ +dialog-ok-apply.svg \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/actions/32/document-open.svg b/src/apps/res/icons/deskflow-light/actions/32/document-open.svg new file mode 100644 index 000000000..f73f75a01 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/32/document-open.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/src/apps/res/icons/deskflow-light/actions/32@2x b/src/apps/res/icons/deskflow-light/actions/32@2x new file mode 120000 index 000000000..1758dddcc --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/32@2x @@ -0,0 +1 @@ +32 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/actions/32@3x b/src/apps/res/icons/deskflow-light/actions/32@3x new file mode 120000 index 000000000..1758dddcc --- /dev/null +++ b/src/apps/res/icons/deskflow-light/actions/32@3x @@ -0,0 +1 @@ +32 \ No newline at end of file diff --git a/src/apps/res/icons/deskflow-light/apps/64/deskflow-symbolic.svg b/src/apps/res/icons/deskflow-light/apps/64/deskflow-symbolic.svg new file mode 100644 index 000000000..837421f52 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/apps/64/deskflow-symbolic.svg @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/apps/64/deskflow.svg b/src/apps/res/icons/deskflow-light/apps/64/deskflow.svg new file mode 100644 index 000000000..41012b964 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/apps/64/deskflow.svg @@ -0,0 +1,29 @@ + + + + diff --git a/src/apps/res/icons/deskflow-light/devices/64/video-display.svg b/src/apps/res/icons/deskflow-light/devices/64/video-display.svg new file mode 100644 index 000000000..fd8ce1b13 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/devices/64/video-display.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/index.theme b/src/apps/res/icons/deskflow-light/index.theme new file mode 100644 index 000000000..aae20a5fa --- /dev/null +++ b/src/apps/res/icons/deskflow-light/index.theme @@ -0,0 +1,177 @@ +[Icon Theme] +Name=deskflow-light + +Comment=Striped down Breeze Light by the KDE VDG + +DisplayDepth=32 + +Inherits=breeze,hicolor + +Example=folder + +FollowsColorScheme=true + +DesktopDefault=48 +DesktopSizes=16,22,32,48,64,128,256 +ToolbarDefault=22 +ToolbarSizes=16,22,32,48 +MainToolbarDefault=22 +MainToolbarSizes=16,22,32,48 +SmallDefault=16 +SmallSizes=16,22,32,48 +PanelDefault=48 +PanelSizes=16,22,32,48,64,128,256 +DialogDefault=32 +DialogSizes=16,22,32,48,64,128,256 + +KDE-Extensions=.svg + +########## Directories +########## ordered by category and alphabetically + +Directories=actions/16,actions/22,actions/24,actions/32,apps/64,devices/64,places/64,status/64 +ScaledDirectories=actions/16@2x,actions/16@3x,actions/22@2x,actions/22@3x,actions/24@2x,actions/24@3x,actions/32@2x,actions/32@3x + +[apps/64] +Size=64 +Context=Applications +Type=Scalable +MinSize=22 +MaxSize=256 + + +########## Actions +########## ordered by size + +#16x16 - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/16] +Size=16 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#16x16@2x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/16@2x] +Size=16 +Scale=2 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#16x16@3x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/16@3x] +Size=16 +Scale=3 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + + +#22x22 - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/22] +Size=22 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#22x22@2x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/22@2x] +Size=22 +Scale=2 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#22x22@3x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/22@3x] +Size=22 +Scale=3 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#24x24 - Fixed size - GTK icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/24] +Size=24 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#24x24@2x - Fixed size - GTK icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/24@2x] +Size=24 +Scale=2 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#24x24@3x - Fixed size - GTK icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/24@3x] +Size=24 +Scale=3 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#32x32 - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/32] +Size=32 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#32x32@2x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/32@2x] +Size=32 +Scale=2 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +#32x32@3x - Fixed size - For toolbar icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Monochrome +[actions/32@3x] +Size=32 +Scale=3 +Context=Actions +Type=Scalable +MinSize=16 +MaxSize=256 + +########## Status +########## ordered by size + +#64x64 - Fixed size - For folder icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Color +[places/64] +Size=64 +Type=Scalable +Context=Places +MinSize=48 +MaxSize=256 + + +#64x64 - Fixed size - For dialog icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Color +[status/64] +Size=64 +Context=Status +Type=Scalable +MinSize=22 +MaxSize=256 + +#64x64 - Fixed size - For dialog icons >!!!ONLY!!!< - DO_NOT_USE_ANYWHERE_ELSE - Color +[devices/64] +Size=64 +Context=Devices +Type=Scalable +MinSize=22 +MaxSize=256 diff --git a/src/apps/res/icons/deskflow-light/places/64/user-trash.svg b/src/apps/res/icons/deskflow-light/places/64/user-trash.svg new file mode 100644 index 000000000..afe30e992 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/places/64/user-trash.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/status/64/dialog-error.svg b/src/apps/res/icons/deskflow-light/status/64/dialog-error.svg new file mode 100644 index 000000000..afce0a18b --- /dev/null +++ b/src/apps/res/icons/deskflow-light/status/64/dialog-error.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/status/64/dialog-information.svg b/src/apps/res/icons/deskflow-light/status/64/dialog-information.svg new file mode 100644 index 000000000..44380233e --- /dev/null +++ b/src/apps/res/icons/deskflow-light/status/64/dialog-information.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/status/64/dialog-positive.svg b/src/apps/res/icons/deskflow-light/status/64/dialog-positive.svg new file mode 100644 index 000000000..192508839 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/status/64/dialog-positive.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/status/64/dialog-question.svg b/src/apps/res/icons/deskflow-light/status/64/dialog-question.svg new file mode 100644 index 000000000..945905205 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/status/64/dialog-question.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/status/64/dialog-warning.svg b/src/apps/res/icons/deskflow-light/status/64/dialog-warning.svg new file mode 100644 index 000000000..e28d0627c --- /dev/null +++ b/src/apps/res/icons/deskflow-light/status/64/dialog-warning.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/status/64/security-high.svg b/src/apps/res/icons/deskflow-light/status/64/security-high.svg new file mode 100644 index 000000000..3a0a63034 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/status/64/security-high.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/status/64/security-low.svg b/src/apps/res/icons/deskflow-light/status/64/security-low.svg new file mode 100644 index 000000000..a668052d0 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/status/64/security-low.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/res/icons/deskflow-light/status/64/security-medium.svg b/src/apps/res/icons/deskflow-light/status/64/security-medium.svg new file mode 100644 index 000000000..2f5734848 --- /dev/null +++ b/src/apps/res/icons/deskflow-light/status/64/security-medium.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/lib/gui/config/Screen.h b/src/lib/gui/config/Screen.h index f5f7cf4a9..2c69f0575 100644 --- a/src/lib/gui/config/Screen.h +++ b/src/lib/gui/config/Screen.h @@ -22,6 +22,7 @@ #include "gui/proxy/QSettingsProxy.h" +#include #include #include #include @@ -174,7 +175,7 @@ protected: } private: - QPixmap m_Pixmap = QPixmap(":res/icons/64x64/video-display.png"); + QPixmap m_Pixmap = QIcon::fromTheme("video-display").pixmap(QSize(64, 64)); QString m_Name; QStringList m_Aliases; QList m_Modifiers; diff --git a/src/lib/gui/style_utils.h b/src/lib/gui/style_utils.h index bf82a3ef6..171243471 100644 --- a/src/lib/gui/style_utils.h +++ b/src/lib/gui/style_utils.h @@ -17,6 +17,8 @@ #pragma once +#include +#include #include #include #include @@ -36,5 +38,40 @@ inline bool isDarkMode() const auto window = defaultPalette.color(QPalette::Window); return text.lightness() > window.lightness(); } +/** + * @brief get a string for the iconMode + * @returns "dark" or "light" + */ +inline QString iconMode() +{ + return isDarkMode() ? QStringLiteral("dark") : QStringLiteral("light"); +} +/** + * @brief checkSubDir checks for subdirs in a dir + * @param path The path to check for subdirs + * @return list of subdirs + */ +inline QStringList checkSubDir(const QString &path) +{ + QStringList paths; + auto dir = QDir(path); + const QFileInfoList items = dir.entryInfoList({"*"}, QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); + for (const QFileInfo &item : items) { + if (item.isDir()) { + paths.append(item.absoluteFilePath()); + paths.append(checkSubDir(item.absoluteFilePath())); + } + } + return paths; +} + +/** + * @brief setIconFallbackPaths Set the icon fallback path to our light or dark theme + */ +inline void setIconFallbackPaths() +{ + QStringList paths = checkSubDir(QStringLiteral(":/icons/deskflow-%1").arg(iconMode())); + QIcon::setFallbackSearchPaths(paths); +} } // namespace deskflow::gui