Compare commits
12 Commits
203a97ff21
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 0d71726eca | |||
| 1bb979d7d3 | |||
| 1321ace4a0 | |||
| 1ba1c7625f | |||
| cbe2f91b38 | |||
| 7b8b85aea8 | |||
| 6e9f9457b6 | |||
| d80c6b2d2f | |||
| f218d9b26c | |||
| a70e965e2c | |||
| e158eaa82d | |||
| 07ef77d086 |
41
.config/Code - Insiders/User/settings.json
Normal file
41
.config/Code - Insiders/User/settings.json
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"window.autoDetectColorScheme": true,
|
||||||
|
"workbench.preferredLightColorTheme": "Abyss",
|
||||||
|
"workbench.iconTheme": "material-icon-theme",
|
||||||
|
"workbench.colorCustomizations": {
|
||||||
|
/* Hintergrundfarben (Tiefes Wald-Lila) */
|
||||||
|
"editor.background": "#191024",
|
||||||
|
"sideBar.background": "#191024",
|
||||||
|
"activityBar.background": "#191024",
|
||||||
|
"titleBar.activeBackground": "#191024",
|
||||||
|
"terminal.background": "#191024",
|
||||||
|
|
||||||
|
/* Textfarben (Warmes Weiß) */
|
||||||
|
"editor.foreground": "#fce8e1",
|
||||||
|
"titleBar.activeForeground": "#fce8e1",
|
||||||
|
"sideBar.foreground": "#fce8e1",
|
||||||
|
|
||||||
|
/* Akzente & Rahmen (Dunkles Magenta & Sonnen-Orange) */
|
||||||
|
"sideBar.border": "#3b1d3d",
|
||||||
|
"editorGroup.border": "#3b1d3d",
|
||||||
|
"activityBar.foreground": "#ff7b3b",
|
||||||
|
"activityBarBadge.background": "#e0274a",
|
||||||
|
|
||||||
|
/* Tabs (Wie in Firefox) */
|
||||||
|
"tab.activeBackground": "#3b1d3d",
|
||||||
|
"tab.inactiveBackground": "#191024",
|
||||||
|
"tab.activeBorderTop": "#ff7b3b",
|
||||||
|
"tab.activeForeground": "#ffffff",
|
||||||
|
"tab.inactiveForeground": "#fce8e1",
|
||||||
|
|
||||||
|
/* Statusleiste unten */
|
||||||
|
"statusBar.background": "#3b1d3d",
|
||||||
|
"statusBar.foreground": "#fce8e1",
|
||||||
|
"statusBar.border": "#ff7b3b",
|
||||||
|
|
||||||
|
/* Ausgewählte Dateien/Listen (Pink/Rot aus den Wolken) */
|
||||||
|
"list.activeSelectionBackground": "#e0274a",
|
||||||
|
"list.activeSelectionForeground": "#ffffff",
|
||||||
|
"list.hoverBackground": "#3b1d3d"
|
||||||
|
}
|
||||||
|
}
|
||||||
71
.config/dunst/dunstrc
Normal file
71
.config/dunst/dunstrc
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
[global]
|
||||||
|
### Anzeige & Geometrie ###
|
||||||
|
monitor = 1
|
||||||
|
follow = none
|
||||||
|
width = 300
|
||||||
|
height = (0, 300)
|
||||||
|
origin = top-right
|
||||||
|
offset = (15, 15)
|
||||||
|
scale = 0
|
||||||
|
notification_limit = 5
|
||||||
|
|
||||||
|
### Design & Abstände ###
|
||||||
|
font = Fira Code 11
|
||||||
|
corner_radius = 12
|
||||||
|
frame_width = 2
|
||||||
|
gap_size = 5
|
||||||
|
padding = 12
|
||||||
|
horizontal_padding = 12
|
||||||
|
text_icon_padding = 10
|
||||||
|
separator_height = 2
|
||||||
|
separator_color = frame
|
||||||
|
|
||||||
|
### Fortschrittsbalken (für Lautstärke/Helligkeit) ###
|
||||||
|
progress_bar = true
|
||||||
|
progress_bar_height = 8
|
||||||
|
progress_bar_frame_width = 0
|
||||||
|
progress_bar_min_width = 150
|
||||||
|
progress_bar_max_width = 300
|
||||||
|
progress_bar_corner_radius = 4
|
||||||
|
|
||||||
|
### Text ###
|
||||||
|
markup = full
|
||||||
|
format = "<b>%s</b>\n%b"
|
||||||
|
alignment = left
|
||||||
|
vertical_alignment = center
|
||||||
|
show_indicators = no
|
||||||
|
word_wrap = yes
|
||||||
|
|
||||||
|
### Icons ###
|
||||||
|
enable_recursive_icon_lookup = true
|
||||||
|
icon_theme = "Papirus-Dark" # Falls du ein anderes Icon-Theme nutzt, hier eintragen
|
||||||
|
icon_position = left
|
||||||
|
min_icon_size = 32
|
||||||
|
max_icon_size = 64
|
||||||
|
|
||||||
|
### Wayland / Hyprland ###
|
||||||
|
layer = top
|
||||||
|
force_xwayland = false
|
||||||
|
|
||||||
|
### FARBEN - WATCH TOWER SUNSET THEME ###
|
||||||
|
|
||||||
|
[urgency_low]
|
||||||
|
# Unwichtige Meldungen (z.B. Spotify Songwechsel)
|
||||||
|
background = "#191024" # Tiefes Wald-Lila
|
||||||
|
foreground = "#fce8e1" # Warmes Weiß
|
||||||
|
frame_color = "#3b1d3d" # Dunkles Magenta (sehr dezent)
|
||||||
|
timeout = 5
|
||||||
|
|
||||||
|
[urgency_normal]
|
||||||
|
# Normale Meldungen (z.B. Chat-Nachrichten)
|
||||||
|
background = "#191024"
|
||||||
|
foreground = "#fce8e1"
|
||||||
|
frame_color = "#ff7b3b" # Leuchtendes Sonnen-Orange als Rahmen
|
||||||
|
timeout = 10
|
||||||
|
|
||||||
|
[urgency_critical]
|
||||||
|
# Kritische Meldungen (z.B. Akku fast leer)
|
||||||
|
background = "#191024"
|
||||||
|
foreground = "#ffffff" # Reines Weiß für maximalen Kontrast
|
||||||
|
frame_color = "#e0274a" # Warnendes Pink/Rot aus den Wolken
|
||||||
|
timeout = 0 # 0 = Bleibt stehen, bis du klickst
|
||||||
@@ -22,7 +22,24 @@
|
|||||||
################
|
################
|
||||||
|
|
||||||
# See https://wiki.hypr.land/Configuring/Monitors/
|
# See https://wiki.hypr.land/Configuring/Monitors/
|
||||||
monitor=,preferred,auto,auto
|
monitor=DP-1, 2560x1440@144, 0x0, 1
|
||||||
|
monitor=DP-2, 1920x1200@60, 2560x0, 1
|
||||||
|
|
||||||
|
|
||||||
|
##################
|
||||||
|
### GPU NVIDIA ###
|
||||||
|
##################
|
||||||
|
|
||||||
|
env = NVD_BACKEND,direct
|
||||||
|
env = LIBVA_DRIVER_NAME,nvidia
|
||||||
|
env = XDG_SESSION_TYPE,wayland
|
||||||
|
env = GBM_BACKEND,nvidia-drm
|
||||||
|
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||||
|
|
||||||
|
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||||
|
env = XDG_SESSION_TYPE,wayland
|
||||||
|
env = XDG_SESSION_DESKTOP,Hyprland
|
||||||
|
env = QT_QPA_PLATFORMTHEME,hyprqt6engine
|
||||||
|
|
||||||
|
|
||||||
###################
|
###################
|
||||||
@@ -48,6 +65,7 @@ exec-once = $terminal
|
|||||||
exec-once = waybar
|
exec-once = waybar
|
||||||
exec-once = hyprpaper
|
exec-once = hyprpaper
|
||||||
exec-once = hypridle
|
exec-once = hypridle
|
||||||
|
exec-once = pass-secret-service
|
||||||
# exec-once = $terminal
|
# exec-once = $terminal
|
||||||
# exec-once = nm-applet &
|
# exec-once = nm-applet &
|
||||||
# exec-once = waybar & hyprpaper & firefox
|
# exec-once = waybar & hyprpaper & firefox
|
||||||
@@ -89,12 +107,12 @@ env = HYPRCURSOR_SIZE,24
|
|||||||
# https://wiki.hypr.land/Configuring/Variables/#general
|
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||||
general {
|
general {
|
||||||
gaps_in = 5
|
gaps_in = 5
|
||||||
gaps_out = 20
|
gaps_out = 10
|
||||||
|
|
||||||
border_size = 2
|
border_size = 2
|
||||||
|
|
||||||
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
col.active_border = rgba(ff7b3bee) rgba(e0274aee) 45deg
|
||||||
col.inactive_border = rgba(595959aa)
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||||
@@ -188,6 +206,28 @@ animations {
|
|||||||
# rounding = 0
|
# rounding = 0
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
# --- Workspaces an Monitore binden ---
|
||||||
|
|
||||||
|
# Ungerade Workspaces auf den linken Monitor (DP-1)
|
||||||
|
workspace = 1, monitor:DP-1
|
||||||
|
workspace = 3, monitor:DP-1
|
||||||
|
workspace = 5, monitor:DP-1
|
||||||
|
workspace = 7, monitor:DP-1
|
||||||
|
workspace = 9, monitor:DP-1
|
||||||
|
|
||||||
|
# Gerade Workspaces auf den rechten Monitor (DP-2)
|
||||||
|
workspace = 2, monitor:DP-2
|
||||||
|
workspace = 4, monitor:DP-2
|
||||||
|
workspace = 6, monitor:DP-2
|
||||||
|
workspace = 8, monitor:DP-2
|
||||||
|
workspace = 10, monitor:DP-2
|
||||||
|
|
||||||
|
# Discord immer auf Workspace 2
|
||||||
|
windowrule = workspace 2, match:class ^(discord)$
|
||||||
|
# Steam immer auf Workspace 5
|
||||||
|
windowrule = workspace 5, match:class ^(steam)$, match:title ^(Steam)$
|
||||||
|
|
||||||
|
|
||||||
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||||
dwindle {
|
dwindle {
|
||||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
@@ -293,8 +333,16 @@ bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
# Example special workspace (scratchpad)
|
# Example special workspace (scratchpad)
|
||||||
bind = $mainMod, S, togglespecialworkspace, magic
|
bind = $mainMod, A, togglespecialworkspace, magic
|
||||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
bind = $mainMod SHIFT, A, movetoworkspace, special:magic
|
||||||
|
|
||||||
|
# --- Screenshots ---
|
||||||
|
# 1. Bereich auswählen -> Direkt in die Zwischenablage kopieren (wie Shift+Win+S)
|
||||||
|
bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" - | wl-copy
|
||||||
|
# 2. Bereich auswählen -> Im Editor (Swappy) öffnen (für Pfeile, Text, Speichern)
|
||||||
|
bind = , Print, exec, grim -g "$(slurp)" - | swappy -f -
|
||||||
|
# 3. Den kompletten Bildschirm sofort fotografieren und in Bilder speichern
|
||||||
|
bind = SHIFT, Print, exec, grim ~/Bilder/Screenshots/Screenshot_$(date +'%Y%m%d_%H%M%S').png
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
@@ -318,6 +366,8 @@ bindl = , XF86AudioPause, exec, playerctl play-pause
|
|||||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
|
||||||
|
bind = $mainMod SHIFT, R, exec, ~/.config/hypr/toggle_remote.sh
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
### WINDOWS AND WORKSPACES ###
|
### WINDOWS AND WORKSPACES ###
|
||||||
##############################
|
##############################
|
||||||
|
|||||||
271
.config/hypr/hyprland.lua
Normal file
271
.config/hypr/hyprland.lua
Normal file
@@ -0,0 +1,271 @@
|
|||||||
|
------------------------------------------
|
||||||
|
-- Hyprland
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
-- My Programs
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
local terminal = "kitty"
|
||||||
|
local fileManager = "dolphin"
|
||||||
|
local menu = "wofi"
|
||||||
|
|
||||||
|
local webBrowser = "firefox"
|
||||||
|
local codeEditor = "code-insiders"
|
||||||
|
local discordSpecial = "discord"
|
||||||
|
local discordWorkspace = "special:" .. discordSpecial
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
local mainMod = "SUPER"
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
-- Monitor
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
hl.monitor({
|
||||||
|
output = "DP-1",
|
||||||
|
mode = "2560x1440@144",
|
||||||
|
position = "0x0",
|
||||||
|
scale = 1
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.monitor({
|
||||||
|
output = "DP-2",
|
||||||
|
mode = "1920x1200@60",
|
||||||
|
position = "2560x0",
|
||||||
|
scale = 1
|
||||||
|
})
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
-- GPU NVIDIA
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
local env_vars = {
|
||||||
|
NVD_BACKEND = "direct",
|
||||||
|
LIBVA_DRIVER_NAME = "nvidia",
|
||||||
|
XDG_SESSION_TYPE = "wayland",
|
||||||
|
GBM_BACKEND = "nvidia-drm",
|
||||||
|
__GLX_VENDOR_LIBRARY_NAME = "nvidia",
|
||||||
|
|
||||||
|
XDG_CURRENT_DESKTOP = "Hyprland",
|
||||||
|
XDG_SESSION_DESKTOP = "Hyprland",
|
||||||
|
QT_QPA_PLATFORMTHEME = "hyprqt6engine",
|
||||||
|
|
||||||
|
-- Cursor size
|
||||||
|
XCURSOR_SIZE = "24",
|
||||||
|
HYPRCURSOR_SIZE = "24"
|
||||||
|
}
|
||||||
|
|
||||||
|
for key, val in pairs(env_vars) do
|
||||||
|
hl.env(key, val)
|
||||||
|
end
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
-- Autostart
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
-- In 0.55 werden Autostarts am besten über das `hyprland.start` Event ausgeführt
|
||||||
|
hl.on("hyprland.start", function()
|
||||||
|
hl.exec_cmd(terminal)
|
||||||
|
hl.exec_cmd("waybar")
|
||||||
|
hl.exec_cmd("hyprpaper")
|
||||||
|
hl.exec_cmd("hypridle")
|
||||||
|
hl.exec_cmd("pass-secret-service")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- ==========================================
|
||||||
|
-- ALLGEMEINE KONFIGURATION
|
||||||
|
-- ==========================================
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
gaps_in = 5,
|
||||||
|
gaps_out = 10,
|
||||||
|
border_size = 2,
|
||||||
|
|
||||||
|
col = {
|
||||||
|
active_border = { colors = {"rgba(ff7b3bee)", "rgba(e0274aee)"}, angle = 45 },
|
||||||
|
inactive_border = "rgba(595959aa)",
|
||||||
|
},
|
||||||
|
|
||||||
|
resize_on_border = false,
|
||||||
|
allow_tearing = false,
|
||||||
|
layout = "dwindle"
|
||||||
|
},
|
||||||
|
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 = true,
|
||||||
|
beziers = {
|
||||||
|
{"easeOutQuint", 0.23, 1, 0.32, 1},
|
||||||
|
{"easeInOutCubic", 0.65, 0.05, 0.36, 1},
|
||||||
|
{"linear", 0, 0, 1, 1},
|
||||||
|
{"almostLinear", 0.5, 0.5, 0.75, 1},
|
||||||
|
{"quick", 0.15, 0, 0.1, 1}
|
||||||
|
},
|
||||||
|
animations = {
|
||||||
|
{"global", true, 10, "default"},
|
||||||
|
{"border", true, 5.39, "easeOutQuint"},
|
||||||
|
{"windows", true, 4.79, "easeOutQuint"},
|
||||||
|
{"windowsIn", true, 4.1, "easeOutQuint", "popin 87%"},
|
||||||
|
{"windowsOut", true, 1.49, "linear", "popin 87%"},
|
||||||
|
{"fadeIn", true, 1.73, "almostLinear"},
|
||||||
|
{"fadeOut", true, 1.46, "almostLinear"},
|
||||||
|
{"fade", true, 3.03, "quick"},
|
||||||
|
{"layers", true, 3.81, "easeOutQuint"},
|
||||||
|
{"layersIn", true, 4, "easeOutQuint", "fade"},
|
||||||
|
{"layersOut", true, 1.5, "linear", "fade"},
|
||||||
|
{"fadeLayersIn", true, 1.79, "almostLinear"},
|
||||||
|
{"fadeLayersOut", true, 1.39, "almostLinear"},
|
||||||
|
{"workspaces", true, 1.94, "almostLinear", "fade"},
|
||||||
|
{"workspacesIn", true, 1.21, "almostLinear", "fade"},
|
||||||
|
{"workspacesOut", true, 1.94, "almostLinear", "fade"},
|
||||||
|
{"zoomFactor", true, 7, "quick"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dwindle = {
|
||||||
|
preserve_split = true
|
||||||
|
-- Hinweis: 'pseudotile' existiert ab v0.55 nicht mehr und wurde entfernt!
|
||||||
|
},
|
||||||
|
master = {
|
||||||
|
new_status = "master"
|
||||||
|
},
|
||||||
|
misc = {
|
||||||
|
force_default_wallpaper = 0,
|
||||||
|
disable_hyprland_logo = true
|
||||||
|
},
|
||||||
|
input = {
|
||||||
|
kb_layout = "de",
|
||||||
|
follow_mouse = 1,
|
||||||
|
sensitivity = 0,
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
devices = {
|
||||||
|
{ name = "epic-mouse-v1", sensitivity = -0.5 }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Swipes und Gesten
|
||||||
|
hl.gesture({
|
||||||
|
fingers = 3,
|
||||||
|
direction = "horizontal",
|
||||||
|
action = "workspace"
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ==========================================
|
||||||
|
-- WORKSPACE BINDINGS
|
||||||
|
-- ==========================================
|
||||||
|
-- Ungerade Workspaces auf DP-1
|
||||||
|
for _, ws in ipairs({1, 3, 5, 7, 9}) do
|
||||||
|
hl.workspace_rule({ workspace = tostring(ws), monitor = "DP-1" })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Gerade Workspaces auf DP-2
|
||||||
|
for _, ws in ipairs({2, 4, 6, 8, 10}) do
|
||||||
|
hl.workspace_rule({ workspace = tostring(ws), monitor = "DP-2" })
|
||||||
|
end
|
||||||
|
|
||||||
|
hl.workspace_rule({ workspace = discordWorkspace, monitor = "DP-2" })
|
||||||
|
|
||||||
|
-- ==========================================
|
||||||
|
-- KEYBINDS
|
||||||
|
-- ==========================================
|
||||||
|
-- Die neue hl.bind()-Funktion kombiniert Modifier und Taste per String
|
||||||
|
|
||||||
|
hl.bind(mainMod .. " + D", hl.dsp.exec_cmd("~/.config/hypr/scripts/toggle_discord.sh"))
|
||||||
|
hl.bind(mainMod .. " + Q", hl.dsp.exec_cmd(terminal))
|
||||||
|
hl.bind(mainMod .. " + C", hl.dsp.window.close())
|
||||||
|
hl.bind(mainMod .. " + M", hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'"))
|
||||||
|
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager))
|
||||||
|
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
|
||||||
|
hl.bind(mainMod .. " + R", hl.dsp.exec_cmd(menu .. " --show drun --conf ~/.config/wofi/config --style ~/.config/wofi/style.css"))
|
||||||
|
hl.bind(mainMod .. " + P", hl.dsp.window.pseudo())
|
||||||
|
hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit"))
|
||||||
|
|
||||||
|
hl.bind(mainMod .. " + SHIFT + B", hl.dsp.exec_cmd("~/.config/waybar/refrech.sh"))
|
||||||
|
hl.bind(mainMod .. " + L", hl.dsp.exec_cmd("hyprlock"))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + L", hl.dsp.exec_cmd("systemctl suspend"))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + R", hl.dsp.exec_cmd("~/.config/hypr/scripts/toggle_remote.sh"))
|
||||||
|
|
||||||
|
-- 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" }))
|
||||||
|
|
||||||
|
-- Switch workspaces with mainMod + [0-9]
|
||||||
|
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
for i = 1, 10 do
|
||||||
|
local key = i % 10 -- 10 maps to key 0
|
||||||
|
-- Führt ab sofort unser cleveres Switch-Skript aus!
|
||||||
|
hl.bind(mainMod .. " + " .. key, hl.dsp.exec_cmd("~/.config/hypr/scripts/switch_ws.sh " .. i))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Scratchpad
|
||||||
|
hl.bind(mainMod .. " + A", hl.dsp.workspace.toggle_special("magic"))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + A", hl.dsp.window.move({ workspace = "special:magic" }))
|
||||||
|
|
||||||
|
-- Screenshots
|
||||||
|
hl.bind(mainMod .. " + SHIFT + S", hl.dsp.exec_cmd([[grim -g "$(slurp)" - | wl-copy]]))
|
||||||
|
hl.bind("Print", hl.dsp.exec_cmd([[grim -g "$(slurp)" - | swappy -f -]]))
|
||||||
|
hl.bind("SHIFT + Print", hl.dsp.exec_cmd([[grim ~/Bilder/Screenshots/Screenshot_$(date +'%Y%m%d_%H%M%S').png]]))
|
||||||
|
|
||||||
|
-- Mausrad-Workspaces
|
||||||
|
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
||||||
|
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
||||||
|
|
||||||
|
-- Maus-Verschieben/Vergrößern (mouse:272 = LMB, mouse:273 = RMB)
|
||||||
|
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
||||||
|
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
|
||||||
|
|
||||||
|
-- Laptop multimedia keys for volume and LCD brightness
|
||||||
|
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true })
|
||||||
|
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true })
|
||||||
|
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true })
|
||||||
|
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
|
||||||
|
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
|
||||||
|
hl.bind("XF86MonBrightnessDown",hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
|
||||||
|
|
||||||
|
-- Requires playerctl
|
||||||
|
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 })
|
||||||
|
|
||||||
|
|
||||||
|
-- ==========================================
|
||||||
|
-- FENSTERREGELN (hl.window_rule)
|
||||||
|
-- ==========================================
|
||||||
|
-- In v0.55 nutzt du für Fensterregeln eine saubere Table-Struktur für Matches
|
||||||
|
hl.window_rule({ match = { class = "^(discord)$" }, workspace = discordWorkspace })
|
||||||
|
hl.window_rule({ match = { class = "^(steam)$", title = "^(Steam)$" }, workspace = "5" })
|
||||||
|
|
||||||
|
-- Maximize-Events von allen Apps unterdrücken
|
||||||
|
hl.window_rule({ match = { class = ".*" }, suppress_event = "maximize" })
|
||||||
|
|
||||||
|
-- XWayland Dragging-Fix
|
||||||
|
hl.window_rule({
|
||||||
|
match = { class = "^$", title = "^$", xwayland = true, float = true, fullscreen = false, pin = false },
|
||||||
|
no_focus = true
|
||||||
|
})
|
||||||
|
|
||||||
|
-- hyprland-run Modifikationen
|
||||||
|
hl.window_rule({ match = { class = "hyprland-run" }, float = true, move = "20 monitor_h-120" })
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
background {
|
background {
|
||||||
monitor =
|
monitor =
|
||||||
path = ~/Bilder/Wallpaper/WatchTowerSunset.png # <--- HIER wird das Bild geladen
|
path = ~/Bilder/Wallpaper/WatchTowerSunset.png # <--- HIER wird das Bild geladen
|
||||||
color = rgba(25, 20, 20, 1.0)
|
color = rgba(25, 16, 36, 1.0) # Tiefes Lila (falls das Bild mal nicht lädt)
|
||||||
|
|
||||||
# OPTIONALE EFFEKTE für bessere Lesbarkeit:
|
# OPTIONALE EFFEKTE für bessere Lesbarkeit:
|
||||||
blur_passes = 2 # 0 ist aus (0-4 empfohlen)
|
blur_passes = 2
|
||||||
blur_size = 7 # Größe der Unschärfe
|
blur_size = 7
|
||||||
noise = 0.0117 # Ein bisschen Rauschen für Look
|
noise = 0.0117
|
||||||
contrast = 0.8916 # Kontrast anpassen
|
contrast = 0.8916
|
||||||
brightness = 0.8172 # Bild leicht abdunkeln
|
brightness = 0.8172
|
||||||
vibrancy = 0.1696 # Farben anpassen
|
vibrancy = 0.1696
|
||||||
}
|
}
|
||||||
|
|
||||||
input-field {
|
input-field {
|
||||||
@@ -19,9 +19,9 @@ input-field {
|
|||||||
dots_size = 0.33
|
dots_size = 0.33
|
||||||
dots_spacing = 0.15
|
dots_spacing = 0.15
|
||||||
dots_center = true
|
dots_center = true
|
||||||
outer_color = rgb(40, 40, 40)
|
outer_color = rgb(ff7b3b) # Sonnen-Orange für den Rand
|
||||||
inner_color = rgb(200, 200, 200)
|
inner_color = rgb(191024) # Tiefes Lila für das Innere
|
||||||
font_color = rgb(10, 10, 10)
|
font_color = rgb(fce8e1) # Helle Schrift für die Eingabe
|
||||||
fade_on_empty = false
|
fade_on_empty = false
|
||||||
placeholder_text = <i>Passwort eingeben...</i>
|
placeholder_text = <i>Passwort eingeben...</i>
|
||||||
hide_input = false
|
hide_input = false
|
||||||
@@ -33,10 +33,12 @@ input-field {
|
|||||||
label {
|
label {
|
||||||
monitor =
|
monitor =
|
||||||
text = $TIME
|
text = $TIME
|
||||||
color = rgba(200, 200, 200, 1.0)
|
color = rgb(ff7b3b) # Leuchtendes Orange für die Uhrzeit
|
||||||
font_size = 50
|
font_size = 65
|
||||||
font_family = sans-serif
|
font_family = sans-serif
|
||||||
position = 0, 80
|
position = 0, 80
|
||||||
halign = center
|
halign = center
|
||||||
valign = center
|
valign = center
|
||||||
|
shadow_passes = 1 # Leichter Schatten für bessere Lesbarkeit
|
||||||
|
shadow_size = 4
|
||||||
}
|
}
|
||||||
18
.config/hypr/scripts/switch_ws.sh
Executable file
18
.config/hypr/scripts/switch_ws.sh
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
TARGET_WS=$1
|
||||||
|
|
||||||
|
# 1. WICHTIG: Zuerst zum gewählten Workspace wechseln!
|
||||||
|
# Dadurch springt unser Fokus sicher auf den richtigen Monitor (z.B. DP-2).
|
||||||
|
hyprctl dispatch 'hl.dsp.focus({ workspace = '"$TARGET_WS"' })'
|
||||||
|
|
||||||
|
# 2. Ist der Ziel-Workspace eine gerade Zahl (2, 4, 6, 8, 10)?
|
||||||
|
if [[ "$TARGET_WS" =~ ^(2|4|6|8|10)$ ]]; then
|
||||||
|
|
||||||
|
# 3. Prüfen: Ist das Discord-Overlay offen?
|
||||||
|
if hyprctl monitors | grep -iq "special.*workspace.*discord"; then
|
||||||
|
|
||||||
|
# 4. Zuklappen! (Da wir jetzt sicher auf DP-2 fokussiert sind, bleibt es auch dort)
|
||||||
|
hyprctl dispatch 'hl.dsp.workspace.toggle_special("discord")'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
14
.config/hypr/scripts/toggle_discord.sh
Executable file
14
.config/hypr/scripts/toggle_discord.sh
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# 1. Prüfen, ob der Discord-Prozess (egal ob groß/klein geschrieben) läuft
|
||||||
|
if ! pgrep -i "discord" > /dev/null; then
|
||||||
|
# Starten, falls nicht
|
||||||
|
discord > /dev/null 2>&1 &
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Zuerst zwingend DP-2 fokussieren (angepasst an deine Lua-Syntax)
|
||||||
|
hyprctl dispatch 'hl.dsp.focus({ monitor = "DP-2" })'
|
||||||
|
|
||||||
|
# 3. Dein funktionierender Befehl zum Ein-/Ausklappen!
|
||||||
|
hyprctl dispatch 'hl.dsp.workspace.toggle_special("discord")'
|
||||||
13
.config/hypr/scripts/toggle_remote.sh
Executable file
13
.config/hypr/scripts/toggle_remote.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SECOND_MONITOR="DP-2"
|
||||||
|
|
||||||
|
if hyprctl monitors | grep -q "$SECOND_MONITOR"; then
|
||||||
|
# Monitor ausschalten (Offizielle Lua-Syntax: disabled = true)
|
||||||
|
hyprctl eval "hl.monitor({ output = '$SECOND_MONITOR', disabled = true })"
|
||||||
|
notify-send "RustDesk Modus" "DP-2 deaktiviert"
|
||||||
|
else
|
||||||
|
# Monitor wieder einschalten (mit explizitem disabled = false zur Sicherheit)
|
||||||
|
hyprctl eval "hl.monitor({ output = '$SECOND_MONITOR', mode = '1920x1200@60', position = '2560x0', scale = 1, disabled = false })"
|
||||||
|
notify-send "Desktop Modus" "DP-2 aktiviert"
|
||||||
|
fi
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
/* Die gesamte Bar */
|
/* Die gesamte Bar */
|
||||||
window#waybar {
|
window#waybar {
|
||||||
background-color: rgba(30, 30, 46, 0.8); /* Transparentes Dunkel */
|
background-color: rgba(25, 16, 36, 0.85); /* Tiefes Dunkellila aus dem Wald */
|
||||||
border-bottom: 2px solid #5e81ac;
|
border-bottom: 2px solid #ff7b3b; /* Sonnen-Orange */
|
||||||
color: #cdd6f4;
|
color: #fce8e1; /* Warmes, weiches Weiß */
|
||||||
font-family: "Fira Code", "Font Awesome 6 Free";
|
font-family: "Fira Code", "Font Awesome 6 Free";
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
@@ -11,18 +11,18 @@ window#waybar {
|
|||||||
#workspaces button {
|
#workspaces button {
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: #ffffff;
|
color: #fce8e1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button.active {
|
#workspaces button.active {
|
||||||
color: #5e81ac;
|
color: #ff7b3b; /* Orange für aktiven Workspace */
|
||||||
border-bottom: 3px solid #5e81ac;
|
border-bottom: 3px solid #ff7b3b;
|
||||||
}
|
}
|
||||||
|
|
||||||
#clock, #cpu, #memory, #battery, #pulseaudio, #network {
|
#clock, #cpu, #memory, #battery, #pulseaudio, #network {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
background-color: #313244;
|
background-color: #3b1d3d; /* Dunkles Magenta/Pink als Hintergrund */
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ window#waybar {
|
|||||||
#tray {
|
#tray {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
background-color: #313244; /* Gleicher Hintergrund wie CPU/Clock */
|
background-color: #3b1d3d; /* Gleicher Hintergrund wie CPU/Clock */
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/* Das Hauptfenster */
|
/* Das Hauptfenster */
|
||||||
window {
|
window {
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
border: 2px solid #5e81ac; /* Ein schönes Blau */
|
border: 2px solid #ff7b3b; /* Sonnen-Orange */
|
||||||
background-color: #1e1e2e; /* Dunkles Lila/Schwarz */
|
background-color: rgba(25, 16, 36, 0.95); /* Tiefes Dunkellila, fast blickdicht */
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
font-family: "Fira Code", monospace;
|
font-family: "Fira Code", monospace;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
@@ -11,10 +11,10 @@ window {
|
|||||||
/* Das Suchfeld oben */
|
/* Das Suchfeld oben */
|
||||||
#input {
|
#input {
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
border: none;
|
border: 2px solid #e0274a; /* Pink-Rot für das Suchfeld */
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
background-color: #313244;
|
background-color: #3b1d3d; /* Dunkles Magenta */
|
||||||
color: #cdd6f4;
|
color: #fce8e1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Die Liste der Apps */
|
/* Die Liste der Apps */
|
||||||
@@ -32,17 +32,17 @@ window {
|
|||||||
|
|
||||||
/* Der ausgewählte Eintrag (Hover/Focus) */
|
/* Der ausgewählte Eintrag (Hover/Focus) */
|
||||||
#entry:selected {
|
#entry:selected {
|
||||||
background-color: #5e81ac;
|
background-color: #e0274a; /* Kräftiges Pink/Rot aus den Wolken beim Auswählen */
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Textfarben */
|
/* Textfarben */
|
||||||
#text {
|
#text {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
color: #cdd6f4;
|
color: #fce8e1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#text:selected {
|
#text:selected {
|
||||||
color: #ffffff;
|
color: #ffffff; /* Strahlendes Weiß für den ausgewählten Text */
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
2
.gnupg/gpg-agent.conf
Normal file
2
.gnupg/gpg-agent.conf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
default-cache-ttl 3600
|
||||||
|
max-cache-ttl 28800
|
||||||
41
README.MD
41
README.MD
@@ -38,7 +38,46 @@ sudo pacman -S pass gnupg
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📂 Wichtige Dateien im Repo
|
## <EFBFBD> VS Code & Electron Keyring (Hyprland)
|
||||||
|
|
||||||
|
Da unter Hyprland kein Standard-Keyring läuft, VS Code diesen aber zwingend benötigt (z. B. für GitHub Copilot, Settings-Sync oder Git), nutzen wir eine Brücke. Diese stellt die D-Bus Secret Service API bereit und speichert die Geheimnisse direkt in unserer bestehenden pass-Datenbank.
|
||||||
|
|
||||||
|
### 1. Installation der Brücke
|
||||||
|
```fish
|
||||||
|
# Installiert den pass-secret-service über das AUR
|
||||||
|
paru -S pass-secret-service-bin
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Dienst aktivieren
|
||||||
|
Damit die Brücke im Hintergrund läuft, aktivieren wir den zugehörigen Systemd-User-Service:
|
||||||
|
```fish
|
||||||
|
systemctl --user enable --now pass-secret-service
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. VS Code konfigurieren
|
||||||
|
VS Code muss angewiesen werden, die D-Bus Schnittstelle zu nutzen.
|
||||||
|
In VS Code die Command Palette öffnen (Strg + Shift + P), nach Preferences: Configure Runtime Arguments suchen und den folgenden Eintrag in der argv.json setzen:
|
||||||
|
```json
|
||||||
|
"password-store": "gnome-libsecret"
|
||||||
|
```
|
||||||
|
|
||||||
|
*(Hinweis: gnome-libsecret ist hier lediglich das Electron-Schlagwort für die D-Bus-Schnittstelle, die wir mit pass gekapert haben).*
|
||||||
|
|
||||||
|
### 4. GPG-Agent Cache konfigurieren (Empfohlen)
|
||||||
|
Damit VS Code nicht bei jedem Sync-Vorgang im Hintergrund ein Passwort-Popup triggert, sollte der GPG-Cache erhöht werden. Dazu die Datei `~/.gnupg/gpg-agent.conf` anpassen:
|
||||||
|
```
|
||||||
|
default-cache-ttl 3600
|
||||||
|
max-cache-ttl 28800
|
||||||
|
```
|
||||||
|
|
||||||
|
Anschließend den Agenten neu laden:
|
||||||
|
```fish
|
||||||
|
gpg-connect-agent reloadagent /bye
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## <20>📂 Wichtige Dateien im Repo
|
||||||
* **Hyprland:** `~/.config/hypr/hyprland.conf` (Keybinds & Window-Rules)
|
* **Hyprland:** `~/.config/hypr/hyprland.conf` (Keybinds & Window-Rules)
|
||||||
* **Hyprpaper:** `~/.config/hypr/hyprpaper.conf` (Neue Block-Syntax!)
|
* **Hyprpaper:** `~/.config/hypr/hyprpaper.conf` (Neue Block-Syntax!)
|
||||||
* **Waybar/Wofi:** Styles und Configs für Topbar und Launcher.
|
* **Waybar/Wofi:** Styles und Configs für Topbar und Launcher.
|
||||||
|
|||||||
Reference in New Issue
Block a user