diff --git a/data/packages.xml b/data/packages.xml
index 4c37ceedd..802383d2f 100644
--- a/data/packages.xml
+++ b/data/packages.xml
@@ -57,11 +57,13 @@
mesa-vdpau
numix-frost-themes
numix-icon-theme
- numix-icon-theme-square
+ numix-icon-theme-square
pamac
pavucontrol
pulseaudio
pulseaudio-alsa
+ qt5-style-plugins
+ qt5ct
ttf-bitstream-vera
ttf-dejavu
ttf-liberation
diff --git a/scripts/postinstall.sh b/scripts/postinstall.sh
index 6c4b3cf44..a08d37b5a 100755
--- a/scripts/postinstall.sh
+++ b/scripts/postinstall.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/bash
# -*- coding: utf-8 -*-
#
# postinstall.sh
@@ -94,10 +94,6 @@ gnome_settings() {
# xscreensaver config
set_xscreensaver
-
- # Ensure that Light Locker starts before gnome-shell
- # TODO: Need to do this another way
- sed -i 's|echo "X|/usr/bin/light-locker \&\nsleep 3; echo "X|g' ${CN_DESTDIR}/etc/lightdm/Xsession
}
cinnamon_settings() {
@@ -318,6 +314,17 @@ postinstall() {
set_xorg
fi
+ # Fix ugly styles for Qt applications when running under GTK-based desktops and Qt 5.7+
+ if [[ kde != "${CN_DESKTOP}" && lxqt != "${CN_DESKTOP}" ]]; then
+ mkdir -p "${CN_DESTDIR}/home/${CN_USER_NAME}/.config/qt5ct" "${CN_DESTDIR}/etc/skel/qt5ct"
+ cp /usr/share/cnchi/scripts/postinstall/qt5ct.conf "${CN_DESTDIR}/etc/skel/qt5ct"
+ cp /usr/share/cnchi/scripts/postinstall/qt5ct.conf "${CN_DESTDIR}/home/${CN_USER_NAME}/.config/qt5ct"
+ fi
+
+ # Monkey patch session wrapper
+ cp /usr/share/cnchi/scripts/postinstall/Xsession "${CN_DESTDIR}/etc/lightdm/Xsession"
+ chmod +x "${CN_DESTDIR}/etc/lightdm/Xsession"
+
# Configure fontconfig
FONTCONFIG_FILE="/usr/share/cnchi/scripts/fonts.conf"
if [[ -f "${FONTCONFIG_FILE}" ]]; then
@@ -337,16 +344,16 @@ postinstall() {
/usr/share/antergos/antergos-menu.png \
/usr/share/cnchi/data/images/antergos/antergos-menu-logo-dark-bg.png
- for _size in "22" "24" "32"
- do
- _icon="antergos-ball-26.png"
- [[ "32" = "${_size}" ]] && _icon="antergos-menu-logo-dark-bg.png"
+ #for _size in "22" "24" "32"
+ #do
+ # _icon="antergos-ball-26.png"
+ # [[ "32" = "${_size}" ]] && _icon="antergos-menu-logo-dark-bg.png"
- cd "${CN_DESTDIR}/usr/share/icons/Numix/${_size}/places" \
- && mv start-here.svg start-here-numix.svg \
- && cp "/usr/share/cnchi/data/images/antergos/${_icon}" start-here.png \
- && cd -
- done
+ # cd "${CN_DESTDIR}/usr/share/icons/Numix/${_size}/places" \
+ # && mv start-here.svg start-here-numix.svg \
+ # && cp "/usr/share/cnchi/data/images/antergos/${_icon}" start-here.png \
+ # && cd -
+ #done
# Set desktop-specific settings
${CN_DESKTOP}_settings
diff --git a/scripts/postinstall/XSession.sh b/scripts/postinstall/XSession.sh
new file mode 100644
index 000000000..87b90d7d4
--- /dev/null
+++ b/scripts/postinstall/XSession.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+#
+# LightDM wrapper to run around X sessions.
+
+echo "Running X session wrapper"
+
+# Load profile
+for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
+ if [ -f "$file" ]; then
+ echo "Loading profile from $file";
+ . "$file"
+ fi
+done
+
+# Load resources
+for file in "/etc/X11/Xresources" "$HOME/.Xresources"; do
+ if [ -f "$file" ]; then
+ echo "Loading resource: $file"
+ xrdb -merge "$file"
+ fi
+done
+
+# Load keymaps
+for file in "/etc/X11/Xkbmap" "$HOME/.Xkbmap"; do
+ if [ -f "$file" ]; then
+ echo "Loading keymap: $file"
+ setxkbmap `cat "$file"`
+ XKB_IN_USE=yes
+ fi
+done
+
+# Load xmodmap if not using XKB
+if [ -z "$XKB_IN_USE" ]; then
+ for file in "/etc/X11/Xmodmap" "$HOME/.Xmodmap"; do
+ if [ -f "$file" ]; then
+ echo "Loading modmap: $file"
+ xmodmap "$file"
+ fi
+ done
+fi
+
+unset XKB_IN_USE
+
+# Run all system xinitrc shell scripts
+xinitdir="/etc/X11/xinit/xinitrc.d"
+if [ -d "$xinitdir" ]; then
+ for script in $xinitdir/*; do
+ echo "Loading xinit script $script"
+ if [ -x "$script" -a ! -d "$script" ]; then
+ . "$script"
+ fi
+ done
+fi
+
+# Run user xsession shell script
+script="$HOME/.xsession"
+if [ -x "$script" -a ! -d "$script" ]; then
+ echo "Loading xsession script $script"
+ . "$script"
+fi
+
+if [[ " ${@[@]} " =~ " gnome|xfce|openbox " && "$(which light-locker)" ]]; then
+ # Ensure that Light Locker starts before session manager.
+ /usr/bin/light-locker &
+ sleep 3
+fi
+
+if ! [[ " ${@[@]} " =~ " plasma|lxqt " ]]; then
+ # Fix ugly styles for Qt applications when running under GTK-based desktops and Qt 5.7+
+ export QT_QPA_PLATFORMTHEME='qt5ct'
+ export QT_STYLE_OVERRIDE=''
+fi
+
+echo "X session wrapper complete, running session $*"
+
+exec "$@"
\ No newline at end of file
diff --git a/scripts/postinstall/qt5ct.conf b/scripts/postinstall/qt5ct.conf
new file mode 100644
index 000000000..e1548f32f
--- /dev/null
+++ b/scripts/postinstall/qt5ct.conf
@@ -0,0 +1,22 @@
+[Appearance]
+color_scheme_path=
+custom_palette=false
+icon_theme=Numix-Square
+style=Fusion
+
+[Fonts]
+fixed=
+general=
+
+[Interface]
+activate_item_on_single_click=1
+buttonbox_layout=3
+cursor_flash_time=1000
+dialog_buttons_have_icons=1
+double_click_interval=400
+gui_effects=General
+menus_have_icons=true
+stylesheets=@Invalid()
+
+[SettingsWindow]
+geometry=