This commit is contained in:
2026-06-15 00:24:26 +03:00
commit 3fab9257e0
45 changed files with 2729 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
exec-once = hyprswitch init --show-title
exec-once = hyprpaper
exec-once = waybar
exec-once = awww-daemon
exec-once = hyprctl dispatch workspace 1
exec-once = ~/.config/hypr/scripts/replay-startup.sh
exec-once = walker --gapplication-service
exec-once = swaync
exec-once = gsettings set org.gnome.desktop.interface gtk-theme "catppuccin-mocha-mauve-standard+default"
exec-once = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP

97
config/hypr/binds.conf Normal file
View File

@@ -0,0 +1,97 @@
$mainMod = SUPER
$secMod = SUPER SHIFT
$terminal = kitty
$fileManager = thunar
$menu = walker
$menuLauncher = ~/.config/rofi/launchers/type-2/launcher.sh
# System
bind = $mainMod, F4, exec, wlogout -l ~/.config/wlogout/layout -s ~/.config/wlogout/style.css -b 4 -T 350 -B 350
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, L, exec, hyprlock
# Windows
bind = $secMod, V, togglefloating
bind = $mainMod, F11, fullscreen, 0
bind = $mainMod, T, layoutmsg, togglesplit
bind = $secMod, right, movewindow, r
bind = $secMod, left, movewindow, l
bind = $secMod, up, movewindow, u
bind = $secMod, down, movewindow, d
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Applications
bind = $mainMod, F, exec, firefox
bind = $mainMod, S, exec, spotify
bind = $mainMod, N, exec, swaync-client -t -sw
bind = $secMod, N, exec, swaync-cleint --close-all
bind = ALT, SPACE, exec, $menu
bind = $mainMod, V, exec, walker --provider clipboard
bind = ALT, Tab, exec, hyprswitch gui --mod-key=alt --key=tab --close=mod-key-release --reverse-key=mod=shift
# Screenshots
bind = $secMod, S, exec, hyprshot -m region -z
# Screen recording
bind = $mainMod, R, exec, notify-send "Recording Started" "Screen recording has started, Press Super + Shift + R to end it."; wf-recorder -f ~/Videos/$(date +%Y%m%d_%H%M%S).mp4 -g "$(slurp)"
bind = $mainMod SHIFT, R, exec, pkill -INT wf-recorder && notify-send "Recording Saved" "Screen recording saved to ~/Videos/"
bind = ALT, E, exec, killall -SIGUSR1 gpu-screen-recorder && notify-send "Replay Saved" "Clip dumped to ~/Videos/Replays"
# Audio
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioPrev, exec, playerctl previous
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
# Display
bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%-
bind = , XF86MonBrightnessUp, exec, brightnessctl set 5%+
# Opacity
bind = $secMod, mouse_down, exec, ~/.config/hypr/scripts/opacity.sh decrease
bind = $secMod, mouse_up, exec, ~/.config/hypr/scripts/opacity.sh increase
# Touchpad
bind = , XF86TouchpadToggle, exec, hyprctl keyword input:touchpad:enabled toggle
# Switch to workspace
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
# Move window to workspace
bind = $secMod, 1, movetoworkspace, 1
bind = $secMod, 2, movetoworkspace, 2
bind = $secMod, 3, movetoworkspace, 3
bind = $secMod, 4, movetoworkspace, 4
bind = $secMod, 5, movetoworkspace, 5
bind = $secMod, 6, movetoworkspace, 6
# Next/previous workspace on focused monitor
bind = $mainMod, mouse_up, workspace, m+1
bind = $mainMod, mouse_down, workspace, m-1
bind = $mainMod, bracketright, exec, ~/.config/hypr/workspace_next.sh
bind = $mainMod, bracketleft, exec, ~/.config/hypr/workspace_prev.sh
# Pin workspaces to monitors (uncomment to use)
#workspace = 1, monitor:DP-1
#workspace = 2, monitor:DP-1
#workspace = 3, monitor:DP-1
#workspace = 1, monitor:HDMI-A-1
#workspace = 2, monitor:HDMI-A-1
#workspace = 3, monitor:HDMI-A-1
#workspace = 4, monitor:eDP-2
#workspace = 5, monitor:eDP-2
#workspace = 6, monitor:eDP-2
#monitor = DP-1, 1920x1080@60, 0x0, 1
#monitor = eDP-2, 2560x1600@144, 0x1080, 1.67
#monitor = eDP-2, disable

6
config/hypr/env.conf Normal file
View File

@@ -0,0 +1,6 @@
env = QT_QPA_PLATFORMTHEME, qt6ct
env = JAVA_AWT_WM_NONPARENTING, 1
env = GTK_THEME,catppuccin-mocha-mauve-standard+default
env = COLOR_SCHEME, prefer-dark
env = LIBVA_DRIVER_NAME, nvidia
env = __GLX_VENDOR_LIBRARY_NAME, nvidia

View File

@@ -0,0 +1,7 @@
source = ~/.config/hypr/monitors.conf
source = ~/.config/hypr/workspaces.conf
source = ~/.config/hypr/autostart.conf
source = ~/.config/hypr/env.conf
source = ~/.config/hypr/windowrules.conf
source = ~/.config/hypr/settings.conf
source = ~/.config/hypr/binds.conf

View File

@@ -0,0 +1,83 @@
# This config is a STUB! This should never be generated.
# Use the default lua config from https://github.com/hyprwm/Hyprland/blob/main/example/hyprland.lua
exec-once = hyprswitch init --show-title
exec-once = waybar
env = QT_QPA_PLATFORMTHEME, qt6ct
env = JAVA_AWT_WM_NONPARENTING, 1
env = GTK_THEME = Adwaita:dark
input {
touchpad {
natural_scroll = true
}
}
xwayland {
force_zero_scaling = true
}
$mainMod = SUPER
$secMod = SUPER SHIFT
$terminal = kitty
$fileManager = dolphin
$menu = rofi
$menuLauncher = ~/.config/rofi/launchers/type-2/launcher.sh
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = ALT, SPACE, exec, bash $menuLauncher
bind = $secMod, right, movewindow, r
bind = $secMod, left, movewindow, l
bind = $secMod, up, movewindow, u
bind = $secMod, down, movewindow, d
bind = $mainMod, F11, fullscreen, 0
bind = $mainMod, F, exec, firefox
bind = ALT, Tab, exec, hyprswitch gui --mod-key=alt --key=tab --close=mod-key-release --reverse-key=mod=shift
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = $secMod, S, exec, hyprshot -m region
# Pin workspaces to monitors
workspace = 1, monitor:DP-1
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1
# Switch to workspace
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
# Move window to workspace
bind = $secMod, 1, movetoworkspace, 1
bind = $secMod, 2, movetoworkspace, 2
bind = $secMod, 3, movetoworkspace, 3
bind = $secMod, 4, movetoworkspace, 4
bind = $secMod, 5, movetoworkspace, 5
bind = $secMod, 6, movetoworkspace, 6
# Next/previous workspace on focused monitor
bind = $mainMod, mouse_down, workspace, m+1
bind = $mainMod, mouse_up, workspace, m-1
bind = $mainMod, bracketright, workspace, m+1
bind = $mainMod, bracketleft, workspace, m-1
monitor = DP-1, 1920x1080@60, 0x0, 1
monitor = eDP-1, 2560x1600@144, 1920x0, 1.67
workspace = 1, monitor:DP-1
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1

View File

@@ -0,0 +1,130 @@
# This config is a STUB! This should never be generated.
# Use the default lua config from https://github.com/hyprwm/Hyprland/blob/main/example/hyprland.lua
source = ~/.config/hypr/monitors.conf
source = ~/.config/hypr/workspaces.conf
exec-once = hyprswitch init --show-title
exec-once = hyprpaper
exec-once = waybar
exec-once = awww-daemon
exec-once = hyprctl dispatch workspace 1
exec-once = ~/.config/hypr/scripts/replay-startup.sh
exec-once = walker --gapplication-service
exec-once = swaync
env = QT_QPA_PLATFORMTHEME, qt6ct
env = JAVA_AWT_WM_NONPARENTING, 1
env = GTK_THEME, Adwaita:dark
env = COLOR_SCHEME, prefer-dark
env = LIBVA_DRIVER_NAME, nvidia
env = __GLX_VENDOR_LIBRARY_NAME, nvidia
windowrule = match:class ^(steam_app_1091500)$, fullscreen 1
windowrule = match:class ^(ArqaamAccounting)$, float true
windowrule = match:class ^(ArqaamAccounting)$, center true
windowrule = match:title ^(Network Manager)$, float true
general {
col.active_border = rgba(6C7086ff) # focused window border
col.inactive_border = rgba(313244ff) # unfocused windows
gaps_out = 10,10,10,10
}
input {
touchpad {
natural_scroll = true
clickfinger_behavior = true
}
numlock_by_default = true
kb_layout = us,ara
kb_variant = ,
kb_options = grp:alt_shift_toggle
}
general {
}
xwayland {
force_zero_scaling = true
}
$mainMod = SUPER
$secMod = SUPER SHIFT
$terminal = kitty
$fileManager = hyprfm
$menu = walker
$menuLauncher = ~/.config/rofi/launchers/type-2/launcher.sh
bind = $mainMod, F4, exec, wlogout -l ~/.config/wlogout/layout -s ~/.config/wlogout/style.css -b 4 -T 350 -B 350
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
bind = $mainMod, E, exec, $fileManager
bind = $secMod, V, togglefloating
bind = $mainMod, V, exec, walker --provider clipboard
bind = ALT, SPACE, exec, $menu
bind = ALT, E, exec, killall -SIGUSR1 gpu-screen-recorder && notify-send "Replay Saved" "Clip dumped to ~/Videos/Replays"
bind = $secMod, right, movewindow, r
bind = $secMod, left, movewindow, l
bind = $secMod, up, movewindow, u
bind = $secMod, down, movewindow, d
bind = $mainMod, F11, fullscreen, 0
bind = $mainMod, F, exec, firefox
bind = $mainMod, S, exec, spotify
bind = $mainMod, N, exec, swaync-client -t -sw
bind = $secMod, N, exec, swaync-cleint --close-all
bind = ALT, Tab, exec, hyprswitch gui --mod-key=alt --key=tab --close=mod-key-release --reverse-key=mod=shift
bind = $mainMod, L, exec, hyprlock
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioPrev, exec, playerctl previous
bind = $secMod, S, exec, hyprshot -m region -z
bind = $mainMod, T, layoutmsg, togglesplit
# Screen recording
bind = $mainMod, R, exec, wf-recorder -f ~/Videos/$(date +%Y%m%d_%H%M%S).mp4 -g "$(slurp)"
bind = $mainMod SHIFT, R, exec, pkill -INT wf-recorder
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%-
bind = , XF86MonBrightnessUp, exec, brightnessctl set 5%+
bind = $secMod, mouse_down, exec, ~/.config/hypr/scripts/opacity.sh decrease
bind = $secMod, mouse_up, exec, ~/.config/hypr/scripts/opacity.sh increase
bind = , XF86TouchpadToggle, exec, hyprctl keyword input:touchpad:enabled toggle
# Pin workspaces to monitors
#workspace = 1, monitor:DP-1
#workspace = 2, monitor:DP-1
#workspace = 3, monitor:DP-1
#workspace = 1, monitor:HDMI-A-1
#workspace = 2, monitor:HDMI-A-1
#workspace = 3, monitor:HDMI-A-1
#workspace = 4, monitor:eDP-2
#workspace = 5, monitor:eDP-2
#workspace = 6, monitor:eDP-2
# Switch to workspace
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
# Move window to workspace
bind = $secMod, 1, movetoworkspace, 1
bind = $secMod, 2, movetoworkspace, 2
bind = $secMod, 3, movetoworkspace, 3
bind = $secMod, 4, movetoworkspace, 4
bind = $secMod, 5, movetoworkspace, 5
bind = $secMod, 6, movetoworkspace, 6
# Next/previous workspace on focused monitor
bind = $mainMod, mouse_up, workspace, m+1
bind = $mainMod, mouse_down, workspace, m-1
bind = $mainMod, bracketright, exec, ~/.config/hypr/workspace_next.sh
bind = $mainMod, bracketleft, exec, ~/.config/hypr/workspace_prev.sh
#monitor = DP-1, 1920x1080@60, 0x0, 1
#monitor = eDP-2, 2560x1600@144, 0x1080, 1.67
# monitor = eDP-2, disable

View File

@@ -0,0 +1,78 @@
# This config is a STUB! This should never be generated.
# Use the default lua config from https://github.com/hyprwm/Hyprland/blob/main/example/hyprland.lua
exec-once = hyprswitch init --show-title
windowrule = match:fullscreen 1, border_size 0
env = QT_QPA_PLATFORMTHEME, qt6ct
env = JAVA_AWT_WM_NONPARENTING, 1
xwayland {
force_zero_scaling = true
}
$mainMod = SUPER
$secMod = SUPER SHIFT
$terminal = kitty
$fileManager = dolphin
$menu = rofi
$menuLauncher = ~/.config/rofi/launchers/type-2/launcher.sh
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = ALT, SPACE, exec, bash $menuLauncher
bind = $secMod, right, movewindow, r
bind = $secMod, left, movewindow, l
bind = $secMod, up, movewindow, u
bind = $secMod, down, movewindow, d
bind = $mainMod, F11, fullscreen, 1
bind = $mainMod, F, exec, firefox
bind = ALT, Tab, exec, hyprswitch gui --mod-key=alt --key=tab --close=mod-key-release --reverse-key=mod=shift
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = $secMod, S, exec, hyprshot -m region
# Pin workspaces to monitors
workspace = 1, monitor:DP-1
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1
# Switch to workspace
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
# Move window to workspace
bind = $secMod, 1, movetoworkspace, 1
bind = $secMod, 2, movetoworkspace, 2
bind = $secMod, 3, movetoworkspace, 3
bind = $secMod, 4, movetoworkspace, 4
bind = $secMod, 5, movetoworkspace, 5
bind = $secMod, 6, movetoworkspace, 6
# Next/previous workspace on focused monitor
bind = $mainMod, mouse_down, workspace, m+1
bind = $mainMod, mouse_up, workspace, m-1
bind = $mainMod, bracketright, workspace, m+1
bind = $mainMod, bracketleft, workspace, m-1
monitor = DP-1, 1920x1080@60, 0x0, 1
monitor = eDP-1, 2560x1600@144, 1920x0, 1.67
workspace = 1, monitor:DP-1
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1

108
config/hypr/hyprlock.conf Normal file
View File

@@ -0,0 +1,108 @@
source = ~/.config/hypr/mocha.conf
$accent = $mauve
$accentAlpha = $mauveAlpha
$font = JetBrainsMono Nerd Font
# GENERAL
general {
hide_cursor = true
}
# BACKGROUND
background {
monitor =
path = $HOME/.config/background
blur_passes = 0
color = $base
}
# LAYOUT
label {
monitor =
text = Layout: $LAYOUT
color = $text
font_size = 25
font_family = $font
position = 30, -30
halign = left
valign = top
}
# TIME
label {
monitor =
text = $TIME
color = $text
font_size = 90
font_family = $font
position = -30, 0
halign = right
valign = top
}
# DATE
label {
monitor =
text = cmd[update:43200000] date +"%A, %d %B %Y"
color = $text
font_size = 25
font_family = $font
position = -30, -150
halign = right
valign = top
}
# FINGERPRINT
{
monitor = "";
text = "$FPRINTPROMPT";
color = "$text";
font_size = 14;
font_family = $font;
position = "0, -107";
halign = "center";
valign = "center";
}
# USER AVATAR
image {
monitor =
path = $HOME/.face
size = 100
border_color = $accent
position = 0, 75
halign = center
valign = center
}
# INPUT FIELD
input-field {
monitor =
size = 300, 60
outline_thickness = 4
dots_size = 0.2
dots_spacing = 0.2
dots_center = true
outer_color = $accent
inner_color = $surface0
font_color = $text
fade_on_empty = false
placeholder_text = <span foreground="##$textAlpha"><i>Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
hide_input = false
check_color = $accent
fail_color = $red
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
capslock_color = $yellow
position = 0, -47
halign = center
valign = center
}
auth {
fingerprint {
enabled = true
ready_message = Scan fingerprint to unlock
present_message = Scanning...
}
}

View File

@@ -0,0 +1,8 @@
preload = /home/nouredeen/wallpapers/disco.png
splash = false
wallpaper {
monitor =
path = /home/nouredeen/wallpapers/disco.png
fit_mode = cover
}

78
config/hypr/mocha.conf Normal file
View File

@@ -0,0 +1,78 @@
$rosewater = rgb(f5e0dc)
$rosewaterAlpha = f5e0dc
$flamingo = rgb(f2cdcd)
$flamingoAlpha = f2cdcd
$pink = rgb(f5c2e7)
$pinkAlpha = f5c2e7
$mauve = rgb(cba6f7)
$mauveAlpha = cba6f7
$red = rgb(f38ba8)
$redAlpha = f38ba8
$maroon = rgb(eba0ac)
$maroonAlpha = eba0ac
$peach = rgb(fab387)
$peachAlpha = fab387
$yellow = rgb(f9e2af)
$yellowAlpha = f9e2af
$green = rgb(a6e3a1)
$greenAlpha = a6e3a1
$teal = rgb(94e2d5)
$tealAlpha = 94e2d5
$sky = rgb(89dceb)
$skyAlpha = 89dceb
$sapphire = rgb(74c7ec)
$sapphireAlpha = 74c7ec
$blue = rgb(89b4fa)
$blueAlpha = 89b4fa
$lavender = rgb(b4befe)
$lavenderAlpha = b4befe
$text = rgb(cdd6f4)
$textAlpha = cdd6f4
$subtext1 = rgb(bac2de)
$subtext1Alpha = bac2de
$subtext0 = rgb(a6adc8)
$subtext0Alpha = a6adc8
$overlay2 = rgb(9399b2)
$overlay2Alpha = 9399b2
$overlay1 = rgb(7f849c)
$overlay1Alpha = 7f849c
$overlay0 = rgb(6c7086)
$overlay0Alpha = 6c7086
$surface2 = rgb(585b70)
$surface2Alpha = 585b70
$surface1 = rgb(45475a)
$surface1Alpha = 45475a
$surface0 = rgb(313244)
$surface0Alpha = 313244
$base = rgb(1e1e2e)
$baseAlpha = 1e1e2e
$mantle = rgb(181825)
$mantleAlpha = 181825
$crust = rgb(11111b)
$crustAlpha = 11111b

View File

@@ -0,0 +1,4 @@
# Generated by nwg-displays on 2026-06-05 at 18:10:13. Do not edit manually.
monitor=eDP-2,2560x1600@144.0,3650x898,1.67
monitor=DP-1,1920x1080@60.0,1730x898,1.0

14
config/hypr/monitors.lua Normal file
View File

@@ -0,0 +1,14 @@
-- Generated by nwg-displays on 2026-06-05 at 18:10:13. Do not edit manually.
hl.monitor({
output = "eDP-2",
mode = "2560x1600@144.0",
position = "3650x898",
scale = 1.67
})
hl.monitor({
output = "DP-1",
mode = "1920x1080@60.0",
position = "1730x898",
scale = 1.0
})

View File

@@ -0,0 +1,20 @@
#!/bin/bash
# Define your monitor names
EXTERNAL="DP-1"
LAPTOP="eDP-1"
# Kill any existing dock instances
pkill -f nwg-dock-hyprland
# Give Wayland a little more time to clear the screen edge
sleep 0.6
# Check if the external monitor is actively connected
if hyprctl monitors | grep -q "Monitor $EXTERNAL"; then
# Launch on external using Hyprland's native exec
hyprctl dispatch exec "nwg-dock-hyprland -o $EXTERNAL -p bottom -a center -ml 10 -mr 10 -mb 10 -i 28 -nolauncher -x"
else
# Fallback to laptop
hyprctl dispatch exec "nwg-dock-hyprland -o $LAPTOP -p bottom -a center -ml 10 -mr 10 -mb 10 -i 28 -nolauncher -x"
fi

21
config/hypr/scripts/opacity.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
# Usage: opacity.sh [increase|decrease]
STEP=0.1
ADDRESS=$(hyprctl activewindow -j | grep -oP '"address": "\K[^"]+')
CURRENT=$(hyprctl getprop active opacity | grep -oP '[\d.]+' | head -1)
if [[ -z "$CURRENT" ]]; then
CURRENT=1.0
fi
if [[ "$1" == "increase" ]]; then
NEW=$(echo "$CURRENT + $STEP" | bc)
else
NEW=$(echo "$CURRENT - $STEP" | bc)
fi
# Clamp between 0.1 and 1.0
NEW=$(echo "if ($NEW > 1.0) 1.0 else if ($NEW < 0.1) 0.1 else $NEW" | bc)
hyprctl dispatch setprop active opacity "$NEW"

View File

@@ -0,0 +1,25 @@
#!/bin/bash
# Define your monitors
EXTERNAL="DP-1"
LAPTOP="eDP-1"
REPLAY_DIR="$HOME/Videos/Replays"
# Ensure the output directory exists
mkdir -p "$REPLAY_DIR"
# Kill any existing recorder instances to prevent duplicates/errors
# 2>/dev/null hides the "no process found" message if it wasn't running
killall gpu-screen-recorder 2>/dev/null
# Give the hardware encoder a fraction of a second to free up
sleep 0.5
# Check if the external monitor is actively connected
if hyprctl monitors | grep -q "Monitor $EXTERNAL"; then
TARGET_MONITOR=$EXTERNAL
else
TARGET_MONITOR=$LAPTOP
fi
# Launch the recorder on the chosen monitor in the background
gpu-screen-recorder -w "$TARGET_MONITOR" -f 60 -r 120 -c mp4 -a default_output -a "alsa_input.pci-0000_00_1f.3.analog-stereo" -o "$REPLAY_DIR" &

20
config/hypr/settings.conf Normal file
View File

@@ -0,0 +1,20 @@
general {
col.active_border = rgba(6C7086ff) # focused window border
col.inactive_border = rgba(313244ff) # unfocused windows
gaps_out = 10,10,10,10
}
input {
touchpad {
natural_scroll = true
clickfinger_behavior = true
}
numlock_by_default = true
kb_layout = us,ara
kb_variant = ,
kb_options = grp:alt_shift_toggle
}
xwayland {
force_zero_scaling = true
}

View File

@@ -0,0 +1,6 @@
windowrule = match:class ^(steam_app_1091500)$, fullscreen 1
windowrule = match:class ^(ArqaamAccounting)$, float true
windowrule = match:class ^(ArqaamAccounting)$, center true
windowrule = match:title ^(Network Manager)$, float true
windowrule = match:title ^(File Operation Progress)$, float true
windowrule = match:class ^(blueman-manager)$, float true

5
config/hypr/workspace_next.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
current=$(hyprctl activeworkspace -j | jq '.id')
if [ "$current" -lt 5 ]; then
hyprctl dispatch workspace $(( current + 1 ))
fi

5
config/hypr/workspace_prev.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
current=$(hyprctl activeworkspace -j | jq '.id')
if [ "$current" -gt 1 ]; then
hyprctl dispatch workspace $(( current - 1 ))
fi

View File

@@ -0,0 +1,8 @@
# Generated by nwg-displays on 2026-06-05 at 18:10:26. Do not edit manually.
workspace=1,monitor:DP-1,default:true
workspace=2,monitor:DP-1
workspace=3,monitor:DP-1
workspace=4,monitor:eDP-2,default:true
workspace=5,monitor:eDP-2
workspace=6,monitor:eDP-2

View File

@@ -0,0 +1,28 @@
-- Generated by nwg-displays on 2026-06-05 at 18:10:26. Do not edit manually.
hl.workspace_rule({
workspace = "1",
monitor = "DP-1",
default = true
})
hl.workspace_rule({
workspace = "2",
monitor = "DP-1"
})
hl.workspace_rule({
workspace = "3",
monitor = "DP-1"
})
hl.workspace_rule({
workspace = "4",
monitor = "eDP-2",
default = true
})
hl.workspace_rule({
workspace = "5",
monitor = "eDP-2"
})
hl.workspace_rule({
workspace = "6",
monitor = "eDP-2"
})

66
config/swaync/config.json Normal file
View File

@@ -0,0 +1,66 @@
{
"$schema": "/etc/xdg/swaync/configSchema.json",
"positionX": "right",
"positionY": "top",
"cssPriority": "user",
"layer": "overlay",
"layer-shell": true,
"control-center-layer": "top",
"control-center-width": 380,
"control-center-height": 750,
"control-center-margin-top": 5,
"control-center-margin-bottom": 0,
"control-center-margin-right": 5,
"control-center-margin-left": 0,
"notification-window-width": 350,
"notification-window-height": 200,
"notification-icon-size": 70,
"notification-body-image-height": 200,
"notification-body-image-width": 200,
"notification-2fa-action": true,
"notifications-inline-replies": true,
"timeout": 4,
"timeout-low": 4,
"timeout-critical": 4,
"fit-to-screen": false,
"relative-timestamps": true,
"keyboard-shortcuts": true,
"image-visibility": "when-available",
"transition-time": 200,
"hide-on-clear": false,
"hide-on-action": true,
"script-fail-notify": true,
"widgets": ["mpris", "title", "dnd", "notifications"],
"widget-config": {
"title": {
"text": "NOTIFICATIONS",
"clear-all-button": true,
"button-text": "CLEAR"
},
"dnd": {
"text": "Do Not Disturb"
},
"mpris": {
"blacklist": [],
"autohide": true,
"show-album-art": "always",
"loop-carousel": true,
"image-radius": 10
},
"backlight": {
"label": "󰃠",
"device": "amdgpu_bl2",
"min": 10
},
"volume": {
"label": "󰕾"
}
}
}

View File

@@ -0,0 +1,101 @@
{
"$schema": "/etc/xdg/swaync/configSchema.json",
"ignore-gtk-theme": true,
"positionX": "right",
"positionY": "top",
"layer": "overlay",
"control-center-layer": "top",
"layer-shell": true,
"layer-shell-cover-screen": true,
"cssPriority": "user",
"control-center-margin-top": 0,
"control-center-margin-bottom": 0,
"control-center-margin-right": 0,
"control-center-margin-left": 0,
"notification-2fa-action": true,
"notification-inline-replies": false,
"notification-body-image-height": 100,
"notification-body-image-width": 200,
"timeout": 10,
"timeout-low": 5,
"timeout-critical": 0,
"fit-to-screen": true,
"relative-timestamps": true,
"control-center-width": 500,
"control-center-height": 600,
"notification-window-width": 500,
"keyboard-shortcuts": true,
"notification-grouping": true,
"image-visibility": "when-available",
"transition-time": 200,
"hide-on-clear": false,
"hide-on-action": true,
"text-empty": "No Notifications",
"script-fail-notify": true,
"scripts": {
"example-script": {
"app-name": "example.app.id",
"exec": "echo 'Do something...'",
"urgency": "Normal"
},
"example-action-script": {
"app-name": "example.app.id",
"exec": "echo 'Do something actionable!'",
"urgency": "Normal",
"run-on": "action"
}
},
"notification-visibility": {
"example-name": {
"state": "muted",
"urgency": "Normal",
"app-name": "example.app.id"
}
},
"widgets": [
"inhibitors",
"title",
"dnd",
"notifications"
],
"widget-config": {
"notifications": {
"vexpand": true
},
"inhibitors": {
"text": "Inhibitors",
"button-text": "Clear All",
"clear-all-button": true
},
"title": {
"text": "Notifications",
"clear-all-button": true,
"button-text": "Clear All"
},
"dnd": {
"text": "Do Not Disturb"
},
"label": {
"max-lines": 5,
"text": "Label Text"
},
"mpris": {
"blacklist": [],
"autohide": false,
"show-album-art": "always",
"loop-carousel": false
},
"buttons-grid": {
"buttons-per-row": 7,
"actions": [
{
"label": "直",
"type": "toggle",
"active": true,
"command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && nmcli radio wifi on || nmcli radio wifi off'",
"update-command": "sh -c '[[ $(nmcli radio wifi) == \"enabled\" ]] && echo true || echo false'"
}
]
}
}
}

330
config/swaync/style.css Normal file
View File

@@ -0,0 +1,330 @@
/* === Catppuccin Mocha Hardcoded === */
* {
all: unset;
font-size: 15px;
font-weight: bold;
color: #cdd6f4; /* Text */
transition: 200ms;
}
.blank-window {
background: transparent;
}
/* ===================== FLOATING NOTIFICATIONS ===================== */
.notification-row {
outline: none;
margin: 0;
padding: 0px;
}
.floating-notifications.background .notification-row .notification-background {
background: rgba(30, 30, 46, 0.7); /* base alpha */
border: 2px solid rgba(180, 190, 254, 0.2); /* lavender alpha */
border-radius: 6px;
margin: 16px;
padding: 0;
transition: background 0.15s ease-in-out;
}
.floating-notifications.background
.notification-row
.notification-background
.notification {
border-radius: 10px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification.critical {
border: 2px solid #f38ba8; /* red */
border-radius: 4px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification.critical
.summary {
color: #f38ba8; /* red */
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content {
margin: 10px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action {
border-radius: 8px;
background-color: rgba(30, 30, 46, 0.7); /* base alpha */
margin: 6px;
border: 1px solid transparent;
transition: background 0.15s ease-in-out;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:hover {
background-color: rgba(137, 180, 250, 0.5); /* blue hover */
border: 1px solid #89b4fa; /* blue */
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:active {
background-color: #89b4fa; /* blue */
color: #1e1e2e; /* base */
}
.floating-notifications.background
.notification-row
.notification-background
.close-button {
margin: 6px;
padding: 2px;
border-radius: 6px;
background-color: transparent;
border: 1px solid transparent;
}
.floating-notifications.background
.notification-row
.notification-background
.close-button:hover {
background-color: #89b4fa; /* blue */
}
/* ===================== CONTROL CENTER ===================== */
.control-center {
background: rgba(30, 30, 46, 0.8); /* base alpha */
border-radius: 6px;
border: 2px solid rgba(69, 71, 90, 0.3); /* surface1 alpha */
padding: 12px;
}
/* ------------------- Notifications ---------------------- */
.control-center .notification-row .notification-background {
background-color: #313244;
border: 2px solid rgba(137, 180, 250, 0.5);
border-radius: 6px;
margin: 4px 20px;
padding: 2px;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action {
background: rgba(137, 180, 250, 0.6); /* blue alpha */
color: #cdd6f4; /* text */
border-radius: 6px;
}
.notification-content {
padding: 15px;
}
.notification-content:hover {
opacity: 0.5;
}
/* ------------ Notifications expanded-group -------------- */
.notification-group-headers {
font-weight: bold;
font-size: 1.25rem;
color: #b4befe; /* lavender */
letter-spacing: 2px;
margin: 0 20px;
}
.notification-group-icon {
color: #b4befe; /* lavender */
}
/* ===================== SHARED ELEMENTS ===================== */
.summary {
font-weight: bold;
font-size: 18px;
color: #b4befe; /* lavender */
padding-bottom: 3px;
margin-left: 10px;
}
.body {
font-size: 14px;
font-weight: bold;
color: #cdd6f4;
margin-left: 10px;
}
trough {
background-color: rgba(0, 60, 255, 0.1); /* text alpha */
border-radius: 6px;
}
progress {
background-color: #89b4fa; /* blue */
border-radius: 6px;
}
.time {
font-size: x-small;
}
.message {
font-size: small;
}
/* ===================== WIDGETS ===================== */
.widget-title {
font-weight: bold;
color: #b4befe; /* lavender */
margin: 6px;
padding: 0px 20px;
}
.widget-title > label {
color: #b4befe;
font-size: large;
}
.widget-title > button > label {
background: #313244;
color: #b4befe;
border-radius: 6px;
padding: 3px 8px;
}
.widget-title > button:hover > label {
background: #b4befe;
color: #1e1e2e;
}
/* Do not disturb */
.widget-dnd {
margin: 6px 6px 20px;
font-size: medium;
font-weight: bold;
color: #b4befe;
padding: 0px 20px;
}
.widget-dnd > switch {
background: #b4befe6c;
border-radius: 6px;
padding: 3px;
}
.widget-dnd > switch:checked {
background: #b4befe;
}
.widget-dnd > switch slider {
background: #cdd6f4; /* text */
border-radius: 6px;
}
.widget-dnd > switch:checked slider {
background: #313244;
}
switch slider {
min-width: 15px;
min-height: 15px;
}
/* -------------------- Music player ---------------------- */
:root {
--mpris-album-art-overlay: rgba(0, 0, 0, 0.55);
--mpris-button-hover: rgba(180, 190, 254, 0.5);
--mpris-album-art-icon-size: 96px;
--mpris-album-art-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75);
}
.widget-mpris {
color: #cdd6f4;
padding: 10px;
margin: 10px;
}
.widget-mpris button {
padding: 0 5px;
}
.widget-mpris button:hover {
background: rgba(180, 190, 254, 0.5);
color: #1e1e2e; /* base */
border-radius: 3px;
}
.widget-mpris > box > button {
margin: 0px;
}
.widget-mpris .widget-mpris-player {
padding: 0px;
margin: 0px;
border-radius: 6px;
box-shadow: var(--mpris-album-art-shadow);
}
.widget-mpris .widget-mpris-player .mpris-background {
filter: blur(10px);
}
.widget-mpris .widget-mpris-player .mpris-overlay {
padding: 16px;
background-color: var(--mpris-album-art-overlay);
}
.widget-mpris .widget-mpris-player .mpris-overlay button:hover {
background: var(--hover-button);
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art {
border-radius: var(--border-radius);
box-shadow: var(--mpris-album-art-shadow);
-gtk-icon-size: var(--mpris-album-art-icon-size);
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-title {
font-weight: bold;
font-size: 1.25rem;
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-subtitle {
font-size: 1.1rem;
}
.widget-mpris .widget-mpris-player .mpris-overlay > box > button:hover {
background-color: var(--mpris-button-hover);
}

561
config/swaync/style.css.bak Normal file
View File

@@ -0,0 +1,561 @@
:root {
--cc-bg: rgba(46, 46, 46, 0.7);
--noti-border-color: rgba(255, 255, 255, 0.15);
--noti-bg: 48, 48, 48;
--noti-bg-alpha: 0.8;
--noti-bg-darker: rgb(38, 38, 38);
--noti-bg-hover: rgb(56, 56, 56);
--noti-bg-focus: rgba(68, 68, 68, 0.6);
--noti-close-bg: rgb(78, 78, 78);
--noti-close-bg-hover: rgb(94, 94, 94);
--text-color: rgb(255, 255, 255);
--text-color-disabled: rgb(150, 150, 150);
--bg-selected: rgb(0, 128, 255);
--notification-icon-size: 64px;
--notification-app-icon-size: calc(var(--notification-icon-size) / 3);
--notification-group-icon-size: 32px;
--border: 1px solid var(--noti-border-color);
--border-radius: 12px;
--notification-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3),
0 1px 3px 1px rgba(0, 0, 0, 0.7), 0 2px 6px 2px rgba(0, 0, 0, 0.3);
--font-size-body: 15px;
--font-size-summary: 16px;
/* Deprecated variables (because of their typos). Keeeping them around for backwards compatibility. */
--hover-tranistion: background 0.15s ease-in-out;
--group-collapse-tranistion: opacity 400ms ease-in-out;
--hover-transition: var(--hover-tranistion);
--group-collapse-transition: var(--group-collapse-tranistion);
}
/* Fallback for older CSS themes */
/* Fallback for older CSS themes */
@define-color cc-bg rgba(46, 46, 46, 0.7);
@define-color noti-border-color rgba(255, 255, 255, 0.15);
@define-color noti-bg rgba(48, 48, 48, 0.8);
@define-color noti-bg-opaque rgb(48, 48, 48);
@define-color noti-bg-darker rgb(38, 38, 38);
@define-color noti-bg-hover rgb(56, 56, 56);
@define-color noti-bg-hover-opaque rgb(56, 56, 56);
@define-color noti-bg-focus rgba(68, 68, 68, 0.6);
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
@define-color text-color rgb(255, 255, 255);
@define-color text-color-disabled rgb(150, 150, 150);
@define-color bg-selected rgb(0, 128, 255);
notificationwindow, blankwindow {
background: transparent;
}
.close-button {
/* The notification Close Button */
background: var(--noti-close-bg);
color: var(--text-color);
text-shadow: none;
padding: 0;
border-radius: 100%;
margin-top: 8px;
margin-right: 8px;
box-shadow: none;
border: none;
min-width: 24px;
min-height: 24px;
}
.close-button:hover {
box-shadow: none;
background: var(--noti-close-bg-hover);
transition: var(--hover-tranistion);
border: none;
}
.notification-row {
background: none;
outline: none;
}
.notification-row:focus {
background: var(--noti-bg-focus);
}
.notification-row .notification-background {
padding: 6px 12px;
}
.notification-row .notification-background .notification {
/* The actual notification */
border-radius: var(--border-radius);
border: var(--border);
padding: 0;
transition: var(--hover-tranistion);
background: rgba(var(--noti-bg), var(--noti-bg-alpha));
}
.notification-row .notification-background .notification.low {
/* Low Priority Notification */
}
.notification-row .notification-background .notification.normal {
/* Normal Priority Notification */
}
.notification-row .notification-background .notification.critical {
/* Critical Priority Notification */
}
.notification-row .notification-background .notification .notification-default-action {
/* The large action that also displays the notification summary and body */
padding: 4px;
margin: 0;
box-shadow: none;
background: transparent;
border: none;
color: var(--text-color);
transition: var(--hover-tranistion);
border-radius: var(--border-radius);
}
.notification-row .notification-background .notification .notification-default-action:hover {
-gtk-icon-filter: none;
background: var(--noti-bg-hover);
}
.notification-row .notification-background .notification .notification-default-action:not(:only-child) {
/* When alternative actions are visible */
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content {
background: transparent;
border-radius: var(--border-radius);
padding: 0;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .image {
/* Notification Primary Image */
-gtk-icon-filter: none;
-gtk-icon-size: var(--notification-icon-size);
border-radius: 100px;
/* Size in px */
margin: 4px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .app-icon {
/* Notification app icon (only visible when the primary image is set) */
-gtk-icon-filter: none;
-gtk-icon-size: var(--notification-app-icon-size);
-gtk-icon-shadow: 0 1px 4px black;
margin: 6px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box label {
/* Fixes base GTK 4 CSS setting a filter of opacity 50% for some odd reason */
filter: none;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .summary {
/* Notification summary/title */
font-size: var(--font-size-summary);
font-weight: bold;
background: transparent;
color: var(--text-color);
text-shadow: none;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .time {
/* Notification time-ago */
font-size: var(--font-size-summary);
font-weight: bold;
background: transparent;
color: var(--text-color);
text-shadow: none;
margin-right: 30px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .body {
/* Notification body */
font-size: var(--font-size-body);
font-weight: normal;
background: transparent;
color: var(--text-color);
text-shadow: none;
}
.notification-row .notification-background .notification .notification-default-action .notification-content progressbar {
/* The optional notification progress bar */
margin-top: 4px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .body-image {
/* The "extra" optional bottom notification image */
margin-top: 4px;
background-color: white;
-gtk-icon-filter: none;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply {
/* The inline reply section */
margin-top: 4px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-entry {
background: var(--noti-bg-darker);
color: var(--text-color);
caret-color: var(--text-color);
border: var(--border);
border-radius: var(--border-radius);
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button {
margin-left: 4px;
background: rgba(var(--noti-bg), var(--noti-bg-alpha));
border: var(--border);
border-radius: var(--border-radius);
color: var(--text-color);
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:disabled {
background: initial;
color: var(--text-color-disabled);
border: var(--border);
border-color: transparent;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:hover {
background: var(--noti-bg-hover);
}
.notification-row .notification-background .notification .notification-alt-actions {
background: none;
border-bottom-left-radius: var(--border-radius);
border-bottom-right-radius: var(--border-radius);
padding: 4px;
}
.notification-row .notification-background .notification .notification-action {
/* The alternative actions below the default action */
margin: 4px;
padding: 0;
}
.notification-row .notification-background .notification .notification-action > button {
border-radius: var(--border-radius);
color: var(--text-color);
}
.notification-group {
/* Styling only for Grouped Notifications */
transition: opacity 200ms ease-in-out;
/* The groups close button */
}
.notification-group:focus {
background: var(--noti-bg-focus);
}
.notification-group.low {
/* Low Priority Group */
}
.notification-group.normal {
/* Low Priority Group */
}
.notification-group.critical {
/* Low Priority Group */
}
.notification-group .notification-group-close-button .close-button {
margin: 12px 20px;
}
.notification-group .notification-group-buttons, .notification-group .notification-group-headers {
margin: 0 16px;
color: var(--text-color);
}
.notification-group .notification-group-headers {
/* Notification Group Headers */
}
.notification-group .notification-group-headers .notification-group-icon {
color: var(--text-color);
-gtk-icon-size: var(--notification-group-icon-size);
}
.notification-group .notification-group-headers .notification-group-header {
color: var(--text-color);
}
.notification-group .notification-group-buttons {
/* Notification Group Buttons */
}
.notification-group.collapsed {
/* When another group is expanded, lower the opacity of the collapsed ones */
}
.notification-group.collapsed.not-expanded {
opacity: 0.4;
}
.notification-group.collapsed .notification-row .notification {
background-color: rgba(var(--noti-bg), 1);
}
.notification-group.collapsed .notification-row:not(:last-child) {
/* Top notification in stack */
/* Set lower stacked notifications opacity to 0 */
}
.notification-group.collapsed .notification-row:not(:last-child) .notification-action,
.notification-group.collapsed .notification-row:not(:last-child) .notification-default-action {
opacity: 0;
}
.notification-group.collapsed:hover .notification-row:not(:only-child) .notification {
background-color: var(--noti-bg-hover);
}
.control-center {
/* The Control Center which contains the old notifications + widgets */
background: var(--cc-bg);
color: var(--text-color);
border-radius: var(--border-radius);
}
.control-center .control-center-list-placeholder {
/* The placeholder when there are no notifications */
opacity: 0.5;
}
.control-center .control-center-list {
/* List of notifications */
background: transparent;
}
.control-center .control-center-list .notification {
box-shadow: var(--notification-shadow);
}
.control-center .control-center-list .notification .notification-default-action,
.control-center .control-center-list .notification .notification-action {
transition: var(--group-collapse-tranistion), var(--hover-tranistion);
}
.control-center .control-center-list .notification .notification-default-action:hover,
.control-center .control-center-list .notification .notification-action:hover {
background-color: var(--noti-bg-hover);
}
.blank-window {
/* Window behind control center and on all other monitors */
background: transparent;
}
.floating-notifications {
background: transparent;
}
.floating-notifications .notification {
box-shadow: none;
}
/*** Widgets ***/
.widget {
margin: 8px;
padding: 8px;
border-radius: var(--border-radius);
}
/* Title widget */
.widget-title > label {
margin-right: 8px;
font-size: 1.5rem;
}
.widget-title > button {
margin-left: 8px;
border-radius: var(--border-radius);
}
/* DND widget */
.widget-dnd label {
color: var(--text-color);
margin-right: 8px;
font-size: 1.1rem;
}
.widget-dnd switch {
border-radius: var(--border-radius);
margin-left: 8px;
}
.widget-dnd switch slider {
border-radius: var(--border-radius);
}
/* Label widget */
.widget-label > label {
font-size: 1.1rem;
}
/* Mpris widget */
:root {
--mpris-album-art-overlay: rgba(0, 0, 0, 0.55);
--mpris-button-hover: rgba(0, 0, 0, 0.5);
--mpris-album-art-icon-size: 96px;
--mpris-album-art-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75);
}
.widget-mpris {
padding: 0;
/* The parent to all players */
}
.widget-mpris .widget-mpris-player {
margin: 16px 20px;
border-radius: var(--border-radius);
box-shadow: var(--mpris-album-art-shadow);
}
.widget-mpris .widget-mpris-player .mpris-background {
filter: blur(10px);
}
.widget-mpris .widget-mpris-player .mpris-overlay {
padding: 16px;
background-color: var(--mpris-album-art-overlay);
}
.widget-mpris .widget-mpris-player .mpris-overlay button:hover {
/* The media player buttons (play, pause, next, etc...) */
background: var(--noti-bg-hover);
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art {
border-radius: var(--border-radius);
box-shadow: var(--mpris-album-art-shadow);
-gtk-icon-size: var(--mpris-album-art-icon-size);
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-title {
font-weight: bold;
font-size: 1.25rem;
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-subtitle {
font-size: 1.1rem;
}
.widget-mpris .widget-mpris-player .mpris-overlay > box > button {
/* Change player control buttons */
}
.widget-mpris .widget-mpris-player .mpris-overlay > box > button:hover {
background-color: var(--mpris-button-hover);
}
.widget-mpris > box > button {
/* Change player side buttons */
}
.widget-mpris > box > button:disabled {
/* Change player side buttons insensitive */
}
/* Buttons widget */
.widget-buttons-grid flowboxchild > button {
border-radius: var(--border-radius);
}
.widget-buttons-grid flowboxchild > button.toggle:checked {
/* style given to the active toggle button */
}
/* Menubar widget */
.widget-menubar {
/* The revealer buttons */
/* .AnyName { Name defined in config after #
background-color: rgba(var(--noti-bg), 1.0);
padding: 8px;
margin: 8px;
border-radius: 12px;
}
.AnyName>button {
background: transparent;
border: none;
}
.AnyName>button:hover {
background-color: var(--noti-bg-hover);
} */
}
.widget-menubar > .menu-button-bar {
/* The left button container */
/* The right button container */
/* The left and right button container */
}
.widget-menubar > .menu-button-bar > .start {
margin-left: 8px;
}
.widget-menubar > .menu-button-bar > .end {
margin-right: 8px;
}
.widget-menubar > .menu-button-bar > .widget-menubar-container button {
border-radius: var(--border-radius);
margin: 0 4px;
}
.widget-menubar > revealer * {
margin-top: 8px;
}
.widget-menubar > revealer * button {
border-radius: var(--border-radius);
margin: 8px;
margin-top: 0;
}
.widget-menubar > revealer * button:last-child {
margin-bottom: 0;
}
/* Volume widget */
:root {
--widget-volume-row-icon-size: 24px;
}
/* Each row app icon */
.widget-volume row image {
-gtk-icon-size: var(--widget-volume-row-icon-size);
}
.per-app-volume {
background-color: var(--noti-bg-alt);
margin: 8px;
margin-bottom: 0;
border-radius: var(--border-radius);
}
/* Slider widget */
.widget-slider label {
font-size: inherit;
}
/* Backlight widget */
/* Inhibitors widget */
.widget-inhibitors > label {
margin-right: 8px;
font-size: 1.5rem;
}
.widget-inhibitors > button {
margin-left: 8px;
border-radius: var(--border-radius);
}

11
config/walker/config.toml Normal file
View File

@@ -0,0 +1,11 @@
theme = "catppuccin-mocha"
[placeholders]
"default" = { input = "Search", list = "No Results" }
[providers]
default = [
"desktopapplications",
"calc",
"websearch",
]

View File

@@ -0,0 +1,189 @@
/* Catppuccin Mocha */
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
* {
all: unset;
}
.normal-icons {
-gtk-icon-size: 16px;
}
.large-icons {
-gtk-icon-size: 32px;
}
scrollbar {
opacity: 0;
}
.box-wrapper {
box-shadow:
0 19px 38px rgba(0, 0, 0, 0.3),
0 15px 12px rgba(0, 0, 0, 0.22);
background: @base;
padding: 20px;
border-radius: 20px;
border: 1px solid @crust;
}
.preview-box,
.elephant-hint,
.placeholder {
color: @text;
}
.search-container {
border-radius: 10px;
background: @mantle;
padding: 8px;
}
.input placeholder {
opacity: 0.5;
}
.input selection {
background: @surface1;
}
.input {
caret-color: @text;
background: none;
padding: 10px;
color: @text;
}
.list {
color: @text;
}
.item-box {
border-radius: 10px;
padding: 10px;
}
.item-quick-activation {
background: alpha(@mauve, 0.25);
border-radius: 5px;
padding: 10px;
}
child:selected .item-box,
row:selected .item-box {
background: alpha(@surface0, 0.6);
}
.item-subtext {
font-size: 12px;
opacity: 0.5;
}
.providerlist .item-subtext {
font-size: unset;
opacity: 0.75;
}
.item-image-text {
font-size: 28px;
}
.preview {
border: 1px solid alpha(@mauve, 0.25);
border-radius: 10px;
color: @text;
}
.calc .item-text {
font-size: 24px;
}
.symbols .item-image {
font-size: 24px;
}
.todo.done .item-text-box {
opacity: 0.25;
}
.todo.urgent {
font-size: 24px;
}
.todo.active {
font-weight: bold;
}
.bluetooth.disconnected {
opacity: 0.5;
}
.preview .large-icons {
-gtk-icon-size: 64px;
}
.keybinds {
padding-top: 10px;
border-top: 1px solid @surface0;
font-size: 12px;
color: @text;
}
.keybind-button {
opacity: 0.5;
}
.keybind-button:hover {
opacity: 0.75;
}
.keybind-bind {
text-transform: lowercase;
opacity: 0.35;
}
.keybind-label {
padding: 2px 4px;
border-radius: 4px;
border: 1px solid @text;
}
.error {
padding: 10px;
background: @red;
color: @base;
}
:not(.calc).current {
font-style: italic;
}
.preview-content.archlinuxpkgs,
.preview-content.dnfpackages {
font-family: monospace;
}

View File

@@ -0,0 +1,18 @@
@define-color bg0 #1e1e2e;
@define-color bg1 #313244;
@define-color bg2 #45475a;
@define-color bg3 #585b70;
@define-color bg4 #11111b;
@define-color red #f38ba8;
@define-color orange #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color aqua #94e2d5;
@define-color blue #89b4fa;
@define-color purple #cba6f7;
@define-color fg #cdd6f4;
@define-color grey0 #6c7086;
@define-color grey1 #7f849c;
@define-color grey2 #9399b2;

144
config/waybar/config.jsonc Normal file
View File

@@ -0,0 +1,144 @@
{
"position": "top",
"margin-top": 6,
"margin-right": 6,
"margin-left": 6,
"modules-left": ["custom/arch", "custom/separator", "hyprland/window"],
"modules-center": ["hyprland/workspaces"],
"modules-right": [
"custom/cava",
"mpris",
"custom/separator",
"group/tray-drawer",
"custom/separator",
"battery",
"pulseaudio",
"network",
"custom/separator",
"clock",
],
"hyprland/window": {
"rewrite": {
"(.*) - Firefox": "$1",
"(.*) - kitty": "[$1]",
},
"separate-outputs": true,
"max-length": 30,
},
"custom/arch": {
"format": "",
"tooltip": false,
// "on-click": "sh -c 'pkill rofi || ~/.config/rofi/powermenu/type-1/powermenu.sh'",
// "on-click": "eww open --toggle powermenu",
"on-click": "wlogout -l ~/.config/wlogout/layout -s ~/.config/wlogout/style.css -b 4 -T 350 -B 350",
},
"custom/separator": {
"format": "|",
"interval": "once",
"tooltip": false,
},
"clock": {
"format": "{:%a %b %d - %I:%M %p}",
"tooltip-format": "<tt><small>{calendar}</small></tt>",
},
"hyprland/workspaces": {
"format": "{icon}",
"on-click": "activate",
"format-icons": {
"active": " ",
"default": " ",
},
"persistent-workspaces": {
"*": 6, // 5 workspaces by default on every monitor
},
"sort-by-number": true,
},
"custom/cava": {
"exec": "~/.config/waybar/scripts/waybar-cava.sh",
"format": "{}",
"tooltip": false,
},
"mpris": {
"format": "{title} - {artist}", // {player_icon} removed
"format-paused": "{title} - {artist}</i>", // {status_icon} and <i> removed
"player-icons": {
"default": "󰎆",
"spotify": "",
"firefox": "󰈹",
"mpd": "",
},
"status-icons": {
"paused": "󰏤",
},
"max-length": 23,
},
"pulseaudio": {
"format": "{icon}", // {volume}% removed
"format-bluetooth": "{volume}% {icon}",
"format-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"phone-muted": "",
"portable": "",
"car": "",
"default": ["", ""],
},
"scroll-step": 1,
"on-click": "pamixer -t",
"on-click-right": "pavucontrol",
"ignored-sinks": ["Easy Effects Sink"],
},
"network": {
"interface": "wlp44s0",
"format": "{ifname}",
"format-wifi": "",
"format-ethernet": "󰊗",
"format-disconnected": "", //An empty format will hide the module.
"tooltip-format": "{ifname} via {gwaddr} 󰊗",
"tooltip-format-wifi": "{essid} ({signalStrength}%) ",
"tooltip-format-ethernet": "{ifname} ",
"tooltip-format-disconnected": "Disconnected",
"max-length": 50,
// "on-click": "exec dms ipc call control-center open",
"on-click": "eww open --toggle control_center",
"on-click-right": "networkmanager_dmenu",
},
"battery": {
"interval": 60,
"states": {
"warning": 30,
"critical": 15,
},
"format": "{icon}", // {capacity}% removed
"format-icons": ["", "", "", "", ""],
"tooltip-format": "{capacity}% - {timeTo}",
"max-length": 25,
"on-click": "eww open --toggle control_center",
},
"group/tray-drawer": {
"orientation": "horizontal",
"drawer": {
"transition-duration": 500,
"children-class": "tray-child",
"transition-left-to-right": false,
"click-to-reveal": true
},
"modules": [
"custom/tray-icon", // This is your "toggle" button
"tray" // The actual system tray
]
},
"custom/tray-icon": {
"format": "", // Or use a '' or '󰒓' icon
"tooltip": false,
},
"tray": {
"icon-size": 21,
"spacing": 10,
},
}

View File

@@ -0,0 +1,15 @@
[general]
bars = 6
[output]
method = raw
raw_target = /dev/stdout
data_format = ascii
ascii_max_range = 7
# Remove the 'ascii_data_format = box' lines—they don't apply to raw ascii mode.
[input]
# If it stays as zeros even when music plays, try changing 'pulse' to 'pipewire'
method = pulse
source = auto

View File

@@ -0,0 +1,7 @@
#!/bin/bash
killall -9 waybar
swaync-client --reload-css
waybar &
# swaync &

View File

@@ -0,0 +1,22 @@
#!/bin/bash
# Define the bar icons (same ones in your config)
icons=(" " "·" "" "=" "≡" "≡" "≡")
killall -q cava
# We read the numbers from CAVA and swap them for icons
cava -p ~/.config/waybar/scripts/cava_config | while read -r line; do
output=""
# Loop through each digit in the output (e.g., '0', '1', '7')
for ((i = 0; i < ${#line}; i++)); do
digit="${line:$i:1}"
# If it's a number, pick the icon. Otherwise, keep it.
if [[ $digit =~ [0-7] ]]; then
output+="${icons[$digit]}"
# If it's a semicolon or anything else, just skip it
else
continue
fi
done
echo "$output"
done

147
config/waybar/style.css Normal file
View File

@@ -0,0 +1,147 @@
@import "colors/catppuccin.css";
* {
border: none;
border-radius: 0;
color: @fg;
font-family: "Adwaita Sans", "JetBrainsMono Nerd Font Propo", "sans-serif";
font-weight: bold;
min-height: 24px;
padding: 0;
margin: 0;
}
window#waybar {
background: rgba(30, 30, 46, 0.8);
border-radius: 24px;
border: 2px solid @bg3;
}
tooltip {
background: @bg0;
border: 1px solid @bg3;
border-radius: 12px;
}
tooltip label {
color: @fg;
padding: 6px;
}
#window {
margin: 0 0 0 12px;
}
#workspaces {
padding: 2px 3px 0px;
color: @fg;
}
#workspaces button {
padding: 0px 6px;
margin: 2px 6px;
color: transparent;
border-top: 3px solid @bg1;
transition: all 0.3s ease-in-out;
}
#workspaces button.active {
border-top: 3px solid @blue;
color: @bg0;
min-width: 45px;
background-size: 400% 400%;
background: transparent;
}
#workspaces button:hover {
border-top: 3px solid @purple;
color: @bg0;
min-width: 45px;
background-size: 400% 400%;
background: transparent;
}
#workspaces button.urgent {
border-top: 3px solid @red;
color: @bg0;
min-width: 45px;
background-size: 400% 400%;
background: transparent;
}
#battery,
#pulseaudio,
#backlight,
#network,
#clock,
#custom-notification,
#custom-arch,
#mpris {
padding: 0 15px;
}
#backlight {
color: @orange;
}
#mpris {
padding: 0 8px 0 0;
margin: 4px 0px;
}
#custom-cava {
all: unset;
min-height: 12px;
margin: 10px 0px;
padding: 0 8px;
color: @blue;
font-size: 10px;
}
#clock {
color: @blue;
}
#custom-notification {
color: @fg;
}
#pulseaudio {
color: @yellow;
padding: 8px;
}
#network {
color: @purple;
padding: 8px;
}
#battery {
color: @green;
padding: 8px;
}
#custom-arch {
color: #1793d1;
padding-left: 24px;
font-size: 20px;
}
#custom-separator {
color: rgba(255, 255, 255, 0.2);
margin: 0;
font-size: 14px;
font-weight: bold;
}
#custom-tray-icon {
color: #89b4fa; /* Catppuccin Blue */
padding: 0 8px;
}
#tray {
padding: 0 0 0 8px;
}

24
config/wlogout/layout Normal file
View File

@@ -0,0 +1,24 @@
{
"label" : "lock",
"action" : "hyprlock",
"text" : "Lock",
"keybind" : "l"
}
{
"label" : "logout",
"action" : "hyprctl dispatch exit",
"text" : "Logout",
"keybind" : "e"
}
{
"label" : "shutdown",
"action" : "systemctl poweroff",
"text" : "Shutdown",
"keybind" : "s"
}
{
"label" : "reboot",
"action" : "systemctl reboot",
"text" : "Reboot",
"keybind" : "r"
}

45
config/wlogout/style.css Normal file
View File

@@ -0,0 +1,45 @@
* {
background-image: none;
font-family: "Noto Sans";
font-size: 16px;
}
window {
background-color: rgba(30, 30, 46, 0.85);
}
button {
color: #cdd6f4;
background-color: #313244;
border-radius: 16px;
margin: 10px;
padding: 15px 40px;
border: 2px solid #45475a;
min-width: 120px;
min-height: 0px;
background-repeat: no-repeat;
background-position: center;
background-size: 48px;
}
button:hover {
background-color: #89b4fa;
color: #1e1e2e;
border-color: #89b4fa;
}
#lock {
background-image: url("/usr/share/wlogout/icons/lock.png");
}
#logout {
background-image: url("/usr/share/wlogout/icons/logout.png");
}
#shutdown {
background-image: url("/usr/share/wlogout/icons/shutdown.png");
}
#reboot {
background-image: url("/usr/share/wlogout/icons/reboot.png");
}

65
configuration.nix Normal file
View File

@@ -0,0 +1,65 @@
{ config, pkgs, ... }:
{
# Bootloader
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "nixos";
networking.networkmanager.enable = true;
# Note: The MT7902 WiFi driver is notorious. Your existing fix_my_wifi.sh script
# and blacklisting strategy can still work if you run it manually, but eventually,
# building it as an out-of-tree kernel module in Nix is the "proper" way.
time.timeZone = "Asia/Amman";
i18n.defaultLocale = "en_US.UTF-8";
# Hardware: Intel Microcode & Nvidia PRIME
hardware.cpu.intel.updateMicrocode = true;
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
open = true; # You were using nvidia-open-dkms
nvidiaSettings = true;
prime = {
intelBusId = "PCI:0:2:0"; # Verify with `lspci | grep VGA`
nvidiaBusId = "PCI:1:0:0"; # Verify with `lspci | grep VGA`
};
};
# System Services
services.printing.enable = true; # cups
services.blueman.enable = true;
hardware.bluetooth.enable = true;
services.coolercontrol.enable = true;
services.ollama.enable = true;
virtualisation.libvirtd.enable = true;
# Display Manager & Desktop
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
};
# Enable Hyprland at the system level to pull in XDG portals automatically
programs.hyprland.enable = true;
programs.zsh.enable = true;
# User Account
users.users.nouredeen = {
isNormalUser = true;
description = "Nouredeen";
extraGroups = [ "networkmanager" "wheel" "libvirtd" "video" "audio" ];
shell = pkgs.zsh;
};
# DO NOT CHANGE
system.stateVersion = "24.05";
}

27
flake.nix Normal file
View File

@@ -0,0 +1,27 @@
{
description = "System Flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager, ... }: {
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hardware-configuration.nix # Generated during installation
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.nouredeen = import ./home.nix;
}
];
};
};
}

106
home.nix Normal file
View File

@@ -0,0 +1,106 @@
{ config, pkgs, ... }:
{
home.username = "nouredeen";
home.homeDirectory = "/home/nouredeen";
home.packages = with pkgs; [
# Development
jetbrains.rider
jetbrains.clion
jetbrains.idea-ultimate
dotnet-sdk_8
vscode
git
# Utilities
kitty
thunar
fzf
ripgrep
bat
yazi
btop
fastfetch
# Wayland / Hyprland specific
waybar
rofi-wayland
walker
swaynotificationcenter
hyprpaper
hyprlock
hyprshot
wlogout
wl-clipboard
slurp
grim
# Apps
firefox
google-chrome
spotify
discord
obsidian
prismlauncher # Better maintained than raw minecraft-launcher in nix
];
# GTK Theming (Catppuccin Mocha)
gtk = {
enable = true;
theme = {
name = "catppuccin-mocha-mauve-standard+default";
package = pkgs.catppuccin-gtk.override {
accents = [ "mauve" ];
size = "standard";
tweaks = [ "normal" ];
variant = "mocha";
};
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
cursorTheme = {
name = "Adwaita";
size = 24;
};
};
# Zsh & Starship Setup
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
fixwifi = "sudo bash ~/mt7902_temp/fix_my_wifi.sh";
startm = "wlogout -l ~/.config/wlogout/layout -s ~/.config/wlogout/style.css -b 4 -T 350 -B 350";
zshconf = "nvim ~/.zshrc";
barconf = "nvim ~/.config/waybar/config";
ca = "cd ~/RiderProjects/ArqaamAccounting/ && clear && claude";
arq = "cd ~/RiderProjects/ArqaamAccounting/";
reload = "source ~/.zshrc && hyprctl reload && echo 'Reloaded'";
mountwin = "sudo mount -t ntfs-3g -o ro /dev/nvme0n1p3 /mnt/windows";
};
initExtra = ''
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
export EDITOR=nvim
'';
};
programs.starship.enable = true;
# Symlink your existing raw configs!
# Just place your folders in ~/nixos-config/dotfiles/
home.file = {
".config/hypr".source = ./dotfiles/hypr;
".config/waybar".source = ./dotfiles/waybar;
".config/swaync".source = ./dotfiles/swaync;
};
home.stateVersion = "24.05";
}

32
starship.toml Normal file
View File

@@ -0,0 +1,32 @@
"$schema" = "https://starship.rs/config-schema.json"
add_newline = true
scan_timeout = 100
[character]
success_symbol = "[](bold green)"
error_symbol = "[](bold red)"
[directory]
style = "bold #89B4FA"
truncation_length = 3
truncate_to_repo = true
[git_branch]
symbol = " "
style = "bold #F5C2E7"
[git_status]
style = "bold #F38BA8"
[cmd_duration]
style = "bold #F9E2AF"
min_time = 2_000
[username]
style_user = "bold #A6E3A1"
show_always = false
[hostname]
style = "bold #94E2D5"
ssh_only = true

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

BIN
wallpapers/clearing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

BIN
wallpapers/cool.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

BIN
wallpapers/disco.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
wallpapers/idk-tbh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

57
zshrc Normal file
View File

@@ -0,0 +1,57 @@
# Plugins
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# Autocomplete (if installed via yay)
source /usr/share/zsh/plugins/zsh-autocomplete/zsh-autocomplete.plugin.zsh
# History
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=~/.zsh_history
setopt HIST_IGNORE_DUPS
setopt SHARE_HISTORY
# Useful options
setopt AUTO_CD
setopt CORRECT
export EDITOR=nvim
# Prompt — handled by Starship
eval "$(starship init zsh)"
function hyprconf() {
local -A files=(
main ~/.config/hypr/hyprland.conf
binds ~/.config/hypr/binds.conf
env ~/.config/hypr/env.conf
settings ~/.config/hypr/settings.conf
rules ~/.config/hypr/windowrules.conf
autostart ~/.config/hypr/autostart.conf
monitors ~/.config/hypr/monitors.conf
workspaces ~/.config/hypr/workspaces.conf
hyprlock ~/.config/hypr/hyprlock.conf
hyprpaper ~/.config/hypr/hyprpaper.conf
)
local choice=$(printf '%s\n' ${(k)files} | sort | fzf --prompt='hypr config> ')
[ -n "$choice" ] && nvim "${files[$choice]}"
}
alias fixwifi="sudo bash ~/mt7902_temp/fix_my_wifi.sh"
alias startm="wlogout -l ~/.config/wlogout/layout -s ~/.config/wlogout/style.css -b 4 -T 350 -B 350"
alias zshconf="nvim ~/.zshrc" # renamed from bashconf
alias barconf="nvim ~/.config/waybar/config.jsonc"
alias ca="cd ~/RiderProjects/ArqaamAccounting/ && clear && claude"
bindkey "^[[1;5C" forward-word # Ctrl+Right
bindkey "^[[1;5D" backward-word # Ctrl+Left
alias reload="source ~/.zshrc && hyprctl reload && echo 'Reloaded' "
alias arq="cd ~/RiderProjects/ArqaamAccounting/"
alias ssh="TERM=xterm-256color ssh"
alias mountwin="sudo mount -t ntfs-3g -o ro /dev/nvme0n1p3 /mnt/windows"
# Created by `pipx` on 2026-06-04 11:25:25
export PATH="$PATH:/home/nouredeen/.local/bin"
. "$HOME/.local/share/../bin/env"
# opencode
export PATH=/home/nouredeen/.opencode/bin:$PATH