You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
7.5 KiB

#!/bin/bash
## FUNCTIONS
function runVoid(){
local COMMAND="$@"
bash -c "${COMMAND}" >/dev/null 2>&1
return $?
}
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
}
## MAIN
[ `id -u` -eq 0 ] && echo 'normal user required' && exit -1
# variables and constants
BASEDIR=/opt/debian-gnome
LOGOUT_REQUIRED=false
GIT_REPOSITORY_RAW="https://git.artcode.re/pvincent/debian-gnome/raw/master"
ALLOWED_USERS=$(id -un) #CUSTOMIZE if needed!
REQUIRED_PACKAGES=( git wget curl htop tilix jq unzip )
# required packages
for package in ${REQUIRED_PACKAGES[@]}; do
runVoid dpkg-query --status $package
if [ $? -ne 0 ] ; then
echo -n "installing package <$package> ... " ;
sudo apt install -y $package
echo "DONE"
fi
done
## openssh-server
PGKNAME='openssh-server'
runVoid dpkg-query --status $PGKNAME
if [ $? -ne 0 ] ; then
set -e
sudo apt install $PGKNAME
sudo /opt/debian-bash/tools/append_or_replace "^#\?PermitRootLogin.*$" "PermitRootLogin no" /etc/ssh/sshd_config
sudo /opt/debian-bash/tools/append_or_replace "^#\?PasswordAuthentication.*$" "PasswordAuthentication no" /etc/ssh/sshd_config
sudo /opt/debian-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
## firefox latest
if [[ ! /usr/local/bin/firefox -ef /opt/firefox/firefox ]];then
set -e
cd /tmp
wget `curl 'https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=en-US' | cut -d '"' -f2` -O firefox-latest.tar.bz2
sudo mkdir /opt/firefox -p
sudo chown $USER /opt/firefox
tar -xjf firefox-latest.tar.bz2 -C /opt
cat <<EOF | sudo tee -a /usr/share/applications/firefox-stable.desktop
[Desktop Entry]
Name=Firefox Stable
Comment=Web Browser
Exec=/opt/firefox/firefox %u
Terminal=false
Type=Application
Icon=/opt/firefox/browser/chrome/icons/default/default128.png
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true
StartupWMClass=Firefox
EOF
sudo ln -s /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 firefox-esr
set +e
else
echo "firefox latest already installed!"
fi
# firefox profile with ublock origin
if [[ -d $HOME/.mozilla/firefox ]];then
echo "Profile Firefox already created!"
echo -n "Need acknowledgment before resetting firefox profile from SCRATCH! Do you accept "
askConfirmation N
fi
if [ $? -eq 0 ];then
echo "resume processing new firefox profile"
echo -n "please wait for a while..."
wget -q $GIT_REPOSITORY_RAW/files/firefox.tgz -O /tmp/firefox.tgz
rm -rf $HOME/.mozilla/firefox
tar -xzvf /tmp/firefox.tgz -C $HOME/.mozilla/
echo "DONE"
else
echo "Omit firefox profile"
fi
## gnome settings
gsettings set org.gnome.settings-daemon.peripherals.keyboard remember-numlock-state true
gsettings set org.gnome.desktop.interface clock-show-date true
gsettings set org.gnome.nautilus.preferences click-policy 'single'
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.desktop.peripherals.touchpad natural-scroll false
# favorite apps
favorite_apps=$(gsettings get org.gnome.shell favorite-apps)
if [[ "$favorite_apps" == "['firefox-esr.desktop', 'org.gnome.Evolution.desktop', 'rhythmbox.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop']" ]]; then
gsettings set org.gnome.shell favorite-apps "['org.gnome.Nautilus.desktop','firefox-stable.desktop','org.gnome.Software.desktop']"
fi
## gnome extension system-monitor
runVoid dpkg-query --status gnome-shell-extension-system-monitor
if [ $? -ne 0 ] ; then
set -e
sudo apt install gnome-shell-extension-system-monitor
LOGOUT_REQUIRED=true
sudo cp /usr/share/gnome-shell/extensions/system-monitor@paradoxxx.zero.gmail.com/schemas/*.gschema.xml /usr/share/glib-2.0/schemas/
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
gnome-shell-extension-tool -e system-monitor@paradoxxx.zero.gmail.com
gnome-shell-extension-tool -r system-monitor@paradoxxx.zero.gmail.com
set +e
gsettings set org.gnome.shell.extensions.system-monitor show-tooltip true
gsettings set org.gnome.shell.extensions.system-monitor cpu-show-text false
gsettings set org.gnome.shell.extensions.system-monitor cpu-graph-width 60
gsettings set org.gnome.shell.extensions.system-monitor memory-display false
gsettings set org.gnome.shell.extensions.system-monitor net-display true
gsettings set org.gnome.shell.extensions.system-monitor net-style digit
gsettings set org.gnome.shell.extensions.system-monitor net-show-text false
gsettings set org.gnome.shell.extensions.system-monitor icon-display false
gsettings set org.gnome.shell.extensions.system-monitor disk-display false
else
echo "gnome-shell-extension-system-monitor already installed!"
fi
## gnome extension appindicator
UUID=appindicatorsupport@rgcjonas.gmail.com
if [[ ! -d "$HOME/.local/share/gnome-shell/extensions/$UUID" ]]; then
wget -q https://extensions.gnome.org/extension-data/appindicatorsupportrgcjonas.gmail.com.v26.shell-extension.zip -O /tmp/appindicator.zip
mkdir -p "$HOME/.local/share/gnome-shell/extensions/$UUID"
unzip -q /tmp/appindicator.zip -d "$HOME/.local/share/gnome-shell/extensions/$UUID"
gnome-shell-extension-tool -e "$UUID"
gnome-shell-extension-tool -r "$UUID"
LOGOUT_REQUIRED=true
else
echo "gnome-shell-extension-appindicator already installed!"
fi
## install-gnome-extensions.sh
FILE_IGE="${BASEDIR}/tools/install-gnome-extensions.sh"
if [[ ! -f "$FILE_IGE" ]]; then
sudo mkdir -p "${BASEDIR}/tools"
sudo chown $(id -un) "${BASEDIR}/tools"
wget -N -q "https://raw.githubusercontent.com/cyfrost/install-gnome-extensions/master/install-gnome-extensions.sh" -O $FILE_IGE
chmod +x $FILE_IGE
else
echo "install-gnome-extensions.sh already installed!"
fi
# install extension with install-gnome-extensions.sh
declare -A extensions=(
[104]="netspeed@hedayaty.gmail.com"
[120]="places-menu@gnome-shell-extensions.gcampax.github.com"
)
for key in "${!extensions[@]}"; do
value="${extensions[$key]}"
if [[ ! -d "$HOME/.local/share/gnome-shell/extensions/${value}" ]]; then
echo -n "installing new extension <${value}>..."
$FILE_IGE --enable $key
echo DONE
gnome-shell-extension-tool -e "${value}"
else
echo "Extension <${value}> already installed!"
fi
done
## logout required
if [[ $LOGOUT_REQUIRED == true ]];then
echo
echo "****************************************************************"
echo "please consider logging out, then log in again to apply changes!"
echo "****************************************************************"
fi