#!/usr/bin/env bash if grep "archlinux" /proc/version > /dev/null; then # === Colors package manager == sudo sed -i 's/#Color/Color/g' /etc/pacman.conf # === Yay == git clone https://aur.archlinux.org/yay.git cd yay || exit makepkg -si --noconfirm # Remove folder cd .. rm -rf yay # === Disable wayland == sudo sed -i 's/#Wayland/Wayland/g' /etc/gdm/custom.conf # === Fish == # Remove motd fish -c "set -U fish_greeting" # Reversed search curl -sL https://git.io/fisher | fish -c "source && fisher install jorgebucaran/fisher" fish -c "fisher install jethrokuan/fzf" # SSH rm "$HOME"/.config/fish/functions/fish_ssh_agent.fish 2> /dev/null wget -q https://gitlab.com/kyb/fish_ssh_agent/raw/master/functions/fish_ssh_agent.fish -P "$HOME"/.config/fish/functions/ mkdir "$HOME"/.ssh # Custom config.fish rm "$HOME"/.config/fish/config.fish 2> /dev/null wget -q https://git.kennel.ml/Anri/confOS/raw/branch/main/.config/fish/config_arch.fish -O "$HOME"/.config/fish/config.fish # Custom prompt shell (based on Base16 Eighties) rm "$HOME"/.config/fish/functions/fish_prompt.fish 2> /dev/null wget -q https://git.kennel.ml/Anri/confOS/raw/branch/main/.config/fish/functions/fish_prompt.fish -P "$HOME"/.config/fish/functions/ fish -c "set -U fish_color_normal normal" fish -c "set -U fish_color_command 99cc99" fish -c "set -U fish_color_quote ffcc66" fish -c "set -U fish_color_redirection d3d0c8" fish -c "set -U fish_color_end cc99cc" fish -c "set -U fish_color_error f2777a" fish -c "set -U fish_color_param d3d0c8" fish -c "set -U fish_color_comment ffcc66" fish -c "set -U fish_color_match 6699cc" fish -c "set -U fish_color_selection white --bold --background=brblack" fish -c "set -U fish_color_search_match bryellow --background=brblack" fish -c "set -U fish_color_history_current --bold" fish -c "set -U fish_color_operator 6699cc" fish -c "set -U fish_color_escape 66cccc" fish -c "set -U fish_color_cwd green" fish -c "set -U fish_color_cwd_root red" fish -c "set -U fish_color_valid_path --underline" fish -c "set -U fish_color_autosuggestion 747369" fish -c "set -U fish_color_user brgreen" fish -c "set -U fish_color_host normal" fish -c "set -U fish_color_cancel -r" fish -c "set -U fish_pager_color_completion normal" fish -c "set -U fish_pager_color_description B3A06D yellow" fish -c "set -U fish_pager_color_prefix normal --bold --underline" fish -c "set -U fish_pager_color_progress brwhite --background=cyan" # Add aliases fish -c "abbr ls 'exa -glh'" fish -c "abbr cp 'cp -rv'" fish -c "abbr rm 'rm -rf'" fish -c "abbr gcc 'clear; gcc -Wall -Wextra -Wshadow -Wcast-align -Wstrict-prototypes -fanalyzer -g main.c && ./a.out; rm a.out 2> /dev/null'" fish -c "abbr vgcc 'clear; gcc -Wall -Wextra -Wshadow -Wcast-align -Wstrict-prototypes -fanalyzer -g main.c && valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes -s ./a.out; rm a.out 2> /dev/null'" fish -c "abbr g++ 'clear; g++ -Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic -g -Wold-style-cast -Wsign-conversion main.cpp && ./a.out; rm a.out 2> /dev/null'" fish -c "abbr vg++ 'clear; g++ -Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic -g -Wold-style-cast -Wsign-conversion main.cpp && valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes -s ./a.out; rm a.out 2> /dev/null'" fish -c "abbr make 'clear; make && ./main; make clean 2> /dev/null'" fish -c "abbr vmake 'clear; make && valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes -s ./main; make clean 2> /dev/null'" fish -c "abbr activate 'source bin/activate.fish'" fish -c "abbr c 'command'" fish -c "abbr vs 'code .'" fish -c "abbr untgz 'tar -xvzf'" fish -c "abbr - 'cd -'" fish -c "abbr cat 'bat'" fish -c "abbr nano 'micro'" fish -c "abbr bigupdate 'yay -Syu --noconfirm && tldr --update && sdk update && echo \'y\' | sdk upgrade java'" fish -c "abbr d 'nautilus . -w &> /dev/null & disown'" fish -c "abbr spotify 'LD_PRELOAD=/usr/local/lib/spotify-adblock.so spotify &> /dev/null & disown'" # Remove fish icon if [ -f /usr/share/applications/fish.desktop ] then sudo mv /usr/share/applications/fish.desktop /usr/share/applications/fish.desktop.bak fi # Fish by default in terminal app profil=$(gsettings get org.gnome.Terminal.ProfilesList list) gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:"${profil:2:-2}"/ use-custom-command true gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:"${profil:2:-2}"/ custom-command "fish" # Default colors gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:"${profil:2:-2}"/ use-theme-colors "false" gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:"${profil:2:-2}"/ foreground-color "rgb(211,208,200)" gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:"${profil:2:-2}"/ background-color "rgb(45,45,45)" # Size gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:"${profil:2:-2}"/ use-system-font false gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:"${profil:2:-2}"/ default-size-columns 100 gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:"${profil:2:-2}"/ default-size-rows 30 # === GL4D == # Download and build git clone https://github.com/noalien/GL4Dummies.git cd GL4Dummies || exit make -f Makefile.autotools ./configure make # Install it sudo make install # Remove folder cd .. rm -rf GL4Dummies # Fix for shared libraries (https://stackoverflow.com/a/9395355) sudo ldconfig # Add to path #echo -e "\n# GL4Dummies\nexport PATH=/usr/local/bin:\$PATH\nexport LD_LIBRARY_PATH=/usr/local/lib:\$LD_LIBRARY_PATH\n" >> "$HOME"/.bashrc #echo -e "\n# GL4Dummies\nset -gx LD_LIBRARY_PATH /usr/local/lib \$LD_LIBRARY_PATH\n" >> "$HOME"/.config/fish/config.fish # === Sign commits == git config --global commit.gpgsign true # === Rust == curl https://sh.rustup.rs -sSf | sh -s -- -y source "$HOME"/.cargo/env # Dev tools rustup component add rust-analysis rustup component add rls # === tldr == cargo install tealdeer tldr --update # Fish completion latest=$(wget -qO- https://api.github.com/repos/dbrgn/tealdeer/releases/latest) url=$(grep 'browser_download_url": ".*/completions_fish"' <<< "$latest" | awk '{ print substr ($0, 32 ) }' | awk '{ print substr( $0, 1, length($0)-1 ) }') wget -q --show-progress "$url" -O completions_fish mv completions_fish ~/.config/fish/completions/tldr.fish # === VSCode == yay -S visual-studio-code-bin --noconfirm # === Spotify + no-ads mod == yay -S spotify --noconfirm # Download mod git clone https://github.com/abba23/spotify-adblock.git cd spotify-adblock || exit make # Install mod sudo make install # Remove folder cd .. rm -rf spotify-adblock # Change shortcut if [ -f /usr/share/applications/spotify.desktop ] ; then sudo sed -i "7s#.*#Exec=env LD_PRELOAD=/usr/local/lib/spotify-adblock.so spotify %U#" /usr/share/applications/spotify.desktop fi # Remove banner cd "$(dirname "$(realpath -L "$(which spotify)")")"/Apps/ || exit # absolute path to Spotify sudo bash -c "unzip -p xpui.spa xpui.js | sed 's/{adsEnabled:\!0}/{adsEnabled:false}/' > xpui.js" sudo zip --update xpui.spa xpui.js sudo rm xpui.js # === Syncthing == sudo systemctl enable syncthing@"$USER".service sudo systemctl start syncthing@"$USER".service # === Obsidian == yay -S obsidian --noconfirm # === Flameshot == # Custom configuration rm "$HOME"/.config/flameshot/flameshot.ini 2> /dev/null wget -q --show-progress https://git.kennel.ml/Anri/confOS/raw/branch/main/.config/flameshot/flameshot.ini -P "$HOME"/.config/flameshot/ # Change keybindings gsettings set org.gnome.shell.keybindings show-screenshot-ui "[]" CUSTOM_KEYBINDINGS_LIST=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings) if [[ $CUSTOM_KEYBINDINGS_LIST == "@as []" ]] # creating new list if not exists then CUSTOM_KEYBINDINGS_LIST="['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/flameshot-shortcut/']" else # if already existing, adding our new element CUSTOM_KEYBINDINGS_LIST="${CUSTOM_KEYBINDINGS_LIST::-1}, '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/flameshot-shortcut/']" fi gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$CUSTOM_KEYBINDINGS_LIST" gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/flameshot-shortcut/ name "Flameshot" # set name gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/flameshot-shortcut/ command "flameshot gui" # set command gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/flameshot-shortcut/ binding "Print" # set key # === Parsec == yay -S parsec --noconfirm # === Onlyoffice == yay -S onlyoffice-bin --noconfirm # === Emoji picker == yay -S x11-emoji-picker-git --noconfirm # Custom configuration rm "$HOME"/.config/gazatu.xyz/emoji-picker.ini 2>/dev/null wget -q --show-progress https://git.kennel.ml/Anri/confOS/raw/branch/main/.config/gazatu.xyz/emoji-picker.ini -P "$HOME"/.config/gazatu.xyz/ # Add keybinding CUSTOM_KEYBINDINGS_LIST=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings) if ! echo "$CUSTOM_KEYBINDINGS_LIST" | grep -q "x11-emoji-picker" then if [ "$CUSTOM_KEYBINDINGS_LIST" = "@as []" ] # creating new list if not exists then CUSTOM_KEYBINDINGS_LIST="['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/x11-emoji-picker/']" else # if already existing, adding our new element CUSTOM_KEYBINDINGS_LIST=$(echo "$CUSTOM_KEYBINDINGS_LIST" | sed 's/\[//' | sed 's/\]//') CUSTOM_KEYBINDINGS_LIST="[$CUSTOM_KEYBINDINGS_LIST, '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/x11-emoji-picker/']" fi gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$CUSTOM_KEYBINDINGS_LIST" # update the list gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/x11-emoji-picker/ name "Emoji-Picker" # set name gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/x11-emoji-picker/ command "emoji-picker" # set command gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/x11-emoji-picker/ binding "period" # set shortcut fi # === Gnome configuration == # Nautilus keybinding CUSTOM_KEYBINDINGS_LIST=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings) if [[ $CUSTOM_KEYBINDINGS_LIST == "@as []" ]] # creating new list if not exists then CUSTOM_KEYBINDINGS_LIST="['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/nautilus-shortcut/']" else # if already existing, adding our new element CUSTOM_KEYBINDINGS_LIST="${CUSTOM_KEYBINDINGS_LIST::-1}, '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/nautilus-shortcut/']" fi gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$CUSTOM_KEYBINDINGS_LIST" # updating the list gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/nautilus-shortcut/ name "Nautilus" # set name gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/nautilus-shortcut/ command "nautilus -w" # set command gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/nautilus-shortcut/ binding "E" # set shortcut yay -S gnome-shell-extension-dash-to-dock gnome-shell-extension-desktop-icons-ng --noconfirm gnome-extensions enable dash-to-dock@micxgx.gmail.com gnome-extensions enable ding@rastersoft.com gsettings set org.gnome.shell.extensions.dash-to-dock click-action minimize # add minimized window on dock click gsettings set org.gnome.shell.extensions.dash-to-dock show-trash false # add Dash to Dock gsettings set org.gnome.desktop.wm.preferences button-layout ":minimize,maximize,close" # affiche les boutons maximisé et minimisé gsettings set org.gnome.desktop.wm.preferences audible-bell false # remove sound of notification when going too far away in a window gsettings set org.gnome.desktop.wm.interface clock-show-seconds true # affiche les secondes dans l'horloge gsettings set org.gnome.desktop.wm.keybindings close "['Q', 'F4']" # Alt-F4 keybinding gsettings set org.gnome.desktop.wm.keybindings switch-windows "['Tab', 'Tab']" # new behaviour gsettings set org.gnome.desktop.wm.keybindings switch-applications "[]" # old behaviour gsettings set org.gnome.desktop.interface show-battery-percentage true # show battery poucentage gsettings set org.gnome.desktop.background show-desktop-icons true # show icons on desktop gsettings set org.gnome.shell.extensions.ding show-home false # hide personal user folder gsettings set org.gnome.shell.extensions.ding show-drop-place false # hide square when moving icons gsettings set org.gnome.nautilus.preferences show-image-thumbnails 'always' # thumbnails nautilus gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true # mode "nuit" (lumière bleue) gsettings set org.gnome.desktop.peripherals.touchpad click-method areas # right click on laptop # Theme gsettings set org.gnome.desktop.interface color-scheme prefer-dark yay -S dracula-gtk-theme dracula-icons-git --noconfirm gsettings set org.gnome.desktop.interface gtk-theme Dracula gsettings set org.gnome.desktop.wm.preferences theme Dracula gsettings set org.gnome.desktop.interface icon-theme "Dracula" # Add gesture yay -S touchegg gnome-shell-extension-x11gestures --noconfirm gnome-extensions enable x11gestures@joseexposito.github.io sudo systemctl enable touchegg.service sudo systemctl start touchegg # Tray icons yay -S gnome-shell-extension-tray-icons-reloaded --noconfirm gnome-extensions enable trayIconsReloaded@selfmade.pl # === Remove extra packages == sudo pacman -Rsn epiphany gnome-maps cheese gnome-weather gnome-music gnome-books vim gnome-boxes gnome-photos xdg-desktop-portal malcontent --noconfirm # gnome-firefox, maps, caméra, météo, musique, liseuse, vim, machines, photos, kde thing, parental control # === Clipboard history == # Keybinding gsettings set org.gnome.shell.keybindings toggle-message-tray "[]" CUSTOM_KEYBINDINGS_LIST=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings) if [[ $CUSTOM_KEYBINDINGS_LIST == "@as []" ]] # creating new list if not exists then CUSTOM_KEYBINDINGS_LIST="['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/clipboard-shortcut/']" else # if already existing, adding our new element CUSTOM_KEYBINDINGS_LIST="${CUSTOM_KEYBINDINGS_LIST::-1}, '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/clipboard-shortcut/']" fi gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$CUSTOM_KEYBINDINGS_LIST" # updating the list gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/clipboard-shortcut/ name "Copyq" # set name gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/clipboard-shortcut/ command "copyq show" # set command gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/clipboard-shortcut/ binding "V" # set shortcut copyq > /dev/null & disown copyq config autostart true # === Paint == if [ -f /usr/share/applications/org.kde.kolourpaint.desktop ] ; then sudo sed -i "3s#.*#Name=Paint#" /usr/share/applications/org.kde.kolourpaint.desktop fi # === Emojis == sudo echo " sans-serif Noto Sans Noto Color Emoji Noto Emoji DejaVu Sans serif Noto Serif Noto Color Emoji Noto Emoji DejaVu Serif monospace Noto Mono Noto Color Emoji Noto Emoji DejaVu Sans Mono " | sudo tee /etc/fonts/local.conf fc-cache # === Power plan == sudo systemctl enable tlp.service sudo systemctl mask systemd-rfkill.service sudo systemctl mask systemd-rfkill.socket # === Java == curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" if [ -x "$HOME"/.config/fish ] ; then if [ ! -f "$HOME"/.config/fish/functions/fisher.fish ] ; then # install fisher if not already installed curl -sL https://git.io/fisher | fish -c 'source && fisher install jorgebucaran/fisher' fi fish -c 'fisher install reitzig/sdkman-for-fish' fi sdk install java 17.0.2-tem # https://whichjdk.com/#adoptium-eclipse-temurin echo "y" | sdk upgrade java # === UBW (pare-feu) == sudo ufw enable # === Firefox == wget -q --show-progress https://git.kennel.ml/Anri/confOS/raw/branch/main/.mozilla/firefox/user.js -P "$HOME"/.mozilla/firefox/*.default-release # === Manual color == #fish -c "set -ge MANPAGER" fish -c "set -Ux MANPAGER \"sh -c 'col -bx | bat -l man -p\'\"" # === Emoji Discord == yay -S ttf-symbola --noconfirm echo -e "\nInstallation terminée.\nIl faut redémarrer l'ordinateur." else echo "Ce script ne fonctionne que sur Manjaro." fi