Update kde packages to kde6

This commit is contained in:
outfoxxed 2024-03-05 01:16:37 -08:00
parent cbb3278b8f
commit 2de8a9e979
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
8 changed files with 41 additions and 256 deletions

View file

@ -3,8 +3,7 @@
inputs.nur.overlay inputs.nur.overlay
(final: prev: { (final: prev: {
kwrite = final.callPackage ./kwrite.nix {}; kwrite = final.kdePackages.callPackage ./kwrite.nix {};
qt5ct = final.callPackage ./qt5ct {};
}) })
]; ];
} }

View file

@ -1,16 +0,0 @@
{ pkgs, ... }: with pkgs;
stdenv.mkDerivation {
pname = "qt5ct";
version = "1.5";
src = builtins.fetchurl {
url = "https://downloads.sourceforge.net/project/qt5ct/qt5ct-1.5.tar.bz2";
sha256 = "14742vs32m98nbfb5mad0i8ciff5f45gfcb5v03p4hh2dvhhqgfn";
};
patches = [ ./patch.patch ];
nativeBuildInputs = with libsForQt5; [ qmake qttools wrapQtAppsHook ];
buildInputs = with libsForQt5; [ qtbase qtsvg qqc2-desktop-style qtquickcontrols2 kconfig kiconthemes ];
qmakeFlags = [
"LRELEASE_EXECUTABLE=${lib.getDev libsForQt5.qttools}/bin/lrelease"
"PLUGINDIR=${placeholder "out"}/${libsForQt5.qtbase.qtPluginPrefix}"
];
}

View file

@ -1,200 +0,0 @@
diff -ur original/CMakeLists.txt patched/CMakeLists.txt
--- original/CMakeLists.txt 2021-10-01 11:20:38.000000000 -0700
+++ patched/CMakeLists.txt 2022-04-01 02:08:48.808150703 -0700
@@ -24,8 +24,11 @@
ADD_DEFINITIONS(-DQT_DISABLE_DEPRECATED_BEFORE=0x050C00 -DUSE_WIDGETS)
-find_package(Qt5 ${QT_MINIMUM_VERSION} COMPONENTS Widgets Concurrent LinguistTools DBus ThemeSupport REQUIRED)
+find_package(Qt5 ${QT_MINIMUM_VERSION} COMPONENTS Widgets Concurrent LinguistTools DBus QuickControls2 ThemeSupport REQUIRED)
find_package(Qt5Gui ${QT_MINIMUM_VERSION} CONFIG REQUIRED Private)
+find_package(KF5Config REQUIRED)
+find_package(KF5ConfigWidgets REQUIRED)
+find_package(KF5IconThemes REQUIRED)
get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease IMPORTED_LOCATION)
@@ -44,7 +47,9 @@
message(FATAL_ERROR "Could NOT find qtpaths executable")
endif()
-execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} --plugin-dir OUTPUT_VARIABLE PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+if(NOT PLUGINDIR)
+ execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} --plugin-dir OUTPUT_VARIABLE PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
message(STATUS "Plugin path: " ${PLUGINDIR})
message(STATUS "Generating translations ...")
diff -ur original/src/qt5ct/appearancepage.cpp patched/src/qt5ct/appearancepage.cpp
--- original/src/qt5ct/appearancepage.cpp 2021-10-01 11:20:38.000000000 -0700
+++ patched/src/qt5ct/appearancepage.cpp 2022-04-01 02:08:48.809150748 -0700
@@ -86,6 +86,8 @@
#else
keys = QPlatformThemeFactory::keys();
m_ui->dialogComboBox->addItem(tr("Default"), "default");
+ if(keys.contains("xdgdesktopportal"))
+ m_ui->dialogComboBox->addItem("XDG Desktop Portal", "xdgdesktopportal");
if(keys.contains("gtk2") || keys.contains("qt5gtk2"))
m_ui->dialogComboBox->addItem("GTK2", "gtk2");
else if(keys.contains("gtk3") || keys.contains("qt5gtk3"))
@@ -390,7 +392,7 @@
{
QDir dir(path);
dir.setFilter(QDir::Files);
- dir.setNameFilters(QStringList() << "*.conf");
+ dir.setNameFilters(QStringList() << "*.conf" << "*.colors");
for(QFileInfo info : dir.entryInfoList())
{
diff -ur original/src/qt5ct/qt5ct.cpp patched/src/qt5ct/qt5ct.cpp
--- original/src/qt5ct/qt5ct.cpp 2021-10-01 11:20:38.000000000 -0700
+++ patched/src/qt5ct/qt5ct.cpp 2022-04-01 02:08:48.809150748 -0700
@@ -111,6 +111,7 @@
for(const QString &p : QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation))
{
paths << (p + QLatin1String("/qt5ct/colors"));
+ paths << (p + QLatin1String("/color-schemes"));
}
paths << QLatin1String(QT5CT_DATADIR"/qt5ct/colors");
paths.removeDuplicates();
diff -ur original/src/qt5ct-qtplugin/CMakeLists.txt patched/src/qt5ct-qtplugin/CMakeLists.txt
--- original/src/qt5ct-qtplugin/CMakeLists.txt 2021-10-01 11:20:38.000000000 -0700
+++ patched/src/qt5ct-qtplugin/CMakeLists.txt 2022-04-01 02:08:48.812150883 -0700
@@ -10,5 +10,5 @@
add_library(qt5ct-qtplugin MODULE ${app_SRCS})
set_target_properties(qt5ct-qtplugin PROPERTIES OUTPUT_NAME qt5ct)
-target_link_libraries(qt5ct-qtplugin PRIVATE Qt5::Widgets Qt5::GuiPrivate Qt5::DBus Qt5::ThemeSupportPrivate)
+target_link_libraries(qt5ct-qtplugin PRIVATE Qt5::Widgets Qt5::GuiPrivate Qt5::DBus Qt5::QuickControls2 Qt5::ThemeSupportPrivate KF5::ConfigCore KF5::ConfigWidgets KF5::IconThemes)
install(TARGETS qt5ct-qtplugin DESTINATION ${PLUGINDIR}/platformthemes)
diff -ur original/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp patched/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp
--- original/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp 2021-10-01 11:20:38.000000000 -0700
+++ patched/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp 2022-04-01 02:08:48.812150883 -0700
@@ -45,6 +45,7 @@
#endif
#include <QFile>
#include <QFileSystemWatcher>
+#include <QQuickStyle>
#include <qt5ct/qt5ct.h>
#include "qt5ctplatformtheme.h"
@@ -60,6 +61,11 @@
#include <qpa/qplatformthemefactory_p.h>
#endif
+#include <ksharedconfig.h>
+#include <kcolorscheme.h>
+#include <kiconengine.h>
+#include <kiconloader.h>
+
Q_LOGGING_CATEGORY(lqt5ct, "qt5ct", QtWarningMsg)
//QT_QPA_PLATFORMTHEME=qt5ct
@@ -75,12 +81,17 @@
QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection);
#endif
QGuiApplication::setFont(m_generalFont);
+ //if the user has explicitly set something else, don't meddle
+ if (QQuickStyle::name().isEmpty()) {
+ QQuickStyle::setStyle(QLatin1String("org.kde.desktop"));
+ }
}
qCDebug(lqt5ct) << "using qt5ct plugin";
#ifdef QT_WIDGETS_LIB
if(!QStyleFactory::keys().contains("qt5ct-style"))
qCCritical(lqt5ct) << "unable to find qt5ct proxy style";
#endif
+ QCoreApplication::instance()->installEventFilter(this);
}
Qt5CTPlatformTheme::~Qt5CTPlatformTheme()
@@ -195,6 +206,11 @@
}
#endif
+QIconEngine *Qt5CTPlatformTheme::createIconEngine(const QString &iconName) const
+{
+ return new KIconEngine(iconName, KIconLoader::global());
+}
+
void Qt5CTPlatformTheme::applySettings()
{
if(!QGuiApplication::desktopSettingsAware() || m_isIgnored)
@@ -313,7 +329,15 @@
if(!schemePath.isEmpty() && settings.value("custom_palette", false).toBool())
{
schemePath = Qt5CT::resolvePath(schemePath); //replace environment variables
- m_palette = new QPalette(loadColorScheme(schemePath));
+ if(schemePath.endsWith(".colors"))
+ {
+ m_palette = new QPalette(KColorScheme::createApplicationPalette(KSharedConfig::openConfig(schemePath)));
+ qApp->setProperty("KDE_COLOR_SCHEME_PATH", schemePath);
+ }
+ else
+ {
+ m_palette = new QPalette(loadColorScheme(schemePath));
+ }
}
m_iconTheme = settings.value("icon_theme").toString();
//load dialogs
@@ -480,3 +504,30 @@
return customPalette;
}
+
+bool Qt5CTPlatformTheme::eventFilter(QObject *obj, QEvent *e)
+{
+ if(obj == qApp && e->type() == QEvent::DynamicPropertyChange)
+ {
+ QDynamicPropertyChangeEvent *ee = static_cast<QDynamicPropertyChangeEvent*>(e);
+ if(ee->propertyName() == "KDE_COLOR_SCHEME_PATH")
+ {
+ if(qApp->property("KDE_COLOR_SCHEME_PATH").isNull())
+ {
+ QSettings settings(Qt5CT::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Appearance");
+ QString schemePath = settings.value("color_scheme_path").toString();
+ if(!schemePath.isEmpty() && settings.value("custom_palette", false).toBool())
+ {
+ schemePath = Qt5CT::resolvePath(schemePath); //replace environment variables
+ if(schemePath.endsWith(".colors"))
+ {
+ qApp->setProperty("KDE_COLOR_SCHEME_PATH", schemePath);
+ applySettings();
+ }
+ }
+ }
+ }
+ }
+ return QObject::eventFilter(obj, e);
+}
diff -ur original/src/qt5ct-qtplugin/qt5ctplatformtheme.h patched/src/qt5ct-qtplugin/qt5ctplatformtheme.h
--- original/src/qt5ct-qtplugin/qt5ctplatformtheme.h 2021-10-01 11:20:38.000000000 -0700
+++ patched/src/qt5ct-qtplugin/qt5ctplatformtheme.h 2022-04-01 02:08:48.812150883 -0700
@@ -91,10 +91,13 @@
//virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size,
// QPlatformTheme::IconOptions iconOptions = 0) const;
- //virtual QIconEngine *createIconEngine(const QString &iconName) const;
+ virtual QIconEngine *createIconEngine(const QString &iconName) const;
//virtual QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const;
//virtual QString standardButtonText(int button) const;
+protected:
+ bool eventFilter(QObject *obj, QEvent *e) override;
+
private slots:
void applySettings();
#ifdef QT_WIDGETS_LIB
diff -ur original/src/qt5ct-qtplugin/qt5ct-qtplugin.pro patched/src/qt5ct-qtplugin/qt5ct-qtplugin.pro
--- original/src/qt5ct-qtplugin/qt5ct-qtplugin.pro 2021-10-01 11:20:38.000000000 -0700
+++ patched/src/qt5ct-qtplugin/qt5ct-qtplugin.pro 2022-04-01 02:08:48.812150883 -0700
@@ -4,7 +4,7 @@
TARGET = qt5ct
CONFIG += plugin
-QT += gui-private
+QT += gui-private quickcontrols2 KConfigCore KConfigWidgets KIconThemes
!equals(DISABLE_DBUS, 1):qtHaveModule(dbus):greaterThan(QT_MINOR_VERSION, 5) {
greaterThan(QT_MINOR_VERSION, 7) {

View file

@ -0,0 +1,4 @@
[ColorScheme]
active_colors=#fffcfcfc, #ff31363b, #ff40464c, #ff363b40, #ff191b1d, #ff25292c, #fffcfcfc, #ffffffff, #fffcfcfc, #ff1b1e20, #ff2a2e32, #ff121415, #ff3daee9, #fffcfcfc, #ff1d99f3, #ff9b59b6, #ff232629, #ff000000, #ff31363b, #fffcfcfc, #ffa1a9b1, #ff3daee9
disabled_colors=#ff6e7173, #ff2f3338, #ff3e444a, #ff353a3f, #ff181a1c, #ff23272a, #ff656768, #ffffffff, #ff727679, #ff1a1d1f, #ff282c30, #ff111314, #ff282c30, #ff6e7173, #ff1a4665, #ff443051, #ff212427, #ff000000, #ff31363b, #fffcfcfc, #ff464b4f, #ff282c30
inactive_colors=#fffcfcfc, #ff31363b, #ff40464c, #ff363b40, #ff191b1d, #ff25292c, #fffcfcfc, #ffffffff, #fffcfcfc, #ff1b1e20, #ff2a2e32, #ff121415, #ff1f485e, #fffcfcfc, #ff1d99f3, #ff9b59b6, #ff232629, #ff000000, #ff31363b, #fffcfcfc, #ffa1a9b1, #ff1f485e

View file

@ -1,21 +1,16 @@
{ self, lib, config, pkgs, ... }: { { self, lib, config, pkgs, ... }: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
qt5ct qt6.qtwayland
breeze-qt5 kdePackages.breeze
breeze-gtk kdePackages.breeze-icons
breeze-icons qt6.qtsvg # needed to load breeze icons
kdePackages.qqc2-desktop-style
]; ];
environment.variables = let qt = {
qmlPackages = with pkgs; [ enable = true;
plasma5Packages.qqc2-desktop-style platformTheme = "qt5ct";
plasma5Packages.kirigami2
];
qtVersion = pkgs.qt515.qtbase.version;
in {
"QT_QPA_PLATFORMTHEME" = "qt5ct";
"QML2_IMPORT_PATH" = "${lib.concatStringsSep ":" (builtins.map (p: "${p}/lib/qt-${qtVersion}/qml") qmlPackages)}";
}; };
home-manager.users.${config.main-user} = { home-manager.users.${config.main-user} = {
@ -24,11 +19,8 @@
Inherits=breeze_cursors Inherits=breeze_cursors
''; '';
xdg.configFile = { xdg.configFile = let
# fixes dolphin background colors qtctConf = colors: ''
"kdeglobals".source = "${pkgs.breeze-qt5}/share/color-schemes/BreezeDark.colors";
"qt5ct/qt5ct.conf".text = ''
[Appearance] [Appearance]
style=Breeze style=Breeze
icon_theme=breeze-dark icon_theme=breeze-dark
@ -36,7 +28,7 @@
# Cantata misbehaves without color overrides. This overrides the breeze colors with the # Cantata misbehaves without color overrides. This overrides the breeze colors with the
# exact same colors. # exact same colors.
color_scheme_path=${./breeze-dark-colors-override.conf} color_scheme_path=${colors}
custom_palette=true custom_palette=true
[Interface] [Interface]
@ -52,22 +44,31 @@
underline_shortcut=1 underline_shortcut=1
wheel_scroll_lines=3 wheel_scroll_lines=3
''; '';
in {
# fixes dolphin background colors
"kdeglobals".source = "${pkgs.kdePackages.breeze}/share/color-schemes/BreezeDark.colors";
"qt5ct/qt5ct.conf".text = qtctConf ./colors-qt5ct.conf;
"qt6ct/qt6ct.conf".text = qtctConf ./colors-qt6ct.conf;
}; };
gtk = { gtk = {
enable = true; enable = true;
theme = { theme = {
package = pkgs.breeze-gtk; package = pkgs.kdePackages.breeze-gtk;
name = "Breeze-Dark"; name = "Breeze-Dark";
}; };
iconTheme = { iconTheme = {
package = pkgs.breeze-icons; package = pkgs.kdePackages.breeze-icons;
name = "breeze-dark"; name = "breeze-dark";
}; };
cursorTheme = { cursorTheme = {
package = pkgs.breeze-gtk; package = pkgs.kdePackages.breeze-gtk;
name = "breeze_cursors"; name = "breeze_cursors";
}; };
gtk3.extraConfig.gtk-xft-rgba = "rgb";
gtk4.extraConfig.gtk-xft-rgba = "rgb";
}; };
}; };
} }

View file

@ -37,7 +37,10 @@
enable = true; enable = true;
pinentryFlavor = "gnome3"; pinentryFlavor = "gnome3";
}; };
kdeconnect.enable = true; kdeconnect = {
package = pkgs.kdePackages.kdeconnect-kde;
enable = true;
};
}; };
services = { services = {
@ -75,14 +78,15 @@
]; ];
home.packages = with pkgs; [ home.packages = with pkgs; [
ark kdePackages.ark
kwrite kwrite
krita krita
gimp gimp
vlc vlc
mpv mpv
gpicview gpicview
filelight kdePackages.filelight kdePackages.kirigami kdePackages.kquickcharts # deps
curl
cantata cantata
logseq logseq
bitwarden bitwarden
@ -98,8 +102,6 @@
signal-desktop signal-desktop
anki-bin anki-bin
libsForQt5.kwallet
libsForQt5.kwalletmanager
distrobox distrobox
xdg-utils xdg-utils
light light
@ -119,11 +121,6 @@
}; };
services = { services = {
kdeconnect = {
enable = true;
indicator = true;
};
mpd = { mpd = {
enable = true; enable = true;
musicDirectory = "${homeConfig.home.homeDirectory}/Music"; musicDirectory = "${homeConfig.home.homeDirectory}/Music";

View file

@ -1,13 +1,13 @@
{ pkgs, ... }: { { pkgs, ... }: {
home.packages = with pkgs; [ home.packages = with pkgs; [
dolphin kdePackages.dolphin
libssh # sftp libssh # sftp
# thumbnails # thumbnails
plasma5Packages.kio kdePackages.kio
plasma5Packages.kio-extras kdePackages.kio-extras
plasma5Packages.kimageformats kdePackages.kimageformats
plasma5Packages.kdegraphics-thumbnailers kdePackages.kdegraphics-thumbnailers
]; ];
xdg.configFile."dolphinrc".source = ./dolphinrc; xdg.configFile."dolphinrc".source = ./dolphinrc;