Compare commits

..

No commits in common. "f4dd412733049eda1357c36efc0e8544e01e046a" and "65b334cc99b3fb8ecb4c3c73373aa8e65fdfd616" have entirely different histories.

156 changed files with 1681 additions and 1107 deletions

View File

@ -38,7 +38,6 @@ alias winclass="xprop | grep 'CLASS'"
alias dot="cd ~/dotfiles" alias dot="cd ~/dotfiles"
alias cleanup='~/dotfiles/scripts/cleanup.sh' alias cleanup='~/dotfiles/scripts/cleanup.sh'
alias ml4w='~/dotfiles/apps/ML4W_Welcome-x86_64.AppImage' alias ml4w='~/dotfiles/apps/ML4W_Welcome-x86_64.AppImage'
alias ml4w-settings='~/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage'
# ----------------------------------------------------- # -----------------------------------------------------
# Window Managers # Window Managers
@ -59,7 +58,6 @@ alias gpl="git pull"
alias gst="git stash" alias gst="git stash"
alias gsp="git stash; git pull" alias gsp="git stash; git pull"
alias gcheck="git checkout" alias gcheck="git checkout"
alias gcredential="git config credential.helper store"
# ----------------------------------------------------- # -----------------------------------------------------
# SCRIPTS # SCRIPTS

View File

@ -1,24 +0,0 @@
#!/bin/bash
# ------------------------------------------------------
# Apps Installation
# ------------------------------------------------------
echo -e "${GREEN}"
figlet "ML4W Apps"
echo -e "${NONE}"
if [ ! -d $HOME/.local/share/applications/ ] ;then
mkdir $HOME/.local/share/applications
echo ":: $HOME/.local/share/applications created"
fi
sed -i "s|HOME|${HOME}|g" $HOME/dotfiles/apps/ml4w-welcome.desktop
cp $HOME/dotfiles/apps/ml4w-welcome.desktop $HOME/.local/share/applications
echo ":: ML4W Welcome App installed successfully"
sed -i "s|HOME|${HOME}|g" $HOME/dotfiles/apps/ml4w-dotfiles-settings.desktop
cp $HOME/dotfiles/apps/ml4w-dotfiles-settings.desktop $HOME/.local/share/applications
echo ":: ML4W Dotfiles Settings App installed successfully"
echo

View File

@ -15,29 +15,45 @@ fi
# Check for running NetworkManager.service # Check for running NetworkManager.service
if [[ $(systemctl list-units --all -t service --full --no-legend "NetworkManager.service" | sed 's/^\s*//g' | cut -f1 -d' ') == "NetworkManager.service" ]];then if [[ $(systemctl list-units --all -t service --full --no-legend "NetworkManager.service" | sed 's/^\s*//g' | cut -f1 -d' ') == "NetworkManager.service" ]];then
echo ":: NetworkManager.service already running." echo "NetworkManager.service already running."
else else
sudo systemctl enable NetworkManager.service sudo systemctl enable NetworkManager.service
sudo systemctl start NetworkManager.service sudo systemctl start NetworkManager.service
echo ":: NetworkManager.service activated successfully." echo "NetworkManager.service activated successfully."
fi fi
# Check for running bluetooth.service # Check for running bluetooth.service
if [[ $(systemctl list-units --all -t service --full --no-legend "bluetooth.service" | sed 's/^\s*//g' | cut -f1 -d' ') == "bluetooth.service" ]];then if [[ $(systemctl list-units --all -t service --full --no-legend "bluetooth.service" | sed 's/^\s*//g' | cut -f1 -d' ') == "bluetooth.service" ]];then
echo ":: bluetooth.service already running." echo "bluetooth.service already running."
else else
sudo systemctl enable bluetooth.service sudo systemctl enable bluetooth.service
sudo systemctl start bluetooth.service sudo systemctl start bluetooth.service
echo ":: bluetooth.service activated successfully." echo "bluetooth.service activated successfully."
fi fi
if [ -d ~/dotfiles/hypr/settings/ ] ;then if [ -d ~/dotfiles/hypr/settings/modules/waybar/defaults ] ;then
rm -rf ~/dotfiles/hypr/settings rm -rf ~/dotfiles/hypr/settings/modules/waybar/defaults
echo ":: ~/dotfiles/hypr/settings removed." echo "~/dotfiles/hypr/settings/modules/waybar/defaults removed."
fi
if [ -d ~/dotfiles/hypr/settings/modules/sddm ] ;then
rm -rf ~/dotfiles/hypr/settings/modules/sddm
echo "~/dotfiles/hypr/settings/modules/sddm removed."
fi
if [ -d ~/dotfiles/hypr/settings/modules/appearance/wallpaper ] ;then
rm -rf ~/dotfiles/hypr/settings/modules/appearance/wallpaper
echo "~/dotfiles/hypr/settings/modules/appearance/wallpaper removed."
fi
if [ -d ~/dotfiles/hypr/settings/modules/system/swaylock ] ;then
rm -rf ~/dotfiles/hypr/settings/modules/system/swaylock
echo "~/dotfiles/hypr/settings/modules/system/swaylock removed."
fi fi
# Create default folder structure # Create default folder structure
xdg-user-dirs-update xdg-user-dirs-update
echo "Default folders created..."
echo echo
echo ":: Cleanup done." echo "Cleanup done."

View File

@ -2,7 +2,9 @@
# Confirm Start # Confirm Start
# ------------------------------------------------------ # ------------------------------------------------------
echo "IMPORTANT: Please make sure that your system and your packages are up to date (sudo pacman -Syu or yay)."
echo "You can cancel the installation at any time with CTRL + C" echo "You can cancel the installation at any time with CTRL + C"
echo "If you have already installed a window manager like sway, please backup your .config folder."
SCRIPT=$(realpath "$0") SCRIPT=$(realpath "$0")
SCRIPTPATH=$(dirname "$SCRIPT") SCRIPTPATH=$(dirname "$SCRIPT")
if [ $SCRIPTPATH = "/home/$USER/dotfiles" ]; then if [ $SCRIPTPATH = "/home/$USER/dotfiles" ]; then
@ -15,21 +17,21 @@ if [ $SCRIPTPATH = "/home/$USER/dotfiles" ]; then
fi fi
fi fi
if [ ! -d ~/dotfiles ];then if [ ! -d ~/dotfiles ];then
if gum confirm "DO YOU WANT TO START THE INSTALLATION OF THE ML4W DOTFILES NOW?" ;then if gum confirm "DO YOU WANT TO START THE INSTALLATION NOW?" ;then
echo "Installation started." echo "Installation started."
elif [ $? -eq 130 ]; then elif [ $? -eq 130 ]; then
exit 130 exit 130
else else
echo ":: Installation canceled." echo "Installation canceled."
exit; exit;
fi fi
else else
if gum confirm "DO YOU WANT TO START THE UPDATE OF YOUR ML4W DOTFILES NOW?" ;then if gum confirm "DO YOU WANT TO START THE UPDATE NOW?" ;then
echo ":: Update started." echo "Update started."
elif [ $? -eq 130 ]; then elif [ $? -eq 130 ]; then
exit 130 exit 130
else else
echo ":: Update canceled." echo "Update canceled."
exit; exit;
fi fi
fi fi

View File

@ -59,7 +59,7 @@ fi
if [ "$dmsel" == "Install sddm" ] ;then if [ "$dmsel" == "Install sddm" ] ;then
disman=0 disman=0
# Try to force the installation of sddm # Try to force the installation of sddm-git
echo "Install sddm" echo "Install sddm"
yay -S --noconfirm sddm sddm-sugar-candy-git --ask 4 yay -S --noconfirm sddm sddm-sugar-candy-git --ask 4

View File

@ -8,11 +8,9 @@ fi
if [ -d ~/dotfiles-versions/$version/vim ]; then if [ -d ~/dotfiles-versions/$version/vim ]; then
_installSymLink vim ~/.config/vim ~/dotfiles/vim/ ~/.config _installSymLink vim ~/.config/vim ~/dotfiles/vim/ ~/.config
fi fi
if [ $neovim == "1" ] ;then
if [ -d ~/dotfiles-versions/$version/nvim ]; then if [ -d ~/dotfiles-versions/$version/nvim ]; then
_installSymLink nvim ~/.config/nvim ~/dotfiles/nvim/ ~/.config _installSymLink nvim ~/.config/nvim ~/dotfiles/nvim/ ~/.config
fi fi
fi
if [ -d ~/dotfiles-versions/$version/starship ]; then if [ -d ~/dotfiles-versions/$version/starship ]; then
_installSymLink starship ~/.config/starship.toml ~/dotfiles/starship/starship.toml ~/.config/starship.toml _installSymLink starship ~/.config/starship.toml ~/dotfiles/starship/starship.toml ~/.config/starship.toml
fi fi
@ -37,5 +35,5 @@ fi
if [ -d ~/dotfiles-versions/$version/swappy ]; then if [ -d ~/dotfiles-versions/$version/swappy ]; then
_installSymLink swappy ~/.config/swappy ~/dotfiles/swappy/ ~/.config _installSymLink swappy ~/.config/swappy ~/dotfiles/swappy/ ~/.config
fi fi
echo ":: Symbolic links created." echo "Symbolic links created."
echo echo

View File

@ -1,16 +0,0 @@
# ------------------------------------------------------
# Neovim
# ------------------------------------------------------
neovim=0
if [ -d ~/dotfiles/nvim ]; then
echo -e "${GREEN}"
figlet "Neovim"
echo -e "${NONE}"
if gum confirm "Do you want to install the ML4W Neovim configuration and overwrite your existing configuration?"; then
echo ":: ML4W Neovim configuration will be installed"
neovim=1
else
rm -rf ~/dotfiles-versions/$version/nvim/
echo ":: Installation of ML4W Neovim configuration skipped."
fi
fi

View File

@ -7,6 +7,7 @@ packagesPacman=(
"wget" "wget"
"unzip" "unzip"
"alacritty" "alacritty"
"rofi"
"chromium" "chromium"
"dunst" "dunst"
"starship" "starship"
@ -48,9 +49,6 @@ packagesPacman=(
"libadwaita" "libadwaita"
"python-pywal" "python-pywal"
"xdg-desktop-portal" "xdg-desktop-portal"
"qalculate-gtk"
"imagemagick"
"guvcview"
); );
packagesYay=( packagesYay=(
@ -58,5 +56,4 @@ packagesYay=(
"bibata-cursor-theme" "bibata-cursor-theme"
"trizen" "trizen"
"pacseek" "pacseek"
"rofi-lbonn-wayland"
); );

View File

@ -13,6 +13,4 @@ packagesYay=(
"wlogout" "wlogout"
"nwg-look" "nwg-look"
"emote" "emote"
"hypridle"
"hyprlock"
); );

View File

@ -35,4 +35,4 @@ fi
if [ -d ~/dotfiles-versions/$version/swappy ]; then if [ -d ~/dotfiles-versions/$version/swappy ]; then
_installSymLink swappy ~/.config/swappy ~/dotfiles/swappy/ ~/.config _installSymLink swappy ~/.config/swappy ~/dotfiles/swappy/ ~/.config
fi fi
echo ":: Symbolic links created." echo "Symbolic links created."

View File

@ -1,18 +0,0 @@
# ------------------------------------------------------
# Reboot
# ------------------------------------------------------
echo -e "${GREEN}"
figlet "Reboot"
echo -e "${NONE}"
echo "A reboot of your system is recommended."
if gum confirm "Do you want to reboot your system now?" ;then
echo ":: Rebooting now ..."
sleep 3
systemctl reboot
elif [ $? -eq 130 ]; then
exit 130
else
echo ":: Reboot skipped"
fi
echo ""

View File

@ -1,53 +0,0 @@
#!/bin/bash
# Remove Rofi Calc
if [[ $(_isInstalledPacman "rofi-calc") == 0 ]]; then
sudo pacman --noconfirm -Rns rofi-calc
echo ":: rofi-calc removed"
echo
fi
# Remove Rofi
if [[ $(_isInstalledPacman "rofi") == 0 ]]; then
sudo pacman --noconfirm -Rns rofi
echo ":: rofi removed"
echo
fi
# Remove Swayidle
if [[ $(_isInstalledPacman "swayidle") == 0 ]]; then
sudo pacman --noconfirm -Rns swayidle
echo ":: swayidle removed"
echo
fi
# Remove Swaylock
if [[ $(_isInstalledYay "swaylock-effects-git") == 0 ]]; then
yay --noconfirm -Rns swaylock-effects-git
echo ":: swaylock removed"
echo
fi
# Remove hypridle-bin
if [[ $(_isInstalledYay "hypridle-git") == 0 ]]; then
yay --noconfirm -Rns hypridle-git
if [ -f /usr/lib/debug/usr/bin/hypridle.debug ] ;then
sudo rm /usr/lib/debug/usr/bin/hypridle.debug
echo ":: /usr/lib/debug/usr/bin/hypridle.debug removed"
fi
echo ":: hypridle-git uninstalled."
echo ":: hypridle can now be installed."
echo
fi
# Remove hypridle-bin
if [[ $(_isInstalledYay "hyprlock-git") == 0 ]]; then
yay --noconfirm -Rns hyprlock-git
if [ -f /usr/lib/debug/usr/bin/hyprlock.debug ] ;then
sudo rm /usr/lib/debug/usr/bin/hyprlock.debug
echo ":: /usr/lib/debug/usr/bin/hyprlock.debug removed"
fi
echo ":: hyprlock-git uninstalled."
echo ":: hyprlock can now be installed."
echo
fi

View File

@ -8,7 +8,7 @@ echo ""
# Check for required packages # Check for required packages
echo ":: Checking that required packages for the installation are installed..." echo ":: Checking that required packages for the installation are installed..."
_installPackagesPacman "rsync" "gum" "figlet" "python"; _installPackagesPacman "rsync" "gum" "figlet";
echo "" echo ""
# Double check rsync # Double check rsync

View File

@ -1,149 +0,0 @@
# __ __ _ _ ___ __ _
# | \/ | | | || \ \ / / _ __ ___ ___| |_ ___ _ __ ___
# | |\/| | | | || |\ \ /\ / / | '__/ _ \/ __| __/ _ \| '__/ _ \
# | | | | |__|__ _\ V V / | | | __/\__ \ || (_) | | | __/
# |_| |_|_____| |_| \_/\_/ |_| \___||___/\__\___/|_| \___|
#
import sys
import subprocess
import os
import json
import pathlib
import shutil
# Get script path
pathname = os.path.dirname(sys.argv[0])
class ML4WRestore:
waybar_themes = [
"ml4w-minimal",
"ml4w",
"ml4w-blur",
"ml4w-blur-bottom",
"ml4w-bottom"
]
defaults = {
"waybar_timeformat": "%H:%M",
"waybar_dateformat": "%a",
"waybar_custom_timedateformat": "",
"waybar_workspaces": 5,
"rofi_bordersize": 3,
"waybar_network": True,
"waybar_chatgpt": True,
"waybar_systray": True,
"waybar_screenlock": True,
"waybar_window": True
}
path_name = pathname # Path of Application
homeFolder = os.path.expanduser('~') # Path to home folder
dotfiles = homeFolder + "/dotfiles/"
settings = {}
def __init__(self):
# Load settings.json
settings_file = open(self.dotfiles + ".settings/settings.json")
settings_arr = json.load(settings_file)
for row in settings_arr:
self.settings[row["key"]] = row["value"]
self.loadSwitchAll("waybar_network","network")
self.loadSwitchAll("waybar_systray","tray")
self.loadSwitchAll("waybar_window","hyprland/window")
self.loadSwitchAll("waybar_screenlock","idle_inhibitor")
self.loadSwitch("waybar_chatgpt","custom/chatgpt")
# Waybar Workspaces
if "waybar_workspaces" in self.settings:
value = int(self.settings["waybar_workspaces"])
text = ' "*": ' + str(value)
self.replaceInFileNext("waybar/modules.json", "// START WORKSPACES", text)
print (":: waybar_workspaces restored")
# Rofi BorderSize
if "rofi_bordersize" in self.settings:
value = int(self.settings["rofi_bordersize"])
text = "* { border-width: " + str(value) + "px; }"
self.overwriteFile(".settings/rofi-border.rasi",text)
print (":: rofi_bordersize restored")
# Time/DateFormat
if "waybar_timeformat" in self.settings:
timeformat = self.settings["waybar_timeformat"]
else:
timeformat = self.defaults["waybar_timeformat"]
if "waybar_dateformat" in self.settings:
dateformat = self.settings["waybar_dateformat"]
else:
dateformat = self.defaults["waybar_dateformat"]
if "waybar_custom_timedateformat" in self.settings:
custom_format = self.settings["waybar_custom_timedateformat"]
else:
custom_format = self.defaults["waybar_custom_timedateformat"]
if custom_format != "":
timedate = ' "format": "{:' + custom_format + '}",'
self.replaceInFileNext("waybar/modules.json", "TIMEDATEFORMAT", timedate)
else:
timedate = ' "format": "{:' + timeformat + ' - ' + dateformat + '}",'
self.replaceInFileNext("waybar/modules.json", "TIMEDATEFORMAT", timedate)
print (":: timedate format restored")
def loadSwitch(self,k,m):
if k in self.settings:
if not self.settings[k]:
self.replaceInFile("waybar/modules.json",'"' + m + '"',' //"' + m + '",')
print (":: " + k + " restored")
def loadSwitchAll(self,k,m):
if k in self.settings:
if not self.settings[k]:
for t in self.waybar_themes:
self.replaceInFile("waybar/themes/" + t + "/config",'"' + m + '"',' //"' + m + '",')
print (":: " + k + " restored")
# Overwrite Text in File
def overwriteFile(self, f, text):
file=open(self.dotfiles + f,"w+")
file.write(text)
file.close()
# Replace Text in File
def replaceInFile(self, f, search, replace):
file = open(self.dotfiles + f, 'r')
lines = file.readlines()
count = 0
found = 0
# Strips the newline character
for l in lines:
count += 1
if search in l:
found = count
if found > 0:
lines[found - 1] = replace + "\n"
with open(self.dotfiles + f, 'w') as file:
file.writelines(lines)
# Replace Text in File
def replaceInFileNext(self, f, search, replace):
file = open(self.dotfiles + f, 'r')
lines = file.readlines()
count = 0
found = 0
# Strips the newline character
for l in lines:
count += 1
if search in l:
found = count
if found > 0:
lines[found] = replace + "\n"
with open(self.dotfiles + f, 'w') as file:
file.writelines(lines)
ml4wrestore = ML4WRestore()

View File

@ -8,7 +8,7 @@ monitorrestored=0
_showRestoreOptions() { _showRestoreOptions() {
echo "The following configurations can be transferred into the new installation." echo "The following configurations can be transferred into the new installation."
echo "(SPACE = select/unselect a profile. RETURN = confirm. ESC/No selection = Skip Restore)" echo "(SPACE = select/unselect a profile. RETURN = confirm. No selection = CANCEL)"
echo "" echo ""
restorelist="" restorelist=""
if [ -f ~/dotfiles/.bashrc ]; then if [ -f ~/dotfiles/.bashrc ]; then
@ -20,13 +20,6 @@ _showRestoreOptions() {
selectedlist+="~/dotfiles/.settings," selectedlist+="~/dotfiles/.settings,"
fi fi
if [[ $profile == *"Hyprland"* ]]; then if [[ $profile == *"Hyprland"* ]]; then
if [ -f ~/dotfiles/hypr/hypridle.conf ]; then
if grep -Fxq "# Version 2.8.3" ~/dotfiles/hypr/hypridle.conf
then
restorelist+="~/dotfiles/hypr/hypridle.conf "
selectedlist+="~/dotfiles/hypr/hypridle.conf,"
fi
fi
if [ -f ~/dotfiles/hypr/conf/custom.conf ]; then if [ -f ~/dotfiles/hypr/conf/custom.conf ]; then
restorelist+="~/dotfiles/hypr/conf/custom.conf " restorelist+="~/dotfiles/hypr/conf/custom.conf "
selectedlist+="~/dotfiles/hypr/conf/custom.conf," selectedlist+="~/dotfiles/hypr/conf/custom.conf,"
@ -75,18 +68,18 @@ _showRestoreOptions() {
echo "Selected to restore:" echo "Selected to restore:"
echo "$restoreselect" echo "$restoreselect"
echo "" echo ""
confirmrestore=$(gum choose "Start restore" "Change restore" "Skip restore") confirmrestore=$(gum choose "Start restore" "Change restore" "Cancel restore")
if [ "$confirmrestore" == "Start restore" ] ;then if [ "$confirmrestore" == "Start restore" ] ;then
_startRestore _startRestore
elif [ "$confirmrestore" == "Change restore" ]; then elif [ "$confirmrestore" == "Change restore" ]; then
_showRestoreOptions _showRestoreOptions
else else
echo ":: Restore skipped." echo "Restore skipped."
return 0 return 0
fi fi
else else
echo "No files selected to restore." echo "No files selected to restore."
confirmrestore=$(gum choose "Change restore" "Skip restore") confirmrestore=$(gum choose "Change restore" "Cancel restore")
if [ -z "${confirmrestore}" ] ;then if [ -z "${confirmrestore}" ] ;then
echo "Installation canceled." echo "Installation canceled."
exit exit
@ -95,7 +88,7 @@ _showRestoreOptions() {
echo "" echo ""
_showRestoreOptions _showRestoreOptions
else else
echo ":: Restore skipped." echo "Restore skipped."
return 0 return 0
fi fi
fi fi
@ -105,74 +98,68 @@ _startRestore() {
if [[ $restoreselect == *"~/dotfiles/.bashrc"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/.bashrc"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/.bashrc ]; then if [ -f ~/dotfiles/.bashrc ]; then
cp ~/dotfiles/.bashrc ~/dotfiles-versions/$version/ cp ~/dotfiles/.bashrc ~/dotfiles-versions/$version/
echo ":: .bashrc restored!" echo ".bashrc restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/.settings"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/.settings"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -d ~/dotfiles/.settings ]; then if [ -d ~/dotfiles/.settings ]; then
rsync -avhp -I ~/dotfiles/.settings/ ~/dotfiles-versions/$version/.settings/ rsync -a -I ~/dotfiles/.settings/ ~/dotfiles-versions/$version/.settings/
echo ":: .settings restored!" echo ".settings restored!"
fi fi
fi fi
if [[ $profile == *"Hyprland"* ]]; then if [[ $profile == *"Hyprland"* ]]; then
if [[ $restoreselect == *"~/dotfiles/hypr/hypridle.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/hypridle.conf ]; then
cp ~/dotfiles/hypr/hypridle.conf ~/dotfiles-versions/$version/hypr/
echo ":: Hyprland hypridle.conf restored!"
fi
fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/custom.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/custom.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/custom.conf ]; then if [ -f ~/dotfiles/hypr/conf/custom.conf ]; then
cp ~/dotfiles/hypr/conf/custom.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/custom.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland custom.conf restored!" echo "Hyprland custom.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/keyboard.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/keyboard.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/keyboard.conf ]; then if [ -f ~/dotfiles/hypr/conf/keyboard.conf ]; then
cp ~/dotfiles/hypr/conf/keyboard.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/keyboard.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland keyboard.conf restored!" echo "Hyprland keyboard.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/monitor.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/monitor.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/monitor.conf ]; then if [ -f ~/dotfiles/hypr/conf/monitor.conf ]; then
cp ~/dotfiles/hypr/conf/monitor.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/monitor.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland monitor.conf restored!" echo "Hyprland monitor.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/keybinding.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/keybinding.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/keybinding.conf ]; then if [ -f ~/dotfiles/hypr/conf/keybinding.conf ]; then
cp ~/dotfiles/hypr/conf/keybinding.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/keybinding.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland keybinding.conf restored!" echo "Hyprland keybinding.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/environment.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/environment.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/environment.conf ]; then if [ -f ~/dotfiles/hypr/conf/environment.conf ]; then
cp ~/dotfiles/hypr/conf/environment.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/environment.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland environment.conf restored!" echo "Hyprland environment.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/windowrule.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/windowrule.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/windowrule.conf ]; then if [ -f ~/dotfiles/hypr/conf/windowrule.conf ]; then
cp ~/dotfiles/hypr/conf/windowrule.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/windowrule.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland windowrule.conf restored!" echo "Hyprland windowrule.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/animation.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/animation.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/animation.conf ]; then if [ -f ~/dotfiles/hypr/conf/animation.conf ]; then
cp ~/dotfiles/hypr/conf/animation.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/animation.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland animation.conf restored!" echo "Hyprland animation.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/decoration.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/decoration.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/decoration.conf ]; then if [ -f ~/dotfiles/hypr/conf/decoration.conf ]; then
cp ~/dotfiles/hypr/conf/decoration.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/decoration.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland decoration.conf restored!" echo "Hyprland decoration.conf restored!"
fi fi
fi fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/window.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/hypr/conf/window.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/hypr/conf/window.conf ]; then if [ -f ~/dotfiles/hypr/conf/window.conf ]; then
cp ~/dotfiles/hypr/conf/window.conf ~/dotfiles-versions/$version/hypr/conf/ cp ~/dotfiles/hypr/conf/window.conf ~/dotfiles-versions/$version/hypr/conf/
echo ":: Hyprland window.conf restored!" echo "Hyprland window.conf restored!"
fi fi
fi fi
fi fi
@ -180,7 +167,7 @@ _startRestore() {
if [[ $restoreselect == *"~/dotfiles/qtile/autostart.sh"* ]] || [[ $restoreselect == *"All"* ]] ; then if [[ $restoreselect == *"~/dotfiles/qtile/autostart.sh"* ]] || [[ $restoreselect == *"All"* ]] ; then
if [ -f ~/dotfiles/qtile/autostart.sh ]; then if [ -f ~/dotfiles/qtile/autostart.sh ]; then
cp ~/dotfiles/qtile/autostart.sh ~/dotfiles-versions/$version/qtile/ cp ~/dotfiles/qtile/autostart.sh ~/dotfiles-versions/$version/qtile/
echo ":: Qtile autostart.sh restored!" echo "Qtile autostart.sh restored!"
fi fi
fi fi
fi fi
@ -189,6 +176,7 @@ _startRestore() {
} }
if [ -d ~/dotfiles ]; then if [ -d ~/dotfiles ]; then
echo -e "${GREEN}" echo -e "${GREEN}"
figlet "Restore" figlet "Restore"
echo -e "${NONE}" echo -e "${NONE}"
@ -197,6 +185,149 @@ if [ -d ~/dotfiles ]; then
echo "PLEASE NOTE: Restoring is not possible with version < 2.6 of the dotfiles." echo "PLEASE NOTE: Restoring is not possible with version < 2.6 of the dotfiles."
echo "In that case, please use the automated backup or create your own backup manually." echo "In that case, please use the automated backup or create your own backup manually."
echo "" echo ""
_showRestoreOptions _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 ChatGPT
targetFile="$HOME/dotfiles/waybar/modules.json"
settingsFile="$HOME/dotfiles/.settings/waybar_chatgpt"
if [ -f $settingsFile ] ;then
startMarker="START CHATGPT TOOGLE"
endMarker="END CHATGPT TOOGLE"
customtext="$(cat $settingsFile)"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile"
echo "Waybar ChatGPT 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"
targetFile5="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-minimal/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"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile5"
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"
targetFile5="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-minimal/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"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile5"
echo "Waybar Systray restored."
fi
# Restore Waybar Network
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"
targetFile5="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-minimal/config"
settingsFile="$HOME/dotfiles/.settings/waybar_network"
if [ -f $settingsFile ] ;then
startMarker="START NETWORK TOOGLE"
endMarker="END NETWORK TOOGLE"
customtext="$(cat $settingsFile)"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile1"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile2"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile3"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile4"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile5"
echo "Waybar Network restored."
fi
# Restore Waybar Idle
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"
targetFile5="$HOME/dotfiles-versions/$version/waybar/themes/ml4w-minimal/config"
settingsFile="$HOME/dotfiles/.settings/waybar_swaylock"
if [ -f $settingsFile ] ;then
startMarker="START IDLE TOOGLE"
endMarker="END IDLE TOOGLE"
customtext="$(cat $settingsFile)"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile1"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile2"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile3"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile4"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile5"
echo "Waybar Idle restored."
fi
# Restore Waybar nmapplet
targetFile="$HOME/dotfiles-versions/$version/hypr/conf/autostart.conf"
settingsFile="$HOME/dotfiles/.settings/waybar_nmapplet"
if [ -f $settingsFile ] ;then
startMarker="START NM APPLET"
endMarker="END NM APPLET"
customtext="$(cat $settingsFile)"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile"
echo "nm-applet restored."
fi
# Restore Keyboard natural_scroll
targetFile="$HOME/dotfiles-versions/$version/hypr/conf/keyboard.conf"
settingsFile="$HOME/dotfiles/.settings/keyboard_naturalscroll"
if [ -f $settingsFile ] ;then
findMarker="natural_scroll"
customtext="$(cat $settingsFile)"
_replaceLineInFile "$findMarker" "$customtext" "$targetFile"
echo "keyboard natural_scroll restored."
fi
# Restore Start Swaylock
targetFile="$HOME/dotfiles/hypr/scripts/lockscreentime.sh"
settingsFile="$HOME/dotfiles/.settings/hypr_lockscreen"
if [ -f $settingsFile ] ;then
startMarker="START SWAYIDLE"
endMarker="END SWAYIDLE"
customtext="$(cat $settingsFile)"
_replaceInFile "$startMarker" "$endMarker" "$customtext" "$targetFile"
echo "Swaylock start restored."
fi
echo "" echo ""
fi fi

32
.install/screenlock.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
echo -e "${GREEN}"
figlet "Screen lock"
echo -e "${NONE}"
if [[ $(_isInstalledYay "hypridle-git") == 1 ]] || [[ $(_isInstalledYay "hyprlock-git") == 1 ]]; then
echo "You can install hypridle and hyprlock to lock your screen automatically."
echo "These are the new standard screen locking packages of the ML4W dotfiles."
echo "Screenlocking will not work anymore if you keep swaylock."
echo "The installation is highly recommended."
if gum confirm "Do you want to install hypridle and hyprlock?" ;then
# Install Hypridle and Hyprlock
yay --noconfirm -S hypridle-git hyprlock-git
# Remove Swayidle
if [[ $(_isInstalledPacman "swayidle") == 0 ]]; then
sudo pacman --noconfirm -Rns swayidle
fi
# Remove Swaylock
if [[ $(_isInstalledYay "swaylock-effects-git") == 0 ]]; then
yay --noconfirm -Rns swaylock-effects-git
fi
fi
else
echo ":: hypridle and hyprlock are already installed."
if gum confirm "Do you want to force a reinstallation to get the latest versions?" ;then
yay --noconfirm -S hypridle-git hyprlock-git
fi
fi
echo

View File

@ -1,15 +0,0 @@
if [ "$restored" == "1" ]; then
echo -e "${GREEN}"
figlet "Restore Settings"
echo -e "${NONE}"
python .install/restore.py
else
if [ -f ~/dotfiles/.settings/settings.json ] ;then
rm ~/dotfiles/.settings/settings.json
echo ":: settings.json removed"
fi
if [ -f ~/.cache/.themestyle.sh ] ;then
rm ~/.cache/.themestyle.sh
echo ":: .themestyle.sh removed"
fi
fi

View File

@ -8,7 +8,6 @@ input {
kb_model = kb_model =
kb_options = kb_options =
numlock_by_default = true numlock_by_default = true
mouse_refocus=false
# For United States # For United States
# kb_layout = us # kb_layout = us

View File

@ -1,11 +0,0 @@
# ------------------------------------------------------
# Update System
# ------------------------------------------------------
echo -e "${GREEN}"
figlet "System Update"
echo -e "${NONE}"
echo "It's important that your system is up-to-date before you proceed with the installation of the ML4W Dotfiles."
if gum confirm "Do you want to update the packages of your system with yay now?" ;then
yay
fi

View File

@ -1 +0,0 @@
50x30

View File

@ -1 +0,0 @@
mousepad

BIN
.settings/lockscreen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

View File

@ -1 +0,0 @@
configuration { font: "Fira Sans 11"; }

View File

@ -1 +1 @@
2.8.3.4 2.8.1

View File

@ -1 +1 @@
2834 281

View File

@ -1,45 +1,3 @@
Version 2.8.3.4
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.3.4
--------------------------------------------------------
- Fix swww gray background issue. New command on autostart.conf is
exec-once = swww init || swww-daemon --format xrgb
- Using blurred version of background image for wlogout
- Add progress bar to dunst notification for wallpaper change and processing
Version 2.8.3.2
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.3.2
--------------------------------------------------------
- Replace rofi with rofi-lbonn-wayland to get rofi wayland support
- Several modifications in the ML4W Welcome App
- ML4W Settings App allows to set between 1 and 10 Hyprland workspaces
Version 2.8.3.1
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.3.1
--------------------------------------------------------
- Add compatibility with Hyprland 0.37.1
Version 2.8.3
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.3
--------------------------------------------------------
- New ML4W Dotfiles Settings App based on GTK4 with many new customization options
- Hyprlock with blurred version of the current wallpaper as background. Blur strength can be adjusted in the ML4W Dotfiles Settings app
- Hyprlock now showing the current time and username
Version 2.8.2.1
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.2
--------------------------------------------------------
- ML4W Welcome app includes more settings for hypridle. Incl. recommendation from Hyprland Wiki
Version 2.8.2
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.2
--------------------------------------------------------
General:
- Force installation of sddm to fix theme issue with sddm-sugar-candy theme. sddm-git doesn't work with themes at the moment
- snapshot.sh script check now for required timeshift and (optional) grub-btrfs packages
- Waybar Bluetooth module now hides automatically if no bluetooth device is detected. Please check that "bluetooth" is not commented out in ~/dotfiles/waybar/modules.json
- Replace hypridle-git with hypridle and hyprlock-git with hyprlock
- Desktop file for ML4W Welcome App to be listed in application launcher + icon
Version 2.8.1 Version 2.8.1
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.1 https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.1
-------------------------------------------------------- --------------------------------------------------------

233
README.md
View File

@ -1,19 +1,14 @@
# ML4W Dotfiles 2.8.3.4 # ML4W dotfiles 2.8.1
An advanced configuration of Hyprland and Qtile for Arch Linux based distributions. This package includes an installation script to install and setup the required components. This is my configuration of Hyprland (Wayland) and Qtile (X11) for Arch Linux based distributions. This package includes an installation script to install and setup the required components.
[![Screenshot](screenshots/v283/screenshot-283-2.png "Title Text")](screenshots/v283/screenshot-283-2.png) <a href="https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/screenshots/v281/screenshot-281-1.png?ref_type=heads" target="_blank"><img src="screenshots/v281/screenshot-281-1.png" /></a>
You can find the overview video (Version 2.8.3) on Youtube: [ML4W Dotfiles 2.8.3](https://youtu.be/zM2AYue0o8s) PLEASE NOTE: This branch is the rolling release of the ML4W dotfiles and includes the latest changes.
You can find the installation video (Version 2.8.2) on YouTube: [Install/Update the ML4W Dotfiles](https://youtu.be/n6Yg232bCOU) Latest official release 2.8.1: <a href="https://youtu.be/KHwJxpV_L1g" target="_blank">Watch on YouTube</a>
> PLEASE NOTE: In case of issues with the latest Hyprland version 0.37.1, please update your ML4W Dotfiles installation to the latest version. See the troubleshooting section for more information. You can find the installation video (Version 2.7.1) on YouTube: <a href="https://youtu.be/kHG5czrQ7WA" target="_blank">Install Arch Linux with Hyprland & Qtile</a>
The ML4W Dotfiles are available as
- main release (Official release): [https://gitlab.com/stephan-raabe/dotfiles](https://gitlab.com/stephan-raabe/dotfiles)
- rolling release (Development release): [https://gitlab.com/stephan-raabe/dotfiles/-/tree/dev](https://gitlab.com/stephan-raabe/dotfiles/-/tree/dev)
[TOC] [TOC]
@ -23,56 +18,42 @@ To make it easy for you to get started with the ML4W dotfiles, here's a list of
The package includes an installation script install.sh that will guide you through all steps of the installation or update process. The package includes an installation script install.sh that will guide you through all steps of the installation or update process.
> PLEASE NOTE: Every Linux distribution and setup can be different. Therefore, I cannot guarantee that the installation will work smoothly everywhere. Installation on your own risk.
## Supported platforms ## Supported platforms
The dotfiles are tested with the following Arch based distributions: The dotfiles are tested with the following Arch based distributions:
- Arch Linux (recommended) - Arch Linux (recommended)
- EndeavourOS
- Arco Linux
- Manjaro Linux - Manjaro Linux
- Arco Linux
- EndeavourOS
The installation should work on all Arch Linux based distributions as well. But the installation should work on all Arch Linux based distributions as well.
> **For Manjaro users:** Hyprland and required components are under ongoing development. That's why it's possible that some packages are not immediatly available on Manjaro e.g., hyprlock or hypridle. But usually, the packages will be published later. For Arco Linux users: Please reinstall/force the installation of all packages during the installation/update process of the install script. The script will also offer to remove ttf-ms-fonts if installed to avoid issues with icons on waybar.
> **For Arco Linux users:** Please reinstall/force the installation of all packages during the installation/update process of the install script. The script will also offer to remove ttf-ms-fonts if installed to avoid issues with icons on waybar.
## Before you start ## Before you start
**PLEASE BACKUP YOUR EXISTING .config FOLDER WITH YOUR DOTFILES BEFORE STARTING THE SCRIPTS FOR INITIAL INSTALLTION.** PLEASE BACKUP YOUR EXISTING .config FOLDER WITH YOUR DOTFILES BEFORE STARTING THE SCRIPTS FOR INITIAL INSTALLTION.
PLEASE READ THIS README until the end before starting the installation.
The installation script will create a backup from an previous dotfiles installation. The installation script will try to create a backup from an previous dotfiles installation.
If possible, please create a snapshot of your current system if snapper or Timeshift is installed and available. Please note: To get the default Linux folder structure incl. Downloads, etc please install the packages xdg-user-dirs and run xdg-user-dirs-update.
## ML4W Installer App ## Reference Installation
The easiest way to install the ML4W Dotfiles is to use the ML4W Dotfiles Installer App. [You can download the app here.](https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/apps/ML4W_Dotfiles_Installer.AppImage) (Right click + Save link as...) The reference installation on the dotfiles is based on Arch Linux installed with a minimal profile.
``` Please watch the video on YouTube: https://youtu.be/kHG5czrQ7WA
# Change to the download location (normally the Downloads folder)
cd ~/Downloads
# Make the file executable
chmod +x ML4W_Dotfiles_Installer.AppImage
# Start the App from your terminal with
./ML4W_Dotfiles_Installer.AppImage
```
## Installation with GIT ## Installation with GIT
You can also install the dotfiles by cloning the latest main release:
``` ```
# 1.) Change into your Downloads folder (create the folder if not available) # 1.) Change into your Downloads folder
cd ~/Downloads cd ~/Downloads
# 2.) Clone the dotfiles repository into the Downloads folder # 2.) Clone the dotfiles repository into the Downloads folder
git clone --depth=1 https://gitlab.com/stephan-raabe/dotfiles.git git clone https://gitlab.com/stephan-raabe/dotfiles.git
# 3.) Change into the dotfiles folder # 3.) Change into the dotfiles folder
cd dotfiles cd dotfiles
@ -84,65 +65,54 @@ cd dotfiles
## Installation with GIT of the rolling release ## Installation with GIT of the rolling release
You can install the dotfiles by cloning the latest development version from the rolling release:
``` ```
# 1.) Change into your Downloads folder (create the folder if not available) # 1.) Change into your Downloads folder where you have downloaded the release to
cd ~/Downloads cd ~/Downloads
# 2.) Clone the dotfiles repository into the Downloads folder # 2.) Unzip
git clone https://gitlab.com/stephan-raabe/dotfiles.git git clone https://gitlab.com/stephan-raabe/dotfiles.git
# 3.) Change into the new dotfiles folder # 3.) Change into the new dotfiles folder
cd dotfiles cd dotfiles
# 4.) Checkout the dev branch # 4.) Switch to dev branch
git checkout dev git checkout dev
# 4.) Start the installation # 4.) Start the installation to update
./install.sh ./install.sh
``` ```
## Update ## Update with GIT
From 2.8.2 onwards you can use the integrated update feature to update your dotfiles to the main or rolling release whenever you want.
![Update](screenshots/welcome-update-dotfiles.png "Updates")
You can also use the ML4W installer to update to the main-release (Latest Version) or the Rolling Release: https://gitlab.com/stephan-raabe/installer
You can force a clean re-installation of the dotfiles by removing the folder ~/dotfiles before starting the installation.
> Please note that you can create a backup of your existing configuration with the backup feature of the install script. It's recommended to remove the folder ~/dotfiles only after creating a backup.
Please follow the steps to update from earlier dotfiles versions to 2.8.3
``` ```
# 1.) Remove existing downloaded dotfiles # 1.) Change into your Downloads folder
rm -rf ~/Downloads/dotfiles cd ~/Downloads/dotfiles
# 2.) Change into your Downloads folder # Switch to rolling release
cd ~/Downloads # git checkout origin/main
# 3.) Clone the dotfiles repository into the Downloads folder # 2.) Pull the latest version and update the repository
git clone --depth=1 https://gitlab.com/stephan-raabe/dotfiles.git git stash; git pull
# 4.) Change into the dotfiles folder # 3.) Start the installation to update
cd dotfiles
# 5.) Start the installation
./install.sh ./install.sh
``` ```
You can create a clean reinstallation by removing the folder ~/dotfiles Please note that you can create a backup of your exsiting configuration with the backup feature of the install script. It's recommended to remove the folder ~/dotfiles only after creating a backup.
## Dotfiles Installer
You can also use the dotfiles installer script to download and install the latest release: https://gitlab.com/stephan-raabe/installer
## Installation Hook ## Installation Hook
The installation script will prepare the configuration files in a folder ~/dotfiles-versions/[version] before copy the files into the final destination in ~/dotfiles The installation script will prepare the configuration files in a folder ~/dotfiles-versions/[version] before copying into the final destination in ~/dotfiles
If you want to modify the installation files just before everytime the copy procedure starts, you can create a file hook.sh in the folder ~/dotfiles-versions If you want to modify the installation files just before the copy procedure starts, you can create a file hook.sh in the folder ~/dotfiles-versions
You can for example delete folders and files or update existing configurations. You can delete folders and files or update existing configurations.
``` ```
#!/bin/bash #!/bin/bash
@ -156,20 +126,14 @@ You can find a template in .install/templates/hook.sh
## Hyprland & NVIDIA ## Hyprland & NVIDIA
Users have reported that Hyprland with dotfiles could be installed successfully on setups with NVDIA GPUs using the nouveau open source drivers.
There is no official Hyprland support for Nvidia hardware. However, you might make it work properly following this page. There is no official Hyprland support for Nvidia hardware. However, you might make it work properly following this page.
https://wiki.hyprland.org/Nvidia/ https://wiki.hyprland.org/Nvidia/
Users have reported that Hyprland with dotfiles could be installed successfully on setups with NVDIA GPUs using the nouveau open source drivers.
Please select the following variation in the settings script (system/environment):
https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/hypr/conf/environments/nvidia.conf
Or set the included environment variables in hyprland.conf
## Launch Hyprland from tty ## Launch Hyprland from tty
The suggested method to start Hyprland is from tty with the command Hyprland because login managers (display managers) are not officially supported (https://wiki.hyprland.org/Getting-Started/Master-Tutorial/#launching-hyprland) The suggested method to start Hyprland is from tty with the command Hyprland bacause login managers (display managers) are not official supported (https://wiki.hyprland.org/Getting-Started/Master-Tutorial/#launching-hyprland)
``` ```
# Start Hyprland # Start Hyprland
@ -194,14 +158,6 @@ With the Hyprland settings script you can copy the current wallpaper into SDDM a
Please check the troubleshooting section in case of issues. Please check the troubleshooting section in case of issues.
## Screenlock, suspend and DPMS
Hypridle will start Hyprlock after 10 minutes of inactivity and will try to suspend one minutes later.
In the ML4W Dotfiles Settings App you can define the timeouts for Hyprlock, suspend and DPSM.
The selected hypridle configuration can be restored from the ML4W installer during a dotfiles update.
## Installation in a KVM virtual machine ## Installation in a KVM virtual machine
Qtile X11 works fine in a KVM virtual machine. The Hyprland performance is low but it's enough for testing new features. Qtile X11 works fine in a KVM virtual machine. The Hyprland performance is low but it's enough for testing new features.
@ -225,9 +181,9 @@ If you want to install only the core packages of Hyprland as a starting point fo
- <kbd>SUPER</kbd> + <kbd>SHIFT</kbd> + <kbd>B</kbd>: Reload waybar on Hyprland - <kbd>SUPER</kbd> + <kbd>SHIFT</kbd> + <kbd>B</kbd>: Reload waybar on Hyprland
All keybindings for Hyprland with right mouse click on Apps in waybar or here: All keybindings for Hyprland with right mouse click on Apps in waybar or here:
https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/hypr/conf/keybindings.conf
- [Hyprland keybindings overview](hypr/conf/keybindings/default.conf) All keybindings for Qtile: https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/qtile/config.py
- [Qtile keybindings overview](qtile/config.py)
# Hyprland # Hyprland
@ -243,13 +199,13 @@ All keybindings for Hyprland with right mouse click on Apps in waybar or here:
## ML4W Welcome App ## ML4W Welcome App
After starting the ML4W dotfiles for the first time, the ML4W Welcome App opens. This app is the starting point to discover the Hyprland setup. After starting the ML4W dotfiles for the first time, the ML4W Welcome App appears. This app is the starting point to discover the Hyprland setup.
<img src="screenshots/screenshot-welcome.app.png" /> <img src="screenshots/screenshot-welcome.app.png" />
The welcome screen includes the most important keybindings to open a terminal or a browser. The welcome screen includes the most important keybindings to open a terminal or a browser.
You can start the ML4W Welcome App by clicking on the L icon on the right side in waybar, using the rofi application launcher or by typing ml4w in your terminal (if you're using the .bashrc from the dotfiles). You can start the ML4W Welcome App by clicking on the L icon on the right side in waybar or be entering ml4w in your terminal (if you're using the .bashrc from the dotfiles).
In the Settings Menu you can access the following functions: In the Settings Menu you can access the following functions:
@ -267,31 +223,6 @@ In the Settings Menu you can access the following functions:
You can find the sourcecode of the ML4W Welcome App in this repository: You can find the sourcecode of the ML4W Welcome App in this repository:
https://gitlab.com/stephan-raabe/ml4w-welcome https://gitlab.com/stephan-raabe/ml4w-welcome
## ML4W Dotfiles Settings App
You can open the ML4W dotfiles settings app with <kbd>SUPER</kbd> + <kbd>CTRL</kbd> + <kbd>S</kbd> to change selected dotfiles configurations and choose from variations for your hyprland.conf to customize your desktop even more.
<img src="screenshots/screenshot-dotfiles-settings-app.png" />
You can create custom variations by copying a file from the ~/dotfiles/hypr/conf subfolders like monitor/default.conf, give the file a custom name (e.g., mymonitor.conf) and select the variation in the dotfiles settings app in the corresponding section.
> The ML4W Dotfiles Settings App replaces strings from several configuration files directly or based on replacement comments e.g., // START WORKSPACES That's why you shouldn't remove any of theses comments or markers to ensure full functionality of the app.
You can also edit the file custom.conf which is included at the bottom of the hyprland.conf and can hold you personal configurations.
You can find the sourcecode of the ML4W Dotfiles Settings App in this repository:
https://gitlab.com/stephan-raabe/ml4w-dotfiles-settings
## Hyprland Configuration Variations
With configuration variations, you can customize settings and configurations for your Hyprland installation. You can manage, create and edit Hyprland Configuration Variations in the ML4W Dotfiles Settings App.
<img src="https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/screenshots/variations/variations1.png" />
[You can find more information here.](hypr/conf/README.md)
> Please don't edit the shipped configuration variations. These will be overwritten with every update of the ML4W dotfiles. <b>Create your own custom variation instead.</b>
## Wallpaper and Pywal ## Wallpaper and Pywal
Included is a pywal configuration that changes the color scheme based on a randomly selected wallpaper. With the key binding <kbd>SUPER</kbd> + <kbd>SHIFT</kbd> + <kbd>W</kbd> you can change the wallpaper coming from the folder ~/wallpaper/. Included is a pywal configuration that changes the color scheme based on a randomly selected wallpaper. With the key binding <kbd>SUPER</kbd> + <kbd>SHIFT</kbd> + <kbd>W</kbd> you can change the wallpaper coming from the folder ~/wallpaper/.
@ -304,14 +235,28 @@ In addition, you can switch the Waybar Template with <kbd>SUPER</kbd> + <kbd>CTR
The templates are available in ~/dotfiles/waybar/themes. You can add your own personal themes into this folder. The templates are available in ~/dotfiles/waybar/themes. You can add your own personal themes into this folder.
[You can find more information here.](waybar/README.md) More information here: https://gitlab.com/stephan-raabe/dotfiles/-/tree/main/waybar
## Hyprland settings
You can open the settings script with <kbd>SUPER</kbd> + <kbd>CTRL</kbd> + <kbd>S</kbd> to select variations for your hyprland.conf and customize your desktop even more.
You can create custom variations by copying a file from the ~/dotfiles/hypr/conf subfolders like monitor/default.conf, give the file a custom name (e.g., mymonitor.conf) and select the variation in the settings script in the corresponding section.
You can also edit the file custom.conf which is included at the bottom of the hyprland.conf and can hold you personal configurations.
You can also edit the file directly in the settings script in the section Custom.
## Screensharing and recording ## Screensharing and recording
In case you have issues with starting Waybar please make sure that only one xdg-desktop-portal-x is installed additionally to xdg-desktop-portal.
I had several issues with xdg-desktop-portal-wlr on Hyprland and Waybar. Please make sure that xdg-desktop-portal-wlr is uninstalled and xdg-desktop-portal-hyprland is installed.
More information you can find here: More information you can find here:
https://gist.github.com/PowerBall253/2dea6ddf6974ba4e5d26c3139ffb7580 https://gist.github.com/PowerBall253/2dea6ddf6974ba4e5d26c3139ffb7580
> Please note that every Arch Linux system is different and I cannot guarantee that everything works fine on your system. Please note that every Arch Linux system is different and I cannot guarantee that everything works fine on your system.
## Main packages ## Main packages
@ -319,7 +264,7 @@ https://gist.github.com/PowerBall253/2dea6ddf6974ba4e5d26c3139ffb7580
- Editor: nvim - Editor: nvim
- Prompt: starship - Prompt: starship
- Icons: Font Awesome - Icons: Font Awesome
- Launch Menus: Rofi (Wayland fork) - Launch Menus: Rofi
- Colorscheme: pywal - Colorscheme: pywal
- Browsers: chromium (brave optional) - Browsers: chromium (brave optional)
- Filemanager: Thunar - Filemanager: Thunar
@ -350,7 +295,7 @@ Included is a pywal configuration that changes the color scheme based on a rando
- Editor: nvim - Editor: nvim
- Prompt: starship - Prompt: starship
- Icons: Font Awesome - Icons: Font Awesome
- Launch Menus: Rofi (Wayland fork) - Launch Menus: Rofi
- Colorscheme: pywal - Colorscheme: pywal
- Browsers: chromium (brave optional) - Browsers: chromium (brave optional)
- Filemanager: Thunar - Filemanager: Thunar
@ -362,54 +307,6 @@ Included is a pywal configuration that changes the color scheme based on a rando
# Troubleshooting # Troubleshooting
## Wallpaper issues (grey or distroyed image) with latest swww 0.9.1
Please install the latest version of the ML4W Dotfiles > 2.8.3.4
Or replace the swww launch command in /dotfiles/hypr/conf/autostart.conf with
```
exec-once = swww init || swww-daemon --format xrgb
```
swww is currently extremly under development. Upcoming updates could require different launch commands. I will monitor the development as well and update the dotfiles accordingly.
## Issues after Hyprland 0.37.1 Updates
Hyprland has released the version 0.37.1. This comes with many changes of the system and required dependencies.
Please update to the latest version of the ML4W Dotfiles 2.8.3.2
If you don't have access to Waybar because of overlayed error messages you can start the ML4W app with the application launcher <kbd>SUPER</kbd> + <kbd>CTRL</kbd> + <kbd>RETURN</kbd> and search for the ML4W Welcome App.
Or you open a terminal with <kbd>SUPER</kbd> + <kbd>RETURN</kbd> and enter
```
ml4w
```
Then select in the upper right side menu the entry "Update/ Dotfiles"
## hypridle and hyprlock is not starting after an update of the dotfiles
Please make sure that hypridle and hyprlock has been installed successfully with
```
yay -S hypridle hyprlock
```
If there is an file conflict the remove the files manually with:
```
sudo rm /usr/lib/debug/usr/bin/hypridle.debug
sudo rm /usr/lib/debug/usr/bin/hyprlock.debug
```
and start the installation again with
```
yay -S hypridle hyprlock
```
## Missing icons in waybar ## Missing icons in waybar
In case of missing icons on waybar, it's due to a conflict between several installed fonts (can happen especially on Arco Linux). Please make sure that ttf-ms-fonts is uninstalled and ttf-font-awesome and otf-font-awesome are installed with In case of missing icons on waybar, it's due to a conflict between several installed fonts (can happen especially on Arco Linux). Please make sure that ttf-ms-fonts is uninstalled and ttf-font-awesome and otf-font-awesome are installed with

Binary file not shown.

View File

@ -1,7 +0,0 @@
[Desktop Entry]
Type=Application
Name=ML4W Dotfiles Settings App
Exec=HOME/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage
Icon=HOME/dotfiles/apps/ml4w-icon.png
Terminal=false
Categories=Utility

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

View File

@ -1,7 +0,0 @@
[Desktop Entry]
Type=Application
Name=ML4W Welcome App
Exec=HOME/dotfiles/apps/ML4W_Welcome-x86_64.AppImage
Icon=HOME/dotfiles/apps/ml4w-icon.png
Terminal=false
Categories=Utility

View File

@ -102,7 +102,7 @@
# Defines width in pixels of frame around the notification window. # Defines width in pixels of frame around the notification window.
# Set to 0 to disable. # Set to 0 to disable.
frame_width = 1 frame_width = 3
# Defines color of the frame around the notification window. # Defines color of the frame around the notification window.
frame_color = "#ffffff" frame_color = "#ffffff"
@ -133,7 +133,7 @@
### Text ### ### Text ###
font = "Fira Sans Semibold" 9 font = "Fira Sans Semibold" 11
# The spacing between lines. If the height is smaller than the # The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height. # font height, it will get raised to the font height.
@ -181,7 +181,7 @@
# Vertical alignment of message text and icon. # Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom". # Possible values are "top", "center" and "bottom".
vertical_alignment = center vertical_alignment = top
# Show age of message if message is older than show_age_threshold # Show age of message if message is older than show_age_threshold
# seconds. # seconds.
@ -323,21 +323,21 @@
[urgency_low] [urgency_low]
# IMPORTANT: colors have to be defined in quotation marks. # IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment. # Otherwise the "#" and following would be interpreted as a comment.
background = "#000000CC" background = "#00000070"
foreground = "#888888" foreground = "#888888"
timeout = 6 timeout = 6
# Icon for notifications with low urgency, uncomment to enable # Icon for notifications with low urgency, uncomment to enable
#default_icon = /path/to/icon #default_icon = /path/to/icon
[urgency_normal] [urgency_normal]
background = "#000000CC" background = "#00000070"
foreground = "#ffffff" foreground = "#ffffff"
timeout = 6 timeout = 6
# Icon for notifications with normal urgency, uncomment to enable # Icon for notifications with normal urgency, uncomment to enable
#default_icon = /path/to/icon #default_icon = /path/to/icon
[urgency_critical] [urgency_critical]
background = "#900000CC" background = "#90000070"
foreground = "#ffffff" foreground = "#ffffff"
frame_color = "#ffffff" frame_color = "#ffffff"
timeout = 6 timeout = 6

View File

@ -1,45 +0,0 @@
# Configuration Variations
With configuration variations, you can prepare different settings and configurations for your Hyprland installation.
<img src="https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/screenshots/variations/variations1.png" />
## How to use configuration variations
Open the ML4W dotfiles settings app via the ML4W Welcome App, the application launcher or the wheel icon in Waybar.
You can find several variation within the three settings pages.
- Monitor (Screen Resolutions)
- Animations
- Keybindings
- Windows
- Window Rules
- Decorations
- Environments
Select the variation that you want to use from the corresponding drop down menu.
Please don't edit the shipped configuration variations. These will be overwritten with every update of the ML4W dotfiles. <b>Create your own custom variation instead.</b>
## Create your own variation
Open the ML4W dotfiles settings app via the ML4W Welcome App, the application launcher or the wheel icon in Waybar.
Select "Open Variation Folder" from the variation context menu.
<img src="https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/screenshots/variations/variations1.png" />
Copy an existing variation as a starting point and rename the new file accordingly.
<img src="https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/screenshots/variations/variations2.png" />
Edit the configuration of your new variation and save.
Go back to the ML4W dotfiles settings app and select "Reload Variations" from the variation context menu and select your new variation.
<img src="https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/screenshots/variations/variations3.png" />
You can also modify the variation from the settings app directly.
<img src="https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/screenshots/variations/variations4.png" />

View File

@ -27,7 +27,7 @@ exec-once = hypridle
exec-once = wl-paste --watch cliphist store exec-once = wl-paste --watch cliphist store
# Initialize swww # Initialize swww
exec-once = swww init || swww-daemon --format xrgb exec-once = swww query || swww init
# Load last wallpaper and waybar with pywal colors # Load last wallpaper and waybar with pywal colors
exec-once = ~/dotfiles/hypr/scripts/wallpaper.sh init exec-once = ~/dotfiles/hypr/scripts/wallpaper.sh init

View File

@ -5,4 +5,3 @@
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORM,wayland env = QT_QPA_PLATFORM,wayland

View File

@ -1,15 +0,0 @@
# -----------------------------------------------------
# Environment Variables
# name: "Nvidia"
# -----------------------------------------------------
# https://wiki.hyprland.org/Nvidia/
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORM,wayland
env = WLR_NO_HARDWARE_CURSORS,1
env = LIBVA_DRIVER_NAME,nvidia
env = XDG_SESSION_TYPE,wayland
env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
# env = __GL_VRR_ALLOWED,1
# env = WLR_DRM_NO_ATOMIC,1

View File

@ -14,7 +14,7 @@ bind = $mainMod, period, exec, emote
# Windows # Windows
bind = $mainMod, Q, killactive bind = $mainMod, Q, killactive
bind = $mainMod, F, fullscreen bind = $mainMod, F, fullscreen
bind = $mainMod, E, exec, ~/dotfiles/.settings/filemanager.sh bind = $mainMod, E, exec, ~/dotfiles/scripts/filemanager.sh
bind = $mainMod, T, togglefloating bind = $mainMod, T, togglefloating
bind = $mainMod SHIFT, T, exec, ~/dotfiles/hypr/scripts/toggleallfloat.sh bind = $mainMod SHIFT, T, exec, ~/dotfiles/hypr/scripts/toggleallfloat.sh
bind = $mainMod, J, togglesplit bind = $mainMod, J, togglesplit
@ -28,14 +28,13 @@ bind = $mainMod SHIFT, right, resizeactive, 100 0
bind = $mainMod SHIFT, left, resizeactive, -100 0 bind = $mainMod SHIFT, left, resizeactive, -100 0
bind = $mainMod SHIFT, up, resizeactive, 0 -100 bind = $mainMod SHIFT, up, resizeactive, 0 -100
bind = $mainMod SHIFT, down, resizeactive, 0 100 bind = $mainMod SHIFT, down, resizeactive, 0 100
bind = $mainMod, G, togglegroup
# Actions # Actions
bind = $mainMod, PRINT, exec, ~/dotfiles/hypr/scripts/screenshot.sh bind = $mainMod, PRINT, exec, ~/dotfiles/hypr/scripts/screenshot.sh
bind = $mainMod CTRL, Q, exec, wlogout bind = $mainMod CTRL, Q, exec, wlogout
bind = $mainMod SHIFT, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh bind = $mainMod SHIFT, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh
bind = $mainMod CTRL, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh select bind = $mainMod CTRL, W, exec, ~/dotfiles/hypr/scripts/wallpaper.sh select
bind = $mainMod CTRL, RETURN, exec, rofi -show drun -replace -i bind = $mainMod CTRL, RETURN, exec, rofi -show drun
bind = $mainMod CTRL, H, exec, ~/dotfiles/hypr/scripts/keybindings.sh bind = $mainMod CTRL, H, exec, ~/dotfiles/hypr/scripts/keybindings.sh
bind = $mainMod SHIFT, B, exec, ~/dotfiles/waybar/launch.sh bind = $mainMod SHIFT, B, exec, ~/dotfiles/waybar/launch.sh
bind = $mainMod SHIFT, R, exec, ~/dotfiles/hypr/scripts/loadconfig.sh bind = $mainMod SHIFT, R, exec, ~/dotfiles/hypr/scripts/loadconfig.sh
@ -43,7 +42,7 @@ bind = $mainMod CTRL, F, exec, ~/dotfiles/scripts/filemanager.sh
bind = $mainMod CTRL, C, exec, ~/dotfiles/scripts/cliphist.sh bind = $mainMod CTRL, C, exec, ~/dotfiles/scripts/cliphist.sh
bind = $mainMod, V, exec, ~/dotfiles/scripts/cliphist.sh bind = $mainMod, V, exec, ~/dotfiles/scripts/cliphist.sh
bind = $mainMod CTRL, T, exec, ~/dotfiles/waybar/themeswitcher.sh bind = $mainMod CTRL, T, exec, ~/dotfiles/waybar/themeswitcher.sh
bind = $mainMod CTRL, S, exec, ~/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage bind = $mainMod CTRL, S, exec, alacritty --class dotfiles-floating -e ~/dotfiles/hypr/start-settings.sh
# Workspaces # Workspaces
bind = $mainMod, 1, workspace, 1 bind = $mainMod, 1, workspace, 1
@ -82,7 +81,7 @@ bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioPrev, exec, playerctl previous bind = , XF86AudioPrev, exec, playerctl previous
bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
bind = , XF86Calculator, exec, qalculate-gtk bind = , XF86Calculator, exec, qalculate-gtk
bind = , XF86Lock, exec, hyprlock bind = , XF86Lock, exec, swaylock
bind = , XF86Tools, exec, alacritty --class dotfiles-floating -e ~/dotfiles/hypr/settings/settings.sh bind = , XF86Tools, exec, alacritty --class dotfiles-floating -e ~/dotfiles/hypr/settings/settings.sh
# Passthrough SUPER KEY to Virtual Machine # Passthrough SUPER KEY to Virtual Machine

View File

@ -9,7 +9,6 @@ input {
kb_options = kb_options =
numlock_by_default = true numlock_by_default = true
follow_mouse = 1 follow_mouse = 1
mouse_refocus=false
touchpad { touchpad {
natural_scroll = false natural_scroll = false
} }

View File

@ -14,3 +14,7 @@ master {
gestures { gestures {
workspace_swipe = false workspace_swipe = false
} }
device:epic-mouse-v1 {
sensitivity = -0.5
}

View File

@ -4,22 +4,18 @@
windowrulev2 = float,class:(com.ml4w.welcome) windowrulev2 = float,class:(com.ml4w.welcome)
windowrulev2 = size 700 600,class:(com.ml4w.welcome) windowrulev2 = size 700 600,class:(com.ml4w.welcome)
windowrulev2 = nomaximizerequest,class:(com.ml4w.welcome)
windowrulev2 = nofullscreenrequest,class:(com.ml4w.welcome)
windowrulev2 = center,class:(com.ml4w.welcome) windowrulev2 = center,class:(com.ml4w.welcome)
windowrulev2 = float,class:(ml4w-welcome.py) windowrulev2 = float,class:(ml4w-welcome.py)
windowrulev2 = size 400 500,class:(ml4w-welcome.py) windowrulev2 = size 400 500,class:(ml4w-welcome.py)
windowrulev2 = nomaximizerequest,class:(ml4w-welcome.py)
windowrulev2 = nofullscreenrequest,class:(ml4w-welcome.py)
windowrulev2 = center,class:(ml4w-welcome.py) windowrulev2 = center,class:(ml4w-welcome.py)
windowrulev2 = float,class:(com.ml4w.dotfilessettings)
windowrulev2 = size 700 600,class:(com.ml4w.dotfilessettings)
windowrulev2 = move 10% 20%,class:(com.ml4w.dotfilessettings)
windowrulev2 = float,class:(ml4w-dotfiles-settings.py)
windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py)
windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py)
windowrulev2 = float,class:(dotfiles-floating) windowrulev2 = float,class:(dotfiles-floating)
windowrulev2 = size 1000 800,class:(dotfiles-floating) windowrulev2 = size 1000 800,class:(dotfiles-floating)
windowrulev2 = nomaximizerequest,class:(dotfiles-floating)
windowrulev2 = nofullscreenrequest,class:(dotfiles-floating)
windowrulev2 = center,class:(dotfiles-floating) windowrulev2 = center,class:(dotfiles-floating)
env = APPIMAGELAUNCHER_DISABLE,1

View File

@ -1,6 +0,0 @@
# -----------------------------------------------------
# Monitor Setup
# name: "Highres"
# -----------------------------------------------------
monitor=,highres,auto,1

View File

@ -8,4 +8,3 @@ windowrule = tile,^(Chromium)$
windowrule = float,^(pavucontrol)$ windowrule = float,^(pavucontrol)$
windowrule = float,^(blueman-manager)$ windowrule = float,^(blueman-manager)$
windowrule = float,^(nm-connection-editor)$ windowrule = float,^(nm-connection-editor)$
windowrule = float,^(qalculate-gtk)$

View File

@ -5,36 +5,25 @@
# |_| |_|\__, | .__/|_| |_|\__,_|_|\___| # |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
# |___/|_| # |___/|_|
# #
# Version 2.8.3
# DO NOT REMOVE THE REPLACEMENT COMMENTS
# REQUIRED BY THE ML4W SETTINGS APP
general { general {
ignore_dbus_inhibit = false # lock_cmd = notify-send "lock!" # dbus/sysd lock command (loginctl lock-session)
# unlock_cmd = notify-send "unlock!" # same as above, but unlock
# before_sleep_cmd = notify-send "Zzz" # command ran before sleep
# after_sleep_cmd = notify-send "Awake!" # command ran after sleep
ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
} }
# Screenlock # Screenlock
listener { listener {
# HYPRLOCK TIMEOUT timeout = 600 # in seconds
timeout = 600 on-timeout = hyprlock # command to run when timeout has passed
# HYPRLOCK ONTIMEOUT # on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
on-timeout = hyprlock
}
# dpms
listener {
# DPMS TIMEOUT
timeout = 660
# DPMS ONTIMEOUT
on-timeout = hyprctl dispatch dpms off
# DPMS ONRESUME
on-resume = hyprctl dispatch dpms on
} }
# Suspend # Suspend
listener { listener {
# SUSPEND TIMEOUT timeout = 660 # in seconds
timeout = 1800 on-timeout = systemctl suspend # command to run when timeout has passed
#SUSPEND ONTIMEOUT # on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
on-timeout = systemctl suspend
} }

View File

@ -8,34 +8,32 @@
background { background {
monitor = monitor =
path = $HOME/.cache/blurred_wallpaper.png # only png supported for now path = $HOME/dotfiles/.settings/lockscreen.png # only png supported for now
color = rgba(25, 20, 20, 1.0)
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
blur_passes = 4 # 0 disables blurring
blur_size = 2
noise = 0.0117
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
} }
input-field { input-field {
monitor = monitor =
size = 200, 50 size = 200, 50
outline_thickness = 3 outline_thickness = 1
dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true dots_center = true
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding outer_color = rgb(000000)
outer_color = rgb(151515)
inner_color = rgb(200, 200, 200) inner_color = rgb(200, 200, 200)
font_color = rgb(10, 10, 10) font_color = rgb(10, 10, 10)
fade_on_empty = true fade_on_empty = true
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty. placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
hide_input = false hide_input = false
rounding = -1 # -1 means complete rounding (circle/oval)
check_color = rgb(204, 136, 34)
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
capslock_color = -1
numlock_color = -1
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
invert_numlock = false # change color if numlock is off
swap_font_color = false # see below
position = 0, -20 position = 0, -20
halign = center halign = center
valign = center valign = center
@ -43,26 +41,12 @@ input-field {
label { label {
monitor = monitor =
text = cmd[update:1000] echo "$TIME" text = Enter your password to unlock
color = rgba(200, 200, 200, 1.0) color = rgba(200, 200, 200, 1.0)
font_size = 55 font_size = 25
font_family = Fira Semibold font_family = Noto Sans
position = -100, -200
halign = right
valign = bottom
shadow_passes = 5
shadow_size = 10
}
label { position = 0, 200
monitor = halign = center
text = $USER valign = center
color = rgba(200, 200, 200, 1.0)
font_size = 20
font_family = Fira Semibold
position = -100, 160
halign = right
valign = bottom
shadow_passes = 5
shadow_size = 10
} }

View File

@ -30,5 +30,4 @@ keybinds=$(echo "$keybinds" | sed 's/$mainMod/SUPER/g'| sed 's/,\([^,]*\)$/ = \
# ----------------------------------------------------- # -----------------------------------------------------
# Show keybindings in rofi # Show keybindings in rofi
# ----------------------------------------------------- # -----------------------------------------------------
sleep 0.2
rofi -dmenu -i -replace -p "Keybinds" -config ~/dotfiles/rofi/config-compact.rasi <<< "$keybinds" rofi -dmenu -i -replace -p "Keybinds" -config ~/dotfiles/rofi/config-compact.rasi <<< "$keybinds"

View File

@ -1,2 +0,0 @@
#!/bin/bash
hyprctl reload

View File

@ -21,16 +21,12 @@ choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/dotfiles/rofi/confi
case $choice in case $choice in
$option2) $option2)
grim -g "$(slurp)" "$DIR$NAME" grim -g "$(slurp)" - | swappy -f -
xclip -selection clipboard -t image/png -i "$DIR$NAME" notify-send "Screenshot created" "Mode: Selected area"
notify-send "Screenshot created and copied to clipboard" "Mode: Selected area"
swappy -f "$DIR$NAME"
;; ;;
$option3) $option3)
sleep 3 sleep 3
grim "$DIR$NAME" grim - | swappy -f -
xclip -selection clipboard -t image/png -i "$DIR$NAME" notify-send "Screenshot created" "Mode: Fullscreen"
notify-send "Screenshot created and copied to clipboard" "Mode: Fullscreen"
swappy -f "$DIR$NAME"
;; ;;
esac esac

11
hypr/scripts/swayidle.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
pgrep_output=$(pgrep swayidle)
pgrep_arr=($pgrep_output)
if [[ "${#pgrep_arr[@]}" == "1" ]] || [[ "${#pgrep_arr[@]}" == "0" ]]; then
echo "Swayidle is not running. Starting Swayidle."
./lockscreentime.sh
else
echo "Swayidle is running. Killing swayidle."
killall swayidle
fi

View File

@ -11,12 +11,7 @@
# Cache file for holding the current wallpaper # Cache file for holding the current wallpaper
cache_file="$HOME/.cache/current_wallpaper" cache_file="$HOME/.cache/current_wallpaper"
blurred="$HOME/.cache/blurred_wallpaper.png"
rasi_file="$HOME/.cache/current_wallpaper.rasi" rasi_file="$HOME/.cache/current_wallpaper.rasi"
blur_file="$HOME/dotfiles/.settings/blur.sh"
blur="50x30"
blur=$(cat $blur_file)
# Create cache file if not exists # Create cache file if not exists
if [ ! -f $cache_file ] ;then if [ ! -f $cache_file ] ;then
@ -36,7 +31,6 @@ case $1 in
# Load wallpaper from .cache of last session # Load wallpaper from .cache of last session
"init") "init")
sleep 1
if [ -f $cache_file ]; then if [ -f $cache_file ]; then
wal -q -i $current_wallpaper wal -q -i $current_wallpaper
else else
@ -46,11 +40,11 @@ case $1 in
# Select wallpaper with rofi # Select wallpaper with rofi
"select") "select")
sleep 0.2
selected=$( find "$HOME/wallpaper" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -exec basename {} \; | sort -R | while read rfile selected=$( find "$HOME/wallpaper" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -exec basename {} \; | sort -R | while read rfile
do do
echo -en "$rfile\x00icon\x1f$HOME/wallpaper/${rfile}\n" echo -en "$rfile\x00icon\x1f$HOME/wallpaper/${rfile}\n"
done | rofi -dmenu -i -replace -config ~/dotfiles/rofi/config-wallpaper.rasi) done | rofi -dmenu -replace -config ~/dotfiles/rofi/config-wallpaper.rasi)
if [ ! "$selected" ]; then if [ ! "$selected" ]; then
echo "No wallpaper selected" echo "No wallpaper selected"
exit exit
@ -69,7 +63,13 @@ esac
# Load current pywal color scheme # Load current pywal color scheme
# ----------------------------------------------------- # -----------------------------------------------------
source "$HOME/.cache/wal/colors.sh" source "$HOME/.cache/wal/colors.sh"
echo ":: Wallpaper: $wallpaper" echo "Wallpaper: $wallpaper"
# -----------------------------------------------------
# Write selected wallpaper into .cache files
# -----------------------------------------------------
echo "$wallpaper" > "$cache_file"
echo "* { current-image: url(\"$wallpaper\", height); }" > "$rasi_file"
# ----------------------------------------------------- # -----------------------------------------------------
# get wallpaper image name # get wallpaper image name
@ -95,44 +95,10 @@ swww img $wallpaper \
--transition-duration=0.7 \ --transition-duration=0.7 \
--transition-pos "$( hyprctl cursorpos )" --transition-pos "$( hyprctl cursorpos )"
if [ "$1" == "init" ] ;then
echo ":: Init"
else
sleep 1
dunstify "Changing wallpaper ..." "with image $newwall" -h int:value:33 -h string:x-dunst-stack-tag:wallpaper
sleep 2
fi
# -----------------------------------------------------
# Created blurred wallpaper
# -----------------------------------------------------
if [ "$1" == "init" ] ;then
echo ":: Init"
else
dunstify "Creating blurred version ..." "with image $newwall" -h int:value:66 -h string:x-dunst-stack-tag:wallpaper
fi
magick $wallpaper -resize 75% $blurred
echo ":: Resized to 75%"
if [ ! "$blur" == "0x0" ] ;then
magick $blurred -blur $blur $blurred
echo ":: Blurred"
fi
# -----------------------------------------------------
# Write selected wallpaper into .cache files
# -----------------------------------------------------
echo "$wallpaper" > "$cache_file"
echo "* { current-image: url(\"$blurred\", height); }" > "$rasi_file"
# ----------------------------------------------------- # -----------------------------------------------------
# Send notification # Send notification
# ----------------------------------------------------- # -----------------------------------------------------
sleep 1
if [ "$1" == "init" ] ;then notify-send "Colors and Wallpaper updated" "with image $newwall"
echo ":: Init"
else
dunstify "Wallpaper procedure complete!" "with image $newwall" -h int:value:100 -h string:x-dunst-stack-tag:wallpaper
fi
echo "DONE!" echo "DONE!"

View File

@ -0,0 +1,9 @@
.gitignore
.git
.dev
README.md
CHANGELOG
LICENSE
install.sh
create.sh
.target.sh

View File

@ -0,0 +1,377 @@
# Settings Library
# Load module
_getModules() {
clear
# Get path to parent folder to go back
back="$(dirname "$1")"
# Load module config
if [ -f $1/init.sh ]; then
source $1/init.sh
fi
# Load module config
if [ -f $1/config.sh ]; then
source $1/config.sh
else
echo "ERROR: config.sh doesn't exists in $1"
exit
fi
clickArr+=("/")
clickArr+=("$name")
echo "You are here:" ${clickArr[@]}
# Load module
if [ -f $1/module.sh ]; then
source $1/module.sh
else
echo "ERROR: module.sh doesn't exists in $1"
# exit 0
fi
# Read folder
modules=$(find $1 -maxdepth 1 -type d)
count=0
# Check if subfolders exists
for value in $modules
do
if [[ ! "$value" == "$1" ]]; then
# Check if custom version of module exists and skip original module
if [ ! -d "$value-custom" ]; then
((count++))
fi
fi
done
# Create Navigation
unset modulesArr
if [[ ! $count == 0 ]]; then
# Get modules folders
for value in $modules
do
if [[ ! "$value" == "$1" ]]; then
if [[ ! $value == *"-custom" ]]; then
if [ ! -d "$value-custom" ]; then
if [ -f $value/config.sh ]; then
source $value/config.sh
modulesArr+=("$order:$name:$value")
else
echo "ERROR: config.sh doesn't exists in $value"
exit
fi
else
if [ -f $value-custom/config.sh ]; then
source $value-custom/config.sh
modulesArr+=("$order:$name:$value-custom")
else
echo "ERROR: config.sh doesn't exists in $value-custom"
exit
fi
fi
fi
fi
done
# Sort array by order
IFS=$'\n' modulesArr=($(sort <<<"${modulesArr[*]}"))
unset nameList
unset pathList
# Output
for value in "${modulesArr[@]}"
do
name="$(cut -d':' -f2 <<<"$value")"
path="$(cut -d':' -f3 <<<"$value")"
nameList+=("$name")
pathList+=("$path")
done
if [[ "$back" == "$installFolder/settings" ]]; then
nameList+=("EXIT")
else
nameList+=("BACK")
fi
echo ""
selected=$(gum choose --height 12 ${nameList[@]})
case $selected in
BACK)
_goBack
break;;
EXIT)
clear
exit
break;;
* )
;;
esac
if [ ! -z $selected ] ;then
for i in "${!nameList[@]}"; do
if [[ "${nameList[$i]}" = "${selected}" ]]; then
nameIndex="${i}"
fi
done
current="${pathList[$nameIndex]}"
_getModules "$current"
else
if [[ "$back" == "$installFolder/settings" ]]; then
clear
exit
else
_goBack
fi
fi
fi
}
# _getConfSelector conf/monitor.conf conf/monitors/
_getConfSelector() {
cur=$(cat $installFolder/conf/$1)
echo "Folder: $installFolder/conf/$2"
echo "In use: ${cur##*/}"
echo ""
echo "Select a file to load (RETURN = Confirm, ESC = Cancel/Back):"
echo ""
sel=$(gum choose $(ls $installFolder/conf/$2))
if [ -z $sel ] ;then
_goBack
fi
echo "File $sel selected."
echo ""
}
_getConfEditor() {
selected=$(gum choose "EXECUTE" "EDIT" "COPY" "DELETE" "CANCEL")
case $selected in
EXECUTE)
_writeConf $1 $2 $3
break;;
EDIT)
vim $installFolder/conf/$3/$2
sleep 1
_reloadModule
break;;
COPY)
echo "Define the new file name. Please use *.conf"
filename=$(gum input --value="custom-${sel##*/}" --placeholder "Enter your filename")
if [ -z $filename ] ;then
echo "ERROR: No filename specified."
else
if ! [[ $filename =~ [^\s]+.conf ]]; then
echo "ERROR: Wrong filename format. Please use *.conf"
else
if [ -f $(dirname $sel)/$filename ] ;then
echo "ERROR: File already exists."
else
cp $installFolder/conf/$3/$sel $installFolder/conf/$3/$filename
_reloadModule
fi
fi
fi
_getConfEditor $1 $2 $3
break;;
DELETE)
if gum confirm "Do you really want to delete the file $sel?" ;then
rm $installFolder/conf/$3/$sel
_reloadModule
else
_getConfEditor $1 $2 $3
fi
break;;
* )
;;
esac
}
# _writeConf conf/monitor.conf $sel
_writeConf() {
if [ ! -z $2 ] ;then
editsel=$(echo "$installFolder/conf/$3/$2" | sed "s+"\/home\/$USER"+~+")
echo "source = $editsel" > $installFolder/conf/$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
}
# replaceLineInFile $findText $customtext $targetFile
_replaceLineInFile() {
# Set function parameters
find_string="$1"
new_string="$2"
file_path=$3
# Counters
find_line_counter=0
line_found=0
if [ -f $file_path ] ;then
# Detect Line
while read -r line
do
((find_line_counter++))
if [[ $line = *$find_string* ]]; then
# echo "Start found in $start_line_counter"
line_found=$find_line_counter
break
fi
done < "$file_path"
if [[ ! "$line_found" == "0" ]] ;then
#Remove the line
sed -i "$line_found d" $file_path
# Add the new line
sed -i "$line_found i $new_string" $file_path
else
echo "ERROR: Target line not found."
sleep 2
fi
else
echo "ERROR: Target file not found."
sleep 2
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
}
# Write the header to a page
_getHeader() {
figlet -w 100 "$1"
if [ ! -z "$2" ]; then
echo "by $2"
fi
echo ""
}
# Update the breadcrumb and opens parent page
_goBack() {
unset clickArr[-1]
unset clickArr[-1]
unset clickArr[-1]
unset clickArr[-1]
_getModules "$back"
}
_reloadModule() {
unset clickArr[-1]
unset clickArr[-1]
_getModules "$current"
}
# Replace the variables in a template and publish to location
_replaceByTemplate() {
template=$1
variables=$2
values=$3
publishto=$4
}
# Back Button
_getBackBtn() {
echo ""
gum choose "Back"
_goBack
}
_getBackRepeatBtn() {
echo ""
selected=$(gum choose "REPEAT" "BACK")
case $selected in
BACK)
_goBack
break;;
REPEAT)
_getModules "$current"
break;;
* )
;;
esac
}

View File

@ -0,0 +1 @@
version="2.0"

View File

@ -0,0 +1,3 @@
name="Animations"
order=1
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,7 @@
#!/bin/bash
_getHeader "$name" "$author"
sel=""
_getConfSelector animation.conf animations
_getConfEditor animation.conf $sel animations
_reloadModule

View File

@ -0,0 +1,3 @@
name="Appearance"
order=10
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,3 @@
name="Decorations"
order=1
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,8 @@
#!/bin/bash
_getHeader "$name" "$author"
sel=""
_getConfSelector decoration.conf decorations
_getConfEditor decoration.conf $sel decorations
setsid $HOME/dotfiles/waybar/launch.sh 1>/dev/null 2>&1 &
_reloadModule

View File

@ -0,0 +1,3 @@
#!/bin/bash
_getHeader "$name"

View File

@ -0,0 +1,3 @@
name="Windows"
order=1
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,7 @@
#!/bin/bash
_getHeader "$name" "$author"
sel=""
_getConfSelector window.conf windows
_getConfEditor window.conf $sel windows
_reloadModule

View File

@ -0,0 +1,6 @@
name="Settings"
description="The settings script will help you to configure your Hyprland installation."
author="Stephan Raabe ML4W"
order=1
email="mail@ml4w.com"
homepage="https://gitlab.com/stephan-raabe/dotfiles"

View File

View File

@ -0,0 +1,4 @@
name="Keybindings"
order=20
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,8 @@
#!/bin/bash
_getHeader "$name"
sel=""
_getConfSelector keybinding.conf keybindings
_getConfEditor keybinding.conf $sel keybindings
_reloadModule

View File

@ -0,0 +1,7 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "ML4W dotfiles Version" $(cat $HOME/dotfiles/.version/name)
echo
echo "$homepage ($email)"
echo
echo $description

View File

@ -0,0 +1,2 @@
name="System"
order=30

View File

@ -0,0 +1,3 @@
name="Custom"
order=10
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,6 @@
#!/bin/bash
_getHeader "$name" "$author"
vim ~/dotfiles/hypr/conf/custom.conf
_goBack

View File

@ -0,0 +1,2 @@
name="Browser"
order=1

View File

@ -0,0 +1,28 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "Define the start command to start your preferred browser (Default: chromium)."
echo
echo "Executable (if installed) are:"
echo "chromium for Chromium"
echo "google-chrome-stable for Google Chrome"
echo "brave for Brave"
echo "firefox for Firefox"
echo
# Define File
targetFile="$HOME/dotfiles/.settings/browser.sh"
# Current Value
echo "Current Value: $(cat $targetFile)"
# Select Value
customvalue=$(gum input --placeholder "Command to start")
if [ ! -z $customvalue ] ;then
# Write into file
echo "$customvalue" > $targetFile
else
echo "Please define a command"
sleep 1
fi
_goBack

View File

@ -0,0 +1,3 @@
name="Default Applications"
order=1
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,2 @@
name="Filemanager"
order=1

View File

@ -0,0 +1,23 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "Define the start command to start the filemanager (Default: thunar)."
# Define File
targetFile="$HOME/dotfiles/.settings/filemanager.sh"
# Current Value
echo "Current Value: $(cat $targetFile)"
# Select Value
customvalue=$(gum input --placeholder "Command to start")
if [ ! -z $customvalue ] ;then
# Write into file
echo "$customvalue" > $targetFile
else
echo "Please define a command"
sleep 1
fi
_goBack

View File

@ -0,0 +1,2 @@
#!/bin/bash
_getHeader "$name"

View File

@ -0,0 +1,2 @@
name="Network"
order=1

View File

@ -0,0 +1,25 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "Define the start command to start the networkmanager (Must be installed on your system)."
echo "(Default: nm-connection-editor)"
echo "Possible values: alacritty -e nmtui, nm-connection-editor, etc."
# Define File
targetFile="$HOME/dotfiles/.settings/networkmanager.sh"
# Current Value
echo "Current Value: $(cat $targetFile)"
# Select Value
customvalue=$(gum input --placeholder "Command to start")
if [ ! -z $customvalue ] ;then
# Write into file
echo "$customvalue" > $targetFile
else
echo "Please define a command"
sleep 1
fi
_goBack

View File

@ -0,0 +1,2 @@
name="Software"
order=1

View File

@ -0,0 +1,23 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "Define the start command to start the software manager (Default: alacritty -e pacseek)."
# Define File
targetFile="$HOME/dotfiles/.settings/software.sh"
# Current Value
echo "Current Value: $(cat $targetFile)"
# Select Value
customvalue=$(gum input --placeholder "Command to start")
if [ ! -z $customvalue ] ;then
# Write into file
echo "$customvalue" > $targetFile
else
echo "Please define a command"
sleep 1
fi
_goBack

View File

@ -0,0 +1,2 @@
name="Terminal"
order=1

View File

@ -0,0 +1,23 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "Define the command to open the terminal (Default: alacritty)."
# Define File
targetFile="$HOME/dotfiles/.settings/terminal.sh"
# Current Value
echo "Current Value: $(cat $targetFile)"
# Select Value
customvalue=$(gum input --placeholder "Command to start")
if [ ! -z $customvalue ] ;then
# Write into file
echo "$customvalue" > $targetFile
else
echo "Please define a command"
sleep 1
fi
_goBack

View File

@ -0,0 +1,3 @@
name="Environment"
order=05
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,7 @@
#!/bin/bash
_getHeader "$name" "$author"
sel=""
_getConfSelector environment.conf environments
_getConfEditor environment.conf $sel environments
_reloadModule

View File

@ -0,0 +1,2 @@
name="Keyboard"
order=30

View File

@ -0,0 +1,2 @@
#!/bin/bash
_getHeader "$name"

View File

@ -0,0 +1,2 @@
name="Natural Scrolling"
order=1

View File

@ -0,0 +1,31 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "Enable/Disable the natural scrolling for touchpads."
# Define File
targetFile="$HOME/dotfiles/hypr/conf/keyboard.conf"
settingsFile="$HOME/dotfiles/.settings/keyboard_naturalscroll"
# Define Markers
findMarker="natural_scroll"
# Select Value
customvalue=$(gum choose "Enable" "Disable")
if [ ! -z $customvalue ]; then
if [ "$customvalue" == "Enable" ] ;then
customtext=" natural_scroll = true"
else
customtext=" natural_scroll = false"
fi
_replaceLineInFile "$findMarker" "$customtext" "$targetFile"
_writeSettings "$settingsFile" "$customtext"
echo "Keyboard settings changed."
sleep 2
_goBack
else
echo "ERROR: Define a value."
sleep 2
_goBack
fi

View File

@ -0,0 +1,2 @@
#!/bin/bash
_getHeader "$name"

View File

@ -0,0 +1,3 @@
name="Monitor"
order=01
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,7 @@
#!/bin/bash
_getHeader "$name" "$author"
sel=""
_getConfSelector monitor.conf monitors
_getConfEditor monitor.conf $sel monitors
_reloadModule

View File

@ -0,0 +1,2 @@
name="nw-applet "
order=1

View File

@ -0,0 +1,35 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "Enable or disable the network manager applet (nw-applet) in the Systray."
echo "(nw-applet must be installed on your system)"
echo "IMPORTANT: Please reboot your system after a change."
echo
# Define File
targetFile1="$HOME/dotfiles/hypr/conf/autostart.conf"
settingsFile="$HOME/dotfiles/.settings/waybar_nmapplet"
# Define Markers
startMarker="START NM APPLET"
endMarker="END NM APPLET"
# Select Value
customvalue=$(gum choose "Enable" "Disable")
if [ ! -z $customvalue ]; then
if [ "$customvalue" == "Enable" ] ;then
customtext="exec-once = nm-applet"
else
customtext="# exec-once = nm-applet"
fi
_replaceInFile $startMarker $endMarker $customtext $targetFile1
_writeSettings $settingsFile $customtext
# Reload Waybar
_goBack
else
echo "ERROR: Define a value."
sleep 2
_goBack
fi

View File

@ -0,0 +1,4 @@
name="Windowrules"
order=09
author="Stephan Raabe ML4W"

View File

@ -0,0 +1,7 @@
#!/bin/bash
_getHeader "$name" "$author"
sel=""
_getConfSelector windowrule.conf windowrules
_getConfEditor windowrule.conf $sel windowrules
_reloadModule

View File

@ -0,0 +1,2 @@
name="Apps Label"
order=1

View File

@ -0,0 +1,33 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "Define the label of the Apps Starter (Default is Apps). "
# Define File
targetFile="$HOME/dotfiles/waybar/modules.json"
settingsFile="$HOME/dotfiles/.settings/waybar_appslabel"
# Define Markers
startMarker="START APPS LABEL"
endMarker="END APPS LABEL"
# Define Replacement Template
customtemplate="\"format\": \"VALUE\","
# Select Value
customvalue=$(gum input --placeholder="Define the Apps label")
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
else
echo "ERROR: Define a value."
sleep 2
_goBack
fi

View File

@ -0,0 +1,2 @@
name="Show/Hide Bluetooth"
order=1

View File

@ -0,0 +1,44 @@
#!/bin/bash
_getHeader "$name" "$author"
echo "Hide or show the bluetooth module in ML4W waybar themes."
# Define File
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"
targetFile5="$HOME/dotfiles/waybar/themes/ml4w-minimal/config"
settingsFile="$HOME/dotfiles/.settings/waybar_bluetooth"
# Define Markers
startMarker="START BT TOOGLE"
endMarker="END BT TOOGLE"
# Select Value
customvalue=$(gum choose "SHOW" "HIDE" "DEFAULT")
if [ ! -z $customvalue ]; then
if [ "$customvalue" == "SHOW" ] ;then
customtext=" \"bluetooth\","
elif [ "$customvalue" == "DEFAULT" ] ;then
customtext=" \"bluetooth\","
else
customtext=" \/\/\"bluetooth\","
fi
_replaceInFile $startMarker $endMarker $customtext $targetFile1
_replaceInFile $startMarker $endMarker $customtext $targetFile2
_replaceInFile $startMarker $endMarker $customtext $targetFile3
_replaceInFile $startMarker $endMarker $customtext $targetFile4
_replaceInFile $startMarker $endMarker $customtext $targetFile5
_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
_goBack
fi

Some files were not shown because too many files have changed in this diff Show More