Compare commits

...

4 commits

34 changed files with 669 additions and 738 deletions

View file

@ -0,0 +1,3 @@
active_color = "rgba(de3c3cff)"
inactive_color = "rgba(595959aa)"

View file

@ -10,12 +10,16 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "~/.config/fastfetch/logo.png",
"source": "~/.config/fastfetch/logo.txt",
"type": "auto",
"height": 20,
"padding": {
"top": 1
}
},
"color": {
// Apparently sets the logo to white
"1": "1"
}
},
"display": {
"separator": " ➜ "

View file

@ -0,0 +1,21 @@
######## #######
######## ########
######## ### ########
######## ###### ########
######## ######## ########
######## ######### ########
######## ########## # ########
######## ############ ### ########
######## ################ ########
##################################
##################################
############## #################
############ ### ############
########### # ###########
########## ##########
######## ########
####### #######
###### ######

View file

@ -5,7 +5,7 @@
[colors-dark]
# alpha = 0.9
background= 0d1117
background= 060c11
foreground= c9d1d9
#: black

View file

@ -2,10 +2,10 @@
LocationMode=path-bar
ShowHidden=false
ShowSizeColumn=true
GeometryX=1183
GeometryY=269
GeometryWidth=537
GeometryHeight=542
GeometryX=-1
GeometryY=-1
GeometryWidth=-1
GeometryHeight=-1
SortColumn=name
SortOrder=ascending
StartupMode=recent

View file

@ -1,6 +1,5 @@
theme = "github_dark"
# theme = "adwaita-light"
[editor]
line-number = "relative"

View file

@ -8,3 +8,10 @@ auto-format = true
name="cpp"
indent = { tab-width=1, unit=" "}
auto-format = true
[[language]]
name="zig"
auto-format = false
# [language-server.zls]
# command = "$HOME/.local/bin/zls"

View file

@ -1,276 +0,0 @@
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
source = ~/.config/hypr/config/colors.conf
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 1
gaps_out = 1
border_size = 1
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = $active_color
col.inactive_border = $inactive_color
# Resizing windows by clicking and dragging on borders and gaps
resize_on_border = true
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 6
passes = 4
vibrancy = 0.1696
}
}
# Layer rules
layerrule {
name = side-panel
blur = on
ignore_alpha = 0.2
animation = slide right
dim_around = on
match:namespace = ^(swaync-control-center)$
}
layerrule {
name = launcher
blur = off
animation = popin 90%
match:namespace = ^(rofi)$
}
layerrule {
name = status-bar
blur = off
animation = slide up
match:namespace = ^(waybar)$
}
layerrule {
name = screenshot-selection
blur = off
animation = fade
match:namespace = ^(selection)$
}
## Old
# layerrule = blur, swaync-control-center
# layerrule = blur, swaync-notification-window
# layerrule = ignorezero, swaync-control-center
# layerrule = ignorezero, swaync-notification-window
# layerrule = ignorealpha 0.5, swaync-control-center
# layerrule = ignorealpha 0.5, swaync-notification-window
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# See https://wiki.hyprland.org/Configuring/Animations/ for more
# Bezier curves
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
bezier = easeInOutExpo,0.87,0,0.13,1
# Animations
animation = global, 1, 10, default
animation = border, 1, 4, easeOutQuint
animation = windows, 1, 3.79, easeOutQuint
animation = windowsIn, 1, 3.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, 3, easeOutQuint, popin 85%
animation = layersOut, 1, 3, linear, popin
# animation = fadeLayersIn, 1, 1.79, almostLinear
# animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 2.2 , easeOutQuint, slidefadevert
animation = workspacesIn, 1, 3, easeOutQuint, slide
animation = workspacesOut, 1, 3, easeOutQuint, slide
# animation = workspacesIn, 1, 3, easeOutQuint, slidefade
# animation = workspacesOut, 1, 5, easeOutQuint, slidefade
}
# 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
# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
# windowrulev2 = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
disable_splash_rendering = true # Disable default wallpapers rendering
vfr = true # Lower sent frames when idle
}
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Ignore maximize requests from apps. You'll probably like this.
windowrule {
name = suppress-maximize-events
suppress_event = maximize
match:class = .*
}
# Fix some dragging issues with XWayland
windowrule {
name = fix-xwayland-drags
match:class = ^$
match:title = ^$
match:xwayland = true
match:float = true
match:fullscreen = false
match:pin = false
no_focus = true
}
# Albert
windowrule {
name = albert
border_size = 0
no_blur = on
no_shadow = on
float = on
stay_focused = on
no_dim = on
match:class = ^(albert)$
}
# Prism Launcher
windowrule {
name = prismlauncher-all
pseudo = on
match:class = (org.prismlauncher.PrismLauncher)
}
windowrule {
name = prismlauncher-main
size = (monitor_w*0.65) (monitor_h*0.7)
match:class = (org.prismlauncher.PrismLauncher)
match:title = ^(Prism Launcher .*)$
}
# Nautilus
windowrule {
name = nautilus-main
pseudo = on
size = (monitor_w*0.65) (monitor_h*0.7)
match:class = (org.gnome.Nautilus) # initialTitle:^(Loading…)$
}
# GTK file picker
windowrule {
name = gtk-file-picker
float = on
size = (monitor_w*0.65) (monitor_h*0.7)
match:class = (xdg-desktop-portal-gtk)
}
# Vivado
## Loading screen
windowrule {
name = vivado-loading-screen
float = on
center = on
match:class = (ui-PlanAhead)
}
windowrule {
name = vivado-loading-screen-2
size = 397 295
match:class = (ui-PlanAhead) title:^(win0)$
}
## Main window
windowrule {
name = vivado-main
tile = on
match:class = (Vivado)
}
# Kdenlive
windowrule {
name = kdenlive-all
pseudo = on
match:class = (org.kde.kdenlive)
}
windowrule {
name = kdenlive-welcome
size = (512) (544)
match:class = (org.kde.kdenlive) # initialTitle:^(Kdenlive)$
}
# TODO Automatically fullscreen single apps
# - Seems impossible for now (try mixing with workspace rules)
# Default size for floating windows
## TODO
#windowrulev2 = size 100 100,floating:1
# Increase gaps for single apps
## Usless since I changed the default gap but may be useful if you decide to reset it to 0
#workspace=w[t1], gapsout:2

View file

@ -0,0 +1,303 @@
local colors = require("config/colors")
hl.config({
general = {
gaps_in = 1,
gaps_out = 1,
border_size = 1,
-- Resizing windows by clicking and dragging on borders and gaps
resize_on_border = true,
allow_tearing = false,
layout = "dwindle",
col = {
active_border = active_color,
inactive_border = inactive_color,
},
},
})
hl.config({
decoration = {
rounding = 2,
-- Change transparency of focused and unfocused windows
active_opacity = 1.0,
inactive_opacity = 1.0,
shadow = {
enabled = true,
range = 4,
render_power = 3,
color = "rgba(1a1a1aee)",
},
blur = {
enabled = true,
size = 6,
passes = 4,
vibrancy = 0.1696,
},
},
})
-- Layer rules
hl.layer_rule({
match = {
namespace = "^(swaync-control-center)$",
},
blur = true,
ignore_alpha = 0.2,
animation = "slide right",
dim_around = true,
})
hl.layer_rule({
match = {
namespace = "^(rofi)$",
},
blur = false,
animation = "popin 90%",
})
hl.layer_rule({
match = {
namespace = "^(waybar)$",
},
blur = false,
animation = "slide up",
})
hl.layer_rule({
match = {
namespace = "^(selection)$",
},
blur = false,
animation = "fade",
})
hl.layer_rule({
match = {
namespace = "^(hyprpicker)$",
},
blur = false,
animation = "fade",
})
-------------------
---- ANIMATIONS ---
-------------------
hl.config({
animations = {
enabled = true,
},
})
-- Bezier curves
hl.curve( "easeOutQuint", { type = "bezier", points = { {0.23, 1}, { 0.32,1} } })
hl.curve( "easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, { 0.36,1} } })
hl.curve( "linear", { type = "bezier", points = { {0, 0}, { 0, 1 } } })
hl.curve( "almostLinear", { type = "bezier", points = { {0.5, 0.5}, { 0.75, 1.0} } })
hl.curve( "quick", { type = "bezier", points = { {0.15, 0}, { 0.1, 1} } })
hl.curve( "easeInOutExpo", { type = "bezier", points = { {0.87, 0}, { 0.13, 1} } })
hl.animation({ leaf="global", enabled=true, speed=10, bezier="default" })
hl.animation({ leaf="border", enabled=true, speed=4, bezier="easeOutQuint" })
hl.animation({ leaf="windows", enabled=true, speed=3.5, bezier="easeOutQuint" })
hl.animation({ leaf="windowsIn", enabled=true, speed=3.1, bezier="easeOutQuint", style="popin 87%" })
hl.animation({ leaf="windowsOut", enabled=true, speed=1.49, bezier="linear", style="popin 87%" })
hl.animation({ leaf="fadeIn", enabled=true, speed=1.73, bezier="easeOutQuint" })
hl.animation({ leaf="fadeOut", enabled=true, speed=1.46, bezier="easeOutQuint" })
hl.animation({ leaf="fade", enabled=true, speed=3.03, bezier="easeOutQuint" })
hl.animation({ leaf="layers", enabled=true, speed=3, bezier="easeOutQuint" })
hl.animation({ leaf="layersIn", enabled=true, speed=2.4, bezier="easeOutQuint", style="fade" })
hl.animation({ leaf="layersOut", enabled=true, speed=2.4, bezier="easeOutQuint", style="fade" })
hl.animation({ leaf="fadeLayersIn", enabled=true, speed=2, bezier="easeOutQuint" })
hl.animation({ leaf="fadeLayersOut", enabled=true, speed=2, bezier="easeOutQuint" })
hl.animation({ leaf="workspaces", enabled=true, speed=2.8, bezier="easeOutQuint", style="slidefadevert" })
hl.animation({ leaf="workspacesIn", enabled=true, speed=2.6, bezier="easeOutQuint", style="slide" })
hl.animation({ leaf="workspacesOut", enabled=true, speed=2.6, bezier="easeOutQuint", style="slide" })
-- Layouts
-- Dwindle
hl.config({
dwindle = {
preserve_split = true,
-- You probably want this
},
})
-- Master
hl.config({
master = {
new_status = "master",
},
})
-- Misc
hl.config({
misc = {
force_default_wallpaper = 0, -- Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true, -- If true disables the random hyprland logo / anime girl background. :(
disable_splash_rendering = true, -- Disable default wallpapers rendering
},
})
-------------------------------
---- WINDOWS AND WORKSPACES ---
-------------------------------
-- Ignore maximize requests from apps. You'll probably like this.
hl.window_rule({
name = "suppress-maximize-events",
match = { class = ".*" },
suppress_event = "maximize",
})
-- Fix some dragging issues with XWayland
hl.window_rule({
-- Fix some dragging issues with XWayland
name = "fix-xwayland-drags",
match = {
class = "^$",
title = "^$",
xwayland = true,
float = true,
fullscreen = false,
pin = false,
},
no_focus = true,
})
-- Prism Launcher
hl.window_rule({
name = "prismlauncher-all",
match = {
class = "(org.prismlauncher.PrismLauncher)",
},
pseudo = true,
})
hl.window_rule({
name = "prismlauncher-main",
match = {
class = "(org.prismlauncher.PrismLauncher)",
title = "^(Prism Launcher.*)$",
},
size = { "(monitor_w*0.65)", "(monitor_h*0.7)" },
})
-- Nautilus
hl.window_rule({
name = "nautilus-main",
match = {
class = "(org.gnome.Nautilus)",
},
pseudo = true,
size = { "(monitor_w*0.65)", "(monitor_h*0.7)" },
})
-- GTK file picker
hl.window_rule({
name = "gtk-file-picker",
match = {
class = "(xdg-desktop-portal-gtk)",
},
float = true,
size = { "(monitor_w*0.65)", "(monitor_h*0.7)" },
})
-- Vivado
--# Loading screen
hl.window_rule({
name = "vivado-loading-screen",
match = {
class = "(ui-PlanAhead)",
},
float = true,
center = true,
})
hl.window_rule({
name = "vivado-loading-screen-2",
match = {
class = "(ui-PlanAhead) title:^(win0)$",
},
size = { 397, 295 },
})
--# Main window
hl.window_rule({
name = "vivado-main",
match = {
class = "(Vivado)",
},
tile = true,
})
-- Kdenlive
hl.window_rule({
name = "kdenlive-all",
match = {
class = "(org.kde.kdenlive)",
},
pseudo = true,
})
hl.window_rule({
name = "kdenlive-welcome",
match = {
class = "(org.kde.kdenlive)",
},
size = { "(512)", "(544)" },
})
-- Gnome characters
hl.window_rule({
name = "gnome-characters",
match = {
class = "(org.gnome.Characters)",
},
float = true,
size = { "(849)", "(566)" },
})
-- Albert
hl.window_rule({
name = "albert",
match = {
class = "^(albert)$",
},
border_size = 0,
no_blur = true,
no_shadow = true,
float = true,
stay_focused = true,
no_dim = true,
})
-- Legacy disabled code
-- Mullvad VPN
-- hl.window_rule({
-- name = "mullvad-vpn",
-- float = "on",
-- size = (320) (568),
-- # move = "{ (monitor_w - window_w - 4), (monitor_h - window_h - 4) }",
-- match:class = (Mullvad VPN),
-- })
-- TODO Automatically fullscreen single apps
-- - Seems impossible for now (try mixing with workspace rules)
-- Default size for floating windows
--# TODO
--windowrulev2 = size 100 100,floating:1
-- Increase gaps for single apps
--# Usless since I changed the default gap but may be useful if you decide to reset it to 0
--workspace=w[t1], gapsout:2

View file

@ -1 +0,0 @@
../../colors/hyprland.conf

View file

@ -0,0 +1 @@
../../colors/hyprland.lua

View file

@ -1,71 +0,0 @@
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = foot
#$fileManager = cosmic-files
$fileManager = nautilus
# $menu = albert toggle
$menu = rofi -show drun
$notificationManager = swaync-client -t
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
exec-once = ~/.config/hypr/scripts/autostart.sh
# Or execute your favorite apps at launch like this:
# exec-once = firefox
# Testing clipboard managers
exec-once = wl-paste --type text --watch cliphist store # Stores only text data
exec-once = wl-paste --type image --watch cliphist store # Stores only image data
# SSH Agent
# exec-once = ssh-agent
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
# HyprCursor
env = HYPRCURSOR_THEME,VolantesCursors
env = XCURSOR_THEME,VolantesCursors
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
# XDG Desktop Portal
env = XDG_SESSION_DESKTOP,Hyprland
env = XDG_CURRENT_DESKTOP,Hyprland
# Experimental
# GTK
# env = GTK_USE_PORTAL,1
# env = GDK_SCALE,2 # Xwayland scale
# Qt
# env = QT_WAYLAND_DISABLE_WINDOWDECORATION,
# Firefox
# env = MOZ_ENABLE_WAYLAND,1
# env = MOZ_USE_XINPUT2,1
# WLRoots
# env = WLR_NO_HARDWARE_CURSORS,1
# env = WLR_RENDERER,vulkan
# SDL
# env = SDL_VIDEODRIVER,wayland
# Nvidia
# GBM backend
# env = GBM_BACKEND,nvidia-drm
# env = __GLX_VENDOR_LIBRARY_NAME,nvidia
# Hardware acceleration
# env = LIBVA_DRIVER_NAME,nvidia
# env = NVD_BACKEND,direct

View file

@ -0,0 +1,78 @@
-----------------
---- PROGRAMS ---
-----------------
terminal = "foot"
fileManager = "nautilus"
menu = "rofi -show drun"
notificationManager = "swaync-client -t"
------------------
---- AUTOSTART ---
------------------
-- Autostart necessary processes (like notifications daemons, status bars, etc.)
hl.on("hyprland.start", function()
hl.exec_cmd("~/.config/hypr/scripts/autostart.sh")
-- Testing clipboard managers
hl.exec_cmd("wl-paste --type text --watch cliphist store") -- Stores only text data
hl.exec_cmd("wl-paste --type image --watch cliphist store") -- Stores only image data
-- SSH Agent
hl.exec_cmd("ssh-agent")
end)
--------------------
---- PERMISSIONS ---
--------------------
-- Please note permission changes here require a Hyprland restart and are not applied on-the-fly
-- for security reasons
hl.config({
ecosystem = {
enforce_permissions = true,
},
})
------------------------------
---- ENVIRONMENT VARIABLES ---
------------------------------
-- HyprCursor
hl.env("HYPRCURSOR_THEME", "VolantesCursors")
hl.env("XCURSOR_THEME", "VolantesCursors")
hl.env("XCURSOR_SIZE", 24)
hl.env("HYPRCURSOR_SIZE", 24)
-- XDG Desktop Portal
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
-- Experimental
-- GTK
-- env = GTK_USE_PORTAL,1
-- env = GDK_SCALE,2 - Xwayland scale
-- Qt
-- env = QT_WAYLAND_DISABLE_WINDOWDECORATION,
-- Firefox
-- env = MOZ_ENABLE_WAYLAND,1
-- env = MOZ_USE_XINPUT2,1
-- WLRoots
-- env = WLR_NO_HARDWARE_CURSORS,1
-- env = WLR_RENDERER,vulkan
-- SDL
-- env = SDL_VIDEODRIVER,wayland
-- env = QT_QPA_PLATFORMTHEME,hyprqt6engine
hl.env("QT_QPA_PLATFORMTHEME", "qt6ct")
-- Nvidia
-- GBM backend
-- env = GBM_BACKEND,nvidia-drm
-- env = __GLX_VENDOR_LIBRARY_NAME,nvidia
-- Hardware acceleration
-- env = LIBVA_DRIVER_NAME,nvidia
-- env = NVD_BACKEND,direct

View file

@ -1,163 +0,0 @@
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
numlock_by_default = true
follow_mouse = 1
sensitivity = 0.1 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = true
disable_while_typing = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gesture = 3, horizontal, workspace
# 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
# Main desktop controls
bind = $mainMod, Q, killactive,
bind = $mainMod, R, exec, $menu # Omnibar
bind = $mainMod, D, exec, $menu # Legacy menu shortcut
bind = $mainMod, L, exec, hyprlock # Lockscreen
bind = $mainMod, B, exec, ~/.config/hypr/scripts/toggle-waybar.sh # Toggle sidebar
bind = $mainMod SHIFT, R, exec, ~/.config/hypr/scripts/reload.sh # Reload desktop
bind = $mainMod, F11, exec, ~/.config/hypr/scripts/gamemode.sh # Gamemode
bind = $mainMod, F10, exec, ~/.config/hypr/scripts/sharp_mode.sh # Sharp mode
bind = $mainMod SHIFT, M, exit, # Exit desktop session
# Shortcuts
bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, X, exec, $terminal # Absolutely not because I dislocated my arm
bind = $mainMod, SPACE, exec, $menu
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, A, exec, $notificationManager
bindel = , XF86Launch1, exec, $terminal hx ~/.config/hypr/config # Replace by default editor
# 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
# Move windows with mainMod + shift + arrow keys
bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d
# Layout
bind = $mainMod, F, fullscreen,
bind = $mainMod, V, togglesplit, # Horizontal/vertical split
bind = $mainMod, T, togglefloating,
bind = $mainMod, H, pseudo, # Toggle pseudo-tiling
# 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
# Minimize function (uses scratchpad)
# For testing, may be removed in future releases
bind = $mainMod, N, togglespecialworkspace, magic
bind = $mainMod, N, movetoworkspace, +0
bind = $mainMod, N, togglespecialworkspace, magic
bind = $mainMod, N, movetoworkspace, special:magic
bind = $mainMod, N, togglespecialworkspace, 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
# Function keys
## Volume
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
## Brightness
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 5%-
bindel = SHIFT, XF86MonBrightnessUp, exec, brightnessctl s 1%+
bindel = SHIFT, XF86MonBrightnessDown, exec, brightnessctl s 1%-
## Player controls
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
## Screenshot
bind = , Print, exec, ~/.config/hypr/scripts/screenshot.sh
bind = SHIFT, Print, exec, ~/.config/hypr/scripts/screenshot.sh --fullscreen
# Color picker
bind = $mainMod SHIFT, C, exec, hyprpicker -a
## Touchpad toggle
### On galaxy books, pressing the disable touchpad key also triggers SUPER and
### CONTROL keys, this is why there are present here
bind = SUPER CONTROL, XF86TouchpadToggle, exec, ~/.config/hypr/scripts/toggle-touchpad.sh
## Keyboard layout toggle
### Only works between AZERTY and QWERTY because of differences in the numbers row
### that prevent using the default way provided by hyprland
bind = $mainMod CONTROL, SPACE, exec, ~/.config/hypr/scripts/change-kb-layout.sh
# Lock laptop on lid close
bindl=,switch:off:Lid Switch, exec, hyprlock --immediate
## Testing
#bind = $mainMod, TAB, overview:toggle, toggle

View file

@ -0,0 +1,139 @@
--------------
---- INPUT ---
--------------
hl.config({
input = {
numlock_by_default = true,
follow_mouse = 1,
sensitivity = 0.1, -- -1.0 - 1.0, 0 means no modification.
touchpad = {
natural_scroll = true,
disable_while_typing = false,
},
},
})
-- Gestures
hl.gesture({
fingers = 3,
direction = "horizontal",
action = "workspace",
})
--------------------
---- KEYBINDINGS ---
--------------------
mainMod = "SUPER" -- Sets META ("Windows") key as main modifier
-- Main desktop controls
hl.bind(mainMod .. " + Q" , hl.dsp.window.close())
hl.bind(mainMod .. " + R" , hl.dsp.exec_cmd(menu)) -- Omnibar
hl.bind(mainMod .. " + D" , hl.dsp.exec_cmd(menu)) -- Legacy menu shortcut
hl.bind(mainMod .. " + I" , hl.dsp.exec_cmd("hyprlock")) -- Lockscreen
hl.bind(mainMod .. " + B" , hl.dsp.exec_cmd("~/.config/hypr/scripts/toggle-waybar.sh")) -- Toggle sidebar
hl.bind(mainMod .. " + SHIFT + R", hl.dsp.exec_cmd("~/.config/hypr/scripts/reload.sh")) -- Reload desktop
hl.bind(mainMod .. " + F11" , hl.dsp.exec_cmd("~/.config/hypr/scripts/gamemode.sh")) -- Gamemode
hl.bind(mainMod .. " + F10" , hl.dsp.exec_cmd("~/.config/hypr/scripts/sharp_mode.sh")) -- Sharp mode
hl.bind(mainMod .. " + SHIFT + M", hl.dsp.exit()) -- Exit desktop session
-- Shortcuts
hl.bind(mainMod .. " + RETURN", hl.dsp.exec_cmd(terminal))
hl.bind(mainMod .. " + X" , hl.dsp.exec_cmd(terminal)) -- Absolutely not because I dislocated my arm
hl.bind(mainMod .. " + SPACE" , hl.dsp.exec_cmd(menu))
hl.bind(mainMod .. " + E" , hl.dsp.exec_cmd(fileManager))
hl.bind(mainMod .. " + A" , hl.dsp.exec_cmd(notificationManager))
-- TODO Replace by default editor
hl.bind("XF86Launch1" , hl.dsp.exec_cmd(terminal .. " hx ~/.config/hypr/config"))
-- Move focus with mainMod + arrow keys
hl.bind(mainMod .. " + left" , hl.dsp.focus({ direction = "left" }))
hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" }))
hl.bind(mainMod .. " + up" , hl.dsp.focus({ direction = "up" }))
hl.bind(mainMod .. " + down" , hl.dsp.focus({ direction = "down" }))
-- Move focus with mainMod + hjkl (vim keybinds)
hl.bind(mainMod .. " + H", hl.dsp.focus({ direction = "left" }))
hl.bind(mainMod .. " + L", hl.dsp.focus({ direction = "right" }))
hl.bind(mainMod .. " + K", hl.dsp.focus({ direction = "up" }))
hl.bind(mainMod .. " + J", hl.dsp.focus({ direction = "down" }))
-- Move windows with mainMod + shift + arrow keys
hl.bind(mainMod .. " + SHIFT + left" , hl.dsp.window.move{ direction = "left" })
hl.bind(mainMod .. " + SHIFT + right", hl.dsp.window.move{ direction = "right" })
hl.bind(mainMod .. " + SHIFT + up" , hl.dsp.window.move{ direction = "up" })
hl.bind(mainMod .. " + SHIFT + down" , hl.dsp.window.move{ direction = "down" })
-- Layout
hl.bind(mainMod .. " + " .. "F", hl.dsp.window.fullscreen())
hl.bind(mainMod .. " + " .. "V", hl.dsp.layout("togglesplit"))
-- Horizontal/vertical split
hl.bind(mainMod .. " + " .. "T", hl.dsp.window.float())
hl.bind(mainMod .. " + " .. "Y", hl.dsp.window.pseudo()) -- Toggle pseudo-tiling
-- Switch workspaces with mainMod + [0-9]
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
for i = 0, 10 do
key = i % 10
hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i}))
hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
end
-- Example special workspace (scratchpad)
hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic"))
hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
-- TODO
-- Minimize function (uses scratchpad)
-- Scroll through existing workspaces with mainMod + scroll
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
hl.bind(mainMod .. " + mouse_up" , hl.dsp.focus({ workspace = "e-1" }))
-- Move/resize windows with mainMod + LMB/RMB and dragging
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
-- Function keys
--- Volume
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true })
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true })
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true })
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true })
--- Brightness
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl s 5%+"), { locked = true })
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl s 5%-"), { locked = true })
hl.bind("SHIFT" .. " + XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl s 1%+"), { locked = true })
hl.bind("SHIFT" .. " + XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl s 1%-"), { locked = true })
--- Player controls
hl.bind("XF86AudioNext" , hl.dsp.exec_cmd("playerctl next") , { locked = true })
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
hl.bind("XF86AudioPlay" , hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
hl.bind("XF86AudioPrev" , hl.dsp.exec_cmd("playerctl previous") , { locked = true })
--- Screenshot
hl.bind("Print", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot.sh"))
hl.bind("SHIFT" .. " + " .. "Print", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot.sh --fullscreen"))
-- Color picker
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "C", hl.dsp.exec_cmd("hyprpicker -a"))
--- Touchpad toggle
hl.bind("XF86TouchpadToggle", hl.dsp.exec_cmd("~/.config/hypr/scripts/toggle-touchpad.sh"), { locked = true })
---- On galaxy books, pressing the disable touchpad key also triggers SUPER and
---- CONTROL keys, this is why there are present here
hl.bind("SUPER + CONTROL" .. " + " .. "XF86TouchpadToggle", hl.dsp.exec_cmd("~/.config/hypr/scripts/toggle-touchpad.sh"))
--- Keyboard layout toggle
---- Only works between AZERTY and QWERTY because of differences in the numbers row
---- that prevent using the default way provided by hyprland
hl.bind(mainMod .. " + " .. "CONTROL" .. " + " .. "SPACE", hl.dsp.exec_cmd("~/.config/hypr/scripts/change-kb-layout.sh"))
-- Lock laptop on lid close
hl.bind("switch:off:Lid Switch", hl.dsp.exec_cmd("hyprlock --immediate"), { locked = true })

View file

@ -1,35 +0,0 @@
## Overrides inputs for AZERTY layout
input {
kb_layout = fr
kb_variant =
kb_model =
kb_options =
kb_rules =
}
## Keybindings
## Switch workspaces with mainMod + [0-9]
bind = $mainMod, ampersand, workspace, 1
bind = $mainMod, eacute, workspace, 2
bind = $mainMod, quotedbl, workspace, 3
bind = $mainMod, apostrophe, workspace, 4
bind = $mainMod, parenleft, workspace, 5
bind = $mainMod, minus, workspace, 6
bind = $mainMod, egrave, workspace, 7
bind = $mainMod, underscore, workspace, 8
bind = $mainMod, ccedilla, workspace, 9
bind = $mainMod, agrave, workspace, 10
## Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, ampersand, movetoworkspace, 1
bind = $mainMod SHIFT, eacute, movetoworkspace, 2
bind = $mainMod SHIFT, quotedbl, movetoworkspace, 3
bind = $mainMod SHIFT, apostrophe, movetoworkspace, 4
bind = $mainMod SHIFT, parenleft, movetoworkspace, 5
bind = $mainMod SHIFT, minus, movetoworkspace, 6
bind = $mainMod SHIFT, egrave, movetoworkspace, 7
bind = $mainMod SHIFT, underscore, movetoworkspace, 8
bind = $mainMod SHIFT, ccedilla, movetoworkspace, 9
bind = $mainMod SHIFT, agrave, movetoworkspace, 10

View file

@ -0,0 +1,18 @@
--# Overrides inputs for AZERTY layout
hl.config({
input = {
kb_layout = "fr",
},
})
--# Keybindings
-- Switch workspaces with mainMod + [0-9]
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
local fr_digits_layout = [ "ampersand", "eacute", "quotedbl", "apostrophe", "parenleft", "minus", "egrave", "underscore", "ccedilla", "agrave", ]
for i = 0, 10 do
key = fr_digits_layout[i%10]
hl.bind(mainMod.. " + " .. key, hl.dsp.focus({ workspace = i }))
hl.bind(mainMod.. " + SHIFT + " .. key, hl.dsp.focus({ workspace = i }))
end

View file

@ -1,33 +0,0 @@
## Overrides inputs for QWERTY layout
input {
kb_layout = fr
kb_variant = us
kb_model =
kb_options =
kb_rules =
}
# 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

View file

@ -0,0 +1,8 @@
hl.config({
input = {
kb_layout = "fr",
kb_variant = "us",
},
})
-- No need to update the default input layout

View file

@ -1,20 +0,0 @@
# Mod config file to make the desktop more minimalist
general {
gaps_in = 0
gaps_out = 0
}
decoration {
rounding = 0
shadow {
enabled = false
}
}
animations {
enabled = false
}

View file

@ -1,10 +0,0 @@
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,auto
monitor=eDP-1,preferred,0x0,1 # Laptop screen
monitor=DP-1, preferred, 0x-1080, 1 # HP Home monitor
monitor=DP-2, preferred, 0x-1080, 1 # HP Home monitor
monitor=HDMI-A-1, preferred, 0x-1440, 1 # Dell monitor

View file

@ -1,21 +0,0 @@
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
# All screens
monitorv2 {
output =
mode = preferred
position = auto-up
scale = auto
}
# Laptop screen
monitorv2 {
output = eDP-1
mode = preferred
position = auto-down
scale = 1
}

View file

@ -0,0 +1,15 @@
-- All screens
hl.monitor({
output = "",
mode = "preferred",
position = "auto-up",
scale = "auto",
})
-- Laptop screen
hl.monitor({
output = "eDP-1",
mode = "preferred",
position = "auto-down",
scale = "1",
})

View file

@ -1,23 +0,0 @@
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
# Laptop screen
monitorv2 {
output = eDP-1
mode = preferred
position = 0x0
scale = 1
}
# Other monitors (mirror laptop screen)
monitorv2 {
output = *
mode = preferred
position = auto
scale = 1
mirror = eDP-1
}

View file

@ -0,0 +1,16 @@
-- Laptop screen
hl.monitor({
output = "eDP-1",
mode = "preferred",
position = "auto",
scale = 1,
})
hl.monitor = {
output = "*",
mode = "preferred",
position = "auto",
scale = "1",
mirror = "eDP-1",
}

View file

@ -1,4 +0,0 @@
# Generated by nwg-displays on 2025-10-12 at 12:32:09. Do not edit manually.
monitor=eDP-1,1920x1080@60.0,4126x1440,1.0
monitor=DP-1,2560x1440@59.95,1920x0,1.0

View file

@ -1,42 +0,0 @@
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
# Default
monitorv2 {
output =
mode = preferred
position = auto-up
scale = auto
}
# Laptop screen
monitorv2 {
output = eDP-1
mode = preferred
position = auto-down
scale = 1
# supports_wide_color = 1
# supports_hdr = 1
# bitdepth = 10
}
# HP home monitor
monitorv2 {
output = DP-*
mode = preferred
position = auto-up
scale = 1
}
# Dell monitor
monitorv2 {
output = HDMI-A-1
mode = preferred
position = auto-up
scale = 1
}

View file

@ -0,0 +1,35 @@
-- Default
hl.monitor({
output = "",
mode = "preferred",
position = "auto-up",
scale = "auto",
})
-- Laptop screen
hl.monitor({
output = "eDP-1",
mode = "preferred",
position = "auto-down",
scale = 1,
-- supports_wide_color = 1
-- supports_hdr = 1
-- bitdepth = 10
})
-- HP home monitor
hl.monitor({
output = "DP-*",
mode = "preferred",
position = "auto-up",
scale = 1,
})
-- Dell monitor
hl.monitor({
output = "HDMI-A-1",
mode = "preferred",
position = "auto-up",
scale = 1,
})

View file

@ -1,12 +0,0 @@
# Plugins settings
plugin {
overview {
# disableGestures = true
reverseSwipe = true
overrideGaps = false
gapsIn = 10
gapsOut = 20
}
}

View file

@ -1,14 +0,0 @@
# Config is based on the example Hyprland config file provided on the project's repo.
# Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# source = ~/.config/hypr/config/monitors/default.conf
source = ~/.config/hypr/config/monitors/perso.conf
source = ~/.config/hypr/config/environment.conf
source = ~/.config/hypr/config/input.conf
source = ~/.config/hypr/config/kb_layouts/us.conf
source = ~/.config/hypr/config/appearance.conf
source = ~/.config/hypr/config/plugins.conf

View file

@ -0,0 +1,5 @@
require("config.monitors.perso")
require("config.environment")
require("config.input")
require("config.kb_layouts.us")
require("config.appearance")

View file

@ -25,12 +25,12 @@ general {
input-field {
monitor =
size = 320, 55
outline_thickness = -1
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = rgba(200, 200, 200, 0.4)
inner_color = rgba(100, 114, 125, 1)
inner_color = rgba(100, 114, 125, 0)
font_color = rgb(200, 200, 200)
fade_on_empty = false
font_family = DejaVu Sans

View file

@ -146,7 +146,10 @@
// Makes battery like if 85% was the maximum capacity (100%).
// Useful for people that limit charge up to a certain percentage but like having real percentage
"exec": "echo $(( $(cat /sys/class/power_supply/BAT*/capacity) * 100 / 85 ))%",
// "exec": "echo $(( $(cat /sys/class/power_supply/BAT*/capacity) * 100 / 85 ))%",
// nvm
"exec": "echo $(cat /sys/class/power_supply/BAT*/capacity)%",
"interval": 10,
"tooltip": false
},

5
.zshrc
View file

@ -96,6 +96,7 @@ alias vm='quickemu --vm *.conf'
alias paclist="pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'"
alias devinit="devbox init && echo 'use devbox' > .envrc && direnv allow"
alias gbk="git add -A && git commit -m 'Backup'"
alias ..="cd .."
# Power management
alias pprof='cat /sys/firmware/acpi/platform_profile' # Get current performance profile
@ -104,9 +105,9 @@ alias power-draw="cat /sys/class/power_supply/BAT1/current_now /sys/class/power_
alias battery='cat /sys/class/power_supply/BAT1/capacity'
# Override some default commands with more practical alternatives
# Note: default ls command is still accessible with '\ls'
alias ls='eza --icons=automatic --tree --level=1 --follow-symlinks --no-quotes '
alias ls='eza --icons=auto --tree --level=1 --follow-symlinks --no-quotes --sort=modified'
alias lsa='ls -a'
alias lsl='eza --icons=automatic --long --header --group -M'
alias lsl='eza --icons=auto --long --header --group -M --sort=modified'
alias tree='ls --level=3'
alias glo='git log --graph --oneline --all --decorate'
# Random stuff