From 796bb6267916f048f92001535b1076307703af75 Mon Sep 17 00:00:00 2001 From: Arnaud Rebillout Date: Fri, 16 Aug 2024 21:54:58 +0700 Subject: [PATCH] Configure default terminal according to the kali desktop package installed This is necessary in case more than one terminal is installed, and they both have the same alternative priority. For example, while installing all packages at once, sometimes apt will resolve a dependency "x-terminal-emulator" to one of the many packages that provide it, for example "zutty". And then it will also install the terminal listed in the "kali-desktop-${desktop}" metapackage that is selected, eg. "qterminal" for "kali-desktop-xfce". Both zutty and qterminal have a alternative priority of 40 at the moment, so if zutty gets unpacked first, it will have precendence and be the default terminal. It's a long-standing issue. By the past, We tried to make sure that the default desktop terminal is installed first, by listing it early in the dependencies of the "kali-desktop-{desktop}" metapackage, and it kind of works with the debian-installer, but it was hard to make it work (we had to do some changes in tasksel), and it's still brittle as it relies on apt's dependency solving, which is apt's internal sauce and might change (hint, apt will get a new solver soon, cf [1]). As it turns out, it doesn't work for the live iso, somehow we still get zutty taking precedence over qterminal, I didn't check why, it probably has to do with how live-build constructs the apt command-line in order to install everything. In any case: I think our approach so far didn't work, so with this commit, we take another approach: we set the default terminal from the finish-install script, for both the installer iso and the live iso. That should solve the issue for good. [1]: https://blog.jak-linux.org/2024/05/14/solver3/ --- .../usr/lib/live/config/0031-kali-user-setup | 25 ++++++++++++++++--- .../includes.installer/kali-finish-install | 22 ++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/kali-config/common/includes.chroot/usr/lib/live/config/0031-kali-user-setup b/kali-config/common/includes.chroot/usr/lib/live/config/0031-kali-user-setup index b47da04..f7d2093 100755 --- a/kali-config/common/includes.chroot/usr/lib/live/config/0031-kali-user-setup +++ b/kali-config/common/includes.chroot/usr/lib/live/config/0031-kali-user-setup @@ -31,6 +31,26 @@ configure_usergroups() { done } +pkg_installed() { + dpkg -s "$1" 2>/dev/null | grep -q "ok installed" +} + +configure_terminal() { + while read -r desktop terminal; do + pkg_installed kali-desktop-$desktop || continue + update-alternatives --verbose --set x-terminal-emulator /usr/bin/$terminal || true + break + done </dev/null | grep -q "ok installed" +} + +configure_terminal() { + while read -r desktop terminal; do + pkg_installed kali-desktop-$desktop || continue + echo "INFO: setting x-terminal-emulator alternative to '$terminal'" + update-alternatives --verbose --set x-terminal-emulator /usr/bin/$terminal || true + break + done <