diff --git a/pkgs/desktops/deepin/core/dde-appearance/default.nix b/pkgs/desktops/deepin/core/dde-appearance/default.nix new file mode 100644 index 000000000000..fef56b3978f7 --- /dev/null +++ b/pkgs/desktops/deepin/core/dde-appearance/default.nix @@ -0,0 +1,82 @@ +{ stdenv +, lib +, fetchFromGitHub +, cmake +, pkg-config +, wrapQtAppsHook +, qtbase +, dtkgui +, gsettings-qt +, gtk3 +, kconfig +, kwindowsystem +, kglobalaccel +, xorg +, iconv +}: + +stdenv.mkDerivation rec { + pname = "dde-appearance"; + version = "1.1.6"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + hash = "sha256-7oRbydLXw8yRzi9L1GH/q0cjMY/DLyWbj4RUSyNpVNM="; + }; + + patches = [ + ./fix-custom-wallpapers-path.diff + ]; + + postPatch = '' + substituteInPlace src/service/impl/appearancemanager.cpp \ + src/service/modules/api/compatibleengine.cpp \ + src/service/modules/subthemes/customtheme.cpp \ + --replace "/usr/share" "/run/current-system/sw/share" + + for file in $(grep -rl "/usr/bin/dde-appearance"); do + substituteInPlace $file --replace "/usr/bin/dde-appearance" "$out/bin/dde-appearance" + done + + substituteInPlace src/service/modules/api/themethumb.cpp \ + --replace "/usr/lib/deepin-api" "/run/current-system/sw/lib/deepin-api" + + substituteInPlace src/service/dbus/deepinwmfaker.cpp \ + --replace "/usr/lib/deepin-daemon" "/run/current-system/sw/lib/deepin-daemon" + + substituteInPlace src/service/modules/api/locale.cpp \ + --replace "/usr/share/locale/locale.alias" "${iconv}/share/locale/locale.alias" + ''; + + nativeBuildInputs = [ + cmake + pkg-config + wrapQtAppsHook + ]; + + buildInputs = [ + dtkgui + gsettings-qt + gtk3 + kconfig + kwindowsystem + kglobalaccel + xorg.libXcursor + xorg.xcbutilcursor + ]; + + cmakeFlags = [ + "-DDSG_DATA_DIR=/run/current-system/sw/share/dsg" + "-DSYSTEMD_USER_UNIT_DIR=${placeholder "out"}/lib/systemd/user" + ]; + + meta = with lib; { + description = "A program used to set the theme and appearance of deepin desktop"; + homepage = "https://github.com/linuxdeepin/dde-appearance"; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = teams.deepin.members; + }; +} diff --git a/pkgs/desktops/deepin/core/dde-appearance/fix-custom-wallpapers-path.diff b/pkgs/desktops/deepin/core/dde-appearance/fix-custom-wallpapers-path.diff new file mode 100644 index 000000000000..b9ef2aaafc23 --- /dev/null +++ b/pkgs/desktops/deepin/core/dde-appearance/fix-custom-wallpapers-path.diff @@ -0,0 +1,68 @@ +diff --git a/misc/dconfig/org.deepin.dde.appearance.json b/misc/dconfig/org.deepin.dde.appearance.json +index b612e6e..371f966 100644 +--- a/misc/dconfig/org.deepin.dde.appearance.json ++++ b/misc/dconfig/org.deepin.dde.appearance.json +@@ -143,7 +143,7 @@ + "visibility": "private" + }, + "Background_Uris": { +- "value": ["file:///usr/share/backgrounds/default_background.jpg"], ++ "value": ["file:///run/current-system/sw/share/backgrounds/default_background.jpg"], + "serial": 0, + "flags": [], + "name": "Background_Uris", +diff --git a/src/service/dbus/deepinwmfaker.cpp b/src/service/dbus/deepinwmfaker.cpp +index 5d455fa..40ec608 100644 +--- a/src/service/dbus/deepinwmfaker.cpp ++++ b/src/service/dbus/deepinwmfaker.cpp +@@ -54,13 +54,13 @@ Q_GLOBAL_STATIC_WITH_ARGS(QGSettings, _gsettings_dde_zone, ("com.deepin.dde.zone + + #define KWinDBusCompositorInterface "org.kde.kwin.Compositing" + #define KWinDBusCompositorPath "/Compositor" +-const char defaultFirstBackgroundUri[] = "file:///usr/share/wallpapers/deepin/desktop.jpg"; ++const char defaultFirstBackgroundUri[] = "file:///run/current-system/sw/share/wallpapers/deepin/desktop.jpg"; + const char defaultSecondBackgroundUri[] = "francesco-ungaro-1fzbUyzsHV8-unsplash"; + + //default cursor size :24 + #define DEFAULTCURSORSIZE 24 + +-const char fallback_background_name[] = "file:///usr/share/backgrounds/default_background.jpg"; ++const char fallback_background_name[] = "file:///run/current-system/sw/share/backgrounds/default_background.jpg"; + + //using org::kde::KWin; + +diff --git a/src/service/impl/appearancemanager.cpp b/src/service/impl/appearancemanager.cpp +index 360ca6f..6db93ab 100644 +--- a/src/service/impl/appearancemanager.cpp ++++ b/src/service/impl/appearancemanager.cpp +@@ -821,7 +821,7 @@ void AppearanceManager::doUpdateWallpaperURIs() + } + + // 如果是用户自己设置的桌面壁纸, 需要将主题更新为自定义 +- if (!monitorWallpaperUris.first().startsWith("/usr/share/wallpapers/deepin")) { ++ if (!monitorWallpaperUris.first().startsWith("/run/current-system/sw/share/wallpapers/deepin")) { + updateCustomTheme(TYPEWALLPAPER, monitorWallpaperUris.first()); + } + } +@@ -1689,7 +1689,7 @@ QString AppearanceManager::getWallpaperUri(const QString &index, const QString & + const Background &bg = backgroudlist.at(QRandomGenerator::global()->generate() % backgroudlist.size()); + wallpaper = bg.getId(); + } else { +- wallpaper = "file:///usr/share/wallpapers/deepin/desktop.jpg"; ++ wallpaper = "file:///run/current-system/sw/wallpapers/deepin/desktop.jpg"; + } + + PhaseWallPaper::setWallpaperUri(index, monitorName, wallpaper); +diff --git a/src/service/modules/background/backgrounds.cpp b/src/service/modules/background/backgrounds.cpp +index bf739a5..1076d59 100644 +--- a/src/service/modules/background/backgrounds.cpp ++++ b/src/service/modules/background/backgrounds.cpp +@@ -11,7 +11,7 @@ + #include + #include + +-QStringList Backgrounds::systemWallpapersDir = { "/usr/share/wallpapers/deepin" }; ++QStringList Backgrounds::systemWallpapersDir = { "/run/current-system/sw/wallpapers/deepin" }; + QStringList Backgrounds::uiSupportedFormats = { "jpeg", "png", "bmp", "tiff", "gif" }; + + Backgrounds::Backgrounds(QObject *parent) diff --git a/pkgs/desktops/deepin/default.nix b/pkgs/desktops/deepin/default.nix index d9eef406f7a3..3b65bcb709db 100644 --- a/pkgs/desktops/deepin/default.nix +++ b/pkgs/desktops/deepin/default.nix @@ -25,6 +25,7 @@ let #### CORE deepin-kwin = callPackage ./core/deepin-kwin { }; + dde-appearance = callPackage ./core/dde-appearance { }; dde-app-services = callPackage ./core/dde-app-services { }; dde-control-center = callPackage ./core/dde-control-center { }; dde-calendar = callPackage ./core/dde-calendar { };