|
|
|
@ -8,176 +8,188 @@ LOGOUT_REQUIRED=false |
|
|
|
BASEDIR=$(readlink -f "$(dirname "$0")/..") |
|
|
|
ALLOWED_USERS=$(id -un) # CUSTOMIZE if needed! |
|
|
|
REQUIRED_PACKAGES=( |
|
|
|
bash-completion |
|
|
|
vim micro git wget |
|
|
|
htop jq unzip tilix |
|
|
|
zram-tools |
|
|
|
bash-completion |
|
|
|
vim micro git wget |
|
|
|
htop jq unzip tilix |
|
|
|
zram-tools |
|
|
|
) |
|
|
|
|
|
|
|
# FUNCTIONS |
|
|
|
# --------- |
|
|
|
|
|
|
|
function trap_error() { |
|
|
|
error_code=$1 |
|
|
|
error_line=$2 |
|
|
|
error_code=$1 |
|
|
|
error_line=$2 |
|
|
|
|
|
|
|
printf "\nEXIT #${error_code} due to error at line ${error_line} : \n-----------------------------------------\n" |
|
|
|
sed "${error_line}q;d" $0 |
|
|
|
echo |
|
|
|
exit $error_code |
|
|
|
printf "\nEXIT #${error_code} due to error at line ${error_line} : \n-----------------------------------------\n" |
|
|
|
sed "${error_line}q;d" $0 |
|
|
|
echo |
|
|
|
exit $error_code |
|
|
|
} |
|
|
|
|
|
|
|
function runVoid() { |
|
|
|
trap - ERR |
|
|
|
local COMMAND="$@" |
|
|
|
bash -c "${COMMAND}" > /dev/null 2>&1 |
|
|
|
runVoidError=$? |
|
|
|
trap 'trap_error $? $LINENO' ERR |
|
|
|
trap - ERR |
|
|
|
local COMMAND="$@" |
|
|
|
bash -c "${COMMAND}" > /dev/null 2>&1 |
|
|
|
runVoidError=$? |
|
|
|
trap 'trap_error $? $LINENO' ERR |
|
|
|
} |
|
|
|
|
|
|
|
function askConfirmation() { |
|
|
|
case "$1" in |
|
|
|
y | Y | yes | YES) |
|
|
|
QUESTION="(Y/n)?" |
|
|
|
DEFAULT=0 |
|
|
|
;; |
|
|
|
*) |
|
|
|
QUESTION="(y/N)?" |
|
|
|
DEFAULT=1 |
|
|
|
;; |
|
|
|
esac |
|
|
|
read -p "$QUESTION : " choice |
|
|
|
case "$choice" in |
|
|
|
y | Y | yes | YES) return 0 ;; #true |
|
|
|
n | no | N | NO) return 1 ;; #false |
|
|
|
*) return $DEFAULT ;; |
|
|
|
esac |
|
|
|
case "$1" in |
|
|
|
y | Y | yes | YES) |
|
|
|
QUESTION="(Y/n)?" |
|
|
|
DEFAULT=0 |
|
|
|
;; |
|
|
|
*) |
|
|
|
QUESTION="(y/N)?" |
|
|
|
DEFAULT=1 |
|
|
|
;; |
|
|
|
esac |
|
|
|
read -p "$QUESTION : " choice |
|
|
|
case "$choice" in |
|
|
|
y | Y | yes | YES) return 0 ;; #true |
|
|
|
n | no | N | NO) return 1 ;; #false |
|
|
|
*) return $DEFAULT ;; |
|
|
|
esac |
|
|
|
} |
|
|
|
|
|
|
|
function upgrade { |
|
|
|
echo "# updating repositories" |
|
|
|
echo "===================" |
|
|
|
if [[ $(date --date='-12 hours' +%s) -gt $(date -d "$(stat -c %y /var/lib/apt/lists/partial)" +%s) ]]; then |
|
|
|
sudo apt update |
|
|
|
sudo apt autoremove -y |
|
|
|
else |
|
|
|
echo "repositories recently updated!" |
|
|
|
fi |
|
|
|
echo "# updating repositories" |
|
|
|
echo "===================" |
|
|
|
if [[ $(date --date='-12 hours' +%s) -gt $(date -d "$(stat -c %y /var/lib/apt/lists/partial)" +%s) ]]; then |
|
|
|
sudo apt update |
|
|
|
sudo apt autoremove -y |
|
|
|
else |
|
|
|
echo "repositories recently updated!" |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function apt_required_packages { |
|
|
|
echo "# required packages" |
|
|
|
echo "===================" |
|
|
|
for package in ${REQUIRED_PACKAGES[@]}; do |
|
|
|
runVoid dpkg-query --status $package |
|
|
|
if [ $runVoidError -ne 0 ]; then |
|
|
|
echo -n "installing package <$package> ... " |
|
|
|
sudo DEBIAN_FRONTEND=noninteractive apt install -y $package |
|
|
|
echo "DONE" |
|
|
|
fi |
|
|
|
done |
|
|
|
echo "# required packages" |
|
|
|
echo "===================" |
|
|
|
for package in ${REQUIRED_PACKAGES[@]}; do |
|
|
|
runVoid dpkg-query --status $package |
|
|
|
if [ $runVoidError -ne 0 ]; then |
|
|
|
echo -n "installing package <$package> ... " |
|
|
|
sudo DEBIAN_FRONTEND=noninteractive apt install -y $package |
|
|
|
echo "DONE" |
|
|
|
fi |
|
|
|
done |
|
|
|
} |
|
|
|
|
|
|
|
function fix_system_lang { |
|
|
|
echo "# fix system language" |
|
|
|
echo "=====================" |
|
|
|
|
|
|
|
if grep -q ^LANG=C.UTF-8 /etc/default/locale; then |
|
|
|
LANG='en_US.UTF-8' |
|
|
|
if gsettings get org.gnome.desktop.input-sources sources | grep -q "'xkb', 'fr"; then |
|
|
|
LANG='fr_FR.UTF-8' |
|
|
|
else |
|
|
|
if gsettings get org.gnome.desktop.input-sources sources | grep -q "'xkb', 'es"; then |
|
|
|
LANG='es_ES.UTF-8' |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
echo "fix found LANG=$LANG" |
|
|
|
|
|
|
|
cat << EOF | sudo tee /etc/locale.gen |
|
|
|
echo "# fix system language" |
|
|
|
echo "=====================" |
|
|
|
|
|
|
|
if grep -q ^LANG=C.UTF-8 /etc/default/locale; then |
|
|
|
LANG='en_US.UTF-8' |
|
|
|
if gsettings get org.gnome.desktop.input-sources sources | grep -q "'xkb', 'fr"; then |
|
|
|
LANG='fr_FR.UTF-8' |
|
|
|
else |
|
|
|
if gsettings get org.gnome.desktop.input-sources sources | grep -q "'xkb', 'es"; then |
|
|
|
LANG='es_ES.UTF-8' |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
echo "fix found LANG=$LANG" |
|
|
|
|
|
|
|
cat << EOF | sudo tee /etc/locale.gen |
|
|
|
$LANG UTF-8 |
|
|
|
EOF |
|
|
|
sudo locale-gen |
|
|
|
sudo update-locale LANG=$LANG |
|
|
|
else |
|
|
|
echo 'already fixed!' |
|
|
|
fi |
|
|
|
|
|
|
|
source /etc/default/locale |
|
|
|
export LANG |
|
|
|
sudo locale-gen |
|
|
|
sudo update-locale LANG=$LANG |
|
|
|
else |
|
|
|
echo 'already fixed!' |
|
|
|
fi |
|
|
|
|
|
|
|
source /etc/default/locale |
|
|
|
export LANG |
|
|
|
} |
|
|
|
|
|
|
|
function fix_input_sources { |
|
|
|
echo "# fix input sources containing french variants" |
|
|
|
echo "==============================================" |
|
|
|
if gsettings get org.gnome.desktop.input-sources sources | egrep -q 'fr\+|mozc-jp'; then |
|
|
|
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'fr')]" |
|
|
|
echo no more french variant found, fixed |
|
|
|
else |
|
|
|
echo no french variant found, ok! |
|
|
|
fi |
|
|
|
echo "# fix input sources containing french variants" |
|
|
|
echo "==============================================" |
|
|
|
if gsettings get org.gnome.desktop.input-sources sources | egrep -q 'fr\+|mozc-jp'; then |
|
|
|
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'fr')]" |
|
|
|
echo no more french variant found, fixed |
|
|
|
else |
|
|
|
echo no french variant found, ok! |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function miaou_bash { |
|
|
|
echo "## miaou-bash" |
|
|
|
echo "==============" |
|
|
|
if ! command -v upgrade-miaou-bash > /dev/null; then |
|
|
|
curl https://git.artcode.re/miaou/miaou-bash/raw/branch/main/install.sh | sudo bash -s |
|
|
|
else |
|
|
|
echo "miaou-bash already installed!" |
|
|
|
upgrade-miaou-bash |
|
|
|
fi |
|
|
|
echo "## miaou-bash" |
|
|
|
echo "==============" |
|
|
|
if ! command -v upgrade-miaou-bash > /dev/null; then |
|
|
|
curl https://git.artcode.re/miaou/miaou-bash/raw/branch/main/install.sh | sudo bash -s |
|
|
|
else |
|
|
|
echo "miaou-bash already installed!" |
|
|
|
upgrade-miaou-bash |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function openssh { |
|
|
|
echo "## openssh-server" |
|
|
|
echo "=================" |
|
|
|
|
|
|
|
echo TODO:... |
|
|
|
# PGKNAME='openssh-server' |
|
|
|
# runVoid dpkg-query --status $PGKNAME |
|
|
|
# if [ $runVoidError -ne 0 ]; then |
|
|
|
# set -e |
|
|
|
# sudo apt install -y $PGKNAME |
|
|
|
# sudo /opt/miaou-bash/tools/append_or_replace "^#\?PermitRootLogin.*$" "PermitRootLogin no" /etc/ssh/sshd_config |
|
|
|
# sudo /opt/miaou-bash/tools/append_or_replace "^#\?PasswordAuthentication.*$" "PasswordAuthentication no" /etc/ssh/sshd_config |
|
|
|
# sudo /opt/miaou-bash/tools/append_or_replace "^#\?AllowUsers.*$" "AllowUsers $ALLOWED_USERS" /etc/ssh/sshd_config |
|
|
|
# sudo systemctl restart sshd |
|
|
|
# set +e |
|
|
|
# else |
|
|
|
# echo "${PGKNAME} already installed!" |
|
|
|
# fi |
|
|
|
echo "## openssh-server" |
|
|
|
echo "=================" |
|
|
|
|
|
|
|
echo TODO:... |
|
|
|
# PGKNAME='openssh-server' |
|
|
|
# runVoid dpkg-query --status $PGKNAME |
|
|
|
# if [ $runVoidError -ne 0 ]; then |
|
|
|
# set -e |
|
|
|
# sudo apt install -y $PGKNAME |
|
|
|
# sudo /opt/miaou-bash/tools/append_or_replace "^#\?PermitRootLogin.*$" "PermitRootLogin no" /etc/ssh/sshd_config |
|
|
|
# sudo /opt/miaou-bash/tools/append_or_replace "^#\?PasswordAuthentication.*$" "PasswordAuthentication no" /etc/ssh/sshd_config |
|
|
|
# sudo /opt/miaou-bash/tools/append_or_replace "^#\?AllowUsers.*$" "AllowUsers $ALLOWED_USERS" /etc/ssh/sshd_config |
|
|
|
# sudo systemctl restart sshd |
|
|
|
# set +e |
|
|
|
# else |
|
|
|
# echo "${PGKNAME} already installed!" |
|
|
|
# fi |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
function faster_grub { |
|
|
|
echo "## grub faster and smarter" |
|
|
|
echo "==========================" |
|
|
|
if grep -q GRUB_TIMEOUT=5 /etc/default/grub; then |
|
|
|
echo "grub was not modified yet, applying changes..." |
|
|
|
sudo /opt/miaou-bash/tools/append_or_replace "^GRUB_TIMEOUT=5$" "GRUB_TIMEOUT=0" /etc/default/grub |
|
|
|
sudo update-grub |
|
|
|
echo OK |
|
|
|
else |
|
|
|
echo changes already done! |
|
|
|
fi |
|
|
|
echo "## grub faster and smarter" |
|
|
|
echo "==========================" |
|
|
|
if grep -q GRUB_TIMEOUT=5 /etc/default/grub; then |
|
|
|
echo "grub was not modified yet, applying changes..." |
|
|
|
sudo /opt/miaou-bash/tools/append_or_replace "^GRUB_TIMEOUT=5$" "GRUB_TIMEOUT=0" /etc/default/grub |
|
|
|
sudo update-grub |
|
|
|
echo OK |
|
|
|
else |
|
|
|
echo changes already done! |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function true_firefox { |
|
|
|
echo "## firefox latest" |
|
|
|
echo "=================" |
|
|
|
firefox_lang=$(echo $LANG | cut -d. -f1) |
|
|
|
|
|
|
|
if [[ ! /usr/local/bin/firefox -ef /opt/firefox/firefox ]]; then |
|
|
|
set -e |
|
|
|
cd /tmp |
|
|
|
firefox_archive_url=$(curl -s "https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=$firefox_lang" | cut -d '"' -f2) |
|
|
|
wget "$firefox_archive_url" |
|
|
|
firefox_archive=${firefox_archive_url##*/} |
|
|
|
sudo mkdir /opt/firefox -p |
|
|
|
sudo chown $USER /opt/firefox |
|
|
|
tar -xf "$firefox_archive" -C /opt |
|
|
|
cat << EOF | sudo tee -a /usr/share/applications/firefox.desktop |
|
|
|
echo "## firefox latest" |
|
|
|
echo "=================" |
|
|
|
firefox_lang=$(echo $LANG | cut -d. -f1) |
|
|
|
|
|
|
|
case "$firefox_lang" in |
|
|
|
fr*) firefox_lang=fr ;; |
|
|
|
es*) firefox_lang=es-ES ;; |
|
|
|
*) firefox_lang=en-US ;; |
|
|
|
esac |
|
|
|
echo "$firefox_lang" |
|
|
|
|
|
|
|
if [[ ! /usr/local/bin/firefox -ef /opt/firefox/firefox ]]; then |
|
|
|
set -e |
|
|
|
cd /tmp |
|
|
|
|
|
|
|
# https://download-installer.cdn.mozilla.net/pub/firefox/releases/146.0.1/linux-x86_64/en-US/firefox-146.0.1.tar.xz |
|
|
|
firefox_version=$(curl -sI https://www.firefox.com/$firefox_lang/firefox/notes/ | grep location: | cut -d/ -f4) |
|
|
|
firefox_archive_url="https://download-installer.cdn.mozilla.net/pub/firefox/releases/$firefox_version/linux-x86_64/$firefox_lang/firefox-$firefox_version.tar.xz" |
|
|
|
echo $firefox_archive_url |
|
|
|
|
|
|
|
wget "$firefox_archive_url" |
|
|
|
firefox_archive=${firefox_archive_url##*/} |
|
|
|
sudo mkdir /opt/firefox -p |
|
|
|
sudo chown $USER /opt/firefox |
|
|
|
tar -xf "$firefox_archive" -C /opt |
|
|
|
cat << EOF | sudo tee -a /usr/share/applications/firefox.desktop |
|
|
|
[Desktop Entry] |
|
|
|
Name=Firefox |
|
|
|
Comment=Web Browser |
|
|
|
@ -203,62 +215,62 @@ Exec=/opt/firefox/firefox --private-window %u |
|
|
|
Name=Profile Manager |
|
|
|
Exec=/opt/firefox/firefox -P %u |
|
|
|
EOF |
|
|
|
sudo ln -sf /opt/firefox/firefox /usr/local/bin/firefox |
|
|
|
sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser /opt/firefox/firefox 200 && sudo update-alternatives --set x-www-browser /opt/firefox/firefox |
|
|
|
sudo apt remove -y firefox-esr |
|
|
|
sudo apt install -y libdbus-glib-1-2 |
|
|
|
set +e |
|
|
|
else |
|
|
|
echo "firefox latest already installed!" |
|
|
|
fi |
|
|
|
|
|
|
|
echo "## firefox by default" |
|
|
|
echo "=====================" |
|
|
|
xdg-settings set default-web-browser firefox.desktop |
|
|
|
sudo ln -sf /opt/firefox/firefox /usr/local/bin/firefox |
|
|
|
sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser /opt/firefox/firefox 200 && sudo update-alternatives --set x-www-browser /opt/firefox/firefox |
|
|
|
sudo apt remove -y firefox-esr |
|
|
|
sudo apt install -y libdbus-glib-1-2 |
|
|
|
set +e |
|
|
|
else |
|
|
|
echo "firefox latest already installed!" |
|
|
|
fi |
|
|
|
|
|
|
|
echo "## firefox by default" |
|
|
|
echo "=====================" |
|
|
|
xdg-settings set default-web-browser firefox.desktop |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
function gnome_settings { |
|
|
|
echo "## gnome default settings" |
|
|
|
echo "=========================" |
|
|
|
echo "## gnome default settings" |
|
|
|
echo "=========================" |
|
|
|
|
|
|
|
gsettings set org.gnome.nautilus.preferences click-policy 'single' |
|
|
|
gsettings set org.gtk.gtk4.Settings.FileChooser sort-directories-first true |
|
|
|
gsettings set org.gnome.nautilus.preferences click-policy 'single' |
|
|
|
gsettings set org.gtk.gtk4.Settings.FileChooser sort-directories-first true |
|
|
|
|
|
|
|
gsettings set org.gnome.mutter dynamic-workspaces false |
|
|
|
gsettings set org.gnome.desktop.wm.preferences num-workspaces 1 |
|
|
|
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true |
|
|
|
gsettings set org.gnome.mutter dynamic-workspaces false |
|
|
|
gsettings set org.gnome.desktop.wm.preferences num-workspaces 1 |
|
|
|
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true |
|
|
|
} |
|
|
|
|
|
|
|
function tilix_default_terminal { |
|
|
|
local reload=false |
|
|
|
local reload=false |
|
|
|
|
|
|
|
echo "## prevent displaying desktop entries (gnome-terminal replaced by tilix)" |
|
|
|
echo "========================================================================" |
|
|
|
if [[ ! -f ~/.local/share/applications/org.gnome.Terminal.desktop ]]; then |
|
|
|
cat << 'EOF' > ~/.local/share/applications/org.gnome.Terminal.desktop |
|
|
|
echo "## prevent displaying desktop entries (gnome-terminal replaced by tilix)" |
|
|
|
echo "========================================================================" |
|
|
|
if [[ ! -f ~/.local/share/applications/org.gnome.Terminal.desktop ]]; then |
|
|
|
cat << 'EOF' > ~/.local/share/applications/org.gnome.Terminal.desktop |
|
|
|
[Desktop Entry] |
|
|
|
NoDisplay=true |
|
|
|
EOF |
|
|
|
reload=true |
|
|
|
else |
|
|
|
echo Hidden default terminal in favor of Tilix! |
|
|
|
fi |
|
|
|
|
|
|
|
echo "## prevent displaying desktop entries (xiterm+thai replaced by tilix)" |
|
|
|
echo "========================================================================" |
|
|
|
if [[ ! -f ~/.local/share/applications/xiterm+thai.desktop ]]; then |
|
|
|
cat << 'EOF' > ~/.local/share/applications/xiterm+thai.desktop |
|
|
|
reload=true |
|
|
|
else |
|
|
|
echo Hidden default terminal in favor of Tilix! |
|
|
|
fi |
|
|
|
|
|
|
|
echo "## prevent displaying desktop entries (xiterm+thai replaced by tilix)" |
|
|
|
echo "========================================================================" |
|
|
|
if [[ ! -f ~/.local/share/applications/xiterm+thai.desktop ]]; then |
|
|
|
cat << 'EOF' > ~/.local/share/applications/xiterm+thai.desktop |
|
|
|
[Desktop Entry] |
|
|
|
NoDisplay=true |
|
|
|
EOF |
|
|
|
reload=true |
|
|
|
else |
|
|
|
echo Hidden default terminal in favor of Tilix! |
|
|
|
fi |
|
|
|
reload=true |
|
|
|
else |
|
|
|
echo Hidden default terminal in favor of Tilix! |
|
|
|
fi |
|
|
|
|
|
|
|
if [[ ! -f ~/.local/share/applications/com.gexperts.Tilix.desktop ]]; then |
|
|
|
cat << 'EOF' > ~/.local/share/applications/com.gexperts.Tilix.desktop |
|
|
|
if [[ ! -f ~/.local/share/applications/com.gexperts.Tilix.desktop ]]; then |
|
|
|
cat << 'EOF' > ~/.local/share/applications/com.gexperts.Tilix.desktop |
|
|
|
[Desktop Entry] |
|
|
|
Version=1.0 |
|
|
|
Name=Tilix |
|
|
|
@ -290,168 +302,168 @@ Name[fr]=Préférences |
|
|
|
Name=Preferences |
|
|
|
Exec=tilix --preferences |
|
|
|
EOF |
|
|
|
reload=true |
|
|
|
fi |
|
|
|
|
|
|
|
[[ $reload ]] && update-desktop-database ~/.local/share/applications |
|
|
|
|
|
|
|
echo "Tiling Settings" |
|
|
|
gsettings set com.gexperts.Tilix.Settings paste-strip-trailing-whitespace true |
|
|
|
gsettings set com.gexperts.Tilix.Settings focus-follow-mouse true |
|
|
|
gsettings set com.gexperts.Tilix.Settings window-style 'disable-csd-hide-toolbar' |
|
|
|
gsettings set com.gexperts.Tilix.Settings control-click-titlebar true |
|
|
|
gsettings set com.gexperts.Tilix.Settings terminal-title-show-when-single false |
|
|
|
gsettings set com.gexperts.Tilix.Settings warn-vte-config-issue false |
|
|
|
gsettings set com.gexperts.Tilix.Settings theme-variant 'dark' |
|
|
|
gsettings set com.gexperts.Tilix.Settings control-click-titlebar true |
|
|
|
reload=true |
|
|
|
fi |
|
|
|
|
|
|
|
[[ $reload ]] && update-desktop-database ~/.local/share/applications |
|
|
|
|
|
|
|
echo "Tiling Settings" |
|
|
|
gsettings set com.gexperts.Tilix.Settings paste-strip-trailing-whitespace true |
|
|
|
gsettings set com.gexperts.Tilix.Settings focus-follow-mouse true |
|
|
|
gsettings set com.gexperts.Tilix.Settings window-style 'disable-csd-hide-toolbar' |
|
|
|
gsettings set com.gexperts.Tilix.Settings control-click-titlebar true |
|
|
|
gsettings set com.gexperts.Tilix.Settings terminal-title-show-when-single false |
|
|
|
gsettings set com.gexperts.Tilix.Settings warn-vte-config-issue false |
|
|
|
gsettings set com.gexperts.Tilix.Settings theme-variant 'dark' |
|
|
|
gsettings set com.gexperts.Tilix.Settings control-click-titlebar true |
|
|
|
} |
|
|
|
|
|
|
|
function no_lock_screen { |
|
|
|
echo "## disable automatic lock screen => use Super_L for LOCK" |
|
|
|
echo "========================================================" |
|
|
|
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type nothing |
|
|
|
gsettings set org.gnome.desktop.screensaver lock-enabled false |
|
|
|
echo "## disable automatic lock screen => use Super_L for LOCK" |
|
|
|
echo "========================================================" |
|
|
|
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type nothing |
|
|
|
gsettings set org.gnome.desktop.screensaver lock-enabled false |
|
|
|
} |
|
|
|
|
|
|
|
function favorite_apps { |
|
|
|
echo "# favourite apps" |
|
|
|
echo "#===============" |
|
|
|
runVoid "gsettings get org.gnome.shell favorite-apps | grep firefox-esr" |
|
|
|
if [[ $runVoidError == 0 ]]; then |
|
|
|
gsettings set org.gnome.shell favorite-apps "['org.gnome.Nautilus.desktop','firefox-stable.desktop','org.gnome.Software.desktop']" |
|
|
|
else |
|
|
|
echo "preserve existing apps!" |
|
|
|
fi |
|
|
|
echo "# favourite apps" |
|
|
|
echo "#===============" |
|
|
|
runVoid "gsettings get org.gnome.shell favorite-apps | grep firefox-esr" |
|
|
|
if [[ $runVoidError == 0 ]]; then |
|
|
|
gsettings set org.gnome.shell favorite-apps "['org.gnome.Nautilus.desktop','firefox-stable.desktop','org.gnome.Software.desktop']" |
|
|
|
else |
|
|
|
echo "preserve existing apps!" |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function golden_dict { |
|
|
|
echo "## golden dict" |
|
|
|
echo "================" |
|
|
|
if [[ ! -d /usr/share/goldendict/dicts ]]; then |
|
|
|
sudo git clone --depth 1 https://git.artcode.re/non-free/dicts.git /usr/share/goldendict/dicts |
|
|
|
fi |
|
|
|
if [[ ! -f $HOME/.config/goldendict/config ]] || ! grep -q "path.*/usr/share/goldendict/dicts" $HOME/.config/goldendict/config; then |
|
|
|
mkdir -p "$HOME/.config/goldendict/" |
|
|
|
cp "$BASEDIR/lib/goldendict/config" "$HOME/.config/goldendict/" |
|
|
|
nohup goldendict & |
|
|
|
fi |
|
|
|
mkdir -p $HOME/.config/autostart |
|
|
|
if [[ ! -f $HOME/.config/autostart/org.goldendict.GoldenDict.desktop ]]; then |
|
|
|
echo -n "autostart GoldenDict ..." |
|
|
|
ln -sf /usr/share/applications/org.goldendict.GoldenDict.desktop $HOME/.config/autostart/ |
|
|
|
echo OK |
|
|
|
else |
|
|
|
echo "autostart GoldenDict already installed!" |
|
|
|
fi |
|
|
|
echo "## golden dict" |
|
|
|
echo "================" |
|
|
|
if [[ ! -d /usr/share/goldendict/dicts ]]; then |
|
|
|
sudo git clone --depth 1 https://git.artcode.re/non-free/dicts.git /usr/share/goldendict/dicts |
|
|
|
fi |
|
|
|
if [[ ! -f $HOME/.config/goldendict/config ]] || ! grep -q "path.*/usr/share/goldendict/dicts" $HOME/.config/goldendict/config; then |
|
|
|
mkdir -p "$HOME/.config/goldendict/" |
|
|
|
cp "$BASEDIR/lib/goldendict/config" "$HOME/.config/goldendict/" |
|
|
|
nohup goldendict & |
|
|
|
fi |
|
|
|
mkdir -p $HOME/.config/autostart |
|
|
|
if [[ ! -f $HOME/.config/autostart/org.goldendict.GoldenDict.desktop ]]; then |
|
|
|
echo -n "autostart GoldenDict ..." |
|
|
|
ln -sf /usr/share/applications/org.goldendict.GoldenDict.desktop $HOME/.config/autostart/ |
|
|
|
echo OK |
|
|
|
else |
|
|
|
echo "autostart GoldenDict already installed!" |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function gnome_extensions { |
|
|
|
echo "## gnome-shell install several extensions" |
|
|
|
echo "=========================================" |
|
|
|
|
|
|
|
$BASEDIR/tools/gnome-extensions-helper dash-to-dock@micxgx.gmail.com --apply-custom-theme=true --multi-monitor=true --dash-max-icon-size=58 | |
|
|
|
grep -q '^please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
$BASEDIR/tools/gnome-extensions-helper runcat@kolesnikov.se --idle-threshold=66 | |
|
|
|
grep -q 'please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
# $BASEDIR/tools/gnome-extensions-helper netspeedsimplified@prateekmedia.extension | |
|
|
|
# grep -q 'please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
$BASEDIR/tools/gnome-extensions-helper appindicatorsupport@rgcjonas.gmail.com --tray-pos=left --icon-saturation=0.9 | |
|
|
|
grep -q 'please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
$BASEDIR/tools/gnome-extensions-helper weeks-start-on-monday@extensions.gnome-shell.fifi.org | |
|
|
|
grep -q 'please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
|
|
|
|
true |
|
|
|
echo "## gnome-shell install several extensions" |
|
|
|
echo "=========================================" |
|
|
|
|
|
|
|
$BASEDIR/tools/gnome-extensions-helper dash-to-dock@micxgx.gmail.com --apply-custom-theme=true --multi-monitor=true --dash-max-icon-size=58 | |
|
|
|
grep -q '^please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
$BASEDIR/tools/gnome-extensions-helper runcat@kolesnikov.se --idle-threshold=66 | |
|
|
|
grep -q 'please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
# $BASEDIR/tools/gnome-extensions-helper netspeedsimplified@prateekmedia.extension | |
|
|
|
# grep -q 'please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
$BASEDIR/tools/gnome-extensions-helper appindicatorsupport@rgcjonas.gmail.com --tray-pos=left --icon-saturation=0.9 | |
|
|
|
grep -q 'please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
$BASEDIR/tools/gnome-extensions-helper weeks-start-on-monday@extensions.gnome-shell.fifi.org | |
|
|
|
grep -q 'please logout to take effect!' && LOGOUT_REQUIRED=true |
|
|
|
|
|
|
|
true |
|
|
|
} |
|
|
|
|
|
|
|
function developer_flavor { |
|
|
|
gsettings set org.gnome.shell.extensions.runcat custom-system-monitor-command "xterm -fa Monospace -fs 12 -fullscreen -s htop" |
|
|
|
gsettings set org.gnome.shell.extensions.runcat custom-system-monitor-command "xterm -fa Monospace -fs 12 -fullscreen -s htop" |
|
|
|
} |
|
|
|
|
|
|
|
function firefox_addons { |
|
|
|
echo "# firefox addons" |
|
|
|
echo "================" |
|
|
|
declare -A FIREFOX_ADDONS |
|
|
|
FIREFOX_ADDONS['uBlock0@raymondhill.net']="3740966/ublock_origin-1.34.0-an+fx.xpi" |
|
|
|
FIREFOX_ADDONS['fr-dicollecte@dictionaries.addons.mozilla.org']='3581786/dictionnaire_francais-7.0b.xpi' |
|
|
|
FIREFOX_ADDONS['chrome-gnome-shell@gnome.org']='898030/gnome_shell_integration-10.1-an+fx-linux.xpi' |
|
|
|
FIREFOX_ADDONS['jid1-ZAdIEUB7XOzOJw@jetpack']='3741831/duckduckgo_privacy_essentials-2021.3.8-an+fx.xpi' |
|
|
|
|
|
|
|
mkdir -p /opt/firefox/distribution/extensions |
|
|
|
for addon_id in "${!FIREFOX_ADDONS[@]}"; do |
|
|
|
addon_part_url="${FIREFOX_ADDONS[$addon_id]}" |
|
|
|
addon_xpi="/opt/firefox/distribution/extensions/${addon_id}.xpi" |
|
|
|
if [[ ! -f $addon_xpi ]]; then |
|
|
|
echo -n "Firefox addon <$addon_id> installing ..." |
|
|
|
wget -q "https://addons.mozilla.org/firefox/downloads/file/${addon_part_url}" -O $addon_xpi |
|
|
|
echo DONE |
|
|
|
else |
|
|
|
echo "Firefox addon <$addon_id> already installed!" |
|
|
|
fi |
|
|
|
done |
|
|
|
echo "# firefox addons" |
|
|
|
echo "================" |
|
|
|
declare -A FIREFOX_ADDONS |
|
|
|
FIREFOX_ADDONS['uBlock0@raymondhill.net']="3740966/ublock_origin-1.34.0-an+fx.xpi" |
|
|
|
FIREFOX_ADDONS['fr-dicollecte@dictionaries.addons.mozilla.org']='3581786/dictionnaire_francais-7.0b.xpi' |
|
|
|
FIREFOX_ADDONS['chrome-gnome-shell@gnome.org']='898030/gnome_shell_integration-10.1-an+fx-linux.xpi' |
|
|
|
FIREFOX_ADDONS['jid1-ZAdIEUB7XOzOJw@jetpack']='3741831/duckduckgo_privacy_essentials-2021.3.8-an+fx.xpi' |
|
|
|
|
|
|
|
mkdir -p /opt/firefox/distribution/extensions |
|
|
|
for addon_id in "${!FIREFOX_ADDONS[@]}"; do |
|
|
|
addon_part_url="${FIREFOX_ADDONS[$addon_id]}" |
|
|
|
addon_xpi="/opt/firefox/distribution/extensions/${addon_id}.xpi" |
|
|
|
if [[ ! -f $addon_xpi ]]; then |
|
|
|
echo -n "Firefox addon <$addon_id> installing ..." |
|
|
|
wget -q "https://addons.mozilla.org/firefox/downloads/file/${addon_part_url}" -O $addon_xpi |
|
|
|
echo DONE |
|
|
|
else |
|
|
|
echo "Firefox addon <$addon_id> already installed!" |
|
|
|
fi |
|
|
|
done |
|
|
|
} |
|
|
|
|
|
|
|
function firefox_settings { |
|
|
|
echo "# Firefox default settings" |
|
|
|
echo "#=========================" |
|
|
|
echo "# Firefox default settings" |
|
|
|
echo "#=========================" |
|
|
|
|
|
|
|
if [[ ! -f /opt/firefox/firefox.cfg ]]; then |
|
|
|
cat << EOF | sudo tee -a /opt/firefox/firefox.cfg |
|
|
|
if [[ ! -f /opt/firefox/firefox.cfg ]]; then |
|
|
|
cat << EOF | sudo tee -a /opt/firefox/firefox.cfg |
|
|
|
// IMPORTANT: Start your code on the 2nd line |
|
|
|
|
|
|
|
lockPref("browser.pocket.enabled", false); |
|
|
|
lockPref("extensions.pocket.enabled", false); |
|
|
|
lockPref("browser.shell.checkDefaultBrowser", false); |
|
|
|
EOF |
|
|
|
cat << EOF | sudo tee -a /opt/firefox/defaults/pref/autoconfig.js |
|
|
|
cat << EOF | sudo tee -a /opt/firefox/defaults/pref/autoconfig.js |
|
|
|
pref("general.config.filename", "firefox.cfg"); |
|
|
|
pref("general.config.obscure_value", 0); |
|
|
|
EOF |
|
|
|
|
|
|
|
else |
|
|
|
echo "Firefox default settings already defined!" |
|
|
|
fi |
|
|
|
else |
|
|
|
echo "Firefox default settings already defined!" |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function libre_re_pixmap { |
|
|
|
echo "# libre_re pixmap" |
|
|
|
echo "=================" |
|
|
|
if [[ ! -f /usr/share/pixmaps/faces/libre_re.png ]]; then |
|
|
|
sudo curl -o /usr/share/pixmaps/faces/libre_re.png "$GIT_BASE_URL/raw/branch/master/lib/pixmap/libre_re.png" |
|
|
|
dbus-send --system --dest=org.freedesktop.Accounts \ |
|
|
|
--type=method_call --print-reply \ |
|
|
|
/org/freedesktop/Accounts/User$(id -u) \ |
|
|
|
org.freedesktop.Accounts.User.SetIconFile \ |
|
|
|
string:"/usr/share/pixmaps/faces/libre_re.png" |
|
|
|
else |
|
|
|
echo "pixmap already copied!" |
|
|
|
fi |
|
|
|
echo "# libre_re pixmap" |
|
|
|
echo "=================" |
|
|
|
if [[ ! -f /usr/share/pixmaps/faces/libre_re.png ]]; then |
|
|
|
sudo curl -o /usr/share/pixmaps/faces/libre_re.png "$GIT_BASE_URL/raw/branch/master/lib/pixmap/libre_re.png" |
|
|
|
dbus-send --system --dest=org.freedesktop.Accounts \ |
|
|
|
--type=method_call --print-reply \ |
|
|
|
/org/freedesktop/Accounts/User$(id -u) \ |
|
|
|
org.freedesktop.Accounts.User.SetIconFile \ |
|
|
|
string:"/usr/share/pixmaps/faces/libre_re.png" |
|
|
|
else |
|
|
|
echo "pixmap already copied!" |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function clear_system_extensions { |
|
|
|
echo "# clear system gnome-shell extensions" |
|
|
|
echo "=====================================" |
|
|
|
count_system_extensions=$(ls -1 /usr/share/gnome-shell/extensions | wc -l) |
|
|
|
[[ $count_system_extensions -gt 0 ]] && sudo rm /usr/share/gnome-shell/extensions/* -rf || true |
|
|
|
echo "# clear system gnome-shell extensions" |
|
|
|
echo "=====================================" |
|
|
|
count_system_extensions=$(ls -1 /usr/share/gnome-shell/extensions | wc -l) |
|
|
|
[[ $count_system_extensions -gt 0 ]] && sudo rm /usr/share/gnome-shell/extensions/* -rf || true |
|
|
|
} |
|
|
|
|
|
|
|
function install_flatpak { |
|
|
|
echo "# install flatpak" |
|
|
|
echo "=================" |
|
|
|
echo "# install flatpak" |
|
|
|
echo "=================" |
|
|
|
|
|
|
|
if ! dpkg -l flatpak | grep -q ^ii; then |
|
|
|
sudo apt install -y flatpak gnome-software-plugin-flatpak |
|
|
|
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo |
|
|
|
fi |
|
|
|
if ! dpkg -l flatpak | grep -q ^ii; then |
|
|
|
sudo apt install -y flatpak gnome-software-plugin-flatpak |
|
|
|
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo |
|
|
|
fi |
|
|
|
|
|
|
|
if ! (echo $XDG_DATA_DIRS | grep -q flatpak); then |
|
|
|
LOGOUT_REQUIRED=true |
|
|
|
XDG_DATA_DIRS=$HOME/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:$XDG_DATA_DIRS |
|
|
|
export XDG_DATA_DIRS |
|
|
|
fi |
|
|
|
if ! (echo $XDG_DATA_DIRS | grep -q flatpak); then |
|
|
|
LOGOUT_REQUIRED=true |
|
|
|
XDG_DATA_DIRS=$HOME/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:$XDG_DATA_DIRS |
|
|
|
export XDG_DATA_DIRS |
|
|
|
fi |
|
|
|
|
|
|
|
flatpak install -y org.signal.Signal |
|
|
|
flatpak install -y com.mattermost.Desktop |
|
|
|
flatpak install -y net.jami.Jami |
|
|
|
flatpak install -y org.signal.Signal |
|
|
|
flatpak install -y com.mattermost.Desktop |
|
|
|
flatpak install -y net.jami.Jami |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@ -482,8 +494,8 @@ libre_re_pixmap |
|
|
|
|
|
|
|
echo |
|
|
|
if [[ $LOGOUT_REQUIRED == true ]]; then |
|
|
|
echo '# DEBIAN-GNOME new extensions have been installed, please logout/login to apply changes!' |
|
|
|
echo '# DEBIAN-GNOME new extensions have been installed, please logout/login to apply changes!' |
|
|
|
else |
|
|
|
echo "# DEBIAN-GNOME successfully installed!" |
|
|
|
echo "# DEBIAN-GNOME successfully installed!" |
|
|
|
fi |
|
|
|
echo |