Merge V2 complete

This commit is contained in:
Janis Hutz 2025-04-27 17:07:20 +02:00
parent 62789224a7
commit ce5f530ed2
9 changed files with 28 additions and 2735 deletions

View File

@ -1,4 +1,32 @@
# janishutz Hyprland
Collection of dotfiles for my personal Hyprland setup. Includes a setup and install script (that one is not complete yet though). For my neovim config, see [here](https://git.janishutz.com/janishutz/nvim)
## Features
- Astal4 based Status Bar and Quick Actions menu
- System info
- Hyprland info
- Date & Time
- Bluetooth picker
- some networking settings (more coming later)
- Audio and brightness control
- battery monitoring
- Logout, Reboot, Shutdown, etc
- Rofi config for App launcher
- Wlogout config
- Theming script that generates a GTK theme and theming for bar, Hyprland, etc
- Fish config (with some handy aliases, based on one from ohh-my-fish)
- Fastfetch config
- kitty config with cursor trail
- Linter configs (currently only eslint, which is not complete yet)
- mpv config
- zathura configs
- yazi configs with links to various directories I use commonly plus a few plugins and themes that are applied by the script
- Astal3 based Notifications (due to be migrated to Astal4)
## Installing
Clone your repo to any folder and adapt what you need. Some folders are still hard-coded, which I will be changing later on, so you will likely run into issues.
You may then run the `setup` script. That won't install all dependencies though. The `install` script is what serves that purpose, but that is not complete yet
## Setting up to develop

View File

@ -1,58 +0,0 @@
#! /bin/bash
# Copy VSCodium settings
mkdir -p ./general/configs/VSCodium/User
cp ~/.config/VSCodium/product.json ./general/configs/VSCodium/
cp -r ~/.config/VSCodium/User/snippets ./general/configs/VSCodium/User/
cp -r ~/.config/VSCodium/User/globalStorage ./general/configs/VSCodium/User/
cp ~/.config/VSCodium/User/keybindings.json ./general/configs/VSCodium/User/
cp ~/.config/VSCodium/User/settings.json ./general/configs/VSCodium/User/
cp ~/.config/VSCodium/User/syncLocalSettings.json ./general/configs/VSCodium/User/
rm -rf ./general/configs/VSCodium/User/globalStorage
rm ./pc/installedPackages.txt
pacman -Qq > ./pc/installedPackages.txt
sudo cat /etc/pacman.conf > ./general/pacman.conf
sudo cat /etc/mkinitcpio.conf > ./general/mkinitcpio.conf
sudo cat /etc/environment > ./pc/environment
sudo cat /etc/default/grub > ./pc/grub
mkdir ./general/docker
sudo cat /etc/docker/daemon.json > ./general/docker/daemon.json
cp ~/.bash_history ./general
cp ~/.bashrc ./general
# copy other config files
mkdir ./pc/configs/OpenRGB
mkdir ./pc/configs/Portmaster
cp -r ~/.config/hypr ./pc/configs/
cp -r ~/.config/waybar ./pc/configs/
mkdir ./pc/configs/rofi
cp ~/.config/rofi/config.rasi ./pc/configs/rofi/
cp -r ~/.config/OpenRGB/OpenRGB.json ./pc/configs/OpenRGB/OpenRGB.json
cp ~/.config/Portmaster/Preferences ./pc/configs/Portmaster/
cp -r ~/.config/mpv ./general/configs
cp -r ~/.config/wlogout ./general/configs/
cp -r ~/.config/fish ./general/configs/
cp -r ~/.config/dunst ./general/configs/
cp -r ~/.config/rofi ./general/configs/
cp -r ~/.config/kitty ./general/configs/
cp -r ~/.config/terminator ./general/configs/
cp -r ~/.config/Thunar ./general/configs/
cp -r ~/.config/yazi ./general/configs/
cp -r ~/.config/Kvantum/ ./general/configs/
cp -r ~/.config/lazygit/ ./general/configs/
cp -r ~/.config/zathura/ ./general/configs/
rm -rf ./pc/configs/hypr/hyprland/
cp -r ~/.config/hypr/hyprland/* ./general/hyprland/
# Get systemd mount jobs
sudo cp -r /etc/systemd/system/mnt* ./pc/mnt
sudo chmod -R 777 ./pc/mnt
vscodium --list-extensions > ./general/vscode-extensions
echo "Collected. Also consider running nvim-collect!"

View File

@ -1,137 +0,0 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 2,
"left": 1,
"right": 2,
},
},
"display": {
"separator": " ",
},
"modules": [
// Title
{
"type": "title",
"format": "{#1}╭───────────── {#}{user-name-colored}",
},
// System Information
{
"type": "custom",
"format": "{#1}│ {#}System Information",
},
{
"type": "os",
"key": "{#separator}│ {#keys}󰍹 OS",
},
{
"type": "kernel",
"key": "{#separator}│ {#keys}󰒋 Kernel",
},
{
"type": "uptime",
"key": "{#separator}│ {#keys}󰅐 Uptime",
},
{
"type": "packages",
"key": "{#separator}│ {#keys}󰏖 Packages",
"format": "{all}",
},
{
"type": "custom",
"format": "{#1}│",
},
// Desktop Environment
{
"type": "custom",
"format": "{#1}│ {#}Desktop Environment",
},
{
"type": "de",
"key": "{#separator}│ {#keys}󰧨 DE",
},
{
"type": "wm",
"key": "{#separator}│ {#keys}󱂬 WM",
},
{
"type": "wmtheme",
"key": "{#separator}│ {#keys}󰉼 Theme",
},
{
"type": "display",
"key": "{#separator}│ {#keys}󰹑 Resolution",
},
{
"type": "shell",
"key": "{#separator}│ {#keys}󰞷 Shell",
},
{
"type": "terminalfont",
"key": "{#separator}│ {#keys}󰛖 Font",
},
{
"type": "custom",
"format": "{#1}│",
},
// Hardware Information
{
"type": "custom",
"format": "{#1}│ {#}Hardware Information",
},
{
"type": "cpu",
"key": "{#separator}│ {#keys}󰻠 CPU",
},
{
"type": "gpu",
"key": "{#separator}│ {#keys}󰢮 GPU",
},
{
"type": "memory",
"key": "{#separator}│ {#keys}󰍛 Memory",
},
{
"type": "disk",
"key": "{#separator}│ {#keys}󰋊 Disk (/)",
"folders": "/",
},
{
"type": "custom",
"format": "{#1}│",
},
// Network
{
"type": "custom",
"format": "{#1}│ {#}Network",
},
{
"type": "wifi",
"key": "{#separator}│ {#keys}⮃ WiFi",
},
{
"type": "dns",
"key": "{#separator}│ {#keys}🖧 DNS",
},
{
"type": "localip",
"key": "{#separator}│ {#keys}⍰ IP",
},
{
"type": "custom",
"format": "{#1}│",
},
// Colors
{
"type": "colors",
"key": "{#separator}│",
"symbol": "circle",
},
// Footer
{
"type": "custom",
"format": "{#1}╰───────────────────────────────╯",
},
],
}

View File

@ -1,3 +0,0 @@
[filechooser]
cmd=yazi-wrapper.sh
default_dir=$HOME

View File

@ -1,3 +0,0 @@
set selection-clipboard clipboard
map D set "first-page-column 1:2"
map . nohlsearch

View File

@ -1,152 +0,0 @@
#----------#
# KEYBINDS #
#----------#
$mainMod = SUPER
# These key-binds are non-specific, laptop config has a separate file that includes
# extra config for it specifically
bind = $mainMod, Q, killactive
# bind = $mainMod SHIFT, Q, exit
bind = $mainMod, Return, exec, kitty
# bind = $mainMod, E, exec, thunar
bind = $mainMod SHIFT, E, exec, thunar
bind = $mainMod, E, exec, kitty --hold fish -c "y"
bind = $mainMod, V, togglefloating,
bind = $mainMod, F, fullscreen,
#-----#
# AGS #
#-----#
# Notifications
bind = $mainMod, N, exec, astal -i notifier toggle
bind = $mainMod, C, exec, astal -i notifier clear-newest
bind = $mainMod SHIFT, C, exec, astal -i notifier clear
bind = $mainMod SHIFT, N, exec, astal -i notifier show
bind = $mainMod CTRL SHIFT, N, exec, astal -i notifier hide
# Launch commands
bind = $mainMod SHIFT, L, exec, librewolf
bind = $mainMod SHIFT, D, exec, vesktop
bind = $mainMod SHIFT, V, exec, vscodium
bind = $mainMod SHIFT, T, exec, thunderbird
bind = $mainMod SHIFT, H, exec, heroic
bind = $mainMod SHIFT, Z, exec, zathura
bind = $mainMod SHIFT, I, exec, notify-send 'AirPlay video server starting...' --app-name="AirPlay Video" && terminator -e "systemctl start avahi-daemon && sleep 5 && uxplay -n LinuxVideoPlay -nh"
bind = $mainMod SHIFT, A, exec, notify-send 'AirPlay server starting...' --app-name="AirPlay Audio" && terminator -T "hidden-terminator" -e "systemctl start avahi-daemon && shairport-sync -a LinuxPlay"
bind = $mainMod SHIFT, G, exec, notify-send 'Preparing system for gaming...' --app-name="Util" && corectrl
bind = $mainMod SHIFT, P, exec, notify-send 'Steam is launching...' --app-name="Steam" && steam
bind = $mainMod SHIFT, R, exec, notify-send 'Launching in Remoteplay optimised session' --app-name="Steam" && steam -pipewire
bind = $mainMod CTRL, K, exec, notify-send 'Insta-Kill activated' --app-name="Hyprctl" && hyprctl kill
bind = $mainMod SHIFT, O, exec, terminator -e "~/projects/dotfiles/ai.sh"
# Screenshots
bind = $mainMod SHIFT, S, exec, grimblast --notify copy area
bind = $mainMod CTRL, S, exec, grimblast --notify copysave area
bind = $mainMod ALT, S, exec, grimblast --notify save area
bind = , PRINT, exec, grimblast --notify copy screen
bind = CTRL, PRINT, exec, grimblast --notify copysave screen
bind = SHIFT, PRINT, exec, grimblast --notify save screen
# Rofi commands
bind = $mainMod, Space, exec, killall rofi || rofi -show combi -modes combi -combi-modes "window,drun,run"
bind = $mainMod SHIFT, Space, exec, rofi -modi "Global Search":"~/.config/rofi/spotlight/rofi-spotlight.sh" -show "Global Search" -config ~/.config/rofi/spotlight/rofi.rasi
bind = $mainMod, P, exec, killall rofi || rofi -show p -modi p:rofi-power-menu -theme ~/.config/rofi/themes/power.rasi
# Logout commands
bind = $mainMod, escape, exec, wlogout
bind = $mainMod ALT CTRL, L, exec, hyprlock --immediate
#--------------#
# Layout binds #
#--------------#
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Same with vim-motions
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, j, movefocus, d
bind = $mainMod, k, movefocus, u
# Switch workspaces with mainMod + [0-9]
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
bind = $mainMod CTRL, left, workspace, e-1
bind = $mainMod CTRL, right, workspace, e+1
bind = $mainMod CTRL, h, workspace, e-1
bind = $mainMod CTRL, l, workspace, e+1
# Move active window to a workspace with mainMod + SHIFT + [0-9]
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
bind = $mainMod SHIFT, left, movetoworkspace, e-1
bind = $mainMod SHIFT, right, movetoworkspace, e+1
bind = $mainMod SHIFT, j, movetoworkspace, e-1
bind = $mainMod SHIFT, k, movetoworkspace, e+1
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Tile window to a part of the screen
# bind = $mainMod CTRL, left, movewindow, left
# bind = $mainMod CTRL, right, movewindow, right
# move to next window / previous window with ALT + Tab / SHIFT + ALT + Tab
bind = ALT SHIFT, tab, cyclenext, prev
# bind = ALT, tab, cyclenext, next
# bind = ALT CTRL, tab, focusurgentorlast
bind = ALT, tab, focusurgentorlast
# Master layout commands
bind = $mainMod CTRL, M, layoutmsg, swapwithmaster
bind = $mainMod SHIFT, A, layoutmsg, addmaster
bind = $mainMod SHIFT CTRL, right, layoutmsg, orientationnext
bind = $mainMod SHIFT CTRL, left, layoutmsg, orientationprev
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Freeze
bind = $mainMod SHIFT, escape, exec, hyprfreeze -a
# Volume control
bind = ,code:123, exec, pamixer -i 5
bind = ,code:122, exec, pamixer -d 5
bind = ,code:121, exec, pamixer -t
# Brightness-Control
bind = ,code:232, exec, light -U 5 && notify-send 'Display brightness decreased by 5%' --app-name="Brightness"
bind = ,code:233, exec, light -A 5 && notify-send 'Display brightness increased by 5%' --app-name="Brightness"
# Monitor config binds
bind = $mainMod CTRL, D, exec, hyprctl keyword monitor HDMI-A-1, 1280x720@60, 1920x0, 1, mirror, DP-1 && notify-send 'Set FPV goggles to mirror main screen' --app-name="Hyprctl"
bind = $mainMod CTRL, E, exec, hyprctl keyword monitor HDMI-A-1, 1280x720@60, 3840x0, 1 && notify-send 'Set to expand FPV goggles' --app-name="Hyprctl"

View File

@ -1,127 +0,0 @@
#-----------------------#
# LAUNCHING OF PROGRAMS #
#-----------------------#
# exec-once = dunst --startup_notification
exec-once = ags run ~/projects/active/dotfiles/config/ags/notifications/
exec-once = ~/.config/hypr/xdg-portal-hyprland
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XAUTHORITY DISPLAY
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = waybar
exec-once = hypridle
exec-once = nm-applet
exec-once = nextcloud --background
exec = hyprctl setcursor oreo_spark_blue_cursors 24
env = QT_QPA_PLATFORM,wayland
env = QT_QPA_PLATFORM_THEME,qt6ct
env = OLLAMA_HOST,0.0.0.0
#-------#
# INPUT #
#-------#
input {
kb_layout = ch
kb_options = caps:swapescape
natural_scroll = true
numlock_by_default = true
follow_mouse = 2
mouse_refocus = true
touchpad {
disable_while_typing = true
natural_scroll = true
}
focus_on_close = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = true
workspace_swipe_distance = 300
}
#----------------#
# GENERAL CONFIG #
#----------------#
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 3
gaps_out = 10
border_size = 1
col.active_border = rgba(cc5c00ff) rgba(cc5c00ff) rgba(ff0000ff) 45deg
col.inactive_border = rgba(595959aa)
layout = master
no_border_on_floating = false
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
inactive_opacity = 1
rounding = 10
shadow {
enabled = true
range = 4
color = rgba(1a1a1aee)
}
blur {
enabled = true
xray = true
new_optimizations = true
size = 1
passes = 2
}
dim_inactive = true
dim_strength = 0.1
}
animations {
enabled = yes
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = false
vrr = 2
allow_session_lock_restore = true
}
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
preserve_split = yes # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
# no_gaps_when_only = true
}
cursor {
no_warps = false
inactive_timeout = 60
}

View File

@ -1,114 +0,0 @@
#-----------------#
# WORKSPACE RULES #
#-----------------#
# Display full sized (without gaps), if only window on screen
workspace = w[tv1], gapsout:0, gapsin:0
workspace = f[1], gapsout:0, gapsin:0
windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
windowrule = rounding 0, floating:0, onworkspace:w[tv1]
windowrule = bordersize 0, floating:0, onworkspace:f[1]
windowrule = rounding 0, floating:0, onworkspace:f[1]
$mainMod = SUPER
#--------------#
# WINDOW RULES #
#--------------#
windowrule = float, title:.*(rofi).*
windowrule = animation popin, title:.*(rofi).*
windowrule = center, title:(rofi)(.*)
windowrule = move 1450 50, title:^(.*)(Power menu)$
windowrule = workspace 2, class:evince
windowrule = workspace 2, title:.*(Okular).*
windowrule = workspace 2, class:org.pwmt.zathura
windowrule = fullscreen, title:wlogout
windowrule = workspace 2, class:librewolf
windowrule = workspace 2, title:LibreWolf
windowrule = workspace 2, title:(.*)(Discord)(.*)
windowrule = workspace 3, title:^(Steam)(.*)$
windowrule = workspace 1, title:^(.*)(VSCodium)$
windowrule = center, title:^(.*)(VSCodium)$
windowrule = workspace 3, class:minecraft-launcher
windowrule = tile, class:minecraft-launcher
windowrule = fullscreen, title:^(.*)(Minecraft)(.*)$
windowrule = workspace 3, title:^(.*)(Minecraft)(.*)$
windowrule = workspace 1, title:^(.*)hidden-terminator*(.*)$
windowrule = size 0 0, title:^(.*)hidden-terminator*(.*)$
windowrule = move 0 0, title:^(.*)hidden-terminator*(.*)$
windowrule = float, title:^(.*)hidden-terminator*(.*)$
# Set rule for yazi filepicker
windowrule = float, title:^(.*)termfilechooser*(.*)$
windowrule = size 1400 800, title:^(.*)termfilechooser*(.*)$
windowrule = center, title:^(.*)termfilechooser*(.*)$
# Set floating windows & position them centered
windowrule = float, class:file_progress
windowrule = center, class:file_progress
windowrule = float, class:confirm
windowrule = center, class:confirm
windowrule = float, class:dialog
windowrule = center, class:dialog
windowrule = float, class:download
windowrule = center, class:download
windowrule = float, class:notification
windowrule = center, class:notification
windowrule = float, class:error
windowrule = center, class:error
windowrule = float, class:splash
windowrule = center, class:splash
windowrule = float, class:confirmreset
windowrule = center, class:confirmreset
windowrule = float, title:Open File
windowrule = center, title:Open File
windowrule = float, title:branchdialog
windowrule = center, title:branchdialog
windowrule = float, class:Lxappearance
windowrule = center, class:Lxappearance
windowrule = float, title:^(Media viewer)$
windowrule = center, title:^(Media viewer)$
windowrule = float, title:^(Volume Control)$
windowrule = center, title:^(Volume Control)$
windowrule = float, title:^(Picture-in-Picture)$
windowrule = center, title:^(Picture-in-Picture)$
windowrule = float, title:^(File Operation Progress)$
windowrule = center, title:^(File Operation Progress)$
windowrule = float, title:^(Loading)(.*)$
windowrule = center, title:^(Loading)(.*)$
windowrule = float, class:pavucontrol-qt
windowrule = center, class:pavucontrol-qt
windowrule = float, class:pavucontrol
windowrule = center, class:pavucontrol
windowrule = float, class:file-roller
windowrule = center, class:file-roller
windowrule = idleinhibit focus, title:^(Rocket League)(.*)$
windowrule = fullscreen, title:^(Steam Big Picture)$
windowrule = idleinhibit always, class:steam
windowrule = idleinhibit always, class:lutris
windowrule = idleinhibit focus, class:vlc
windowrule = idleinhibit focus, class:supertuxkart
windowrule = idleinhibit fullscreen, title:^(.*)(Discord)(.*)$
windowrule = idleinhibit fullscreen, title:^(.*)(~)(.*)$
windowrule = idleinhibit focus, title:^(.*)(~)(.*)$
windowrule = idleinhibit focus, title:^(.*)(LibreWolf)(.*)$

File diff suppressed because it is too large Load Diff