diff --git a/README.md b/README.md
index c562540a..744a9cc0 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# Trude's Dotfiles
-
+
diff --git a/dconf-settings.ini b/dconf-settings.ini
index 883dd630..6554e545 100644
--- a/dconf-settings.ini
+++ b/dconf-settings.ini
@@ -113,7 +113,7 @@ remember-passwords=false
[org/gnome/shell/extensions/vitals]
fixed-widths=false
-hot-sensors=['_memory_usage_', '_processor_usage_', '__temperature_max__']
+hot-sensors=['_processor_usage_', '_gpu#1_usage_', '_memory_usage_', '__temperature_max__']
icon-style=1
menu-centered=false
position-in-panel=0
diff --git a/home/.bashrc b/home/.bashrc
index 7fdbde18..f7073032 100644
--- a/home/.bashrc
+++ b/home/.bashrc
@@ -30,6 +30,13 @@ fi
set completion-ignore-case On
-export OFLAGS="--ozone-platform-hint=auto"
+# Enable programmable completion features (loads all available completions)
+if ! shopt -oq posix; then
+ if [ -f /usr/share/bash-completion/bash_completion ]; then
+ . /usr/share/bash-completion/bash_completion
+ elif [ -f /etc/bash_completion ]; then
+ . /etc/bash_completion
+ fi
+fi
export PATH=$PATH:$HOME/.local/bin
diff --git a/home/Templates/markdown.md b/home/Templates/markdown.md
new file mode 100644
index 00000000..1e0ca6a5
--- /dev/null
+++ b/home/Templates/markdown.md
@@ -0,0 +1 @@
+#
diff --git a/home/Templates/text.txt b/home/Templates/text.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/images/debian.png b/images/debian.png
deleted file mode 100644
index 85ba883b..00000000
Binary files a/images/debian.png and /dev/null differ
diff --git a/install.sh b/install.sh
index 1e07d19d..f93299c9 100755
--- a/install.sh
+++ b/install.sh
@@ -8,14 +8,59 @@ CYAN="\e[36m"
BOLD="\e[1m"
NC="\e[0m"
+install_package() {
+ if command -v pacman >/dev/null 2>&1; then
+ sudo pacman -Sy $@
+ elif command -v apt >/dev/null 2>&1; then
+ sudo apt install -y $@
+ fi
+}
+
+install_gnome_extension() {
+ uuid="$1"
+
+ if [ -z "$uuid" ]; then
+ printf "%b\n" "${RED}Usage: install_gnome_extension ${NC}"
+ return 1
+ fi
+
+ if ! gnome-extensions list | grep -qw "$uuid"; then
+ printf "%b\n" "${YELLOW}[+]${NC} Sent install request for $uuid."
+ gdbus call --session --dest org.gnome.Shell.Extensions \
+ --object-path /org/gnome/Shell/Extensions \
+ --method org.gnome.Shell.Extensions.InstallRemoteExtension \
+ "$uuid" >/dev/null 2>&1
+ return 0
+ elif gnome-extensions list --updates | grep -qw "$uuid"; then
+ printf "%b\n" "${YELLOW}[+]${NC} Sent update request for $uuid."
+ gdbus call --session --dest org.gnome.Shell.Extensions \
+ --object-path /org/gnome/Shell/Extensions \
+ --method org.gnome.Shell.Extensions.InstallRemoteExtension \
+ "$uuid" >/dev/null 2>&1
+ return 0
+ else
+ printf "%b\n" "${GREEN}[✓]${NC} GNOME Extension $uuid is already installed."
+ return 0
+ fi
+}
+
trap 'printf "${RED}install.sh interrupted.${NC}"; exit 1' INT TERM
if ! command -v whiptail >/dev/null 2>&1; then
- echo "${YELLOW}Installing whiptail...${NC}"
- sudo apt install -y whiptail
+ printf "%b\n" "${YELLOW}[+]${NC} Installing whiptail..."
+ install_package whiptail
fi
-testing_branch="trixie"
+case "$XDG_CURRENT_DESKTOP" in
+*GNOME*)
+ printf "%b\n" "${GREEN}[✓]${NC} Running on GNOME."
+ ;;
+*)
+ whiptail --title "Warning" --msgbox \
+ "Dconf settings and GNOME extensions can only be installed from within GNOME.\n\nPlease run this script again from within a GNOME session. The script will configure NetworkManager for you if needed." \
+ 15 60
+ ;;
+esac
window_height='15'
window_width='60'
@@ -23,10 +68,12 @@ window_width='60'
W_MAIN=$(
whiptail --notags --title "Trude's Dotfiles" \
--cancel-button "Exit" \
- --menu "Main Menu" $window_height $window_width 3 \
+ --menu "Main Menu" $window_height $window_width 5 \
"install" "Install Dotfiles" \
"reload" "Reload Configuration" \
- "update" "Update Debian" \
+ "paru" "Install Paru AUR Helper" \
+ "flatpak" "Install Flatpak" \
+ "update" "Update Distro" \
3>&1 1>&2 2>&3
)
@@ -39,215 +86,144 @@ if [ $W_MAIN = "update" ]; then
exit 0
fi
-if [ $W_MAIN = "install" ]; then
- W_DEB_SOURCES=$(whiptail --notags --title "Debian Sources" \
- --cancel-button "Skip" \
- --menu "Choose your Debian source:" $window_height $window_width 2 \
- "stable" "Stable" \
- "testing" "Testing ($testing_branch)" \
- 3>&1 1>&2 2>&3)
-fi
-
-install_gnome_extension() {
- uuid="$1"
-
- if [ -z "$uuid" ]; then
- echo "${RED}Usage: install_gnome_extension ${NC}"
- return 1
- fi
-
- if ! gnome-extensions list | grep -qw "$uuid"; then
- echo "${GREEN}Sent install request for $uuid.${NC}"
- gdbus call --session --dest org.gnome.Shell.Extensions \
- --object-path /org/gnome/Shell/Extensions \
- --method org.gnome.Shell.Extensions.InstallRemoteExtension \
- "$uuid" >/dev/null 2>&1
- return 0
- elif gnome-extensions list --updates | grep -qw "$uuid"; then
- echo "${GREEN}Sent update request for $uuid.${NC}"
- gdbus call --session --dest org.gnome.Shell.Extensions \
- --object-path /org/gnome/Shell/Extensions \
- --method org.gnome.Shell.Extensions.InstallRemoteExtension \
- "$uuid" >/dev/null 2>&1
- return 0
- else
- echo "${GREEN}GNOME Extension $uuid is already installed.${NC}"
- return 0
- fi
-}
-
# Clone Dotfiles if not already present
cd "$HOME/dotfiles"
if [ "$(pwd)" != "$HOME/dotfiles" ]; then
- echo "${YELLOW}Cloning dotfiles repository...${NC}"
- sudo apt update
- sudo apt install -y git
+ printf "%b\n" "${YELLOW}[+]${NC} Cloning dotfiles repository..."
+ install_package git
if ! git clone https://git.trude.dev/trude/dotfiles --depth 1; then
- echo "${RED}Error cloning dotfiles repository. Update skipped...${NC}"
+ printf "%b\n" "${RED}Error cloning dotfiles repository. Update skipped...${NC}"
fi
cd dotfiles || exit
- echo "${GREEN}dotfiles repository cloned successfully.${NC}"
-# else
-# echo "${YELLOW}Updating dotfiles repository...${NC}"
-# pull_output=$(git pull)
-# echo "$pull_output"
-# if ! echo "$pull_output" | grep -q "Already up to date."; then
-# echo "${YELLOW}Changes detected. Re-running script...${NC}"
-# exec "$0" "$@"
-# fi
+ printf "%b\n" "${GREEN}[✓]${NC} Dotfiles repository cloned successfully."
+else
+ printf "%b\n" "${YELLOW}[+]${NC} Updating dotfiles repository..."
+ pull_output=$(git pull)
+ echo "$pull_output"
+ if ! echo "$pull_output" | grep -q "Already up to date."; then
+ printf "%b\n" "${YELLOW}Changes detected. Please re-run the script. Ignore this warning if you don't have an internet connection.${NC}"
+ fi
fi
mkdir -p "$HOME/dotfiles/logs"
+if [ $W_MAIN = "flatpak" ]; then
+ install_package flatpak
+ sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
+fi
+
+if [ $W_MAIN = "paru" ]; then
+ sudo pacman -S --needed base-devel
+ git clone https://aur.archlinux.org/paru.git --depth=1
+ cd paru
+ makepkg -si
+ cd ..
+ rm -rf paru
+fi
+
if [ $W_MAIN = "install" ]; then
- echo "${YELLOW}Setting Debian Sources...${NC}"
- case $W_DEB_SOURCES in
- "stable")
- echo "${CYAN}Using Stable sources.${NC}"
- sudo cp /etc/apt/sources.list /etc/apt/sources.list.bckp
- sudo sh -c 'cat > /etc/apt/sources.list < /etc/apt/sources.list <"$HOME/dotfiles/logs/font_install.log"
-fi
-
-# UFW Firewall
-if [ "$reload" = false ]; then
- echo "${YELLOW}Setting up UFW...${NC}"
- sudo ufw default deny incoming
- sudo ufw default allow outgoing
- if systemctl is-active --quiet sshd; then
- echo "${YELLOW}SSH Server detected; Enabling SSH rule...${NC}"
- sudo ufw limit 22/tcp
+ # Install fonts
+ printf "%b\n" "${YELLOW}[+]${NC} Installing fonts..."
+ mkdir -p "$HOME/.local/share/fonts"
+ cp -rf "$HOME/dotfiles/fonts/"* "$HOME/.local/share/fonts/"
+ if [ ! -f "$HOME/dotfiles/logs/font_install.log" ]; then
+ fc-cache -fv "$HOME/.local/share/fonts" >"$HOME/dotfiles/logs/font_install.log"
fi
- sudo ufw enable
- sudo ss -tupln | tee "$HOME/dotfiles/logs/open_ports.log"
- sudo ufw status numbered | tee "$HOME/dotfiles/logs/ufw_status.log"
-fi
-# Trude-only settings
-if [ "$USER" = "trude" ]; then
- # Git config
- git config --global commit.gpgsign true
- git config --global tag.gpgSign true
- git config --global gpg.format ssh
- git config --global user.signingkey ~/.ssh/id_ed25519.pub
- git config --global user.name "TrudeEH"
- git config --global user.email "ehtrude@gmail.com"
+ # UFW Firewall
+ if [ "$reload" = false ]; then
+ printf "%b\n" "${YELLOW}[+]${NC} Setting up UFW..."
+ sudo ufw default deny incoming
+ sudo ufw default allow outgoing
+ if systemctl is-active --quiet sshd; then
+ printf "%b\n" "${YELLOW}[+]${NC} SSH Server detected; Enabling SSH rule..."
+ sudo ufw limit 22/tcp
+ fi
+ sudo ufw enable
+ sudo ss -tupln | tee "$HOME/dotfiles/logs/open_ports.log"
+ sudo ufw status numbered | tee "$HOME/dotfiles/logs/ufw_status.log"
+ fi
- # Clone password-store
- if [ ! -f "$HOME/.ssh/id_ed25519" ] || [ ! -f "$HOME/.ssh/id_ed25519.pub" ]; then
- echo "${RED}ED25519 key not found in ${CYAN}$HOME/.ssh/id_ed25519. ${RED}Please add your ED25519 key pair for password-store.${NC}"
- elif ! gpg --list-keys "ehtrude@gmail.com" >/dev/null 2>&1; then
- echo "${RED}GPG key for ehtrude@gmail.com not found. Please import the key for password-store.${NC}"
- else
- if [ ! -d "$HOME/.password-store" ]; then
- echo "${YELLOW}Cloning password-store...${NC}"
- chmod 700 ~/.ssh
- chmod 600 ~/.ssh/*
- if ! git clone git@git.trude.dev:trude/password-store.git "$HOME/.password-store"; then
- echo "${RED}Error cloning password-store.${NC}"
- else
- echo "${GREEN}Password-store cloned successfully.${NC}"
- fi
+ # Trude-only settings
+ if [ "$USER" = "trude" ]; then
+ # Git config
+ git config --global commit.gpgsign true
+ git config --global tag.gpgSign true
+ git config --global gpg.format ssh
+ git config --global user.signingkey ~/.ssh/id_ed25519.pub
+ git config --global user.name "TrudeEH"
+ git config --global user.email "ehtrude@gmail.com"
+
+ # Clone password-store
+ if [ ! -f "$HOME/.ssh/id_ed25519" ] || [ ! -f "$HOME/.ssh/id_ed25519.pub" ]; then
+ printf "%b\n" "${RED}ED25519 key not found in ${CYAN}$HOME/.ssh/id_ed25519. ${RED}Please add your ED25519 key pair for password-store.${NC}"
+ elif ! gpg --list-keys "ehtrude@gmail.com" >/dev/null 2>&1; then
+ printf "%b\n" "${RED}GPG key for ehtrude@gmail.com not found. Please import the key for password-store.${NC}"
else
- echo "${CYAN}Password-store already present.${NC}"
+ if [ ! -d "$HOME/.password-store" ]; then
+ printf "%b\n" "${YELLOW}[+]${NC} Cloning password-store..."
+ chmod 700 ~/.ssh
+ chmod 600 ~/.ssh/*
+ if ! git clone git@git.trude.dev:trude/password-store.git "$HOME/.password-store"; then
+ printf "%b\n" "${RED}Error cloning password-store.${NC}"
+ else
+ printf "%b\n" "${GREEN}[✓]${NC} Password-store cloned successfully."
+ fi
+ else
+ printf "%b\n" "${GREEN}[✓]${NC} Password-store already present."
+ fi
fi
fi
-fi
-# Set up GNOME Desktop
-case "$XDG_CURRENT_DESKTOP" in
-*GNOME*)
- echo "${YELLOW}Installing GNOME Extensions...${NC}"
- install_gnome_extension "caffeine@patapon.info"
- install_gnome_extension "Vitals@CoreCoding.com"
- install_gnome_extension "appindicatorsupport@rgcjonas.gmail.com"
- install_gnome_extension "gsconnect@andyholmes.github.io"
+ # Set up GNOME Desktop
+ case "$XDG_CURRENT_DESKTOP" in
+ *GNOME*)
+ printf "%b\n" "${YELLOW}[+]${NC} Installing GNOME Extensions..."
+ install_gnome_extension "caffeine@patapon.info"
+ install_gnome_extension "Vitals@CoreCoding.com"
+ install_gnome_extension "appindicatorsupport@rgcjonas.gmail.com"
+ install_gnome_extension "gsconnect@andyholmes.github.io"
- echo "${YELLOW}Loading Dconf settings...${NC}"
- if ! dconf load / <"$HOME/dotfiles/dconf-settings.ini"; then
- echo "${RED}Error loading Dconf settings.${NC}"
- fi
- ;;
-*)
- echo
- echo
- echo "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${NC}"
- echo
- echo "${CYAN}Dconf settings and GNOME extensions can only be installed after restarting."
- echo "${CYAN}Please run the script again from within GNOME (with the reload option).${NC}"
- echo
- echo "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${NC}"
- echo
- ;;
-esac
+ printf "%b\n" "${YELLOW}[+]${NC} Loading Dconf settings..."
+ if ! dconf load / <"$HOME/dotfiles/dconf-settings.ini"; then
+ printf "%b\n" "${RED}Error loading Dconf settings.${NC}"
+ fi
+ ;;
+ *)
+ printf "\n\n"
+ printf "%b\n" "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${NC}"
+ printf "\n"
+ printf "%b\n" "${CYAN}Dconf settings and GNOME extensions can only be installed after restarting."
+ printf "%b\n" "${CYAN}Please run the script again from within GNOME (with the reload option).${NC}"
+ printf "\n"
+ printf "%b\n" "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${NC}"
+ printf "\n"
+ ;;
+ esac
+fi
\ No newline at end of file
diff --git a/scripts/battery b/scripts/battery
deleted file mode 100755
index 7e65d83a..00000000
--- a/scripts/battery
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /bin/sh
-
-RED="\e[31m"
-GREEN="\e[32m"
-YELLOW="\e[33m"
-MAGENTA="\e[35m"
-CYAN="\e[36m"
-BOLD="\e[1m"
-NC="\e[0m"
-
-BATTERY_INFO=$(upower -i "$(upower -e | grep 'BAT')")
-BATTERY_PERCENT=$(echo "$BATTERY_INFO" | grep -oP 'percentage:\s+\K\d+')
-BATTERY_STATUS=$(echo "$BATTERY_INFO" | grep -oP 'state:\s+\K\w+')
-CHARGE_CYCLES=$(echo "$BATTERY_INFO" | grep -oP 'cycle-count:\s+\K\d+')
-WARNING_LEVEL=$(echo "$BATTERY_INFO" | grep -oP 'warning-level:\s+\K\w+')
-
-if [ "$BATTERY_STATUS" = "charging" ] || [ "$BATTERY_STATUS" = "pending" ]; then
- COLOR=$CYAN
-elif [ "$BATTERY_PERCENT" -ge 80 ]; then
- COLOR=$GREEN
-elif [ "$BATTERY_PERCENT" -ge 30 ]; then
- COLOR=$YELLOW
-else
- COLOR=$RED
-fi
-
-echo "${BOLD}Battery: ${COLOR}$BATTERY_PERCENT% ($BATTERY_STATUS)${NC}"
-if [ -n "$CHARGE_CYCLES" ]; then
- echo "${BOLD}Charge Cycles: ${MAGENTA}$CHARGE_CYCLES${NC}"
-fi
-if [ "$WARNING_LEVEL" != "none" ]; then
- echo "${BOLD}Warning Level: ${RED}$WARNING_LEVEL${NC}"
-fi
diff --git a/scripts/build-new-kernel b/scripts/build-new-kernel
deleted file mode 100755
index 3fbf23db..00000000
--- a/scripts/build-new-kernel
+++ /dev/null
@@ -1,40 +0,0 @@
-#! /bin/sh
-
-YELLOW="\e[33m"
-NC="\e[0m"
-
-echo "\n${YELLOW}Downloading APT dependencies...${NC}\n"
-sudo apt install build-essential git -y
-sudo apt build-dep linux -y
-
-echo "\n${YELLOW}Downloading kernel source...${NC}\n"
-mkdir linux-parent && cd linux-parent || exit 1
-git clone --depth 1 https://github.com/torvalds/linux
-cd linux || exit 1
-
-cp /boot/config-"$(uname -r)" .config # Copy current kernel config
-make nconfig # Edit the current kernel configuration
-diff /boot/config-"$(uname -r)" .config # Check your changes
-
-# Do not include debugging symbols. Alternatively, use `strip` to remove them. (these configs are working as of 6.14)
-scripts/config --undefine GDB_SCRIPTS
-scripts/config --undefine DEBUG_INFO
-scripts/config --undefine DEBUG_INFO_SPLIT
-scripts/config --undefine DEBUG_INFO_REDUCED
-scripts/config --undefine DEBUG_INFO_COMPRESSED
-scripts/config --set-val DEBUG_INFO_NONE y
-scripts/config --set-val DEBUG_INFO_DWARF5 n
-scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
-
-echo "\n${YELLOW}Compiling the kernel...${NC}\n"
-make -j"$(nproc)" deb-pkg LOCALVERSION=-custom
-
-echo "\n${YELLOW}Installing the generated dpkg packages...${NC}\n"
-sudo dpkg -i ../linux-headers*-custom*.deb
-sudo dpkg -i ../linux-image*-custom*.deb
-
-echo "\n${YELLOW}Cleaning up...${NC}\n"
-cd ../..
-rm -rf linux-parent
-
-dpkg --list | grep linux-image
diff --git a/scripts/fetch b/scripts/fetch
index 6b2f9b86..94e98d0d 100755
--- a/scripts/fetch
+++ b/scripts/fetch
@@ -10,46 +10,46 @@ BOLD="\e[1m"
NC="\e[0m"
# User and host info
-echo "${BOLD}${MAGENTA}${USER}@$(hostname)${NC}"
-echo "---------"
+printf "%b\n" "${BOLD}${MAGENTA}${USER}@$(hostname)${NC}"
+printf "%b\n" "---------"
# OS and architecture
OS=$(grep '^PRETTY_NAME=' /etc/os-release | cut -d= -f2 | tr -d '"')
ARCH=$(uname -m)
-echo "${CYAN}OS:${NC} $OS $ARCH"
+printf "%b\n" "${CYAN}OS:${NC} $OS $ARCH"
# Host Model
HOST_MODEL=$(cat /sys/class/dmi/id/product_name 2>/dev/null)
HOST_VERSION=$(cat /sys/class/dmi/id/product_version 2>/dev/null)
-echo "${CYAN}Host:${NC} ${HOST_VERSION} (${HOST_MODEL})"
+printf "%b\n" "${CYAN}Host:${NC} ${HOST_VERSION} (${HOST_MODEL})"
# Kernel version
-echo "${CYAN}Kernel:${NC} Linux $(uname -r)"
+printf "%b\n" "${CYAN}Kernel:${NC} Linux $(uname -r)"
# Uptime
UPTIME=$(uptime -p | sed 's/up //')
-echo "${CYAN}Uptime:${NC} $UPTIME"
+printf "%b\n" "${CYAN}Uptime:${NC} $UPTIME"
# Package counts: dpkg and flatpak
PKG_COUNT=$(dpkg-query -f '${binary:Package}\n' -W 2>/dev/null | wc -l)
FLAT_COUNT=$(flatpak list 2>/dev/null | wc -l)
-echo "${CYAN}Packages:${NC} ${PKG_COUNT} (dpkg), ${FLAT_COUNT} (flatpak)"
+printf "%b\n" "${CYAN}Packages:${NC} ${PKG_COUNT} (dpkg), ${FLAT_COUNT} (flatpak)"
# Shell and version
BASH_VER=$(bash --version | head -n1 | awk '{print $4}' | cut -d'(' -f1)
-echo "${CYAN}Shell:${NC} bash ${BASH_VER}"
+printf "%b\n" "${CYAN}Shell:${NC} bash ${BASH_VER}"
# Desktop Environment
DE=${XDG_CURRENT_DESKTOP:-"Unknown"}
-echo "${CYAN}DE:${NC} $DE"
+printf "%b\n" "${CYAN}DE:${NC} $DE"
# CPU model from /proc/cpuinfo
CPU=$(awk -F: '/model name/ {print $2; exit}' /proc/cpuinfo | sed 's/^[ \t]*//')
-echo "${CYAN}CPU:${NC} $CPU"
+printf "%b\n" "${CYAN}CPU:${NC} $CPU"
# GPU info
GPU=$(lspci | grep -i 'vga\|3d' | head -n1 | cut -d: -f3 | sed 's/^[ \t]*//')
-echo "${CYAN}GPU:${NC} $GPU"
+printf "%b\n" "${CYAN}GPU:${NC} $GPU"
# Memory usage
mem_info=$(free | awk '/Mem:/ {print $2, $3}')
@@ -68,7 +68,7 @@ fi
mem_total=$(free -h | awk '/Mem:/ {print $2}')
mem_used=$(free -h | awk '/Mem:/ {print $3}')
-echo "${CYAN}Memory:${NC} ${mem_used} / ${mem_total} (${percent_color}${percent}%${NC})"
+printf "%b\n" "${CYAN}Memory:${NC} ${mem_used} / ${mem_total} (${percent_color}${percent}%${NC})"
# Swap usage
swap_used=$(free -h | awk '/Swap/ {print $3}')
@@ -83,7 +83,7 @@ else
swap_perc_color=$RED
fi
-echo "${CYAN}Swap:${NC} ${swap_used} / ${swap_total} (${swap_perc_color}${swap_perc}%${NC})"
+printf "%b\n" "${CYAN}Swap:${NC} ${swap_used} / ${swap_total} (${swap_perc_color}${swap_perc}%${NC})"
# Root disk usage
root_line=$(df -h / | awk 'NR==2')
@@ -97,7 +97,7 @@ elif [ "$root_percent" -le 80 ]; then
else
root_color=$RED
fi
-echo "${CYAN}Disk (/):${NC} ${root_used} / ${root_total} (${root_color}${root_percent}%${NC})"
+printf "%b\n" "${CYAN}Disk (/):${NC} ${root_used} / ${root_total} (${root_color}${root_percent}%${NC})"
# /home disk usage
home_line=$(df -h /home 2>/dev/null | awk 'NR==2')
@@ -112,7 +112,7 @@ if [ -n "$home_line" ]; then
else
home_color=$RED
fi
- echo "${CYAN}Disk (/home):${NC} ${home_used} / ${home_total} (${home_color}${home_percent}%${NC})"
+ printf "%b\n" "${CYAN}Disk (/home):${NC} ${home_used} / ${home_total} (${home_color}${home_percent}%${NC})"
fi
# Determine the primary network interface used for internet access
@@ -120,11 +120,11 @@ PRIMARY_IFACE=$(ip route get 8.8.8.8 2>/dev/null | awk '{print $5; exit}')
if [ -n "$PRIMARY_IFACE" ]; then
LOCAL_IP=$(ip addr show "$PRIMARY_IFACE" | awk '/inet / {print $2}' | cut -d'/' -f1)
- echo "${CYAN}Local IP ($PRIMARY_IFACE):${NC} ${LOCAL_IP}"
+ printf "%b\n" "${CYAN}Local IP ($PRIMARY_IFACE):${NC} ${LOCAL_IP}"
else
- echo "${RED}Local IP:${NC} Unable to determine primary network interface."
+ printf "%b\n" "${RED}Local IP:${NC} Unable to determine primary network interface."
fi
# Current locale setting
LOCALE=$(locale | awk -F= '/^LANG=/{print $2; exit}')
-echo "${CYAN}Locale:${NC} $LOCALE"
+printf "%b\n" "${CYAN}Locale:${NC} $LOCALE"
diff --git a/scripts/mem b/scripts/mem
deleted file mode 100755
index 36edb883..00000000
--- a/scripts/mem
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-RED="\e[31m"
-GREEN="\e[32m"
-YELLOW="\e[33m"
-NC="\e[0m"
-
-mem_info=$(free | awk '/Mem:/ {print $2, $3}')
-set -- $mem_info
-total=$1
-used=$2
-percent=$(awk "BEGIN {printf \"%.0f\", ($used/$total)*100}")
-
-mem_total=$(free -h | awk '/Mem:/ {print $2}')
-mem_used=$(free -h | awk '/Mem:/ {print $3}')
-if [ -t 1 ]; then
- if [ "$percent" -le 60 ]; then
- percent_color=$GREEN
- elif [ "$percent" -le 80 ]; then
- percent_color=$YELLOW
- else
- percent_color=$RED
- fi
- echo " ${mem_used} / ${mem_total} (${percent_color}${percent}%${NC})"
-else
- echo "${mem_used} ${mem_total} ${percent}"
-fi
diff --git a/scripts/mon b/scripts/mon
deleted file mode 100755
index 5e0dee83..00000000
--- a/scripts/mon
+++ /dev/null
@@ -1,75 +0,0 @@
-#! /bin/sh
-
-RED="\e[31m"
-GREEN="\e[32m"
-YELLOW="\e[33m"
-CYAN="\e[36m"
-NC="\e[0m"
-
-trap "echo '${CYAN}System Monitor interrupted.${NC}'; exit 1" INT TERM
-
-echo
-echo
-echo
-
-# Cache in tmpfs to improve speed and reduce SSD load
-cache=/tmp/cpu-script-cache
-rm /tmp/cpu-script-cache 2>/dev/null
-while true; do
- # CPU
- cpu_stats=$(awk '/^cpu / {print $2 + $3 + $4 + $5, $5}' /proc/stat)
- if [ ! -f "$cache" ]; then
- echo "$cpu_stats" >"$cache"
- cpu_color=$CYAN
- usage="--"
- else
- prev_stats=$(cat "$cache")
- total=$(echo "$prev_stats" | awk '{print $1}')
- prev_idle=$(echo "$prev_stats" | awk '{print $2}')
- curr_total=$(echo "$cpu_stats" | awk '{print $1}')
- curr_idle=$(echo "$cpu_stats" | awk '{print $2}')
- total_diff=$((curr_total - total))
- idle_diff=$((curr_idle - prev_idle))
-
- if [ "$total_diff" -eq 0 ]; then
- usage=0 # Avoid division by zero
- else
- usage=$((100 * (total_diff - idle_diff) / total_diff))
- fi
-
- if [ "$usage" -lt 50 ]; then
- cpu_color=$GREEN
- elif [ "$usage" -lt 70 ]; then
- cpu_color=$YELLOW
- else
- cpu_color=$RED
- fi
- fi
-
- # MEMORY
- mem_info=$(free | awk '/Mem:/ {print $2, $3}')
- set -- $mem_info
- total=$1
- used=$2
- percent=$(awk "BEGIN {printf \"%.0f\", ($used/$total)*100}")
-
- mem_total=$(free -h | awk '/Mem:/ {print $2}')
- mem_used=$(free -h | awk '/Mem:/ {print $3}')
-
- if [ "$percent" -le 60 ]; then
- mem_color=$GREEN
- elif [ "$percent" -le 80 ]; then
- mem_color=$YELLOW
- else
- mem_color=$RED
- fi
-
- printf "\033[4A"
- echo "============================="
- echo " ${cpu_color}${usage}%${NC} "
- echo " ${mem_used} / ${mem_total} (${mem_color}${percent}%${NC}) "
- echo "============================="
-
- echo "$cpu_stats" >"$cache"
- sleep 2
-done
diff --git a/scripts/neticon b/scripts/neticon
deleted file mode 100755
index a116c6f5..00000000
--- a/scripts/neticon
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# Wifi
-if [ "$(cat /sys/class/net/w*/operstate 2>/dev/null)" = 'up' ]; then
- wifiicon="$(awk '/^[[:space:]]*w/ { gsub(/[[:space:]]+/, " "); print " ", int($3 * 100 / 70) "% " }' /proc/net/wireless)"
-elif [ "$(cat /sys/class/net/w*/operstate 2>/dev/null)" = 'down' ]; then
- wifiicon=" "
-fi
-
-# Ethernet
-[ "$(cat /sys/class/net/e*/operstate 2>/dev/null)" = 'up' ] && ethericon=" " || ethericon=" "
-
-printf "%s%s\n" "$wifiicon" "$ethericon"
diff --git a/scripts/p.sh b/scripts/p.sh
deleted file mode 100644
index bf204d90..00000000
--- a/scripts/p.sh
+++ /dev/null
@@ -1,215 +0,0 @@
-#! /bin/bash
-# Cross-distro package manager UI
-
-RED="\e[31m"
-GREEN="\e[32m"
-YELLOW="\e[33m"
-BLUE="\e[34m"
-MAGENTA="\e[35m"
-CYAN="\e[36m"
-GRAY="\e[90m"
-
-BOLD="\e[1m"
-FAINT="\e[2m"
-ITALIC="\e[3m"
-UNDERLINE="\e[4m"
-
-NC="\e[0m"
-
-pcheck() {
- local pms=()
- if command -v nix >/dev/null 2>&1; then
- pms+=("nix")
- fi
- if command -v brew >/dev/null 2>&1; then
- pms+=("brew")
- fi
- if command -v apt >/dev/null 2>&1; then
- pms+=("apt")
- elif command -v pacman >/dev/null 2>&1; then
- if command -v paru >/dev/null 2>&1; then
- pms+=("paru")
- fi
- pms+=("pacman")
- elif command -v dnf >/dev/null 2>&1; then
- pms+=("dnf")
- fi
- if command -v flatpak >/dev/null 2>&1; then
- pms+=("flatpak")
- fi
- echo "${pms[@]}"
-}
-
-p() (
- trap "echo -e '\n${RED}p interrupted.${NC}'; exit 1" SIGINT SIGTERM
- packageManagers=($(pcheck))
-
- updateP() {
- if [[ ${packageManagers[@]} =~ "flatpak" ]]; then
- printf "%b\n" "${YELLOW}Updating flatpak...${NC}"
- flatpak update
- flatpak uninstall --unused --delete-data
- fi
- if [[ ${packageManagers[@]} =~ "nix" ]]; then
- printf "%b\n" "${YELLOW}Updating nix...${NC}"
- nix-channel --update
- nix-collect-garbage --delete-older-than 7d &>/dev/null
- if command -v nixos-rebuild >/dev/null 2>&1; then
- sudo nix-channel --update
- printf "${YELLOW}Rebuilding NixOS...${NC}\n"
- sudo nixos-rebuild switch &>/tmp/nixos_rebuild.log || (
- cat /tmp/nixos_rebuild.log | grep --color error && false
- )
- fi
- fi
- if [[ ${packageManagers[@]} =~ "brew" ]]; then
- printf "%b\n" "${YELLOW}Updating brew...${NC}"
- brew update
- brew doctor
- brew upgrade
- fi
- if [[ ${packageManagers[@]} =~ "apt" ]]; then
- printf "%b\n" "${YELLOW}Updating apt...${NC}"
- sudo apt update
- sudo apt upgrade
- sudo apt dist-upgrade
- sudo apt autoremove
- sudo apt autoclean
- elif [[ ${packageManagers[@]} =~ "pacman" ]]; then
- printf "%b\n" "${YELLOW}Updating pacman...${NC}"
- sudo sed -i 's/^#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf
- if [[ ${packageManagers[@]} =~ "paru" ]]; then
- paru -Syu
- else
- sudo pacman -Syu
- fi
- sudo pacman -Rsn $(pacman -Qdtq)
- if [ ! "$(command -v reflector)" ]; then
- printf "%b\n" "${YELLOW}Selecting fastest pacman mirrors...${NC}"
- sudo pacman -Sy --noconfirm reflector rsync curl
- iso=$(curl -4 ifconfig.co/country-iso)
- extra="FR"
- sudo reflector -a 48 -c $iso -c $extra -f 5 -l 30 --verbose --sort rate --save /etc/pacman.d/mirrorlist
- fi
- if [ ! "$(command -v paccache)" ]; then
- sudo pacman -Sy --noconfirm pacman-contrib
- fi
- paccache -rk1
- elif [[ ${packageManagers[@]} =~ "dnf" ]]; then
- printf "%b\n" "${YELLOW}Updating dnf...${NC}"
- sudo dnf upgrade --refresh
- sudo dnf autoremove
- fi
- }
-
- installP() {
- for pm in "${packageManagers[@]}"; do
- printf "%b\n" "${YELLOW}Attempting ${pm} install...${NC}"
- case "$pm" in
- flatpak)
- flatpak install "$1"
- ;;
- paru)
- paru -Sy "$1"
- ;;
- apt)
- sudo apt install "$1"
- ;;
- pacman)
- sudo pacman -Sy "$1"
- ;;
- dnf)
- sudo dnf install "$1"
- ;;
- brew)
- brew install "$1"
- ;;
- *)
- continue
- ;;
- esac
- if [[ $? == 0 ]]; then
- return 0
- fi
- done
- printf "%b\n" "${RED}ERROR: $1 not found.${NC}"
- return 1
- }
-
- removeP() {
- for pm in "${packageManagers[@]}"; do
- printf "%b\n" "${YELLOW}Attempting ${pm} uninstall...${NC}"
- case "$pm" in
- flatpak)
- flatpak uninstall "$1"
- ;;
- brew)
- brew uninstall "$1"
- ;;
- apt)
- sudo apt remove "$1"
- ;;
- pacman)
- sudo pacman -Rs "$1"
- ;;
- paru)
- paru -Rns "$1"
- ;;
- dnf)
- sudo dnf remove "$1"
- ;;
- *)
- continue
- ;;
- esac
- if [[ $? == 0 ]]; then
- return 0
- fi
- done
- printf "%b\n" "${RED}ERROR: $1 not found.${NC}"
- return 1
- }
-
- shellP() {
- if [[ ${packageManagers[@]} =~ "nix" ]]; then
- printf "%b\n" "${YELLOW}Attempting to create nix shell...${NC}"
- nix-shell -p $1
- if [[ $? == 0 ]]; then
- return 0
- fi
- fi
- }
-
- # If no parameter or u
- printf "%b\n" "${CYAN}Detected package managers: ${MAGENTA}${packageManagers[*]}${NC}"
- if [ -z $1 ] || [ $1 = "u" ]; then
- updateP
- return 0
- elif [ $1 = "i" ]; then # If first parameter is i (install)
- shift
- for package in "$@"; do
- installP $package
- done
- elif [ $1 = "r" ]; then # If first parameter is r (remove)
- shift
- for package in "$@"; do
- removeP $package
- done
- elif [ $1 = "c" ]; then # If first parameter is c (check)
- shift
- for package in "$@"; do
- checkP $package
- done
- elif [ $1 = "s" ]; then # If first parameter is s (shell)
- shift
- shellP $@
- else
- printf "%b\n" "${YELLOW}${UNDERLINE}[i] Usage:${NC}"
- printf "%b\n" "p (u) ${FAINT}- update os${NC}"
- printf "%b\n" "p i package ${FAINT}- install package${NC}"
- printf "%b\n" "p r package ${FAINT}- remove package${NC}"
- printf "%b\n" "p s packages ${FAINT}- launch a nix shell with the specified packages${NC}"
- printf "%b\n" "${FAINT}Supported package managers: flatpak, nix, brew, apt, paru, pacman, dnf${NC}"
- return 1
- fi
-)
diff --git a/scripts/temp b/scripts/temp
deleted file mode 100755
index 2d64173e..00000000
--- a/scripts/temp
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) |
- column -s "$(printf '\t')" -t |
- sed 's/\(.\)..$/.\1°C/'
diff --git a/scripts/update b/scripts/update
index b11a3f9a..0bb49480 100755
--- a/scripts/update
+++ b/scripts/update
@@ -1,32 +1,38 @@
#! /bin/sh
YELLOW="\e[33m"
-GRAY="\e[90m"
NC="\e[0m"
-printf "%b\n" "${YELLOW}[+]${NC} Updating repos..."
-printf "%b" "${GRAY}"
-sudo apt-get update
-printf "%b" "${NC}"
+if command -v paru >/dev/null 2>&1; then
+ printf "%b\n" "${YELLOW}[+]${NC} Updating Arch using paru..."
+ paru
+ printf "%b\n" "${YELLOW}[+]${NC} Removing orphaned dependencies..."
+ sudo pacman -Rsn $(pacman -Qdtq)
+elif command -v pacman >/dev/null 2>&1; then
+ printf "%b\n" "${YELLOW}[+]${NC} Updating Arch..."
+ sudo pacman -Syu
+ printf "%b\n" "${YELLOW}[+]${NC} Removing orphaned dependencies..."
+ sudo pacman -Rsn $(pacman -Qdtq)
+elif command -v apt >/dev/null 2>&1; then
+ printf "%b\n" "${YELLOW}[+]${NC} Updating repos..."
+ sudo apt-get update
+ printf "%b" "${NC}"
-printf "%b\n" "${YELLOW}[+]${NC} Upgrading packages..."
-printf "%b" "${GRAY}"
-sudo apt-get full-upgrade
-printf "%b" "${NC}"
+ printf "%b\n" "${YELLOW}[+]${NC} Upgrading packages..."
+ sudo apt-get full-upgrade
+ printf "%b" "${NC}"
-printf "%b\n" "${YELLOW}[+]${NC} Removing orphaned dependencies..."
-printf "%b" "${GRAY}"
-sudo apt-get autoremove
-printf "%b" "${NC}"
+ printf "%b\n" "${YELLOW}[+]${NC} Removing orphaned dependencies..."
+ sudo apt-get autoremove
+ printf "%b" "${NC}"
-printf "%b\n" "${YELLOW}[+]${NC} Cleaning up..."
-printf "%b" "${GRAY}"
-sudo apt-get autoclean
-printf "%b" "${NC}"
+ printf "%b\n" "${YELLOW}[+]${NC} Cleaning up..."
+ sudo apt-get autoclean
+ printf "%b" "${NC}"
+fi
if command -v flatpak >/dev/null 2>&1; then
printf "%b\n" "${YELLOW}[+]${NC} Updating flatpak packages..."
- printf "%b" "${GRAY}"
flatpak update
flatpak uninstall --unused --delete-data
printf "%b" "${NC}"
diff --git a/scripts/volume b/scripts/volume
deleted file mode 100755
index e314f5cf..00000000
--- a/scripts/volume
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-# Prints the current volume or if muted.
-
-vol="$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
-
-# If muted, print and exit.
-[ "$vol" != "${vol%\[MUTED\]}" ] && echo " " && exit
-
-vol="${vol#Volume: }"
-
-split() {
- # For ommiting the . without calling and external program.
- IFS=$2
- set -- $1
- printf '%s' "$@"
-}
-
-vol="$(printf "%.0f" "$(split "$vol" ".")")"
-
-case $1 in
-$((vol >= 70))) icon=" " ;;
-$((vol >= 30))) icon=" " ;;
-$((vol >= 1))) icon=" " ;;
-*) echo " " && exit ;;
-esac
-
-echo "$icon$vol%"