diff --git a/.config/hypr/.luarc.json b/.config/hypr/.luarc.json new file mode 100644 index 0000000..b4ecec0 --- /dev/null +++ b/.config/hypr/.luarc.json @@ -0,0 +1,7 @@ +{ + "workspace": { + "library": [ + "/usr/share/hypr/stubs" + ] + } +} diff --git a/.config/hypr/hyprbinds.lua b/.config/hypr/hyprbinds.lua new file mode 100644 index 0000000..ed8764e --- /dev/null +++ b/.config/hypr/hyprbinds.lua @@ -0,0 +1,135 @@ +hl.define_submap('disableOtherKeyBinds', function () + hl.bind('SUPER + ESCAPE', hl.dsp.submap('reset')) +end) + +hl.bind('SUPER + F', hl.dsp.submap('disableOtherKeyBinds')) + + +-- Application Binds +hl.bind('ALT + T', hl.dsp.exec_cmd('kitty')) +hl.bind('ALT + E', hl.dsp.exec_cmd('nautilus')) +hl.bind('ALT + F', hl.dsp.exec_cmd('librewolf')) +hl.bind('ALT + V', hl.dsp.exec_cmd('code')) +hl.bind('ALT + Z', hl.dsp.exec_cmd('zeditor')) +hl.bind('ALT + M', hl.dsp.exec_cmd('prismlauncher')) +hl.bind('ALT + D', hl.dsp.exec_cmd('discord')) +hl.bind('ALT + W', hl.dsp.exec_cmd('flatpak run com.rtosta.zapzap')) +hl.bind('SUPER + SUPER_L', hl.dsp.exec_cmd('rofi -show drun -sort -matching fuzzy')) +hl.bind('SUPER + N', hl.dsp.exec_cmd('swaync-client -t -sw')) + +-- Fullscreen +hl.bind('F11', hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'toggle' })) +hl.bind('SUPER + F11', hl.dsp.window.fullscreen({ mode = 'maximized', action = 'toggle' })) + +-- Hyprlock +hl.bind('SUPER + CTRL + L', hl.dsp.exec_cmd('~/dotfiles/scripts/currentWallpaperHyprlock.sh')) + +-- Waybar +hl.bind('SUPER + R', hl.dsp.exec_cmd('~/dotfiles/scripts/reloadwaybar')) +hl.bind('SUPER + CTRL + R', hl.dsp.exec_cmd('killall waybar')) + +-- Screenshots +hl.bind('PRINT', hl.dsp.exec_cmd('grim -g "$(slurp)" - | wl-copy')) +hl.bind('SUPER + PRINT', hl.dsp.exec_cmd('grim - | wl-copy')) +hl.bind('CTRL + PRINT', hl.dsp.exec_cmd('grim -g "$(slurp)"')) +hl.bind('CTRL + SUPER + PRINT', hl.dsp.exec_cmd('grim')) + +-- Clipboard +hl.bind('SUPER + SHIFT + V', hl.dsp.exec_cmd('kitty --class clipse -e clipse')) + +-- Password Manager +hl.bind('SUPER + SHIFT + P', hl.dsp.exec_cmd('rofi-rbw')) + +-- Color Picker +hl.bind('ALT + P', hl.dsp.exec_cmd('hyprpicker --format=hex -a')) + +-- Audio Controls +hl.bind('code:123', hl.dsp.exec_cmd('wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+'), { repeating = true, locked = true }) +hl.bind('code:122', hl.dsp.exec_cmd('wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-'), { repeating = true, locked = true }) +hl.bind('code:121', hl.dsp.exec_cmd('wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'), { repeating = true, locked = true }) + +-- Brightness Controls +hl.bind('code:233', hl.dsp.exec_cmd('brightnessctl s 1%+ && echo true > /home/rafayahmad/dotfiles/.config/eww/brightnessShow'), { repeating = true, locked = true }) +hl.bind('code:232', hl.dsp.exec_cmd('brightnessctl s 1%- && echo true > /home/rafayahmad/dotfiles/.config/eww/brightnessShow'), { repeating = true, locked = true }) + + +-- Window movement +hl.bind('SUPER + V', hl.dsp.window.float({ action = 'toggle' })) +hl.bind('SUPER + H', hl.dsp.layout('togglesplit')) +hl.bind('SUPER + C', hl.dsp.window.center()) +hl.bind('CTRL + Q', hl.dsp.window.close()) +hl.bind('ALT + TAB', hl.dsp.window.cycle_next()) +hl.bind('SUPER + TAB', hl.dsp.window.swap({ next = true })) + +-- Resize windows +hl.bind('ALT + L', hl.dsp.window.resize({ x = 50, y = 0, relative = true }), { repeating = true }) +hl.bind('ALT + J', hl.dsp.window.resize({ x = -50, y = 0, relative = true }), { repeating = true }) +hl.bind('ALT + I', hl.dsp.window.resize({ x = 0, y = 50, relative = true }), { repeating = true }) +hl.bind('ALT + K', hl.dsp.window.resize({ x = 0, y = -50, relative = true }), { repeating = true }) + +-- Move focus +hl.bind('CTRL + ALT + L', hl.dsp.focus({ direction = 'right' })) +hl.bind('CTRL + ALT + J', hl.dsp.focus({ direction = 'left' })) +hl.bind('CTRL + ALT + I', hl.dsp.focus({ direction = 'up' })) +hl.bind('CTRL + ALT + K', hl.dsp.focus({ direction = 'down' })) + +-- Move windows in tile +hl.bind('SUPER + L', hl.dsp.window.move({ direction = 'right' })) +hl.bind('SUPER + J', hl.dsp.window.move({ direction = 'left' })) +hl.bind('SUPER + I', hl.dsp.window.move({ direction = 'up' })) +hl.bind('SUPER + K', hl.dsp.window.move({ direction = 'down' })) + +-- Switch workspaces with mainMod + [0-9] +hl.bind('SUPER + 1', hl.dsp.focus({ workspace = 1 })) +hl.bind('SUPER + 2', hl.dsp.focus({ workspace = 2 })) +hl.bind('SUPER + 3', hl.dsp.focus({ workspace = 3 })) +hl.bind('SUPER + Q', hl.dsp.focus({ workspace = 4 })) +hl.bind('SUPER + W', hl.dsp.focus({ workspace = 5 })) +hl.bind('SUPER + E', hl.dsp.focus({ workspace = 6 })) +hl.bind('SUPER + A', hl.dsp.focus({ workspace = 7 })) +hl.bind('SUPER + S', hl.dsp.focus({ workspace = 8 })) +hl.bind('SUPER + D', hl.dsp.focus({ workspace = 9 })) +hl.bind('SUPER + 0', hl.dsp.focus({ workspace = 10 })) +hl.bind('ALT + 1', hl.dsp.workspace.toggle_special('fluffychat')) +hl.bind('ALT + 2', hl.dsp.workspace.toggle_special('thunderbird')) + +-- Move active window to a workspace and switch with mainMod + SHIFT + [0-9] +hl.bind('SUPER + SHIFT + 1', hl.dsp.window.move({ workspace = 1 })) +hl.bind('SUPER + SHIFT + 2', hl.dsp.window.move({ workspace = 2 })) +hl.bind('SUPER + SHIFT + 3', hl.dsp.window.move({ workspace = 3 })) +hl.bind('SUPER + SHIFT + Q', hl.dsp.window.move({ workspace = 4 })) +hl.bind('SUPER + SHIFT + W', hl.dsp.window.move({ workspace = 5 })) +hl.bind('SUPER + SHIFT + E', hl.dsp.window.move({ workspace = 6 })) +hl.bind('SUPER + SHIFT + A', hl.dsp.window.move({ workspace = 7 })) +hl.bind('SUPER + SHIFT + S', hl.dsp.window.move({ workspace = 8 })) +hl.bind('SUPER + SHIFT + D', hl.dsp.window.move({ workspace = 9 })) +hl.bind('SUPER + SHIFT + 0', hl.dsp.window.move({ workspace = 10 })) +hl.bind('ALT + SHIFT + 1', hl.dsp.window.move({ workspace = 'special:fluffychat' })) +hl.bind('ALT + SHIFT + 2', hl.dsp.window.move({ workspace = 'special:thunderbird' })) + +-- Move active window to a workspace with mainMod + SHIFT + [0-9] +hl.bind('SUPER + CTRL + 1', hl.dsp.window.move({ workspace = 1, follow = false })) +hl.bind('SUPER + CTRL + 2', hl.dsp.window.move({ workspace = 2, follow = false })) +hl.bind('SUPER + CTRL + 3', hl.dsp.window.move({ workspace = 3, follow = false })) +hl.bind('SUPER + CTRL + Q', hl.dsp.window.move({ workspace = 4, follow = false })) +hl.bind('SUPER + CTRL + W', hl.dsp.window.move({ workspace = 5, follow = false })) +hl.bind('SUPER + CTRL + E', hl.dsp.window.move({ workspace = 6, follow = false })) +hl.bind('SUPER + CTRL + A', hl.dsp.window.move({ workspace = 7, follow = false })) +hl.bind('SUPER + CTRL + S', hl.dsp.window.move({ workspace = 8, follow = false })) +hl.bind('SUPER + CTRL + D', hl.dsp.window.move({ workspace = 9, follow = false })) +hl.bind('SUPER + CTRL + 0', hl.dsp.window.move({ workspace = 10, follow = false })) +hl.bind('ALT + CTRL + 1', hl.dsp.window.move({ workspace = 'special:fluffychat', follow = false })) +hl.bind('ALT + CTRL + 2', hl.dsp.window.move({ workspace = 'special:thunderbird', follow = false })) + +-- Scroll through existing workspaces with mainMod + scroll +hl.bind('SUPER + mouse_down', hl.dsp.focus({ workspace = 'e-1' })) +hl.bind('SUPER + mouse_up', hl.dsp.focus({ workspace = 'e+1' })) + +-- Move/resize windows with mainMod + LMB/RMB and dragging +hl.bind('SUPER + mouse:272', hl.dsp.window.drag(), { mouse = true }) +hl.bind('ALT + mouse:272', hl.dsp.window.resize(), { mouse = true }) + +-- Shutdown/Reboot +hl.bind('SUPER + M', hl.dsp.exit) +hl.bind('CTRL + ALT + Z', hl.dsp.exec_cmd('reboot')) +hl.bind('CTRL + ALT + X', hl.dsp.exec_cmd('shutdown now')) diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index 8a05dd4..6f36ecd 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -12,10 +12,10 @@ monitor=HDMI-A-1,1920x1080@60,0x0,1,mirror,eDP-1 # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch +exec-once = systemctl --user start hyprland-session.target exec-once = hypridle exec-once = waybar exec-once = clipse -listen -exec-once = swaync exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = eww daemon @@ -38,7 +38,7 @@ $menu = ~/Stuff/scripts/rofiFocus.sh env = XCURSOR_SIZE,24 env = XCURSOR_THEME,mytheme env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that -env = GTK_THEME, Adwaita-dark +env = GTK_THEME,Adwaita-dark # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { @@ -109,7 +109,7 @@ animations { dwindle { # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more - pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + # pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = yes # you probably want this } diff --git a/.config/hypr/hyprland.lua b/.config/hypr/hyprland.lua new file mode 100644 index 0000000..f94feb3 --- /dev/null +++ b/.config/hypr/hyprland.lua @@ -0,0 +1,153 @@ +hl.monitor({ + output = 'eDP-1', + mode = '1920x1080@60', + position = '0x0', + scale = 1, +}) + +hl.monitor({ + output = 'HDMI-A-1', + mode = '1920x1080@60', + position = '0x0', + scale = 1, + mirror = 'eDP-1', +}) + +hl.on('hyprland.start', function () + hl.exec_cmd("systemctl --user start hyprland-session.target") + + hl.exec_cmd('hypridle') + hl.exec_cmd('hyprpaper') + hl.exec_cmd('waybar') + hl.exec_cmd('clipse -listen') + hl.exec_cmd('/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1') + hl.exec_cmd('eww daemon') + + hl.exec_cmd('/home/rafayahmad/dotfiles/scripts/brightnessWidget.sh') + hl.exec_cmd('~/dotfiles/scripts/battWarning.sh') + hl.exec_cmd('~/dotfiles/scripts/youtubeBlocker.sh') + + hl.exec_cmd('GTK_CSD=0 /opt/fluffychat/fluffychat', { workspace = 'special:fluffychat' }) + hl.exec_cmd('thunderbird', { workspace = 'special:thunderbird' }) +end) + +hl.on('hyprland.shutdown', function () + os.execute("systemctl --user stop hyprland-session.target && sleep 0.1") +end) + +require('hyprbinds') + +hl.env('XCURSOR_SIZE', 24) +hl.env('XCURSOR_THEME', 'mytheme') +hl.env('QT_QPA_PLATFORMTHEME', 'qt5ct') +hl.env('GTK_THEME', 'Adwaita-dark') + +hl.config({ + input = { + kb_file = '/home/rafayahmad/.config/hypr/pauseMod3.xkb', + numlock_by_default = true, + + follow_mouse = 1, + + sensitivity = 0.25, -- -1.0 - 1.0, 0 means no modification. + repeat_rate = 30, + repeat_delay = 200, + + touchpad = { + natural_scroll = true, + } + }, + + general = { + gaps_in = 5, + gaps_out = 10, + border_size = 2, + + col = { + active_border = { + colors = { + 'rgba(33ccffee)', + 'rgba(00ff99ee)', + }, + angle = 45, + }, + inactive_border = 'rgba(595959aa)', + }, + + layout = 'dwindle', + }, + + decoration = { + rounding = 10, + inactive_opacity = 0.8, + blur = { + enabled = true, + size = 4, + passes = 2, + ignore_opacity=true, + } + }, + + animations = { + enabled = true, + }, + + dwindle = { + preserve_split = true, + }, + + misc = { + force_default_wallpaper = 0, + enable_anr_dialog = false, + } +}) + + +-- Animations + +hl.curve('myBezier', { type = 'bezier', points = { {0.05, 0.9}, {0.1, 1.05} } }) + +hl.animation({ leaf = 'windows', enabled = true, speed = 7, bezier = 'myBezier'}) +hl.animation({ leaf = 'windowsOut', enabled = true, speed = 7, bezier = 'default', style = 'popin 80%'}) +hl.animation({ leaf = 'border', enabled = true, speed = 10, bezier = 'default'}) +hl.animation({ leaf = 'borderangle', enabled = true, speed = 8, bezier = 'default'}) +hl.animation({ leaf = 'fade', enabled = true, speed = 7, bezier = 'default'}) +hl.animation({ leaf = 'workspaces', enabled = true, speed = 6, bezier = 'default'}) +hl.animation({ leaf = 'specialWorkspace', enabled = true, speed = 7, bezier = 'myBezier', style = 'slidefadevert'}) + +-- Gestures + +hl.gesture({ + fingers = 3, + direction = 'horizontal', + action = 'workspace', +}) + +-- Window Rules + +hl.window_rule({ + name = 'clipse menu', + match = { + class = 'clipse' + }, + float = true, + size = {700, 600}, +}) + +hl.window_rule({ + name = 'file picker', + match = { + class = '^(xdg-desktop-portal-gtk|gtk3-filechooser-dialog)$', + }, + float = true, + size = {900, 600}, +}) + +hl.window_rule({ + name = 'calculator', + match = { + class = 'org.gnome.Calculator', + }, + float = true, + size = {500, 700}, +})