Compare commits

..

57 Commits

Author SHA1 Message Date
77b6b90448 Merge branch 'upstream-main' into upstream-custom 2024-05-05 16:40:17 -04:00
Stephan Raabe
176a8671f4 Updates 2024-05-04 15:10:09 +02:00
Stephan Raabe
735eaa9fcb Updates 2024-05-04 12:36:11 +02:00
Stephan Raabe
93964f35fd Updates 2024-05-03 10:19:07 +02:00
Stephan Raabe
8c80af8bb4 Updates 2024-05-03 10:14:33 +02:00
Stephan Raabe
621ffd5b70 Updates 2024-05-03 09:40:11 +02:00
Stephan Raabe
b6f81adc5d Updates 2024-05-03 09:20:03 +02:00
Stephan Raabe
cfb1f1c047 Updates 2024-05-02 16:17:38 +02:00
Stephan Raabe
1e12fa0dde Updates 2024-05-02 16:15:55 +02:00
Stephan Raabe
e99f976b65 Updates 2024-05-02 15:59:08 +02:00
Stephan Raabe
a86d7b405b Updates 2024-05-01 22:42:58 +02:00
Stephan Raabe
40a5a58e49 Updates 2024-05-01 16:08:42 +02:00
Stephan Raabe
32bcdb5b3f Updates 2024-05-01 13:40:33 +02:00
Stephan Raabe
3d84b89e9a Updates 2024-05-01 12:48:38 +02:00
Stephan Raabe
207732dae4 Updates 2024-05-01 12:39:24 +02:00
Stephan Raabe
ec9914bdd8 Updates 2024-05-01 12:31:57 +02:00
Stephan Raabe
81fdf76484 Updates 2024-05-01 12:18:47 +02:00
Stephan Raabe
bbfa43dde9 Updates 2024-04-29 18:48:44 +02:00
Stephan Raabe
77e1addb79 Updates 2024-04-29 17:17:53 +02:00
Stephan Raabe
7bc0591f27 Updates 2024-04-29 17:14:48 +02:00
Stephan Raabe
cb19006150 Updates 2024-04-29 17:12:13 +02:00
Stephan Raabe
90ad0e5667 Updates 2024-04-29 17:01:51 +02:00
Stephan Raabe
3bbbd148a0 Updates 2024-04-29 16:49:46 +02:00
Stephan Raabe
87fc11d2dd Updates 2024-04-29 13:29:28 +02:00
Stephan Raabe
53ad524aff Updates 2024-04-29 11:24:02 +02:00
Stephan Raabe
0806192575 Updates 2024-04-28 12:26:00 +02:00
Stephan Raabe
6032c57720 Updates 2024-04-28 12:24:22 +02:00
Stephan Raabe
b7a46d3e25 Updates 2024-04-28 12:19:31 +02:00
Stephan Raabe
2e813c99f0 Updates 2024-04-28 11:50:04 +02:00
Stephan Raabe
98f9c6905b Updates 2024-04-28 10:41:41 +02:00
Stephan Raabe
e03fd1873c Updates 2024-04-26 14:51:10 +02:00
Stephan Raabe
a620ab6b3e Updates 2024-04-26 13:06:46 +02:00
Stephan Raabe
0828e88abd Updates 2024-04-25 18:21:46 +02:00
Stephan Raabe
5371e8dfc2 Updates 2024-04-25 18:21:20 +02:00
Stephan Raabe
181e2ab7cc Updates 2024-04-22 21:31:49 +02:00
Stephan Raabe
bf967e3441 Updates 2024-04-22 21:21:01 +02:00
Stephan Raabe
41a2d95a3b Delete ML4W_Hyprland_Settings-x86_64.AppImage 2024-04-22 19:12:01 +00:00
Stephan Raabe
a760eba53a Updates 2024-04-22 15:55:59 +02:00
Stephan Raabe
4ee14513e8 Updates 2024-04-22 15:52:39 +02:00
Stephan Raabe
7093c2651b Updates 2024-04-22 15:32:53 +02:00
Stephan Raabe
5da5231276 Updates 2024-04-22 14:46:08 +02:00
Stephan Raabe
7cbb584d37 Updates 2024-04-21 12:52:34 +02:00
Stephan Raabe
36ed47bf73 Updates 2024-04-21 10:29:05 +02:00
Stephan Raabe
1ee73645e1 Updates 2024-04-20 17:57:31 +02:00
Stephan Raabe
be8b15c1a0 Updates 2024-04-16 21:54:43 +02:00
Stephan Raabe
1b36fb7b1b Updates 2024-04-16 21:46:53 +02:00
Stephan Raabe
55f7feea4f Updates 2024-04-15 16:24:29 +02:00
Stephan Raabe
9b12ae080e Updates 2024-04-15 16:23:56 +02:00
Stephan Raabe
32a6c0326d Updates 2024-04-15 15:49:05 +02:00
Stephan Raabe
a2e12e02cc Updates 2024-04-15 14:03:35 +02:00
Stephan Raabe
c10f12bf71 Updates Hyprlock 2024-04-14 13:02:32 +02:00
Stephan Raabe
899301889b Updates 2024-04-11 21:09:32 +02:00
Stephan Raabe
1e8ec3ff14 Updates 2024-04-11 21:08:12 +02:00
Stephan Raabe
325eacb0cc Updates 2024-04-11 20:39:24 +02:00
Stephan Raabe
4539e17b07 Updates 2024-04-11 20:38:54 +02:00
Stephan Raabe
3236e20add Updates 2024-04-11 20:32:57 +02:00
Stephan Raabe
7c2c3cc12d Update 2.9 2024-04-11 19:53:34 +02:00
92 changed files with 1213 additions and 125 deletions

View File

@ -37,8 +37,15 @@ alias rw='~/dotfiles/waybar/reload.sh'
alias winclass="xprop | grep 'CLASS'" 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'
# -----------------------------------------------------
# ML4W Apps
# -----------------------------------------------------
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' alias ml4w-settings='~/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage'
alias ml4w-sidebar='~/dotfiles/eww/ml4w-sidebar/launch.sh'
alias ml4w-hyprland='~/dotfiles/apps/ML4W_Hyprland_Settings-x86_64.AppImage'
alias ml4w-diagnosis='~/dotfiles/scripts/diagnosis.sh'
# ----------------------------------------------------- # -----------------------------------------------------
# Window Managers # Window Managers

View File

@ -21,4 +21,12 @@ 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 cp $HOME/dotfiles/apps/ml4w-dotfiles-settings.desktop $HOME/.local/share/applications
echo ":: ML4W Dotfiles Settings App installed successfully" echo ":: ML4W Dotfiles Settings App installed successfully"
sed -i "s|HOME|${HOME}|g" $HOME/dotfiles/apps/ml4w-hyprland-settings.desktop
cp $HOME/dotfiles/apps/ml4w-hyprland-settings.desktop $HOME/.local/share/applications
echo ":: ML4W Hyprland Settings App installed successfully"
echo
if [ -f ~/.config/ml4w-hyprland-settings/hyprctl.sh ] ;then
echo ":: Starting restore from ML4W Hyprland Settings App"
~/.config/ml4w-hyprland-settings/hyprctl.sh
fi
echo echo

View File

@ -44,6 +44,9 @@ if [ -d ~/dotfiles ] || ! test -L ~/.bashrc || [ -d ~/.config/hypr ] || [ -d ~/.
if ! test -L ~/.config/hypr && [ -d ~/.config/hypr ] ;then if ! test -L ~/.config/hypr && [ -d ~/.config/hypr ] ;then
echo " - $HOME/.config/hypr/" echo " - $HOME/.config/hypr/"
fi fi
if ! test -L ~/.config/ml4w-hyprland-settings && [ -d ~/.config/ml4w-hyprland-settings ] ;then
echo " - $HOME/.config/ml4w-hyprland-settings/"
fi
if ! test -L ~/.config/rofi && [ -d ~/.config/rofi ] ;then if ! test -L ~/.config/rofi && [ -d ~/.config/rofi ] ;then
echo " - $HOME/.config/rofi/" echo " - $HOME/.config/rofi/"
fi fi
@ -107,6 +110,10 @@ if [ -d ~/dotfiles ] || ! test -L ~/.bashrc || [ -d ~/.config/hypr ] || [ -d ~/.
cp -r ~/.config/hypr ~/dotfiles-versions/backup/config cp -r ~/.config/hypr ~/dotfiles-versions/backup/config
echo ":: Backup of $HOME/.config/hypr created in ~/dotfiles-versions/backup/config/" echo ":: Backup of $HOME/.config/hypr created in ~/dotfiles-versions/backup/config/"
fi fi
if ! test -L ~/.config/ml4w-hyprland-settings && [ -d ~/.config/ml4w-hyprland-settings ] ;then
cp -r ~/.config/ml4w-hyprland-settings ~/dotfiles-versions/backup/config
echo ":: Backup of $HOME/.config/ml4w-hyprland-settings created in ~/dotfiles-versions/backup/config/"
fi
if ! test -L ~/.config/qtile && [ -d ~/.config/rofi ] ;then if ! test -L ~/.config/qtile && [ -d ~/.config/rofi ] ;then
cp -r ~/.config/rofi ~/dotfiles-versions/backup/config cp -r ~/.config/rofi ~/dotfiles-versions/backup/config
echo ":: Backup of $HOME/.config/rofi created in ~/dotfiles-versions/backup/config/" echo ":: Backup of $HOME/.config/rofi created in ~/dotfiles-versions/backup/config/"

View File

@ -36,6 +36,13 @@ if [ -d ~/dotfiles/hypr/settings/ ] ;then
echo ":: ~/dotfiles/hypr/settings removed." echo ":: ~/dotfiles/hypr/settings removed."
fi fi
if [ -f ~/dotfiles/.settings/eww-monitor.sh ] ;then
if grep -q "echo" $HOME/dotfiles/.settings/eww-monitor.sh ; then
rm ~/dotfiles/.settings/eww-monitor.sh
echo ":: ~/dotfiles/.settings/eww-monitor.sh removed."
fi
fi
# Create default folder structure # Create default folder structure
xdg-user-dirs-update xdg-user-dirs-update
echo echo

28
.install/diagnosis.sh Normal file
View File

@ -0,0 +1,28 @@
echo -e "${GREEN}"
figlet "System check"
echo -e "${NONE}"
echo "The system check will test that essential packages and "
echo "execution commands are available now on your system."
if gum confirm "Do you want to run a short system check?" ;then
_folderExists "$HOME/dotfiles" "Please repeat the installation."
_commandExists "rofi" "rofi-wayland"
_commandExists "dunst" "dunst"
_commandExists "waybar" "waybar"
_commandExists "hyprpaper" "hyprpaper"
_commandExists "hyprlock" "hyprpaper"
_commandExists "hypridle" "hyprpaper"
_commandExists "wal" "python-pywal"
_commandExists "gum" "gum"
_commandExists "wlogout" "wlogout"
_commandExists "eww" "eww"
_commandExists "magick" "imagemagick"
elif [ $? -eq 130 ]; then
exit 130
else
echo ":: System check skipped"
fi
echo ""

View File

@ -30,25 +30,25 @@ if [ ! -d ~/dotfiles ];then
disman=0 disman=0
echo "You have already installed a display manager on your system." echo "You have already installed a display manager on your system."
echo "How do you want to proceed?" echo "How do you want to proceed?"
dmsel=$(gum choose "Keep current setup" "Deactivate current display manager" "Install sddm") dmsel=$(gum choose "Keep current setup" "Deactivate current display manager" "Install sddm and theme")
else else
disman=1 disman=1
echo "There is no display manager installed on your system." echo "There is no display manager installed on your system."
echo "After the installation/update of the dotfiles, you can start Hyprland with command Hyprland and Qtile with commmand Qtile (or startx)." echo "After the installation/update of the dotfiles, you can start Hyprland with command Hyprland and Qtile with commmand Qtile (or startx)."
echo "How do you want to proceed?" echo "How do you want to proceed?"
dmsel=$(gum choose "Keep current setup" "Install sddm") dmsel=$(gum choose "Keep current setup" "Install sddm and theme")
fi fi
else else
if [ -f /etc/systemd/system/display-manager.service ]; then if [ -f /etc/systemd/system/display-manager.service ]; then
disman=0 disman=0
echo "You have already installed a display manager. If your display manager is working fine, you can keep the current setup." echo "You have already installed a display manager. If your display manager is working fine, you can keep the current setup."
echo "How do you want to proceed?" echo "How do you want to proceed?"
dmsel=$(gum choose "Keep current setup" "Deactivate current display manager" "Install sddm") dmsel=$(gum choose "Keep current setup" "Deactivate current display manager" "Install sddm and theme")
else else
disman=1 disman=1
echo "There is no display manager installed on your system. You're starting Hyprland/Qtile with commands on tty." echo "There is no display manager installed on your system. You're starting Hyprland/Qtile with commands on tty."
echo "How do you want to proceed?" echo "How do you want to proceed?"
dmsel=$(gum choose "Keep current setup" "Install sddm") dmsel=$(gum choose "Keep current setup" "Install sddm and theme")
fi fi
fi fi
@ -56,7 +56,7 @@ if [ -z "${dmsel}" ] ;then
echo "Installation canceled." echo "Installation canceled."
exit exit
fi fi
if [ "$dmsel" == "Install sddm" ] ;then if [ "$dmsel" == "Install sddm and theme" ] ;then
disman=0 disman=0
# Try to force the installation of sddm # Try to force the installation of sddm

View File

@ -37,5 +37,8 @@ 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
if [ -d ~/dotfiles-versions/$version/swappy ]; then
_installSymLink eww ~/.config/eww ~/dotfiles/eww/ ~/.config
fi
echo ":: Symbolic links created." echo ":: Symbolic links created."
echo echo

View File

@ -273,3 +273,25 @@ _replaceLineInFile() {
sleep 2 sleep 2
fi fi
} }
# ------------------------------------------------------
# System check
# ------------------------------------------------------
_commandExists() {
package="$1";
if ! type $package > /dev/null 2>&1; then
echo ":: ERROR: $package doesn't exists. Please install it with yay -S $2"
else
echo ":: OK: $package command found."
fi
}
_folderExists() {
folder="$1";
if [ ! -d $folder ]; then
echo ":: ERROR: $folder doesn't exists. $2"
else
echo ":: OK: $folder found."
fi
}

3
.install/neovim.sh Normal file → Executable file
View File

@ -6,7 +6,8 @@ if [ -d ~/dotfiles/nvim ]; then
echo -e "${GREEN}" echo -e "${GREEN}"
figlet "Neovim" figlet "Neovim"
echo -e "${NONE}" echo -e "${NONE}"
if gum confirm "Do you want to install the ML4W Neovim configuration and overwrite your existing configuration?"; then echo ":: The script has detected a nvim folder."
if gum confirm "Do you want to install the ML4W Neovim configuration?"; then
echo ":: ML4W Neovim configuration will be installed" echo ":: ML4W Neovim configuration will be installed"
neovim=1 neovim=1
else else

View File

@ -17,7 +17,6 @@ packagesPacman=(
"dunst" "dunst"
"starship" "starship"
"mpv" "mpv"
"freerdp"
"thunar" "thunar"
"mousepad" "mousepad"
"noto-fonts" "noto-fonts"
@ -32,6 +31,8 @@ packagesPacman=(
"python-psutil" "python-psutil"
"python-rich" "python-rich"
"python-click" "python-click"
"python-pywal"
"python-gobject"
"pavucontrol" "pavucontrol"
"tumbler" "tumbler"
"blueman" "blueman"
@ -52,11 +53,12 @@ packagesPacman=(
"fuse2" "fuse2"
"gtk4" "gtk4"
"libadwaita" "libadwaita"
"python-pywal"
"xdg-desktop-portal" "xdg-desktop-portal"
"qalculate-gtk" "qalculate-gtk"
"imagemagick" "imagemagick"
"guvcview" "guvcview"
"jq"
"rofi-wayland"
); );
packagesYay=( packagesYay=(
@ -64,5 +66,4 @@ packagesYay=(
"bibata-cursor-theme" "bibata-cursor-theme"
"trizen" "trizen"
"pacseek" "pacseek"
"rofi-lbonn-wayland"
); );

View File

@ -16,4 +16,5 @@ packagesYay=(
"wlogout" "wlogout"
"nwg-look" "nwg-look"
"emote" "emote"
"eww"
); );

View File

@ -28,6 +28,13 @@ if [[ $(_isInstalledYay "swaylock-effects-git") == 0 ]]; then
echo echo
fi fi
# Remove rofi-lbonn-wayland
if [[ $(_isInstalledYay "rofi-lbonn-wayland") == 0 ]]; then
yay --noconfirm -Rns rofi-lbonn-wayland
echo ":: rofi-lbonn-wayland removed"
echo
fi
# Remove hypridle-bin # Remove hypridle-bin
if [[ $(_isInstalledYay "hypridle-git") == 0 ]]; then if [[ $(_isInstalledYay "hypridle-git") == 0 ]]; then
yay --noconfirm -Rns hypridle-git yay --noconfirm -Rns hypridle-git
@ -40,7 +47,7 @@ if [[ $(_isInstalledYay "hypridle-git") == 0 ]]; then
echo echo
fi fi
# Remove hypridle-bin # Remove hyprlock-bin
if [[ $(_isInstalledYay "hyprlock-git") == 0 ]]; then if [[ $(_isInstalledYay "hyprlock-git") == 0 ]]; then
yay --noconfirm -Rns hyprlock-git yay --noconfirm -Rns hyprlock-git
if [ -f /usr/lib/debug/usr/bin/hyprlock.debug ] ;then if [ -f /usr/lib/debug/usr/bin/hyprlock.debug ] ;then

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. CTRL-C/No selection = Skip Restore)"
echo "" echo ""
restorelist="" restorelist=""
if [ -f ~/dotfiles/.bashrc ]; then if [ -f ~/dotfiles/.bashrc ]; then

View File

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

1
.settings/eww-monitor.sh Executable file
View File

@ -0,0 +1 @@
auto

View File

@ -1 +1 @@
swww hyprpaper

View File

@ -1 +1 @@
2.8.4 2.9

View File

@ -1 +1 @@
2840 2900

View File

@ -1,3 +1,17 @@
Version 2.9
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.9
--------------------------------------------------------
- New Hyprland Settings App. Can be launched from the App Launcher, the ML4W Welcome App or the new ML4W logo context menu (right click)
- Added sidebar menu. Start with click on ML4W Logo in Waybar. Right click starts the welcome app
- Updated hyprlock screen showing the wallpaper in a circle. hyprlock 3 required
- Waybar Taskbar Module hidden by default. Can be enabled again in the ML4W Settings App
- Hyprpaper is now the default wallpaper engine. swww can be activiated
- Animations can be disabled in the Dotfiles Settings app
- Animations can be toggled (enabled/disabled) temporarily with SUPER + SHIFT + A
- Keyboard layout is part of the system information module of waybar
- nm-applet can be started from the ML4W Welcome App menu Settings/System
- New diagnosis features checks that essential command are available. Enter ml4w-diagnosis in a terminal or from the ML4W Welcome App
Version 2.8.4 Version 2.8.4
https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.4 https://gitlab.com/stephan-raabe/dotfiles/-/releases/2.8.4
-------------------------------------------------------- --------------------------------------------------------

135
README.md
View File

@ -1,14 +1,16 @@
# ML4W Dotfiles 2.8.4 # ML4W Dotfiles 2.9
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. 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.
[![Screenshot](screenshots/v284/screenshot-284-1.png "Title Text")](screenshots/v283/screenshot-284-1.png) [![Screenshot](screenshots/v29/screenshot-29-1.png "Screenshot")](screenshots/v29/screenshot-29-1.png)
The ML4W Dotfiles are available as The ML4W Dotfiles are available as
- main release (Official release): [https://gitlab.com/stephan-raabe/dotfiles](https://gitlab.com/stephan-raabe/dotfiles) - 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) - rolling release (Development release): [https://gitlab.com/stephan-raabe/dotfiles/-/tree/dev](https://gitlab.com/stephan-raabe/dotfiles/-/tree/dev)
YouTube Video [https://youtu.be/HMxHUvN6VGo](https://youtu.be/HMxHUvN6VGo)
[TOC] [TOC]
# Installation # Installation
@ -23,12 +25,12 @@ The dotfiles are tested with the following Arch based distributions:
- Arch Linux (recommended) - Arch Linux (recommended)
- EndeavourOS - EndeavourOS
- Garuda Linux
- Arco Linux - Arco Linux
- Manjaro Linux
The installation should work on all Arch Linux based distributions as well. 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 Manjaro users:** Hyprland and required packages are under ongoing development. That's why it could be possible that some packages are not immediatly available on Manjaro. But usually, the packages will be published later. Maybe you can install required packages manually.
> **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.
@ -44,25 +46,40 @@ If possible, please create a snapshot of your current system if snapper or Times
The easiest way to install the ML4W Dotfiles is to use the ML4W Dotfiles Installer App. 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... into your Downloads Folder) [You can download the app here.](https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/apps/installer.AppImage) (Right click + Save link as... into your Downloads Folder)
Or with wget if your starting point is a minimal Arch Linux installation without DE:
``` ```
mkdir ~/Downloads # If Downloads folder doesn't exists # 1.) Change to the Downloads folder
wget -P ~/Downloads/ https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/apps/ML4W_Dotfiles_Installer.AppImage
```
```
# Change to the Downloads folder
cd ~/Downloads cd ~/Downloads
# Make the file executable # 2.) Make the file executable
chmod +x ML4W_Dotfiles_Installer.AppImage chmod +x installer.AppImage
# 3.) Start the App from your terminal with
./installer.AppImage
```
Or with download the Installer App with wget if your starting point is a minimal Arch Linux with without DE from tty:
```
# 0.) Install required packages
sudo pacman -S wget fuse2 # Only required for Minimal Arch installations. If wget or libfuse.so.2 is not installed.
# 1.) Create Downloads folder
mkdir ~/Downloads # If Downloads folder doesn't exists
# 2.) Download the installer
wget -P ~/Downloads/ https://gitlab.com/stephan-raabe/dotfiles/-/raw/main/apps/installer.AppImage
# 3.) Change to the Downloads folder
cd ~/Downloads
# 4.) Make the file executable
chmod +x installer.AppImage
# 5.) Start the App from your terminal with
./installer.AppImage
# Start the App from your terminal with
./ML4W_Dotfiles_Installer.AppImage
``` ```
Alternatively you can install with GIT. Alternatively you can install with GIT.
@ -182,20 +199,34 @@ All keybindings for Hyprland with right mouse click on Apps in waybar or here:
# Hyprland # Hyprland
<a href="https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/screenshots/v284/screenshot-284-1.png?ref_type=heads" target="_blank"><img src="screenshots/v284/screenshot-284-1.png" /></a> [![Screenshot](screenshots/v29/screenshot-29-2.png "Screenshot")](screenshots/v29/screenshot-29-2.png)
<a href="https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/screenshots/v28/screenshot-28-2.png?ref_type=heads" target="_blank"><img src="screenshots/v28/screenshot-28-2.png" /></a>
<a href="https://gitlab.com/stephan-raabe/dotfiles/-/blob/main/screenshots/v28/screenshot-28-3.png?ref_type=heads" target="_blank"><img src="screenshots/v28/screenshot-28-3.png" /></a> [![Screenshot](screenshots/v29/screenshot-29-3.png "Screenshot")](screenshots/v29/screenshot-29-3.png)
<b><a href="https://gitlab.com/stephan-raabe/dotfiles/-/tree/main/screenshots?ref_type=heads">You can find more screenshots here.</a></b>
<a href="https://youtu.be/e9ro_P9rbFk" target="_blank">Watch on YouTube</a> <a href="https://youtu.be/HMxHUvN6VGo" target="_blank">Watch on YouTube</a>
## ML4W Sidebar
With the ML4W Sidebar you have access to all included ML4W Applications and some system information. In addition, you start the main power features for your system.
You can also start the sidebar from the terminal with
```
ml4w-sidebar
```
<img src="screenshots/screenshot-sidebar.png" />
## 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 opens. This app is the starting point to discover the Hyprland setup.
You can also start the Welcome App from the terminal with
```
ml4w
```
<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.
@ -233,6 +264,34 @@ You can also edit the file custom.conf which is included at the bottom of the hy
You can find the sourcecode of the ML4W Dotfiles Settings App in this repository: You can find the sourcecode of the ML4W Dotfiles Settings App in this repository:
https://gitlab.com/stephan-raabe/ml4w-dotfiles-settings https://gitlab.com/stephan-raabe/ml4w-dotfiles-settings
You can also start the Dotfiles App from the terminal with
```
ml4w-settings
```
## ML4W Hyprland Settings App
This applications supports you to customize your Hyprland installation. You can overwrite the existing configuration with custom values without adding complex configuration files.
[![Screenshot](screenshots/screenshot-hyprland-settings.png "ML4W Hyprland Settings")](screenshots/screenshot.png)
YOu can start the application from the application launcher, the ML4W Sidebar by clicking the ML4W Logo or from the welcome app.
The app shows variables and current values of your running Hyprland.
You can change the values and overwrite the existing values. The change will be axecuted immediatly.
In the Set Variables tab you can see which values you have overwritten and can restore the old values be removing the entry.
You can also start the Hyprland App from the terminal with
```
ml4w-hyprland
```
You can find the sourcecode of the ML4W Hyprland Settings App in this repository:
https://gitlab.com/stephan-raabe/ml4w-hyprland-settings
## Hyprland Configuration Variations ## 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. 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.
@ -275,11 +334,11 @@ https://gist.github.com/PowerBall253/2dea6ddf6974ba4e5d26c3139ffb7580
- Terminal: alacritty - Terminal: alacritty
- Editor: nvim - Editor: nvim
- Prompt: starship - Prompt: starship
- Wallpaper: swww or hyprpaper - Wallpaper: hyprpaper (swww optional)
- Icons: Font Awesome - Icons: Font Awesome
- Launch Menus: Rofi (Wayland fork) - Launch Menus: Rofi (Wayland)
- Colorscheme: pywal - Colorscheme: pywal
- Browsers: chromium (brave optional) - Browsers: Chromium
- Filemanager: Thunar - Filemanager: Thunar
- Cursor: Bibata Modern Ice - Cursor: Bibata Modern Ice
- Icons: Papirus-Icon-Theme - Icons: Papirus-Icon-Theme
@ -308,14 +367,14 @@ 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
- Filemanager: Thunar - Filemanager: Thunar
- Cursor: Bibata Modern Ice - Cursor: Bibata Modern Ice
- Icons: Papirus-Icon-Theme - Icons: Papirus-Icon-Theme
- Status Bar: Qtile status bar - Status Bar: Qtile status bar
- Compositor: picom - Compositor: picom (optional)
- Screenshots: scrot - Screenshots: scrot
# Installation/Update with GIT # Installation/Update with GIT
@ -389,19 +448,25 @@ If you want to install only the core packages of Hyprland as a starting point fo
# Troubleshooting # Troubleshooting
## Wallpaper issues (grey or distroyed image) with latest swww 0.9.1 The ML4W Welcome App includes a system diagnosis feature available in the menu with the three dots.
Please install the latest version of the ML4W Dotfiles > 2.8.4 Please run the diagnosis to see if all essential packages and related commands are available on your system.
Or replace the swww launch command in /dotfiles/hypr/conf/autostart.conf with If not, you need to install the missing packages manually.
## rofi (application launcher) is not working
If the installation of rofi-wayland fails in the installation/update procedure please try to install it manually:
``` ```
exec-once = swww init || swww-daemon --format xrgb yay -S rofi-wayland
``` ```
> 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. If rofi-wayland isn't available please try rofi:
You can use the ML4W Dotfiles Settings app to replace swww with hyprpaper. ```
yay -S rofi
```
## hypridle and hyprlock is not starting after an update of the dotfiles ## hypridle and hyprlock is not starting after an update of the dotfiles

Binary file not shown.

Binary file not shown.

View File

@ -2,6 +2,6 @@
Type=Application Type=Application
Name=ML4W Dotfiles Settings App Name=ML4W Dotfiles Settings App
Exec=HOME/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage Exec=HOME/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage
Icon=HOME/dotfiles/apps/ml4w-icon.png Icon=HOME/dotfiles/apps/ml4w-dotfiles-settings.png
Terminal=false Terminal=false
Categories=Utility Categories=Utility

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
apps/ml4w-welcome.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<g fill="#2e3436">
<path style="fill:#dfdfdf" d="m 3 5 v 0.003906 c -0.265625 0 -0.519531 0.105469 -0.707031 0.289063 l -2 2 c -0.3906252 0.390625 -0.3906252 1.023437 0 1.414062 l 2 2 c 0.1875 0.183594 0.441406 0.289063 0.707031 0.285157 v 0.007812 h 1 v -2 h 5 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 h -5 v -2 z m 0 0"/>
<path style="fill:#dfdfdf" d="m 12 1 c 1.644531 0 3 1.355469 3 3 v 8 c 0 1.644531 -1.355469 3 -3 3 h -4 c -1.644531 0 -3 -1.355469 -3 -3 v -1 c 0 -0.550781 0.449219 -1 1 -1 s 1 0.449219 1 1 v 1 c 0 0.570312 0.429688 1 1 1 h 4 c 0.570312 0 1 -0.429688 1 -1 v -8 c 0 -0.570312 -0.429688 -1 -1 -1 h -4 c -0.570312 0 -1 0.429688 -1 1 v 1 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 v -1 c 0 -1.644531 1.355469 -3 3 -3 z m 0 0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 929 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<g fill="#2e3436">
<path style="fill:#dfdfdf" d="m 3 1 h 3 c 0.550781 0 1 0.449219 1 1 v 12 c 0 0.550781 -0.449219 1 -1 1 h -3 c -0.550781 0 -1 -0.449219 -1 -1 v -12 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
<path style="fill:#dfdfdf" d="m 10 1 h 3 c 0.550781 0 1 0.449219 1 1 v 12 c 0 0.550781 -0.449219 1 -1 1 h -3 c -0.550781 0 -1 -0.449219 -1 -1 v -12 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 561 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<path style="fill:#dfdfdf" d="m 8 1 c -2.199219 0 -4 1.800781 -4 4 v 2 c -1.109375 0 -2 0.890625 -2 2 v 5 c 0 0.554688 0.445312 1 1 1 h 10 c 0.554688 0 1 -0.445312 1 -1 v -5 c 0 -1.109375 -0.890625 -2 -2 -2 v -2 c 0 -2.199219 -1.800781 -4 -4 -4 z m 0 2 c 1.125 0 2 0.875 2 2 v 2 h -4 v -2 c 0 -1.125 0.875 -2 2 -2 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 478 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<path style="fill:#dfdfdf" d="m 8 0 c -0.550781 0 -1 0.449219 -1 1 v 5 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -5 c 0 -0.550781 -0.449219 -1 -1 -1 z m -7 1 l 2.050781 2.050781 c -2.117187 2.117188 -2.652343 5.355469 -1.332031 8.039063 c 1.324219 2.683594 4.214844 4.238281 7.179688 3.851562 c 2.96875 -0.386718 5.367187 -2.625 5.960937 -5.554687 c 0.59375 -2.933594 -0.75 -5.929688 -3.335937 -7.433594 c -0.476563 -0.28125 -1.089844 -0.117187 -1.367188 0.359375 s -0.117188 1.089844 0.359375 1.367188 c 1.851563 1.078124 2.808594 3.207031 2.382813 5.3125 c -0.421876 2.101562 -2.128907 3.691406 -4.253907 3.96875 c -2.128906 0.273437 -4.183593 -0.828126 -5.128906 -2.753907 s -0.566406 -4.226562 0.949219 -5.742187 l 1.535156 1.535156 v -4.003906 c 0 -0.519532 -0.449219 -0.996094 -1 -0.996094 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 967 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="64px" viewBox="0 0 16 16" width="64px" xmlns="http://www.w3.org/2000/svg">
<path style="fill:#dfdfdf" d="m 8 0 c -0.550781 0 -1 0.449219 -1 1 v 5 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -5 c 0 -0.550781 -0.449219 -1 -1 -1 z m -3.136719 1.816406 c -0.128906 0.015625 -0.253906 0.058594 -0.367187 0.125 c -2.734375 1.582032 -4.074219 4.816406 -3.257813 7.871094 c 0.820313 3.050781 3.59375 5.183594 6.75 5.1875 c 3.160157 0.003906 5.941407 -2.121094 6.765625 -5.167969 c 0.828125 -3.050781 -0.5 -6.289062 -3.230468 -7.878906 c -0.476563 -0.28125 -1.089844 -0.121094 -1.367188 0.359375 c -0.132812 0.226562 -0.171875 0.5 -0.105469 0.757812 c 0.070313 0.257813 0.234375 0.476563 0.464844 0.609376 c 1.957031 1.140624 2.902344 3.441406 2.3125 5.628906 c -0.59375 2.183594 -2.570313 3.695312 -4.832031 3.691406 c -2.265625 -0.003906 -4.238282 -1.519531 -4.824219 -3.707031 s 0.363281 -4.488281 2.324219 -5.621094 c 0.476562 -0.277344 0.640625 -0.886719 0.363281 -1.363281 c -0.132813 -0.230469 -0.347656 -0.398438 -0.605469 -0.464844 c -0.125 -0.035156 -0.257812 -0.042969 -0.390625 -0.027344 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path style="fill:#dfdfdf" d="m 4 4 h 1 h 0.03125 c 0.253906 0.011719 0.511719 0.128906 0.6875 0.3125 l 2.28125 2.28125 l 2.3125 -2.28125 c 0.265625 -0.230469 0.445312 -0.304688 0.6875 -0.3125 h 1 v 1 c 0 0.285156 -0.035156 0.550781 -0.25 0.75 l -2.28125 2.28125 l 2.25 2.25 c 0.1875 0.1875 0.28125 0.453125 0.28125 0.71875 v 1 h -1 c -0.265625 0 -0.53125 -0.09375 -0.71875 -0.28125 l -2.28125 -2.28125 l -2.28125 2.28125 c -0.1875 0.1875 -0.453125 0.28125 -0.71875 0.28125 h -1 v -1 c 0 -0.265625 0.09375 -0.53125 0.28125 -0.71875 l 2.28125 -2.25 l -2.28125 -2.28125 c -0.210938 -0.195312 -0.304688 -0.46875 -0.28125 -0.75 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 788 B

0
eww/eww.yuck Normal file
View File

78
eww/ml4w-sidebar/eww.scss Normal file
View File

@ -0,0 +1,78 @@
*{
all: unset;
font-family: "Fira Sans";
color: #FFFFFF;
}
.winbox {
background-color: #242424;
opacity: 0.85;
border: 1px solid #444444;
border-radius: 12px;
box-shadow: 0 0 4px 2px #000000;
margin: 10px;
}
.res_box {
background-color: #242424;
border-radius: 12px;
padding: 14px 18px 14px 18px;
}
.res_circle {
background-color: #FFFFFF;
border: 0px solid #161616;
color:#FFFFFF;
border-radius: 100%;
padding: 0px;
}
.ml4w_icon {
background-repeat: no-repeat;
background-size: 48px;
min-height: 48px;
min-width: 48px;
}
.res_circle_small {
background-color: #242424;
border: 0px solid #161616;
border-radius: 100%;
padding: 40px;
color:#FFFFFF;
}
.res_text {
border-radius: 16px;
color: #FFFFFF;
font-size : 16px;
padding: 0px 8px 0px 8px;
margin: 0px 0px 0px 0px;
font-weight : bold;
}
.res_cpu {
color: #19cddb;
}
.res_mem {
color: #a5deb7;
}
.res_disk {
color: #cfb3ff;
}
.powericons {
background-repeat: no-repeat;
background-size: 30px;
min-height: 30px;
min-width: 30px;
}
.closeicon {
background-repeat: no-repeat;
background-size: 16px;
min-height: 16px;
min-width: 16px;
}

184
eww/ml4w-sidebar/eww.yuck Normal file
View File

@ -0,0 +1,184 @@
;; Icons: https://github.com/GNOME/adwaita-icon-theme/tree/master/Adwaita
;; Variables
;; System vars
(defpoll HOST :interval "5s" `hostname`)
(defpoll CPU_USAGE :interval "1s" `../scripts/sys_info.sh --cpu`)
(defpoll MEM_USAGE :interval "1s" `../scripts/sys_info.sh --mem`)
(defpoll DISK_USAGE :interval "1s" `../scripts/sys_info.sh --disk`)
;; Widgets
;; resources
(defwidget ml4wlauncher []
(box :class "winbox"
(centerbox :orientation "h"
(box :class "ml4w-welcome" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(button :style "background-image: url('../../apps/ml4w-welcome.png');" :class "ml4w_icon" :orientation "v" :valign "center" :halign "center" :onclick "../scripts/launch_app.sh --welcome")
(label :class "res_text" :valign "end" :halign "center" :text "Welcome App")
)
(box :class "ml4w-dotfiles" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(button :style "background-image: url('../../apps/ml4w-dotfiles-settings.png');" :class "ml4w_icon" :orientation "v" :valign "center" :halign "center" :onclick "../scripts/launch_app.sh --dotfiles")
(label :class "res_text" :valign "end" :halign "center" :text "Dotfiles App")
)
(box :class "ml4w-hyprland" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(button :style "background-image: url('../../apps/ml4w-hyprland-settings.png');" :class "ml4w_icon" :orientation "v" :valign "center" :halign "center" :onclick "../scripts/launch_app.sh --hyprland")
(label :class "res_text" :valign "end" :halign "center" :text "Hyprland App")
)
)
)
)
(defwidget resources []
(box :class "winbox"
(centerbox :orientation "h"
(box :class "res_box" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(box :class "res_circle" :orientation "v" :valign "center" :halign "center"
(circular-progress :class "res_cpu" :value CPU_USAGE :thickness 15
(label :class "res_circle_small" :text "CPU")
)
)
(label :class "res_text" :valign "end" :halign "center" :text "${CPU_USAGE}%")
)
(box :class "res_box" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(box :class "res_circle" :orientation "v" :valign "center" :halign "center"
(circular-progress :class "res_mem" :value MEM_USAGE :thickness 15
(label :class "res_circle_small" :text "MEMORY")
)
)
(label :class "res_text" :valign "end" :halign "center" :text "${MEM_USAGE}%")
)
(box :class "res_box" :orientation "v" :valign "center" :halign "center" :spacing 15 :space-evenly "false"
(box :class "res_circle" :orientation "v" :valign "center" :halign "center"
(circular-progress :class "res_disk" :value DISK_USAGE :thickness 15
(label :class "res_circle_small" :text "DISK")
)
)
(label :class "res_text" :valign "end" :halign "center" :text "${DISK_USAGE}%")
)
)
)
)
(defwidget close []
(box :class "winbox"
(button :tooltip "Close" :style "background-image: url('../assets/window-close-symbolic.svg');" :class "closeicon" :valign "center" :halign "center" :onclick "../scripts/eww.sh &")
)
)
;; powermenus
(defwidget logout []
(box :class "winbox"
(button :tooltip "Logout" :style "background-image: url('../assets/application-exit-symbolic-rtl.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh logout &")
)
)
(defwidget suspend []
(box :class "winbox"
(button :tooltip "Suspend" :style "background-image: url('../assets/media-playback-pause-symbolic.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh suspend &")
)
)
(defwidget lock []
(box :class "winbox"
(button :tooltip "Lock" :style "background-image: url('../assets/system-lock-screen-symbolic.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh lock &")
)
)
(defwidget reboot []
(box :class "winbox"
(button :tooltip "Reboot" :style "background-image: url('../assets/system-reboot-symbolic.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh reboot &")
)
)
(defwidget shutdown []
(box :class "winbox"
(button :tooltip "Shutdown" :style "background-image: url('../assets/system-shutdown-symbolic.svg');" :class "powericons" :valign "center" :halign "center" :onclick "../scripts/system.sh shutdown &")
)
)
;; ** Windows *************************************************************************
(defwindow close
:geometry (geometry :x "455px"
:y "-7px"
:width "44px"
:height "44px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(close))
(defwindow ml4wlauncher
:geometry (geometry :x "5px"
:y "5px"
:width "480px"
:height "140px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(ml4wlauncher))
;; resources
(defwindow resources
:geometry (geometry :x "5px"
:y "140px"
:width "480px"
:height "180px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(resources))
;; powermenu
(defwindow logout
:geometry (geometry :x "5px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(logout))
(defwindow suspend
:geometry (geometry :x "102px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(suspend))
(defwindow lock
:geometry (geometry :x "204px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(lock))
(defwindow reboot
:geometry (geometry :x "305px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(reboot))
(defwindow shutdown
:geometry (geometry :x "405px"
:y "318px"
:width "80px"
:height "80px"
:anchor "top right")
:stacking "fg"
:wm-ignore false
(shutdown))

33
eww/ml4w-sidebar/launch.sh Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
FILE="$HOME/.cache/ml4w_sidebar"
CFG="$HOME/dotfiles/eww/ml4w-sidebar"
EWW=`which eww`
if [[ ! `pidof eww` ]]; then
${EWW} daemon
sleep 0.5
fi
if [ -f $HOME/dotfiles/.settings/eww-monitor.sh ] && [ $(cat $HOME/dotfiles/.settings/eww-monitor.sh) != "auto" ] ;then
echo ":: Using monitor id from $HOME/dotfiles/.settings/eww-monitor.sh"
sc=$(cat $HOME/dotfiles/.settings/eww-monitor.sh)
else
echo ":: Autodetect current focused monitor."
sc=$(python $HOME/dotfiles/hypr/scripts/active-monitor.py)
fi
if [[ ! -f "$FILE" ]]; then
touch "$FILE"
echo ":: Opening on Monitor $sc"
${EWW} --config "$CFG" open ml4wlauncher --screen $sc
${EWW} --config "$CFG" open resources --screen $sc
${EWW} --config "$CFG" open logout --screen $sc
${EWW} --config "$CFG" open suspend --screen $sc
${EWW} --config "$CFG" open lock --screen $sc
${EWW} --config "$CFG" open reboot --screen $sc
${EWW} --config "$CFG" open shutdown --screen $sc
${EWW} --config "$CFG" open close --screen $sc
else
${EWW} --config "$CFG" close resources ml4wlauncher logout suspend lock reboot shutdown close
echo ":: Closing widgets"
rm "$FILE"
fi

3
eww/scripts/eww.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.3
$HOME/dotfiles/eww/ml4w-sidebar/launch.sh

11
eww/scripts/launch_app.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
if [[ "$1" == "--welcome" ]]; then
$HOME/dotfiles/apps/ML4W_Welcome-x86_64.AppImage
elif [[ "$1" == "--dotfiles" ]]; then
$HOME/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage
elif [[ "$1" == "--hyprland" ]]; then
$HOME/dotfiles/apps/ML4W_Hyprland_Settings-x86_64.AppImage
else
echo "ERROR: $1 not found"
fi

85
eww/scripts/sys_info.sh Executable file
View File

@ -0,0 +1,85 @@
#!/bin/bash
## Files and Data
PREV_TOTAL=0
PREV_IDLE=0
cpuFile="/tmp/.cpu_usage"
## Get CPU usage
get_cpu() {
if [[ -f "${cpuFile}" ]]; then
fileCont=$(cat "${cpuFile}")
PREV_TOTAL=$(echo "${fileCont}" | head -n 1)
PREV_IDLE=$(echo "${fileCont}" | tail -n 1)
fi
CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
unset CPU[0] # Discard the "cpu" prefix.
IDLE=${CPU[4]} # Get the idle CPU time.
# Calculate the total CPU time.
TOTAL=0
for VALUE in "${CPU[@]:0:4}"; do
let "TOTAL=$TOTAL+$VALUE"
done
if [[ "${PREV_TOTAL}" != "" ]] && [[ "${PREV_IDLE}" != "" ]]; then
# Calculate the CPU usage since we last checked.
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
echo "${DIFF_USAGE}"
else
echo "?"
fi
# Remember the total and idle CPU times for the next check.
echo "${TOTAL}" > "${cpuFile}"
echo "${IDLE}" >> "${cpuFile}"
}
## Get Used memory
get_mem() {
printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}')
}
## Get Brightness
get_blight() {
CARD=`ls /sys/class/backlight | head -n 1`
if [[ "$CARD" == *"intel_"* ]]; then
BNESS=`xbacklight -get`
LIGHT=${BNESS%.*}
else
BNESS=`blight -d $CARD get brightness`
PERC="$(($BNESS*100/255))"
LIGHT=${PERC%.*}
fi
echo "$LIGHT"
}
## Get Battery
get_battery() {
BAT=`ls /sys/class/power_supply | grep BAT | head -n 1`
cat /sys/class/power_supply/${BAT}/capacity
}
## Get Disk Usage
get_disk() {
df -h / | awk '{print $5}' | tail -n1 | sed 's/%//g'
}
## Execute accordingly
if [[ "$1" == "--cpu" ]]; then
get_cpu
elif [[ "$1" == "--mem" ]]; then
get_mem
elif [[ "$1" == "--blight" ]]; then
get_blight
elif [[ "$1" == "--bat" ]]; then
get_battery
elif [[ "$1" == "--disk" ]]; then
get_disk
fi

16
eww/scripts/system.sh Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
sleep 0.3
$HOME/dotfiles/eww/ml4w-sidebar/launch.sh
if [[ "$1" == "reboot" ]]; then
$HOME/dotfiles/hypr/scripts/reboot.sh
elif [[ "$1" == "shutdown" ]]; then
$HOME/dotfiles/hypr/scripts/shutdown.sh
elif [[ "$1" == "lock" ]]; then
$HOME/dotfiles/hypr/scripts/lock.sh
elif [[ "$1" == "suspend" ]]; then
$HOME/dotfiles/hypr/scripts/suspend.sh
elif [[ "$1" == "logout" ]]; then
$HOME/dotfiles/hypr/scripts/exit.sh
fi

View File

@ -0,0 +1,7 @@
# -----------------------------------------------------
# Animations
# name "Default"
# -----------------------------------------------------
animations {
enabled = false
}

View File

@ -18,16 +18,17 @@ exec-once = ~/dotfiles/hypr/scripts/gtk.sh
exec-once = hypridle exec-once = hypridle
# exec-once = swayidle -w timeout 600 'swaylock -f' timeout 660 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' before-sleep 'swaylock -f' # exec-once = swayidle -w timeout 600 'swaylock -f' timeout 660 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' before-sleep 'swaylock -f'
# Load network manager applet
# START NM APPLET
# exec-once = nm-applet --indicator
# END NM APPLET
# Load cliphist history # Load cliphist history
exec-once = wl-paste --watch cliphist store exec-once = wl-paste --watch cliphist store
# Initialize Wallpaper Engine # Initialize Wallpaper Engine
exec-once = ~/dotfiles/hypr/scripts/init-wallpaper-engine.sh exec-once = ~/dotfiles/hypr/scripts/init-wallpaper-engine.sh
# Start ML4W Welcome App # Autostart ML4W App
exec-once = ~/dotfiles/hypr/scripts/ml4w-welcome-autostart.sh exec-once = ~/dotfiles/hypr/scripts/ml4w-welcome-autostart.sh
# Load configuration from ML4W Hyprland Settings App
exec-once = ~/.config/ml4w-hyprland-settings/hyprctl.sh
# Start ewww daemon
exec-once = ~/dotfiles/hypr/scripts/eww.sh

View File

@ -4,5 +4,11 @@
# ----------------------------------------------------- # -----------------------------------------------------
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = QT_QPA_PLATFORM,wayland env = QT_QPA_PLATFORM,wayland
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = MOZ_ENABLE_WAYLAND,1
env = GDK_SCALE,1

View File

@ -4,6 +4,13 @@
# ----------------------------------------------------- # -----------------------------------------------------
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = QT_QPA_PLATFORM,wayland env = QT_QPA_PLATFORM,wayland
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = MOZ_ENABLE_WAYLAND,1
env = GDK_SCALE,1
env = WLR_NO_HARDWARE_CURSORS, 1 env = WLR_NO_HARDWARE_CURSORS, 1
env = WLR_RENDERER_ALLOW_SOFTWARE, 1 env = WLR_RENDERER_ALLOW_SOFTWARE, 1

View File

@ -31,6 +31,7 @@ bind = $mainMod SHIFT, down, resizeactive, 0 100
bind = $mainMod, G, togglegroup bind = $mainMod, G, togglegroup
# Actions # Actions
bind = $mainMod SHIFT, A, exec, ~/dotfiles/hypr/scripts/toggle-animations.sh
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

View File

@ -18,8 +18,17 @@ windowrulev2 = float,class:(ml4w-dotfiles-settings.py)
windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py) windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py)
windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py) windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py)
windowrulev2 = float,class:(com.ml4w.hyprlandsettings)
windowrulev2 = size 700 600,class:(com.ml4w.hyprlandsettings)
windowrulev2 = center,class:(com.ml4w.hyprlandsettings)
windowrulev2 = float,class:(ml4w-hyprland-settings.py)
windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py)
windowrulev2 = center,class:(ml4w-hyprland-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 = center,class:(dotfiles-floating) windowrulev2 = center,class:(dotfiles-floating)
env = APPIMAGELAUNCHER_DISABLE,1 env = APPIMAGELAUNCHER_DISABLE,1

View File

@ -6,6 +6,9 @@
# |___/|_| # |___/|_|
# #
# ----------------------------------------------------- # -----------------------------------------------------
# IMPORTANT: Don't overwrite ML4W configuration.
# Create your own custom configuration variation instead.
# https://gitlab.com/stephan-raabe/dotfiles#hyprland-configuration-variations
# ----------------------------------------------------- # -----------------------------------------------------
# Monitor # Monitor
@ -58,7 +61,7 @@ source = ~/dotfiles/hypr/conf/animation.conf
source = ~/dotfiles/hypr/conf/custom.conf source = ~/dotfiles/hypr/conf/custom.conf
# ----------------------------------------------------- # -----------------------------------------------------
# Custom # ML4W Configuration
# ----------------------------------------------------- # -----------------------------------------------------
source = ~/dotfiles/hypr/conf/ml4w.conf source = ~/dotfiles/hypr/conf/ml4w.conf

View File

@ -20,7 +20,7 @@ input-field {
dots_center = true dots_center = true
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
outer_color = rgb(151515) outer_color = rgb(151515)
inner_color = rgb(200, 200, 200) inner_color = rgb(FFFFFF)
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. fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
@ -47,7 +47,7 @@ label {
color = rgba(200, 200, 200, 1.0) color = rgba(200, 200, 200, 1.0)
font_size = 55 font_size = 55
font_family = Fira Semibold font_family = Fira Semibold
position = -100, -200 position = -100, -40
halign = right halign = right
valign = bottom valign = bottom
shadow_passes = 5 shadow_passes = 5
@ -66,3 +66,18 @@ label {
shadow_passes = 5 shadow_passes = 5
shadow_size = 10 shadow_size = 10
} }
image {
monitor =
path = $HOME/.cache/square_wallpaper.png
size = 280 # lesser side if not 1:1 ratio
rounding = -1 # negative values mean circle
border_size = 4
border_color = rgb(221, 221, 221)
rotate = 0 # degrees, counter-clockwise
reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2
# reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F
position = 0, 200
halign = center
valign = center
}

View File

@ -0,0 +1,18 @@
import sys
import subprocess
import os
import json
import pathlib
import shutil
# Get script path
pathname = os.path.dirname(sys.argv[0])
homeFolder = os.path.expanduser('~') # Path to home folder
dotfiles = homeFolder + "/dotfiles/"
result = subprocess.run(["bash", dotfiles + "hypr/scripts/monitors.sh"], capture_output=True, text=True)
monitors_json = result.stdout.strip()
monitors_arr = json.loads(monitors_json)
for row in monitors_arr:
if row["focused"]:
print(row["id"])

6
hypr/scripts/eww.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
EWW=`which eww`
if [[ ! `pidof eww` ]]; then
${EWW} daemon
sleep 0.5
fi

View File

@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
sleep 1 sleep 0.5
killall -9 Hyprland sleep 2 killall -9 Hyprland sleep 2

3
hypr/scripts/lock.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.5
hyprlock

33
hypr/scripts/ml4w-launcher.sh Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
# __ __ _ _ ___ __ _ _
# | \/ | | | || \ \ / / | | __ _ _ _ _ __ ___| |__ ___ _ __
# | |\/| | | | || |\ \ /\ / / | | / _` | | | | '_ \ / __| '_ \ / _ \ '__|
# | | | | |__|__ _\ V V / | |__| (_| | |_| | | | | (__| | | | __/ |
# |_| |_|_____| |_| \_/\_/ |_____\__,_|\__,_|_| |_|\___|_| |_|\___|_|
#
option1="ML4W Dotfiles Settings"
option2="Hyprland Settings"
option3="Change Wallpaper"
option4="Change Waybar Theme"
option5="ML4W Welcome App"
options="$option1\n"
options="$options$option2\n"
options="$options$option3\n"
options="$options$option4\n$option5"
choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/dotfiles/rofi/config-ml4w-launcher.rasi -l 5)
case $choice in
$option1)
$HOME/dotfiles/apps/ML4W_Dotfiles_Settings-x86_64.AppImage ;;
$option2)
$HOME/dotfiles/apps/ML4W_Hyprland_Settings-x86_64.AppImage ;;
$option3)
$HOME/dotfiles/hypr/scripts/wallpaper.sh select ;;
$option4)
$HOME/dotfiles/waybar/themeswitcher.sh ;;
$option5)
$HOME/dotfiles/apps/ML4W_Welcome-x86_64.AppImage ;;
esac

2
hypr/scripts/monitors.sh Executable file
View File

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

3
hypr/scripts/reboot.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.5
systemctl reboot

3
hypr/scripts/shutdown.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.5
systemctl poweroff

3
hypr/scripts/suspend.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sleep 0.5
systemctl suspend

View File

@ -0,0 +1,13 @@
#!/bin/bash
cache_file="$HOME/.cache/toggle_animation"
if [[ $(cat $HOME/dotfiles/hypr/conf/animation.conf) == *"disabled"* ]]; then
echo ":: Toggle blocked by disabled.conf variation."
else
if [ -f $cache_file ] ;then
hyprctl keyword animations:enabled true
rm $cache_file
else
hyprctl keyword animations:enabled false
touch $cache_file
fi
fi

View File

@ -12,6 +12,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" blurred="$HOME/.cache/blurred_wallpaper.png"
square="$HOME/.cache/square_wallpaper.png"
rasi_file="$HOME/.cache/current_wallpaper.rasi" rasi_file="$HOME/.cache/current_wallpaper.rasi"
blur_file="$HOME/dotfiles/.settings/blur.sh" blur_file="$HOME/dotfiles/.settings/blur.sh"
@ -114,8 +115,12 @@ if [ "$1" == "init" ] ;then
echo ":: Init" echo ":: Init"
else else
sleep 1 sleep 1
dunstify "Changing wallpaper ..." "with image $newwall" -h int:value:33 -h string:x-dunst-stack-tag:wallpaper dunstify "Changing wallpaper ..." "with image $newwall" -h int:value:25 -h string:x-dunst-stack-tag:wallpaper
sleep 2
# -----------------------------------------------------
# Reload Hyprctl.sh
# -----------------------------------------------------
$HOME/.config/ml4w-hyprland-settings/hyprctl.sh &
fi fi
# ----------------------------------------------------- # -----------------------------------------------------
@ -124,7 +129,7 @@ fi
if [ "$1" == "init" ] ;then if [ "$1" == "init" ] ;then
echo ":: Init" echo ":: Init"
else else
dunstify "Creating blurred version ..." "with image $newwall" -h int:value:66 -h string:x-dunst-stack-tag:wallpaper dunstify "Creating blurred version ..." "with image $newwall" -h int:value:50 -h string:x-dunst-stack-tag:wallpaper
fi fi
magick $wallpaper -resize 75% $blurred magick $wallpaper -resize 75% $blurred
@ -134,6 +139,17 @@ if [ ! "$blur" == "0x0" ] ;then
echo ":: Blurred" echo ":: Blurred"
fi fi
# -----------------------------------------------------
# Created quare wallpaper
# -----------------------------------------------------
if [ "$1" == "init" ] ;then
echo ":: Init"
else
dunstify "Creating square version ..." "with image $newwall" -h int:value:75 -h string:x-dunst-stack-tag:wallpaper
fi
magick $wallpaper -gravity Center -extent 1:1 $square
echo ":: Square version created"
# ----------------------------------------------------- # -----------------------------------------------------
# Write selected wallpaper into .cache files # Write selected wallpaper into .cache files
# ----------------------------------------------------- # -----------------------------------------------------

View File

@ -63,10 +63,10 @@ source .install/wallpaper.sh
source .install/displaymanager.sh source .install/displaymanager.sh
source .install/issue.sh source .install/issue.sh
source .install/restore.sh source .install/restore.sh
source .install/keyboard.sh
source .install/neovim.sh source .install/neovim.sh
source .install/vm.sh source .install/keyboard.sh
source .install/hook.sh source .install/hook.sh
source .install/vm.sh
source .install/copy.sh source .install/copy.sh
source .install/init-pywal.sh source .install/init-pywal.sh
if [[ $profile == *"Hyprland"* ]]; then if [[ $profile == *"Hyprland"* ]]; then
@ -80,5 +80,6 @@ source .install/apps.sh
source .install/gtk.sh source .install/gtk.sh
source .install/bashrc.sh source .install/bashrc.sh
source .install/cleanup.sh source .install/cleanup.sh
source .install/diagnosis.sh
source .install/reboot.sh source .install/reboot.sh
sleep 3 sleep 3

View File

@ -0,0 +1,261 @@
/*
# ____ __ _
# | _ \ ___ / _(_)
# | |_) / _ \| |_| |
# | _ < (_) | _| |
# |_| \_\___/|_| |_|
#
# by Stephan Raabe (2023)
# -----------------------------------------------------
*/
/* ---- Configuration ---- */
configuration {
modi: "drun,run";
font: "Fira Sans 8";
show-icons: false;
display-drun: "APPS";
display-run: "RUN";
display-filebrowser: "FILES";
display-window: "WINDOW";
hover-select: true;
me-select-entry: "";
me-accept-entry: "MousePrimary";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
/* ---- Load font ---- */
@import "~/dotfiles/.settings/rofi-font.rasi"
/* ---- Load pywal colors (custom wal template) ---- */
@import "~/.cache/wal/colors-rofi-pywal"
/* ---- Load wallpaper ---- */
@import "~/.cache/current_wallpaper.rasi"
/* ---- Load border width ---- */
@import "~/dotfiles/.settings/rofi-border.rasi"
/* ---- Window ---- */
window {
width: 260px;
x-offset: -14px;
y-offset: 15px;
spacing: 0px;
padding: 0px;
margin: 0px;
color: #FFFFFF;
border: @border-width;
border-color: #FFFFFF;
cursor: "default";
transparency: "real";
location: northeast;
anchor: northeast;
fullscreen: false;
enabled: true;
border-radius: 10px;
background-color: transparent;
}
/* ---- Mainbox ---- */
mainbox {
enabled: true;
orientation: horizontal;
spacing: 0px;
margin: 0px;
background-color: @background;
background-image: @current-image;
children: ["listbox"];
}
/* ---- Imagebox ---- */
imagebox {
padding: 18px;
background-color: transparent;
orientation: vertical;
children: [ "inputbar", "dummy", "mode-switcher" ];
}
/* ---- Listbox ---- */
listbox {
spacing: 20px;
background-color: transparent;
orientation: vertical;
children: [ "listview" ];
}
/* ---- Dummy ---- */
dummy {
background-color: transparent;
}
/* ---- Inputbar ---- */
inputbar {
enabled: true;
text-color: @foreground;
spacing: 10px;
padding: 15px;
border-radius: 0px;
border-color: @foreground;
background-color: @background;
children: [ "textbox-prompt-colon", "entry" ];
}
textbox-prompt-colon {
enabled: true;
expand: false;
padding: 0px 5px 0px 0px;
str: "";
background-color: transparent;
text-color: inherit;
}
entry {
enabled: true;
background-color: transparent;
text-color: inherit;
cursor: text;
placeholder: "Search";
placeholder-color: inherit;
}
/* ---- Mode Switcher ---- */
mode-switcher{
enabled: true;
spacing: 20px;
background-color: transparent;
text-color: @foreground;
}
button {
padding: 10px;
border-radius: 10px;
background-color: @background;
text-color: inherit;
cursor: pointer;
border: 0px;
}
button selected {
background-color: @color11;
text-color: @foreground;
}
/* ---- Listview ---- */
listview {
enabled: true;
columns: 1;
lines: 2;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 0px;
padding: 10px;
margin: 0px;
background-color: @background;
border:0px;
}
/* ---- Element ---- */
element {
enabled: true;
padding: 10px;
margin: 5px;
cursor: pointer;
background-color: @background;
border-radius: 10px;
border: @border-width;
}
element normal.normal {
background-color: inherit;
text-color: @foreground;
}
element normal.urgent {
background-color: inherit;
text-color: @foreground;
}
element normal.active {
background-color: inherit;
text-color: @foreground;
}
element selected.normal {
background-color: @color11;
text-color: @foreground;
}
element selected.urgent {
background-color: inherit;
text-color: @foreground;
}
element selected.active {
background-color: inherit;
text-color: @foreground;
}
element alternate.normal {
background-color: inherit;
text-color: @foreground;
}
element alternate.urgent {
background-color: inherit;
text-color: @foreground;
}
element alternate.active {
background-color: inherit;
text-color: @foreground;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 32px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Message -----*****/
message {
background-color: transparent;
border:0px;
margin:20px 0px 0px 0px;
padding:0px;
spacing:0px;
border-radius: 10px;
}
textbox {
padding: 15px;
margin: 0px;
border-radius: 0px;
background-color: @background;
text-color: @foreground;
vertical-align: 0.5;
horizontal-align: 0.0;
}
error-message {
padding: 15px;
border-radius: 20px;
background-color: @background;
text-color: @foreground;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

@ -3,13 +3,14 @@ clear
sleep 0.5 sleep 0.5
figlet "Diagnosis" figlet "Diagnosis"
echo echo
echo "This script will check if some core packages are available on your system." echo "This script will check that essential packages and "
echo "execution commands are available on your system."
echo echo
_commandExists() { _commandExists() {
package="$1"; package="$1";
if ! type $package > /dev/null; then if ! type $package > /dev/null 2>&1; then
echo ":: ERROR: $package doesn't exists. Please install it." echo ":: ERROR: $package doesn't exists. Please install it with yay -S $2"
else else
echo ":: OK: $package found." echo ":: OK: $package found."
fi fi
@ -24,14 +25,20 @@ _folderExists() {
fi fi
} }
_commandExists "rofi" _commandExists "rofi" "rofi-wayland"
_commandExists "dunst" _commandExists "dunst" "dunst"
_commandExists "waybar" _commandExists "waybar" "waybar"
_commandExists "swww" _commandExists "hyprpaper" "hyprpaper"
_commandExists "wal" _commandExists "hyprlock" "hyprpaper"
_commandExists "gum" _commandExists "hypridle" "hyprpaper"
_commandExists "wlogout" _commandExists "wal" "python-pywal"
_commandExists "gum" "gum"
_commandExists "wlogout" "wlogout"
_commandExists "swww" "swww"
_commandExists "eww" "eww"
_commandExists "magick2" "imagemagick"
_commandExists "figlet2" "figlet"
echo echo
echo "Press return to close the window" echo "Press return to exit"
read read

6
scripts/nm-applet.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
if [[ "$1" == "stop" ]]; then
killall nm-applet
else
nm-applet --indicator &
fi

View File

@ -58,7 +58,15 @@
// ML4W Welcome App // ML4W Welcome App
"custom/ml4w-welcome": { "custom/ml4w-welcome": {
"on-click": "~/dotfiles/apps/ML4W_Welcome-x86_64.AppImage", "on-click": "sleep 0.1 && ~/dotfiles/eww/ml4w-sidebar/launch.sh",
"on-click-right": "sleep 0.1 && ~/dotfiles/apps/ML4W_Welcome-x86_64.AppImage",
"format": " ",
"tooltip": false
},
// ML4W Welcome App
"custom/ml4w-hyprland-settings": {
"on-click": "~/dotfiles/apps/ML4W_Hyprland_Settings-x86_64.AppImage",
"format": " ", "format": " ",
"tooltip": false "tooltip": false
}, },
@ -88,7 +96,7 @@
// Updates Count // Updates Count
"custom/updates": { "custom/updates": {
"format": " {}", "format": " {}",
"tooltip-format": "{}", "tooltip-format": "{}",
"escape": true, "escape": true,
"return-type": "json", "return-type": "json",
@ -135,20 +143,6 @@
"tooltip": false "tooltip": false
}, },
// Outlook Launcher
"custom/outlook": {
"format": "",
"on-click": "chromium --app=https://outlook.office.com/mail/",
"tooltip": false
},
// Teams Launcher
"custom/teams": {
"format": "",
"on-click": "chromium --app=https://teams.microsoft.com/go",
"tooltip": false
},
// Browser Launcher // Browser Launcher
"custom/browser": { "custom/browser": {
"format": "", "format": "",
@ -277,15 +271,27 @@
}, },
// Group Settings // Group Settings
"group/settings": { "group/links": {
"orientation": "horizontal", "orientation": "horizontal",
"modules": [ "modules": [
// START CHATGPT TOOGLE
"custom/chatgpt", "custom/chatgpt",
// END CHATGPT TOOGLE "custom/empty"
]
},
// Group Settings
"group/settings": {
"orientation": "inherit",
"drawer": {
"transition-duration": 300,
"children-class": "not-memory",
"transition-left-to-right": false
},
"modules": [
"custom/settings", "custom/settings",
"custom/waybarthemes", "custom/waybarthemes",
"custom/wallpaper" "custom/wallpaper",
"custom/ml4w-hyprland-settings"
] ]
}, },
@ -331,8 +337,8 @@
// Pulseaudio // Pulseaudio
"pulseaudio": { "pulseaudio": {
// "scroll-step": 1, // %, can be a float // "scroll-step": 1, // %, can be a float
"format": "{icon} {volume}%", "format": "{icon} {volume}%",
"format-bluetooth": "{volume}% {icon} {format_source}", "format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}", "format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}", "format-muted": " {format_source}",
"format-source": "{volume}% ", "format-source": "{volume}% ",

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -24,8 +24,9 @@
// Modules Left // Modules Left
"modules-left": [ "modules-left": [
"custom/appmenu", "custom/appmenu",
"group/links",
"group/settings", "group/settings",
"wlr/taskbar", //"wlr/taskbar",
"group/quicklinks", "group/quicklinks",
"hyprland/window", "hyprland/window",
"custom/empty" "custom/empty"

View File

@ -24,8 +24,9 @@
// Modules Left // Modules Left
"modules-left": [ "modules-left": [
"custom/appmenu", "custom/appmenu",
"group/links",
"group/settings", "group/settings",
"wlr/taskbar", //"wlr/taskbar",
"group/quicklinks", "group/quicklinks",
"hyprland/window", "hyprland/window",
"custom/empty" "custom/empty"

View File

@ -184,15 +184,23 @@ window#waybar.empty #window {
} }
#custom-ml4w-welcome { #custom-ml4w-welcome {
margin-right: 15px; margin-right: 12px;
background-image: url("../assets/ml4w-icon.png"); background-image: url("../assets/ml4w-icon.png");
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
padding-right: 24px; padding-right: 24px;
} }
#custom-ml4w-hyprland-settings {
margin-right: 12px;
background-image: url("../assets/hyprland-icon.png");
background-repeat: no-repeat;
background-position: center;
padding-right: 16px;
}
#custom-chatgpt { #custom-chatgpt {
margin-right: 15px; margin-right: 12px;
background-image: url("../assets/ai-icon-20.png"); background-image: url("../assets/ai-icon-20.png");
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
@ -204,8 +212,8 @@ window#waybar.empty #window {
* ----------------------------------------------------- */ * ----------------------------------------------------- */
#idle_inhibitor { #idle_inhibitor {
margin-right: 15px; margin-right: 17px;
font-size: 22px; font-size: 20px;
font-weight: bold; font-weight: bold;
opacity: 0.8; opacity: 0.8;
color: @iconcolor; color: @iconcolor;
@ -229,7 +237,7 @@ window#waybar.empty #window {
color: @textcolor1; color: @textcolor1;
border-radius: 15px; border-radius: 15px;
padding: 0px 10px 0px 10px; padding: 0px 10px 0px 10px;
margin: 6px 15px 6px 14px; margin: 8px 14px 8px 14px;
opacity:0.8; opacity:0.8;
border:3px solid @bordercolor; border:3px solid @bordercolor;
} }
@ -312,7 +320,7 @@ window#waybar.empty #window {
color: @textcolor1; color: @textcolor1;
border-radius: 15px; border-radius: 15px;
padding: 1px 10px 0px 10px; padding: 1px 10px 0px 10px;
margin: 6px 15px 6px 0px; margin: 8px 15px 8px 0px;
opacity:0.8; opacity:0.8;
border:3px solid @bordercolor; border:3px solid @bordercolor;
} }

View File

@ -24,8 +24,9 @@
// Modules Left // Modules Left
"modules-left": [ "modules-left": [
"custom/appmenu", "custom/appmenu",
"group/links",
"group/settings", "group/settings",
"wlr/taskbar", //"wlr/taskbar",
"group/quicklinks", "group/quicklinks",
"hyprland/window" "hyprland/window"
], ],

View File

@ -24,6 +24,7 @@
"modules-left": [ "modules-left": [
"custom/appmenuicon", "custom/appmenuicon",
"hyprland/workspaces", "hyprland/workspaces",
"group/links",
"group/settings", "group/settings",
"group/quicklinks" "group/quicklinks"
], ],

View File

@ -142,12 +142,19 @@ window#waybar.empty #window {
} }
#custom-settings { #custom-settings {
margin-right: 15; margin-right: 15px;
}
#custom-browser {
margin-right: 16px;
}
#custom-wallpaper {
margin-right: 14px;
} }
#custom-chatgpt { #custom-chatgpt {
margin-right: 15px; margin-right: 10px;
background-image: url("../assets/ai-icon-20.png"); background-image: url("../assets/ai-icon-20.png");
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
@ -167,6 +174,15 @@ window#waybar.empty #window {
padding-right: 24px; padding-right: 24px;
} }
#custom-ml4w-hyprland-settings {
margin-right: 12px;
background-image: url("../assets/hyprland-icon-20.png");
background-repeat: no-repeat;
background-position: center;
padding-right: 16px;
}
/* ----------------------------------------------------- /* -----------------------------------------------------
* Idle Inhibator * Idle Inhibator
* ----------------------------------------------------- */ * ----------------------------------------------------- */

View File

@ -24,8 +24,9 @@
// Modules Left // Modules Left
"modules-left": [ "modules-left": [
"custom/appmenu", "custom/appmenu",
"group/links",
"group/settings", "group/settings",
"wlr/taskbar", //"wlr/taskbar",
"group/quicklinks", "group/quicklinks",
"hyprland/window", "hyprland/window",
"custom/empty" "custom/empty"

View File

@ -185,7 +185,7 @@ window#waybar.empty #window {
} }
#custom-chatgpt { #custom-chatgpt {
margin-right: 15px; margin-right: 12px;
background-image: url("../assets/ai-icon.png"); background-image: url("../assets/ai-icon.png");
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
@ -193,13 +193,21 @@ window#waybar.empty #window {
} }
#custom-ml4w-welcome { #custom-ml4w-welcome {
margin-right: 15px; margin-right: 12px;
background-image: url("../assets/ml4w-icon.png"); background-image: url("../assets/ml4w-icon.png");
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
padding-right: 24px; padding-right: 24px;
} }
#custom-ml4w-hyprland-settings {
margin-right: 12px;
background-image: url("../assets/hyprland-icon.png");
background-repeat: no-repeat;
background-position: center;
padding-right: 16px;
}
/* ----------------------------------------------------- /* -----------------------------------------------------
* Idle Inhibator * Idle Inhibator
* ----------------------------------------------------- */ * ----------------------------------------------------- */

View File

@ -34,7 +34,7 @@
"custom/settings", "custom/settings",
"custom/waybarthemes", "custom/waybarthemes",
"custom/wallpaper", "custom/wallpaper",
// "wlr/taskbar", //"wlr/taskbar",
"group/quicklinks", "group/quicklinks",
"hyprland/window", "hyprland/window",
"custom/starter" "custom/starter"

View File

@ -1,6 +1,6 @@
{ {
"label" : "lock", "label" : "lock",
"action" : "sleep 1; hyprlock", "action" : "$HOME/dotfiles/hypr/scripts/lock.sh",
"text" : "Lock", "text" : "Lock",
"keybind" : "l" "keybind" : "l"
} }
@ -18,19 +18,19 @@
} }
{ {
"label" : "shutdown", "label" : "shutdown",
"action" : "sleep 1; systemctl poweroff", "action" : "$HOME/dotfiles/hypr/scripts/shutdown.sh",
"text" : "Shutdown", "text" : "Shutdown",
"keybind" : "s" "keybind" : "s"
} }
{ {
"label" : "suspend", "label" : "suspend",
"action" : "sleep 1; systemctl suspend", "action" : "$HOME/dotfiles/hypr/scripts/suspend.sh",
"text" : "Suspend", "text" : "Suspend",
"keybind" : "u" "keybind" : "u"
} }
{ {
"label" : "reboot", "label" : "reboot",
"action" : "sleep 1; systemctl reboot", "action" : "$HOME/dotfiles/hypr/scripts/reboot.sh",
"text" : "Reboot", "text" : "Reboot",
"keybind" : "r" "keybind" : "r"
} }