8 changed files with 613 additions and 483 deletions
-
21.vscode/settings.json
-
58extensions.bash
-
10interactive.bash
-
0src/bookworm.sh
-
6src/install.sh
-
434src/trixie.sh
-
154tools/gnome-extensions-helper
-
413trixie.sh
@ -0,0 +1,21 @@ |
|||||
|
{ |
||||
|
"bashIde.shfmt.caseIndent": true, |
||||
|
"bashIde.shfmt.simplifyCode": true, |
||||
|
"bashIde.shfmt.spaceRedirects": true, |
||||
|
"editor.formatOnSave": true, |
||||
|
"todohighlight.include": [ |
||||
|
"**/*.js", |
||||
|
"**/*.jsx", |
||||
|
"**/*.ts", |
||||
|
"**/*.tsx", |
||||
|
"**/*.html", |
||||
|
"**/*.css", |
||||
|
"**/*.scss", |
||||
|
"**/*.php", |
||||
|
"**/*.rb", |
||||
|
"**/*.txt", |
||||
|
"**/*.mdown", |
||||
|
"**/*.md", |
||||
|
"**/*" |
||||
|
] |
||||
|
} |
||||
@ -1,58 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
|
|
||||
# CONSTANTS |
|
||||
|
|
||||
array=( |
|
||||
netspeedsimplified@prateekmedia.extension |
|
||||
runcat@kolesnikov.se |
|
||||
dash-to-dock@micxgx.gmail.com |
|
||||
appindicatorsupport@rgcjonas.gmail.com |
|
||||
weeks-start-on-monday@extensions.gnome-shell.fifi.org |
|
||||
) |
|
||||
|
|
||||
# FUNCTIONS |
|
||||
|
|
||||
function find_extension_by_uuid { |
|
||||
local uuid=$1 |
|
||||
local page=${2:-1} |
|
||||
JSON=$(curl -Lfs "https://extensions.gnome.org/extension-query/?search='${i}'&page=$page") |
|
||||
local numpages=$(echo $JSON | jq ".numpages") |
|
||||
local extension=$(echo $JSON | jq ".extensions[] | select(.uuid==\"$i\") ") |
|
||||
if [[ -z $extension ]]; then |
|
||||
page=$((page + 1)) |
|
||||
[[ $page -gt $numpages ]] && echo "not found, exiting!" && exit 2 |
|
||||
echo >&2 "not found, trying page #$page..." |
|
||||
find_extension_by_uuid "$uuid" "$page" |
|
||||
else |
|
||||
echo "$extension" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
# MAIN |
|
||||
|
|
||||
set -Eue |
|
||||
|
|
||||
gnome_version=$(gnome-extensions version | cut -d. -f1) |
|
||||
echo "GNOME=$gnome_version" |
|
||||
|
|
||||
for i in "${array[@]}"; do |
|
||||
page=1 |
|
||||
if ! gnome-extensions list | grep --quiet "$i"; then |
|
||||
EXTENSION=$(find_extension_by_uuid "$i") |
|
||||
|
|
||||
name=$(echo "$i" | sed 's/@//') |
|
||||
version_tag=$(echo "$EXTENSION" | jq ".shell_version_map.\"$gnome_version\".version") |
|
||||
echo "$i => $name => $version_tag" |
|
||||
zip_file="$i.zip" |
|
||||
URL="https://extensions.gnome.org/extension-data/$name.v$version_tag.shell-extension.zip" |
|
||||
wget -O "$zip_file" "$URL" |
|
||||
gnome-extensions install --force "$zip_file" |
|
||||
rm "$zip_file" |
|
||||
|
|
||||
# interactive ONLY! |
|
||||
busctl call --timeout 20 --expect-reply=yes --user org.gnome.Shell.Extensions /org/gnome/Shell/Extensions org.gnome.Shell.Extensions InstallRemoteExtension s "$i" |
|
||||
fi |
|
||||
gnome-extensions enable "$i" |
|
||||
echo "successfully enabled extension: $i" |
|
||||
# break |
|
||||
done |
|
||||
@ -1,10 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
|
|
||||
read -p 'press [ENTER] to continue:' </dev/tty |
|
||||
echo REPLY=$REPLY |
|
||||
|
|
||||
choices=( one two three) |
|
||||
select choice in "${choices[@]}"; do |
|
||||
[[ -n $choice ]] && break |
|
||||
done </dev/tty |
|
||||
echo "choice is: $choice" |
|
||||
@ -1,14 +1,16 @@ |
|||||
#!/bin/bash |
#!/bin/bash |
||||
|
|
||||
|
# MAIN |
||||
|
|
||||
echo "install on: $HOSTNAME" |
echo "install on: $HOSTNAME" |
||||
echo ---------------------- |
echo ---------------------- |
||||
|
|
||||
[ "$(id -u)" -eq 0 ] && echo 'normal user required: ie, not <root>!' && exit 1 |
[ "$(id -u)" -eq 0 ] && echo 'normal user required: ie, not <root>!' && exit 1 |
||||
|
|
||||
if [[ ! $PWD == '/opt/debian-gnome' ]]; then |
|
||||
|
if [[ $PWD != '/opt/debian-gnome' ]]; then |
||||
if [[ ! -L /opt/debian-gnome ]]; then |
if [[ ! -L /opt/debian-gnome ]]; then |
||||
sudo rm -rf /opt/debian-gnome |
sudo rm -rf /opt/debian-gnome |
||||
sudo git clone --depth=1 https://git.artcode.re/pvincent/debian-gnome /opt/debian-gnome |
sudo git clone --depth=1 https://git.artcode.re/pvincent/debian-gnome /opt/debian-gnome |
||||
fi |
fi |
||||
/opt/debian-gnome/src/main |
|
||||
|
/opt/debian-gnome/src/bookworm.sh |
||||
fi |
fi |
||||
@ -0,0 +1,434 @@ |
|||||
|
#!//usr/bin/env bash |
||||
|
|
||||
|
# CONSTANTS |
||||
|
# --------- |
||||
|
|
||||
|
GIT_BASE_URL="https://git.artcode.re/pvincent/debian-gnome" |
||||
|
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 |
||||
|
) |
||||
|
|
||||
|
# FUNCTIONS |
||||
|
# --------- |
||||
|
|
||||
|
function trap_error() { |
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
function runVoid() { |
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
|
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
function true_firefox { |
||||
|
echo "## firefox latest" |
||||
|
echo "=================" |
||||
|
firefox_lang=$(echo $LANG | cut -d. -f1) |
||||
|
|
||||
|
[[ $firefox_lang =~ C|en|es ]] && firefox_lang="en-US" |
||||
|
echo "$firefox_lang" |
||||
|
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 |
||||
|
[Desktop Entry] |
||||
|
Name=Firefox |
||||
|
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=Navigator |
||||
|
Actions=new-window;new-private-window;profile-manager; |
||||
|
|
||||
|
[Desktop Action new-window] |
||||
|
Name=New Window |
||||
|
Exec=/opt/firefox/firefox --new-window %u |
||||
|
|
||||
|
[Desktop Action new-private-window] |
||||
|
Name=New Private Window |
||||
|
Exec=/opt/firefox/firefox --private-window %u |
||||
|
|
||||
|
[Desktop Action profile-manager] |
||||
|
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 |
||||
|
|
||||
|
} |
||||
|
|
||||
|
function gnome_settings { |
||||
|
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.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 |
||||
|
|
||||
|
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 |
||||
|
[Desktop Entry] |
||||
|
NoDisplay=true |
||||
|
EOF |
||||
|
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 |
||||
|
[Desktop Entry] |
||||
|
Version=1.0 |
||||
|
Name=Tilix |
||||
|
Comment[fr]=Un terminal scindable pour GNOME |
||||
|
Comment=A tiling terminal for GNOME |
||||
|
Keywords[fr]=shell;terminal;prompt;commande;ligne de commande;cmd; |
||||
|
Keywords=shell;terminal;prompt;command;commandline;cmd; |
||||
|
Exec=tilix |
||||
|
Terminal=false |
||||
|
Type=Application |
||||
|
StartupNotify=true |
||||
|
Categories=System;TerminalEmulator;X-GNOME-Utilities; |
||||
|
Icon=com.gexperts.Tilix |
||||
|
DBusActivatable=true |
||||
|
Actions=new-window;new-session;preferences; |
||||
|
|
||||
|
[Desktop Action new-window] |
||||
|
Name[fr]=Nouvelle fenêtre |
||||
|
Name=New Window |
||||
|
Exec=tilix --action=app-new-window |
||||
|
|
||||
|
[Desktop Action new-session] |
||||
|
Name[fr]=Nouvelle session |
||||
|
Name=New Session |
||||
|
Exec=tilix --action=app-new-session |
||||
|
|
||||
|
[Desktop Action preferences] |
||||
|
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 |
||||
|
|
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
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 | |
||||
|
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 |
||||
|
|
||||
|
# gsettings --schemadir ~/.local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/schemas set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 58 |
||||
|
true |
||||
|
} |
||||
|
|
||||
|
function developer_flavor { |
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
function firefox_settings { |
||||
|
echo "# Firefox default settings" |
||||
|
echo "#=========================" |
||||
|
|
||||
|
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 |
||||
|
pref("general.config.filename", "firefox.cfg"); |
||||
|
pref("general.config.obscure_value", 0); |
||||
|
EOF |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
|
||||
|
function clear_system_extensions { |
||||
|
sudo rm /usr/share/gnome-shell/extensions/* -rf |
||||
|
} |
||||
|
|
||||
|
## MAIN |
||||
|
## --------- |
||||
|
|
||||
|
[ "$(id -u)" -eq 0 ] && echo 'normal user required' && exit 1 |
||||
|
|
||||
|
upgrade |
||||
|
apt_required_packages |
||||
|
fix_input_sources |
||||
|
miaou_bash |
||||
|
openssh |
||||
|
faster_grub |
||||
|
true_firefox |
||||
|
gnome_settings |
||||
|
tilix_default_terminal |
||||
|
no_lock_screen |
||||
|
favorite_apps |
||||
|
# golden_dict |
||||
|
clear_system_extensions |
||||
|
gnome_extensions |
||||
|
firefox_addons |
||||
|
firefox_settings |
||||
|
libre_re_pixmap |
||||
|
|
||||
|
echo |
||||
|
if [[ $LOGOUT_REQUIRED == true ]]; then |
||||
|
echo '# DEBIAN-GNOME new extensions have been installed, please logout/login to apply changes!' |
||||
|
else |
||||
|
echo "# DEBIAN-GNOME successfully installed!" |
||||
|
fi |
||||
|
echo |
||||
@ -0,0 +1,154 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
# CONSTANTS |
||||
|
|
||||
|
declare -A settings=() |
||||
|
declare -a setting_keys=() |
||||
|
declare -a setting_values=() |
||||
|
LOGOUT_NEEDED=false |
||||
|
|
||||
|
# FUNCTIONS |
||||
|
|
||||
|
function usage { |
||||
|
echo "USAGE: $(basename "$0") {UUID} [--key1=value1|--key2=value2|...]" |
||||
|
echo "provide additional facilities to install gnome-extension based on a UUID name + optional predefined settings" |
||||
|
echo 'a valid UUID name would be: "runcat@kolesnikov.se"' |
||||
|
echo 'a valid key/value would be: "--idle-threshold=66"' |
||||
|
echo "thus, a valid final command would be: "$0" runcat@kolesnikov.se --idle-threshold=66" |
||||
|
} |
||||
|
|
||||
|
function parse_options { |
||||
|
[[ -z ${1:-} || $1 =~ ^- ]] && usage && exit 1 |
||||
|
uuid=$1 |
||||
|
|
||||
|
shift 1 |
||||
|
while [[ $# -gt 0 ]]; do |
||||
|
case "$1" in |
||||
|
--*) |
||||
|
local key_value=${1#--} |
||||
|
local key=$(echo $key_value | cut -d= -f1) |
||||
|
local value=$(echo $key_value | cut -d= -f2) |
||||
|
echo ["$key"]="$value" |
||||
|
settings+=(["$key"]="$value") |
||||
|
;; |
||||
|
--help | -h) |
||||
|
usage |
||||
|
exit 0 |
||||
|
;; |
||||
|
*) |
||||
|
echo "Unknown option: $1" |
||||
|
usage |
||||
|
exit 2 |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
shift 1 # Move to the next argument |
||||
|
done |
||||
|
} |
||||
|
|
||||
|
function gnome_version { |
||||
|
gnome-extensions version | cut -d. -f1 |
||||
|
} |
||||
|
|
||||
|
function find_extension_by_uuid { |
||||
|
local page=${2:-1} |
||||
|
JSON=$(curl -Lfs "https://extensions.gnome.org/extension-query/?search='${uuid}'&page=$page") |
||||
|
local numpages=$(echo $JSON | jq ".numpages") |
||||
|
local extension=$(echo $JSON | jq ".extensions[] | select(.uuid==\"$uuid\") ") |
||||
|
if [[ -z $extension ]]; then |
||||
|
page=$((page + 1)) |
||||
|
[[ $page -gt $numpages ]] && echo "not found, exiting!" && exit 2 |
||||
|
>&2 echo "not found, trying page #$page..." |
||||
|
find_extension_by_uuid "$uuid" "$page" |
||||
|
else |
||||
|
echo "$extension" |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function install_extension { |
||||
|
if ! gnome-extensions list | grep -q "$uuid"; then |
||||
|
EXTENSION=$(find_extension_by_uuid "$uuid") |
||||
|
|
||||
|
name=$(echo "$uuid" | sed 's/@//') |
||||
|
version_tag=$(echo "$EXTENSION" | jq ".shell_version_map.\"$(gnome_version)\".version") |
||||
|
zip_file="$uuid.zip" |
||||
|
URL="https://extensions.gnome.org/extension-data/$name.v$version_tag.shell-extension.zip" |
||||
|
wget -qO "$zip_file" "$URL" |
||||
|
|
||||
|
gnome-extensions install --force "$zip_file" |
||||
|
rm "$zip_file" |
||||
|
LOGOUT_NEEDED=true |
||||
|
# busctl call --timeout 20 --expect-reply=yes --user org.gnome.Shell.Extensions /org/gnome/Shell/Extensions org.gnome.Shell.Extensions InstallRemoteExtension s "$uuid" |
||||
|
else |
||||
|
>&2 echo "$uuid already installed!" |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function enable_extension { |
||||
|
status=$(gnome-extensions info $uuid | grep Enabled | cut -d' ' -f4) |
||||
|
if [[ $status != 'Yes' ]]; then |
||||
|
gnome-extensions enable $uuid |
||||
|
>&2 echo $uuid now enabled! |
||||
|
else |
||||
|
>&2 echo $uuid already enabled! |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function find_settings_schema { |
||||
|
local gschema_file=$(ls ~/.local/share/gnome-shell/extensions/$uuid/schemas/*.gschema.xml) |
||||
|
gschema_file=$(basename $gschema_file) |
||||
|
gschema_file=${gschema_file%.gschema.xml} |
||||
|
echo $gschema_file |
||||
|
} |
||||
|
|
||||
|
function convert_to_gvalue { |
||||
|
value=$1 |
||||
|
# >&2 echo "original=[$value]" |
||||
|
if [[ $value =~ true|false ]]; then |
||||
|
echo "$value" |
||||
|
elif [[ $value =~ ^[0-9]+$ ]]; then |
||||
|
echo "$value" |
||||
|
elif [[ $value =~ ^-?[0-9]+\.[0-9]+$ ]]; then |
||||
|
echo "double $value" |
||||
|
else |
||||
|
echo "'$value'" |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function define_settings { |
||||
|
local found=${#settings[@]} |
||||
|
if [[ $found -gt 0 ]]; then |
||||
|
|
||||
|
local schema=$(find_settings_schema) |
||||
|
|
||||
|
cd ~/.local/share/gnome-shell/extensions/$uuid/schemas |
||||
|
override="20_$schema.gschema.override" |
||||
|
[[ -f $override ]] && cp $override $override.old |
||||
|
|
||||
|
echo "[$schema]" > $override |
||||
|
for key in "${!settings[@]}"; do |
||||
|
local value=${settings[$key]} |
||||
|
value=$(convert_to_gvalue "$value") |
||||
|
echo "$key=$value" >> $override |
||||
|
done |
||||
|
glib-compile-schemas ~/.local/share/gnome-shell/extensions/$uuid/schemas |
||||
|
|
||||
|
if [[ -f $override.old ]] && diff -q $override $override.old > /dev/null; then |
||||
|
>&2 echo default settings already set! |
||||
|
else |
||||
|
>&2 echo "override schema: ~/.local/share/gnome-shell/extensions/$uuid/schemas/$override" |
||||
|
gnome-extensions disable $uuid |
||||
|
gnome-extensions reset $uuid |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
} |
||||
|
|
||||
|
# MAIN |
||||
|
|
||||
|
set -Eue |
||||
|
parse_options $* |
||||
|
install_extension |
||||
|
define_settings |
||||
|
enable_extension |
||||
|
[[ $LOGOUT_NEEDED == 'true' ]] && echo "please logout to take effect!" || true |
||||
@ -1,413 +0,0 @@ |
|||||
#!//usr/bin/env bash |
|
||||
|
|
||||
## CONSTANTS |
|
||||
## --------- |
|
||||
|
|
||||
GIT_BASE_URL="https://git.artcode.re/pvincent/debian-gnome" |
|
||||
|
|
||||
BASEDIR=$(readlink -f "$(dirname "$0")/..") |
|
||||
ALLOWED_USERS=$(id -un) #CUSTOMIZE if needed! |
|
||||
REQUIRED_PACKAGES=( |
|
||||
bash-completion |
|
||||
vim git wget curl |
|
||||
htop jq unzip |
|
||||
) |
|
||||
|
|
||||
|
|
||||
## FUNCTIONS |
|
||||
## --------- |
|
||||
|
|
||||
function trap_error() { |
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
function runVoid() { |
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
|
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
function fix_input_sources { |
|
||||
echo "# fix input sources containing french variants" |
|
||||
echo "==============================================" |
|
||||
if gsettings get org.gnome.desktop.input-sources sources | grep fr+; 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 |
|
||||
} |
|
||||
|
|
||||
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 |
|
||||
|
|
||||
} |
|
||||
|
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
|
|
||||
function true_firefox { |
|
||||
echo "## firefox latest" |
|
||||
echo "=================" |
|
||||
firefox_lang=$(echo $LANG | cut -d. -f1) |
|
||||
|
|
||||
[[ $firefox_lang =~ C|en|es ]] && firefox_lang="en-US" |
|
||||
echo "$firefox_lang" |
|
||||
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 |
|
||||
[Desktop Entry] |
|
||||
Name=Firefox |
|
||||
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=Navigator |
|
||||
Actions=new-window;new-private-window;profile-manager; |
|
||||
|
|
||||
[Desktop Action new-window] |
|
||||
Name=New Window |
|
||||
Exec=/opt/firefox/firefox --new-window %u |
|
||||
|
|
||||
[Desktop Action new-private-window] |
|
||||
Name=New Private Window |
|
||||
Exec=/opt/firefox/firefox --private-window %u |
|
||||
|
|
||||
[Desktop Action profile-manager] |
|
||||
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 |
|
||||
|
|
||||
|
|
||||
} |
|
||||
|
|
||||
function gnome_settings { |
|
||||
echo "## gnome default settings" |
|
||||
echo "=========================" |
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
function tilix_default_terminal { |
|
||||
echo "## prevent displaying desktop entries (gnome-terminal replaced by tilix)" |
|
||||
echo "========================================================================" |
|
||||
if [[ ! -f $HOME/.local/share/applications/org.gnome.Terminal.desktop ]]; then |
|
||||
cat << 'EOF' > ~/.local/share/applications/org.gnome.Terminal.desktop |
|
||||
[Desktop Entry] |
|
||||
Name=Terminal |
|
||||
Exec=gnome-terminal |
|
||||
NoDisplay=true |
|
||||
Icon=org.gnome.Terminal |
|
||||
Type=Application |
|
||||
Categories=GNOME;GTK;System;TerminalEmulator; |
|
||||
StartupNotify=true |
|
||||
StartupWMClass=Gnome-terminal |
|
||||
X-GNOME-SingleWindow=false |
|
||||
OnlyShowIn=GNOME;Unity; |
|
||||
EOF |
|
||||
else |
|
||||
echo Tilix already set up! |
|
||||
fi |
|
||||
|
|
||||
echo TODO: configure Tilix |
|
||||
echo 'dconf load /com/gexperts/Tilix/ < tilix.dconf' |
|
||||
|
|
||||
} |
|
||||
|
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
function gnome_extensions { |
|
||||
echo "## gnome-shell install several extensions" |
|
||||
echo "=========================================" |
|
||||
|
|
||||
curl https://mise.run | sh |
|
||||
echo "eval \"\$(/home/pvincent/.local/bin/mise activate bash)\"" >> ~/.bashrc |
|
||||
source ~/.bashrc |
|
||||
mise install python |
|
||||
mise use -g python |
|
||||
mise exec -- pip3 install --upgrade gnome-extensions-cli |
|
||||
|
|
||||
echo APPINDICATOR |
|
||||
echo Alignment: left |
|
||||
echo DASH TO DOCK |
|
||||
echo icon size: 58 |
|
||||
echo apparence: default theme |
|
||||
echo RUNCAT |
|
||||
echo idle threshold: 66 |
|
||||
|
|
||||
EXTENSIONS=( |
|
||||
"dash-to-dock@micxgx.gmail.com" |
|
||||
"appindicatorsupport@rgcjonas.gmail.com" |
|
||||
"runcat@kolesnikov.se" |
|
||||
) |
|
||||
for extension in "${EXTENSIONS[@]}"; do |
|
||||
if [[ ! -d $HOME/.local/share/gnome-shell/extensions/$extension ]]; then |
|
||||
gext install "$extension" |
|
||||
sudo cp "$HOME"/.local/share/gnome-shell/extensions/"$extension"/schemas/*.gschema.xml /usr/share/glib-2.0/schemas/ |
|
||||
else |
|
||||
echo "extension <${extension}> already installed!" |
|
||||
fi |
|
||||
done |
|
||||
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/ |
|
||||
|
|
||||
echo "# gnome extra settings" |
|
||||
echo "======================" |
|
||||
# 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 false |
|
||||
# gsettings set org.gnome.shell.extensions.system-monitor net-show-text false |
|
||||
# gsettings set org.gnome.shell.extensions.system-monitor net-graph-width 40 |
|
||||
# gsettings set org.gnome.shell.extensions.system-monitor disk-display false |
|
||||
# gsettings set org.gnome.shell.extensions.system-monitor icon-display false |
|
||||
|
|
||||
gsettings set org.gnome.shell.extensions.dash-to-dock apply-custom-theme true |
|
||||
gsettings set org.gnome.shell.extensions.dash-to-dock multi-monitor true |
|
||||
|
|
||||
# gsettings set org.gnome.shell.extensions.network-stats display-bytes true |
|
||||
# if [[ $(gsettings get org.gnome.shell.extensions.network-stats show-icon) == "true" ]]; then |
|
||||
# gsettings set org.gnome.shell.extensions.network-stats show-icon false |
|
||||
# "$HOME/.local/bin/gext" disable network-stats@gnome.noroadsleft.xyz |
|
||||
# "$HOME/.local/bin/gext" enable network-stats@gnome.noroadsleft.xyz |
|
||||
# fi |
|
||||
} |
|
||||
|
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
function firefox_settings { |
|
||||
echo "# Firefox default settings" |
|
||||
echo "#=========================" |
|
||||
|
|
||||
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 |
|
||||
pref("general.config.filename", "firefox.cfg"); |
|
||||
pref("general.config.obscure_value", 0); |
|
||||
EOF |
|
||||
|
|
||||
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 |
|
||||
} |
|
||||
|
|
||||
## MAIN |
|
||||
## --------- |
|
||||
|
|
||||
[ "$(id -u)" -eq 0 ] && echo 'normal user required' && exit 1 |
|
||||
|
|
||||
upgrade |
|
||||
apt_required_packages |
|
||||
fix_input_sources |
|
||||
miaou_bash |
|
||||
openssh |
|
||||
faster_grub |
|
||||
true_firefox |
|
||||
gnome_settings |
|
||||
tilix_default_terminal |
|
||||
no_lock_screen |
|
||||
favorite_apps |
|
||||
# golden_dict |
|
||||
# gnome_extensions |
|
||||
firefox_addons |
|
||||
firefox_settings |
|
||||
libre_re_pixmap |
|
||||
|
|
||||
echo |
|
||||
echo |
|
||||
echo "# DEBIAN-GNOME successfully installed!" |
|
||||
echo |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue