dots-hyprland on OpenSUSE #485
Replies: 16 comments 28 replies
-
#!/bin/bash
set -e
t="$HOME/.cache/depends/"
rm -rf $t
mkdir -p $t
cd $t
sudo zypper in python3-pip
sudo zypper in kernel-firmware-bluetooth gnome-bluetooth bluez-firmware bluez-cups bluez-auto-enable-devices bluez
sudo zypper in opi gtk4-devel libadwaita-devel
sudo zypper in coreutils wl-clipboard xdg-utils cmake curl fuzzel rsync wget ripgrep gojq npm meson typescript gjs axel
wget https://github.com/sentriz/cliphist/releases/download/v0.5.0/v0.5.0-linux-amd64 -O cliphist
chmod +x cliphist
sudo cp cliphist /usr/local/bin/cliphist
sudo zypper in tinyxml-devel libtinyxml0 libtinyxml2-9 tinyxml2-devel gtkmm3-devel gtksourceviewmm-devel gtksourceviewmm3_0-devel libgtksourceviewmm-4_0-0 libgtksourceviewmm-3_0-0 cairomm-devel cairomm1_0-devel libcairomm-1_0-1 libcairomm-1_16-1
sudo zypper in python3-build python3-Pillow python3-pywal python3-setuptools_scm python3-wheel
sudo zypper in xrandr xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-hyprland
sudo zypper in pavucontrol wireplumber libdbusmenu-gtk3-devel libdbusmenu-gtk3-4 libdbusmenu-gtk4 playerctl swww
echo Now we need to install \"yad\" via opi. You should select multimedia_proaudio or Dead_Mozay repo
read -p "Press any key..."
opi yad
sudo zypper in scdoc
cd $t
git clone https://github.com/ReimuNotMoe/ydotool
cd ydotool
mkdir build && cd build
cmake -DSYSTEMD_USER_SERVICE=OFF -DSYSTEMD_SYSTEM_SERVICE=ON ..
make -j `nproc`
sudo make install
sudo chmod +s $(which ydotool)
sudo systemctl daemon-reload
sudo systemctl enable ydotoold
sudo systemctl start ydotoold
ln -sf /tmp/.ydotool_socket /run/user/$(id -u $(whoami))/.ydotool_socket
sudo zypper in webp-pixbuf-loader gtk-layer-shell-devel gtk3 libgtksourceview-3_0-1 gtksourceview-devel gobject-introspection upower
sudo zypper in polkit-gnome gnome-keyring gnome-control-center gnome-bluetooth NetworkManager gammastep gnome-bluetooth libgnome-bluetooth-3_0-13
sudo zypper in brightnessctl ddcutil
cd $t
git clone https://github.com/hyprwm/hyprutils.git
cd hyprutils/
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
sudo cmake --install build
cd $t
git clone https://github.com/hyprwm/hyprpicker.git
cd hyprpicker
sudo zypper in wayland-protocols-devel Mesa-libGLESv3-devel
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target hyprpicker -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
sudo cmake --install ./build
#dart-sass
cd $t
wget https://github.com/sass/dart-sass/releases/download/1.77.0/dart-sass-1.77.0-linux-x64.tar.gz
tar -xzf dart-sass-1.77.0-linux-x64.tar.gz
cd dart-sass
sudo cp -rf * /usr/local/bin/
sudo zypper in python3-pywayland python3-psutil hypridle wl-clipboard hyprlang-devel libwebp-devel file-devel libdrm-devel libgbm-devel pam-devel Mesa-libGLESv2-devel libsass-devel libsass-3_6_6-1
cd $t
git clone https://github.com/hyprwm/hyprlock.git
cd hyprlock
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
sudo cmake --install build
cd $t
git clone https://github.com/ArtsyMacaw/wlogout.git
cd wlogout
meson build
ninja -C build
sudo ninja -C build install
sudo zypper in cargo
cd $t
git clone https://github.com/Kirottu/anyrun.git # Clone the repository
cd anyrun # Change the active directory to it
cargo build --release # Build all the packages
cargo install --path anyrun/ # Install the anyrun binary
sudo cp $HOME/.cargo/bin/anyrun /usr/local/bin/
mkdir -p ~/.config/anyrun/plugins # Create the config directory and the plugins subdirectory
cp target/release/*.so ~/.config/anyrun/plugins # Copy all of the built plugins to the correct directory
cp examples/config.ron ~/.config/anyrun/config.ron # Copy the default config file
# ttf-material-symbols-variable-git ttf-space-mono-nerd ttf-readex-pro
# I do not know how to fix fonts, so I copied them from Arch (all from /usr/share/fonts/ on Arch to /usr/local/share/fonts/ on OpenSUSE)
sudo zypper in gtk3-metatheme-adwaita qt5ct libqt5-qtwayland qt6-wayland fontconfig jetbrains-mono-fonts gdouros-symbola-fonts lato-fonts fish foot starship
sudo zypper in swappy wf-recorder grim tesseract tesseract-data slurp
sudo zypper in gobject-introspection-devel gjs-devel libpulse-devel
# color-generation
sudo zypper in python3-material-color-utilities-python python3-base python3-regex unzip
sudo zypper in python3-gobject-devel libsoup-devel blueprint-compiler python3-anyascii
sudo zypper in python-base python3-svglib python3-libsass libxdp-devel typelib-1_0-Xdp-1_0 typelib-1_0-XdpGtk3-1_0 typelib-1_0-XdpGtk4-1_0
pip3 install https://github.com/T-Dynamos/materialyoucolor-python/archive/master.zip --break-system-packages
cd $t
git clone https://github.com/GradienceTeam/Gradience.git
cd Gradience
git submodule update --init --recursive
meson setup builddir
meson configure builddir -Dprefix=/usr/local
sudo ninja -C builddir install
|
Beta Was this translation helpful? Give feedback.
-
Hello!
Known issue:
|
Beta Was this translation helpful? Give feedback.
-
I probably forgot some of the points that I was doing, so I will answer here if necessary |
Beta Was this translation helpful? Give feedback.
-
The path to polkit-agent differs in openSUSE, so the line |
Beta Was this translation helpful? Give feedback.
-
okay. I updated dot files and install python-materialyoucolor and change wallpaper. It works, but... May be return old version? |
Beta Was this translation helpful? Give feedback.
-
put |
Beta Was this translation helpful? Give feedback.
-
Void Linux is almost here... |
Beta Was this translation helpful? Give feedback.
-
Thank you for your work! Need to use the following before the part about building hyprlock, as the hyprutils from the repo is not up to the 0.2.0 version required. git clone https://github.com/hyprwm/hyprutils.git Also re-arrange the following lines: by putting the pip3 line after the zypper lines. Otherwise you'll get errors about not being able to build wheel for materialyoucolor because Python.h is missing. |
Beta Was this translation helpful? Give feedback.
-
thank you! With a modified version of this and hours of thinkering, I managed to install it on Fedora! |
Beta Was this translation helpful? Give feedback.
-
I changed the thread name for brevity as I just pinned this to discussions homepage |
Beta Was this translation helpful? Give feedback.
-
How were you able to install the python3-pywal because I am unable to install it |
Beta Was this translation helpful? Give feedback.
-
cd $t please help anyone this i am not able to install
Call Stack (most recent call first): |
Beta Was this translation helpful? Give feedback.
-
How was your experience? does your tutorial is the same overall during installation in README.md? |
Beta Was this translation helpful? Give feedback.
-
Hello i have modified the .dot file to be able of install the dots the things i changed: i changed the way to install yad because it took a lot to be able to chose the repo and just put in commits the selector (lines 25 to 31) changing them to i removed the way it installed hyprlock to just sudo zypper in hyprlock because it required the lib the fonts /usr/local/share/fonts: so here is all the script, just put into a text file called "dot" and run it like ./dot : and paste the .config and .local into the home directory
|
Beta Was this translation helpful? Give feedback.
-
I've tidied up the install script. I have changed my version of the dotfiles quite a lot, so some unneeded deps might be installed, and some needed deps might not be. Installed in a VM and everything seemed to work fine. Please let me know if I've missed anything. You'll need the fonts @nullptroma uploaded in your #!/bin/bash
set -ex # Enable verbose mode and stop on error
CACHE_DIR="$HOME/.cache/depends/"
# Function to handle failure in commands
function fail {
echo "Failed: $1"
exit 1
}
# Clean and prepare cache directory
rm -rf $CACHE_DIR || fail "remove $CACHE_DIR"
mkdir -p $CACHE_DIR || fail "create $CACHE_DIR"
cd $CACHE_DIR || fail "change directory to $CACHE_DIR"
# Install dependencies
function install_dependencies {
sudo zypper refresh
sudo zypper in --no-recommends \
sddm git opi stow python3-pip hyprland foot fastfetch nautilus ark flatpak\
zsh xdg-utils unzip libsoup-devel blueprint-compiler qt5ct python3-material-color-utilities-python\
kernel-firmware-bluetooth blueman gnome-bluetooth bluez-firmware bluez-cups bluez-auto-enable-devices bluez hyprwayland-scanner hyprutils-devel\
opi gtk4-devel libadwaita-devel python3-base python3-anyascii python-base python3-svglib python3-libsass libxdp-devel\
coreutils wl-clipboard xdg-utils cmake curl fuzzel rsync wget ripgrep gojq npm meson typescript gjs axel typelib-1_0-Notify-0_7 typelib-1_0-GnomeBluetooth-3_0\
swww geoclue2 gammastep ags fcitx5 gnome-keyring polkit-gnome hypridle i2c-tools ddcutil-i2c-udev-rules libddcutil5 libi2c0\
gobject-introspection gobject-introspection-devel glib2-devel pkg-config meson ninja nwg-look\
gjs gjs-devel typelib-1_0-Xdp-1_0 typelib-1_0-XdpGtk3-1_0 typelib-1_0-XdpGtk4-1_0 gtk3-metatheme-adwaita qt5ct libqt5-qtwayland qt6-wayland jetbrains-mono-fonts gdouros-symbola-fonts lato-fonts\
tinyxml-devel libtinyxml0 libtinyxml2-9 tinyxml2-devel gtkmm3-devel gtksourceviewmm-devel gtksourceviewmm3_0-devel libgtksourceviewmm-4_0-0 libgtksourceviewmm-3_0-0 cairomm-devel cairomm1_0-devel libcairomm-1_0-1 libcairomm-1_16-1 swappy wf-recorder grim slurp\
python3-build python3-Pillow python3-pywal python3-setuptools_scm python3-wheel \
xrandr xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-hyprland \
pavucontrol wireplumber libdbusmenu-gtk3-devel libdbusmenu-gtk3-4 libdbusmenu-gtk4 playerctl swww \
scdoc \
webp-pixbuf-loader gtk-layer-shell-devel gtk3 libgtksourceview-3_0-1 gtksourceview-devel gobject-introspection upower \
polkit-gnome gnome-keyring gnome-control-center gnome-bluetooth NetworkManager gammastep gnome-bluetooth libgnome-bluetooth-3_0-13 \
brightnessctl ddcutil \
wayland-protocols-devel Mesa-libGLESv3-devel \
python3-pywayland python3-psutil hypridle wl-clipboard hyprlang-devel libwebp-devel file-devel libdrm-devel libgbm-devel pam-devel Mesa-libGLESv2-devel libsass-devel libsass-3_6_6-1 \
gobject-introspection-devel gjs-devel libpulse-devel
}
function install_cliphist {
wget https://github.com/sentriz/cliphist/releases/download/v0.5.0/v0.5.0-linux-amd64 -O cliphist || fail "download cliphist"
chmod +x cliphist || fail "make cliphist executable"
sudo cp cliphist /usr/local/bin/cliphist || fail "copy cliphist"
}
function install_yad {
echo "Install \"yad\" via opi. Select the multimedia_proaudio or Dead_Mozay repo."
read -p "Press any key..."
opi yad || fail "install yad via opi"
}
function install_ydotool {
cd $CACHE_DIR || fail "Failed to change directory to $CACHE_DIR"
git clone https://github.com/ReimuNotMoe/ydotool || fail "Failed to clone ydotool repository"
cd ydotool || fail "Failed to change directory to ydotool"
mkdir build && cd build || fail "Failed to create and change to build directory"
cmake -DSYSTEMD_USER_SERVICE=OFF -DSYSTEMD_SYSTEM_SERVICE=ON .. || fail "CMake configuration failed for ydotool"
make -j $(nproc) || fail "Failed to build ydotool"
sudo make install || fail "Failed to install ydotool"
sudo chmod +s $(which ydotool) || fail "Failed to set ydotool permissions"
sudo systemctl daemon-reload || fail "Failed to reload systemd daemon"
sudo systemctl enable ydotoold || fail "Failed to enable ydotoold"
sudo systemctl start ydotoold || fail "Failed to start ydotoold"
ln -sf /tmp/.ydotool_socket /run/user/$(id -u $(whoami))/.ydotool_socket || fail "Failed to link ydotool socket"
}
function install_hyprpicker {
cd $CACHE_DIR || fail "Failed to change directory to $CACHE_DIR"
git clone https://github.com/hyprwm/hyprpicker.git || fail "Failed to clone hyprpicker repository"
cd hyprpicker || fail "Failed to change directory to hyprpicker"
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build || fail "CMake configuration failed for hyprpicker"
cmake --build ./build --config Release --target hyprpicker -j$(nproc 2>/dev/null || getconf NPROCESSORS_CONF) || fail "Failed to build hyprpicker"
sudo cmake --install ./build || fail "Failed to install hyprpicker"
}
# dart-sass
function install_dart_sass {
cd $CACHE_DIR || fail "Failed to change directory to $CACHE_DIR"
wget https://github.com/sass/dart-sass/releases/download/1.77.0/dart-sass-1.77.0-linux-x64.tar.gz || fail "Failed to download dart-sass"
tar -xzf dart-sass-1.77.0-linux-x64.tar.gz || fail "Failed to extract dart-sass"
cd dart-sass || fail "Failed to change directory to dart-sass"
sudo cp -rf * /usr/local/bin/ || fail "Failed to copy dart-sass binaries"
}
function install_hyprlock {
cd $CACHE_DIR || fail "Failed to change directory to $CACHE_DIR"
git clone https://github.com/hyprwm/hyprlock.git || fail "Failed to clone hyprlock repository"
cd hyprlock || fail "Failed to change directory to hyprlock"
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build || fail "CMake configuration failed for hyprlock"
cmake --build ./build --config Release --target hyprlock -j$(nproc 2>/dev/null || getconf NPROCESSORS_CONF) || { echo "Failed to build hyprlock"
sudo cmake --install ./build || fail "Failed to install hyprlock"
}
function manual_install_helper {
# end-4/dots-hyprland/manual-install-helper.sh
cd "$(dirname "$0")"
export base="$(pwd)"
function try { "$@" || sleep 0; }
function v() {
echo -e "####################################################"
echo -e "\e[34m[$0]: Next command:\e[0m"
echo -e "\e[32m$@\e[0m"
execute=true
if $ask;then
while true;do
echo -e "\e[34mExecute? \e[0m"
echo " y = Yes"
echo " e = Exit now"
echo " s = Skip this command (NOT recommended - your setup might not work correctly)"
echo " yesforall = Yes and don't ask again; NOT recommended unless you really sure"
read -p "====> " p
case $p in
[yY]) echo -e "\e[34mOK, executing...\e[0m" ;break ;;
[eE]) echo -e "\e[34mExiting...\e[0m" ;exit ;break ;;
[sS]) echo -e "\e[34mAlright, skipping this one...\e[0m" ;execute=false ;break ;;
"yesforall") echo -e "\e[34mAlright, won't ask again. Executing...\e[0m"; ask=false ;break ;;
*) echo -e "\e[31mPlease enter [y/e/s/yesforall].\e[0m";;
esac
done
fi
if $execute;then x "$@";else
echo -e "\e[33m[$0]: Skipped \"$@\"\e[0m"
fi
}
# When use v() for a defined function, use x() INSIDE its definition to catch errors.
function x() {
if "$@";then cmdstatus=0;else cmdstatus=1;fi # 0=normal; 1=failed; 2=failed but ignored
while [ $cmdstatus == 1 ] ;do
echo -e "\e[31m[$0]: Command \"\e[32m$@\e[31m\" has failed."
echo -e "You may need to resolve the problem manually BEFORE repeating this command.\e[0m"
echo " r = Repeat this command (DEFAULT)"
echo " e = Exit now"
echo " i = Ignore this error and continue (your setup might not work correctly)"
read -p " [R/e/i]: " p
case $p in
[iI]) echo -e "\e[34mAlright, ignore and continue...\e[0m";cmdstatus=2;;
[eE]) echo -e "\e[34mAlright, will exit.\e[0m";break;;
*) echo -e "\e[34mOK, repeating...\e[0m"
if "$@";then cmdstatus=0;else cmdstatus=1;fi
;;
esac
done
case $cmdstatus in
0) echo -e "\e[34m[$0]: Command \"\e[32m$@\e[34m\" finished.\e[0m";;
1) echo -e "\e[31m[$0]: Command \"\e[32m$@\e[31m\" has failed. Exiting...\e[0m";exit 1;;
2) echo -e "\e[31m[$0]: Command \"\e[32m$@\e[31m\" has failed but ignored by user.\e[0m";;
esac
}
function showfun() {
echo -e "\e[34m[$0]: The definition of function \"$1\" is as follows:\e[0m"
printf "\e[32m"
type -a $1
printf "\e[97m"
}
function remove_bashcomments_emptylines(){
mkdir -p $(dirname $2)
cat $1 | sed -e '/^[[:blank:]]*#/d;s/#.*//' -e '/^[[:space:]]*$/d' > $2
}
function prevent_sudo_or_root(){
case $(whoami) in
root)echo -e "\e[31m[$0]: This script is NOT to be executed with sudo or as root. Aborting...\e[0m";exit 1;;
esac
}
# Not for Arch(based) distro.
install-ags (){
x mkdir -p $base/cache/ags
x cd $base/cache/ags
try git init -b main
try git remote add origin https://github.com/Aylur/ags.git
x git pull origin main && git submodule update --init --recursive
x git checkout 05e0f23534fa30c1db2a142664ee8f71e38db260
x npm install
x meson setup build # --reconfigure
x meson install -C build
x cd $base
}
# Not for Arch(based) distro.
install-Rubik (){
x mkdir -p $base/cache/Rubik
x cd $base/cache/Rubik
try git init -b main
try git remote add origin https://github.com/googlefonts/rubik.git
x git pull origin main && git submodule update --init --recursive
x sudo mkdir -p /usr/local/share/fonts/TTF/
x sudo cp fonts/variable/Rubik*.ttf /usr/local/share/fonts/TTF/
x sudo mkdir -p /usr/local/share/licenses/ttf-rubik/
x sudo cp OFL.txt /usr/local/share/licenses/ttf-rubik/LICENSE
x fc-cache -fv
x gsettings set org.gnome.desktop.interface font-name 'Rubik 11'
x cd $base
}
# Not for Arch(based) distro.
install-Gabarito (){
x mkdir -p $base/cache/Gabarito
x cd $base/cache/Gabarito
try git init -b main
try git remote add origin https://github.com/naipefoundry/gabarito.git
x git pull origin main && git submodule update --init --recursive
x sudo mkdir -p /usr/local/share/fonts/TTF/
x sudo cp fonts/ttf/Gabarito*.ttf /usr/local/share/fonts/TTF/
x sudo mkdir -p /usr/local/share/licenses/ttf-gabarito/
x sudo cp OFL.txt /usr/local/share/licenses/ttf-gabarito/LICENSE
x fc-cache -fv
x cd $base
}
# Not for Arch(based) distro.
install-OneUI (){
x mkdir -p $base/cache/OneUI4-Icons
x cd $base/cache/OneUI4-Icons
try git init -b main
try git remote add origin https://github.com/end-4/OneUI4-Icons.git
# try git remote add origin https://github.com/mjkim0727/OneUI4-Icons.git
x git pull origin main && git submodule update --init --recursive
x sudo mkdir -p /usr/local/share/icons
x sudo cp -r OneUI /usr/local/share/icons
x sudo cp -r OneUI-dark /usr/local/share/icons
x sudo cp -r OneUI-light /usr/local/share/icons
x cd $base
}
# Not for Arch(based) distro.
install-bibata (){
x mkdir -p $base/cache/bibata-cursor
x cd $base/cache/bibata-cursor
name="Bibata-Modern-Classic"
file="$name.tar.xz"
# Use axel because `curl -O` always downloads a file with 0 byte size, idk why
x axel https://github.com/ful1e5/Bibata_Cursor/releases/latest/download/$file
tar -xf $file
x sudo mkdir -p /usr/local/share/icons
x sudo cp -r $name /usr/local/share/icons
x cd $base
}
# Not for Arch(based) distro.
install-MicroTeX (){
x mkdir -p $base/cache/MicroTeX
x cd $base/cache/MicroTeX
try git init -b master
try git remote add origin https://github.com/NanoMichael/MicroTeX.git
x git pull origin master && git submodule update --init --recursive
x mkdir -p build
x cd build
x cmake ..
x make -j32
x sudo mkdir -p /opt/MicroTeX
x sudo cp ./LaTeX /opt/MicroTeX/
x sudo cp -r ./res /opt/MicroTeX/
x cd $base
}
if command -v pacman >/dev/null 2>&1;then printf "\e[31m[$0]: pacman found, it seems that the system is ArchLinux or Arch-based distro. Aborting...\e[0m\n";exit 1;fi
install-ags
install-Rubik
install-Gabarito
install-OneUI
install-bibata
install-MicroTeX
# Add user to video and input group
sudo usermod -aG video,input "$(whoami)"
}
# install arch fonts
function install_fonts {
cd ~/dotfiles/
sudo cp -r fonts/* /usr/local/share/fonts/
}
function install_codecs {
opi codecs
}
function yes_or_no {
while true; do
read -p "$* [y/n]: " yn
case $yn in
[Yy]*) return 0 ;;
[Nn]*) echo "Aborted" ; return 1 ;;
esac
done
}
install_dependencies
install_cliphist
install_yad
install_ydotool
install_hyprpicker
install_dart_sass
install_hyprlock
install_fonts
manual_install_helper
install_codecs
echo "Super + / : Hotkey Cheatsheet. Super + Ctrl + T: Change wallpaper"
echo "Change the wallpaper after installation to update color scheme"
read -p "Installation complete. Press any key to exit..."
|
Beta Was this translation helpful? Give feedback.
-
What do you think? It was tested both on my PC and VM with Tumbleweed GNOME, Tumbleweed Server clean installation. It should also work for updating the stuff by re-running the script itself. #!/bin/bash
#
# Copyright (C) 2024 Vladimir `rifux` Blinkov
#
# SPDX-License-Identifier: MIT
#
set -e
t="$HOME/.cache/tumbleweed-hyprland-installer"
c="$HOME/.config/"
_log() {
echo -e "\n$1"
}
_cleanup() {
if [ -d "$t" ]; then
sudo rm -rf "$t"
fi
for path in ags anyrun fish/auto-Hypr.fish fish/config.fish fish/fish_variables fontconfig foot fuzzel hypr mpv qt5ct wlogout zshrc.d chrome-flags.conf code-flags.conf starship.toml thorium-flags.conf; do
if [ -e "$c/$path" ]; then
sudo rm -rf "$c/$path"
fi
done
}
_install_deps() {
_log "[ i ] Installing dependencies from Tumbleweed repo"
sudo zypper in axel blueprint-compiler bluez bluez-auto-enable-devices bluez-cups bluez-firmware brightnessctl cairomm-devel cairomm1_0-devel cargo cmake coreutils curl ddcutil file-devel fish fontconfig foot fuzzel gammastep gdouros-symbola-fonts gjs gjs-devel gnome-bluetooth gnome-bluetooth gnome-bluetooth gnome-control-center gnome-keyring gobject-introspection gobject-introspection-devel gojq grim gtk-layer-shell-devel gtk3 gtk3-metatheme-adwaita gtk4-devel gtkmm3-devel gtksourceview-devel gtksourceviewmm-devel gtksourceviewmm3_0-devel hypridle hyprland hyprlang-devel jetbrains-mono-fonts kernel-firmware-bluetooth lato-fonts libadwaita-devel libcairomm-1_0-1 libcairomm-1_16-1 libdbusmenu-gtk3-4 libdbusmenu-gtk3-devel libdbusmenu-gtk4 libdrm-devel libgbm-devel libgnome-bluetooth-3_0-13 libgtksourceview-3_0-1 libgtksourceviewmm-3_0-0 libgtksourceviewmm-4_0-0 libjxl-devel libpulse-devel libqt5-qtwayland libsass-3_6_6-1 libsass-devel libsoup-devel libtinyxml0 libtinyxml2-10 libwebp-devel libxdp-devel Mesa-libGLESv2-devel Mesa-libGLESv3-devel meson NetworkManager npm opi pam-devel pavucontrol playerctl polkit-gnome pugixml-devel python-base python3-anyascii python3-base python3-build python3-gobject-devel python3-libsass python3-material-color-utilities-python python3-Pillow python3-pip python3-psutil python3-pywayland python3-regex python3-setuptools_scm python3-svglib python3-wheel qt5ct qt6-quickcontrols2-devel qt6-wayland qt6-waylandclient-devel qt6-waylandclient-private-devel qt6-widgets-devel ripgrep rsync scdoc slurp starship swappy swww systemd-devel tesseract tesseract-data tinyxml-devel tinyxml2-devel typelib-1_0-Xdp-1_0 typelib-1_0-XdpGtk3-1_0 typelib-1_0-XdpGtk4-1_0 typescript unzip update-desktop-files upower wayland-protocols-devel webp-pixbuf-loader wf-recorder wget wireplumber wl-clipboard wl-clipboard xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-hyprland xdg-utils xrandr
sudo zypper in -t pattern gnome
_log "[ i ] Installing dependencies from opi"
_log "[ ! ] Select 'yad' and then 'multimedia_proaudio' or 'Dead_Mozay' repo"
read -p "[ ? ] Press 'Enter' to install 'yad' from opi."
opi yad
_log "[ i ] Installing dependencies from Python"
pip3 install pywal https://github.com/T-Dynamos/materialyoucolor-python/archive/master.zip --break-system-packages
}
_fetch_configs() {
_log "[ i ] Fetching configs"
cd "$t"
git clone https://github.com/end-4/dots-hyprland && \
cd dots-hyprland && \
cp -r {.config,.local} "$HOME/"
}
_fetch_fonts() {
_log "[ i ] Fetching fonts"
cd "$t"
git clone https://codeberg.org/rifux/end4-fonts
sudo cp -r end4-fonts /usr/local/share/fonts
}
#_fetch_cursor() {# WIP}
_install_cliphist() {
_log "[ i ] Installing cliphist"
cd "$t"
wget https://github.com/sentriz/cliphist/releases/download/v0.6.1/v0.6.1-linux-amd64 -O cliphist && \
chmod +x cliphist && \
sudo cp -v cliphist /usr/local/bin/cliphist
}
_install_ydotool() {
_log "[ i ] Installing ydotool"
cd "$t"
git clone https://github.com/ReimuNotMoe/ydotool && \
cd ydotool
mkdir build && cd build
cmake -DSYSTEMD_USER_SERVICE=OFF -DSYSTEMD_SYSTEM_SERVICE=ON ..
make -j $(nproc)
sudo make install
sudo chmod +s "$(which ydotool)"
sudo systemctl daemon-reload
sudo systemctl enable ydotoold
sudo systemctl start ydotoold
ln -sf /tmp/.ydotool_socket /run/user/$(id -u $(whoami))/.ydotool_socket
}
_install_hyprutils() {
_log "[ i ] Installing hyprutils"
cd "$t"
git clone https://github.com/hyprwm/hyprutils.git && \
cd hyprutils/
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
sudo cmake --install build
}
_install_hyprpicker() {
_log "[ i ] Installing hyprpicker"
cd "$t"
git clone https://github.com/hyprwm/hyprpicker.git && \
cd hyprpicker
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target hyprpicker -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
sudo cmake --install ./build
}
_install_hyprgraphics() {
_log "[ i ] Installing hyprgraphics"
cd "$t"
git clone https://github.com/hyprwm/hyprgraphics && \
cd hyprgraphics/
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
sudo cmake --install build
}
_install_dartsass() {
_log "[ i ] Installing dart-sass"
cd "$t"
wget https://github.com/sass/dart-sass/releases/download/1.80.6/dart-sass-1.80.6-linux-x64.tar.gz
tar -xzf dart-sass-1.80.6-linux-x64.tar.gz
cd dart-sass
sudo cp -rf * /usr/local/bin/
}
_install_sdbus_cpp() {
_log "[ i ] Installing sdbus-cpp"
cd "$t"
git clone https://github.com/Kistler-Group/sdbus-cpp.git
cd sdbus-cpp
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
cmake --build ./build -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
sudo cmake --build ./build --target install
}
_install_hyprwayland_scanner() {
_log "[ i ] Installing hyprwayland-scanner"
cd "$t"
git clone https://github.com/hyprwm/hyprwayland-scanner.git
cd hyprwayland-scanner
cmake -DCMAKE_INSTALL_PREFIX=/usr -B build
cmake --build build -j $(nproc)
sudo cmake --install build
}
_install_hyprlock() {
_log "[ i ] Installing hyprlock"
cd "$t"
git clone https://github.com/hyprwm/hyprlock.git
cd hyprlock
cmake --no-warn-unused-cli -DCMAKE_CXX_FLAGS="-L/usr/local/lib64 -lsdbus-c++" -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
sudo cmake --install build
}
_install_hyprland_qtutils() {
_log "[ i ] Installing hyprland-qtutils"
cd "$t"
git clone https://github.com/hyprwm/hyprland-qtutils.git && \
cd hyprland-qtutils
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
sudo cmake --install build
}
_install_hyprland() {
_log "[ i ] Installing Hyprland"
cd "$t"
sudo zypper in gcc-c++ git meson cmake "pkgconfig(cairo)" "pkgconfig(egl)" "pkgconfig(gbm)" "pkgconfig(gl)" "pkgconfig(glesv2)" "pkgconfig(libdrm)" "pkgconfig(libinput)" "pkgconfig(libseat)" "pkgconfig(libudev)" "pkgconfig(pango)" "pkgconfig(pangocairo)" "pkgconfig(pixman-1)" "pkgconfig(vulkan)" "pkgconfig(wayland-client)" "pkgconfig(wayland-protocols)" "pkgconfig(wayland-scanner)" "pkgconfig(wayland-server)" "pkgconfig(xcb)" "pkgconfig(xcb-icccm)" "pkgconfig(xcb-renderutil)" "pkgconfig(xkbcommon)" "pkgconfig(xwayland)" "pkgconfig(xcb-errors)" glslang-devel Mesa-libGLESv3-devel tomlplusplus-devel
git clone --recursive https://github.com/hyprwm/Hyprland && \
cd Hyprland
make all && sudo make install
}
_install_wlogout() {
_log "[ i ] Installing wlogout"
cd "$t"
git clone https://github.com/ArtsyMacaw/wlogout.git
cd wlogout
meson build
ninja -C build
sudo ninja -C build install
}
_install_anyrun() {
_log "[ i ] Installing anyrun"
cd "$t"
git clone https://github.com/Kirottu/anyrun.git
cd anyrun
cargo build --release
cargo install --path anyrun/
sudo cp "$HOME/.cargo/bin/anyrun" /usr/local/bin/
mkdir -p ~/.config/anyrun/plugins
cp target/release/*.so ~/.config/anyrun/plugins
cp examples/config.ron ~/.config/anyrun/config.ron
}
_install_gradience() {
_log "[ i ] Installing gradience"
cd "$t"
git clone https://github.com/GradienceTeam/Gradience.git
cd Gradience
git submodule update --init --recursive
meson setup builddir
meson configure builddir -Dprefix=/usr/local
sudo ninja -C builddir install
}
_exec_manualinstaller() {
_log "[ ! ] Now manual installer of end-4/dots will be started."
read -p "[ ? ] Press 'Enter' to continue"
cd "$t"
cd dots-hyprland
./manual-install-helper.sh
}
# Temporary workaround for current issue with ags makes itself a strange broken look
_remove_transparency() {
_file="$HOME/.config/ags/modules/sideright/centermodules/configure.js"
sed -i -e \
"s| ConfigToggle({|\/\* ConfigToggle({|g" \
"$_file"
sed -i -e \
"s|console\.log(transparency)\;|console\.log(transparency)\;\*\/|g" \
"$_file"
sed -i -e \
"s| execAsync(|\/\/ execAsync(|g" \
"$_file"
sed -i -e \
"s| .then(execAsync(|\/\* .then(execAsync(|g" \
"$_file"
sed -i -e \
"s| HyprlandToggle({ icon: 'blur_on'|\*\/ HyprlandToggle({ icon: 'blur_on'|g" \
"$_file"
}
_program() {
_cleanup
mkdir -p "$t"
_install_deps
_fetch_configs
_fetch_fonts
#_fetch_cursor # Work in progress
_install_cliphist
_install_ydotool
_install_dartsass
_install_hyprutils
_install_hyprwayland_scanner
_install_sdbus_cpp
_install_hyprpicker
_install_hyprgraphics
_install_hyprlock
_install_hyprland_qtutils
_install_wlogout
_install_anyrun
_install_gradience
_exec_manualinstaller
_remove_transparency
}
_program |
Beta Was this translation helpful? Give feedback.
-
(Yandex Translate)
I'm tired of Arch Linux, it breaks down and lags. I've been using openSUSE Tumbleweed on my computer for a long time and I really like it, it's simple and stable. I use KDE Plasma 6 on my PC.
I thought about installing it on a laptop, but the plasma on the laptop is still not so convenient, and I'm already used to these dots-hyprland by end4....
Well, so I decided to try to resolve all the dependencies of this solution on openSUSE, and it has already turned out well. Now I have all the icons, the dynamic color based on the wallpaper is working, all the menus are working. As a result, I got the same system as on Arch Linux.
The hard part: I couldn't find analogues for fonts, so I just had to copy the contents of /usr/share/fonst from Arch to /usr/local/share/fonts in openSUSE, if someone knows where to get fonts, write.
As a result, I have a script with more than 100 lines of bash code that installs all the necessary dependencies.
Now I'm only attaching screenshots, because the script is not fully ready and additional setup instructions are needed. I will complete this topic and post all the instructions and scripts within a few days.
Beta Was this translation helpful? Give feedback.
All reactions