This commit is contained in:
billypom on debian 2025-06-28 13:08:06 -04:00
parent fb104323be
commit 30f9fed77a
11 changed files with 310 additions and 122 deletions

130
debian.sh
View File

@ -10,6 +10,21 @@ fg_white="$(tput setaf 7)"
reset="$(tput sgr0)"
scriptdir=$PWD
# colored text
cecho() {
local text="$1"
local color="$2"
# Ensure the color variable exists and is valid
if [[ -z "$color" || -z "${!color}" ]]; then
echo "Error: Invalid color variable"
return 1
fi
local fg_color="${!color}"
# Print the colored string
echo -e "${fg_color}${text}${reset}"
}
confirm() {
# call with a prompt string or use a default
read -r -p "${fg_yellow}${1:-Are you sure? [y/N]}${reset} " response
@ -41,82 +56,36 @@ install_neovim=false
install_dotfiles=false
install_gnome_configs=false
include_debian_backports=false
# colored text stopped working? idk
# confirm "\033[94mSwap Left Super & Left Control? (Mac keyboard)\033[0m" && is_macbook=true
# confirm "\033[94mInstall GTK themes?\033[0m" && install_themes=true
# confirm "\0cc[94mInstall Nerd Fonts?\033[0m" && install_nerdfonts=true
echo "${fg_blue}"
cat ascii.txt
echo "${fg_cyan}-----Debian Install Script-----${reset}"
echo "${reset}"
cecho "----debian install script-----" fg_cyan
confirm "Is this a server? (Y/N)" && is_server=true
confirm "Include debian backports in apt package manager? (Y/N)" && include_debian_backports=true
# confirm "Include debian backports in apt package manager? (Y/N)" && include_debian_backports=true
confirm "Swap Left Super & Left Control <for mac keyboard> (Y/N)" && is_macbook=true
if $is_server; then
echo ":3"
else
if echo $DESKTOP_SESSION | grep -q "gnome"; then
confirm "Install gnome extensions, tweaks, and configs? (Y/N)" && install_gnome_configs=true
confirm "Install GTK themes? (Y/N)" && install_themes=true
fi
fi
confirm "Install GTK themes? (Y/N)" && install_themes=true
confirm "Install Nerd Fonts? (Y/N)" && install_nerdfonts=true
confirm "Install billypom dotfiles? - includes .bash_aliases file, tmux, kitty, and nvim configs (Y/N)" && install_dotfiles=true
confirm "Install Neovim? (Y/N)" && install_neovim=true
echo "Updating package manager"
cecho "Updating package manager" fg_cyan
sudo apt update
echo "Purging yucky packages"
cecho "Purging yucky packages" fg_cyan
sudo apt purge nano evolution nautilus
echo "Installing yummy packages"
cecho "Installing yummy packages" fg_cyan
if $is_server; then
sudo apt install vim git cifs-utils nfs-common ripgrep stow virtualenv wget zip unzip kitty python3-pip ncdu tldr htop
else
sudo apt install vim git cifs-utils nfs-common ripgrep stow virtualenv wget zip unzip kitty libfuse-dev python3-pip nemo ncdu tldr htop
fi
if $is_server; then
echo ":3"
else
# wayland specific packages
if echo $XDG_SESSION_TYPE | grep -q "wayland"; then
echo "Installing wayland specific packages"
sudo apt install -y wl-clipboard
fi
# gnome specific packages
if echo $DESKTOP_SESSION | grep -q "gnome" && $install_gnome_configs; then
echo "Installing gnome-specific packages"
sudo apt install -y gnome-tweaks
gsettings set org.gnome.desktop.interface gtk-theme Lavanda-Sea-Dark
gsettings set org.gnome.shell.extensions.user-theme name Lavanda-Sea-Dark
gsettings set org.gnome.desktop.interface icon-theme breeze
gsettings set org.gnome.desktop.default-applications.terminal exec kitty
# better alt tab functionality
echo "Making alt-tab better :)"
gsettings set org.gnome.desktop.wm.keybindings switch-windows "['<Alt>Tab']"
gsettings set org.gnome.desktop.wm.keybindings switch-windows-backward "['<Shift><Alt>Tab', '<Alt>Above_Tab']"
gsettings set org.gnome.desktop.wm.keybindings switch-applications "[]"
gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward "[]"
if $is_macbook; then
echo "Swapping left Super & left Control"
bash options/toggle-gnome-macbook-keyboard.sh 1
fi
sudo apt install -y pipx
# adds ~/.local/bin to PATH
pipx ensurepath
# https://github.com/essembeh/gnome-extensions-cli
pipx install gnome-extensions-cli --system-site-packages
# install gnome extensions
gext install dash-to-dock@micxgx.gmail.com user-theme@gnome-shell-extensions.gcampax.github.com openbar@neuromorph emoji-copy@felipeftn tiling-assistant@leleat-on-github Vitals@CoreCoding.com compiz-windows-effect@hermes83.github.com
# enable gnome extensions
gext enable dash-to-dock@micxgx.gmail.com user-theme@gnome-shell-extensions.gcampax.github.com openbar@neuromorph emoji-copy@felipeftn tiling-assistant@leleat-on-github Vitals@CoreCoding.com compiz-windows-effect@hermes83.github.com
fi
fi
# nerdfonts
if $install_nerdfonts; then
echo "Installing nerdfonts"
bash options/install-nerdfonts.sh
sudo apt install vim git cifs-utils nfs-common ripgrep stow virtualenv wget zip unzip kitty python3-pip ncdu tldr htop libfuse-dev nemo
fi
# themes
@ -125,36 +94,57 @@ if $is_server; then
else
if $install_themes; then
# user theme directory
echo "Installing themes"
cecho "Installing themes" fg_cyan
mkdir -p ~/.themes
bash options/install-colloid-gtk-theme.sh
bash options/install-lavanda-gtk-theme.sh
bash options/lavanda-gtk-theme.sh
bash options/kora-gtk-icons.sh
bash options/tokyonight-gtk-theme.sh
fi
fi
if $is_server; then
echo ":3"
else
# wayland specific packages
if echo $XDG_SESSION_TYPE | grep -q "wayland"; then
cecho "Installing wayland specific packages" fg_cyan
sudo apt install -y wl-clipboard
fi
# gnome specific packages
if echo $DESKTOP_SESSION | grep -q "gnome" && $install_gnome_configs; then
bash options/gnome-configs.sh
fi
fi
# nerdfonts
if $install_nerdfonts; then
cecho "Installing nerdfonts" fg_cyan
bash options/nerdfonts.sh
fi
# set default file manager
xdg-mime default nemo.desktop inode/directory
# install neovim
if $install_neovim; then
echo "Installing neovim"
bash options/install-neovim.sh
cecho "Installing neovim" fg_cyan
bash options/neovim.sh
fi
# install my dotfiles
if $install_dotfiles; then
echo "Installing billypom dotfiles"
bash options/install-dotfiles.sh
cecho "Installing billypom dotfiles" fg_cyan
bash options/dotfiles.sh
fi
# apt repositories setup
# this wont work because of permissions...hmmm
if ! grep -q "deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" /etc/apt/sources.list; then echo "deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" >> /etc/apt/sources.list; fi
if ! grep -q "deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" /etc/apt/sources.list; then echo "deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" >> /etc/apt/sources.list; fi
if $include_debian_backports; then
if ! grep -q "deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" /etc/apt/sources.list; then echo "deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" >> /etc/apt/sources.list; fi
if ! grep -q "deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" /etc/apt/sources.list; then echo "deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" >> /etc/apt/sources.list; fi
fi
# if ! grep -q "deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" /etc/apt/sources.list; then echo "deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" >> /etc/apt/sources.list; fi
#
# if ! grep -q "deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" /etc/apt/sources.list; then echo "deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" >> /etc/apt/sources.list; fi
# if $include_debian_backports; then
# if ! grep -q "deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" /etc/apt/sources.list; then echo "deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" >> /etc/apt/sources.list; fi
#
# if ! grep -q "deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" /etc/apt/sources.list; then echo "deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" >> /etc/apt/sources.list; fi
# fi
echo "\e[0;32m--- debian install script finished running ---\e[0m"

59
options/gnome-configs.sh Executable file
View File

@ -0,0 +1,59 @@
fg_black="$(tput setaf 0)"
fg_red="$(tput setaf 1)"
fg_green="$(tput setaf 2)"
fg_yellow="$(tput setaf 3)"
fg_blue="$(tput setaf 4)"
fg_magenta="$(tput setaf 5)"
fg_cyan="$(tput setaf 6)"
fg_white="$(tput setaf 7)"
reset="$(tput sgr0)"
scriptdir=$PWD
cecho() {
local text="$1"
local color="$2"
# Ensure the color variable exists and is valid
if [[ -z "$color" || -z "${!color}" ]]; then
echo "Error: Invalid color variable"
return 1
fi
local fg_color="${!color}"
# Print the colored string
echo -e "${fg_color}${text}${reset}"
}
cecho "Installing gnome-specific packages" fg_cyan
sudo apt install -y gnome-tweaks
gsettings set org.gnome.desktop.interface gtk-theme Tokyonight-Dark
gsettings set org.gnome.shell.extensions.user-theme name Tokyonight-Dark
gsettings set org.gnome.desktop.interface icon-theme kora
gsettings set org.gnome.desktop.default-applications.terminal exec kitty
# better alt tab functionality
cecho "Making alt-tab better :)" fg_cyan
gsettings set org.gnome.desktop.wm.keybindings switch-windows "['<Alt>Tab']"
gsettings set org.gnome.desktop.wm.keybindings switch-windows-backward "['<Shift><Alt>Tab', '<Alt>Above_Tab']"
gsettings set org.gnome.desktop.wm.keybindings switch-applications "[]"
gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward "[]"
if $is_macbook; then
cecho "Swapping left Super & left Control" fg_cyan
bash options/toggle-gnome-macbook-keyboard.sh 1
fi
sudo apt install -y pipx
# adds ~/.local/bin to PATH
pipx ensurepath
# https://github.com/essembeh/gnome-extensions-cli
pipx install gnome-extensions-cli --system-site-packages
# install gnome extensions
gext install dash-to-dock@micxgx.gmail.com user-theme@gnome-shell-extensions.gcampax.github.com openbar@neuromorph emoji-copy@felipeftn tiling-assistant@leleat-on-github Vitals@CoreCoding.com compiz-windows-effect@hermes83.github.com
# enable gnome extensions
gext enable dash-to-dock@micxgx.gmail.com user-theme@gnome-shell-extensions.gcampax.github.com openbar@neuromorph emoji-copy@felipeftn tiling-assistant@leleat-on-github Vitals@CoreCoding.com compiz-windows-effect@hermes83.github.com
bash gnome-custom-keybinds.sh

View File

@ -0,0 +1,96 @@
#!/bin/bash
# this is the worst script in the world
# "name|command|binding"
keybindings=(
"Terminal|kitty|<Super>Return"
"wallpaper|~/utils/gnome-wallpaper/wallpaper.sh|Launch7"
"wallpaper2|~/utils/gnome-wallpaper/my_wallpaper.sh|<Control>Launch7"
)
# Get the current list of custom keybindings
current_keybindings=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings)
current_keybindings=$(echo "$current_keybindings" | sed "s/^\[\(.*\)\]$/\1/")
if [ "$current_keybindings" == "@as []" ]; then
echo "Current keybinds are empty"
next_index=0
else
# Get the highest index currently used
existing_indices=$(echo "$current_keybindings" | tr ',' '\n' | grep -o 'custom[0-9]\+' | sed 's/custom//' | sort -n)
if [ -z "$existing_indices" ]; then
next_index=0
else
last_index=$(echo "$existing_indices" | tail -n 1)
next_index=$((last_index + 1))
fi
# Store new paths to update the keybinding list
new_keybinding_paths=()
# Get all existing bindings for comparison (just the binding part)
existing_bindings=()
for keybinding in $(echo "$current_keybindings" | tr ',' '\n'); do
binding_path=$(echo "$keybinding" | sed "s/^'//;s/'$//")
binding_command=$(gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$binding_path binding)
existing_bindings+=("$(echo $binding_command | sed "s/^'//;s/'$//")") # Remove quotes
done
fi
# Loop over keybindings and add them
for entry in "${keybindings[@]}"; do
IFS='|' read -r name command binding <<< "$entry"
# Check if the binding already exists
if [ "$current_keybindings" == "@as []" ]; then
echo "Current keybinds are empty"
else
if [[ " ${existing_bindings[@]} " =~ " $binding " ]]; then
# If binding exists, prompt user to overwrite
echo "Keybinding '$binding' already exists for another action."
read -p "Do you want to overwrite it? (y/n): " overwrite
if [[ "$overwrite" != "y" && "$overwrite" != "Y" ]]; then
echo "Skipping '$binding'."
continue
fi
fi
fi
# Define the new keybinding path
new_path="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$next_index/"
new_keybinding_paths+=("'$new_path'") # Wrap paths in single quotes
# Set individual keybinding settings
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:"$new_path" name "$name"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:"$new_path" command "$command"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:"$new_path" binding "$binding"
echo "Added keybinding: $name ($binding) -> $command"
next_index=$((next_index + 1))
done
# Now merge old and new keybindings properly
# First, join the keybinding paths with commas, ensuring proper quoting
if [ "$current_keybindings" == "@as []" ]; then
echo "Current keybinds are empty"
all_keybindings=""
else
all_keybindings="$current_keybindings"
fi
for path in "${new_keybinding_paths[@]}"; do
# Add each new keybinding path to the list, ensuring proper formatting
if [ -z "$all_keybindings" ]; then
all_keybindings="$path"
else
all_keybindings="$all_keybindings,$path"
fi
done
# Ensure the list is properly wrapped in square brackets
all_keybindings="[$all_keybindings]"
# Update the system keybinding list
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$all_keybindings"
echo "Keybindings updated successfully!"

View File

@ -1,43 +0,0 @@
#!/bin/sh
# credit: https://github.com/drewgrif/bookworm-scripts
# Function to check if a directory exists
check_directory() {
if [ -d "$1" ]; then
return 0 # Directory exists
else
return 1 # Directory does not exist
fi
}
# Check if Colloid-icon-theme is installed
if check_directory "$HOME/.local/share/icons/Colloid-Dark"; then
echo "Colloid-icon-theme is already installed."
else
echo "Installing Colloid-icon-theme..."
cd ~/Downloads || exit
if [ -d "Colloid-icon-theme" ]; then
echo "Colloid-icon-theme repository already cloned. Skipping clone step."
else
git clone https://github.com/vinceliuice/Colloid-icon-theme.git
fi
cd Colloid-icon-theme || exit
./install.sh -t default -s default
rm -rf ~/Downloads/Colloid-icon-theme/
fi
# Check if Colloid-gtk-theme is installed
if check_directory "$HOME/.themes/Colloid-Dark"; then
echo "Colloid-gtk-theme is already installed."
else
echo "Installing Colloid-gtk-theme..."
cd ~/Downloads || exit
if [ -d "Colloid-gtk-theme" ]; then
echo "Colloid-gtk-theme repository already cloned. Skipping clone step."
else
git clone https://github.com/vinceliuice/Colloid-gtk-theme.git
fi
cd Colloid-gtk-theme || exit
yes | ./install.sh -c dark -t default --tweaks black
rm -rf ~/Downloads/Colloid-gtk-theme
fi

27
options/kora-gtk-icons.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/sh
# credit: https://github.com/drewgrif/bookworm-scripts
# Function to check if a directory exists
check_directory() {
if [ -d "$1" ]; then
return 0 # Directory exists
else
return 1 # Directory does not exist
fi
}
# Check if Colloid-icon-theme is installed
if check_directory "$HOME/.icons/kora"; then
echo "Kora icon theme is already installed"
else
echo "Installing kora icon theme"
DOWNLOAD_DIR="${XDG_DOWNLOAD_DIR:-$(xdg-user-dir DOWNLOAD)}"
cd $DOWNLOAD_DIR || exit
git clone https://github.com/bikass/kora.git
cd kora || exit
cp -r kora ~/.icons/kora
cp -r kora-light ~/.icons/kora-light
cp -r kora-light-panel ~/.icons/kora-light-panel
cp -r kora-pgrey ~/.icons/kora-pgrey
rm -rf $DOWNLOAD_DIR/kora
fi

View File

@ -15,14 +15,11 @@ if check_directory "$HOME/.themes/Lavanda-Dark"; then
echo "Lavanda gtk theme is already installed."
else
echo "Installing Lavanda-gtk-theme..."
cd ~/Downloads || exit
if [ -d "Lavanda-gtk-theme" ]; then
echo "Lavanda-gtk-theme repository already cloned. Skipping clone step."
else
git clone https://github.com/vinceliuice/Lavanda-gtk-theme
cd Lavanda-gtk-theme
bash install.sh
fi
rm -rf ~/Downloads/Lavanda-gtk-theme
DOWNLOAD_DIR="${XDG_DOWNLOAD_DIR:-$(xdg-user-dir DOWNLOAD)}"
cd $DOWNLOAD_DIR || exit
git clone https://github.com/vinceliuice/Lavanda-gtk-theme
cd Lavanda-gtk-theme
bash install.sh
rm -rf $DOWNLOAD_DIR/Lavanda-gtk-theme
echo "Finished installing Lavanda-gtk-theme"
fi

24
options/tokyonight-gtk-theme.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
echo "Running: [sudo apt install gtk2-engines-murrine]"
sudo apt install gtk2-engines-murrine
# Function to check if a directory exists
check_directory() {
if [ -d "$1" ]; then
return 0 # Directory exists
else
return 1 # Directory does not exist
fi
}
# Check if Colloid-icon-theme is installed
if check_directory "$HOME/.themes/Tokyonight-Dark/"; then
echo "Tokyonight dark theme already installed"
else
echo "Installing Tokyonight GTK theme"
DOWNLOAD_DIR="${XDG_DOWNLOAD_DIR:-$(xdg-user-dir DOWNLOAD)}"
cd $DOWNLOAD_DIR || exit
git clone https://github.com/Fausto-Korpsvart/Tokyonight-GTK-Theme.git
cd Tokyonight-GTK-Theme/themes || exit
bash install.sh
fi

38
options/view-gnome-keybinds.sh Executable file
View File

@ -0,0 +1,38 @@
#!/bin/bash
# Get the list of custom keybindings
keybindings=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings)
# Clean up the keybindings list: remove square brackets, and strip quotes and spaces
keybindings=$(echo "$keybindings" | sed 's/^\[\(.*\)\]$/\1/' | tr -d '[:space:]')
# Loop through each custom keybinding path and print the details
IFS=',' read -r -a keybinding_paths <<< "$keybindings"
for path in "${keybinding_paths[@]}"; do
# Remove both leading/trailing single and double quotes, and any spaces
path=$(echo "$path" | sed 's/^"\(.*\)"$/\1/' | sed "s/^'\(.*\)'$/\1/" | sed 's/^[[:space:]]*//g' | sed 's/[[:space:]]*$//g')
# Debugging: Print the path to check for hidden characters
echo "DEBUG: Raw Keybinding Path: '$path'"
# Make sure the path starts with a slash and is not empty
if [[ "$path" != /* ]] || [[ -z "$path" ]]; then
echo "Error: Path does not begin with a slash (/): '$path'"
continue
fi
# Print the cleaned keybinding path
echo "Keybinding Path: $path"
# Query the details for the keybinding
name=$(gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$path name)
command=$(gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$path command)
binding=$(gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$path binding)
# Print the details if they're available
echo " Name: $name"
echo " Command: $command"
echo " Binding: $binding"
echo "--------------------------"
done