Add Arch Linux setup

This commit is contained in:
Marvin Elsen 2025-05-13 22:59:17 +02:00
parent c8f349589a
commit f82eb9493d
Signed by: marvinelsen
GPG Key ID: 820672408CC318C2
11 changed files with 475 additions and 8 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
.DS_Store
fish_variables

7
X/.Xresources Normal file
View File

@ -0,0 +1,7 @@
Xft.dpi: 120
Xft.autohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb

View File

@ -10,7 +10,12 @@
# :: Marvin Elsen <contact@marvinelsen.com>
# -----------------------------------------------------------------------------
brew shellenv | source
if command --query brew
brew shellenv | source
end
set fish_greeting
set EDITOR nvim
if status is-interactive
fzf --fish | source

View File

@ -12,7 +12,7 @@
# :: Marvin Elsen <contact@marvinelsen.com>
# -----------------------------------------------------------------------------
command = /opt/homebrew/bin/fish --interactive
command = fish --interactive
shell-integration = fish
theme = catppuccin-macchiato
@ -21,4 +21,4 @@ window-padding-x = 8
window-padding-y = 8
font-family = FantasqueSansM Nerd Font
font-size = 16
font-size = 12

View File

@ -0,0 +1,232 @@
monitor = HDMI-A-1, preferred, auto, 1.25
$terminal = ghostty
$fileManager = dolphin
$menu = wofi --show drun
exec-once = hyprpaper
exec-once = waybar
exec-once = xrdb -merge "$HOME/.Xresources"
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
general {
gaps_in = 16
gaps_out = 16
border_size = 4
col.active_border = rgb(5e72eb) rgb(ff9190) 45deg
col.inactive_border = rgba(595959aa)
resize_on_border = false
# https://wiki.hyprland.org/Configuring/Tearing/
allow_tearing = false
layout = master
}
xwayland {
force_zero_scaling = true
}
decoration {
rounding = 10
rounding_power = 2
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
animations {
enabled = yes, please :)
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
}
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# 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]
# https://wiki.hyprland.org/Configuring/Master-Layout/
master {
new_status = slave
orientation = left
slave_count_for_center_master = 2
always_keep_position = false
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
disable_hyprland_logo = true
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = de
kb_variant = neo_qwertz
kb_model = pc105
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
workspace_swipe = false
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, return, exec, $terminal
bind = $mainMod, Q, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
# 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
# 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
# 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
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

View File

@ -0,0 +1,3 @@
preload = /home/avocado/pic/wallpapers/wallhaven-ymxz77.png
wallpaper = , /home/avocado/pic/wallpapers/wallhaven-ymxz77.png

View File

@ -1,16 +1,16 @@
{
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
"barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" },
"catppuccin": { "branch": "main", "commit": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429" },
"catppuccin": { "branch": "main", "commit": "1bf070129c0b6f77cc23f6a2212dcdc868308c52" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "fd50977fce4d5240b910d2b816e71fb726cbbaf7" },
"gitsigns.nvim": { "branch": "main", "commit": "43b0c856ae5f32a195d83f4a27fe21d63e6c966c" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" },
"neoscroll.nvim": { "branch": "master", "commit": "f957373912e88579e26fdaea4735450ff2ef5c9c" },
"nvim-surround": { "branch": "main", "commit": "0e62500b98f4513feaaf7425c135472457ea5b7d" },
"nvim-tree.lua": { "branch": "master", "commit": "be5b788f2dc1522c73fb7afad9092331c8aebe80" },
"nvim-treesitter": { "branch": "master", "commit": "3b308861a8d7d7bfbe9be51d52e54dcfd9fe3d38" },
"nvim-web-devicons": { "branch": "master", "commit": "50b5b06bff13a9b4eab946de7c7033649a6618a1" },
"nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" },
"nvim-web-devicons": { "branch": "master", "commit": "f1420728f59843eb2ef084406b3d0201a0a0932d" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }
}

67
pkglist.txt Normal file
View File

@ -0,0 +1,67 @@
amd-ucode
base
base-devel
bat
bluez
bluez-utils
dunst
efibootmgr
eza
fd
ffmpeg
fish
fzf
ghostty
gimp
git
git-delta
grim
gst-plugin-pipewire
htop
hyprland
hyprpaper
inter-font
iwd
keepassxc
less
libpulse
linux
linux-firmware
neofetch
neovim
noto-fonts-cjk
openssh
pavucontrol
pcmanfm
pipewire
pipewire-alsa
pipewire-jack
pipewire-pulse
polkit-kde-agent
python
qt5-wayland
qt6-wayland
rsync
sddm
signal-desktop
slurp
smartmontools
spotify-launcher
starship
stow
ttf-fantasque-nerd
vivaldi
vivaldi-ffmpeg-codecs
vulkan-radeon
waybar
wget
wireless_tools
wireplumber
wl-clipboard
wofi
xdg-desktop-portal-hyprland
xdg-utils
xf86-video-amdgpu
xf86-video-ati
xorg-server
xorg-xinit

View File

@ -0,0 +1,10 @@
@define-color base #212121;
@define-color base-gradient #424242;
@define-color text #fafafa;
@define-color text-dark #a0a0a0;
@define-color green #00C853;
@define-color green-gradient #00E676;
@define-color red #B71C1C;
@define-color red-gradient #D32F2F;
@define-color blue #0091EA;
@define-color blue-gradient #00B0FF;

View File

@ -0,0 +1,52 @@
{
"layer": "top",
"position": "top",
"modules-left": ["hyprland/workspaces"],
"modules-center": ["clock#date", "clock#time"],
"modules-right": ["tray", "network", "bluetooth"],
"hyprland/workspaces": {
"format": "{name}",
"persistent-workspaces": {
"*": 5,
}
},
"bluetooth": {
"format-on": "󰂯 On",
"format-connected": "󰂱 On",
"format-off": "󰂲 Off",
"format-no-controller": "󰂲 No Controller",
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%"
},
"pulseaudio": {
"tooltip": false,
"scroll-step": 5,
"format": "{icon} {volume}%",
"format-muted": "{icon} {volume}%",
"on-click":"pactl set-sink-mute @DEFAULT_SINK@ toggle",
"format-icons": {
"default": ["", "", ""]
}
},
"network": {
"format-wifi": "󰖩 Online",
"format-ethernet": "󰛳 Online",
"format-disconnected": "󰲜 Offline",
"tooltip-format-ethernet": "{ifname}\t{ipaddr}"
},
"tray":{
"icon-size":18,
"spacing": 10,
"show-passive-items": true
},
"clock#date": {
"interval": 60,
"format": "{:%a %b %d}"
},
"clock#time": {
"interval": 60,
"format": "{:%H:%M}"
}
}

View File

@ -0,0 +1,90 @@
@import "colors.css";
* {
border: none;
font-family: "Inter SemiBold", "FantasqueSansM Nerd Font";
font-size: 1rem;
}
window#waybar {
background: transparent;
}
window#waybar.hidden {
opacity: 0.2;
}
#waybar .module {
margin-top: 8px;
margin-left: 4px;
margin-right: 4px;
padding-left: 16px;
padding-right: 16px;
padding-top: 2px;
padding-bottom: 2px;
border-radius: 24px;
background: linear-gradient(0deg, @base 0%, @base-gradient 100%);
color: @text;
}
#waybar .modules-left > *:first-child > * {
margin-left: 16px;
}
#waybar .modules-right > *:last-child > * {
margin-right: 16px;
}
#workspaces {
}
#workspaces button {
border-radius: 16px;
color: @text;
}
#workspaces button.empty {
color: @text-dark;
}
#workspaces button.visible {
}
#workspaces button.active {
color: @green;
}
#workspaces button.urgent {
color: @red;
}
#bluetooth.on,
#bluetooth.connected {
background: linear-gradient(0deg, @blue 0%, @blue-gradient 100%);
}
#bluetooth.off,
#bluetooth.disabled,
#bluetooth.no-controller {
background: linear-gradient(0deg, @red 0%, @red-gradient 100%);
}
#network.ethernet,
#network.wifi{
background: linear-gradient(0deg, @green 0%, @green-gradient 100%);
}
#network.disconnected,
#network.disabled {
padding-left: 16px;
padding-right: 22px;
background: linear-gradient(0deg, @red 0%, @red-gradient 100%);
}