├── README.md ├── assets ├── backgrounds │ ├── cat_leaves.png │ ├── cat_leaves_blurred.png │ ├── cat_pacman.png │ └── dark-cat-rosewater.png ├── github_repo │ └── images │ │ ├── Simple_hypr_thumbnail.png │ │ ├── final-setup-01.png │ │ ├── final-setup-02.png │ │ ├── grimblast.png │ │ ├── hyprpicker.png │ │ ├── tofi-applauncher.png │ │ ├── tofi-clipboard.png │ │ ├── waybar.png │ │ └── wlogout.png ├── icons │ └── Tela-circle-dracula.tar.xz ├── themes │ └── Catppuccin-Mocha.tar.xz └── wlogout │ └── assets │ ├── lock-hover.png │ ├── lock.png │ ├── logout-hover.png │ ├── logout.png │ ├── power-hover.png │ ├── power.png │ ├── restart-hover.png │ ├── restart.png │ ├── sleep-hover.png │ └── sleep.png ├── configs ├── dunst │ └── dunstrc ├── hypr │ ├── hypridle.conf │ ├── hyprland.conf │ └── hyprlock.conf ├── kitty │ ├── kitty.conf │ └── theme.conf ├── tofi │ ├── configA │ └── configV ├── waybar │ ├── config.jsonc │ └── style.css └── wlogout │ ├── layout │ └── style.css ├── docs ├── basic_configuration.md ├── final.md ├── installation_Hypr.md ├── prerequisites.md ├── theming.md └── useful_utilities.md └── scripts └── installer ├── final.sh ├── helper.sh ├── hypr.sh ├── install.sh ├── prerequisites.sh ├── theming.sh └── utilities.sh /README.md: -------------------------------------------------------------------------------- 1 | # Simple Hyprland 🌟 2 | Welcome to the Simple Hyprland Guide! This repository is designed to help users set up a minimal Hyprland environment on Arch Linux. Although various scripts and configuration files are available elsewhere, they often result in bloated systems with many unused themes and configurations. This guide aims to provide a clear, concise, and minimal setup, allowing users to understand each step and customize their environment to their liking. 3 | 4 | By the end of this guide, you'll have a clean and functional Hyprland setup like this: 5 | 6 | final-setup-01 7 | final-setup-02 8 | 9 | ##### Setup Walkthrough 👇 (Click to Play) 10 | [![Showcase Video](https://raw.githubusercontent.com/gaurav23b/simple-hyprland/main/assets/github_repo/images/Simple_hypr_thumbnail.png)](https://www.youtube.com/watch?v=eNJorbKz_-U) 11 | 12 | ## Purpose ✨ 13 | This guide is intended for: 14 | 15 | **Newcomers transitioning to Hyprland who want to gain knowledge.** 👋 If you're new to Hyprland and looking to understand the ins and outs of setting it up, this guide will take you through the process step-by-step, explaining each component along the way. 16 | 17 | **Users who wish to set up a minimal system their way, knowing what's happening at each step.** 🧠 Rather than relying on scripts that automate the process, this guide empowers you to build your Hyprland environment from the ground up, enabling you to customize and tweak every aspect according to your preferences. 18 | 19 | **Individuals looking to save time by following a structured and efficient setup process.** ⏱️ While many guides and resources are available, they can be scattered and overwhelming. This guide consolidates the essential steps into a streamlined workflow, helping you get up and running with Hyprland quickly and efficiently. 20 | 21 | ## Getting Started 🚀 22 | If you're new to this guide, you can start from the [Prerequisites section](docs/prerequisites.md). This document outlines the necessary tools, packages, and assumptions required for a smooth installation and setup process. 23 | 24 | ## Documentation 📚 25 | 1. [Prerequisites](docs/prerequisites.md) 26 | 2. [Core Installation](docs/installation_Hypr.md) 27 | 3. [Basic Configuration](docs/basic_configuration.md) 28 | 4. [Useful Utilities](docs/useful_utilities.md) 29 | 5. [Theming](docs/theming.md) 30 | 6. [Summary](docs/final.md) 31 | 32 | ## Compatibility ⚙️ 33 | While this guide is created with [Arch Linux](https://archlinux.org/) in mind, it can also be helpful for users of other distributions who are familiar with their package management and system tweaking. 34 | 35 | ## Quick Installation Script 🚀 36 | 37 | 1. Clone the repository to your home folder: 38 | ``` 39 | git clone https://github.com/gaurav23b/simple-hyprland.git ~/simple-hyprland 40 | ``` 41 | 2. Navigate to the installer directory: 42 | ``` 43 | cd ~/simple-hyprland/scripts/installer 44 | ``` 45 | 3. Run the installation script with sudo: 46 | ``` 47 | sudo sh install.sh 48 | ``` 49 | #### Important Notes: 50 | 51 | - This script is user-centric and allows you to choose which components to install (Everything is asked, even for the core). 52 | - While the script offers flexibility, it is recommend to installing all components for the best experience, as this is already a minimal setup. 53 | - The installation process follows the same flow as the documentation, ensuring a structured and educational approach. 54 | - Although designed for Arch Linux, users of Arch-based distributions may also find this script helpful. 55 | 56 | > **Note for Newcomers**: Although this script enables rapid setup, it's highly recommended to read through the documentation for those new to Hyprland. Understanding each step will greatly enhance your ability to customize and troubleshoot your environment. 57 | 58 | 59 | ### Key Bindings 🎹 60 | 61 | After installation, you'll want to familiarize yourself with the default key bindings. Here are some essential shortcuts to get you started: 62 | 63 | #### General 64 | - `Super + T`: Open the terminal (`$terminal`). 65 | - `Super + B`: Open the browser (`$browser`). 66 | - `Super + O`: Open notes application (`$notes`). 67 | - `Super + C`: Open the primary editor (`$editor`). 68 | - `Super + S`: Open the alternative editor (`$editor-alt`). 69 | - `Super + F`: Open the file manager (`$fileManager`). 70 | - `Super + A`: Open the application menu (`$menu`). 71 | - `Super + M`: Exit Hyprland. 72 | 73 | #### Window Management & Workspace Navigation 74 | - `Super + Q`: Close the active window. 75 | - `Super + W`: Toggle floating mode for the active window. 76 | - `Super + J`: Toggle split mode in the Dwindle layout. 77 | - `SUPER + [Arrow Keys]`: Move focus between windows 78 | - `SUPER + SHIFT + [Arrow Keys]`: Move active window 79 | - `SUPER + CTRL + [Arrow Keys]`: Resize active window 80 | - `SUPER + [1-9]`: Switch to workspace 1-9 81 | - `SUPER + SHIFT + [1-9]`: Move active window to workspace 1-9 82 | 83 | #### Screen Brightness, Volume and Media Control 84 | - `Brightness Up`: Increase the screen brightness by 5%. 85 | - `Brightness Down`: Decrease the screen brightness by 5%. 86 | - `Volume Up`: Increase the volume by 5%. 87 | - `Volume Down`: Decrease the volume by 5%. 88 | - `Mic Mute`: Mute the microphone. 89 | - `Audio Mute`: Mute the audio. 90 | - `Play/Pause`: Toggle play/pause for media. 91 | - `Next Track`: Skip to the next track. 92 | - `Previous Track`: Go back to the previous track. 93 | 94 | #### Miscellaneous 95 | - `SUPER + L`: Lock screen 96 | - `Super + V`: Open the clipboard history and paste the selected item. 97 | - `Super + P`: Open the color picker and copy the selected color to the clipboard. 98 | - `Super + L`: Lock the screen. 99 | - `Super + Escape`: Open the logout menu. 100 | - `Ctrl + Escape`: Toggle the Waybar (kill if running, start if not). 101 | - `Print Screen`: Take a screenshot of the entire screen and copy it to the clipboard. 102 | - `Super + Print Screen`: Take a screenshot of the active window and copy it to the clipboard. 103 | - `Super + Alt + Print Screen`: Select an area to take a screenshot and copy it to the clipboard. 104 | 105 | Make sure to have applications installed corresponding to the binds. Feel free to customize these keybindings to better suit your needs. You can customize these and add more in your Hyprland configuration file (`~/.config/hypr/hyprland.conf`). 106 | 107 | ## Credits 🙏 108 | Many configuration parts, themes, and scripts in this guide are sourced from the community. I extend my thanks to all contributors, especially the [Hyprland project](https://github.com/hyprwm/Hyprland) and other cool repositories like [hyprdots](https://github.com/prasanthrangan/hyprdots). If you find that credit has not been given where due, please feel free to open a Pull Request (PR). 109 | 110 | ## References 📖 111 | * [Hyprland Wiki](https://wiki.hyprland.org/) 112 | * [Hyprdots Repo](https://github.com/prasanthrangan/hyprdots) 113 | * [Hyprland-titus Repo](https://github.com/ChrisTitusTech/hyprland-titus) and more. 114 | 115 | Feel free to explore the documentation and contribute to this guide if you find any improvements or have suggestions. 🤝 116 | -------------------------------------------------------------------------------- /assets/backgrounds/cat_leaves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/backgrounds/cat_leaves.png -------------------------------------------------------------------------------- /assets/backgrounds/cat_leaves_blurred.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/backgrounds/cat_leaves_blurred.png -------------------------------------------------------------------------------- /assets/backgrounds/cat_pacman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/backgrounds/cat_pacman.png -------------------------------------------------------------------------------- /assets/backgrounds/dark-cat-rosewater.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/backgrounds/dark-cat-rosewater.png -------------------------------------------------------------------------------- /assets/github_repo/images/Simple_hypr_thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/github_repo/images/Simple_hypr_thumbnail.png -------------------------------------------------------------------------------- /assets/github_repo/images/final-setup-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/github_repo/images/final-setup-01.png -------------------------------------------------------------------------------- /assets/github_repo/images/final-setup-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/github_repo/images/final-setup-02.png -------------------------------------------------------------------------------- /assets/github_repo/images/grimblast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/github_repo/images/grimblast.png -------------------------------------------------------------------------------- /assets/github_repo/images/hyprpicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/github_repo/images/hyprpicker.png -------------------------------------------------------------------------------- /assets/github_repo/images/tofi-applauncher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/github_repo/images/tofi-applauncher.png -------------------------------------------------------------------------------- /assets/github_repo/images/tofi-clipboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/github_repo/images/tofi-clipboard.png -------------------------------------------------------------------------------- /assets/github_repo/images/waybar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/github_repo/images/waybar.png -------------------------------------------------------------------------------- /assets/github_repo/images/wlogout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/github_repo/images/wlogout.png -------------------------------------------------------------------------------- /assets/icons/Tela-circle-dracula.tar.xz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/icons/Tela-circle-dracula.tar.xz -------------------------------------------------------------------------------- /assets/themes/Catppuccin-Mocha.tar.xz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/themes/Catppuccin-Mocha.tar.xz -------------------------------------------------------------------------------- /assets/wlogout/assets/lock-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/lock-hover.png -------------------------------------------------------------------------------- /assets/wlogout/assets/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/lock.png -------------------------------------------------------------------------------- /assets/wlogout/assets/logout-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/logout-hover.png -------------------------------------------------------------------------------- /assets/wlogout/assets/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/logout.png -------------------------------------------------------------------------------- /assets/wlogout/assets/power-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/power-hover.png -------------------------------------------------------------------------------- /assets/wlogout/assets/power.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/power.png -------------------------------------------------------------------------------- /assets/wlogout/assets/restart-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/restart-hover.png -------------------------------------------------------------------------------- /assets/wlogout/assets/restart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/restart.png -------------------------------------------------------------------------------- /assets/wlogout/assets/sleep-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/sleep-hover.png -------------------------------------------------------------------------------- /assets/wlogout/assets/sleep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaurav23b/simple-hyprland/879dba81c84134072826a21453c15e553d03da2d/assets/wlogout/assets/sleep.png -------------------------------------------------------------------------------- /configs/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | [global] 2 | follow = mouse 3 | indicate_hidden = yes 4 | 5 | offset = 10x10 6 | 7 | notification_height = 0 8 | 9 | separator_height = 2 10 | 11 | padding = 8 12 | horizontal_padding = 8 13 | text_icon_padding = 0 14 | frame_width = 2 15 | 16 | frame_color = "#a6adc8" 17 | separator_color = frame 18 | 19 | sort = yes 20 | idle_threshold = 120 21 | font = monospace 10 22 | line_height = 0 23 | markup = full 24 | alignment = left 25 | vertical_alignment = center 26 | show_age_threshold = 60 27 | word_wrap = yes 28 | stack_duplicates = true 29 | hide_duplicate_count = false 30 | 31 | show_indicators = yes 32 | 33 | min_icon_size = 0 34 | max_icon_size = 64 35 | 36 | icon_path = /usr/share/icons/Papirus-Dark/16x16/status/:/usr/share/icons/Papirus-Dark/16x16/devices/:/usr/share/icons/Papirus-Dark/16x16/actions/:/usr/share/icons/Papirus-Dark/16x16/animations/:/usr/share/icons/Papirus-Dark/16x16/apps/:/usr/share/icons/Papirus-Dark/16x16/categories/:/usr/share/icons/Papirus-Dark/16x16/emblems/:/usr/share/icons/Papirus-Dark/16x16/emotes/:/usr/share/icons/Papirus-Dark/16x16/devices/mimetypes:/usr/share/icons/Papirus-Dark/16x16/panel/:/usr/share/icons/Papirus-Dark/16x16/places/ 37 | 38 | dmenu = /usr/bin/wofi -p dunst: 39 | browser = /usr/bin/firefox --new-tab 40 | 41 | title = Dunst 42 | class = Dunst 43 | 44 | corner_radius = 10 45 | timeout = 5 46 | 47 | [urgency_low] 48 | background = "#1e1e2e" 49 | foreground = "#CDD6F4" 50 | 51 | [urgency_normal] 52 | background = "#1e1e2e" 53 | foreground = "#CDD6F4" 54 | 55 | [urgency_critical] 56 | background = "#1e1e2e" 57 | foreground = "#CDD6F4" 58 | frame_color = "#FAB387" -------------------------------------------------------------------------------- /configs/hypr/hypridle.conf: -------------------------------------------------------------------------------- 1 | general { 2 | lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. 3 | before_sleep_cmd = loginctl lock-session # lock before suspend. 4 | after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. 5 | } 6 | 7 | listener { 8 | timeout = 60 # 1min. 9 | on-timeout = brightnessctl -s set 5 # set monitor backlight to minimum, avoid 0 on OLED monitor. 10 | on-resume = brightnessctl -r # monitor backlight restore. 11 | } 12 | 13 | listener { 14 | timeout = 120 # 2min 15 | on-timeout = loginctl lock-session # lock screen when timeout has passed 16 | } 17 | 18 | listener { 19 | timeout = 300 # 5min 20 | on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed 21 | on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. 22 | } 23 | 24 | listener { 25 | timeout = 900 # 30min 26 | on-timeout = systemctl suspend # suspend pc 27 | } 28 | -------------------------------------------------------------------------------- /configs/hypr/hyprland.conf: -------------------------------------------------------------------------------- 1 | 2 | # ####################################################################################### 3 | # AUTOGENERATED HYPR CONFIG. 4 | # PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, 5 | # OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. 6 | # ####################################################################################### 7 | 8 | #autogenerated = 1 # remove this line to remove the warning 9 | 10 | # This is an example Hyprland config file. 11 | # Refer to the wiki for more information. 12 | # https://wiki.hyprland.org/Configuring/Configuring-Hyprland/ 13 | 14 | # Please note not all available settings / options are set here. 15 | # For a full list, see the wiki 16 | 17 | # You can split this configuration into multiple files 18 | # Create your files separately and then link them to this file like this: 19 | # source = ~/.config/hypr/myColors.conf 20 | 21 | 22 | ################ 23 | ### MONITORS ### 24 | ################ 25 | 26 | # See https://wiki.hyprland.org/Configuring/Monitors/ 27 | monitor=,preferred,auto,1,mirror,DP-1 28 | ################### 29 | ### MY PROGRAMS ### 30 | ################### 31 | 32 | # See https://wiki.hyprland.org/Configuring/Keywords/ 33 | 34 | # Set programs that you use 35 | $terminal = kitty 36 | $fileManager = nautilus 37 | $menu = tofi-drun -c ~/.config/tofi/configA --drun-launch=true 38 | $browser = thorium-browser --enable-features=UseOzonePlatform --ozone-platform=wayland 39 | $notes = obsidian 40 | $editor = code 41 | $editor-alt = subl 42 | $colorPicker = hyprpicker 43 | 44 | # --enable-features=UseOzonePlatform --ozone-platform=wayland use this flag to launch CEF/Electron apps in wayland 45 | 46 | ################# 47 | ### AUTOSTART ### 48 | ################# 49 | 50 | # Autostart necessary processes (like notifications daemons, status bars, etc.) 51 | # Or execute your favorite apps at launch like this: 52 | 53 | exec-once=/usr/lib/polkit-kde-authentication-agent-1 #Polkit to manage passwords 54 | exec-once=/usr/bin/dunst 55 | exec-once=waybar # topbar 56 | exec-once = swww-daemon # wallpaper 57 | exec-once = swww img ~/.config/assets/backgrounds/cat_leaves.png --transition-fps 255 --transition-type outer --transition-duration 0.8 58 | exec-once = wl-paste --type text --watch cliphist store # clipboard 59 | exec-once = wl-paste --type image --watch cliphist store 60 | #exec-once = rm "$HOME/.cache/cliphist/db" #it'll delete history at every restart 61 | exec-once = hypridle 62 | 63 | exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP 64 | # exec-once = $terminal 65 | # exec-once = nm-applet & 66 | # exec-once = waybar & hyprpaper & firefox 67 | 68 | ############################# 69 | ### ENVIRONMENT VARIABLES ### 70 | ############################# 71 | 72 | # See https://wiki.hyprland.org/Configuring/Environment-variables/ 73 | 74 | env = XCURSOR_SIZE,24 75 | env = HYPRCURSOR_SIZE,24 76 | 77 | # Firefox 78 | # env = MOZ_ENABLE_WAYLAND,1 79 | 80 | # Nvidia 81 | env = LIBVA_DRIVER_NAME,nvidia 82 | env = XDG_SESSION_TYPE,wayland 83 | env = GBM_BACKEND,nvidia-drm 84 | env = __GLX_VENDOR_LIBRARY_NAME,nvidia # remove if firefox crashes 85 | env = NVD_BACKEND,direct 86 | env = ELECTRON_OZONE_PLATFORM_HINT,auto 87 | 88 | # QT 89 | env = QT_QPA_PLATFORM,wayland 90 | env = QT_QPA_PLATFORMTHEME,qt5ct 91 | env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 92 | env = QT_AUTO_SCREEN_SCALE_FACTOR,1 93 | env = QT_STYLE_OVERRIDE,kvantum 94 | 95 | # Toolkit Backend Variables 96 | env = GDK_BACKEND,wayland,x11,* 97 | env = SDL_VIDEODRIVER,wayland 98 | env = CLUTTER_BACKEND,wayland 99 | 100 | # XDG Specifications 101 | env = XDG_CURRENT_DESKTOP,Hyprland 102 | env = XDG_SESSION_TYPE,wayland 103 | env = XDG_SESSION_DESKTOP,Hyprland 104 | 105 | 106 | ##################### 107 | ### LOOK AND FEEL ### 108 | ##################### 109 | 110 | # Refer to https://wiki.hyprland.org/Configuring/Variables/ 111 | 112 | # https://wiki.hyprland.org/Configuring/Variables/#general 113 | general { 114 | gaps_in = 5 115 | gaps_out = 5 116 | 117 | border_size = 2 118 | 119 | # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors 120 | col.active_border = rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg 121 | col.inactive_border = rgb(24273A) rgb(24273A) rgb(24273A) rgb(27273A) 45deg 122 | 123 | # Set to true enable resizing windows by clicking and dragging on borders and gaps 124 | resize_on_border = true 125 | 126 | # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on 127 | allow_tearing = false 128 | 129 | layout = dwindle 130 | } 131 | 132 | # https://wiki.hyprland.org/Configuring/Variables/#decoration 133 | decoration { 134 | rounding = 10 135 | 136 | # Change transparency of focused and unfocused windows 137 | active_opacity = 1.0 138 | inactive_opacity = 1.0 139 | 140 | # https://wiki.hyprland.org/Configuring/Variables/#blur 141 | blur { 142 | enabled = true 143 | size = 3 144 | passes = 3 145 | new_optimizations = true 146 | vibrancy = 0.1696 147 | ignore_opacity = true 148 | } 149 | } 150 | 151 | # https://wiki.hyprland.org/Configuring/Variables/#animations 152 | animations { 153 | enabled = true 154 | 155 | # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more 156 | 157 | # bezier = myBezier, 0.05, 0.9, 0.1, 1.05 158 | 159 | # animation = windows, 1, 7, myBezier 160 | # animation = windowsOut, 1, 7, default, popin 80% 161 | # animation = border, 1, 10, default 162 | # animation = borderangle, 1, 8, default 163 | # animation = fade, 1, 7, default 164 | # animation = workspaces, 1, 6, default 165 | 166 | bezier = wind, 0.05, 0.9, 0.1, 1.05 167 | bezier = winIn, 0.1, 1.1, 0.1, 1.1 168 | bezier = winOut, 0.3, -0.3, 0, 1 169 | bezier = liner, 1, 1, 1, 1 170 | animation = windows, 1, 6, wind, slide 171 | animation = windowsIn, 1, 6, winIn, slide 172 | animation = windowsOut, 1, 5, winOut, slide 173 | animation = windowsMove, 1, 5, wind, slide 174 | animation = border, 1, 1, liner 175 | animation = borderangle, 1, 30, liner, loop 176 | animation = fade, 1, 10, default 177 | animation = workspaces, 1, 5, wind 178 | } 179 | 180 | # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more 181 | dwindle { 182 | pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below 183 | preserve_split = true # You probably want this 184 | } 185 | 186 | # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more 187 | master { 188 | 189 | } 190 | 191 | # https://wiki.hyprland.org/Configuring/Variables/#misc 192 | misc { 193 | force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers 194 | disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( 195 | disable_splash_rendering = true 196 | vrr = 0 197 | } 198 | 199 | ############# 200 | ### INPUT ### 201 | ############# 202 | 203 | # https://wiki.hyprland.org/Configuring/Variables/#input 204 | input { 205 | kb_layout = us 206 | kb_variant = 207 | kb_model = 208 | kb_options = 209 | kb_rules = 210 | 211 | follow_mouse = 1 212 | # force_no_accel = 1 213 | 214 | sensitivity = 0 # -1.0 - 1.0, 0 means no modification. 215 | 216 | touchpad { 217 | natural_scroll = true 218 | } 219 | } 220 | 221 | # https://wiki.hyprland.org/Configuring/Variables/#gestures 222 | gestures { 223 | workspace_swipe = true 224 | workspace_swipe_fingers = 3 225 | } 226 | 227 | # Example per-device config 228 | # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more 229 | device { 230 | name = epic-mouse-v1 231 | sensitivity = -0.5 232 | } 233 | 234 | #################### 235 | ### KEYBINDINGSS ### 236 | #################### 237 | 238 | # See https://wiki.hyprland.org/Configuring/Keywords/ 239 | $mainMod = SUPER # Sets "Windows" key as main modifier 240 | 241 | # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more 242 | bind = $mainMod, T, exec, $terminal 243 | bind = $mainMod, B, exec, $browser 244 | bind = $mainMod, O, exec, $notes 245 | bind = $mainMod, C, exec, $editor 246 | bind = $mainMod, S, exec, $editor-alt 247 | bind = $mainMod, Q, killactive, 248 | bind = $mainMod, M, exit, 249 | bind = $mainMod, F, exec, $fileManager 250 | bind = $mainMod, W, togglefloating, 251 | bind = $mainMod, A, exec, $menu 252 | # bind = $mainMod, P, pseudo, # dwindle 253 | bind = $mainMod, J, togglesplit, # dwindle 254 | 255 | bind = SUPER, E, exec, jome -d | wl-copy #Emojipicker + clipboard copy 256 | 257 | # Move focus with mainMod + arrow keys 258 | bind = $mainMod, left, movefocus, l 259 | bind = $mainMod, right, movefocus, r 260 | bind = $mainMod, up, movefocus, u 261 | bind = $mainMod, down, movefocus, d 262 | 263 | # Switch workspaces with mainMod + [0-9] 264 | bind = $mainMod, 1, workspace, 1 265 | bind = $mainMod, 2, workspace, 2 266 | bind = $mainMod, 3, workspace, 3 267 | bind = $mainMod, 4, workspace, 4 268 | bind = $mainMod, 5, workspace, 5 269 | bind = $mainMod, 6, workspace, 6 270 | bind = $mainMod, 7, workspace, 7 271 | bind = $mainMod, 8, workspace, 8 272 | bind = $mainMod, 9, workspace, 9 273 | bind = $mainMod, 0, workspace, 10 274 | 275 | # Move active window to a workspace with mainMod + SHIFT + [0-9] 276 | bind = $mainMod SHIFT, 1, movetoworkspace, 1 277 | bind = $mainMod SHIFT, 2, movetoworkspace, 2 278 | bind = $mainMod SHIFT, 3, movetoworkspace, 3 279 | bind = $mainMod SHIFT, 4, movetoworkspace, 4 280 | bind = $mainMod SHIFT, 5, movetoworkspace, 5 281 | bind = $mainMod SHIFT, 6, movetoworkspace, 6 282 | bind = $mainMod SHIFT, 7, movetoworkspace, 7 283 | bind = $mainMod SHIFT, 8, movetoworkspace, 8 284 | bind = $mainMod SHIFT, 9, movetoworkspace, 9 285 | bind = $mainMod SHIFT, 0, movetoworkspace, 10 286 | 287 | # Example special workspace (scratchpad) 288 | #bind = $mainMod, S, togglespecialworkspace, magic 289 | bind = $mainMod SHIFT, S, movetoworkspace, special:magic 290 | 291 | # Scroll through existing workspaces with mainMod + scroll 292 | bind = $mainMod, mouse_down, workspace, e+1 293 | bind = $mainMod, mouse_up, workspace, e-1 294 | 295 | # Move/resize windows with mainMod + LMB/RMB and dragging 296 | bindm = $mainMod, mouse:272, movewindow 297 | bindm = $mainMod, mouse:273, resizewindow 298 | 299 | # Move/resize windows + Mouse 300 | bindm = $mainMod, Z, movewindow 301 | bindm = $mainMod, X, resizewindow 302 | 303 | # Resize windows 304 | binde = $mainMod+Shift, Right, resizeactive, 30 0 305 | binde = $mainMod+Shift, Left, resizeactive, -30 0 306 | binde = $mainMod+Shift, Up, resizeactive, 0 -30 307 | binde = $mainMod+Shift, Down, resizeactive, 0 30 308 | 309 | 310 | # Clipboard 311 | bind = SUPER, V, exec, cliphist list | tofi -c ~/.config/tofi/configV | cliphist decode | wl-copy 312 | 313 | # Colour Picker 314 | bind = $mainMod, P, exec, $colorPicker | wl-copy 315 | 316 | # Screen locking 317 | bind = SUPER, L, exec, hyprlock 318 | 319 | # wlogout 320 | bind = SUPER, ESCAPE, exec, wlogout 321 | 322 | # waybar 323 | bind = Ctrl, Escape, exec, killall waybar || waybar # toggle waybar 324 | 325 | # Screenshot 326 | # add --cursor flag to include cursor also, --freeze flag to freeze before selection 327 | bind = , Print, exec, grimblast --notify copysave screen # Entire screen + clipboard copy 328 | bind = SUPER, Print, exec, grimblast --notify copysave active # current Active window only + clipboard copy 329 | bind = SUPER ALT, Print, exec, grimblast --notify copysave area # Select area to take screenshot 330 | 331 | # Volume and Media Control 332 | bind = , XF86AudioRaiseVolume, exec, pamixer -i 5 333 | bind = , XF86AudioLowerVolume, exec, pamixer -d 5 334 | bind = , XF86AudioMicMute, exec, pamixer --default-source -m 335 | bind = , XF86AudioMute, exec, pamixer -t 336 | bind = , XF86AudioPlay, exec, playerctl play-pause 337 | bind = , XF86AudioPause, exec, playerctl play-pause 338 | bind = , XF86AudioNext, exec, playerctl next 339 | bind = , XF86AudioPrev, exec, playerctl previous 340 | 341 | # Screen brightness 342 | bind = , XF86MonBrightnessUp, exec, brightnessctl s +5% 343 | bind = , XF86MonBrightnessDown, exec, brightnessctl s 5%- 344 | 345 | ############################## 346 | ### WINDOWS AND WORKSPACES ### 347 | ############################## 348 | 349 | ## Use hyprctl clients to look for window class 350 | 351 | # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more 352 | # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules 353 | 354 | # Example windowrule v1 355 | # windowrule = float, ^(kitty)$ 356 | windowrule = float, class:^(jome)$ 357 | 358 | # Example windowrule v2 359 | # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ 360 | windowrulev2 = opacity 0.90 0.90,class:^(Thorium-browser)$ 361 | windowrulev2 = opacity 0.80 0.80,class:^(Code)$ 362 | windowrulev2 = opacity 0.80 0.80,class:^(Arduino IDE)$ 363 | windowrulev2 = opacity 0.80 0.80,class:^(dev.warp.Warp)$ 364 | windowrulev2 = opacity 0.80 0.80,class:^(obsidian)$ 365 | windowrulev2 = opacity 0.80 0.80,class:^(code-url-handler)$ 366 | windowrulev2 = opacity 0.80 0.80,class:^(code-insiders-url-handler)$ 367 | windowrulev2 = opacity 0.80 0.80,class:^(kitty)$ 368 | windowrulev2 = opacity 0.80 0.80,class:^(org.gnome.Nautilus)$ 369 | windowrulev2 = opacity 0.80 0.80,class:^(org.kde.ark)$ 370 | windowrulev2 = opacity 0.80 0.80,class:^(nwg-look)$ 371 | windowrulev2 = opacity 0.80 0.80,class:^(qt5ct)$ 372 | windowrulev2 = opacity 0.80 0.80,class:^(qt6ct)$ 373 | windowrulev2 = opacity 0.80 0.80,class:^(kvantummanager)$ 374 | windowrulev2 = opacity 0.80 0.70,class:^(pavucontrol)$ 375 | windowrulev2 = opacity 0.80 0.70,class:^(blueman-manager)$ 376 | windowrulev2 = opacity 0.80 0.70,class:^(nm-applet)$ 377 | windowrulev2 = opacity 0.70 0.70,class:^(Spotify)$ 378 | windowrulev2 = opacity 0.70 0.70,initialTitle:^(Spotify Free)$ 379 | windowrulev2 = opacity 0.80 0.70,class:^(nm-connection-editor)$ 380 | windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$ 381 | windowrulev2 = opacity 0.80 0.70,class:^(polkit-gnome-authentication-agent-1)$ 382 | windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.gtk)$ 383 | windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.hyprland)$ 384 | 385 | windowrulev2 = float,class:^(kvantummanager)$ 386 | windowrulev2 = float,class:^(qt5ct)$ 387 | windowrulev2 = float,class:^(qt6ct)$ 388 | windowrulev2 = float,class:^(nwg-look)$ 389 | windowrulev2 = float,class:^(org.kde.ark)$ 390 | windowrulev2 = float,class:^(pavucontrol)$ 391 | windowrulev2 = float,class:^(blueman-manager)$ 392 | windowrulev2 = float,class:^(nm-applet)$ 393 | windowrulev2 = float,class:^(nm-connection-editor)$ 394 | windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$ 395 | 396 | # windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. 397 | 398 | # layerrule = blur,waybar 399 | layerrule = ignorezero,tofi 400 | layerrule = ignorezero, dunst 401 | layerrule = blur,dunst 402 | -------------------------------------------------------------------------------- /configs/hypr/hyprlock.conf: -------------------------------------------------------------------------------- 1 | background { 2 | monitor = 3 | path = ~/.config/assets/backgrounds/cat_leaves_blurred.png # only png supported for now 4 | } 5 | 6 | input-field { 7 | monitor = 8 | size = 200, 50 9 | outline_thickness = 3 10 | dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 11 | dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 12 | dots_center = true 13 | dots_rounding = -1 # -1 default circle, -2 follow input-field rounding 14 | outer_color = rgb(a6adc8) 15 | inner_color = rgb(11111b) 16 | font_color = rgb(a6adc8) 17 | fade_on_empty = true 18 | fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered. 19 | placeholder_text = Input Password... # Text rendered in the input box when it's empty. 20 | hide_input = false 21 | rounding = -1 # -1 means complete rounding (circle/oval) 22 | check_color = rgb(204, 136, 34) 23 | fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color 24 | fail_text = $FAIL ($ATTEMPTS) # can be set to empty 25 | fail_transition = 100 # transition time in ms between normal outer_color and fail_color 26 | capslock_color = -1 27 | numlock_color = -1 28 | bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) 29 | invert_numlock = false # change color if numlock is off 30 | swap_font_color = false # see below 31 | position = 0, -20 32 | halign = center 33 | valign = center 34 | } 35 | 36 | label { 37 | monitor = 38 | text = cmd[update:1000] echo "$TIME" 39 | color = rgba(a6adc8) 40 | font_size = 55 41 | font_family = Fira Semibold 42 | position = -100, 40 43 | halign = right 44 | valign = bottom 45 | shadow_passes = 5 46 | shadow_size = 10 47 | } 48 | 49 | label { 50 | monitor = 51 | text = Hello 52 | color = rgba(a6adc8) 53 | font_size = 20 54 | font_family = Fira Semibold 55 | position = -100, 160 56 | halign = right 57 | valign = bottom 58 | shadow_passes = 5 59 | shadow_size = 10 60 | } 61 | 62 | image { 63 | monitor = 64 | path = ~/.config/assets/backgrounds/cat_pacman.png 65 | size = 280 # lesser side if not 1:1 ratio 66 | rounding = -1 # negative values mean circle 67 | border_size = 4 68 | border_color = rgb(a6adc8) 69 | rotate = 0 # degrees, counter-clockwise 70 | reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2 71 | # reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F 72 | position = 0, 200 73 | halign = center 74 | valign = center 75 | } -------------------------------------------------------------------------------- /configs/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | font_size 13.0 2 | window_padding_width 8 3 | font_family JetBrainsMono Nerd Font 4 | italic_font auto 5 | # bold_font auto 6 | bold_italic_font auto 7 | include theme.conf 8 | #background_opacity 0.60 9 | #hide_window_decorations yes 10 | #confirm_os_window_close 0 11 | -------------------------------------------------------------------------------- /configs/kitty/theme.conf: -------------------------------------------------------------------------------- 1 | 2 | ## name: Catppuccin Mocha 🌿 3 | ## author: Pocco81 (https://github.com/Pocco81) 4 | ## license: MIT 5 | ## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf 6 | ## blurb: Soothing pastel theme for the high-spirited! 7 | 8 | 9 | 10 | # The basic colors 11 | foreground #CDD6F4 12 | background #1E1E2E 13 | selection_foreground #1E1E2E 14 | selection_background #F5E0DC 15 | 16 | # Cursor colors 17 | cursor #F5E0DC 18 | cursor_text_color #1E1E2E 19 | 20 | # URL underline color when hovering with mouse 21 | url_color #B4BEFE 22 | 23 | # Kitty window border colors 24 | active_border_color #CBA6F7 25 | inactive_border_color #8E95B3 26 | bell_border_color #EBA0AC 27 | 28 | # OS Window titlebar colors 29 | wayland_titlebar_color system 30 | macos_titlebar_color system 31 | 32 | # Tab bar colors 33 | active_tab_foreground #11111B 34 | active_tab_background #CBA6F7 35 | inactive_tab_foreground #CDD6F4 36 | inactive_tab_background #181825 37 | tab_bar_background #11111B 38 | 39 | # Colors for marks (marked text in the terminal) 40 | mark1_foreground #1E1E2E 41 | mark1_background #87B0F9 42 | mark2_foreground #1E1E2E 43 | mark2_background #CBA6F7 44 | mark3_foreground #1E1E2E 45 | mark3_background #74C7EC 46 | 47 | # The 16 terminal colors 48 | 49 | # black 50 | color0 #43465A 51 | color8 #43465A 52 | 53 | # red 54 | color1 #F38BA8 55 | color9 #F38BA8 56 | 57 | # green 58 | color2 #A6E3A1 59 | color10 #A6E3A1 60 | 61 | # yellow 62 | color3 #F9E2AF 63 | color11 #F9E2AF 64 | 65 | # blue 66 | color4 #87B0F9 67 | color12 #87B0F9 68 | 69 | # magenta 70 | color5 #F5C2E7 71 | color13 #F5C2E7 72 | 73 | # cyan 74 | color6 #94E2D5 75 | color14 #94E2D5 76 | 77 | # white 78 | color7 #CDD6F4 79 | color15 #A1A8C9 -------------------------------------------------------------------------------- /configs/tofi/configA: -------------------------------------------------------------------------------- 1 | width = 100% 2 | height = 100% 3 | border-width = 0 4 | outline-width = 0 5 | padding-left = 33% 6 | padding-top = 33% 7 | result-spacing = 25 8 | num-results = 5 9 | 10 | font = JetBrainsMono Nerd Font 11 | font-size = 24 12 | 13 | text-color = #4e4e5f 14 | 15 | prompt-text = " : " 16 | 17 | background-color = #11111bd9 18 | selection-color = #83A4E7 19 | -------------------------------------------------------------------------------- /configs/tofi/configV: -------------------------------------------------------------------------------- 1 | width = 100% 2 | height = 100% 3 | border-width = 0 4 | outline-width = 0 5 | padding-top = 33% 6 | padding-left = 10% 7 | padding-right = 10% 8 | result-spacing = 25 9 | num-results = 5 10 | 11 | font = JetBrainsMono Nerd Font 12 | font-size = 24 13 | 14 | text-color = #4e4e5f 15 | 16 | prompt-text = " : " 17 | 18 | background-color = #11111bd9 19 | selection-color = #83A4E7 20 | 21 | -------------------------------------------------------------------------------- /configs/waybar/config.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "top", 3 | "position": "top", 4 | "mode": "dock", 5 | "exclusive": true, 6 | "passthrough": false, 7 | "gtk-layer-shell": true, 8 | "height": 0, 9 | "modules-left": [ 10 | "clock", 11 | "hyprland/workspaces" 12 | ], 13 | "modules-center": ["hyprland/window"], 14 | "modules-right": [ 15 | "tray", 16 | "memory", 17 | "cpu", 18 | "network", 19 | "battery", 20 | "backlight", 21 | "pulseaudio", 22 | "pulseaudio#microphone" 23 | ], 24 | 25 | "hyprland/window": { 26 | "format": "󰣇 {}" 27 | }, 28 | 29 | "hyprland/workspaces": { 30 | "disable-scroll": true, 31 | "all-outputs": true, 32 | "on-click": "activate" 33 | //"format": "{icon}", 34 | }, 35 | 36 | "tray": { 37 | "icon-size": 13, 38 | "spacing": 10 39 | }, 40 | 41 | "clock": { 42 | "format": "{:%A  %B-%d-%Y  %I:%M:%S %p}", 43 | "interval": 1, 44 | "rotate": 0, 45 | "tooltip-format": "{calendar}", 46 | "calendar": { 47 | "mode": "month", 48 | "mode-mon-col": 3, 49 | "on-scroll": 1, 50 | "on-click-right": "mode", 51 | "format": { 52 | "months": "{}", 53 | "weekdays": "{}", 54 | "today": "{}", 55 | "days": "{}" 56 | } 57 | } 58 | }, 59 | 60 | "backlight": { 61 | "device": "intel_backlight", 62 | "format": "{icon} {percent}%", 63 | "format-icons": ["󰃞", "󰃟", "󰃠"], 64 | "on-scroll-up": "brightnessctl set 1%+", 65 | "on-scroll-down": "brightnessctl set 1%-", 66 | "min-length": 6 67 | }, 68 | 69 | "battery": { 70 | "states": { 71 | "good": 95, 72 | "warning": 30, 73 | "critical": 20 74 | }, 75 | "format": "{icon} {capacity}%", 76 | "format-charging": " {capacity}%", 77 | "format-plugged": " {capacity}%", 78 | "format-alt": "{time} {icon}", 79 | "format-icons": ["󰂃", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] 80 | }, 81 | 82 | "pulseaudio": { 83 | "format": "{icon} {volume}%", 84 | "tooltip": false, 85 | "format-muted": " Muted", 86 | "on-click": "pamixer -t", 87 | "on-scroll-up": "pamixer -i 1", 88 | "on-scroll-down": "pamixer -d 1", 89 | "scroll-step": 5, 90 | "format-icons": { 91 | "headphone": "", 92 | "hands-free": "", 93 | "headset": "", 94 | "phone": "", 95 | "portable": "", 96 | "car": "", 97 | "default": ["","", "", ""] 98 | } 99 | }, 100 | 101 | "pulseaudio#microphone": { 102 | "format": "{format_source}", 103 | "format-source": " {volume}%", 104 | "format-source-muted": " Muted", 105 | "on-click": "pamixer --default-source -t", 106 | "on-scroll-up": "pamixer --default-source -i 5", 107 | "on-scroll-down": "pamixer --default-source -d 5", 108 | "scroll-step": 5 109 | }, 110 | 111 | "memory": { 112 | "states": { 113 | "c": 90, // critical 114 | "h": 60, // high 115 | "m": 30 // medium 116 | }, 117 | "interval": 10, 118 | "format": "󰾆 {used}GB", 119 | "format-m": "󰾅 {used}GB", 120 | "format-h": "󰓅 {used}GB", 121 | "format-c": " {used}GB", 122 | "format-alt": "󰾆 {percentage}%", 123 | "max-length": 10, 124 | "tooltip": true, 125 | "tooltip-format": "󰾆 {percentage}%\n {used:0.1f}GB/{total:0.1f}GB" 126 | }, 127 | 128 | "cpu": { 129 | "interval": 10, 130 | "format": "󰍛 {usage}%", 131 | "format-alt": "{icon0}{icon1}{icon2}{icon3}", 132 | "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"] 133 | }, 134 | 135 | "network": { 136 | "tooltip": true, 137 | "format-wifi": " {essid}", 138 | "format-ethernet": "󰈀 ", 139 | "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}", 140 | "format-linked": "󰈀 {ifname} (No IP)", 141 | "format-disconnected": "󰖪 ", 142 | "tooltip-format-disconnected": "Disconnected", 143 | "format-alt": " {bandwidthDownBytes}  {bandwidthUpBytes}", 144 | "interval": 2 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /configs/waybar/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | border: none; 3 | border-radius: 0; 4 | font-family: JetBrainsMono Nerd Font, monospace; 5 | font-weight: bold; 6 | font-size: 14px; 7 | min-height: 0; 8 | } 9 | 10 | window#waybar { 11 | background: rgba(21, 18, 27, 0); 12 | color: #cdd6f4; 13 | } 14 | 15 | #workspaces button { 16 | padding: 5px; 17 | color: #555869; 18 | margin-right: 5px; 19 | } 20 | 21 | #workspaces button.active { 22 | color: #a6adc8; 23 | } 24 | 25 | #workspaces button.focused { 26 | color: #a6adc8; 27 | background: #eba0ac; 28 | border-radius: 10px; 29 | } 30 | 31 | #workspaces button.urgent { 32 | color: #11111b; 33 | background: #a6e3a1; 34 | border-radius: 10px; 35 | } 36 | 37 | #workspaces button:hover { 38 | background: #cdd6f4; 39 | color: #11111b; 40 | border-radius: 10px; 41 | } 42 | 43 | #window, 44 | #clock, 45 | #battery, 46 | #pulseaudio, 47 | #network, 48 | #cpu, 49 | #memory, 50 | #workspaces, 51 | #tray, 52 | #backlight { 53 | background: #1e1e2e; 54 | padding: 0px 10px; 55 | margin: 3px 0px; 56 | margin-top: 5px; 57 | /* border: 1px solid #181825; */ 58 | } 59 | 60 | #backlight { 61 | border-radius: 10px 0px 0px 10px; 62 | } 63 | 64 | #tray { 65 | border-radius: 10px; 66 | margin-right: 10px; 67 | } 68 | 69 | #workspaces { 70 | background: #1e1e2e; 71 | border-radius: 10px; 72 | margin-left: 10px; 73 | padding-right: 0px; 74 | padding-left: 5px; 75 | } 76 | 77 | #cpu { 78 | border-radius: 0px 10px 10px 0px; 79 | margin-right: 10px; 80 | } 81 | 82 | #memory { 83 | border-radius: 10px 0px 0px 10px; 84 | } 85 | 86 | #window { 87 | border-radius: 10px; 88 | margin-left: 60px; 89 | margin-right: 60px; 90 | } 91 | 92 | #clock { 93 | color: #a6adc8; 94 | border-radius: 10px 10px 10px 10px; 95 | margin-left: 5px; 96 | border-right: 0px; 97 | } 98 | 99 | #network { 100 | color: #a6adc8; 101 | border-radius: 10px 0px 0px 10px; 102 | 103 | } 104 | 105 | #pulseaudio { 106 | color: #a6adc8; 107 | border-left: 0px; 108 | border-right: 0px; 109 | } 110 | 111 | #pulseaudio.microphone { 112 | color: #a6adc8; 113 | border-radius: 0px 10px 10px 0px; 114 | border-left: 0px; 115 | border-right: 0px; 116 | margin-right: 5px; 117 | } 118 | 119 | #battery { 120 | color:#a6adc8; 121 | border-radius: 0px 10px 10px 0px; 122 | margin-right: 10px; 123 | } 124 | -------------------------------------------------------------------------------- /configs/wlogout/layout: -------------------------------------------------------------------------------- 1 | { 2 | "label" : "exit", 3 | "action" : "", 4 | "text" : "Exit", 5 | "keybind" : "h" 6 | } 7 | { 8 | "label" : "shutdown", 9 | "action" : "systemctl poweroff", 10 | "text" : "Shutdown", 11 | "keybind" : "s" 12 | } 13 | 14 | { 15 | "label" : "suspend", 16 | "action" : "systemctl suspend-then-hibernate", 17 | "text" : "Suspend", 18 | "keybind" : "u" 19 | } 20 | { 21 | "label" : "lock", 22 | "action" : "hyprlock", 23 | "text" : "Lock", 24 | "keybind" : "l" 25 | } 26 | { 27 | "label" : "logout", 28 | "action" : "hyprctl dispatch exit", 29 | "text" : "Logout", 30 | "keybind" : "e" 31 | } 32 | { 33 | "label" : "reboot", 34 | "action" : "systemctl reboot", 35 | "text" : "Reboot", 36 | "keybind" : "r" 37 | } -------------------------------------------------------------------------------- /configs/wlogout/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | font-family: JetBrains Mono, Symbols Nerd Font; 3 | font-size: 24px; 4 | transition-property: background-color; 5 | transition-duration: 0.7s; 6 | } 7 | 8 | window { 9 | background-color: #11111b; 10 | /* border-radius: 10px; */ 11 | } 12 | 13 | button { 14 | background-color: #11111b; 15 | border-style: solid; 16 | /* border-width: 2px; */ 17 | border-radius: 50px; 18 | background-repeat: no-repeat; 19 | background-position: center; 20 | background-size: 15%; 21 | margin: 15px; 22 | } 23 | 24 | button:active, 25 | button:hover { 26 | background-color: #cdd6f4; 27 | } 28 | 29 | button:focus { 30 | background-color: #cdd6f4; 31 | } 32 | 33 | #lock { 34 | background-image: image(url("~/.config/assets/wlogout/assets/lock.png"), url("/usr/local/share/wlogout/icons/lock.png")); 35 | } 36 | 37 | #lock:hover { 38 | background-image: image(url("~/.config/assets/wlogout/assets/lock-hover.png"), url("/usr/local/share/wlogout/icons/lock.png")); 39 | color: #11111b; 40 | } 41 | 42 | #logout { 43 | background-image: image(url("~/.config/assets/wlogout/assets/logout.png"), url("/usr/local/share/wlogout/icons/logout.png")); 44 | } 45 | 46 | #logout:hover { 47 | background-image: image(url("~/.config/assets/wlogout/assets/logout-hover.png"), url("/usr/local/share/wlogout/icons/logout.png")); 48 | color: #11111b; 49 | } 50 | 51 | #suspend { 52 | background-image: image(url("~/.config/assets/wlogout/assets/sleep.png"), url("/usr/local/share/wlogout/icons/suspend.png")); 53 | } 54 | 55 | #suspend:hover { 56 | background-image: image(url("~/.config/assets/wlogout/assets/sleep-hover.png"), url("/usr/local/share/wlogout/icons/suspend.png")); 57 | color: #11111b; 58 | } 59 | 60 | #shutdown { 61 | background-image: image(url("~/.config/assets/logout/assets/power.png"), url("/usr/local/share/wlogout/icons/shutdown.png")); 62 | } 63 | 64 | #shutdown:hover { 65 | background-image: image(url("~/.config/assets/wlogout/assets/power-hover.png"), url("/usr/local/share/wlogout/icons/shutdown.png")); 66 | color: #11111b; 67 | } 68 | 69 | #reboot { 70 | background-image: image(url("~/.config/assets/wlogout/assets/restart.png"), url("/usr/local/share/wlogout/icons/reboot.png")); 71 | } 72 | 73 | #reboot:hover { 74 | background-image: image(url("~/.config/assets/wlogout/assets/restart-hover.png"), url("/usr/local/share/wlogout/icons/reboot.png")); 75 | color: #11111b; 76 | } 77 | 78 | #exit { 79 | background-image: image(url("~/.config/assets/wlogout/assets/restart.png"), url("/usr/local/share/wlogout/icons/reboot.png")); 80 | background-color: #11111b; 81 | 82 | } 83 | 84 | #exit:hover { 85 | background-image: image(url("~/.config/assets/wlogout/assets/restart-hover.png"), url("/usr/local/share/wlogout/icons/reboot.png")); 86 | color: #11111b; 87 | background-color: #cdd6f4; 88 | } 89 | -------------------------------------------------------------------------------- /docs/basic_configuration.md: -------------------------------------------------------------------------------- 1 | # Basic Configuration 🛠️ 2 | 3 | Having installed Hyprland and essential system components, we now proceed to configure basics of your environment for optimal functionality and efficiency. This section will guide you through the configuration of key aspects by modifying the `hyprland.conf` file. 4 | 5 | Navigate to your configuration file and commence editing. 6 | 7 | #### 1. Monitor Configuration 🖥️ 8 | The default monitor configuration is optimized for most setups. However, for advanced configurations such as setting precise refresh rates, resolutions, or mirroring displays, refer to the [Hyprland Monitor Configuration Wiki](https://wiki.hyprland.org/Configuring/Monitors/). 9 | 10 | #### 2. User Programs 📚 11 | Define frequently used applications for rapid access: 12 | 13 | ``` 14 | # Define primary applications 15 | $terminal = kitty 16 | $fileManager = dolphin 17 | $browser = brave-browser 18 | $editor = code 19 | ``` 20 | 21 | #### 3. Autostart Configuration 🚀 22 | Autostart critical applications and services. We have previously configured Polkit and dunst daemon for autostart. 23 | 24 | ``` 25 | ## Autostart essential processes 26 | exec-once=/usr/lib/polkit-kde-authentication-agent-1 # Polkit for privilege management 27 | exec-once=/usr/bin/dunst 28 | # Additional autostart entries 29 | ``` 30 | 31 | #### 4. Environment Variables 🌍 32 | Configure environment variables to ensure compatibility and performance. You can copy and paste these as it is, as anyway you will need to configure them later. 33 | 34 | ``` 35 | # QT 36 | env = QT_QPA_PLATFORM,wayland;xcb 37 | env = QT_QPA_PLATFORMTHEME,qt6ct 38 | env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 39 | env = QT_AUTO_SCREEN_SCALE_FACTOR,1 40 | env = QT_STYLE_OVERRIDE,kvantum 41 | 42 | # Toolkit Backend Variables 43 | env = GDK_BACKEND,wayland,x11,* 44 | env = SDL_VIDEODRIVER,wayland 45 | env = CLUTTER_BACKEND,wayland 46 | 47 | # XDG Specifications 48 | env = XDG_CURRENT_DESKTOP,Hyprland 49 | env = XDG_SESSION_TYPE,wayland 50 | env = XDG_SESSION_DESKTOP,Hyprland 51 | ``` 52 | #### 5. Look and Feel 🎨 53 | Adjust the appearance and behavior of your Hyprland environment. Detailed customization will be covered in subsequent sections. 54 | 55 | Change things like `gaps_in, gaps_out, border_size, resizing_on_border`, etc. according to your comfort. 56 | 57 | ``` 58 | general { 59 | gaps_in = 5 60 | gaps_out = 5 61 | border_size = 2 62 | col.active_border = rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg 63 | col.inactive_border = rgb(24273A) rgb(24273A) rgb(24273A) rgb(27273A) 45deg 64 | resize_on_border = true 65 | allow_tearing = false 66 | layout = dwindle 67 | } 68 | ``` 69 | 70 | #### 6. Input Configuration ⌨️🖱️ 71 | Configure input devices, including keyboard layouts and touchpad settings: 72 | 73 | Most of the defaults will work, but you might want to change things like `natural_scroll, workspace_swipe`, etc. 74 | 75 | ``` 76 | input { 77 | kb_layout = us 78 | follow_mouse = 1 79 | sensitivity = 0 80 | 81 | touchpad { 82 | natural_scroll = true 83 | } 84 | } 85 | 86 | gestures { 87 | workspace_swipe = true 88 | workspace_swipe_fingers = 3 89 | } 90 | ``` 91 | 92 | #### 7. Keybindings ⌨️ 93 | Configure keybindings for efficient workflow management. Note that these bindings are crucial as we haven't yet configured an application launcher. 94 | 95 | **Pro Tip:** 💡 Try to make meaningful binds like T for terminal, B for browser, C for code, F for file manager, and Q for quit. 96 | 97 | You might want to change the volume and brightness of your system. To do that, install the following software: 98 | 99 | ``` 100 | # Brightness control 101 | pacman -S brightnessctl 102 | 103 | # Volume control 104 | pacman -S pamixer 105 | ``` 106 | 107 | After installing the utilities, add the following bindings: 108 | 109 | ``` 110 | $mainMod = SUPER 111 | 112 | bind = $mainMod, T, exec, $terminal 113 | bind = $mainMod, B, exec, $browser 114 | bind = $mainMod, C, exec, $editor 115 | bind = $mainMod, Q, killactive, 116 | bind = $mainMod, M, exit, 117 | bind = $mainMod, F, exec, $fileManager 118 | bind = $mainMod, W, togglefloating, 119 | 120 | 121 | # Volume and Media Control 122 | bind = , XF86AudioRaiseVolume, exec, pamixer -i 5 123 | bind = , XF86AudioLowerVolume, exec, pamixer -d 5 124 | bind = , XF86AudioMicMute, exec, pamixer --default-source -m 125 | bind = , XF86AudioMute, exec, pamixer -t 126 | bind = , XF86AudioPlay, exec, playerctl play-pause 127 | bind = , XF86AudioPause, exec, playerctl play-pause 128 | bind = , XF86AudioNext, exec, playerctl next 129 | bind = , XF86AudioPrev, exec, playerctl previous 130 | 131 | # Screen brightness 132 | bind = , XF86MonBrightnessUp, exec, brightnessctl s +5% 133 | bind = , XF86MonBrightnessDown, exec, brightnessctl s 5%- 134 | ``` 135 | We will add more binds as we progress. 136 | 137 | For comprehensive keybinding documentation, refer to the [Hyprland Keybindings Wiki](https://wiki.hyprland.org/Configuring/Binds/). 138 | 139 | With your minimal Hyprland environment now operational, we're poised to elevate it from functional to phenomenal. In the following sections, we'll supercharge your setup with sleek status bars, lightning-fast application launchers, and dynamic wallpaper utilities. Brace yourself for a deep dive into advanced customization that will transform your desktop into a powerhouse of aesthetics and efficiency. The groundwork is laid; now it's time to unleash the full potential of your Hyprland environment. 🚀✨ 140 | 141 | **Next:** [Useful Utilities](useful_utilities.md) 👉 -------------------------------------------------------------------------------- /docs/final.md: -------------------------------------------------------------------------------- 1 | # Simple Hyprland 🌟 2 | 3 | Congratulations on completing the Simple Hyprland Guide! You've successfully set up a minimal, efficient, and visually appealing Hyprland environment on your Arch Linux system. This README serves as a recap of your journey and a reference for future tweaks and enhancements. 4 | 5 | ## What You've Accomplished 🏆 6 | 7 | 1. **Base Installation**: Set up a minimal Arch Linux system with Hyprland. 8 | 2. **Core Components**: Installed and configured critical system software. 9 | 3. **Basic Configuration**: Customized Hyprland for optimal functionality. 10 | 4. **Essential Utilities**: Enhanced your setup with powerful tools: 11 | - Waybar (Status Bar) 12 | - Tofi (App Launcher) 13 | - Cliphist (Clipboard Manager) 14 | - Swww (Wallpaper Manager) 15 | - Hyprpicker (Color Picker) 16 | - Hyprlock (Screen Locker) 17 | - Hypridle (Idle Manager) 18 | - Wlogout (Logout Menu) 19 | - Grimblast (Screenshot Tool) 20 | 5. **Theming**: Applied a cohesive look across your desktop environment. 21 | 22 | ## Key Files and Locations 📁 23 | 24 | - Hyprland config: `~/.config/hypr/hyprland.conf` 25 | - Waybar config: `~/.config/waybar/config.jsonc` and `~/.config/waybar/style.css` 26 | - Tofi config: `~/.config/tofi/` 27 | - Kitty config: `~/.config/kitty/kitty.conf` and `~/.config/kitty/theme.conf` 28 | - Dunst config: `~/.config/dunst/dunstrc` 29 | 30 | ## Customization Tips 🛠️ 31 | 32 | 1. **Hyprland**: Modify `~/.config/hypr/hyprland.conf` for layout, keybindings, and animations. 33 | 2. **Waybar**: Adjust modules and styling in the Waybar config files. 34 | 3. **Themes**: Use `nwg-look` for GTK themes and `kvantummanager` for QT themes. 35 | 4. **Wallpaper**: Change wallpaper using `swww img [path_to_image]`. 36 | 5. **Keybindings**: Add or modify keybindings in the Hyprland config. 37 | 38 | ## Troubleshooting 🔍 39 | 40 | 1. Check the Hyprland log: `~/.cache/hypr/hyprland.log` 41 | 2. Ensure all services are running: `systemctl --user status` 42 | 3. Verify configuration syntax for each component. 43 | 4. Consult the [Hyprland Wiki](https://wiki.hyprland.org/) for detailed information. 44 | 45 | ## Further Enhancements 🔮 46 | - A script to automate the whole process to save time. 47 | - Documentation for extra Setup required for NVIDIA card users. 48 | - Explore additional Wayland-compatible applications. 49 | - Fine-tune animations and window rules in Hyprland. 50 | - Create custom scripts for repeated tasks. 51 | - Adding cool derived minimal setups. 52 | 53 | ## Community and Support 🤝 54 | - [Hyprland GitHub](https://github.com/hyprwm/Hyprland) 55 | - [Hyprland Discord](https://discord.gg/hQ9XvMUjjr) 56 | - [Arch Linux Forums](https://bbs.archlinux.org/) 57 | 58 | Remember, your Hyprland journey doesn't end here. Keep exploring, customizing, and enjoying your unique, efficient, and beautiful desktop environment! 🎉 59 | 60 | **Home:** [Main ReadMe](/README.md) -------------------------------------------------------------------------------- /docs/installation_Hypr.md: -------------------------------------------------------------------------------- 1 | # Hyprland & Critical Softwares 🖥️🔧 2 | With the prerequisite base system established, we proceed to the core of this guide. This section delineates the process of installing Hyprland and configuring critical system software to ensure a robust and efficient workflow. 3 | 4 | ## Hyprland Installation 🚀 5 | 1. **Install Hyprland:** 6 | 7 | ``` 8 | pacman -S hyprland 9 | ``` 10 | 11 | **Pro Tip:💡** If you're feeling adventurous, you can always grab the bleeding-edge version from the AUR for the latest features and fixes. 12 | 13 | 2. **Initiate Hyprland:** 14 | As we installed SDDM before, you can also start the session through it. 15 | 16 | ``` 17 | Hyprland 18 | ``` 19 | 20 | 3. **Upon initial launch:** A top bar will display with a warning and commands to launch Kitty and exit Hyprland. 21 | To remove the warning ⚠️: 22 | 23 | * Launch Kitty using the shortcut **`(SUPER + Q)`** 24 | * Navigate to `~/.config/hypr/hyprland.conf` and either comment out or remove the line `autogenerated = 1`. 25 | 26 | Essential default keybindings: 27 | * **`SUPER + C`:** Kill the active window 28 | * **`SUPER + M`:** Quit hyprland (but why would you want to?) 29 | 30 | To access web resources, open Kitty and execute `brave-browser` to launch the Brave browser. 31 | 32 | ## Critical System Components 🛠️ 33 | 1. **XDG Desktop Portal:** The XDG Desktop Portal is crucial for handling desktop functionalities such as file dialogs and screensharing. 34 | 35 | ``` 36 | pacman -S xdg-desktop-portal-hyprland 37 | ``` 38 | 39 | 2. **Install Polkit:** Polkit manages system-wide privileges. Install the KDE version for compatibility: 40 | 41 | ``` 42 | pacman -S polkit-kde-agent 43 | ``` 44 | 45 | * To autostart Polkit, append the following to your `hyprland.conf`: 46 | 47 | ``` 48 | exec-once=/usr/lib/polkit-kde-authentication-agent-1 49 | ``` 50 | 51 | * Note: Ensure there's no whitespace between `=` and `/`. 52 | 53 | 3. **QT Wayland Support:** Install the necessary libraries for QT applications to function correctly under Wayland: 54 | 55 | ``` 56 | pacman -S qt5-wayland qt6-wayland 57 | ``` 58 | 59 | 4. **Notification Daemon:** A notification daemon is essential for managing system notifications. Many apps may freeze without one running. [Dunst](https://github.com/dunst-project/dunst) is a lightweight, customizable option: 60 | 61 | ``` 62 | pacman -S dunst 63 | ``` 64 | 65 | * To autostart dunst, append the following to your `hyprland.conf`: 66 | 67 | ``` 68 | exec-once=/usr/bin/dunst 69 | ``` 70 | 71 | ## Hyprland Session Reload 🔄 72 | After installing the critical software components and making the necessary configurations, restart your Hyprland session to ensure all new settings and software are properly initialized and integrated. 73 | 74 | **Next:** [Basic Configuration](basic_configuration.md) 👉 -------------------------------------------------------------------------------- /docs/prerequisites.md: -------------------------------------------------------------------------------- 1 | # Prerequisites 🚀 2 | This guide assumes understanding of Linux systems, particularly [Arch Linux](https://archlinux.org/). The following prerequisites are essential for the seamless installation and setup of Hyprland on your system. 3 | 4 | ## Base System 💻 5 | **Arch Linux:** A minimal Arch Linux Installation is required. It's assumed that you're well-versed with the [Arch installation process]((https://wiki.archlinux.org/title/Installation_guide)) and have a functional base system ready for Hyprland integration. 6 | 7 | ## Toolbox Essentials 🧰 8 | 1. **AUR Helper:** An [AUR helper](https://wiki.archlinux.org/title/AUR_helpers) s indispensable for efficient package management from the Arch User Repository. While the choice of helper is discretionary, I'm partial to [yay](https://aur.archlinux.org/packages/yay) for its efficiency and user-friendliness. 9 | 10 | ``` 11 | pacman -S --needed git base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si # builds with makepkg 12 | ``` 13 | 14 | 2. **Audio Stack:** Install and configure [Pipewire](https://wiki.archlinux.org/title/PipeWire) and [Wireplumber](https://wiki.archlinux.org/title/WirePlumber) for audio management. This modern audio setup will replace traditional systems like PulseAudio, providing better performance and flexibility. 15 | 16 | ``` 17 | pacman -S pipewire wireplumber 18 | ``` 19 | 20 | 3. **Nerd Fonts:** Install these Nerd Fonts for enhanced glyph support and aesthetics: 21 | * Cascadia Code 22 | * JetBrains Mono 23 | * Fira Code 24 | * Iosevka 25 | * Noto 26 | * Nerd Font Symbols 27 | 28 | ``` 29 | pacman -S ttf-cascadia-code-nerd ttf-cascadia-mono-nerd ttf-fira-code ttf-fira-mono ttf-fira-sans ttf-firacode-nerd ttf-iosevka-nerd ttf-iosevkaterm-nerd ttf-jetbrains-mono-nerd ttf-jetbrains-mono ttf-nerd-fonts-symbols ttf-nerd-fonts-symbols ttf-nerd-fonts-symbols-mono 30 | ``` 31 | 32 | 4. **Display Manager:** [SDDM](https://wiki.archlinux.org/title/SDDM) is the recommended display manager due to its high compatibility with Hyprland. However, feel free to use your preferred display manager, understanding that some configuration adjustments may be necessary. 33 | 34 | ``` 35 | pacman -S sddm 36 | systemctl enable sddm.service 37 | ``` 38 | 39 | 5. **Web Browser:** [Brave](https://brave.com/en-in/linux/) Brave will be used for accessing configuration resources and this guide. Install via: 40 | 41 | ``` 42 | yay -S brave-bin 43 | ``` 44 | 45 | 6. **Terminal Emulator:** [Kitty](https://wiki.archlinux.org/title/Kitty) is the default terminal in the Hyprland configuration. If you prefer an alternative, be prepared to modify the config accordingly. 46 | 47 | ``` 48 | pacman -S kitty 49 | ``` 50 | 51 | 7. **Text/Code Editor:** Any text editor or IDE will suffice. This guide will use Visual Studio Code and nano for ease of demonstration, but feel free to use your editor of choice (vim, emacs, etc.). 52 | 53 | ``` 54 | yay -S visual-studio-code-bin 55 | pacman -S nano 56 | ``` 57 | 58 | 8. **tar:** The [tar](https://www.baeldung.com/linux/tar-command) command is a utility for archiving and extracting files. It will be essential for managing various archives throughout the installation process. 59 | 60 | ``` 61 | pacman -S tar 62 | ``` 63 | 64 | ## Assumed Competencies 🧠 65 | * **Basic Linux Command Line Knowledge:** You'll be spending some quality time in the terminal, so make sure you're comfortable with the command line. 66 | 67 | * **Package Management:** Understanding how to install and manage packages using pacman and an AUR helper is a must. 68 | 69 | * **Configuration Editing:** Ability to edit configuration files using a text editor, including understanding basic syntax and structure. 70 | 71 | * **Troubleshooting:** Some hiccups may occur along the way, so basic troubleshooting skills will come in handy. 72 | 73 | ## Additional Recommendations 📌 74 | * **Backup Your Data:** Ensure you have backups of any important data before embarking on this journey. 75 | 76 | * **Update Your System:** Keep your system up to date before starting the installation to avoid any potential conflicts. 77 | 78 | With these prerequisites in place, you're primed to delve into the intricacies of the Simple Hyprland guide and craft a cool, tiling-based environment on your Arch Linux system. 79 | 80 | **Next:** [Core Installation](installation_Hypr.md) 👉 -------------------------------------------------------------------------------- /docs/theming.md: -------------------------------------------------------------------------------- 1 | # Theming, Look & feel 🎨✨ 2 | In this guide, we'll transform your Hyprland setup into a visually stunning environment by applying themes to various components. A well-themed desktop not only looks great but also enhances your workflow and overall user experience. 3 | 4 | ## Installing Essential Tools 🛠️ 5 | 6 | #### nwg-look 7 | [nwg-look](https://github.com/nwg-piotr/nwg-look) simplifies the process of setting GTK themes, enabling a cohesive look across different toolkits. 8 | 9 | ##### Installation 10 | 11 | ``` 12 | pacman -S nwg-look 13 | ``` 14 | 15 | #### [qt5ct](https://github.com/desktop-app/qt5ct), [qt6ct](https://github.com/trialuser02/qt6ct), [Kvantum](https://github.com/tsujan/Kvantum/tree/master/Kvantum) 16 | These tools are essential for managing and applying themes to QT5 and QT6 applications, ensuring a consistent appearance across your desktop environment. 17 | 18 | ##### Installation 19 | 20 | ``` 21 | pacman -S qt5ct qt6ct kvantum 22 | ``` 23 | 24 | ##### Adding QT Environment Variables 25 | We've already added the necessary QT environment variables during the basic configuration step. 26 | 27 | ## Installing themes and icons 🏞️ 28 | #### GTK Themes 29 | Place the themes in the system theme directory. For this guide, we'll install the [Catppuccin theme](https://github.com/catppuccin/catppuccin) taken from [hyprdots](https://github.com/prasanthrangan/hyprdots) repo, a visually appealing option. 30 | 31 | Extract the theme from the repos assets to the following location to apply it system-wide: 32 | 33 | ``` 34 | tar -xvf ~/simple-hyprland/assets/themes/Catppuccin-Mocha.tar.xz -C /usr/share/themes/ 35 | ``` 36 | 37 | #### Icon Theme 38 | Place the icon theme in the system icon directory. We'll install the [Tela icon theme](https://github.com/vinceliuice/Tela-icon-theme) also from hyprdots. 39 | 40 | Extract the theme from our assets to the following location to apply it system-wide: 41 | 42 | ``` 43 | tar -xvf ~/simple-hyprland/assets/icons/Tela-circle-dracula.tar.xz -C /usr/share/icons/ 44 | ``` 45 | 46 | #### Kvantum Theme 47 | For Arch-based systems, install the kvantum-theme-catppuccin from the AUR: 48 | 49 | ``` 50 | yay -S kvantum-theme-catppuccin-git 51 | ``` 52 | 53 | ## Setting the Themes 🖼️ 54 | 1. Use `nwg-look` to set the global GTK and icon theme, and apply the changes. 55 | 2. Open the `kvantummanager` (with sudo to apply as root theme , "sudo -E kvantummanager"), select the desired theme, and apply it. 56 | 3. Open the `qt6ct` (QT6 Settings) and set the icon theme. 57 | 4. Optionally, you can change other settings like font size, cursor theme, etc. 58 | 59 | By default all the configs we used in the previous tutorial are configured with catppuccin color theme. 60 | 61 | ## Theming applications 🖥️ 62 | At this stage, you might want to theme specific applications to achieve a uniform look across your desktop environment. 63 | 64 | #### 1. Kitty: The terminal emulator 65 | Copy the configuration files for the Catppuccin theme: 66 | 67 | 1. `kitty.conf` - Kitty configuration file 68 | 2. `theme.conf` - Theme file 69 | 70 | ``` 71 | cp -r ~/simple-hyprland/configs/kitty ~/.config/ 72 | ``` 73 | #### 2. VS Code: The Code editor 74 | Install the Catppuccin theme extension from the Visual Studio Code Marketplace. 75 | 76 | #### 3. Dunst: Notification daemon 77 | Copy the configuration file i.e. `dunstrc`. 78 | 79 | ``` 80 | cp -r ~/simple-hyprland/configs/dunst ~/.config/ 81 | ``` 82 | 83 | ## Misc 🔧 84 | Some additional enhancements to elevate the overall feel and experience. 85 | 86 | #### 1. Adding blur to the windows 87 | We can achieve a blurred effect on windows by adding window rules in our hyprland.conf. 88 | 89 | Example: To add blur to Kitty, add: 90 | 91 | ``` 92 | windowrulev2 = opacity 0.90 0.90,class:^(kitty)$ 93 | ``` 94 | 95 | **Pro Tip:** 💡 To get the class_name for a specific window, use the command `hyprctl clients` while the window is open. 96 | 97 | For more details refer [Hyprland Window Rules](https://wiki.hyprland.org/Configuring/Window-Rules/). 98 | 99 | #### 2. Adding Animation and decorations 100 | Animations and decorations can add a touch of flair to your desktop experience. 101 | 102 | Add/Edit the following to your`hyprland.conf`. 103 | 104 | ``` 105 | animations { 106 | enabled = true 107 | bezier = wind, 0.05, 0.9, 0.1, 1.05 108 | bezier = winIn, 0.1, 1.1, 0.1, 1.1 109 | bezier = winOut, 0.3, -0.3, 0, 1 110 | bezier = liner, 1, 1, 1, 1 111 | animation = windows, 1, 6, wind, slide 112 | animation = windowsIn, 1, 6, winIn, slide 113 | animation = windowsOut, 1, 5, winOut, slide 114 | animation = windowsMove, 1, 5, wind, slide 115 | animation = border, 1, 1, liner 116 | animation = borderangle, 1, 30, liner, loop 117 | animation = fade, 1, 10, default 118 | animation = workspaces, 1, 5, wind 119 | } 120 | 121 | decoration { 122 | rounding = 10 123 | 124 | # Change transparency of focused and unfocused windows 125 | active_opacity = 1.0 126 | inactive_opacity = 1.0 127 | 128 | drop_shadow = true 129 | shadow_range = 4 130 | shadow_render_power = 3 131 | col.shadow = rgba(1a1a1aee) 132 | 133 | blur { 134 | enabled = true 135 | size = 3 136 | passes = 3 137 | new_optimizations = true 138 | vibrancy = 0.1696 139 | ignore_opacity = true 140 | } 141 | } 142 | ``` 143 | With these steps, you'll have a visually stunning and cohesive desktop environment tailored to your preferences. Remember, the true beauty of a desktop lies in the eye of the beholder, so feel free to experiment and find the perfect combination that resonates with your personal style. Immerse yourself in an aesthetic experience that not only delights the senses but also enhances your productivity and workflow. 🌟🖥️✨ 144 | 145 | **Next:** [Final](final.md) 👉 146 | -------------------------------------------------------------------------------- /docs/useful_utilities.md: -------------------------------------------------------------------------------- 1 | # Enhancing Your Hyprland Environment 🚀 2 | 3 | This section guides you through the installation and configuration of essential utilities that will elevate your Hyprland experience, augmenting both functionality and aesthetics. We'll cover status bars, application launchers, clipboard managers, and more, providing concise configuration snippets directly from my setup. 4 | 5 | **Pro Tip:** 💡 In your `hyprland.conf`, organize similar configurations together, such as variables, exec-once statements, and keybindings, for better readability and maintainability. 6 | 7 | 8 | ## Status Bar: Waybar 📊 9 | [Waybar](https://github.com/Alexays/Waybar) provides real-time system information at a glance, ensuring you stay informed about your system's status. 10 | 11 | waybar 12 | 13 | ##### Installation 14 | 15 | ``` 16 | pacman -S waybar 17 | ``` 18 | 19 | ##### Configuration 20 | Customize the appearance and behavior of the status bar by modifying the following files: 21 | 1. `~/.config/waybar/config.jsonc` - Format and structure the bar. 22 | 2. `~/.config/waybar/style.css` - Style and theme the bar. 23 | 24 | It will use some default configuration, you can copy my configuration files: 25 | 26 | ``` 27 | cp -r ~/simple-hyprland/configs/waybar ~/.config/ 28 | ``` 29 | 30 | **Note:** 📝 Note: Remember to reload the bar to apply any configuration changes. 31 | 32 | ##### Hypr 33 | Add the following keybinding to reload the bar: 34 | 35 | ``` 36 | bind = Ctrl, Escape, exec, killall waybar || waybar 37 | ``` 38 | 39 | Autostart the bar with: 40 | 41 | ``` 42 | exec-once=waybar 43 | ``` 44 | 45 | ## App Launcher: Tofi 🚀 46 | [Tofi](https://github.com/philj56/tofi) offers a minimalistic, Wayland-native application launcher for efficient application access. 47 | 48 | tofi-applauncher 49 | 50 | ##### Installation 51 | 52 | ``` 53 | yay -S tofi 54 | ``` 55 | 56 | ##### Configuration 57 | Customize the appearance and behavior of the launcher by modifying the configuration file: 58 | 59 | `~/.config/tofi/` - The configuration directory. 60 | 61 | You can copy my pre-configured files: 62 | 63 | ``` 64 | cp -r ~/simple-hyprland/configs/tofi ~/.config/ 65 | ``` 66 | 67 | ##### Hypr 68 | Keybinding to launch the application menu: 69 | 70 | ``` 71 | bind = $mainMod, A, exec, $menu 72 | ``` 73 | 74 | Define the launcher command and configuration path: 75 | 76 | ``` 77 | $menu = tofi-drun -c ~/.config/tofi/configA --drun-launch=true 78 | ``` 79 | 80 | ## Clipboard Manager: Cliphist 📋 81 | [Cliphist](https://github.com/sentriz/cliphist) enables you to keep track of your clipboard history, enhancing productivity when working with multiple pieces of information. 82 | 83 | tofi-clipboard 84 | 85 | ##### Installation 86 | To install cliphist, use the following command: 87 | 88 | ``` 89 | pacman -S cliphist 90 | ``` 91 | 92 | ##### Configuration 93 | No specific configuration is needed. 94 | 95 | ##### Hypr 96 | Keybinding to access the clipboard history: 97 | 98 | ``` 99 | bind = SUPER, V, exec, cliphist list | tofi -c ~/.config/tofi/configV | cliphist decode | wl-copy 100 | ``` 101 | 102 | Autostart the clipboard manager: 103 | 104 | ``` 105 | exec-once = wl-paste --type text --watch cliphist store 106 | exec-once = wl-paste --type image --watch cliphist store 107 | ``` 108 | 109 | ## Wallpaper: Swww 🖼️ 110 | [Swww](https://github.com/LGFae/swww) allows you to set and manage your desktop background, enhancing the visual appeal of your workspace. 111 | 112 | ##### Installation 113 | To install `swww`, use the following command: 114 | 115 | ``` 116 | yay -S swww 117 | ``` 118 | 119 | ##### Configuration 120 | Copy sample wallpapers (creates the assets folder inside .config): 121 | 122 | ``` 123 | cp -r ~/simple-hyprland/assets/backgrounds ~/.config/assets/backgrounds/ 124 | ``` 125 | 126 | No specific configuration is needed. 127 | 128 | ##### Hypr 129 | Initialize the wallpaper daemon and set a wallpaper on startup: 130 | 131 | ``` 132 | exec-once = swww-daemon 133 | exec-once = swww img ~/.config/assets/backgrounds/cat_leaves.png --transition-fps 255 --transition-type outer --transition-duration 0.8 134 | ``` 135 | 136 | You can also set the keybinding to change the wallpaper : 137 | 138 | ``` 139 | bind = SUPER, N, exec, swww img ~/.config/assets/backgrounds/dark-cat-rosewater.png --transition-fps 255 --transition-type outer --transition-duration 0.8 # Change wallpaper 140 | ``` 141 | 142 | ## Color Picker: Hyprpicker 🎨 143 | [Hyprpicker](https://github.com/hyprwm/hyprpicker) allows you to select colors directly from your screen, a handy tool for design and development tasks. 144 | 145 | hyprpicker 146 | 147 | ##### Installation 148 | 149 | ``` 150 | yay -S hyprpicker 151 | ``` 152 | 153 | ##### Configuration 154 | No specific configuration is needed for hyprpicker. 155 | 156 | ##### Hypr 157 | Define a variable for the color picker and a keybinding to launch it: 158 | 159 | ``` 160 | $colorPicker = hyprpicker 161 | bind = SUPER, P, exec, $colorPicker | wl-copy # Also copies to clipboard 162 | ``` 163 | 164 | ## Screen Locker: Hyprlock 🔒 165 | A screen locker secures your computer when you are away, preventing unauthorized access. 166 | 167 | ##### Installation 168 | Install [hyprlock](https://github.com/hyprwm/hyprlock), which is designed to work well with Hyprland. 169 | 170 | ``` 171 | yay -S hyprlock 172 | ``` 173 | ##### Configuration 174 | Customize the screen locker by modifying the configuration file: `~/.config/hypr/hyprlock.conf` 175 | 176 | You can copy my configuration file: 177 | 178 | ``` 179 | cp ~/simple-hyprland/configs/hypr/hyprlock.conf ~/.config/hypr/ 180 | ``` 181 | 182 | ##### Hypr 183 | Keybinding to lock the desktop: 184 | 185 | ``` 186 | bind = SUPER, L, exec, hyprlock 187 | ``` 188 | 189 | ## Idle Manager: Hypridle ⏳ 190 | [Hypridle](https://github.com/hyprwm/hypridle) automatically locks your screen or takes other actions when your system is idle, enhancing security and power management. 191 | 192 | ##### Installation 193 | To install hypridle, use the following command: 194 | 195 | ``` 196 | yay -S hypridle 197 | ``` 198 | 199 | ##### Configuration 200 | Customize the idle manager behavior by modifying the configuration file: `~/.config/hypr/hypridle.conf` 201 | 202 | You can copy my configuration file: 203 | 204 | ``` 205 | cp ~/simple-hyprland/configs/hypr/hypridle.conf ~/.config/hypr/ 206 | ``` 207 | 208 | ##### Hypr 209 | No specific keybindings or variables are needed for hypridle. 210 | 211 | 212 | Autostart the idle manager: 213 | ``` 214 | exec-once = hypridle 215 | ``` 216 | 217 | 218 | ## Logout Menu: Wlogout 🚪 219 | [Wlogout](https://github.com/ArtsyMacaw/wlogout) provides a convenient way to log out, restart, or shut down your system. 220 | 221 | wlogout 222 | 223 | ##### Installation 224 | 225 | ``` 226 | yay -S wlogout 227 | ``` 228 | 229 | ##### Configuration 230 | Customize the appearance and behavior of the logout menu by modifying the following files: 231 | 1. `~/.config/wlogout/layout` - Format and structure the menu. 232 | 2. `~/.config/wlogout/style.css` - Style and theme the menu. 233 | 234 | It will use some default configuration, You can copy my pre-configured files: 235 | 236 | ``` 237 | cp -r ~/simple-hyprland/configs/wlogout ~/.config/ 238 | cp -r ~/simple-hyprland/assets/wlogout ~/.config/assets/ # copying assets 239 | ``` 240 | 241 | ##### Hypr 242 | Keybinding to launch the logout menu: 243 | 244 | ``` 245 | bind = SUPER, ESCAPE, exec, wlogout 246 | ``` 247 | 248 | ## Taking Screenshots: Grimblast 📸 249 | [Grimblast](https://github.com/hyprwm/contrib/blob/main/grimblast/grimblast.1.scd) is a script that wraps around grim and slurp, providing enhanced functionality for capturing screenshots. 250 | 251 | grimblast 252 | 253 | ##### Installation 254 | 255 | ``` 256 | yay -S grimblast 257 | ``` 258 | 259 | ##### Configuration 260 | No specific configuration is needed for grimblast. 261 | 262 | ##### Hypr 263 | Keybindings for capturing screenshots: 264 | 265 | ``` 266 | # add --cursor flag to include cursor also, --freeze flag to freeze before selection 267 | 268 | # Entire screen + clipboard copy 269 | bind = , Print, exec, grimblast --notify copysave screen 270 | 271 | # current Active window only + clipboard copy 272 | bind = SUPER, Print, exec, grimblast --notify copysave active 273 | 274 | # Select area to take screenshot 275 | bind = SUPER ALT, Print, exec, grimblast --notify copysave area 276 | ``` 277 | 278 | With these utilities configured, your Hyprland environment now boasts enhanced functionality, aesthetics, and user experience, tailored to your preferences and workflow. 🎉✨ 279 | 280 | **Next:** [Theming](theming.md) 👉 281 | -------------------------------------------------------------------------------- /scripts/installer/final.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get the directory of the current script 4 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | # Source helper file 7 | source $SCRIPT_DIR/helper.sh 8 | 9 | log_message "Final setup script started" 10 | print_bold_blue "\nCongratulations! Your Simple Hyprland setup is complete!" 11 | 12 | print_bold_blue "\nRepository Information:" 13 | echo " - GitHub Repository: https://github.com/gaurav23b/simple-hyprland" 14 | echo " - If you found this repo helpful, please consider giving it a star on GitHub!" 15 | 16 | print_bold_blue "\nContribute:" 17 | echo " - Feel free to open issues, submit pull requests, or provide feedback." 18 | echo " - Every contribution, big or small, is valuable to the community." 19 | 20 | print_bold_blue "\nTroubleshooting:" 21 | echo " - If you encounter any issues, please check the GitHub issues section." 22 | echo " - Don't hesitate to open a new issue if you can't find a solution to your problem." 23 | 24 | print_success "\nEnjoy your new Hyprland environment!" 25 | 26 | echo "------------------------------------------------------------------------" 27 | -------------------------------------------------------------------------------- /scripts/installer/helper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Color codes 4 | RED='\033[0;31m' 5 | GREEN='\033[0;32m' 6 | YELLOW='\033[0;33m' 7 | BLUE='\033[0;34m' 8 | BOLD='\033[1m' 9 | NC='\033[0m' # No Color 10 | 11 | # Get the directory of the current script 12 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 13 | 14 | # Log file 15 | LOG_FILE="$SCRIPT_DIR/simple_hyprland_install.log" 16 | 17 | function trap_message { 18 | print_error "\n\nScript interrupted. Exiting.....\n" 19 | # Add any cleanup code here 20 | log_message "Script interrupted and exited" 21 | exit 1 22 | } 23 | 24 | # Function to log messages 25 | function log_message { 26 | echo "$(date): $1" >> "$LOG_FILE" 27 | } 28 | 29 | # Functions for colored/bold output 30 | function print_error { 31 | echo -e "${RED}$1${NC}" 32 | } 33 | 34 | function print_success { 35 | echo -e "${GREEN}$1${NC}" 36 | } 37 | 38 | function print_warning { 39 | echo -e "${YELLOW}$1${NC}" 40 | } 41 | 42 | function print_info { 43 | echo -e "${BLUE}$1${NC}" 44 | } 45 | 46 | function print_bold_blue { 47 | echo -e "${BLUE}${BOLD}$1${NC}" 48 | } 49 | 50 | # Function to ask for confirmation 51 | function ask_confirmation { 52 | while true; do 53 | read -p "$(print_warning "$1 (y/n): ")" -n 1 -r 54 | echo 55 | if [[ $REPLY =~ ^[Yy]$ ]]; then 56 | log_message "Operation accepted by user." 57 | return 0 # User confirmed 58 | elif [[ $REPLY =~ ^[Nn]$ ]]; then 59 | log_message "Operation cancelled by user." 60 | print_error "Operation cancelled." 61 | return 1 # User cancelled 62 | else 63 | print_error "Invalid input. Please answer y or n." 64 | fi 65 | done 66 | } 67 | 68 | # Function to run a command with optional confirmation and retry 69 | function run_command { 70 | local cmd="$1" 71 | local description="$2" 72 | local ask_confirm="${3:-yes}" # Default to asking for confirmation 73 | local use_sudo="${4:-yes}" # Default to using sudo 74 | 75 | local full_cmd="" 76 | if [[ "$use_sudo" == "no" ]]; then 77 | full_cmd="sudo -u $SUDO_USER $cmd" 78 | else 79 | full_cmd="$cmd" 80 | fi 81 | 82 | log_message "Attempting to run: $description" 83 | print_info "\nCommand: $full_cmd" 84 | if [[ "$ask_confirm" == "yes" ]]; then 85 | if ! ask_confirmation "$description"; then 86 | # print_info "$description was skipped." 87 | log_message "$description was skipped by user choice." 88 | return 1 89 | fi 90 | else 91 | print_info "\n$description" # Echo what it's doing without confirmation 92 | fi 93 | 94 | while ! eval "$full_cmd"; do 95 | print_error "Command failed." 96 | log_message "Command failed: $cmd" 97 | if [[ "$ask_confirm" == "yes" ]]; then 98 | if ! ask_confirmation "Retry $description?"; then 99 | print_warning "$description was not completed." 100 | log_message "$description was not completed due to failure and user chose not to retry." 101 | return 1 102 | fi 103 | else 104 | print_warning "$description failed and will not be retried." 105 | log_message "$description failed and was not retried (auto mode)." 106 | return 1 107 | fi 108 | done 109 | 110 | print_success "$description completed successfully." 111 | log_message "$description completed successfully." 112 | return 0 113 | } 114 | 115 | # Function to run a script with retry and confirmation 116 | function run_script { 117 | local script="$SCRIPT_DIR/$1" 118 | local description="$2" 119 | if ask_confirmation "\nExecute '$description' script"; then 120 | while ! bash "$script"; do 121 | print_error "$description script failed." 122 | if ! ask_confirmation "Retry $description"; then 123 | return 1 # User chose not to retry 124 | fi 125 | done 126 | print_success "\n$description completed successfully." 127 | else 128 | return 1 # User chose not to run the script 129 | fi 130 | } 131 | 132 | function check_root { 133 | if [ "$EUID" -ne 0 ]; then 134 | print_error "Please run as root" 135 | log_message "Script not run as root. Exiting." 136 | exit 1 137 | fi 138 | 139 | # Store the original user for later use 140 | SUDO_USER=$(logname) 141 | log_message "Original user is $SUDO_USER" 142 | } 143 | 144 | function check_os { 145 | if [ -f /etc/os-release ]; then 146 | . /etc/os-release 147 | if [[ "$ID" != "arch" ]]; then 148 | print_warning "This script is designed for Arch Linux. Your system: $PRETTY_NAME" 149 | if ! ask_confirmation "Continue anyway?"; then 150 | log_message "Installation cancelled due to unsupported OS" 151 | exit 1 152 | fi 153 | else 154 | print_success "Arch Linux detected. Proceeding with installation." 155 | log_message "Arch Linux detected. Installation proceeding." 156 | fi 157 | else 158 | print_error "Unable to determine OS. /etc/os-release not found." 159 | if ! ask_confirmation "Continue anyway?"; then 160 | log_message "Installation cancelled due to unknown OS" 161 | exit 1 162 | fi 163 | fi 164 | } -------------------------------------------------------------------------------- /scripts/installer/hypr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get the directory of the current script 4 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | # Source helper file 7 | source $SCRIPT_DIR/helper.sh 8 | 9 | log_message "Installation started for hypr section" 10 | print_info "\nStarting hypr setup..." 11 | print_info "\nEverything is recommended to INSTALL" 12 | 13 | run_command "pacman -S --noconfirm hyprland" "Install Hyprland (Must)" "yes" 14 | run_command "mkdir -p /home/$SUDO_USER/.config/hypr/ && cp -r /home/$SUDO_USER/simple-hyprland/configs/hypr/hyprland.conf /home/$SUDO_USER/.config/hypr/" "Copy hyprland config (Must)" "yes" "no" 15 | 16 | run_command "pacman -S --noconfirm xdg-desktop-portal-hyprland" "Install XDG desktop portal for Hyprland" "yes" 17 | 18 | run_command "pacman -S --noconfirm polkit-kde-agent" "Install KDE Polkit agent for authentication dialogs" "yes" 19 | 20 | run_command "pacman -S --noconfirm dunst" "Install Dunst notification daemon" "yes" 21 | run_command "cp -r /home/$SUDO_USER/simple-hyprland/configs/dunst /home/$SUDO_USER/.config/" "Copy dunst config" "yes" "no" 22 | 23 | run_command "pacman -S --noconfirm qt5-wayland qt6-wayland" "Install QT support on wayland" "yes" 24 | 25 | echo "------------------------------------------------------------------------" -------------------------------------------------------------------------------- /scripts/installer/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get the directory of the current script 4 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | # Source helper file 7 | source $SCRIPT_DIR/helper.sh 8 | 9 | # Trap for unexpected exits 10 | trap 'trap_message' INT TERM 11 | 12 | # Script start 13 | log_message "Installation started" 14 | print_bold_blue "\nSimple Hyprland" 15 | echo "---------------" 16 | 17 | # Check if running as root 18 | check_root 19 | 20 | # Check if OS is Arch Linux 21 | check_os 22 | 23 | # Run child scripts 24 | run_script "prerequisites.sh" "Prerequisites Setup" 25 | run_script "hypr.sh" "Hyprland & Critical Softwares Setup" 26 | run_script "utilities.sh" "Basic Utilities & Configs Setup" 27 | run_script "theming.sh" "Themes and Tools Setup" 28 | run_script "final.sh" "Final Setup" 29 | 30 | print_bold_blue "\n🌟 Setup Complete\n" 31 | log_message "Installation completed successfully" 32 | -------------------------------------------------------------------------------- /scripts/installer/prerequisites.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get the directory of the current script 4 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | # Source helper file 7 | source $SCRIPT_DIR/helper.sh 8 | 9 | log_message "Installation started for prerequisites section" 10 | print_info "\nStarting prerequisites setup..." 11 | 12 | run_command "pacman -Syyu --noconfirm" "Update package database and upgrade packages (Recommended)" "yes" # no 13 | 14 | if run_command "pacman -S --noconfirm --needed git base-devel" "Install YAY (Must)/Breaks the script" "yes"; then # 15 | run_command "git clone https://aur.archlinux.org/yay.git && cd yay" "Clone YAY (Must)/Breaks the script" "no" "no" 16 | run_command "makepkg --noconfirm -si && cd .. # builds with makepkg" "Build YAY (Must)/Breaks the script" "no" "no" 17 | fi 18 | run_command "pacman -S --noconfirm pipewire wireplumber pamixer brightnessctl" "Configuring audio and brightness (Recommended)" "yes" 19 | 20 | run_command "pacman -S --noconfirm ttf-cascadia-code-nerd ttf-cascadia-mono-nerd ttf-fira-code ttf-fira-mono ttf-fira-sans ttf-firacode-nerd ttf-iosevka-nerd ttf-iosevkaterm-nerd ttf-jetbrains-mono-nerd ttf-jetbrains-mono ttf-nerd-fonts-symbols ttf-nerd-fonts-symbols ttf-nerd-fonts-symbols-mono" "Installing Nerd Fonts and Symbols (Recommended)" "yes" 21 | 22 | run_command "pacman -S --noconfirm sddm && systemctl enable sddm.service" "Install and enable SDDM (Recommended)" "yes" 23 | 24 | run_command "yay -S --sudoloop --noconfirm brave-bin" "Install Brave Browser" "yes" "no" 25 | 26 | run_command "pacman -S --noconfirm kitty" "Install Kitty (Recommended)" "yes" 27 | 28 | run_command "pacman -S --noconfirm nano" "Install nano" "yes" 29 | 30 | run_command "pacman -S --noconfirm tar" "Install tar for extracting files (Must)/needed for copying themes" "yes" 31 | 32 | echo "------------------------------------------------------------------------" -------------------------------------------------------------------------------- /scripts/installer/theming.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get the directory of the current script 4 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | # Source helper file 7 | source $SCRIPT_DIR/helper.sh 8 | 9 | log_message "Installation started for theming section" 10 | print_info "\nStarting theming setup..." 11 | 12 | run_command "pacman -S --noconfirm nwg-look" "Install nwg-look for GTK theme management" "yes" 13 | 14 | run_command "pacman -S --noconfirm qt5ct qt6ct kvantum" "Install Qt5, Qt6 Settings, and Kvantum theme engines" "yes" 15 | 16 | run_command "tar -xvf /home/$SUDO_USER/simple-hyprland/assets/themes/Catppuccin-Mocha.tar.xz -C /usr/share/themes/" "Install Catppuccin Mocha GTK theme" "yes" 17 | 18 | run_command "tar -xvf /home/$SUDO_USER/simple-hyprland/assets/icons/Tela-circle-dracula.tar.xz -C /usr/share/icons/" "Install Tela Circle Dracula icon theme" "yes" 19 | 20 | run_command "yay -S --sudoloop --noconfirm kvantum-theme-catppuccin-git" "Install Catppuccin theme for Kvantum" "yes" "no" 21 | 22 | run_command "cp -r /home/$SUDO_USER/simple-hyprland/configs/kitty /home/$SUDO_USER/.config/" "Copy Catppuccin theme configuration for Kitty terminal" "yes" "no" 23 | 24 | # Add instructions to configure theming 25 | print_info "\nPost-installation instructions:" 26 | print_bold_blue "Set themes and icons:" 27 | echo " - Run 'nwg-look' and set the global GTK and icon theme" 28 | echo " - Open 'kvantummanager' (run with sudo for system-wide changes) to select and apply the Catppuccin theme" 29 | echo " - Open 'qt6ct' to set the icon theme" 30 | 31 | echo "------------------------------------------------------------------------" -------------------------------------------------------------------------------- /scripts/installer/utilities.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get the directory of the current script 4 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | # Source helper file 7 | source $SCRIPT_DIR/helper.sh 8 | 9 | log_message "Installation started for utilities section" 10 | print_info "\nStarting utilities setup..." 11 | 12 | run_command "pacman -S --noconfirm waybar" "Install Waybar - Status Bar" "yes" 13 | run_command "cp -r /home/$SUDO_USER/simple-hyprland/configs/waybar /home/$SUDO_USER/.config/" "Copy Waybar config" "yes" "no" 14 | 15 | run_command "yay -S --sudoloop --noconfirm tofi" "Install Tofi - Application Launcher" "yes" "no" 16 | run_command "cp -r /home/$SUDO_USER/simple-hyprland/configs/tofi /home/$SUDO_USER/.config/" "Copy Tofi config(s)" "yes" "no" 17 | 18 | run_command "pacman -S --noconfirm cliphist" "Install Cliphist - Clipboard Manager" "yes" 19 | 20 | run_command "yay -S --sudoloop --noconfirm swww" "Install SWWW for wallpaper management" "yes" "no" 21 | run_command "mkdir -p /home/$SUDO_USER/.config/assets/backgrounds && cp -r /home/$SUDO_USER/simple-hyprland/assets/backgrounds /home/$SUDO_USER/.config/assets/" "Copy sample wallpapers to assets directory (Recommended)" "yes" "no" 22 | 23 | run_command "yay -S --sudoloop --noconfirm hyprpicker" "Install Hyprpicker - Color Picker" "yes" "no" 24 | 25 | run_command "yay -S --sudoloop --noconfirm hyprlock" "Install Hyprlock - Screen Locker (Must)" "yes" "no" 26 | run_command "cp -r /home/$SUDO_USER/simple-hyprland/configs/hypr/hyprlock.conf /home/$SUDO_USER/.config/hypr/" "Copy Hyprlock config" "yes" "no" 27 | 28 | run_command "yay -S --sudoloop --noconfirm wlogout" "Install Wlogout - Session Manager" "yes" "no" 29 | run_command "cp -r /home/$SUDO_USER/simple-hyprland/configs/wlogout /home/$SUDO_USER/.config/ && cp -r /home/$SUDO_USER/simple-hyprland/assets/wlogout /home/$SUDO_USER/.config/assets/" "Copy Wlogout config and assets" "yes" "no" 30 | 31 | run_command "yay -S --sudoloop --noconfirm grimblast" "Install Grimblast - Screenshot tool" "yes" "no" 32 | 33 | run_command "yay -S --sudoloop --noconfirm hypridle" "Install Hypridle for idle management (Must)" "yes" "no" 34 | run_command "cp -r /home/$SUDO_USER/simple-hyprland/configs/hypr/hypridle.conf /home/$SUDO_USER/.config/hypr/" "Copy Hypridle config" "yes" "no" 35 | 36 | echo "------------------------------------------------------------------------" --------------------------------------------------------------------------------