commit 5ff4bc24b259dc90a7510b2ba331d87000e5e914 Author: Sayuop Date: Fri Nov 21 20:20:43 2025 +0100 Initial commit - created with claude AI diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..6a8f9fa --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,81 @@ +# ╔═══════════════════════════════════════════════════════════════════╗ +# ║ HYPRARCH - Dunst Config ║ +# ║ Nord Color Scheme ║ +# ╚═══════════════════════════════════════════════════════════════════╝ + +[global] + monitor = 0 + follow = mouse + width = 300 + height = 300 + origin = top-right + offset = 10x50 + scale = 0 + notification_limit = 5 + + progress_bar = true + progress_bar_height = 10 + progress_bar_frame_width = 1 + progress_bar_min_width = 150 + progress_bar_max_width = 300 + + indicate_hidden = yes + transparency = 0 + separator_height = 2 + padding = 12 + horizontal_padding = 12 + text_icon_padding = 0 + frame_width = 2 + frame_color = "#88c0d0" + separator_color = frame + sort = yes + + font = JetBrainsMono Nerd Font 10 + line_height = 0 + markup = full + format = "%s\n%b" + alignment = left + vertical_alignment = center + show_age_threshold = 60 + ellipsize = middle + ignore_newline = no + stack_duplicates = true + hide_duplicate_count = false + show_indicators = yes + + icon_position = left + min_icon_size = 0 + max_icon_size = 32 + + sticky_history = yes + history_length = 20 + + browser = /usr/bin/xdg-open + always_run_script = true + title = Dunst + class = Dunst + + corner_radius = 8 + ignore_dbusclose = false + + mouse_left_click = close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all + +[urgency_low] + background = "#2e3440" + foreground = "#d8dee9" + frame_color = "#4c566a" + timeout = 5 + +[urgency_normal] + background = "#2e3440" + foreground = "#eceff4" + frame_color = "#88c0d0" + timeout = 10 + +[urgency_critical] + background = "#2e3440" + foreground = "#eceff4" + frame_color = "#bf616a" + timeout = 0 diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..d5e6661 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,178 @@ +# ╔═══════════════════════════════════════════════════════════════════╗ +# ║ HYPRARCH - Hyprland Config ║ +# ║ https://git.cribdev.com/hyprarch ║ +# ╚═══════════════════════════════════════════════════════════════════╝ + +# ── Monitor ────────────────────────────────────────────────────────── +monitor = ,preferred,auto,1 + +# ── Startup ────────────────────────────────────────────────────────── +exec-once = waybar +exec-once = swww-daemon +exec-once = nm-applet --indicator +exec-once = blueman-applet +exec-once = dunst + +# Set wallpaper after swww starts +exec-once = sleep 1 && swww img ~/Pictures/wallpapers/default.jpg --transition-type grow + +# ── Environment Variables ──────────────────────────────────────────── +env = XCURSOR_SIZE,24 +env = QT_QPA_PLATFORMTHEME,qt5ct +env = QT_QPA_PLATFORM,wayland +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland + +# ── Input ──────────────────────────────────────────────────────────── +input { + kb_layout = us + follow_mouse = 1 + sensitivity = 0 + + touchpad { + natural_scroll = true + } +} + +# ── General ────────────────────────────────────────────────────────── +general { + gaps_in = 5 + gaps_out = 10 + border_size = 2 + col.active_border = rgba(88c0d0ee) rgba(81a1c1ee) 45deg + col.inactive_border = rgba(4c566aaa) + layout = dwindle +} + +# ── Decoration ─────────────────────────────────────────────────────── +decoration { + rounding = 8 + + blur { + enabled = true + size = 6 + passes = 2 + new_optimizations = true + } + + shadow { + enabled = true + range = 20 + render_power = 3 + color = rgba(1a1a1aee) + } +} + +# ── Animations ─────────────────────────────────────────────────────── +animations { + enabled = true + + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.1 + bezier = winOut, 0.3, -0.3, 0, 1 + bezier = liner, 1, 1, 1, 1 + + animation = windows, 1, 6, wind, slide + animation = windowsIn, 1, 6, winIn, slide + animation = windowsOut, 1, 5, winOut, slide + animation = windowsMove, 1, 5, wind, slide + animation = border, 1, 1, liner + animation = borderangle, 1, 30, liner, loop + animation = fade, 1, 10, default + animation = workspaces, 1, 5, wind +} + +# ── Layouts ────────────────────────────────────────────────────────── +dwindle { + pseudotile = true + preserve_split = true +} + +master { + new_status = master +} + +# ── Gestures ───────────────────────────────────────────────────────── +gestures { + workspace_swipe = true +} + +# ── Misc ───────────────────────────────────────────────────────────── +misc { + force_default_wallpaper = 0 + disable_hyprland_logo = true + disable_splash_rendering = true +} + +# ── Window Rules ───────────────────────────────────────────────────── +windowrulev2 = suppressevent maximize, class:.* +windowrulev2 = float, class:^(pavucontrol)$ +windowrulev2 = float, class:^(blueman-manager)$ +windowrulev2 = float, class:^(nm-connection-editor)$ +windowrulev2 = float, title:^(Picture-in-Picture)$ + +# ── Keybindings ────────────────────────────────────────────────────── +$mainMod = SUPER + +# Applications +bind = $mainMod, Return, exec, kitty +bind = $mainMod, Q, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, thunar +bind = $mainMod, V, togglefloating, +bind = $mainMod, D, exec, rofi -show drun +bind = $mainMod, P, pseudo, +bind = $mainMod, J, togglesplit, +bind = $mainMod, F, fullscreen, +bind = $mainMod, L, exec, hyprlock + +# Screenshots +bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" - | wl-copy +bind = , Print, exec, grim -g "$(slurp)" ~/Pictures/screenshots/$(date +%Y%m%d_%H%M%S).png + +# Move focus +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to workspace +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Scroll through workspaces +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mouse +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Volume and brightness +bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = , XF86MonBrightnessUp, exec, brightnessctl s 10%+ +bindel = , XF86MonBrightnessDown, exec, brightnessctl s 10%- diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..fdd66f5 --- /dev/null +++ b/.config/hypr/hyprlock.conf @@ -0,0 +1,52 @@ +# ╔═══════════════════════════════════════════════════════════════════╗ +# ║ HYPRARCH - Hyprlock Config ║ +# ╚═══════════════════════════════════════════════════════════════════╝ + +background { + monitor = + path = ~/Pictures/wallpapers/default.jpg + blur_passes = 2 + blur_size = 6 + contrast = 0.8 + brightness = 0.7 +} + +input-field { + monitor = + size = 250, 50 + outline_thickness = 2 + dots_size = 0.2 + dots_spacing = 0.35 + dots_center = true + outer_color = rgba(88c0d0ee) + inner_color = rgba(2e3440ee) + font_color = rgb(eceff4) + fade_on_empty = false + placeholder_text = Password... + hide_input = false + position = 0, -120 + halign = center + valign = center +} + +label { + monitor = + text = $TIME + color = rgba(eceff4ee) + font_size = 64 + font_family = JetBrainsMono Nerd Font + position = 0, 80 + halign = center + valign = center +} + +label { + monitor = + text = Hi, $USER + color = rgba(88c0d0ee) + font_size = 20 + font_family = JetBrainsMono Nerd Font + position = 0, -20 + halign = center + valign = center +} diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf new file mode 100644 index 0000000..51e60b0 --- /dev/null +++ b/.config/kitty/kitty.conf @@ -0,0 +1,70 @@ +# ╔═══════════════════════════════════════════════════════════════════╗ +# ║ HYPRARCH - Kitty Config ║ +# ║ Nord Color Scheme ║ +# ╚═══════════════════════════════════════════════════════════════════╝ + +# ── Font ───────────────────────────────────────────────────────────── +font_family JetBrainsMono Nerd Font +bold_font auto +italic_font auto +bold_italic_font auto +font_size 12.0 + +# ── Window ─────────────────────────────────────────────────────────── +background_opacity 0.95 +window_padding_width 8 +confirm_os_window_close 0 +enable_audio_bell no + +# ── Tab Bar ────────────────────────────────────────────────────────── +tab_bar_style powerline +tab_powerline_style slanted +active_tab_foreground #2e3440 +active_tab_background #88c0d0 +inactive_tab_foreground #d8dee9 +inactive_tab_background #3b4252 + +# ── Nord Color Scheme ──────────────────────────────────────────────── +# Background +background #2e3440 +foreground #d8dee9 + +# Cursor +cursor #d8dee9 +cursor_text_color #2e3440 + +# Selection +selection_background #4c566a +selection_foreground #eceff4 + +# Black +color0 #3b4252 +color8 #4c566a + +# Red +color1 #bf616a +color9 #bf616a + +# Green +color2 #a3be8c +color10 #a3be8c + +# Yellow +color3 #ebcb8b +color11 #ebcb8b + +# Blue +color4 #81a1c1 +color12 #81a1c1 + +# Magenta +color5 #b48ead +color13 #b48ead + +# Cyan +color6 #88c0d0 +color14 #8fbcbb + +# White +color7 #e5e9f0 +color15 #eceff4 diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi new file mode 100644 index 0000000..04f2c3a --- /dev/null +++ b/.config/rofi/config.rasi @@ -0,0 +1,16 @@ +/* ╔═══════════════════════════════════════════════════════════════════╗ + ║ HYPRARCH - Rofi Config ║ + ║ Nord Color Scheme ║ + ╚═══════════════════════════════════════════════════════════════════╝ */ + +configuration { + modi: "drun,run"; + show-icons: true; + drun-display-format: "{name}"; + disable-history: false; + sidebar-mode: false; + display-drun: "Apps"; + display-run: "Run"; +} + +@theme "nord" diff --git a/.config/rofi/nord.rasi b/.config/rofi/nord.rasi new file mode 100644 index 0000000..0f44373 --- /dev/null +++ b/.config/rofi/nord.rasi @@ -0,0 +1,80 @@ +/* ╔═══════════════════════════════════════════════════════════════════╗ + ║ HYPRARCH - Rofi Nord Theme ║ + ╚═══════════════════════════════════════════════════════════════════╝ */ + +* { + bg: #2e3440; + bg-alt: #3b4252; + fg: #eceff4; + fg-alt: #d8dee9; + accent: #88c0d0; + urgent: #bf616a; + + background-color: transparent; + text-color: @fg; + + margin: 0; + padding: 0; + spacing: 0; +} + +window { + location: center; + width: 600; + background-color: @bg; + border: 2px; + border-color: @accent; + border-radius: 12px; +} + +mainbox { + children: [inputbar, listview]; +} + +inputbar { + padding: 12px; + spacing: 12px; + children: [prompt, entry]; + background-color: @bg-alt; +} + +prompt { + text-color: @accent; +} + +entry { + placeholder: "Search..."; + placeholder-color: @fg-alt; +} + +listview { + lines: 8; + columns: 1; + padding: 8px 0; + background-color: @bg; +} + +element { + padding: 8px 12px; + spacing: 8px; + background-color: transparent; +} + +element normal.normal { + text-color: @fg; +} + +element selected.normal { + background-color: @bg-alt; + text-color: @accent; +} + +element-icon { + size: 1em; + vertical-align: 0.5; +} + +element-text { + text-color: inherit; + vertical-align: 0.5; +} diff --git a/.config/waybar/config b/.config/waybar/config new file mode 100644 index 0000000..6897b1e --- /dev/null +++ b/.config/waybar/config @@ -0,0 +1,82 @@ +{ + "layer": "top", + "position": "top", + "height": 34, + "spacing": 8, + + "modules-left": ["hyprland/workspaces", "hyprland/window"], + "modules-center": ["clock"], + "modules-right": ["pulseaudio", "network", "cpu", "memory", "battery", "tray"], + + "hyprland/workspaces": { + "format": "{icon}", + "on-click": "activate", + "format-icons": { + "1": "一", + "2": "二", + "3": "三", + "4": "四", + "5": "五", + "6": "六", + "7": "七", + "8": "八", + "9": "九", + "10": "十", + "active": "", + "default": "" + } + }, + + "hyprland/window": { + "format": "{}", + "separate-outputs": true, + "max-length": 50 + }, + + "clock": { + "format": "{:%H:%M}", + "format-alt": "{:%A, %B %d, %Y}", + "tooltip-format": "{calendar}" + }, + + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": "󰝟", + "format-icons": { + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + + "network": { + "format-wifi": " {essid}", + "format-ethernet": "󰈀", + "format-disconnected": "󰤭", + "tooltip-format": "{ifname}: {ipaddr}", + "on-click": "nm-connection-editor" + }, + + "cpu": { + "format": " {usage}%", + "tooltip": false + }, + + "memory": { + "format": " {}%" + }, + + "battery": { + "states": { + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity}%", + "format-charging": "󰂄 {capacity}%", + "format-plugged": " {capacity}%", + "format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂"] + }, + + "tray": { + "spacing": 10 + } +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..e466b6d --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,85 @@ +/* ╔═══════════════════════════════════════════════════════════════════╗ + ║ HYPRARCH - Waybar Style ║ + ║ Nord Color Scheme ║ + ╚═══════════════════════════════════════════════════════════════════╝ */ + +* { + font-family: "JetBrainsMono Nerd Font"; + font-size: 13px; + min-height: 0; + border: none; + border-radius: 0; +} + +window#waybar { + background: rgba(46, 52, 64, 0.95); + color: #eceff4; +} + +#workspaces { + margin: 0 4px; +} + +#workspaces button { + padding: 0 12px; + color: #d8dee9; + background: transparent; + border-bottom: 3px solid transparent; +} + +#workspaces button.active { + color: #88c0d0; + border-bottom: 3px solid #88c0d0; +} + +#workspaces button:hover { + background: rgba(136, 192, 208, 0.1); +} + +#window { + margin: 0 8px; + color: #d8dee9; + font-weight: normal; +} + +#clock, +#battery, +#cpu, +#memory, +#network, +#pulseaudio { + padding: 0 12px; + margin: 4px 2px; + background: rgba(59, 66, 82, 0.8); + border-radius: 8px; + color: #eceff4; +} + +#battery.charging { + color: #a3be8c; +} + +#battery.warning:not(.charging) { + color: #ebcb8b; +} + +#battery.critical:not(.charging) { + color: #bf616a; +} + +#pulseaudio.muted { + color: #bf616a; +} + +#tray { + padding: 0 8px; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #bf616a; +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..77e2b29 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# Backup files +*.bak +*~ +.config-backup-* + +# OS files +.DS_Store +Thumbs.db + +# Editor files +.vscode/ +.idea/ +*.swp +*.swo + +# Temporary files +*.tmp +*.log diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..927659e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Crib + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..58f7e95 --- /dev/null +++ b/README.md @@ -0,0 +1,233 @@ +# 🎨 HYPRARCH + +A minimal, beautiful Hyprland rice for Arch Linux with Nord color scheme. + +![Hyprland](https://img.shields.io/badge/Hyprland-blue?style=flat-square) +![Arch Linux](https://img.shields.io/badge/Arch_Linux-1793D1?style=flat-square&logo=arch-linux&logoColor=white) +![Nord Theme](https://img.shields.io/badge/Nord-88c0d0?style=flat-square) + +## ✨ Features + +- 🪟 **Hyprland** - Dynamic tiling Wayland compositor with smooth animations +- 📊 **Waybar** - Minimal status bar with Nord styling +- 🚀 **Rofi** - Beautiful app launcher +- 🖥️ **Kitty** - GPU-accelerated terminal +- 🔔 **Dunst** - Clean notification daemon +- 🖼️ **SWWW** - Animated wallpaper daemon +- 🔒 **Hyprlock** - Stylish lock screen +- 🎨 **Nord Theme** - Cohesive color scheme throughout + +## 📸 Screenshots + +*Coming soon* + +## ⚡ Quick Install + +```bash +# Clone the repository +git clone https://git.cribdev.com/hyprarch/hyprarch.git ~/hyprarch + +# Run the install script +cd ~/hyprarch +chmod +x install.sh +./install.sh + +# Log out and select Hyprland, or start from TTY: +Hyprland +``` + +That's it! The script handles everything automatically. + +## 📦 What Gets Installed + +### Core +- Hyprland, Hyprpaper, Hyprpicker, Hypridle, Hyprlock +- Waybar, Rofi, Dunst, SWWW +- XDG Desktop Portal for Hyprland + +### Utilities +- Kitty (terminal) +- Thunar (file manager) +- PipeWire (audio) +- NetworkManager, Blueman (connectivity) + +### CLI Tools +- Neovim, Zsh, Starship prompt +- eza, bat, fzf, ripgrep, fd + +### Applications +- Firefox, MPV, Zathura (PDF) + +## ⌨️ Keybindings + +| Key | Action | +|-----|--------| +| `SUPER + Return` | Terminal (Kitty) | +| `SUPER + D` | App Launcher (Rofi) | +| `SUPER + Q` | Close Window | +| `SUPER + E` | File Manager | +| `SUPER + V` | Toggle Floating | +| `SUPER + F` | Fullscreen | +| `SUPER + L` | Lock Screen | +| `SUPER + M` | Exit Hyprland | +| `SUPER + 1-9` | Switch Workspace | +| `SUPER + SHIFT + 1-9` | Move to Workspace | +| `SUPER + SHIFT + S` | Screenshot (select) | +| `Print` | Screenshot to file | + +## 📁 File Structure + +``` +hyprarch/ +├── install.sh # Main install script +├── README.md # This file +├── .config/ +│ ├── hypr/ +│ │ ├── hyprland.conf # Main Hyprland config +│ │ └── hyprlock.conf # Lock screen config +│ ├── waybar/ +│ │ ├── config # Waybar modules +│ │ └── style.css # Nord themed styling +│ ├── rofi/ +│ │ ├── config.rasi # Rofi config +│ │ └── nord.rasi # Nord theme +│ ├── kitty/ +│ │ └── kitty.conf # Terminal config +│ └── dunst/ +│ └── dunstrc # Notification config +└── wallpapers/ # Wallpaper collection +``` + +## 🎨 Color Scheme (Nord) + +| Color | Hex | Usage | +|-------|-----|-------| +| Polar Night | `#2e3440` | Background | +| Snow Storm | `#eceff4` | Foreground | +| Frost | `#88c0d0` | Accent/Active | +| Aurora Red | `#bf616a` | Critical/Error | +| Aurora Green | `#a3be8c` | Success | +| Aurora Yellow | `#ebcb8b` | Warning | + +## 🔧 Customization + +### Change Wallpaper +```bash +swww img ~/Pictures/wallpapers/your-wallpaper.jpg --transition-type grow +``` + +### Edit Configs +```bash +# Hyprland +nvim ~/.config/hypr/hyprland.conf + +# Waybar +nvim ~/.config/waybar/config +nvim ~/.config/waybar/style.css + +# Rofi +nvim ~/.config/rofi/nord.rasi + +# Kitty +nvim ~/.config/kitty/kitty.conf +``` + +### Change Theme Colors +Edit the color variables in: +- `~/.config/waybar/style.css` +- `~/.config/rofi/nord.rasi` +- `~/.config/kitty/kitty.conf` +- `~/.config/dunst/dunstrc` + +## 🔍 Troubleshooting + +### Hyprland won't start +```bash +# Check if running Wayland +echo $XDG_SESSION_TYPE + +# Check Hyprland logs +cat /tmp/hypr/*/hyprland.log +``` + +### Waybar not showing +```bash +# Restart waybar +killall waybar +waybar & +``` + +### No sound +```bash +# Check PipeWire +systemctl --user status pipewire pipewire-pulse wireplumber + +# Restart audio +systemctl --user restart pipewire pipewire-pulse wireplumber +``` + +### Wallpaper not loading +```bash +# Check if swww daemon is running +pgrep swww + +# Start daemon and set wallpaper +swww-daemon & +sleep 1 +swww img ~/Pictures/wallpapers/default.jpg +``` + +### Rofi not opening +```bash +# Test rofi +rofi -show drun + +# Check if rofi-wayland is installed +pacman -Qs rofi +``` + +## 🔄 Updating + +```bash +cd ~/hyprarch +git pull +./install.sh +``` + +Your custom configs will be backed up before updating. + +## 🗑️ Uninstall + +```bash +# Remove configs +rm -rf ~/.config/hypr +rm -rf ~/.config/waybar +rm -rf ~/.config/rofi +rm -rf ~/.config/kitty +rm -rf ~/.config/dunst + +# Optionally remove packages (be careful!) +# sudo pacman -Rns hyprland waybar rofi kitty dunst swww +``` + +## 📚 Resources + +- [Hyprland Wiki](https://wiki.hyprland.org/) +- [Nord Theme](https://www.nordtheme.com/) +- [Arch Wiki - Hyprland](https://wiki.archlinux.org/title/Hyprland) + +## 🤝 Credits + +- [Hyprland](https://hyprland.org/) by vaxerski +- [Nord Theme](https://www.nordtheme.com/) by Arctic Ice Studio +- [Nordic Wallpapers](https://github.com/linuxdotexe/nordic-wallpapers) + +## 📄 License + +MIT License - Feel free to use and modify! + +--- + +

+Made with 💙 for the Arch + Hyprland community +

diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..f86c3d9 --- /dev/null +++ b/install.sh @@ -0,0 +1,333 @@ +#!/bin/bash + +# ╔═══════════════════════════════════════════════════════════════════╗ +# ║ HYPRARCH - Install Script ║ +# ║ https://git.cribdev.com/hyprarch ║ +# ╚═══════════════════════════════════════════════════════════════════╝ + +set -e + +# Colors +RED='\033[0;31m' +GREEN='\033[0;32m' +BLUE='\033[0;34m' +CYAN='\033[0;36m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Banner +echo -e "${CYAN}" +cat << "EOF" + ╦ ╦╦ ╦╔═╗╦═╗╔═╗╦═╗╔═╗╦ ╦ + ╠═╣╚╦╝╠═╝╠╦╝╠═╣╠╦╝║ ╠═╣ + ╩ ╩ ╩ ╩ ╩╚═╩ ╩╩╚═╚═╝╩ ╩ + Hyprland Rice for Arch Linux +EOF +echo -e "${NC}" + +# Check if running as root +if [ "$EUID" -eq 0 ]; then + echo -e "${RED}Error: Please don't run this script as root${NC}" + exit 1 +fi + +# Check if running Arch Linux +if [ ! -f /etc/arch-release ]; then + echo -e "${RED}Error: This script is designed for Arch Linux${NC}" + exit 1 +fi + +# Function to print status +print_status() { + echo -e "${BLUE}[*]${NC} $1" +} + +print_success() { + echo -e "${GREEN}[✓]${NC} $1" +} + +print_warning() { + echo -e "${YELLOW}[!]${NC} $1" +} + +print_error() { + echo -e "${RED}[✗]${NC} $1" +} + +# Get script directory +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# ── Step 1: Update System ──────────────────────────────────────────── +print_status "Updating system..." +sudo pacman -Syu --noconfirm + +# ── Step 2: Install yay (AUR helper) ───────────────────────────────── +if ! command -v yay &> /dev/null; then + print_status "Installing yay (AUR helper)..." + sudo pacman -S --needed --noconfirm git base-devel + git clone https://aur.archlinux.org/yay.git /tmp/yay + cd /tmp/yay && makepkg -si --noconfirm + cd "$SCRIPT_DIR" + rm -rf /tmp/yay + print_success "yay installed" +else + print_success "yay already installed" +fi + +# ── Step 3: Install Packages ───────────────────────────────────────── +print_status "Installing packages..." + +# Core Hyprland packages +HYPRLAND_PKGS=( + hyprland + hyprpaper + hyprpicker + hypridle + hyprlock + xdg-desktop-portal-hyprland +) + +# Wayland essentials +WAYLAND_PKGS=( + waybar + rofi-wayland + dunst + swww + grim + slurp + wl-clipboard +) + +# System utilities +SYSTEM_PKGS=( + kitty + thunar + thunar-archive-plugin + file-roller + pavucontrol + brightnessctl + networkmanager + network-manager-applet + bluez + bluez-utils + blueman + pipewire + pipewire-alsa + pipewire-pulse + pipewire-jack + wireplumber +) + +# Fonts +FONT_PKGS=( + ttf-jetbrains-mono-nerd + ttf-fira-code + noto-fonts + noto-fonts-cjk + noto-fonts-emoji + ttf-font-awesome +) + +# CLI tools +CLI_PKGS=( + git + vim + neovim + htop + btop + wget + curl + unzip + zip + ripgrep + fd + fzf + bat + eza + jq + zsh + starship +) + +# Applications +APP_PKGS=( + firefox + imv + zathura + zathura-pdf-mupdf + mpv +) + +# Qt/GTK theming +THEME_PKGS=( + qt5ct + qt6ct + nwg-look +) + +# Install official packages +print_status "Installing official packages..." +sudo pacman -S --needed --noconfirm "${HYPRLAND_PKGS[@]}" "${WAYLAND_PKGS[@]}" "${SYSTEM_PKGS[@]}" "${FONT_PKGS[@]}" "${CLI_PKGS[@]}" "${APP_PKGS[@]}" "${THEME_PKGS[@]}" + +# AUR packages +AUR_PKGS=( + swaynotificationcenter +) + +print_status "Installing AUR packages..." +yay -S --needed --noconfirm "${AUR_PKGS[@]}" + +print_success "All packages installed" + +# ── Step 4: Enable Services ────────────────────────────────────────── +print_status "Enabling services..." +sudo systemctl enable NetworkManager +sudo systemctl enable bluetooth +systemctl --user enable pipewire pipewire-pulse wireplumber + +print_success "Services enabled" + +# ── Step 5: Backup Existing Configs ────────────────────────────────── +print_status "Backing up existing configs..." +BACKUP_DIR="$HOME/.config-backup-$(date +%Y%m%d_%H%M%S)" + +configs_to_backup=( + "$HOME/.config/hypr" + "$HOME/.config/waybar" + "$HOME/.config/rofi" + "$HOME/.config/kitty" + "$HOME/.config/dunst" +) + +mkdir -p "$BACKUP_DIR" +for config in "${configs_to_backup[@]}"; do + if [ -d "$config" ] || [ -f "$config" ]; then + cp -r "$config" "$BACKUP_DIR/" 2>/dev/null || true + print_warning "Backed up $(basename $config)" + fi +done + +print_success "Backup created at $BACKUP_DIR" + +# ── Step 6: Install Configs ────────────────────────────────────────── +print_status "Installing configs..." + +# Create directories +mkdir -p "$HOME/.config/hypr" +mkdir -p "$HOME/.config/waybar" +mkdir -p "$HOME/.config/rofi" +mkdir -p "$HOME/.config/kitty" +mkdir -p "$HOME/.config/dunst" +mkdir -p "$HOME/Pictures/wallpapers" +mkdir -p "$HOME/Pictures/screenshots" + +# Copy configs +cp -r "$SCRIPT_DIR/.config/hypr/"* "$HOME/.config/hypr/" +cp -r "$SCRIPT_DIR/.config/waybar/"* "$HOME/.config/waybar/" +cp -r "$SCRIPT_DIR/.config/rofi/"* "$HOME/.config/rofi/" +cp -r "$SCRIPT_DIR/.config/kitty/"* "$HOME/.config/kitty/" +cp -r "$SCRIPT_DIR/.config/dunst/"* "$HOME/.config/dunst/" + +# Copy wallpapers if they exist +if [ -d "$SCRIPT_DIR/wallpapers" ] && [ "$(ls -A $SCRIPT_DIR/wallpapers 2>/dev/null)" ]; then + cp -r "$SCRIPT_DIR/wallpapers/"* "$HOME/Pictures/wallpapers/" +fi + +print_success "Configs installed" + +# ── Step 7: Set Zsh as Default Shell ───────────────────────────────── +if [ "$SHELL" != "$(which zsh)" ]; then + print_status "Setting zsh as default shell..." + chsh -s $(which zsh) + print_success "Zsh set as default shell (will take effect on next login)" +fi + +# ── Step 8: Install Starship Config ────────────────────────────────── +print_status "Installing starship config..." +mkdir -p "$HOME/.config" +cat > "$HOME/.config/starship.toml" << 'EOF' +add_newline = false +format = "$directory$git_branch$git_status$character" + +[directory] +truncation_length = 3 +truncate_to_repo = true + +[character] +success_symbol = "[❯](bold green)" +error_symbol = "[❯](bold red)" + +[git_branch] +format = "[$symbol$branch]($style) " +style = "bold purple" +EOF + +print_success "Starship config installed" + +# ── Step 9: Setup Zsh Config ───────────────────────────────────────── +print_status "Setting up zsh config..." +cat > "$HOME/.zshrc" << 'EOF' +# HYPRARCH - Zsh Config + +# History +HISTFILE=~/.zsh_history +HISTSIZE=10000 +SAVEHIST=10000 +setopt appendhistory +setopt sharehistory +setopt hist_ignore_dups + +# Completion +autoload -Uz compinit +compinit + +# Aliases +alias ls='eza' +alias ll='eza -la' +alias cat='bat' +alias vim='nvim' +alias update='sudo pacman -Syu' +alias cleanup='sudo pacman -Rns $(pacman -Qtdq)' + +# Starship prompt +eval "$(starship init zsh)" +EOF + +print_success "Zsh config installed" + +# ── Step 10: Download Default Wallpaper ────────────────────────────── +print_status "Downloading default wallpaper..." +if command -v wget &> /dev/null; then + wget -q "https://raw.githubusercontent.com/linuxdotexe/nordic-wallpapers/master/wallpapers/ign_astronaut.png" -O "$HOME/Pictures/wallpapers/default.jpg" 2>/dev/null || \ + wget -q "https://images.unsplash.com/photo-1557682250-33bd709cbe85?w=1920" -O "$HOME/Pictures/wallpapers/default.jpg" 2>/dev/null || \ + print_warning "Could not download wallpaper, please add one manually" +fi + +print_success "Wallpaper downloaded" + +# ── Complete ───────────────────────────────────────────────────────── +echo "" +echo -e "${GREEN}╔═══════════════════════════════════════════════════════════════════╗${NC}" +echo -e "${GREEN}║ Installation Complete! ║${NC}" +echo -e "${GREEN}╚═══════════════════════════════════════════════════════════════════╝${NC}" +echo "" +echo -e "${CYAN}Next steps:${NC}" +echo " 1. Log out and select Hyprland from your display manager" +echo " 2. Or start Hyprland from TTY: ${YELLOW}Hyprland${NC}" +echo "" +echo -e "${CYAN}Keybindings:${NC}" +echo " SUPER + Return → Terminal (Kitty)" +echo " SUPER + D → App Launcher (Rofi)" +echo " SUPER + Q → Close Window" +echo " SUPER + E → File Manager" +echo " SUPER + 1-9 → Switch Workspace" +echo "" +echo -e "${CYAN}Config locations:${NC}" +echo " Hyprland: ~/.config/hypr/hyprland.conf" +echo " Waybar: ~/.config/waybar/" +echo " Rofi: ~/.config/rofi/" +echo " Kitty: ~/.config/kitty/kitty.conf" +echo "" +echo -e "${YELLOW}Backup of old configs: $BACKUP_DIR${NC}" +echo "" +echo -e "${GREEN}Enjoy your new rice! 🎨${NC}" diff --git a/wallpapers/README.md b/wallpapers/README.md new file mode 100644 index 0000000..3cd799e --- /dev/null +++ b/wallpapers/README.md @@ -0,0 +1,24 @@ +# Wallpapers + +Place your wallpapers here! + +The default wallpaper will be downloaded during installation, but you can add your own. + +## Setting Wallpaper + +```bash +swww img ~/Pictures/wallpapers/your-wallpaper.jpg --transition-type grow +``` + +## Recommended Wallpaper Sources + +- [Nordic Wallpapers](https://github.com/linuxdotexe/nordic-wallpapers) +- [Wallhaven](https://wallhaven.cc/) +- [Unsplash](https://unsplash.com/) + +## Transition Types + +- `grow` - Grows from center +- `wipe` - Wipes across screen +- `fade` - Fades between images +- `none` - Instant change