This commit is contained in:
Michael Moese 2025-07-25 14:19:20 +02:00
parent 07816eb302
commit 09d717fab8
63 changed files with 2945 additions and 34 deletions

33
.gitmodules vendored Normal file
View file

@ -0,0 +1,33 @@
[submodule "/home/michael/dotfiles/vim/pack/plugins/start/nerdtree"]
path = /home/michael/dotfiles/vim/pack/plugins/start/nerdtree
url = https://github.com/preservim/nerdtree.git
[submodule "/home/michael/dotfiles/vim/.vim/pack/plugins/start/nerdtree-git-plugin"]
path = /home/michael/dotfiles/vim/.vim/pack/plugins/start/nerdtree-git-plugin
url = https://github.com/Xuyuanp/nerdtree-git-plugin.git
[submodule "vim/.vim/pack/plugins/start/vim-perl"]
path = vim/.vim/pack/plugins/start/vim-perl
url = https://github.com/vim-perl/vim-perl.git
[submodule "vim/.vim/pack/plugins/start/ale"]
path = vim/.vim/pack/plugins/start/ale
url = https://github.com/dense-analysis/ale.git
[submodule "vim/.vim/pack/plugins/start/fzf"]
path = vim/.vim/pack/plugins/start/fzf
url = https://github.com/junegunn/fzf.git
[submodule "vim/.vim/pack/plugins/start/fzf.vim"]
path = vim/.vim/pack/plugins/start/fzf.vim
url = https://github.com/junegunn/fzf.vim.git
[submodule "vim/.vim/pack/plugins/start/vim-commentary"]
path = vim/.vim/pack/plugins/start/vim-commentary
url = https://github.com/tpope/vim-commentary.git
[submodule "vim/.vim/pack/plugins/start/vim-airline"]
path = vim/.vim/pack/plugins/start/vim-airline
url = https://github.com/vim-airline/vim-airline.git
[submodule "vim/.vim/pack/plugins/start/nord-vim"]
path = vim/.vim/pack/plugins/start/nord-vim
url = https://github.com/arcticicestudio/nord-vim.git
[submodule "tmux/.tmux/themes/nord-tmux"]
path = tmux/.tmux/themes/nord-tmux
url = https://github.com/nordtheme/tmux.git
[submodule "emacs/.config/emacs"]
path = emacs/.config/emacs
url = https://github.com/doomemacs/doomemacs

1
bash/.alias Normal file
View file

@ -0,0 +1 @@
alias vim=nvim

View file

@ -12,12 +12,26 @@
test -s ~/.alias && . ~/.alias || true
#function set_perllib() {
# if [[ "$PWD" == "$HOME/work/os-autoinst-distri-opensuse"* ]]; then
# export PERL5LIB="$HOME/work/os-autoinst-distri-opensuse/lib"
# else
# unset PERL5LIB
# fi
#}
#PROMPT_COMMAND="set_perllib;$PROMPT_COMMAND"
export MOZ_ENABLE_WAYLAND=1
export QUTE_PASS_MENU=rofi
export TERMINAL=kitty
export EDITOR="emacs -nw"
export EDITOR="nvim"
export PATH="$PATH:/home/michael/bin/yubico-authenticator-7.2.3-linux"
eval "$(keychain --quiet --eval --agents ssh)"

25
bash/.profile Normal file
View file

@ -0,0 +1,25 @@
# Sample .profile for SUSE Linux
# rewritten by Christian Steinruecken <cstein@suse.de>
#
# This file is read each time a login shell is started.
# All other interactive shells will only read .bashrc; this is particularly
# important for language settings, see below.
test -z "$PROFILEREAD" && . /etc/profile || true
# Some applications read the EDITOR variable to determine your favourite text
# editor. So uncomment the line below and enter the editor of your choice :-)
export EDITOR=/usr/bin/vim
#export EDITOR=/usr/bin/mcedit
export MOZ_ENABLE_WAYLAND=1
# For some news readers it makes sense to specify the NEWSSERVER variable here
#export NEWSSERVER=your.news.server
# Some people don't like fortune. If you uncomment the following lines,
# you will have a fortune each time you log in ;-)
#if [ -x /usr/bin/fortune ] ; then
# echo
# /usr/bin/fortune
# echo
#fi

1
emacs/.config/emacs Submodule

@ -0,0 +1 @@
Subproject commit ed9190ef005829c7a2331e12fb36207794c5ad75

View file

@ -0,0 +1,5 @@
XDG_CURRENT_DESKTOP=sway
XDG_SESSION_TYPE=wayland
XDG_DESKTOP_PORTAL=xdg-desktop-portal-wlr

View file

@ -0,0 +1,6 @@
# -*- conf -*-
[main]
include=/usr/share/foot/themes/tokyonight-night
#font=JetBrains Mono:size=11, Symbols Nerd Font:size=11
font=FiraCode Nerd Font:size=11

View file

@ -0,0 +1,18 @@
[main]
font = monospace:size=10
lines = 1
width = 100 # ← GANZE Breite
horizontal-pad = 10
vertical-pad = 5
inner-pad = 5
anchor = center
layer = overlay
[colors]
background=16161eff
text=c0caf5ff
match=2ac3deff
selection=343a55ff
selection-match=2ac3deff
selection-text=c0caf5ff
border=27a1b9ff

View file

@ -0,0 +1,35 @@
animations {
enabled = true
# Animation curves
bezier = linear, 0, 0, 1, 1
bezier = md3_standard, 0.2, 0, 0, 1
bezier = md3_decel, 0.05, 0.7, 0.1, 1
bezier = md3_accel, 0.3, 0, 0.8, 0.15
bezier = overshot, 0.05, 0.9, 0.1, 1.1
bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
bezier = menu_decel, 0.1, 1, 0, 1
bezier = menu_accel, 0.38, 0.04, 1, 0.07
bezier = easeInOutCirc, 0.85, 0, 0.15, 1
bezier = easeOutCirc, 0, 0.55, 0.45, 1
bezier = easeOutExpo, 0.16, 1, 0.3, 1
bezier = softAcDecel, 0.26, 0.26, 0.15, 1
bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration
# Animation configs
animation = windows, 1, 3, md3_decel, popin 60%
animation = windowsIn, 1, 3, md3_decel, popin 60%
animation = windowsOut, 1, 3, md3_accel, popin 60%
animation = border, 1, 10, default
animation = fade, 1, 3, md3_decel
# animation = layers, 1, 2, md3_decel, slide
animation = layersIn, 1, 3, menu_decel, slide
animation = layersOut, 1, 1.6, menu_accel
animation = fadeLayersIn, 1, 2, menu_decel
animation = fadeLayersOut, 1, 4.5, menu_accel
animation = workspaces, 1, 7, menu_decel, slide
# animation = workspaces, 1, 2.5, softAcDecel, slide
# animation = workspaces, 1, 7, menu_decel, slidefade 15%
# animation = specialWorkspace, 1, 3, md3_decel, slidefadevert 15%
animation = specialWorkspace, 1, 3, md3_decel, slidevert
}

View file

@ -0,0 +1,7 @@
# Execute your favorite apps at launch
exec-once = hyprpaper
exec-once = dunst
exec-once = nm-applet --indicator
exec-once = waybar -c ~/.config/waybar/config-hyprland -s ~/.config/waybar/style.css
exec = ~/.config/ml4w-hyprland-settings/hyprctl.sh

View file

@ -0,0 +1,69 @@
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
# SUPER key
$mainMod = SUPER
# Actions
bind = $mainMod, RETURN, exec, foot # Open Alactritty
bind = $mainMod, Q, killactive # Close current window
bind = $mainMod, M, exit # Exit Hyprland
bind = $mainMod, E, exec, ~/.config/ml4w/settings/filemanager.sh # Opens the filemanager
bind = $mainMod, T, togglefloating # Toggle between tiling and floating window
bind = $mainMod, F, fullscreen # Open the window in fullscreen
bind = $mainMod CTRL, RETURN, exec, rofi -show drun # Open rofi
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, B, exec, ~/.config/ml4w/settings/browser.sh # Opens the browser
bind = $mainMod SHIFT, B, exec, ~/.config/ml4w/scripts/reload-waybar.sh # Reload Waybar
bind = $mainMod SHIFT, W, exec, ~/.config/ml4w/scripts/reload-hyprpaper.sh # Reload hyprpaper after a changing the wallpaper
bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%+
bind = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-
bind = , XF86MonBrightnessUp, exec, brightnessctl set 10%+
bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%-
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bind = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bind = , XF86WLAN, exec, nmcli radio wifi toggle
bind = , XF86Refresh, exec, xdotool key F5
bind = $mainMod SHIFT, P, exec, hyprshot -m output
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l # Move focus left
bind = $mainMod, right, movefocus, r # Move focus right
bind = $mainMod, up, movefocus, u # Move focus up
bind = $mainMod, down, movefocus, d # Move focus down
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1 # Switch to workspace 1
bind = $mainMod, 2, workspace, 2 # Switch to workspace 2
bind = $mainMod, 3, workspace, 3 # Switch to workspace 3
bind = $mainMod, 4, workspace, 4 # Switch to workspace 4
bind = $mainMod, 5, workspace, 5 # Switch to workspace 5
bind = $mainMod, 6, workspace, 6 # Switch to workspace 6
bind = $mainMod, 7, workspace, 7 # Switch to workspace 7
bind = $mainMod, 8, workspace, 8 # Switch to workspace 8
bind = $mainMod, 9, workspace, 9 # Switch to workspace 9
bind = $mainMod, 0, workspace, 10 # Switch to workspace 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1 # Move window to workspace 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2 # Move window to workspace 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3 # Move window to workspace 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4 # Move window to workspace 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5 # Move window to workspace 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6 # Move window to workspace 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7 # Move window to workspace 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8 # Move window to workspace 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9 # Move window to workspace 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Move window to workspace 10
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1 # Scroll workspaces
bind = $mainMod, mouse_up, workspace, e-1 # Scroll workspaces
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow # Move window
bindm = $mainMod, mouse:273, resizewindow # Resize window
bind = $mainMod, d, exec, /usr/bin/bemenu-run
#bind = $mainMod, D, exec, BEMENU_BACKEND=wayland /usr/bin/bemenu-run --fn "monospace 10" --nb "#000000" --nf "#ffffff" --hb "#005577" --hf "#ffffff" --fb "#000000" --ff "#00ffff" --tb "#000000" --tf "#ffffff" --prompt "Run: " --line-height 24 --border 0

View file

@ -0,0 +1 @@
env = XCURSOR_SIZE,24

View file

@ -0,0 +1,4 @@
decoration {
rounding = 6
}

View file

@ -0,0 +1,36 @@
# XDG Desktop Portal
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
# QT
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_QPA_PLATFORMTHEME,qt6ct
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
# GTK
env = GDK_SCALE,1
# Mozilla
env = MOZ_ENABLE_WAYLAND,1
# Set the cursor size for xcursor
env = XCURSOR_SIZE,24
# Disable appimage launcher by default
env = APPIMAGELAUNCHER_DISABLE,1
# OZONE
env = OZONE_PLATFORM,wayland
# For KVM virtual machines
# env = WLR_NO_HARDWARE_CURSORS, 1
# env = WLR_RENDERER_ALLOW_SOFTWARE, 1
# NVIDIA https://wiki.hyprland.org/Nvidia/
#env = LIBVA_DRIVER_NAME,nvidia
#env = GBM_BACKEND,nvidia-drm
#env = __GLX_VENDOR_LIBRARY_NAME,nvidia
#env = __GL_VRR_ALLOWED,1
#env = WLR_DRM_NO_ATOMIC,1

View file

@ -0,0 +1,10 @@
# See https://wiki.hyprland.org/Configuring/Variables/ for more
general {
gaps_in = 5
gaps_out = 20
border_size = 2
col.active_border = rgba(4f76c7ff) # Kuronami-Blau
col.inactive_border = rgba(1a1a1aff) # Dunkles Grau
layout = dwindle
resize_on_border = true
}

View file

@ -0,0 +1,4 @@
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gestures {
workspace_swipe = true
}

View file

@ -0,0 +1,16 @@
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = de
kb_variant = nodeadkeys
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = false
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}

View file

@ -0,0 +1,10 @@
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
# new_status = master
}

View file

@ -0,0 +1,5 @@
# See https://wiki.hyprland.org/Configuring/Variables/ for more
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
}

View file

@ -0,0 +1,2 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,1

View file

@ -0,0 +1 @@
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more

View file

@ -0,0 +1,25 @@
# _ _ _ _
# | | | |_ _ _ __ _ __| | __ _ _ __ __| |
# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` |
# | _ | |_| | |_) | | | | (_| | | | | (_| |
# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_|
# |___/|_|
#
# -----------------------------------------------------
# Full documentation https://wiki.hyprland.org
source = ~/.config/hypr/conf/monitor.conf
source = ~/.config/hypr/conf/autostart.conf
source = ~/.config/hypr/conf/cursor.conf
source = ~/.config/hypr/conf/environments.conf
source = ~/.config/hypr/conf/input.conf
source = ~/.config/hypr/conf/general.conf
source = ~/.config/hypr/conf/decoration.conf
source = ~/.config/hypr/conf/animations.conf
source = ~/.config/hypr/conf/layouts.conf
source = ~/.config/hypr/conf/gestures.conf
source = ~/.config/hypr/conf/misc.conf
source = ~/.config/hypr/conf/windowrules.conf
source = ~/.config/hypr/conf/binds.conf

View file

@ -0,0 +1,70 @@
# _ _ _
# | |__ _ _ _ __ _ __| | ___ ___| | __
# | '_ \| | | | '_ \| '__| |/ _ \ / __| |/ /
# | | | | |_| | |_) | | | | (_) | (__| <
# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\
# |___/|_|
#
background {
monitor =
path = $HOME/.config/ml4w/wallpapers/hyprland.png
}
input-field {
monitor =
size = 200, 50
outline_thickness = 3
dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
outer_color = rgb(151515)
inner_color = rgb(FFFFFF)
font_color = rgb(10, 10, 10)
fade_on_empty = true
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
hide_input = false
rounding = -1 # -1 means complete rounding (circle/oval)
check_color = rgb(204, 136, 34)
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
capslock_color = -1
numlock_color = -1
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
invert_numlock = false # change color if numlock is off
swap_font_color = false # see below
position = 0, -20
halign = center
valign = center
}
label {
monitor =
#clock
text = cmd[update:1000] echo "$TIME"
color = rgba(200, 200, 200, 1.0)
font_size = 55
font_family = Fira Semibold
position = -100, 40
halign = right
valign = bottom
shadow_passes = 5
shadow_size = 10
}
label {
monitor =
text = $USER
color = rgba(200, 200, 200, 1.0)
font_size = 20
font_family = Fira Semibold
position = -100, 160
halign = right
valign = bottom
shadow_passes = 5
shadow_size = 10
}

View file

@ -0,0 +1,5 @@
# You can find more wallpapers in ~/.config/ml4w/wallpapers/
# Run ~/.config/hypr/reload-hyprpaper.sh after changing your wallpaper
preload = ~/.config/ml4w/wallpapers/wallpaper.jpg
wallpaper = ,~/.config/ml4w/wallpapers/wallpaper.jpg
splash = false

View file

@ -0,0 +1,80 @@
# vim:ft=kitty
## name: Catppuccin Kitty Mocha
## author: Catppuccin Org
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #cdd6f4
background #1e1e2e
selection_foreground #1e1e2e
selection_background #f5e0dc
# Cursor colors
cursor #f5e0dc
cursor_text_color #1e1e2e
# URL underline color when hovering with mouse
url_color #f5e0dc
# Kitty window border colors
active_border_color #b4befe
inactive_border_color #6c7086
bell_border_color #f9e2af
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #11111b
active_tab_background #cba6f7
inactive_tab_foreground #cdd6f4
inactive_tab_background #181825
tab_bar_background #11111b
# Colors for marks (marked text in the terminal)
mark1_foreground #1e1e2e
mark1_background #b4befe
mark2_foreground #1e1e2e
mark2_background #cba6f7
mark3_foreground #1e1e2e
mark3_background #74c7ec
# The 16 terminal colors
# black
color0 #45475a
color8 #585b70
# red
color1 #f38ba8
color9 #f38ba8
# green
color2 #a6e3a1
color10 #a6e3a1
# yellow
color3 #f9e2af
color11 #f9e2af
# blue
color4 #89b4fa
color12 #89b4fa
# magenta
color5 #f5c2e7
color13 #f5c2e7
# cyan
color6 #94e2d5
color14 #94e2d5
# white
color7 #bac2de
color15 #a6adc8

View file

@ -0,0 +1,13 @@
# Schriftart
font_family JetBrainsMono Nerd Font
bold_font auto
italic_font auto
font_size 11.0
background_opacity 0.9
enable_mouse_focus yes
scrollback_lines 50000
include catppuccin-mocha.conf

View file

@ -29,10 +29,10 @@ set editor = "nano"
# Signatur (optional)
set signature = "~/.signature"
# Farben (einfaches Setup)
color normal white black
color indicator yellow black
color header yellow black
set sidebar_visible = yes
set sidebar_width = 30
set sidebar_sort_method = 'alpha'
# Benachrichtigung bei neuer Mail
unset beep
@ -47,4 +47,55 @@ set trash = "~/.mail/posteo/.Trash"
# Quelltext für erweiterte Funktionen, z.B. PGP, kannst du später ergänzen.
# Tokyo Night Dark Colors for NeoMutt
# Terminal: 256-color compatible
color normal white default
color error brightred default
color status brightmagenta default
color tree cyan default
color indicator black brightcyan
color search yellow default
color tilde blue default
color message cyan default
color markers brightblue default
color attachment magenta default
color signature brightblack default
color bold brightwhite default
color underline brightcyan default
# Index colors
color index white default
color index_author magenta default
color index_subject cyan default
color index_collapsed brightblue default
#color index_thread blue default
#color index_flagged brightred default
#color index_new brightcyan default
#color index_unread brightcyan default
# Header colors
color hdrdefault brightblue default
color header cyan default "^Subject:"
color header magenta default "^From:"
color header blue default "^To:"
color header yellow default "^Date:"
# Compose screen
color quoted brightblue default
color quoted1 blue default
color quoted2 magenta default
color quoted3 brightmagenta default
# PGP
#color pgpmsg cyan default
#color pgpheader magenta default
#color signature_good green default
#color signature_bad red default
# Sidebar
#color sidebar_new brightcyan default
#color sidebar_flagged brightred default
#color sidebar_highlight white blue
#color sidebar_divider brightblack default
#color sidebar_marker brightmagenta default

114
nvim/.config/nvim/init.lua Normal file
View file

@ -0,0 +1,114 @@
vim.g.mapleader = " "
vim.opt.clipboard:append("unnamedplus")
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git", "clone", "--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
lazypath
})
end
vim.opt.rtp:prepend(lazypath)
-- Plugin-Setup
require("lazy").setup("plugins")
-- Ensure nvim-lspconfig is loaded
local lspconfig = require('lspconfig')
-- Define the corrected command to run Perl::LanguageServer inside the Distrobox
-- Replace 'perl-ls-debian' with the actual name of your Distrobox container
local perl_ls_cmd = {
'distrobox',
'enter',
'perl-ls-debian',
'--', -- This separates distrobox commands from the command to run inside
'perl',
'-MPerl::LanguageServer',
'-e',
[[Perl::LanguageServer->run("--stdio")]] -- Use Lua long string literal
}
-- Configure perlpls (Perl::LanguageServer)
lspconfig.perlpls.setup({
cmd = perl_ls_cmd,
settings = {
pls = {
inc = {
"${workspaceFolder}/lib",
"${workspaceFolder}/os-autoinst/lib",
},
perlcritic = {
enabled = true,
perlcriticrc = '${workspaceFolder}/.perlcriticrc',
},
perltidy = {
perltidyrc = '${workspaceFolder}/.perltidyrc',
},
}
},
on_attach = function(client, bufnr)
-- IMPORTANT: Remove the line `require('lspconfig.util').default_on_attach(client, bufnr)`
-- Set options for the buffer (e.g., enable completion, formatting)
-- Many of these are now handled by Neovim's LSP client automatically,
-- but you can explicitly enable them if needed.
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') -- for C-x C-o completion
-- Basic LSP keymaps (you can customize these)
local opts = { noremap=true, silent=true }
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>f', '<cmd>lua vim.lsp.buf.format()<CR>', opts)
-- Example: Set up automatic formatting on save (if the LSP server supports it)
if client.supports_method('textDocument/formatting') then
vim.api.nvim_create_autocmd('BufWritePre', {
group = vim.api.nvim_create_augroup('LspFormatting' .. bufnr, { clear = true }),
buffer = bufnr,
callback = function()
vim.lsp.buf.format({ bufnr = bufnr, async = false })
end,
})
end
-- You can add more client capabilities here, for example with nvim-cmp:
-- require('cmp_nvim_lsp').setup_client(client)
end,
})
vim.api.nvim_create_user_command('OrgYtDl', function()
local url = vim.fn.expand('<cfile>')
if url:match('^https?://') then
vim.fn.jobstart({ 'yt-dlp', url }, {
stdout_buffered = true,
on_stdout = function(_, data)
if data then
print(table.concat(data, '\n'))
end
end,
on_stderr = function(_, data)
if data then
print('[yt-dlp] error:', table.concat(data, '\n'))
end
end,
})
else
print('No link under cursor.')
end
end, {})
-- Kopiert visuell markierten Text ins Clipboard mit <leader>y
vim.keymap.set("v", "<leader>y", '"+y', { desc = "Yank selection to system clipboard" })
vim.keymap.set('n', '<leader>oy', ':OrgYtDl<CR>', { desc = 'yt-dlp link under cursor' })

View file

@ -0,0 +1,49 @@
-- init.lua
-- 1. lazy.nvim bootstrap
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git", "clone", "--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- 2. Plugin Setup
require("lazy").setup({
{
"kyazdani42/nvim-tree.lua",
dependencies = { "kyazdani42/nvim-web-devicons" },
lazy = false,
config = function()
require("nvim-tree").setup {}
vim.api.nvim_set_keymap('n', '<C-n>', ':NvimTreeToggle<CR>', { noremap = true, silent = true })
end,
},
{
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" }, -- für hübsche Icons
lazy = false,
config = function()
require("lualine").setup({
options = {
theme = "tokyonight",
section_separators = "",
component_separators = "",
globalstatus = true,
},
})
end,
},
{
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
config = function()
require("tokyonight").setup({ style = "night" })
vim.cmd("colorscheme tokyonight")
end,
},
})

View file

@ -0,0 +1,23 @@
{
"gen.nvim": { "branch": "main", "commit": "c8e1f574d4a3a839dde73a87bdc319a62ee1e559" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"llm.nvim": { "branch": "main", "commit": "ce69731ba3f8d3ea8bc4c8f58c74c2f9ea0b33de" },
"lua-utils.nvim": { "branch": "main", "commit": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd" },
"lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "bb3a17efc797c34c054463174e5522442576ebd8" },
"mason.nvim": { "branch": "main", "commit": "197f6352c276bbc2d25541dfce00ec50d1a4e88f" },
"mini.nvim": { "branch": "main", "commit": "432a0614f8dc38715892b0eec537716457ea4c2f" },
"neorg": { "branch": "main", "commit": "e206c9642f4a115cd836e76c98ef785623d335bc" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-lspconfig": { "branch": "master", "commit": "4d3b3bb8815fbe37bcaf3dbdb12a22382bc11ebe" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-tree.lua": { "branch": "master", "commit": "543ed3cac212dc3993ef9f042f6c0812e34ddd43" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "0422a19d9aa3aad2c7e5cca167e5407b13407a9d" },
"orgmode": { "branch": "master", "commit": "ffa4d804115881d2a44ae5063ecb28f9686b4797" },
"pathlib.nvim": { "branch": "main", "commit": "57e5598af6fe253761c1b48e0b59b7cd6699e2c1" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"render-markdown.nvim": { "branch": "main", "commit": "b540997fbf7ccf3a39ce21162ce8957be2f67e37" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }
}

View file

@ -0,0 +1,30 @@
return {
"David-Kunz/gen.nvim",
opts = {
model = "deepseek-coder:latest", -- The default model to use.
quit_map = "q", -- set keymap to close the response window
retry_map = "<c-r>", -- set keymap to re-send the current prompt
accept_map = "<c-cr>", -- set keymap to replace the previous selection with the last result
host = "localhost", -- The host running the Ollama service.
port = "11434", -- The port on which the Ollama service is listening.
display_mode = "float", -- The display mode. Can be "float" or "split" or "horizontal-split" or "vertical-split".
show_prompt = false, -- Shows the prompt submitted to Ollama. Can be true (3 lines) or "full".
show_model = false, -- Displays which model you are using at the beginning of your chat session.
no_auto_close = false, -- Never closes the window automatically.
file = false, -- Write the payload to a temporary file to keep the command short.
hidden = false, -- Hide the generation window (if true, will implicitly set `prompt.replace = true`), requires Neovim >= 0.10
init = function(options) pcall(io.popen, "ollama serve > /dev/null 2>&1 &") end,
-- Function to initialize Ollama
command = function(options)
local body = {model = options.model, stream = true}
return "curl --silent --no-buffer -X POST http://" .. options.host .. ":" .. options.port .. "/api/chat -d $body"
end,
-- The command for the Ollama service. You can use placeholders $prompt, $model and $body (shellescaped).
-- This can also be a command string.
-- The executed command must return a JSON object with { response, context }
-- (context property is optional).
-- list_models = '<omitted lua function>', -- Retrieves a list of model names
result_filetype = "markdown", -- Configure filetype of the result buffer
debug = false -- Prints errors and the command which is run.
}
}

View file

@ -0,0 +1,13 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
lazy = false,
config = function()
require("lualine").setup({
options = {
theme = "tokyonight",
globalstatus = true,
},
})
end,
}

View file

@ -0,0 +1,33 @@
return {
"nvim-neorg/neorg",
lazy = false,
version = "*",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
require("neorg").setup({
load = {
["core.defaults"] = {}, -- Basismodule
["core.concealer"] = {}, -- Schönes Rendering
["core.dirman"] = { -- Workspace-Management
config = {
workspaces = {
notes = "~/Nextcloud/neorg",
},
default_workspace = "notes",
},
},
["core.qol.toc"] = {}, -- Table of Contents
},
})
-- ⛔ Standard-gO löschen
vim.keymap.del("n", "gO")
-- ✅ Neorg TOC auf gO binden
vim.keymap.set("n", "gO", "<cmd>Neorg toc<CR>", {
desc = "Neorg Table of Contents",
noremap = true,
silent = true,
})
end,
}

View file

@ -0,0 +1,9 @@
return {
"kyazdani42/nvim-tree.lua",
dependencies = { "nvim-tree/nvim-web-devicons" },
lazy = false,
config = function()
require("nvim-tree").setup()
vim.keymap.set("n", "<C-n>", ":NvimTreeToggle<CR>", { noremap = true, silent = true })
end,
}

View file

@ -0,0 +1,11 @@
return {
'nvim-orgmode/orgmode',
event = 'VeryLazy',
config = function()
-- Setup orgmode
require('orgmode').setup({
org_agenda_files = '~/Nextcloud/org/**/*',
org_default_notes_file = '~/Nextcloud/org/refile.org',
})
end,
}

View file

@ -0,0 +1,11 @@
return {
'neovim/nvim-lspconfig',
event = 'BufReadPre',
dependencies = {
'williamboman/mason.nvim', -- Optional, but good for managing LSPs
'williamboman/mason-lspconfig.nvim', -- Integrates mason with lspconfig
},
config = function()
-- your lspconfig setup here
end
}

View file

@ -0,0 +1,9 @@
return {
'MeanderingProgrammer/render-markdown.nvim',
dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
---@module 'render-markdown'
---@type render.md.UserConfig
opts = {},
}

View file

@ -0,0 +1,13 @@
return {
'nvim-telescope/telescope.nvim',
dependencies = { 'nvim-lua/plenary.nvim' },
config = function()
require('telescope').setup()
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>ff', builtin.find_files, { desc = "Find Files" })
vim.keymap.set('n', '<leader>fg', builtin.live_grep, { desc = "Live Grep" })
vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = "Find Buffers" })
vim.keymap.set('n', '<leader>fh', builtin.help_tags, { desc = "Help Tags" })
end
}

View file

@ -0,0 +1,10 @@
return {
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
config = function()
require("tokyonight").setup({ style = "night" })
vim.cmd("colorscheme tokyonight")
end,
}

View file

@ -0,0 +1,25 @@
return {
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
event = { "BufReadPost", "BufNewFile" },
opts = {
ensure_installed = {
"lua",
"bash",
"markdown",
"norg",
"c",
"perl",
"python",
},
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
},
config = function(_, opts)
require("nvim-treesitter.configs").setup(opts)
end,
},
}

247
sway/.config/sway/config Normal file
View file

@ -0,0 +1,247 @@
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
# Start D-Bus session (falls du das drin hast)
exec --no-startup-id dbus-launch --sh-syntax
# placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.focused #9aa5ce #16161d #c0caf5 #9aa5ce #9aa5ce
client.focused_inactive #16161d #16161d #c0caf5 #16161d #16161d
client.unfocused #16161d #16161d #c0caf5 #16161d #16161d
# Gaps
# gaps inner|outer|horizontal|vertical|top|right|bottom|left <amount>
# Sets default amount pixels of inner or outer gap
# the inner affects spacing around each view
# the outer affects the spacing around each workspace
# To reduce or remove outer gaps, outer gaps can be set to a negative value.
gaps inner 5
gaps outer 1
gaps top 1
gaps bottom 1
# Hide gaps when there is only 1 window
smart_gaps on
# Fensterrahmen schmal
#new_window pixel 2
#new_float normal
# Font
font pango:JetBrains Mono 10
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 8
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# Start XDG autostart .desktop files using dex. See also
# https://wiki.archlinux.org/index.php/XDG_Autostart
exec --no-startup-id dex --autostart --environment sway
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- swaylock -f
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
bindsym $mod+Shift+p exec grim ~/Bilder/screenshot-$(date +%Y-%m-%d-%H%M%S).png
bindsym $mod+p exec ~/bin/pass-fuzzel.sh -c
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
#tiling_drag modifier titlebar
# start a terminal
#bindsym $mod+Return exec i3-sensible-terminal
#bindsym $mod+Return exec kitty
bindsym $mod+Return exec foot
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
#bindsym $mod+d exec --no-startup-id dmenu_run
#bindsym $mod+d exec --no-startup-id BEMENU_BACKEND=wayland bemenu-run --fn "Monospace 10" --tb "#222222" --fb "#000000" --hb "#005577" --hf "#ffffff" --nf "#bbbbbb" --nb "#000000"
#bindsym $mod+d exec wofi --show drun
bindsym $mod+d exec fuzzel
# A more modern dmenu replacement is rofi:
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+odiaeresis focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+odiaeresis move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "swaymsg exit"
bindsym $mod+Shift+v exec pavucontrol
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym odiaeresis resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
#bar {
# status_command i3status
# font pango:JetBrains Mono 10
# colors {
# background #0f111a
# statusline #dcd7ba
# separator #44475a
#
# focused_workspace #7e9cd8 #7e9cd8 #0f111a
# inactive_workspace #1a1b26 #1a1b26 #545c7e
# urgent_workspace #e46876 #e46876 #0f111a
# }
#}
input "type:keyboard" {
xkb_layout de
xkb_variant nodeadkeys
}
exec --no-startup-id pasystray
exec --no-startup-id nm-applet
exec --no-startup-id waybar
exec --no-startup-id swaybg -m stretch -i ~/wallpaper/HD-wallpaper-soft-minimal-abstract-blue-idigo-minimal-purple.jpg

2
tmux/.tmux.conf Normal file
View file

@ -0,0 +1,2 @@
run-shell "~/.tmux/themes/nord-tmux/nord.tmux"

@ -0,0 +1 @@
Subproject commit f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92

View file

@ -1,4 +0,0 @@
let g:netrw_dirhistmax =10
let g:netrw_dirhistcnt =2
let g:netrw_dirhist_2='/home/michael/.local/share/qutebrowser/userscripts'
let g:netrw_dirhist_1='/home/michael/vpn'

View file

@ -1,22 +0,0 @@
" kuronami.vim - a Kuronami inspired colorscheme for Vim
if exists("syntax_on")
syntax reset
endif
let g:colors_name = "kuronami"
" Background and foreground
hi Normal guifg=#c9c9c9 guibg=#181a26
hi Cursor guibg=#e97f86
hi Comment guifg=#7fbbe9 gui=italic
hi Constant guifg=#cdb38f
hi String guifg=#65bab4
hi Function guifg=#fffafa
hi Keyword guifg=#a5bad7
hi Identifier guifg=#fffafa
hi Error guifg=#e97f86 gui=bold
hi WarningMsg guifg=#cdb38f gui=bold
hi Search guibg=#e97f86 guifg=#181a26
hi Visual guibg=#2e41ac
hi LineNr guifg=#a5bad7 guibg=#181a26
hi StatusLine guifg=#232328 guibg=#b3b3b3

View file

@ -1,3 +0,0 @@
colorscheme kuronami
filetype indent on

View file

@ -0,0 +1,145 @@
{
"layer": "bottom",
"position": "bottom",
"height": 30,
"modules-left": ["sway/workspaces", "sway/mode", "sway/window"],
"modules-center": ["clock"],
"modules-right": ["cpu","memory","temperature", "custom/gpu","tray"],
"clock#time": {
"interval": 1,
"format": "{:%H:%M:%S}",
"tooltip": false
},
"clock#date": {
"interval": 10,
"format": " {:%e %b %Y}", // Icon: calendar-alt
"tooltip-format": "{:%e %B %Y}"
},
"cpu": {
"interval": 5,
"format": " {usage}% ({load})", // Icon: microchip
"states": {
"warning": 70,
"critical": 90
}
},
"custom/keyboard-layout": {
"exec": "swaymsg -t get_inputs | grep -m1 'xkb_active_layout_name' | cut -d '\"' -f4",
// Interval set only as a fallback, as the value is updated by signal
"interval": 30,
"format": " {}", // Icon: keyboard
// Signal sent by Sway key binding (~/.config/sway/key-bindings)
"signal": 1, // SIGHUP
"tooltip": false
},
"memory": {
"interval": 5,
"format": " {}%", // Icon: memory
"states": {
"warning": 70,
"critical": 90
}
},
"network": {
"interface": "tun0",
"interval": 5,
"format": "🔒 VPN up",
"format-disconnected": "🔓 VPN down",
"tooltip-format": "{ifname} {ipaddr}"
},
"sway/mode": {
"format": "<span style=\"italic\"> {}</span>", // Icon: expand-arrows-alt
"tooltip": false
},
"sway/window": {
"format": "{}",
"max-length": 120
},
"sway/workspaces": {
"persistent_workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": [],
"6": [],
"7": [],
"8": [],
"9": [],
"10": []
},
"disable-scroll": true,
"all-outputs": true,
"format": "{name}",
"on-click": "activate",
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-bluetooth": "{icon} {volume}%",
"format-muted": "",
"format-icons": {
"headphones": "",
"handsfree": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", ""]
},
"on-click": "pavucontrol"
},
"temperature": {
"critical-threshold": 80,
"interval": 5,
"format": "{icon} CPU: {temperatureC}°C",
"format-icons": [
"", // Icon: temperature-empty
"", // Icon: temperature-quarter
"", // Icon: temperature-half
"", // Icon: temperature-three-quarters
"" // Icon: temperature-full
],
"tooltip": true
},
"tray": {
"icon-size": 21,
"spacing": 10
},
"custom/vpn": {
"exec": "~/.config/waybar/scripts/vpn-status.sh",
"interval": 5,
"return-type": "text",
"tooltip": false
},
"custom/gpu": {
"exec": "~/.config/waybar/scripts/gpu-temp.sh",
"interval": 10,
"return-type": "json",
"tooltip": false
},
"custom/powermenu": {
"return-type": "json",
"exec": "/home/michael/.config/waybar/modules/powermenu.sh",
"format": "<span font='Font Awesome 5 Free 9'>{icon}</span> {}",
"format-icons": [""],
"interval": 3600,
"escape": true,
"on-click": "/home/marco/.config/wofi/wofi-power.sh"
},
}

View file

@ -0,0 +1,195 @@
// =============================================================================
//
// Waybar configuration
//
// Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration
//
// =============================================================================
{
// -------------------------------------------------------------------------
// Global configuration
// -------------------------------------------------------------------------
"layer": "bottom",
"position": "bottom",
// If height property would be not present, it'd be calculated dynamically
"height": 30,
"modules-left": [
"hyprland/workspaces",
"sway/mode"
],
"modules-center": [
"sway/window"
],
"modules-right": [
"custom/vpn",
"memory",
"cpu",
"custom/gpu",
"temperature",
"clock#date",
"clock#time",
"tray"
],
// -------------------------------------------------------------------------
// Modules
// -------------------------------------------------------------------------
"clock#time": {
"interval": 1,
"format": "{:%H:%M:%S}",
"tooltip": false
},
"clock#date": {
"interval": 10,
"format": " {:%e %b %Y}", // Icon: calendar-alt
"tooltip-format": "{:%e %B %Y}"
},
"cpu": {
"interval": 5,
"format": " {usage}% ({load})", // Icon: microchip
"states": {
"warning": 70,
"critical": 90
}
},
"custom/keyboard-layout": {
"exec": "swaymsg -t get_inputs | grep -m1 'xkb_active_layout_name' | cut -d '\"' -f4",
// Interval set only as a fallback, as the value is updated by signal
"interval": 30,
"format": " {}", // Icon: keyboard
// Signal sent by Sway key binding (~/.config/sway/key-bindings)
"signal": 1, // SIGHUP
"tooltip": false
},
"memory": {
"interval": 5,
"format": " {}%", // Icon: memory
"states": {
"warning": 70,
"critical": 90
}
},
"network": {
"interface": "tun0",
"interval": 5,
"format": "🔒 VPN up",
"format-disconnected": "🔓 VPN down",
"tooltip-format": "{ifname} {ipaddr}"
},
// "network": {
// "interval": 5,
// "format-wifi": " {essid} ({signalStrength}%)", // Icon: wifi
// "format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
// "format-disconnected": "⚠ Disconnected",
// "tooltip-format": "{ifname}: {ipaddr}"
// },
"sway/mode": {
"format": "<span style=\"italic\"> {}</span>", // Icon: expand-arrows-alt
"tooltip": false
},
"sway/window": {
"format": "{}",
"max-length": 120
},
"sway/workspaces": {
"persistent_workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": [],
"6": [],
"7": [],
"8": [],
"9": [],
"10": []
},
"disable-scroll": true,
"all-outputs": false,
// "format": "({name}){icon}",
// "format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "1": "",
// "2": "",
// "3": "",
// "4": "🪲 Debug",
// "5": "📁 Files",
// "6": "🎧 Music",
// "7": "⏵ Video",
// "8": "🗨 IRC",
// "9": "Steam",
// "10":"Scratch",
// },
},
"pulseaudio": {
//"scroll-step": 1,
"format": "{icon} {volume}%",
"format-bluetooth": "{icon} {volume}%",
"format-muted": "",
"format-icons": {
"headphones": "",
"handsfree": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", ""]
},
"on-click": "pavucontrol"
},
"temperature": {
"critical-threshold": 80,
"interval": 5,
"format": "{icon} {temperatureC}°C",
"format-icons": [
"", // Icon: temperature-empty
"", // Icon: temperature-quarter
"", // Icon: temperature-half
"", // Icon: temperature-three-quarters
"" // Icon: temperature-full
],
"tooltip": true
},
"tray": {
"icon-size": 21,
"spacing": 10
},
"custom/vpn": {
"exec": "~/.config/waybar/scripts/vpn-status.sh",
"interval": 5,
"return-type": "text",
"tooltip": false
},
"custom/gpu": {
"exec": "~/.config/waybar/scripts/gpu-temp.sh",
"interval": 10,
"return-type": "json",
"tooltip": false
}
}

10
waybar/.config/waybar/launch.sh Executable file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env sh
# Terminate already running bar instances
killall -q waybar
# Wait until the processes have been shut down
while pgrep -x waybar >/dev/null; do sleep 1; done
# Launch main
waybar

View file

@ -0,0 +1,207 @@
// __ __ _ _
// | \/ | ___ __| |_ _| | ___ ___
// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
// | | | | (_) | (_| | |_| | | __/\__ \
// |_| |_|\___/ \__,_|\__,_|_|\___||___/
//
//
// by Stephan Raabe (2023)
// -----------------------------------------------------
//
{
// Workspaces
"hyprland/workspaces" : {
"on-click": "activate",
"active-only": false,
"all-outputs": true,
"format": "{}",
"format-icons": {
"urgent": "",
"active": "",
"default": ""
},
"persistent-workspaces": {
"*": 5
}
},
// Hyprland Window
"hyprland/window": {
"rewrite": {
"(.*) - Brave": "$1",
"(.*) - Chromium": "$1",
"(.*) - Brave Search": "$1",
"(.*) - Outlook": "$1",
"(.*) Microsoft Teams": "$1"
},
"separate-outputs": true
},
// Rofi Application Launcher
"custom/appmenu": {
"format": "Apps",
"tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings",
"on-click": "rofi -show drun -replace",
"on-click-right": "~/.config/ml4w/scripts/keybindings.sh",
"tooltip": false
},
// Power Menu
"custom/exit": {
"format": "",
"tooltip-format": "Powermenu",
"on-click": "wlogout -b 4",
"tooltip": false
},
// Keyboard State
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
// System tray
"tray": {
// "icon-size": 21,
"spacing": 10
},
// Clock
"clock": {
// "timezone": "America/New_York",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}"
},
// System
"custom/system": {
"format": "",
"tooltip": false
},
// CPU
"cpu": {
"format": "/ C {usage}% ",
"on-click": "alacritty -e htop"
},
// Memory
"memory": {
"format": "/ M {}% ",
"on-click": "alacritty -e htop"
},
// Harddisc space used
"disk": {
"interval": 30,
"format": "D {percentage_used}% ",
"path": "/",
"on-click": "alacritty -e htop"
},
"hyprland/language": {
"format": "/ K {short}"
},
// Group Hardware
"group/hardware": {
"orientation": "inherit",
"drawer": {
"transition-duration": 300,
"children-class": "not-memory",
"transition-left-to-right": false
},
"modules": [
"custom/system",
"disk",
"cpu",
"memory",
"hyprland/language"
]
},
// Network
"network": {
"format": "{ifname}",
"format-wifi": " {essid} ({signalStrength}%)",
"format-ethernet": " {ifname}",
"format-disconnected": "Disconnected ⚠",
"tooltip-format": " {ifname} via {gwaddri}",
"tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}",
"tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}",
"tooltip-format-disconnected": "Disconnected",
"max-length": 50,
"on-click": "~/.config/ml4w/settings/networkmanager.sh",
"on-click-right": "~/.config/ml4w/scripts/nm-applet.sh toggle",
},
// Battery
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-alt": "{icon} {time}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": [" ", " ", " ", " ", " "]
},
// Pulseaudio
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
// "format": "{icon} {volume}%",
"format": "{icon}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", " ", " "]
},
"on-click": "pavucontrol"
},
// Bluetooth
"bluetooth": {
"format-disabled": "",
"format-off": "",
"interval": 30,
"on-click": "blueman-manager",
"format-no-controller": ""
},
// Other
"user": {
"format": "{user}",
"interval": 60,
"icon": false,
},
// Idle Inhibator
"idle_inhibitor": {
"format": "{icon}",
"tooltip": true,
"format-icons":{
"activated": "",
"deactivated": ""
},
"on-click-right": "hyprlock"
}
}

View file

@ -0,0 +1,7 @@
#!/bin/bash
me=`whoami`
me_name=`getent passwd ${me} | cut -d ':' -f 5 | cut -d ',' -f 1`
class=powermenu
echo -e "{\"text\":\""$me_name"\", \"class\":\""$class"\"}"

View file

@ -0,0 +1,16 @@
{
"layer": "bottom",
"position": "bottom",
"modules-left": ["sway/workspaces"],
"modules-center": ["clock"],
"modules-right": ["network", "pulseaudio", "cpu", "tray"],
"clock": {
"format": "{:%a %d %b %H:%M}"
},
"cpu": {
"format": "{usage}% CPU"
},
"tray": {
"icon-theme": "Papirus"
}
}

View file

@ -0,0 +1,34 @@
* {
font-family: "JetBrains Mono", monospace;
font-size: 11px;
background-color: #121212; /* dunkles Grau/Schwarz */
color: #c0c0c0; /* helles Grau */
}
#sway-workspaces {
background-color: #1f2335; /* dunkles Blau/Grau */
color: #a0a0a0;
padding: 0 12px;
border-radius: 6px;
}
#sway-workspaces > .focused {
background-color: #5c7eae; /* kühles Blau */
color: #1a1a1a;
font-weight: bold;
box-shadow: 0 0 8px 2px rgba(92, 126, 174, 0.8);
border-radius: 6px;
padding: 0 12px;
transition: background-color 0.3s ease;
}
#sway-workspaces .urgent {
background-color: #e06c75; /* rotes Accent */
color: #1a1a1a;
border-radius: 6px;
padding: 0 12px;
}
#clock, #network, #pulseaudio, #battery, #cpu {
padding: 0 12px;
}

View file

@ -0,0 +1,504 @@
/*
* __ __ _ ____ _ _
* \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
* \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
* \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
* \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
* |___/ |___/
*
* by Stephan Raabe (2024)
* -----------------------------------------------------
*/
@define-color backgroundlight #FFFFFF;
@define-color backgrounddark #FFFFFF;
@define-color workspacesbackground1 #FFFFFF;
@define-color workspacesbackground2 #CCCCCC;
@define-color bordercolor #FFFFFF;
@define-color textcolor1 #000000;
@define-color textcolor2 #000000;
@define-color textcolor3 #000000;
@define-color iconcolor #FFFFFF;
/* -----------------------------------------------------
* General
* ----------------------------------------------------- */
* {
font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
border: none;
border-radius: 0px;
}
window#waybar {
background-color: rgba(0,0,0,0.8);
border-bottom: 0px solid #ffffff;
/* color: #FFFFFF; */
background: transparent;
transition-property: background-color;
transition-duration: .5s;
}
/* -----------------------------------------------------
* Workspaces
* ----------------------------------------------------- */
#workspaces {
background: @workspacesbackground1;
margin: 2px 18px 3px 1px;
padding: 0px 2px;
border-radius: 5px 5px 5px 5px;
font-weight: bold;
font-style: normal;
opacity: 1.0;
color: @textcolor1;
}
#workspaces button {
padding: 0px 6px;
margin: 3px 2px;
border-radius: 3px 3px 3px 3px;
color: @textcolor1;
background-color: @workspacesbackground2;
transition: all 0.1s linear;
opacity: 0.4;
}
#workspaces button.active {
color: @textcolor1;
background: @workspacesbackground2;
border-radius: 3px 3px 3px 3px;
min-width: 30px;
transition: all 0.1s linear;
opacity:1.0;
}
#workspaces button:hover {
color: @textcolor1;
background: @workspacesbackground2;
border-radius: 5px 5px 5px 5px;
opacity:0.7;
}
/* -----------------------------------------------------
* Tooltips
* ----------------------------------------------------- */
tooltip {
border-radius: 16px;
background-color: @backgroundlight;
opacity:0.9;
padding:20px;
margin:0px;
}
tooltip label {
color: @textcolor2;
}
/* -----------------------------------------------------
* Window
* ----------------------------------------------------- */
#window {
margin: 3px 15px 3px 0px;
padding: 2px 10px 0px 10px;
border-radius: 5px 5px 5px 5px;
color:white;
font-size:16px;
font-weight:normal;
opacity:1.0;
}
window#waybar.empty #window {
background-color:transparent;
}
/* -----------------------------------------------------
* Taskbar
* ----------------------------------------------------- */
#taskbar {
background: @backgroundlight;
margin: 3px 15px 3px 0px;
padding:0px;
border-radius: 5px 5px 5px 5px;
font-weight: normal;
font-style: normal;
opacity:1.0;
border: 3px solid @backgroundlight;
}
#taskbar button {
margin:0;
border-radius: 5px 5px 5px 5px;
padding: 0px 5px 0px 5px;
}
#taskbar.empty {
background:transparent;
border:0;
padding:0;
margin:0;
}
/* -----------------------------------------------------
* Modules
* ----------------------------------------------------- */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
/* -----------------------------------------------------
* Custom Quicklinks
* ----------------------------------------------------- */
#custom-brave,
#custom-browser,
#custom-keybindings,
#custom-outlook,
#custom-filemanager,
#custom-teams,
#custom-chatgpt,
#custom-calculator,
#custom-windowsvm,
#custom-cliphist,
#custom-settings,
#custom-wallpaper,
#custom-system,
#custom-hyprshade,
#custom-hypridle,
#custom-tools,
#custom-quicklink1,
#custom-quicklink2,
#custom-quicklink3,
#custom-quicklink4,
#custom-quicklink5,
#custom-quicklink6,
#custom-quicklink7,
#custom-quicklink8,
#custom-quicklink9,
#custom-quicklink10,
#custom-quicklink_chromium,
#custom-quicklink_edge,
#custom-quicklink_firefox,
#custom-quicklink_browser,
#custom-quicklink_filemanager,
#custom-quicklink_email,
#custom-quicklink_thunderbird,
#custom-quicklink_calculator,
#custom-waybarthemes {
margin-right: 10px;
font-size: 20px;
font-weight: bold;
opacity: 1.0;
color: @iconcolor;
}
#custom-quicklink1,
#custom-quicklink2,
#custom-quicklink3,
#custom-quicklink4,
#custom-quicklink5,
#custom-quicklink6,
#custom-quicklink7,
#custom-quicklink8,
#custom-quicklink9,
#custom-quicklink10 {
margin-right: 10px;
}
#custom-tools {
margin-right:12px;
}
#custom-hypridle.active {
color: @iconcolor;
}
#custom-hypridle.notactive {
color: #dc2f2f;
}
#custom-ml4w-welcome {
margin-right: 12px;
background-image: url("../assets/ml4w-icon.svg");
background-position: center;
background-repeat: no-repeat;
background-size: contain;
padding-right: 20px;
}
#custom-chatgpt {
margin-right: 16px;
background-image: url("../assets/openai.svg");
background-repeat: no-repeat;
background-position: center;
background-size: contain;
padding-right: 18px;
opacity: 0.8;
}
/* -----------------------------------------------------
* Idle Inhibator
* ----------------------------------------------------- */
#idle_inhibitor {
margin-right: 15px;
font-size: 22px;
font-weight: bold;
opacity: 0.8;
color: @iconcolor;
}
#idle_inhibitor.activated {
margin-right: 15px;
font-size: 20px;
font-weight: bold;
opacity: 0.8;
color: #dc2f2f;
}
/* -----------------------------------------------------
* Custom Modules
* ----------------------------------------------------- */
#custom-appmenu {
background-color: @backgrounddark;
font-size: 16px;
color: @textcolor1;
border-radius: 5px 5px 5px 5px;
padding: 0px 10px 0px 10px;
margin: 2px 17px 2px 0px;
opacity:1.0;
border:3px solid @bordercolor;
}
/* -----------------------------------------------------
* Custom Notification
* ----------------------------------------------------- */
#custom-notification {
margin: 0px 13px 0px 0px;
padding:0px;
font-size:20px;
color: @iconcolor;
opacity: 0.8;
}
/* -----------------------------------------------------
* Custom Exit
* ----------------------------------------------------- */
#custom-exit {
margin: 0px 13px 0px 0px;
padding:0px;
font-size:20px;
color: @iconcolor;
opacity: 0.8;
}
/* -----------------------------------------------------
* Custom Updates
* ----------------------------------------------------- */
#custom-updates {
background-color: @backgroundlight;
font-size: 16px;
color: @textcolor2;
border-radius: 5px 5px 5px 5px;
padding: 2px 10px 0px 10px;
margin: 3px 15px 3px 0px;
opacity:1.0;
}
#custom-updates.green {
background-color: @backgroundlight;
}
#custom-updates.yellow {
background-color: #ff9a3c;
color: #FFFFFF;
}
#custom-updates.red {
background-color: #dc2f2f;
color: #FFFFFF;
}
/* -----------------------------------------------------
* Hardware Group
* ----------------------------------------------------- */
#disk,#memory,#cpu,#language {
margin:0px 10px 0px 0px;
padding:0px;
font-size:16px;
color:@iconcolor;
}
#language {
margin-right:10px;
}
/* -----------------------------------------------------
* Power Profiles Daemon
* ----------------------------------------------------- */
#power-profiles-daemon {
margin: 0px 13px 0px 0px;
padding:0px;
font-size:16px;
color:@iconcolor;
}
/* -----------------------------------------------------
* Clock
* ----------------------------------------------------- */
#clock {
background-color: @backgrounddark;
font-size: 16px;
color: @textcolor1;
border-radius: 3px 5px 3px 5px;
padding: 1px 10px 0px 10px;
margin: 3px 10px 3px 0px;
opacity:1.0;
border:3px solid @bordercolor;
}
/* -----------------------------------------------------
* Backlight
* ----------------------------------------------------- */
#backlight {
background-color: @backgroundlight;
font-size: 16px;
color: @textcolor2;
border-radius: 5px 5px 5px 5px;
padding: 2px 10px 0px 10px;
margin: 3px 15px 3px 0px;
opacity:1.0;
}
/* -----------------------------------------------------
* Pulseaudio
* ----------------------------------------------------- */
#pulseaudio {
background-color: @backgroundlight;
font-size: 16px;
color: @textcolor2;
border-radius: 5px 5px 5px 5px;
padding: 2px 10px 0px 10px;
margin: 3px 15px 3px 0px;
opacity:1.0;
}
#pulseaudio.muted {
background-color: @backgrounddark;
color: @textcolor1;
}
/* -----------------------------------------------------
* Network
* ----------------------------------------------------- */
#network {
background-color: @backgroundlight;
font-size: 16px;
color: @textcolor2;
border-radius: 5px 5px 5px 5px;
padding: 2px 10px 0px 10px;
margin: 3px 15px 3px 0px;
opacity:1.0;
}
#network.ethernet {
background-color: @backgroundlight;
color: @textcolor2;
}
#network.wifi {
background-color: @backgroundlight;
color: @textcolor2;
}
/* -----------------------------------------------------
* Bluetooth
* ----------------------------------------------------- */
#bluetooth, #bluetooth.on, #bluetooth.connected {
background-color: @backgroundlight;
font-size: 16px;
color: @textcolor2;
border-radius: 5px 5px 5px 5px;
padding: 2px 10px 0px 10px;
margin: 3px 15px 3px 0px;
opacity:1.0;
}
#bluetooth.off {
background-color: transparent;
padding: 0px;
margin: 0px;
}
/* -----------------------------------------------------
* Battery
* ----------------------------------------------------- */
#battery {
background-color: @backgroundlight;
font-size: 16px;
color: @textcolor2;
border-radius: 5px 5px 5px 5px;
padding: 2px 15px 0px 10px;
margin: 3px 15px 3px 0px;
opacity:1.0;
}
#battery.charging, #battery.plugged {
color: @textcolor2;
background-color: @backgroundlight;
}
@keyframes blink {
to {
background-color: @backgroundlight;
color: @textcolor2;
}
}
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: @textcolor3;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
/* -----------------------------------------------------
* Tray
* ----------------------------------------------------- */
#tray {
padding: 0px 15px 0px 0px;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
}

View file

@ -0,0 +1,16 @@
#!/bin/bash
# Junction-Temperatur auslesen
TEMP_RAW=$(sensors | grep 'junction:' | awk '{print $2}' | tr -d '+°C')
TEMP_INT=${TEMP_RAW%.*} # Ganzzahl
# Farbliche Klassifikation
if [ "$TEMP_INT" -lt 55 ]; then
CLASS="cool" # grün
elif [ "$TEMP_INT" -lt 75 ]; then
CLASS="warm" # gelb/orange
else
CLASS="hot" # rot
fi
echo "{\"text\": \"GPU: ${TEMP_RAW}°C\", \"class\": \"${CLASS}\"}"

View file

@ -0,0 +1,7 @@
#!/bin/bash
if nmcli con show --active | grep -qi vpn; then
echo "🔒 VPN connected"
else
echo "🔓 VPN disconnected"
fi

View file

@ -0,0 +1,125 @@
#waybar {
font-family: "JetBrainsMono Nerd Font", monospace;
font-size: 14px;
}
#window {
padding: 0 10px;
}
window#waybar {
border: none;
border-radius: 0;
box-shadow: none;
text-shadow: none;
transition-duration: 0s;
color: rgba(217, 216, 216, 1);
background: #1a1b26;
}
#workspaces {
margin: 0 5px;
}
#workspaces button {
padding: 0 6px;
margin: 0 2px;
border-radius: 4px;
border: none;
background: transparent;
color: #c0caf5; /* normale Textfarbe */
font-weight: normal;
}
#workspaces button.focused {
border-bottom: 2px solid #7aa2f7; /* unterstrichenes aktiviertes WS */
color: #7aa2f7; /* aktive Farbe */
font-weight: bold;
}
#workspaces button.urgent {
color: #f7768e;
}
#workspaces button.empty {
color: #565f89; /* gedimmt für leere */
}
#workspaces button:hover {
box-shadow: inherit;
border-color: #bb9af7;
color: #bb9af7;
}
/* Repeat style here to ensure properties are overwritten as there's no !important and button:hover above resets the colour */
#workspaces button.focused {
color: #7aa2f7;
}
#workspaces button.focused:hover {
color: #bb9af7;
}
#pulseaudio {
/* font-size: 26px; */
}
#custom-recorder {
font-size: 18px;
margin: 2px 7px 0px 7px;
color:#ee2e24;
}
#tray,
#mode,
#battery,
#temperature,
#cpu,
#memory,
#network,
#pulseaudio,
#idle_inhibitor,
#sway-language,
#backlight,
#custom-storage,
#custom-cpu_speed,
#custom-powermenu,
#custom-spotify,
#custom-weather,
#custom-mail,
#custom-media {
margin: 0px 0px 0px 10px;
padding: 0 5px;
/* border-top: 3px solid rgba(217, 216, 216, 0.5); */
}
/* #clock {
margin: 0px 16px 0px 10px;
min-width: 140px;
} */
#battery.warning {
color: rgba(255, 210, 4, 1);
}
#battery.critical {
color: rgba(238, 46, 36, 1);
}
#battery.charging {
color: rgba(217, 216, 216, 1);
}
#custom-storage.warning {
color: rgba(255, 210, 4, 1);
}
#custom-storage.critical {
color: rgba(238, 46, 36, 1);
}
@keyframes blink {
to {
background-color: #ffffff;
color: black;
}
}

View file

@ -0,0 +1,144 @@
* {
border: none;
border-radius: 0;
font-family: VictorMono Nerd Font;
font-weight: 600;
font-size: 12px;
min-height: 0;
}
window#waybar {
background: #12131a;
color: white;
}
#workspaces {
background-color: #1d202e;
margin: 5px;
margin-left: 6px;
border-radius: 5px;
}
#workspaces button {
padding: 2px 8px;
color: #fff;
}
#workspaces button.focused {
color: #24283b;
background-color: #7aa2f7;
border-radius: 5px;
}
#workspaces button:hover {
background-color: #7dcfff;
color: #24283b;
border-radius: 5px;
}
#custom-date,
#clock,
#battery,
#pulseaudio,
#network {
background-color: #1d202e;
padding: 2px 10px;
margin: 5px 0px;
}
#custom-date {
color: #7dcfff;
}
#custom-power {
color: #24283b;
background-color: #db4b4b;
border-radius: 5px;
margin-right: 10px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 0px;
padding: 3px 10px;
}
#clock {
color: #b48ead;
border-radius: 0px 5px 5px 0px;
margin-right: 6px;
}
#battery {
color: #9ece6a;
}
#battery.charging {
color: #9ece6a;
}
#battery.warning:not(.charging) {
background-color: #f7768e;
color: #24283b;
border-radius: 5px 5px 5px 5px;
}
#network {
color: #f7768e;
border-radius: 5px 0px 0px 5px;
}
#pulseaudio {
color: #e0af68;
}
#temperature {
background-color: #24283b;
margin: 5px 0;
padding: 0 10px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
color: #82e4ff;
}
#disk {
color: #b9f27c;
margin: 5px 0;
padding-right: 10px;
background-color: #24283b;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
margin-right: 3px;
}
#memory {
margin-left: 5px;
background: #2a3152;
margin: 5px 0;
padding: 0 10px;
margin-left: 3px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
color: #ff9e64;
}
#cpu {
margin: 5px 0;
padding: 0 10px;
background-color: #2a3152;
color: #ff7a93;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
margin-right: 6px;
}
#tray {
background-color: #455085;
margin: 5px;
margin-left: 0px;
margin-right: 6px;
border-radius: 5px;
padding: 0 10px;
}
#tray > * {
padding: 0 2px;
margin: 0 2px;
}

13
wofi/.config/wofi/config Normal file
View file

@ -0,0 +1,13 @@
show=drun
width=750
height=400
always_parse_args=true
show_all=false
term=kitty
hide_scroll=true
print_command=true
insensitive=true
prompt=
columns=2
style=~/.config/wofi/style.css

View file

@ -0,0 +1 @@
404: Not Found

View file

@ -0,0 +1,2 @@
di=1;34:ln=1;36:so=1;33:pi=1;35:ex=1;32:bd=1;33;40:cd=1;33;40:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:mi=5;37;41:or=1;31:*.tar=1;31:*.zip=1;31:*.gz=1;31:*.xz=1;31:*.rar=1;31:*.7z=1;31:*.pdf=1;35:*.jpg=1;35:*.png=1;35:*.mp3=1;36:*.mp4=1;36:*.pl=1;33:*.sh=1;32:*.bash=1;32:*.c=1;34:*.h=1;34:*.cpp=1;34:*.rs=1;33

295
zsh/.zsh/completion/_git Normal file
View file

@ -0,0 +1,295 @@
#compdef git gitk
# zsh completion wrapper for git
#
# Copyright (c) 2012-2020 Felipe Contreras <felipe.contreras@gmail.com>
#
# The recommended way to install this script is to make a copy of it as a
# file named '_git' inside any directory in your fpath.
#
# For example, create a directory '~/.zsh/', copy this file to '~/.zsh/_git',
# and then add the following to your ~/.zshrc file:
#
# fpath=(~/.zsh $fpath)
#
# You need git's bash completion script installed. By default bash-completion's
# location will be used (e.g. pkg-config --variable=completionsdir bash-completion).
#
# If your bash completion script is somewhere else, you can specify the
# location in your ~/.zshrc:
#
# zstyle ':completion:*:*:git:*' script ~/.git-completion.bash
#
zstyle -T ':completion:*:*:git:*' tag-order && \
zstyle ':completion:*:*:git:*' tag-order 'common-commands'
zstyle -s ":completion:*:*:git:*" script script
if [ -z "$script" ]; then
local -a locations
local e bash_completion
bash_completion=$(pkg-config --variable=completionsdir bash-completion 2>/dev/null) ||
bash_completion='/usr/share/bash-completion/completions/'
locations=(
"$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash
"$HOME/.local/share/bash-completion/completions/git"
"$bash_completion/git"
'/etc/bash_completion.d/git' # old debian
)
for e in $locations; do
test -f $e && script="$e" && break
done
fi
local old_complete="$functions[complete]"
functions[complete]=:
GIT_SOURCING_ZSH_COMPLETION=y . "$script"
functions[complete]="$old_complete"
__gitcomp ()
{
emulate -L zsh
local cur_="${3-$cur}"
case "$cur_" in
--*=)
;;
--no-*)
local c IFS=$' \t\n'
local -a array
for c in ${=1}; do
if [[ $c == "--" ]]; then
continue
fi
c="$c${4-}"
case $c in
--*=|*.) ;;
*) c="$c " ;;
esac
array+=("$c")
done
compset -P '*[=:]'
compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
;;
*)
local c IFS=$' \t\n'
local -a array
for c in ${=1}; do
if [[ $c == "--" ]]; then
c="--no-...${4-}"
array+=("$c ")
break
fi
c="$c${4-}"
case $c in
--*=|*.) ;;
*) c="$c " ;;
esac
array+=("$c")
done
compset -P '*[=:]'
compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
;;
esac
}
__gitcomp_direct ()
{
emulate -L zsh
compset -P '*[=:]'
compadd -Q -S '' -- ${(f)1} && _ret=0
}
__gitcomp_nl ()
{
emulate -L zsh
compset -P '*[=:]'
compadd -Q -S "${4- }" -p "${2-}" -- ${(f)1} && _ret=0
}
__gitcomp_file ()
{
emulate -L zsh
compset -P '*[=:]'
compadd -f -p "${2-}" -- ${(f)1} && _ret=0
}
__gitcomp_direct_append ()
{
__gitcomp_direct "$@"
}
__gitcomp_nl_append ()
{
__gitcomp_nl "$@"
}
__gitcomp_file_direct ()
{
__gitcomp_file "$1" ""
}
_git_zsh ()
{
__gitcomp "v1.1"
}
__git_complete_command ()
{
emulate -L zsh
local command="$1"
local completion_func="_git_${command//-/_}"
if (( $+functions[$completion_func] )); then
emulate ksh -c $completion_func
return 0
else
return 1
fi
}
__git_zsh_bash_func ()
{
emulate -L ksh
local command=$1
__git_complete_command "$command" && return
local expansion=$(__git_aliased_command "$command")
if [ -n "$expansion" ]; then
words[1]=$expansion
__git_complete_command "$expansion"
fi
}
__git_zsh_cmd_common ()
{
local -a list
list=(
add:'add file contents to the index'
bisect:'find by binary search the change that introduced a bug'
branch:'list, create, or delete branches'
checkout:'checkout a branch or paths to the working tree'
clone:'clone a repository into a new directory'
commit:'record changes to the repository'
diff:'show changes between commits, commit and working tree, etc'
fetch:'download objects and refs from another repository'
grep:'print lines matching a pattern'
init:'create an empty Git repository or reinitialize an existing one'
log:'show commit logs'
merge:'join two or more development histories together'
mv:'move or rename a file, a directory, or a symlink'
pull:'fetch from and merge with another repository or a local branch'
push:'update remote refs along with associated objects'
rebase:'forward-port local commits to the updated upstream head'
reset:'reset current HEAD to the specified state'
restore:'restore working tree files'
rm:'remove files from the working tree and from the index'
show:'show various types of objects'
status:'show the working tree status'
switch:'switch branches'
tag:'create, list, delete or verify a tag object signed with GPG')
_describe -t common-commands 'common commands' list && _ret=0
}
__git_zsh_cmd_alias ()
{
local -a list
list=(${${(0)"$(git config -z --get-regexp '^alias\.*')"}#alias.})
list=(${(f)"$(printf "%s:alias for '%s'\n" ${(f@)list})"})
_describe -t alias-commands 'aliases' list && _ret=0
}
__git_zsh_cmd_all ()
{
local -a list
emulate ksh -c __git_compute_all_commands
list=( ${=__git_all_commands} )
_describe -t all-commands 'all commands' list && _ret=0
}
__git_zsh_main ()
{
local curcontext="$curcontext" state state_descr line
typeset -A opt_args
local -a orig_words
orig_words=( ${words[@]} )
_arguments -C \
'(-p --paginate --no-pager)'{-p,--paginate}'[pipe all output into ''less'']' \
'(-p --paginate)--no-pager[do not pipe git output into a pager]' \
'--git-dir=-[set the path to the repository]: :_directories' \
'--bare[treat the repository as a bare repository]' \
'(- :)--version[prints the git suite version]' \
'--exec-path=-[path to where your core git programs are installed]:: :_directories' \
'--html-path[print the path where git''s HTML documentation is installed]' \
'--info-path[print the path where the Info files are installed]' \
'--man-path[print the manpath (see `man(1)`) for the man pages]' \
'--work-tree=-[set the path to the working tree]: :_directories' \
'--namespace=-[set the git namespace]' \
'--no-replace-objects[do not use replacement refs to replace git objects]' \
'(- :)--help[prints the synopsis and a list of the most commonly used commands]: :->arg' \
'(-): :->command' \
'(-)*:: :->arg' && return
case $state in
(command)
_tags common-commands alias-commands all-commands
while _tags; do
_requested common-commands && __git_zsh_cmd_common
_requested alias-commands && __git_zsh_cmd_alias
_requested all-commands && __git_zsh_cmd_all
let _ret || break
done
;;
(arg)
local command="${words[1]}" __git_dir __git_cmd_idx=1
if (( $+opt_args[--bare] )); then
__git_dir='.'
else
__git_dir=${opt_args[--git-dir]}
fi
(( $+opt_args[--help] )) && command='help'
words=( ${orig_words[@]} )
__git_zsh_bash_func $command
;;
esac
}
_git ()
{
local _ret=1
local cur cword prev
local __git_repo_path
cur=${words[CURRENT]}
prev=${words[CURRENT-1]}
let cword=CURRENT-1
if (( $+functions[__${service}_zsh_main] )); then
__${service}_zsh_main
elif (( $+functions[__${service}_main] )); then
emulate ksh -c __${service}_main
elif (( $+functions[_${service}] )); then
emulate ksh -c _${service}
elif (( $+functions[_${service//-/_}] )); then
emulate ksh -c _${service//-/_}
fi
let _ret && _default && _ret=0
return _ret
}
_git

72
zsh/.zshrc Normal file
View file

@ -0,0 +1,72 @@
# The following lines were added by compinstall
zstyle :compinstall filename '/home/michael/.zshrc'
fpath=(~/.zsh/completion $fpath)
autoload -Uz compinit
compinit
autoload -Uz _git
compdef _git git
# End of lines added by compinstall
# Lines configured by zsh-newuser-install
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
# End of lines configured by zsh-newuser-install
PROMPT='%n@%m:%~> '
setopt histignoredups
setopt share_history
# Key Bindings
bindkey '^R' history-incremental-search-backward
export LS_COLORS="$(cat ~/.ls_colors_tokyonight)"
alias mutt='neomutt'
alias ls='ls --color=auto'
# chpwd Funktion für PERL5LIB setzen
function chpwd() {
if [[ "$PWD" == $HOME/work/os-autoinst-distri-opensuse* ]]; then
export PERL5LIB="$HOME/work/os-autoinst-distri-opensuse/lib:$HOME/work/os-autoinst-distri-opensuse/os-autoinst"
else
unset PERL5LIB
fi
}
if [[ "$PWD" == $HOME/work/os-autoinst-distri-opensuse* ]]; then
export PERL5LIB="$HOME/work/os-autoinst-distri-opensuse/lib"
fi
# Pfad zur Datei, die den letzten Ausführungs-Tag speichert
ORG_AGENDA_RUNFILE="$HOME/.cache/org_agenda_last_run"
# Heutiges Datum in JJJJ-MM-TT Format
today=$(date +%F)
# Prüfen, ob die Datei existiert und Datum stimmt
if [[ ! -f "$ORG_AGENDA_RUNFILE" || "$(cat $ORG_AGENDA_RUNFILE)" != "$today" ]]; then
# Skript ausführen
~/bin/org-agenda
# Datum in Datei schreiben
echo "$today" > "$ORG_AGENDA_RUNFILE"
fi
if gpgconf --launch gpg-agent &>/dev/null; then
export GPG_TTY=$(tty)
gpg-connect-agent updatestartuptty /bye &>/dev/null
fi
eval "$(keychain --quiet --eval --agents ssh)"