From bc1eb8987d2cfd74a2140c2a180d55a6e7d68197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Hertzog?= Date: Wed, 6 Nov 2019 21:29:33 +0100 Subject: [PATCH] Update documentation explaining the source package --- README.md | 55 ++++++++++++++++---------------------- debian/kali-themes.preinst | 18 ++++++++++--- 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 0a7de913..043d4cb1 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,32 @@ # kali-themes -This package joins together files that were split across gnome-theme-kali, -kali-defaults and desktop-base. - -The file structure has been revamped to make it easier to see everything -that needs to be provided. +This package joins together all files that are related to theming +and configuration of the visual appearance. They were formerly split +across gnome-theme-kali, kali-defaults and desktop-base. ## desktop-base integration -To create a new theme that integrates well into desktop-base, you need to -provide appropriate files in the following directories: +desktop-base integration is provided by kali-desktop-base through +registration of various files in alternatives defined by the desktop-base +package. The files are not installed in /usr/share/desktop-base/ +except for a symlink tree mimicking a "destkop-base theme". That symlink +tree is pre-built in the "desktop-base" directory in the source package. -* Wallpapers: background images in different resolutions with GNOME and - KDE meta-information. -* Gnome-Backgrounds: an XML file defining available wallpapers. -* Grub-Background: grub background image and other associated settings - used by the default grub menu. -* LockScreen: wallpapers used by the screenlocker -* LoginScreen: wallpaper used on the login screen (GDM at least) -* Plymouth-Theme: theme used by plymouth (boot splash screen) +The kali-themes-common package is also installing various symlinks +trees to mimick directories that are traditionnally handled by +desktop-base. Most notably the directories in /usr/share/wallpapers/ that +are used by KDE. -The following directories are also used by desktop-base but they don't -need any change for a new theme as the Kali logo and emblems are unlikely -to need any modification: -* emblems -* kali-logos +## configuration files -## Other integrations +The configuration files stored in the "etc" sub-directory are installed +as is in the "kali-themes" package. However the files listed in +"files-to-divert" are first diverted by dpkg-divert and the actual +files are stored in /usr/share/kali-themes/etc/ and copied in their +target location by the postinst script (see debian/kali-themes.postinst). -* Color-Schemes: color schemes for various applications and widgets -* Window-Theme: Desktop/GTK themes -* Icon-Theme: various icon sets -* Grub-Theme: theme for Grub - -## TODO - -* The "Backgrounds" directory needs to be replaced with proper - "Wallpapers". -* We should see whether the "Grub-Theme" directory can be folded - into "Grub-Background" in some way. +When you add a new file that needs to be diverted, you can update +the list in "files-to-divert" and run "debian/update-maintainer-scripts" +to update the list of files in the 3 maintainer scripts. But you also +need to add a snippet in debian/kali-themes.preinst to setup the new +diversion on upgrade. diff --git a/debian/kali-themes.preinst b/debian/kali-themes.preinst index 70324b94..5f12b346 100644 --- a/debian/kali-themes.preinst +++ b/debian/kali-themes.preinst @@ -15,11 +15,20 @@ FILES_TO_DIVERT=" /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml " # END FILES_TO_DIVERT +setup_diversion_on_upgrade() { + local prev_version="$1" + local ref_version="$2" + local file="$3" + if dpkg --compare-versions "$prev_version" lt "$ref_version"; then + setup_diversion "$file" + fi +} + setup_diversion() { - local file=$1 + local file="$1" dpkg-divert --rename --package kali-themes \ - --divert $file.original \ - --add $file + --divert "$file.original" \ + --add "$file" } case "$1" in @@ -39,6 +48,9 @@ case "$1" in ;; upgrade) # Dynamically add new diversions when required on upgrade + # Example to divert /etc/xdg/xfce4/panel/default.xml when you + # upgrade from a version older than 2019.4.6: + # setup_diversion_on_upgrade $2 2019.4.6 /etc/xdg/xfce4/panel/default.xml ;; esac