mirror of
https://github.com/ChrisTitusTech/linutil.git
synced 2024-12-25 04:49:44 +00:00
commit
689ac0e546
152
Cargo.lock
generated
152
Cargo.lock
generated
|
@ -20,21 +20,6 @@ version = "0.2.18"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
|
||||
|
||||
[[package]]
|
||||
name = "android-tzdata"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
|
||||
|
||||
[[package]]
|
||||
name = "android_system_properties"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anstream"
|
||||
version = "0.6.14"
|
||||
|
@ -114,12 +99,6 @@ version = "2.5.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
|
||||
|
||||
[[package]]
|
||||
name = "cassowary"
|
||||
version = "0.3.0"
|
||||
|
@ -135,32 +114,12 @@ dependencies = [
|
|||
"rustversion",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
|
||||
dependencies = [
|
||||
"android-tzdata",
|
||||
"iana-time-zone",
|
||||
"js-sys",
|
||||
"num-traits",
|
||||
"wasm-bindgen",
|
||||
"windows-targets 0.52.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.16"
|
||||
|
@ -220,12 +179,6 @@ dependencies = [
|
|||
"static_assertions",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
|
||||
|
||||
[[package]]
|
||||
name = "crossterm"
|
||||
version = "0.27.0"
|
||||
|
@ -327,29 +280,6 @@ dependencies = [
|
|||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone"
|
||||
version = "0.1.60"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"core-foundation-sys",
|
||||
"iana-time-zone-haiku",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"windows-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone-haiku"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "include_dir"
|
||||
version = "0.7.4"
|
||||
|
@ -409,15 +339,6 @@ version = "1.0.11"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.69"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
|
||||
dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
version = "1.4.0"
|
||||
|
@ -502,15 +423,6 @@ dependencies = [
|
|||
"pin-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.19.0"
|
||||
|
@ -959,7 +871,6 @@ dependencies = [
|
|||
name = "tui"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"clap",
|
||||
"crossterm",
|
||||
"ego-tree",
|
||||
|
@ -1065,60 +976,6 @@ version = "0.11.0+wasi-snapshot-preview1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"wasm-bindgen-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-backend"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"log",
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
|
||||
|
||||
[[package]]
|
||||
name = "which"
|
||||
version = "6.0.3"
|
||||
|
@ -1153,15 +1010,6 @@ version = "0.4.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows-core"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.48.0"
|
||||
|
|
|
@ -5,7 +5,6 @@ makeDWM() {
|
|||
cd "$HOME" && git clone https://github.com/ChrisTitusTech/dwm-titus.git # CD to Home directory to install dwm-titus
|
||||
# This path can be changed (e.g. to linux-toolbox directory)
|
||||
cd dwm-titus/ # Hardcoded path, maybe not the best.
|
||||
$ESCALATION_TOOL ./setup.sh # Run setup
|
||||
$ESCALATION_TOOL make clean install # Run make clean install
|
||||
}
|
||||
|
||||
|
@ -13,15 +12,294 @@ setupDWM() {
|
|||
echo "Installing DWM-Titus if not already installed"
|
||||
case "$PACKAGER" in # Install pre-Requisites
|
||||
pacman)
|
||||
$ESCALATION_TOOL "$PACKAGER" -S --needed --noconfirm base-devel libx11 libxinerama libxft imlib2
|
||||
$ESCALATION_TOOL "$PACKAGER" -S --needed --noconfirm base-devel libx11 libxinerama libxft imlib2 libxcb
|
||||
;;
|
||||
apt)
|
||||
$ESCALATION_TOOL "$PACKAGER" install -y build-essential libx11-dev libxinerama-dev libxft-dev libimlib2-dev libxcb1-dev
|
||||
;;
|
||||
dnf)
|
||||
$ESCALATION_TOOL "$PACKAGER" groupinstall -y "Development Tools"
|
||||
$ESCALATION_TOOL "$PACKAGER" install -y libx11-devel libxinerama-devel libxft-devel imlib2-devel libxcb-devel
|
||||
;;
|
||||
*)
|
||||
$ESCALATION_TOOL "$PACKAGER" install -y build-essential libx11-dev libxinerama-dev libxft-dev libimlib2-dev
|
||||
echo "Unsupported package manager: $PACKAGER"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
install_nerd_font() {
|
||||
FONT_DIR="$HOME/.local/share/fonts"
|
||||
FONT_ZIP="$FONT_DIR/Meslo.zip"
|
||||
FONT_URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Meslo.zip"
|
||||
FONT_INSTALLED=$(fc-list | grep -i "Meslo")
|
||||
|
||||
# Check if Meslo Nerd-font is already installed
|
||||
if [ -n "$FONT_INSTALLED" ]; then
|
||||
echo "Meslo Nerd-fonts are already installed."
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Installing Meslo Nerd-fonts"
|
||||
|
||||
# Create the fonts directory if it doesn't exist
|
||||
if [ ! -d "$FONT_DIR" ]; then
|
||||
mkdir -p "$FONT_DIR" || {
|
||||
echo "Failed to create directory: $FONT_DIR"
|
||||
return 1
|
||||
}
|
||||
else
|
||||
echo "$FONT_DIR exists, skipping creation."
|
||||
fi
|
||||
|
||||
# Check if the font zip file already exists
|
||||
if [ ! -f "$FONT_ZIP" ]; then
|
||||
# Download the font zip file
|
||||
wget -P "$FONT_DIR" "$FONT_URL" || {
|
||||
echo "Failed to download Meslo Nerd-fonts from $FONT_URL"
|
||||
return 1
|
||||
}
|
||||
else
|
||||
echo "Meslo.zip already exists in $FONT_DIR, skipping download."
|
||||
fi
|
||||
|
||||
# Unzip the font file if it hasn't been unzipped yet
|
||||
if [ ! -d "$FONT_DIR/Meslo" ]; then
|
||||
unzip "$FONT_ZIP" -d "$FONT_DIR" || {
|
||||
echo "Failed to unzip $FONT_ZIP"
|
||||
return 1
|
||||
}
|
||||
else
|
||||
echo "Meslo font files already unzipped in $FONT_DIR, skipping unzip."
|
||||
fi
|
||||
|
||||
# Remove the zip file
|
||||
rm "$FONT_ZIP" || {
|
||||
echo "Failed to remove $FONT_ZIP"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Rebuild the font cache
|
||||
fc-cache -fv || {
|
||||
echo "Failed to rebuild font cache"
|
||||
return 1
|
||||
}
|
||||
|
||||
echo "Meslo Nerd-fonts installed successfully"
|
||||
}
|
||||
|
||||
picom_animations() {
|
||||
# Clone the repository in the home/build directory
|
||||
mkdir -p ~/build
|
||||
if [ ! -d ~/build/picom ]; then
|
||||
if ! git clone https://github.com/FT-Labs/picom.git ~/build/picom; then
|
||||
echo "Failed to clone the repository"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
echo "Repository already exists, skipping clone"
|
||||
fi
|
||||
|
||||
cd ~/build/picom || { echo "Failed to change directory to picom"; return 1; }
|
||||
|
||||
# Build the project
|
||||
if ! meson setup --buildtype=release build; then
|
||||
echo "Meson setup failed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! ninja -C build; then
|
||||
echo "Ninja build failed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Install the built binary
|
||||
if ! sudo ninja -C build install; then
|
||||
echo "Failed to install the built binary"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Picom animations installed successfully"
|
||||
}
|
||||
|
||||
clone_config_folders() {
|
||||
# Ensure the target directory exists
|
||||
[ ! -d ~/.config ] && mkdir -p ~/.config
|
||||
|
||||
# Iterate over all directories in config/*
|
||||
for dir in config/*/; do
|
||||
# Extract the directory name
|
||||
dir_name=$(basename "$dir")
|
||||
|
||||
# Clone the directory to ~/.config/
|
||||
if [ -d "$dir" ]; then
|
||||
cp -r "$dir" ~/.config/
|
||||
echo "Cloned $dir_name to ~/.config/"
|
||||
else
|
||||
echo "Directory $dir_name does not exist, skipping"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
configure_backgrounds() {
|
||||
# Set the variable BG_DIR to the path where backgrounds will be stored
|
||||
BG_DIR="$HOME/Pictures/backgrounds"
|
||||
|
||||
# Check if the ~/Pictures directory exists
|
||||
if [ ! -d "~/Pictures" ]; then
|
||||
# If it doesn't exist, print an error message and return with a status of 1 (indicating failure)
|
||||
echo "Pictures directory does not exist"
|
||||
mkdir ~/Pictures
|
||||
echo "Directory was created in Home folder"
|
||||
fi
|
||||
|
||||
# Check if the backgrounds directory (BG_DIR) exists
|
||||
if [ ! -d "$BG_DIR" ]; then
|
||||
# If the backgrounds directory doesn't exist, attempt to clone a repository containing backgrounds
|
||||
if ! git clone https://github.com/ChrisTitusTech/nord-background.git ~/Pictures; then
|
||||
# If the git clone command fails, print an error message and return with a status of 1
|
||||
echo "Failed to clone the repository"
|
||||
return 1
|
||||
fi
|
||||
# Rename the cloned directory to 'backgrounds'
|
||||
mv ~/Pictures/nord-background ~/Pictures/backgrounds
|
||||
# Print a success message indicating that the backgrounds have been downloaded
|
||||
echo "Downloaded desktop backgrounds to $BG_DIR"
|
||||
else
|
||||
# If the backgrounds directory already exists, print a message indicating that the download is being skipped
|
||||
echo "Path $BG_DIR exists for desktop backgrounds, skipping download of backgrounds"
|
||||
fi
|
||||
}
|
||||
|
||||
setupDisplayManager() {
|
||||
echo "Setting up Xorg"
|
||||
case "$PACKAGER" in
|
||||
pacman)
|
||||
$ESCALATION_TOOL "$PACKAGER" -S --needed --noconfirm xorg-xinit xorg-server
|
||||
;;
|
||||
apt)
|
||||
$ESCALATION_TOOL "$PACKAGER" install -y xorg xinit
|
||||
;;
|
||||
dnf)
|
||||
$ESCALATION_TOOL "$PACKAGER" install -y xorg-x11-xinit xorg-x11-server-Xorg
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported package manager: $PACKAGER"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
echo "Xorg installed successfully"
|
||||
echo "Setting up Display Manager"
|
||||
currentdm="none"
|
||||
for dm in gdm sddm lightdm; do
|
||||
if systemctl is-active --quiet $dm.service; then
|
||||
currentdm=$dm
|
||||
break
|
||||
fi
|
||||
done
|
||||
echo "Current display manager: $currentdm"
|
||||
if [ "$currentdm" = "none" ]; then
|
||||
DM="sddm"
|
||||
echo "No display manager found, installing $DM"
|
||||
case "$PACKAGER" in
|
||||
pacman)
|
||||
$ESCALATION_TOOL "$PACKAGER" -S --needed --noconfirm $DM
|
||||
;;
|
||||
apt)
|
||||
$ESCALATION_TOOL "$PACKAGER" install -y $DM
|
||||
;;
|
||||
dnf)
|
||||
$ESCALATION_TOOL "$PACKAGER" install -y $DM
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported package manager: $PACKAGER"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
echo "$DM installed successfully"
|
||||
systemctl enable $DM
|
||||
|
||||
# Clear the screen
|
||||
clear
|
||||
|
||||
# Prompt user for auto-login
|
||||
echo "Do you want to enable auto-login?"
|
||||
echo "Use arrow keys or j/k to navigate, Enter to select"
|
||||
options=("Yes" "No")
|
||||
selected=0
|
||||
|
||||
# Function to print menu
|
||||
print_menu() {
|
||||
for i in "${!options[@]}"; do
|
||||
if [ $i -eq $selected ]; then
|
||||
echo "> ${options[$i]}"
|
||||
else
|
||||
echo " ${options[$i]}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Handle user input
|
||||
while true; do
|
||||
print_menu
|
||||
read -rsn1 key
|
||||
case "$key" in
|
||||
$'\x1B') # ESC sequence for arrow keys
|
||||
read -rsn2 key
|
||||
case "$key" in
|
||||
'[A' | 'k') ((selected > 0)) && ((selected--));; # Up arrow or k
|
||||
'[B' | 'j') ((selected < ${#options[@]}-1)) && ((selected++));; # Down arrow or j
|
||||
esac
|
||||
;;
|
||||
'') break;; # Enter key
|
||||
esac
|
||||
clear
|
||||
done
|
||||
|
||||
if [ "${options[$selected]}" = "Yes" ]; then
|
||||
echo "Configuring SDDM for autologin"
|
||||
SDDM_CONF="/etc/sddm.conf"
|
||||
if [ ! -f "$SDDM_CONF" ]; then
|
||||
echo "[Autologin]" | sudo tee -a "$SDDM_CONF"
|
||||
echo "User=$USER" | sudo tee -a "$SDDM_CONF"
|
||||
echo "Session=dwm" | sudo tee -a "$SDDM_CONF"
|
||||
else
|
||||
sudo sed -i '/^\[Autologin\]/d' "$SDDM_CONF"
|
||||
sudo sed -i '/^User=/d' "$SDDM_CONF"
|
||||
sudo sed -i '/^Session=/d' "$SDDM_CONF"
|
||||
echo "[Autologin]" | sudo tee -a "$SDDM_CONF"
|
||||
echo "User=$USER" | sudo tee -a "$SDDM_CONF"
|
||||
echo "Session=dwm" | sudo tee -a "$SDDM_CONF"
|
||||
fi
|
||||
echo "Checking if autologin group exists"
|
||||
if ! getent group autologin > /dev/null; then
|
||||
echo "Creating autologin group"
|
||||
sudo groupadd autologin
|
||||
else
|
||||
echo "Autologin group already exists"
|
||||
fi
|
||||
echo "Adding user with UID 1000 to autologin group"
|
||||
USER_UID_1000=$(getent passwd 1000 | cut -d: -f1)
|
||||
if [ -n "$USER_UID_1000" ]; then
|
||||
sudo usermod -aG autologin "$USER_UID_1000"
|
||||
echo "User $USER_UID_1000 added to autologin group"
|
||||
else
|
||||
echo "No user with UID 1000 found - Auto login not possible"
|
||||
fi
|
||||
else
|
||||
echo "Auto-login configuration skipped"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
checkEnv
|
||||
checkEscalationTool
|
||||
setupDisplayManager
|
||||
setupDWM
|
||||
makeDWM
|
||||
install_nerd_font
|
||||
clone_config_folders
|
||||
configure_backgrounds
|
Loading…
Reference in New Issue
Block a user