-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathset-gdm-theme
More file actions
executable file
·102 lines (89 loc) · 3.52 KB
/
set-gdm-theme
File metadata and controls
executable file
·102 lines (89 loc) · 3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/bash
# SPDX-FileCopyrightText: 2017 - 2024 sudorook <daemon@nullcodon.com>
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
set -euo pipefail
ROOT="$(dirname "${0}")"
source "${ROOT}"/globals
! check_command glib-compile-resources gsettings sed && exit 3
# Check that GDM is installed.
command -v pacman > /dev/null 2>&1 && {
if ! pacman -Qi gdm > /dev/null 2>&1; then
show_error "GDM is not installed. Exiting."
exit 3
fi
}
command -v apt > /dev/null 2>&1 && {
if ! dpkg -s gdm3 > /dev/null 2>&1; then
show_error "GDM is not installed. Exiting."
exit 3
fi
}
# Get the current GTK theme.
case ${XDG_CURRENT_DESKTOP} in
X-Cinnamon)
GTKTHEME=$(gsettings get org.cinnamon.desktop.interface gtk-theme | sed -e "s/'//g")
;;
GNOME | ubuntu:GNOME)
GTKTHEME=$(gsettings get org.gnome.desktop.interface gtk-theme | sed -e "s/'//g")
;;
*)
show_error "${XDG_CURRENT_DESKTOP@Q} environment not supported."
exit 3
;;
esac
GNOMESHELLDIR="/usr/share/gnome-shell"
GNOMESHELLBAK="/usr/share/gnome-shell-$(date +%Y%m%d-%I%M%S)"
if [[ -d "/usr/share/themes/${GTKTHEME}" ]]; then
THEMEDIR="/usr/share/themes"
elif [[ -d "/usr/local/share/themes/${GTKTHEME}" ]]; then
THEMEDIR="/usr/local/share/themes"
elif [[ -d "${HOME}/.local/share/themes/${GTKTHEME}" ]]; then
THEMEDIR="${HOME}/.local/share/themes/"
fi
show_header "Setting GDM login theme to ${GTKTHEME@Q}."
show_info "Backing up current GDM settings to ${GNOMESHELLBAK@Q}."
sudo cp -r "${GNOMESHELLDIR}" "${GNOMESHELLBAK}"
if [[ "${GTKTHEME}" =~ ^Adapta ]] || [[ "${GTKTHEME}" =~ ^Plata ]]; then
show_info "Copying over ${GTKTHEME@Q} GDM theme."
sudo cp -rf "${THEMEDIR}/${GTKTHEME}"/gnome-shell/* "${GNOMESHELLDIR}"
sudo cp -vf \
"${THEMEDIR}/${GTKTHEME}"/gnome-shell/extensions/window-list/{classic.css,stylesheet.css} \
"${GNOMESHELLDIR}"/extensions/window-list@gnome-shell-extensions.gcampax.github.com/
elif [[ "${GTKTHEME}" =~ ^Materia ]]; then
show_info "Building ${GTKTHEME@Q} GDM theme from GResource file."
sudo glib-compile-resources \
--target="/usr/share/gnome-shell/gnome-shell-theme.gresource" \
--sourcedir="${THEMEDIR}/${GTKTHEME}/gnome-shell" \
"${THEMEDIR}/${GTKTHEME}/gnome-shell/gnome-shell-theme.gresource.xml"
elif [[ "${GTKTHEME}" =~ ^Arc ]]; then
show_info "Copying over ${GTKTHEME@Q} GDM gresource file."
if [[ "${GTKTHEME}" =~ Dark ]]; then
[ -f "${THEMEDIR}/Arc-Dark/gnome-shell/gnome-shell-theme-dark.gresource" ] &&
sudo cp -f \
"${THEMEDIR}/Arc-Dark/gnome-shell/gnome-shell-theme-dark.gresource" \
"/usr/share/gnome-shell/gnome-shell-theme.gresource"
else
[ -f "${THEMEDIR}/Arc/gnome-shell/gnome-shell-theme.gresource" ] &&
sudo cp -f \
"${THEMEDIR}/Arc/gnome-shell/gnome-shell-theme.gresource" \
"/usr/share/gnome-shell/gnome-shell-theme.gresource"
fi
else
show_error "${GTKTHEME@Q} is unsupported."
exit 3
fi
show_success "Done."