diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..81e30a0 --- /dev/null +++ b/.gitmodules @@ -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 diff --git a/bash/.alias b/bash/.alias new file mode 100644 index 0000000..2461d6b --- /dev/null +++ b/bash/.alias @@ -0,0 +1 @@ +alias vim=nvim diff --git a/bash/.bashrc b/bash/.bashrc index d44a64e..4256445 100644 --- a/bash/.bashrc +++ b/bash/.bashrc @@ -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)" + + diff --git a/bash/.profile b/bash/.profile new file mode 100644 index 0000000..a5d01de --- /dev/null +++ b/bash/.profile @@ -0,0 +1,25 @@ +# Sample .profile for SUSE Linux +# rewritten by Christian Steinruecken +# +# 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 diff --git a/emacs/.config/emacs b/emacs/.config/emacs new file mode 160000 index 0000000..ed9190e --- /dev/null +++ b/emacs/.config/emacs @@ -0,0 +1 @@ +Subproject commit ed9190ef005829c7a2331e12fb36207794c5ad75 diff --git a/environment/.config/environment.d/99-sway.conf b/environment/.config/environment.d/99-sway.conf new file mode 100644 index 0000000..c708f0f --- /dev/null +++ b/environment/.config/environment.d/99-sway.conf @@ -0,0 +1,5 @@ +XDG_CURRENT_DESKTOP=sway +XDG_SESSION_TYPE=wayland +XDG_DESKTOP_PORTAL=xdg-desktop-portal-wlr + + diff --git a/foot/.config/foot/foot.ini b/foot/.config/foot/foot.ini new file mode 100644 index 0000000..6a3c9cf --- /dev/null +++ b/foot/.config/foot/foot.ini @@ -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 diff --git a/fuzzel/.config/fuzzel/fuzzel.ini b/fuzzel/.config/fuzzel/fuzzel.ini new file mode 100644 index 0000000..315f75d --- /dev/null +++ b/fuzzel/.config/fuzzel/fuzzel.ini @@ -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 diff --git a/hyperland/.config/hypr/conf/animations.conf b/hyperland/.config/hypr/conf/animations.conf new file mode 100644 index 0000000..31f1c52 --- /dev/null +++ b/hyperland/.config/hypr/conf/animations.conf @@ -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 +} \ No newline at end of file diff --git a/hyperland/.config/hypr/conf/autostart.conf b/hyperland/.config/hypr/conf/autostart.conf new file mode 100644 index 0000000..25a2877 --- /dev/null +++ b/hyperland/.config/hypr/conf/autostart.conf @@ -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 diff --git a/hyperland/.config/hypr/conf/binds.conf b/hyperland/.config/hypr/conf/binds.conf new file mode 100644 index 0000000..3fd2877 --- /dev/null +++ b/hyperland/.config/hypr/conf/binds.conf @@ -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 diff --git a/hyperland/.config/hypr/conf/cursor.conf b/hyperland/.config/hypr/conf/cursor.conf new file mode 100644 index 0000000..faca562 --- /dev/null +++ b/hyperland/.config/hypr/conf/cursor.conf @@ -0,0 +1 @@ +env = XCURSOR_SIZE,24 diff --git a/hyperland/.config/hypr/conf/decoration.conf b/hyperland/.config/hypr/conf/decoration.conf new file mode 100644 index 0000000..8351898 --- /dev/null +++ b/hyperland/.config/hypr/conf/decoration.conf @@ -0,0 +1,4 @@ +decoration { + rounding = 6 +} + diff --git a/hyperland/.config/hypr/conf/environments.conf b/hyperland/.config/hypr/conf/environments.conf new file mode 100644 index 0000000..71cfe68 --- /dev/null +++ b/hyperland/.config/hypr/conf/environments.conf @@ -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 diff --git a/hyperland/.config/hypr/conf/general.conf b/hyperland/.config/hypr/conf/general.conf new file mode 100644 index 0000000..7c42749 --- /dev/null +++ b/hyperland/.config/hypr/conf/general.conf @@ -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 +} diff --git a/hyperland/.config/hypr/conf/gestures.conf b/hyperland/.config/hypr/conf/gestures.conf new file mode 100644 index 0000000..90134f5 --- /dev/null +++ b/hyperland/.config/hypr/conf/gestures.conf @@ -0,0 +1,4 @@ +# See https://wiki.hyprland.org/Configuring/Variables/ for more +gestures { + workspace_swipe = true +} diff --git a/hyperland/.config/hypr/conf/input.conf b/hyperland/.config/hypr/conf/input.conf new file mode 100644 index 0000000..4d4389e --- /dev/null +++ b/hyperland/.config/hypr/conf/input.conf @@ -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. +} diff --git a/hyperland/.config/hypr/conf/layouts.conf b/hyperland/.config/hypr/conf/layouts.conf new file mode 100644 index 0000000..4832966 --- /dev/null +++ b/hyperland/.config/hypr/conf/layouts.conf @@ -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 +} diff --git a/hyperland/.config/hypr/conf/misc.conf b/hyperland/.config/hypr/conf/misc.conf new file mode 100644 index 0000000..2867af8 --- /dev/null +++ b/hyperland/.config/hypr/conf/misc.conf @@ -0,0 +1,5 @@ +# See https://wiki.hyprland.org/Configuring/Variables/ for more +misc { + disable_hyprland_logo = true + disable_splash_rendering = true +} \ No newline at end of file diff --git a/hyperland/.config/hypr/conf/monitor.conf b/hyperland/.config/hypr/conf/monitor.conf new file mode 100644 index 0000000..f9057f6 --- /dev/null +++ b/hyperland/.config/hypr/conf/monitor.conf @@ -0,0 +1,2 @@ +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,1 \ No newline at end of file diff --git a/hyperland/.config/hypr/conf/windowrules.conf b/hyperland/.config/hypr/conf/windowrules.conf new file mode 100644 index 0000000..1da6531 --- /dev/null +++ b/hyperland/.config/hypr/conf/windowrules.conf @@ -0,0 +1 @@ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more \ No newline at end of file diff --git a/hyperland/.config/hypr/hyprland.conf b/hyperland/.config/hypr/hyprland.conf new file mode 100644 index 0000000..6d6fdcd --- /dev/null +++ b/hyperland/.config/hypr/hyprland.conf @@ -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 + diff --git a/hyperland/.config/hypr/hyprlock.conf b/hyperland/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..60cc145 --- /dev/null +++ b/hyperland/.config/hypr/hyprlock.conf @@ -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 = Input Password... # 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 = $FAIL ($ATTEMPTS) # 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 +} diff --git a/hyperland/.config/hypr/hyprpaper.conf b/hyperland/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..0eb466e --- /dev/null +++ b/hyperland/.config/hypr/hyprpaper.conf @@ -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 diff --git a/kitty/.config/kitty/catppuccin-mocha.conf b/kitty/.config/kitty/catppuccin-mocha.conf new file mode 100644 index 0000000..f37adf9 --- /dev/null +++ b/kitty/.config/kitty/catppuccin-mocha.conf @@ -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 diff --git a/kitty/.config/kitty/kitty.conf b/kitty/.config/kitty/kitty.conf new file mode 100644 index 0000000..d9d30c9 --- /dev/null +++ b/kitty/.config/kitty/kitty.conf @@ -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 diff --git a/mutt/.muttrc b/mutt/.muttrc index 477d150..48c8fe8 100644 --- a/mutt/.muttrc +++ b/mutt/.muttrc @@ -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 diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua new file mode 100644 index 0000000..4dd55a2 --- /dev/null +++ b/nvim/.config/nvim/init.lua @@ -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', 'lua vim.lsp.buf.definition()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d', 'lua vim.diagnostic.goto_prev()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d', 'lua vim.diagnostic.goto_next()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'f', 'lua vim.lsp.buf.format()', 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('') + 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 y +vim.keymap.set("v", "y", '"+y', { desc = "Yank selection to system clipboard" }) +vim.keymap.set('n', 'oy', ':OrgYtDl', { desc = 'yt-dlp link under cursor' }) + diff --git a/nvim/.config/nvim/init.old b/nvim/.config/nvim/init.old new file mode 100644 index 0000000..acef4a5 --- /dev/null +++ b/nvim/.config/nvim/init.old @@ -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', '', ':NvimTreeToggle', { 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, + }, +}) diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..c50e3d7 --- /dev/null +++ b/nvim/.config/nvim/lazy-lock.json @@ -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" } +} diff --git a/nvim/.config/nvim/lua/plugins/gen.lua b/nvim/.config/nvim/lua/plugins/gen.lua new file mode 100644 index 0000000..5350ef0 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/gen.lua @@ -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 = "", -- set keymap to re-send the current prompt + accept_map = "", -- 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 = '', -- 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. + } +} diff --git a/nvim/.config/nvim/lua/plugins/lualine.lua b/nvim/.config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..d99eeb2 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/lualine.lua @@ -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, +} diff --git a/nvim/.config/nvim/lua/plugins/neorg.lua b/nvim/.config/nvim/lua/plugins/neorg.lua new file mode 100644 index 0000000..051c066 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/neorg.lua @@ -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", "Neorg toc", { + desc = "Neorg Table of Contents", + noremap = true, + silent = true, + }) + end, +} diff --git a/nvim/.config/nvim/lua/plugins/nvim-tree.lua b/nvim/.config/nvim/lua/plugins/nvim-tree.lua new file mode 100644 index 0000000..d50c0fd --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/nvim-tree.lua @@ -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", "", ":NvimTreeToggle", { noremap = true, silent = true }) + end, +} diff --git a/nvim/.config/nvim/lua/plugins/orgmode.lua b/nvim/.config/nvim/lua/plugins/orgmode.lua new file mode 100644 index 0000000..4fe4d56 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/orgmode.lua @@ -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, +} diff --git a/nvim/.config/nvim/lua/plugins/perl-lspconfig.lua b/nvim/.config/nvim/lua/plugins/perl-lspconfig.lua new file mode 100644 index 0000000..a9e75d7 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/perl-lspconfig.lua @@ -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 +} diff --git a/nvim/.config/nvim/lua/plugins/render-markdown.lua b/nvim/.config/nvim/lua/plugins/render-markdown.lua new file mode 100644 index 0000000..51761b4 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/render-markdown.lua @@ -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 = {}, +} diff --git a/nvim/.config/nvim/lua/plugins/telescope.lua b/nvim/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..336012c --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/telescope.lua @@ -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', 'ff', builtin.find_files, { desc = "Find Files" }) + vim.keymap.set('n', 'fg', builtin.live_grep, { desc = "Live Grep" }) + vim.keymap.set('n', 'fb', builtin.buffers, { desc = "Find Buffers" }) + vim.keymap.set('n', 'fh', builtin.help_tags, { desc = "Help Tags" }) + end +} diff --git a/nvim/.config/nvim/lua/plugins/tokyonight.lua b/nvim/.config/nvim/lua/plugins/tokyonight.lua new file mode 100644 index 0000000..8e12f5c --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/tokyonight.lua @@ -0,0 +1,10 @@ +return { + "folke/tokyonight.nvim", + lazy = false, + priority = 1000, + config = function() + require("tokyonight").setup({ style = "night" }) + vim.cmd("colorscheme tokyonight") + end, +} + diff --git a/nvim/.config/nvim/lua/plugins/treesitter.lua b/nvim/.config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..5b0242a --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/treesitter.lua @@ -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, + }, +} diff --git a/sway/.config/sway/config b/sway/.config/sway/config new file mode 100644 index 0000000..1481027 --- /dev/null +++ b/sway/.config/sway/config @@ -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 +# 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 window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s 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 diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf new file mode 100644 index 0000000..1965bc0 --- /dev/null +++ b/tmux/.tmux.conf @@ -0,0 +1,2 @@ + +run-shell "~/.tmux/themes/nord-tmux/nord.tmux" diff --git a/tmux/.tmux/themes/nord-tmux b/tmux/.tmux/themes/nord-tmux new file mode 160000 index 0000000..f7b6da0 --- /dev/null +++ b/tmux/.tmux/themes/nord-tmux @@ -0,0 +1 @@ +Subproject commit f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92 diff --git a/vim/.vim/.netrwhist b/vim/.vim/.netrwhist deleted file mode 100644 index bb62295..0000000 --- a/vim/.vim/.netrwhist +++ /dev/null @@ -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' diff --git a/vim/.vim/colors/kuronami.vim b/vim/.vim/colors/kuronami.vim deleted file mode 100644 index 3ce290c..0000000 --- a/vim/.vim/colors/kuronami.vim +++ /dev/null @@ -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 diff --git a/vim/.vim/vimrc b/vim/.vim/vimrc deleted file mode 100644 index 3d935b6..0000000 --- a/vim/.vim/vimrc +++ /dev/null @@ -1,3 +0,0 @@ -colorscheme kuronami - -filetype indent on diff --git a/waybar/.config/waybar/config b/waybar/.config/waybar/config new file mode 100644 index 0000000..b1820a0 --- /dev/null +++ b/waybar/.config/waybar/config @@ -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": " {}", // 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": "{icon} {}", + "format-icons": [""], + "interval": 3600, + "escape": true, + "on-click": "/home/marco/.config/wofi/wofi-power.sh" + }, + +} + diff --git a/waybar/.config/waybar/config-hyprland b/waybar/.config/waybar/config-hyprland new file mode 100644 index 0000000..b169a72 --- /dev/null +++ b/waybar/.config/waybar/config-hyprland @@ -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": " {}", // 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 + } + + + +} + diff --git a/waybar/.config/waybar/launch.sh b/waybar/.config/waybar/launch.sh new file mode 100755 index 0000000..720620c --- /dev/null +++ b/waybar/.config/waybar/launch.sh @@ -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 diff --git a/waybar/.config/waybar/modules.json b/waybar/.config/waybar/modules.json new file mode 100644 index 0000000..ef463dc --- /dev/null +++ b/waybar/.config/waybar/modules.json @@ -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": "{:%Y %B}\n{calendar}", + "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" + } +} diff --git a/waybar/.config/waybar/modules/powermenu.sh b/waybar/.config/waybar/modules/powermenu.sh new file mode 100644 index 0000000..4671ca4 --- /dev/null +++ b/waybar/.config/waybar/modules/powermenu.sh @@ -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"\"}" diff --git a/waybar/.config/waybar/old/config b/waybar/.config/waybar/old/config new file mode 100644 index 0000000..16e79bb --- /dev/null +++ b/waybar/.config/waybar/old/config @@ -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" + } +} diff --git a/waybar/.config/waybar/old/style.css b/waybar/.config/waybar/old/style.css new file mode 100644 index 0000000..a1727d0 --- /dev/null +++ b/waybar/.config/waybar/old/style.css @@ -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; +} diff --git a/waybar/.config/waybar/old/style.css.orig b/waybar/.config/waybar/old/style.css.orig new file mode 100644 index 0000000..0069600 --- /dev/null +++ b/waybar/.config/waybar/old/style.css.orig @@ -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; +} + + diff --git a/waybar/.config/waybar/scripts/gpu-temp.sh b/waybar/.config/waybar/scripts/gpu-temp.sh new file mode 100755 index 0000000..d309a55 --- /dev/null +++ b/waybar/.config/waybar/scripts/gpu-temp.sh @@ -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}\"}" diff --git a/waybar/.config/waybar/scripts/vpn-status.sh b/waybar/.config/waybar/scripts/vpn-status.sh new file mode 100755 index 0000000..992e7e7 --- /dev/null +++ b/waybar/.config/waybar/scripts/vpn-status.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if nmcli con show --active | grep -qi vpn; then + echo "🔒 VPN connected" +else + echo "🔓 VPN disconnected" +fi diff --git a/waybar/.config/waybar/style.css b/waybar/.config/waybar/style.css new file mode 100644 index 0000000..e7b1b97 --- /dev/null +++ b/waybar/.config/waybar/style.css @@ -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; + } +} diff --git a/waybar/.config/waybar/style.css.1 b/waybar/.config/waybar/style.css.1 new file mode 100644 index 0000000..dfe3cf4 --- /dev/null +++ b/waybar/.config/waybar/style.css.1 @@ -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; +} diff --git a/wofi/.config/wofi/config b/wofi/.config/wofi/config new file mode 100644 index 0000000..6d4a2bc --- /dev/null +++ b/wofi/.config/wofi/config @@ -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 diff --git a/wofi/.config/wofi/style.css b/wofi/.config/wofi/style.css new file mode 100644 index 0000000..1becba2 --- /dev/null +++ b/wofi/.config/wofi/style.css @@ -0,0 +1 @@ +404: Not Found \ No newline at end of file diff --git a/zsh/.ls_colors_tokyonight b/zsh/.ls_colors_tokyonight new file mode 100644 index 0000000..c21060d --- /dev/null +++ b/zsh/.ls_colors_tokyonight @@ -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 + diff --git a/zsh/.zsh/completion/_git b/zsh/.zsh/completion/_git new file mode 100644 index 0000000..f5877bd --- /dev/null +++ b/zsh/.zsh/completion/_git @@ -0,0 +1,295 @@ +#compdef git gitk + +# zsh completion wrapper for git +# +# Copyright (c) 2012-2020 Felipe Contreras +# +# 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 diff --git a/zsh/.zshrc b/zsh/.zshrc new file mode 100644 index 0000000..e0d9e3a --- /dev/null +++ b/zsh/.zshrc @@ -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)" +