diff --git a/.install/general-packages.sh b/.install/general-packages.sh new file mode 100644 index 0000000..6b57db4 --- /dev/null +++ b/.install/general-packages.sh @@ -0,0 +1,48 @@ +packagesPacman=( + "pacman-contrib" + "vim" + "wget" + "unzip" + "alacritty" + "rofi" + "chromium" + "dunst" + "starship" + "neovim" + "mpv" + "freerdp" + "xfce4-power-manager" + "thunar" + "mousepad" + "ttf-font-awesome" + "otf-font-awesome" + "ttf-fira-sans" + "ttf-fira-code" + "ttf-firacode-nerd" + "figlet" + "vlc" + "eza" + "python-pip" + "python-psutil" + "python-rich" + "python-click" + "pavucontrol" + "tumbler" + "xautolock" + "blueman" + "papirus-icon-theme" + "polkit-gnome" + "qalculate-gtk" + "brightnessctl" + "gum" + "man-pages" + "xdg-desktop-portal" +); + +packagesYay=( + "pfetch" + "bibata-cursor-theme" + "trizen" + "pacseek" + "sddm-sugar-candy-git" +); diff --git a/.install/general.sh b/.install/general.sh new file mode 100644 index 0000000..5557c93 --- /dev/null +++ b/.install/general.sh @@ -0,0 +1,3 @@ +echo -e "${GREEN}" +figlet "General" +echo -e "${NONE}" \ No newline at end of file diff --git a/.install/hyprland-packages.sh b/.install/hyprland-packages.sh index b3ff204..fbba1da 100644 --- a/.install/hyprland-packages.sh +++ b/.install/hyprland-packages.sh @@ -1,38 +1,5 @@ packagesPacman=( - "pacman-contrib" - "wget" - "unzip" - "alacritty" - "rofi" - "chromium" - "dunst" - "starship" - "neovim" - "mpv" - "freerdp" - "xfce4-power-manager" - "thunar" - "mousepad" - "ttf-font-awesome" - "otf-font-awesome" - "ttf-fira-sans" - "ttf-fira-code" - "ttf-firacode-nerd" - "figlet" - "vlc" - "eza" - "python-pip" - "python-psutil" - "python-rich" - "python-click" - "pavucontrol" - "tumbler" - "xautolock" - "blueman" - "papirus-icon-theme" - "polkit-gnome" "hyprland" - "xdg-desktop-portal" "xdg-desktop-portal-hyprland" "waybar" "grim" @@ -40,20 +7,11 @@ packagesPacman=( "swayidle" "swappy" "cliphist" - "qalculate-gtk" - "brightnessctl" - "gum" - "man-pages" ); packagesYay=( - "pfetch" - "bibata-cursor-theme" - "trizen" "swww" "swaylock-effects-git" "wlogout" "wlr-randr" - "pacseek" - "sddm-sugar-candy-git" ); diff --git a/.install/library.sh b/.install/library.sh index 5826d45..b420282 100755 --- a/.install/library.sh +++ b/.install/library.sh @@ -160,3 +160,73 @@ _isKVM() { echo 1 fi } + +# _replaceInFile $startMarket $endMarker $customtext $targetFile +_replaceInFile() { + + # Set function parameters + start_string=$1 + end_string=$2 + new_string="$3" + file_path="$4" + + # Counters + start_line_counter=0 + end_line_counter=0 + start_found=0 + end_found=0 + + if [ -f $file_path ] ;then + + # Detect Start String + while read -r line + do + ((start_line_counter++)) + if [[ $line = *$start_string* ]]; then + # echo "Start found in $start_line_counter" + start_found=$start_line_counter + break + fi + done < "$file_path" + + # Detect End String + while read -r line + do + ((end_line_counter++)) + if [[ $line = *$end_string* ]]; then + # echo "End found in $end_line_counter" + end_found=$end_line_counter + break + fi + done < "$file_path" + + # Check that deliminters exists + if [[ "$start_found" == "0" ]] ;then + echo "ERROR: Start deliminter not found." + sleep 2 + fi + if [[ "$end_found" == "0" ]] ;then + echo "ERROR: End deliminter not found." + sleep 2 + fi + + # Replace text between delimiters + if [[ ! "$start_found" == "0" ]] && [[ ! "$end_found" == "0" ]] && [ "$start_found" -le "$end_found" ] ;then + # Remove the old line + ((start_found++)) + + if [ ! "$start_found" == "$end_found" ] ;then + ((end_found--)) + sed -i "$start_found,$end_found d" $file_path + fi + # Add the new line + sed -i "$start_found i $new_string" $file_path + else + echo "ERROR: Delimiters syntax." + sleep 2 + fi + else + echo "ERROR: Target file not found." + sleep 2 + fi +} diff --git a/.install/qtile-packages.sh b/.install/qtile-packages.sh index 8a11be6..d49a249 100644 --- a/.install/qtile-packages.sh +++ b/.install/qtile-packages.sh @@ -1,56 +1,13 @@ packagesPacman=( - "pacman-contrib" - "wget" - "unzip" - "alacritty" - "rofi" - "chromium" - "nitrogen" - "dunst" - "starship" - "neovim" - "mpv" - "freerdp" - "xfce4-power-manager" - "thunar" - "mousepad" - "ttf-font-awesome" - "otf-font-awesome" - "ttf-fira-sans" - "ttf-fira-code" - "ttf-firacode-nerd" - "figlet" - "vlc" - "eza" - "python-pip" - "python-psutil" - "python-rich" - "python-click" - "xdg-desktop-portal" - "pavucontrol" - "tumbler" - "xautolock" - "blueman" - "papirus-icon-theme" - "polkit-gnome" "qtile" "polybar" "picom" "scrot" "slock" - "qalculate-gtk" - "brightnessctl" - "gum" "xorg" "xorg-xinit" - "man-pages" ); packagesYay=( - "pfetch" - "bibata-cursor-theme" - "trizen" "qtile-extras" - "pacseek" - "sddm-sugar-candy-git" ); diff --git a/.install/restore.sh b/.install/restore.sh index 6caa667..e28f2c9 100755 --- a/.install/restore.sh +++ b/.install/restore.sh @@ -191,6 +191,62 @@ echo -e "${NONE}" echo "" _showRestoreOptions - + + # Restore Waybar Workspaces + targetFile="$HOME/dotfiles-versions/$version/waybar/modules.json" + settingsFile="$HOME/dotfiles/.settings/waybar_workspaces" + if [ -f $settingsFile ] ;then + startMarker="START WORKSPACE" + endMarker="END WORKSPACES" + customtext="$(cat $settingsFile)" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile" + echo "Waybar Workspaces restored." + fi + + # Restore Waybar Appslabel + targetFile="$HOME/dotfiles-versions/$version/waybar/modules.json" + settingsFile="$HOME/dotfiles/.settings/waybar_appslabel" + if [ -f $settingsFile ] ;then + startMarker="START APPS LABEL" + endMarker="END APPS LABEL" + customtext="$(cat $settingsFile)" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile" + echo "Waybar Appslabel restored." + fi + + # Restore Waybar Bluetooth + targetFile1="$HOME/dotfiles-versions/$version/waybar/themes/ml4w/config" + targetFile2="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-blur/config" + targetFile3="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-blur-bottom/config" + targetFile4="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-bottom/config" + settingsFile="$HOME/dotfiles/.settings/waybar_bluetooth" + if [ -f $settingsFile ] ;then + startMarker="START BT TOOGLE" + endMarker="END BT TOOGLE" + customtext="$(cat $settingsFile)" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile1" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile2" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile3" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile4" + echo "Waybar Bluetooth restored." + fi + + # Restore Waybar Systray + targetFile1="$HOME/dotfiles-versions/$version/waybar/themes/ml4w/config" + targetFile2="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-blur/config" + targetFile3="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-blur-bottom/config" + targetFile4="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-bottom/config" + settingsFile="$HOME/dotfiles/.settings/waybar_systray" + if [ -f $settingsFile ] ;then + startMarker="START TRAY TOOGLE" + endMarker="END TRAY TOOGLE" + customtext="$(cat $settingsFile)" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile1" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile2" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile3" + _replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile4" + echo "Waybar Systray restored." + fi + echo "" fi diff --git a/hypr/settings/.library/library.sh b/hypr/settings/.library/library.sh index 51f255c..95202b3 100644 --- a/hypr/settings/.library/library.sh +++ b/hypr/settings/.library/library.sh @@ -197,19 +197,82 @@ _writeConf() { # _replaceInFile $startMarket $endMarker $customtext $targetFile _replaceInFile() { - if grep -s "$1" $4 && grep -s "$2" $4 ;then - sed -i '/'"$1"'/,/'"$2"'/ { - //!d - /'"$1"'/a\ - '"$3"' - }' $4 + + # Set function parameters + start_string=$1 + end_string=$2 + new_string="$3" + file_path=$4 + + # Counters + start_line_counter=0 + end_line_counter=0 + start_found=0 + end_found=0 + + if [ -f $file_path ] ;then + + # Detect Start String + while read -r line + do + ((start_line_counter++)) + if [[ $line = *$start_string* ]]; then + # echo "Start found in $start_line_counter" + start_found=$start_line_counter + break + fi + done < "$file_path" + + # Detect End String + while read -r line + do + ((end_line_counter++)) + if [[ $line = *$end_string* ]]; then + # echo "End found in $end_line_counter" + end_found=$end_line_counter + break + fi + done < "$file_path" + + # Check that deliminters exists + if [[ "$start_found" == "0" ]] ;then + echo "ERROR: Start deliminter not found." + sleep 2 + fi + if [[ "$end_found" == "0" ]] ;then + echo "ERROR: End deliminter not found." + sleep 2 + fi + + # Replace text between delimiters + if [[ ! "$start_found" == "0" ]] && [[ ! "$end_found" == "0" ]] && [ "$start_found" -le "$end_found" ] ;then + # Remove the old line + ((start_found++)) + + if [ ! "$start_found" == "$end_found" ] ;then + ((end_found--)) + sed -i "$start_found,$end_found d" $file_path + fi + # Add the new line + sed -i "$start_found i $new_string" $file_path + else + echo "ERROR: Delimiters syntax." + sleep 2 + fi else - echo "ERROR: $1 and/or $2 not found in $4" + echo "ERROR: Target file not found." sleep 2 - _goBack fi } +# _writeSettings $settingsFile $customtext +_writeSettings() { + if [ ! -f $1 ] ;then + touch $1 + fi + echo "$2" > $1 +} + # Return the version of the hyprland-settings script _getVersion() { echo $version diff --git a/hypr/settings/modules/waybar/appslabel/module.sh b/hypr/settings/modules/waybar/appslabel/module.sh index 554a8d2..4383aff 100755 --- a/hypr/settings/modules/waybar/appslabel/module.sh +++ b/hypr/settings/modules/waybar/appslabel/module.sh @@ -5,10 +5,11 @@ echo "Define the label of the Apps Starter" # Define File targetFile="$HOME/dotfiles/waybar/modules.json" +settingsFile="$HOME/dotfiles/.settings/waybar_appslabel" # Define Markers -startMarker="\/\/ START APPS LABEL" -endMarker="\/\/ END APPS LABEL" +startMarker="START APPS LABEL" +endMarker="END APPS LABEL" # Define Replacement Template customtemplate="\"format\": \"VALUE\"," @@ -20,7 +21,8 @@ if [ ! -z $customvalue ]; then # Replace in Template customtext="${customtemplate/VALUE/"$customvalue"}" _replaceInFile $startMarker $endMarker $customtext $targetFile - + _writeSettings $settingsFile $customtext + # Reload Waybar setsid $HOME/dotfiles/waybar/launch.sh 1>/dev/null 2>&1 & _goBack diff --git a/hypr/settings/modules/waybar/bluetooth/config.sh b/hypr/settings/modules/waybar/bluetooth/config.sh index 615fc47..3e547d2 100644 --- a/hypr/settings/modules/waybar/bluetooth/config.sh +++ b/hypr/settings/modules/waybar/bluetooth/config.sh @@ -1,2 +1,2 @@ -name="Toggle Bluetooth" +name="Show/Hide Bluetooth" order=1 diff --git a/hypr/settings/modules/waybar/bluetooth/module.sh b/hypr/settings/modules/waybar/bluetooth/module.sh index 687d1c9..42514e2 100755 --- a/hypr/settings/modules/waybar/bluetooth/module.sh +++ b/hypr/settings/modules/waybar/bluetooth/module.sh @@ -8,37 +8,27 @@ targetFile1="$HOME/dotfiles/waybar/themes/ml4w/config" targetFile2="$HOME/dotfiles/waybar/themes/ml4w-blur/config" targetFile3="$HOME/dotfiles/waybar/themes/ml4w-blur-bottom/config" targetFile4="$HOME/dotfiles/waybar/themes/ml4w-bottom/config" - -if [ ! -f $targetFile1 ] || [ ! -f $targetFile2 ] || [ ! -f $targetFile3 ] || [ ! -f $targetFile4 ] ;then - echo "ERROR: Target file not found." - sleep 2 - _goBack -fi +settingsFile="$HOME/dotfiles/.settings/waybar_bluetooth" # Define Markers -startMarker="\/\/ START BT TOOGLE" -endMarker="\/\/ END BT TOOGLE" - -# Define Replacement Template -customtemplate="VALUE\"bluetooth\"," +startMarker="START BT TOOGLE" +endMarker="END BT TOOGLE" # Select Value customvalue=$(gum choose "SHOW" "HIDE") if [ ! -z $customvalue ]; then if [ "$customvalue" == "SHOW" ] ;then - customvalue="" + customtext=" \"bluetooth\"," else - customvalue="//" + customtext=" \/\/\"bluetooth\"," fi - # Replace in Template - customtext="${customtemplate/VALUE/"$customvalue"}" - _replaceInFile $startMarker $endMarker $customtext $targetFile1 _replaceInFile $startMarker $endMarker $customtext $targetFile2 _replaceInFile $startMarker $endMarker $customtext $targetFile3 _replaceInFile $startMarker $endMarker $customtext $targetFile4 + _writeSettings $settingsFile $customtext # Reload Waybar setsid $HOME/dotfiles/waybar/launch.sh 1>/dev/null 2>&1 & diff --git a/hypr/settings/modules/waybar/date/module.sh b/hypr/settings/modules/waybar/date/module.sh index 4c0be33..fe6ee91 100755 --- a/hypr/settings/modules/waybar/date/module.sh +++ b/hypr/settings/modules/waybar/date/module.sh @@ -4,6 +4,7 @@ _getHeader "$name" "$author" echo "Define the date format for the clock module. Default: {:%Y-%m-%d}" # Define File targetFile="$HOME/dotfiles/waybar/modules.json" +settingsFile="$HOME/dotfiles/.settings/waybar_date" # Define Markers startMarker="\/\/ START CLOCK FORMAT" @@ -20,9 +21,11 @@ if [ ! -z $customvalue ]; then customtext="${customtemplate/VALUE/"$customvalue"}" _replaceInFile $startMarker $endMarker $customtext $targetFile + _writeSettings $settingsFile $customtext # Reload Waybar setsid $HOME/dotfiles/waybar/launch.sh 1>/dev/null 2>&1 & + _goBack else echo "ERROR: Define a value." sleep 2 diff --git a/hypr/settings/modules/waybar/systray/config.sh b/hypr/settings/modules/waybar/systray/config.sh index 913073e..68ad002 100644 --- a/hypr/settings/modules/waybar/systray/config.sh +++ b/hypr/settings/modules/waybar/systray/config.sh @@ -1,2 +1,2 @@ -name="Toggle Systray" +name="Show/Hide Systray" order=1 diff --git a/hypr/settings/modules/waybar/systray/module.sh b/hypr/settings/modules/waybar/systray/module.sh index 0586d79..a607f2f 100755 --- a/hypr/settings/modules/waybar/systray/module.sh +++ b/hypr/settings/modules/waybar/systray/module.sh @@ -8,37 +8,27 @@ targetFile1="$HOME/dotfiles/waybar/themes/ml4w/config" targetFile2="$HOME/dotfiles/waybar/themes/ml4w-blur/config" targetFile3="$HOME/dotfiles/waybar/themes/ml4w-blur-bottom/config" targetFile4="$HOME/dotfiles/waybar/themes/ml4w-bottom/config" - -if [ ! -f $targetFile1 ] || [ ! -f $targetFile2 ] || [ ! -f $targetFile3 ] || [ ! -f $targetFile4 ] ;then - echo "ERROR: Target file not found." - sleep 2 - _goBack -fi +settingsFile="$HOME/dotfiles/.settings/waybar_systray" # Define Markers -startMarker="\/\/ START TRAY TOOGLE" -endMarker="\/\/ END TRAY TOOGLE" - -# Define Replacement Template -customtemplate="VALUE\"tray\"," +startMarker="START TRAY TOOGLE" +endMarker="END TRAY TOOGLE" # Select Value customvalue=$(gum choose "SHOW" "HIDE") if [ ! -z $customvalue ]; then if [ "$customvalue" == "SHOW" ] ;then - customvalue="" + customtext=" \"tray\"," else - customvalue="//" + customtext=" \/\/\"tray\"," fi - # Replace in Template - customtext="${customtemplate/VALUE/"$customvalue"}" - _replaceInFile $startMarker $endMarker $customtext $targetFile1 _replaceInFile $startMarker $endMarker $customtext $targetFile2 _replaceInFile $startMarker $endMarker $customtext $targetFile3 _replaceInFile $startMarker $endMarker $customtext $targetFile4 + _writeSettings $settingsFile $customtext # Reload Waybar setsid $HOME/dotfiles/waybar/launch.sh 1>/dev/null 2>&1 & diff --git a/hypr/settings/modules/waybar/workspaces/module.sh b/hypr/settings/modules/waybar/workspaces/module.sh index 80dd5cf..3a81216 100755 --- a/hypr/settings/modules/waybar/workspaces/module.sh +++ b/hypr/settings/modules/waybar/workspaces/module.sh @@ -3,10 +3,11 @@ _getHeader "$name" "$author" # Define File targetFile="$HOME/dotfiles/waybar/modules.json" +settingsFile="$HOME/dotfiles/.settings/waybar_workspaces" # Define Markers -startMarker="\/\/ START WORKSPACE" -endMarker="\/\/ END WORKSPACES" +startMarker="START WORKSPACE" +endMarker="END WORKSPACES" # Define Replacement Template customtemplate="\"*\": VALUE" @@ -14,28 +15,17 @@ customtemplate="\"*\": VALUE" # Select Value customvalue=$(gum choose 5 6 7 8 9 10) if [ ! -z $customvalue ] ;then -# Replace in Template -customtext="${customtemplate/VALUE/"$customvalue"}" -# Ensure that markers are in target file -if grep -s "$startMarker" $targetFile && grep -s "$endMarker" $targetFile; then + # Replace in Template + customtext="${customtemplate/VALUE/"$customvalue"}" - # Write into File - sed -i '/'"$startMarker"'/,/'"$endMarker"'/ { - //!d - /'"$startMarker"'/a\ - '"$customtext"' - }' $targetFile + _replaceInFile $startMarker $endMarker $customtext $targetFile + _writeSettings $settingsFile $customtext # Reload Waybar setsid $HOME/dotfiles/waybar/launch.sh 1>/dev/null 2>&1 & _goBack -else - echo "ERROR: Marker not found." - sleep 2 - _goBack -fi else _goBack fi diff --git a/install.sh b/install.sh index 32b3058..b2ebd9c 100755 --- a/install.sh +++ b/install.sh @@ -40,6 +40,10 @@ source .install/preparation.sh source .install/profile.sh source .install/yay.sh source .install/installer.sh +source .install/general.sh +source .install/general-packages.sh +source .install/install-packages.sh + if [[ $profile == *"Hyprland"* ]]; then source .install/hyprland.sh source .install/hyprland-packages.sh