├── .gitignore ├── silverblue ├── .gitignore ├── .config │ ├── pypoetry │ │ └── config.toml │ └── personal │ │ ├── path │ │ ├── env │ │ └── alias └── .profile ├── sway ├── .config │ ├── sway │ │ ├── bar │ │ ├── inputs │ │ ├── lock │ │ ├── gtk_config │ │ ├── theme │ │ ├── autostart │ │ ├── config │ │ ├── windows │ │ └── keybindings │ ├── ulauncher-system │ │ ├── desktops.json │ │ └── entries │ │ │ └── sway.json │ ├── waybar │ │ ├── toggle-mako.sh │ │ ├── mako-status.sh │ │ ├── wf-recorder-status.sh │ │ ├── toggle-wf-recorder.sh │ │ ├── mediaplayer.py │ │ ├── config │ │ └── style.css │ ├── swappy │ │ └── config │ ├── kanshi │ │ └── config │ ├── mako │ │ └── config │ └── alacritty │ │ └── alacritty.yml └── .zlogin_sway ├── nvim └── .config │ └── nvim │ ├── init.lua │ ├── lua │ ├── plugins │ │ ├── neogit.lua │ │ ├── lualine.lua │ │ ├── nvim-tree.lua │ │ ├── blankline.lua │ │ ├── feline.lua │ │ ├── catppuccin.lua │ │ ├── zen-mode.lua │ │ ├── lspstatus.lua │ │ ├── autopairs.lua │ │ ├── lspkind.lua │ │ ├── treesitter.lua │ │ ├── luasnip.lua │ │ ├── telescope.lua │ │ ├── cmp.lua │ │ ├── formatter.lua │ │ └── lsp.lua │ ├── utils.lua │ ├── keybindings.lua │ ├── configs.lua │ └── plugins.lua │ ├── ftplugin │ └── java.lua │ └── plugin │ └── packer_compiled.lua ├── tmux ├── .tmux-cht-languages ├── .tmux-cht-command ├── .tmux_dark.tmux ├── .tmux_light.tmux └── .tmux.conf ├── .vscode └── settings.json ├── install-demo ├── install-work ├── install-personal ├── zsh ├── .oh-my-zsh │ └── custom │ │ ├── plugins │ │ ├── auto-source │ │ │ └── auto-source.plugin.zsh │ │ ├── distrobox │ │ │ ├── distrobox.plugin.zsh │ │ │ └── README.md │ │ ├── last-working-dir-tmux │ │ │ └── last-working-dir-tmux.plugin.zsh │ │ └── toolbox │ │ │ ├── README.md │ │ │ └── toolbox.plugin.zsh │ │ ├── example.zsh │ │ └── themes │ │ ├── omer.zsh-theme │ │ └── m3b6.zsh-theme ├── .zsh_profile └── .zshrc ├── .gitmodules ├── clean-env ├── bin └── .local │ └── dbin │ ├── gnome-light │ ├── gnome-dark │ ├── tmux-cht.sh │ ├── tmux-personal │ ├── tmux-openpatch │ └── tmux-session ├── install ├── README.md └── xkb └── .config └── xkb └── symbols └── custom /.gitignore: -------------------------------------------------------------------------------- 1 | nvim/.config/nvim/undo 2 | -------------------------------------------------------------------------------- /silverblue/.gitignore: -------------------------------------------------------------------------------- 1 | .toolbox 2 | -------------------------------------------------------------------------------- /silverblue/.config/pypoetry/config.toml: -------------------------------------------------------------------------------- 1 | [virtualenvs] 2 | in-project = true 3 | -------------------------------------------------------------------------------- /sway/.config/sway/bar: -------------------------------------------------------------------------------- 1 | bar { 2 | swaybar_command $bar 3 | workspace_buttons yes 4 | } 5 | -------------------------------------------------------------------------------- /nvim/.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | require('plugins') 2 | require('configs') 3 | require('keybindings') 4 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/neogit.lua: -------------------------------------------------------------------------------- 1 | local neogit = require('neogit') 2 | 3 | neogit.setup {} 4 | -------------------------------------------------------------------------------- /sway/.config/ulauncher-system/desktops.json: -------------------------------------------------------------------------------- 1 | { 2 | "sway": { 3 | "env": "SWAYSOCK" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/lualine.lua: -------------------------------------------------------------------------------- 1 | require('lualine').setup { 2 | options = { 3 | theme = 'catppuccin' 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/nvim-tree.lua: -------------------------------------------------------------------------------- 1 | require "nvim-tree".setup { 2 | git = { 3 | enable = true, 4 | timeout = 500 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sway/.config/waybar/toggle-mako.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if pgrep -x mako >/dev/null; 4 | then 5 | pkill --signal SIGINT mako 6 | else 7 | mako 8 | fi; 9 | -------------------------------------------------------------------------------- /tmux/.tmux-cht-languages: -------------------------------------------------------------------------------- 1 | nodejs 2 | javascript 3 | typescript 4 | python 5 | zsh 6 | lua 7 | bash 8 | html 9 | css 10 | java 11 | latex 12 | golang 13 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/blankline.lua: -------------------------------------------------------------------------------- 1 | vim.opt.list = false 2 | vim.opt.listchars:append("space:⋅") 3 | vim.opt.listchars:append("eol:↴") 4 | 5 | require("ibl").setup { 6 | } 7 | -------------------------------------------------------------------------------- /sway/.config/swappy/config: -------------------------------------------------------------------------------- 1 | [Default] 2 | save_dir=$HOME/Screenshots 3 | save_filename_format=swappy-%Y%m%d-%H%M%S.png 4 | show_panel=false 5 | line_size=5 6 | text_size=20 7 | text_font=sans-serif 8 | -------------------------------------------------------------------------------- /sway/.config/waybar/mako-status.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if pgrep -x mako >/dev/null; then 4 | echo '{"text":"On","class":"on","alt":"on"}' 5 | else 6 | echo '{"text":"Off","class":"off","alt":"off"}' 7 | fi 8 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/feline.lua: -------------------------------------------------------------------------------- 1 | local ctp_feline = require('catppuccin.groups.integrations.feline') 2 | 3 | ctp_feline.setup() 4 | 5 | require("feline").setup({ 6 | components = ctp_feline.get(), 7 | }) 8 | -------------------------------------------------------------------------------- /sway/.config/sway/inputs: -------------------------------------------------------------------------------- 1 | input * { 2 | xkb_layout de 3 | xkb_variant nodeadkeys 4 | xkb_options caps:escape 5 | } 6 | 7 | input type:touchpad { 8 | tap enabled 9 | natural_scroll enabled 10 | } 11 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/catppuccin.lua: -------------------------------------------------------------------------------- 1 | require("catppuccin").setup( 2 | { 3 | background = { 4 | light = "latte", 5 | dark = "mocha" 6 | }, 7 | transparent_background = true, 8 | } 9 | ) 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Lua.diagnostics.globals": [ 3 | "vim" 4 | ], 5 | "Lua.workspace.library": [ 6 | "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/" 7 | ], 8 | "Lua.workspace.checkThirdParty": false 9 | } -------------------------------------------------------------------------------- /sway/.config/sway/lock: -------------------------------------------------------------------------------- 1 | exec swayidle -w \ 2 | timeout 1800 '$lock' \ 3 | timeout 1805 'swaymsg "output * dpms off"' \ 4 | resume 'swaymsg "output * dpms on"' \ 5 | before-sleep 'playerctl pause' \ 6 | before-sleep '$lock' 7 | -------------------------------------------------------------------------------- /sway/.config/sway/gtk_config: -------------------------------------------------------------------------------- 1 | exec_always { 2 | gsettings set org.gnome.desktop.interface gtk-theme "Nordic-darker" 3 | gsettings set org.gnome.desktop.wm.preferences theme "Nodic-darker" 4 | gsettings set org.gnome.desktop.interface icon-theme "Zafiro-Icons-Dark" 5 | } 6 | -------------------------------------------------------------------------------- /sway/.config/waybar/wf-recorder-status.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if pgrep -x wf-recorder >/dev/null; then 4 | echo '{"text":"On","class":"on","alt":"on"}' 5 | else 6 | echo '{"text":"Off","class":"off","alt":"off","tooltip": "Left: Screen\nRight: Window\nMiddle: Selection"}' 7 | fi 8 | -------------------------------------------------------------------------------- /install-demo: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | if [[ -z $STOW_FOLDERS ]]; then 3 | STOW_FOLDERS="bin,nvim,demo,zsh,silverblue,tmux" 4 | fi 5 | 6 | if [[ -z $DOTFILES ]]; then 7 | DOTFILES=$HOME/.dotfiles 8 | fi 9 | 10 | STOW_FOLDERS=$STOW_FOLDERS DOTFILES=$DOTFILES $DOTFILES/install 11 | -------------------------------------------------------------------------------- /install-work: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | if [[ -z $STOW_FOLDERS ]]; then 3 | STOW_FOLDERS="bin,nvim,work,xkb,zsh,silverblue,tmux" 4 | fi 5 | 6 | if [[ -z $DOTFILES ]]; then 7 | DOTFILES=$HOME/.dotfiles 8 | fi 9 | 10 | STOW_FOLDERS=$STOW_FOLDERS DOTFILES=$DOTFILES $DOTFILES/install 11 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/utils.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | function M.map(mode, lhs, rhs, opts) 4 | local options = {noremap = true} 5 | if opts then options = vim.tbl_extend("force", options, opts) end 6 | vim.api.nvim_set_keymap(mode, lhs, rhs, options) 7 | end 8 | 9 | return M 10 | -------------------------------------------------------------------------------- /install-personal: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | if [[ -z $STOW_FOLDERS ]]; then 3 | STOW_FOLDERS="bin,nvim,personal,xkb,zsh,silverblue,tmux" 4 | fi 5 | 6 | if [[ -z $DOTFILES ]]; then 7 | DOTFILES=$HOME/.dotfiles 8 | fi 9 | 10 | STOW_FOLDERS=$STOW_FOLDERS DOTFILES=$DOTFILES $DOTFILES/install 11 | -------------------------------------------------------------------------------- /zsh/.oh-my-zsh/custom/plugins/auto-source/auto-source.plugin.zsh: -------------------------------------------------------------------------------- 1 | autoload -U add-zsh-hook 2 | 3 | load-local-conf() { 4 | if [[ -f .env && -r .env ]]; then 5 | echo "Found .env!" 6 | source .env 7 | fi 8 | } 9 | 10 | load-local-conf 11 | 12 | add-zsh-hook chpwd load-local-conf 13 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/zen-mode.lua: -------------------------------------------------------------------------------- 1 | require"zen-mode".setup { 2 | window = { 3 | width = 90, 4 | options = { 5 | number = false, 6 | list = true, 7 | relativenumber = false 8 | } 9 | }, 10 | plugins = { 11 | tmux = { enabled = true } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "personal"] 2 | path = personal 3 | url = git@github.com:mikebarkmin/.dotfiles-personal.git 4 | [submodule "work"] 5 | path = work 6 | url = git@github.com:mikebarkmin/.dotfiles-work.git 7 | [submodule "demo"] 8 | path = demo 9 | url = git@github.com:mikebarkmin/.dotfiles-demo.git 10 | -------------------------------------------------------------------------------- /silverblue/.profile: -------------------------------------------------------------------------------- 1 | if [ "$XDG_SESSION_DESKTOP" = "sway" ] ; then 2 | # https://github.com/swaywm/sway/issues/595 3 | export SDL_VIDEODRIVER=wayland 4 | export _JAVA_AWT_WM_NONREPARENTING=1 5 | export QT_QPA_PLATFORM=wayland 6 | export XDG_CURRENT_DESKTOP=sway 7 | export XDG_SESSION_DESKTOP=sway 8 | fi 9 | -------------------------------------------------------------------------------- /clean-env: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | # I am using zsh instead of bash. I was having some troubles using bash with 3 | # arrays. Didn't want to investigate, so I just did zsh 4 | pushd $DOTFILES 5 | for folder in $(echo $STOW_FOLDERS | sed "s/,/ /g") 6 | do 7 | echo "Removing $folder" 8 | stow -D $folder 9 | done 10 | popd 11 | -------------------------------------------------------------------------------- /sway/.config/sway/theme: -------------------------------------------------------------------------------- 1 | # default_border pixel 1 2 | # titlebar_border_thickness 1 3 | gaps outer 5 4 | gaps inner 5 5 | 6 | client.focused #88c0d0 #434c5e #eceff4 #8fbcbb #88c0d0 7 | client.focused_inactive #88c0d0 #2e3440 #d8dee9 #4c566a #4c566a 8 | client.unfocused #88c0d0 #2e3440 #d8dee9 #4c566a #4c566a 9 | client.urgent #ebcb8b #ebcb8b #2e3440 #8fbcbb #ebcb8b 10 | -------------------------------------------------------------------------------- /tmux/.tmux-cht-command: -------------------------------------------------------------------------------- 1 | find 2 | man 3 | tldr 4 | sed 5 | awk 6 | tr 7 | cp 8 | ls 9 | grep 10 | xargs 11 | rg 12 | ps 13 | mv 14 | kill 15 | lsof 16 | less 17 | head 18 | tail 19 | tar 20 | cp 21 | rm 22 | rename 23 | jq 24 | cat 25 | ssh 26 | cargo 27 | git 28 | git-worktree 29 | git-status 30 | git-commit 31 | git-rebase 32 | docker 33 | docker-compose 34 | stow 35 | chmod 36 | chown 37 | make 38 | 39 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/lspstatus.lua: -------------------------------------------------------------------------------- 1 | require('lsp-status').status() 2 | require('lsp-status').register_progress() 3 | require('lsp-status').config({ 4 | indicator_errors = '✗', 5 | indicator_warnings = '⚠', 6 | indicator_info = '', 7 | indicator_hint = '', 8 | indicator_ok = '✔', 9 | current_function = true, 10 | update_interval = 100, 11 | status_symbol = ' 🇻', 12 | }) 13 | -------------------------------------------------------------------------------- /sway/.zlogin_sway: -------------------------------------------------------------------------------- 1 | export SDL_VIDEODRIVER=wayland 2 | export QT_QPA_PLATFORM=wayland 3 | export XDG_CURRENT_DESKTOP=sway 4 | export XDG_SESSION_DESKTOP=sway 5 | export _JAVA_AWT_WM_NONREPARENTING=1 6 | export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true" 7 | export GTK_USE_PORTAL=1 8 | export AWT_TOOLKIT=MToolkit 9 | export GPG_TTY=$(tty) 10 | 11 | [ "$(tty)" = "/dev/tty1" ] && exec sway 12 | -------------------------------------------------------------------------------- /silverblue/.config/personal/path: -------------------------------------------------------------------------------- 1 | addToPath $HOME/.yarn/bin 2 | addToPath $HOME/Applications/gradle/bin 3 | addToPath $HOME/Applications/google-cloud-sdk/bin 4 | addToPath $HOME/.local/dbin 5 | addToPath $HOME/.cargo/bin 6 | addToPath $HOME/Sources/spicetify-cli 7 | addToPath $HOME/bin 8 | addToPath $HOME/.sdkman/bin 9 | addToPath "$HOME/Applications/java/jdk-17.0.8+7/bin" 10 | addToPath $HOME/Applications/apache-ant-1.10.14/bin 11 | -------------------------------------------------------------------------------- /zsh/.oh-my-zsh/custom/example.zsh: -------------------------------------------------------------------------------- 1 | # You can put files here to add functionality separated per file, which 2 | # will be ignored by git. 3 | # Files on the custom/ directory will be automatically loaded by the init 4 | # script, in alphabetical order. 5 | 6 | # For example: add yourself some shortcuts to projects you often work on. 7 | # 8 | # brainstormr=~/Projects/development/planetargon/brainstormr 9 | # cd $brainstormr 10 | # 11 | -------------------------------------------------------------------------------- /bin/.local/dbin/gnome-light: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3' 3 | gsettings set org.gnome.desktop.interface color-scheme 'default' 4 | gsettings set org.gnome.Terminal.ProfilesList default de8a9081-8352-4ce4-9519-5de655ad9361 5 | dconf write /org/gnome/terminal/legacy/theme-variant "'light'" 6 | 7 | sed -i --follow-symlinks 's/tmux_dark/tmux_light/' ~/.tmux.conf 8 | tmux source-file ~/.tmux.conf 9 | tmux set-environment THEME 'light' 10 | -------------------------------------------------------------------------------- /bin/.local/dbin/gnome-dark: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3-dark' 3 | gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' 4 | gsettings set org.gnome.Terminal.ProfilesList default 71a9971e-e829-43a9-9b2f-4565c855d664 5 | dconf write /org/gnome/terminal/legacy/theme-variant "'dark'" 6 | 7 | sed -i --follow-symlinks 's/tmux_light/tmux_dark/' ~/.tmux.conf 8 | tmux source-file ~/.tmux.conf 9 | tmux set-environment THEME 'dark' 10 | -------------------------------------------------------------------------------- /tmux/.tmux_dark.tmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -g status-left "#[fg=blue,bold,bg=#1e1e2e]🐟 #H " 4 | set -g status-right "#[fg=#b4befe,bold,bg=#1e1e2e]#S" 5 | set -g window-status-current-format '#[fg=magenta,bg=#1e1e2e] *#I #W' 6 | set -g window-status-format '#[fg=gray,bg=#1e1e2e] #I #W' 7 | set -g window-status-last-style 'fg=white,bg=black' 8 | set -g pane-active-border-style 'fg=magenta,bg=default' 9 | set -g pane-border-style 'fg=brightblack,bg=default' 10 | set -g status-style 'bg=#1e1e2e' # transparent 11 | -------------------------------------------------------------------------------- /bin/.local/dbin/tmux-cht.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | selected=`cat ~/.tmux-cht-languages ~/.tmux-cht-command | fzf` 3 | if [[ -z $selected ]]; then 4 | exit 0 5 | fi 6 | 7 | read -p "Enter Query: " query 8 | 9 | if grep -qs "$selected" ~/.tmux-cht-languages; then 10 | query=`echo $query | tr ' ' '+'` 11 | tmux neww bash -c "echo \"curl cht.sh/$selected/$query/\" & curl cht.sh/$selected/$query & while [ : ]; do sleep 1; done" 12 | else 13 | tmux neww bash -c "curl -s cht.sh/$selected~$query | less" 14 | fi 15 | 16 | -------------------------------------------------------------------------------- /tmux/.tmux_light.tmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | 4 | set -g status-left "#[fg=#179299,bold,bg=#dce0e8]🐟 #H " 5 | set -g status-right "#[fg=#4c4f69,bold,bg=#dce0e8]#S" 6 | set -g window-status-current-format '#[fg=magenta,bg=#dce0e8] *#I #W' 7 | set -g window-status-format '#[fg=gray,bg=#dce0e8] #I #W' 8 | set -g window-status-last-style 'fg=white,bg=black' 9 | set -g pane-active-border-style 'fg=magenta,bg=default' 10 | set -g pane-border-style 'fg=brightblack,bg=default' 11 | set -g status-style 'bg=#dce0e8' # transparent 12 | -------------------------------------------------------------------------------- /install: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | # I am using zsh instead of bash. I was having some troubles using bash with 3 | # arrays. Didn't want to investigate, so I just did zsh 4 | if [[ -n $HOME/.oh-my-zsh/custom ]]; then 5 | rm -rf $HOME/.oh-my-zsh/custom 6 | fi 7 | 8 | pushd $DOTFILES 9 | for folder in $(echo $STOW_FOLDERS | sed "s/,/ /g"); do 10 | stow -D $folder 11 | stow $folder 12 | done 13 | popd 14 | 15 | nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync' 16 | 17 | $HOME/.tmux/plugins/tpm/bin/install_plugins 18 | $HOME/.tmux/plugins/tpm/bin/update_plugins all 19 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/autopairs.lua: -------------------------------------------------------------------------------- 1 | require('nvim-autopairs').setup({ 2 | enable_check_bracket_line = true, -- Don't add pairs if it already have a close pairs in same line 3 | disable_filetype = {"TelescopePrompt", "vim"}, -- 4 | enable_afterquote = false, -- add bracket pairs after quote 5 | enable_moveright = true 6 | }) 7 | 8 | -- If you want insert `(` after select function or method item 9 | local cmp_autopairs = require('nvim-autopairs.completion.cmp') 10 | local cmp = require('cmp') 11 | cmp.event:on( 12 | 'confirm_done', 13 | cmp_autopairs.on_confirm_done() 14 | ) 15 | -------------------------------------------------------------------------------- /sway/.config/kanshi/config: -------------------------------------------------------------------------------- 1 | profile default { 2 | output eDP-1 mode 1920x1080 position 0,0 3 | } 4 | 5 | profile bedroom { 6 | output "BenQ Corporation BenQ RL2460H KCF01940SL0" mode 1920x1080 position 0,0 7 | output eDP-1 mode 1920x1080 position 1920,500 8 | } 9 | 10 | profile livingroom { 11 | output "BenQ Corporation BenQ BL2405 H4H02869SL0" mode 1920x1080 position 0,0 12 | output eDP-1 mode 1920x1080 position 1920,0 13 | } 14 | 15 | profile tv { 16 | output "Goldstar Company Ltd LG TV 0x00000101" mode 1920x1080 position 0,0 17 | output eDP-1 mode 1920x1080 position 0,1080 18 | } 19 | -------------------------------------------------------------------------------- /sway/.config/sway/autostart: -------------------------------------------------------------------------------- 1 | exec /usr/bin/gnome-keyring-daemon --components=ssh,secrets,pkcs11 --start; /usr/bin/systemctl --user import-environment SSH_AUTH_SOCK; 2 | exec hash dbus-update-activation-environment 2>/dev/null && \ 3 | dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=sway 4 | exec "sh -c 'sleep 5;exec /usr/libexec/xdg-desktop-portal -r'" 5 | 6 | exec lxpolkit 7 | exec mako 8 | exec kanshi 9 | exec /usr/bin/python3 /usr/bin/ulauncher --hide-window 1>> ~/ulauncher.log 2>&1 10 | exec nm-applet --indicator 11 | 12 | exec flatpak run md.osidian.Obsidian 13 | -------------------------------------------------------------------------------- /bin/.local/dbin/tmux-personal: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | repos=( 4 | "git@github.com:mikebarkmin/hyperbook-ki" 5 | "git@github.com:mikebarkmin/hyperbook-konzeptspeicher" 6 | "git@github.com:mikebarkmin/hyperbook-spieleentwicklung" 7 | "git@github.com:mikebarkmin/mikebarkmin.github.io" 8 | "git@github.com:mikebarkmin/schule-material:latex" 9 | "git@github.com:mikebarkmin/silberblau" 10 | "git@github.com:mikebarkmin/ulauncher-obsidian" 11 | "git@github.com:mikebarkmin/ulauncher-snippets" 12 | "git@github.com:mikebarkmin/ulauncher-snippets-files" 13 | "git@gitlab.com:abitur-2025/begleitmaterial" 14 | ) 15 | 16 | tmux-session "$HOME/Sources" "${repos[@]}" 17 | -------------------------------------------------------------------------------- /bin/.local/dbin/tmux-openpatch: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | repos=( 4 | "git@github.com:openpatch/branding" 5 | "git@github.com:openpatch/hyperbook" 6 | "git@github.com:openpatch/hyperbook-informatik" 7 | "git@github.com:openpatch/hyperbook-mathematik" 8 | "git@github.com:openpatch/manual-neural-network" 9 | "git@github.com:openpatch/java-memory-playground" 10 | "git@github.com:openpatch/online-ide-nrw" 11 | "git@github.com:openpatch/org" 12 | "git@github.com:openpatch/scratch-for-java" 13 | "git@github.com:openpatch/sqlide" 14 | "git@github.com:openpatch/struktog" 15 | "git@github.com:openpatch/videos" 16 | ) 17 | 18 | tmux-session "$HOME/Sources/openpatch" "${repos[@]}" 19 | -------------------------------------------------------------------------------- /sway/.config/sway/config: -------------------------------------------------------------------------------- 1 | ### Variables 2 | # 3 | # Logo key. Use Mod1 for Alt. 4 | set $mod Mod4 5 | # Home row direction keys, like vim 6 | set $left h 7 | set $down j 8 | set $up k 9 | set $right l 10 | # Your preferred terminal emulator 11 | set $term alacritty 12 | set $lock "swaylock -c 000000" 13 | # set $lock "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock" 14 | set $bar waybar 15 | 16 | set $menu ulauncher-toggle 17 | set $menu_bak wofi --show drun 18 | set $grimshot ~/.local/dbin/grimshot 19 | 20 | output * bg /usr/share/backgrounds/default.png fill 21 | 22 | include bar 23 | include gtk_config 24 | include inputs 25 | include keybindings 26 | include lock 27 | include theme 28 | include windows 29 | include autostart 30 | -------------------------------------------------------------------------------- /zsh/.zsh_profile: -------------------------------------------------------------------------------- 1 | export XDG_CONFIG_HOME=$HOME/.config 2 | export DOTFILES=$HOME/.dotfiles 3 | export ANSIBLEFILES=$HOME/Sources/silberblau 4 | export SILBERBLAUFILES=$HOME/Sources/silberblau 5 | export GIT_EDITOR="nvim" 6 | export PATH="$HOME/.local/bin:$PATH" 7 | 8 | PERSONAL=$XDG_CONFIG_HOME/personal 9 | source $PERSONAL/env 10 | for i in `find -L $PERSONAL`; do 11 | source $i 12 | done 13 | 14 | # check for dark and light theme in gnome 15 | # if [[ -r "$HOME/.local/dbin/gnome-dark" && -r "$HOME/.local/dbin/gnome-light" ]] 16 | # then 17 | # theme=$(gsettings get org.gnome.desktop.interface color-scheme) 18 | # if [[ $theme = "'default'" ]] 19 | # then 20 | # zsh $HOME/.local/dbin/gnome-light 21 | # else 22 | # zsh $HOME/.local/dbin/gnome-dark 23 | # fi 24 | # fi 25 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/lspkind.lua: -------------------------------------------------------------------------------- 1 | require('lspkind').init({ 2 | mode = 'symbol_text', 3 | 4 | -- enables text annotations (default: 'default') 5 | -- default symbol map can be either 'default' or 'codicons' for codicon preset (requires vscode-codicons font installed) 6 | preset = 'codicons', 7 | 8 | -- override preset symbols (default: {}) 9 | symbol_map = { 10 | Text = '', 11 | Method = 'ƒ', 12 | Function = '', 13 | Constructor = '', 14 | Variable = '', 15 | Class = '', 16 | Interface = 'ﰮ', 17 | Module = '', 18 | Property = '', 19 | Unit = '', 20 | Value = '', 21 | Enum = '了', 22 | Keyword = '', 23 | Snippet = '﬌', 24 | Color = '', 25 | File = '', 26 | Folder = '', 27 | EnumMember = '', 28 | Constant = '', 29 | Struct = '' 30 | }, 31 | }) 32 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | require "nvim-treesitter.configs".setup { 2 | indent = { 3 | enable = true 4 | }, 5 | ensure_installed = "all", 6 | auto_install = true, 7 | highlight = { 8 | enable = true, -- enable = true (false will disable the whole extension) 9 | -- disable = { "c", "rust" }, -- list of language that will be disabled 10 | 11 | -- Setting this to true will run `:h syntax` and tree-sitter at the same time. 12 | -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). 13 | -- Using this option may slow down your editor, and you may see some duplicate highlights. 14 | -- Instead of true it can also be a list of languages 15 | additional_vim_regex_highlighting = false 16 | }, 17 | rainbow = { 18 | enabled = true, 19 | extended_mode = true 20 | }, 21 | autotag = { 22 | enable = true 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /sway/.config/mako/config: -------------------------------------------------------------------------------- 1 | font=Cantarell 10 2 | background-color=#434c5e 3 | text-color=#eceff4 4 | progress-color=over #88c0d0 5 | margin=20,20,10 6 | padding=10 7 | border-size=2 8 | border-radius=2 9 | border-color=#5e81ac 10 | default-timeout=4000 11 | max-visible=4 12 | format= %a \n\n%s\n%b 13 | layer=overlay 14 | group-by=summary 15 | icon-path=$HOME/.local/share/icons/Zafiro-Icons-Dark:/usr/share/icons/Adwaita 16 | max-icon-size=33 17 | 18 | [hidden] 19 | background-color=#bfbfbfff 20 | format=+ %h 21 | font=Noto Sans Bold 8 22 | 23 | [urgency=high] 24 | background-color=#bf616a 25 | ignore-timeout=true 26 | default-timeout=0 27 | 28 | [!expiring] 29 | background-color=#555555ff 30 | text-color=#eeeeeeff 31 | 32 | [grouped] 33 | format=%a\n(%g) %s\n%b 34 | 35 | [mode=dnd] 36 | invisible=1 37 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/luasnip.lua: -------------------------------------------------------------------------------- 1 | local ls = require("luasnip") 2 | -- some shorthands... 3 | local s = ls.snippet 4 | local sn = ls.snippet_node 5 | local t = ls.text_node 6 | local i = ls.insert_node 7 | local f = ls.function_node 8 | local c = ls.choice_node 9 | local d = ls.dynamic_node 10 | 11 | -- Every unspecified option will be set to the default. 12 | ls.config.set_config({ 13 | history = true, 14 | -- Update more often, :h events for more info. 15 | updateevents = "TextChanged,TextChangedI" 16 | }) 17 | 18 | ls.snippets = {all = {}, html = {}} 19 | 20 | -- enable html snippets in javascript/javascript(REACT) 21 | ls.snippets.javascript = ls.snippets.html 22 | ls.snippets.javascriptreact = ls.snippets.html 23 | ls.snippets.typescriptreact = ls.snippets.html 24 | require("luasnip/loaders/from_vscode").load({include = {"html"}}) 25 | 26 | -- You can also use lazy loading so you only get in memory snippets of languages you use 27 | require'luasnip/loaders/from_vscode'.lazy_load() 28 | -------------------------------------------------------------------------------- /sway/.config/ulauncher-system/entries/sway.json: -------------------------------------------------------------------------------- 1 | { 2 | "lock": { 3 | "name": "Lock", 4 | "command": "swaylock", 5 | "icon": "system-lock-screen" 6 | }, 7 | "log-out": { 8 | "name": "Log out", 9 | "icon": "system-log-out", 10 | "command": "swaymsg exit" 11 | }, 12 | "suspend": { 13 | "name": "Suspend", 14 | "description": "Suspend to memory.", 15 | "icon": "system-suspend", 16 | "aliases": ["suspend", "sleep"], 17 | "command": "systemctl suspend -i" 18 | }, 19 | "restart": { 20 | "name": "Restart", 21 | "description": "Restart the machine.", 22 | "icon": "system-reboot", 23 | "aliases": ["restart", "reboot"], 24 | "command": "systemctl reboot -i" 25 | }, 26 | "hibernate": null, 27 | "bios": null, 28 | "shutdown": { 29 | "name": "Shut down", 30 | "description": "Shut down the machine.", 31 | "icon": "system-shutdown", 32 | "aliases": ["shut down", "shutdown", "poweroff", "halt"], 33 | "command": "systemctl poweroff -i" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /zsh/.oh-my-zsh/custom/themes/omer.zsh-theme: -------------------------------------------------------------------------------- 1 | CRUNCH_BRACKET_COLOR="%{$fg[white]%}" 2 | CRUNCH_RVM_COLOR="%{$fg[magenta]%}" 3 | CRUNCH_DIR_COLOR="%{$fg[cyan]%}" 4 | CRUNCH_GIT_BRANCH_COLOR="%{$fg[green]%}" 5 | CRUNCH_GIT_CLEAN_COLOR="%{$fg[green]%}" 6 | CRUNCH_GIT_DIRTY_COLOR="%{$fg[red]%}" 7 | 8 | # These Git variables are used by the oh-my-zsh git_prompt_info helper: 9 | ZSH_THEME_GIT_PROMPT_PREFIX="$CRUNCH_BRACKET_COLOR:${CRUNCH_GIT_BRANCH_COLOR}[" 10 | ZSH_THEME_GIT_PROMPT_SUFFIX="]" 11 | ZSH_THEME_GIT_PROMPT_CLEAN=" $CRUNCH_GIT_CLEAN_COLOR✓" 12 | ZSH_THEME_GIT_PROMPT_DIRTY=" $CRUNCH_GIT_DIRTY_COLOR✗" 13 | 14 | # Our elements: 15 | CRUNCH_DIR_="$CRUNCH_DIR_COLOR%~\$(git_prompt_info) " 16 | CRUNCH_PROMPT="$CRUNCH_BRACKET_COLOR" 17 | 18 | # Put it all together! 19 | USER_="%{$fg[green]%}%n%{$reset_color%}@%{$fg[cyan]%}%m%{$reset_color%}" 20 | 21 | local venv_prompt='$(virtualenv_prompt_info)' 22 | local distrobox_prompt_info='$(distrobox_prompt_info)' 23 | local distrobox_prompt_name='$(distrobox_prompt_name)' 24 | 25 | # Prompt without user prefix 26 | PROMPT="${distrobox_prompt_info}$CRUNCH_DIR_$CRUNCH_PROMPT%{$reset_color%}" 27 | RPROMPT="${venv_prompt}${distrobox_prompt_name}" 28 | -------------------------------------------------------------------------------- /bin/.local/dbin/tmux-session: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | basedir=$1 4 | shift 5 | repos=("$@") 6 | 7 | for repo in ${repos[@]} 8 | do 9 | repo=($(echo $repo | tr "/" "\n")) 10 | url=${repo[0]} 11 | project=${repo[1]} 12 | settings=($(echo $project | tr ":" "\n")) 13 | repo=${settings[0]} 14 | container=${settings[1]} 15 | name=$(echo ${settings[0]} | tr "." "-") 16 | path="$basedir/${repo}" 17 | 18 | if [ ! -d "$path" ]; then 19 | pushd $basedir 20 | git clone ${url}/${repo}.git 21 | popd 22 | fi 23 | 24 | tmux has-session -t $name 2>/dev/null 25 | 26 | if [ $? == 0 ]; then 27 | echo "Session $name exists." 28 | continue 29 | fi 30 | 31 | tmux new-session -d -s $name 32 | 33 | window=1 34 | tmux rename-window -t $name:$window "nvim" 35 | tmux send-keys -t $name:$window "cd ${path}" C-m 36 | tmux send-keys -t $name:$window "distrobox enter ${container}" C-m 37 | 38 | window=2 39 | tmux new-window -t $name:$window -n "server" 40 | tmux send-keys -t $name:$window "cd ${path}" C-m 41 | tmux send-keys -t $name:$window "distrobox enter ${container}" C-m 42 | 43 | window=3 44 | tmux new-window -t $name:$window -n "git" 45 | tmux send-keys -t $name:$window "cd ${path}" C-m 46 | tmux send-keys -t $name:$window "git pull" C-m 47 | tmux send-keys -t $name:$window "distrobox enter ${container}" C-m 48 | 49 | tmux select-window -t $name:1 50 | done 51 | -------------------------------------------------------------------------------- /sway/.config/sway/windows: -------------------------------------------------------------------------------- 1 | for_window [app_id="ulauncher"] floating enable, border none 2 | 3 | # for_window [class="bluej.Boot\$App"] floating enable 4 | for_window [class="bluej.Boot\$App" title="BlueJ"] floating disable 5 | for_window [class="bluej.Boot\$App" title="Greenfoot"] floating disable 6 | 7 | for_window [instance="sun-awt-X11-XWindowPeer"] focus 8 | 9 | for_window [app_id="firefox"] floating enable 10 | for_window [app_id="firefox" title="\ -\ Sharing\ Indicator$"] floating enable, sticky enable 11 | for_window [app_id="firefox" title="— Firefox"] floating disable 12 | for_window [app_id="firefox" title="^Firefox"] floating disable 13 | 14 | for_window [app_id="thunderbird"] floating enable 15 | for_window [app_id="thunderbird" title="- Mozilla Thunderbird$"] floating disable 16 | 17 | ## Zoom 18 | # For pop up notification windows that don't use notifications api 19 | for_window [app_id="zoom" title="^zoom$"] border none, floating enable 20 | # For specific Zoom windows 21 | for_window [app_id="zoom" title="^(Zoom|About)$"] border pixel, floating enable 22 | for_window [app_id="zoom" title="Settings"] floating enable, floating_minimum_size 960 x 700 23 | # Open Zoom Meeting windows on a new workspace (a bit hacky) 24 | for_window [app_id="zoom" title="Zoom Meeting(.*)?"] floating disable, inhibit_idle open 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dotfiles 2 | 3 | ## Getting Started 4 | 5 | My `dotfiles` are managed by `stow`. So you need that before continuing. You also need `git-crypt` for the private 6 | `personal` and `work` submodule. These contain information not for the public eyes. You can take a look at the `demo` 7 | submodule to get an idea how these work. 8 | 9 | ## Installation 10 | 11 | Clone this repository. 12 | 13 | ``` 14 | git clone https://github.com/mikebarkmin/.dotfiles.git 15 | ``` 16 | 17 | You can install three variants of the dotfiles. 18 | 19 | | Variant | Installation | Description | 20 | |-----|----|----| 21 | | demo | `./install-demo` | Just for demonstration | 22 | | personal | `./install-personal` | Personal config | 23 | | work | `./install-work` | Work config | 24 | 25 | For personal and work use private repositories which are encrypted with `git-crypt`. So, you also need the correct pgp 26 | key. 27 | 28 | ## Auto Installation and Setup 29 | 30 | You can use this script to automatic setup a Fedora Silverblue installation. 31 | 32 | ``` 33 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/mikebarkmin/silberblau/main/bin/install.sh) 34 | ``` 35 | 36 | For more information visit the [silberblau repository](https://github.com/mikebarkmin/silberblau). 37 | 38 | ## Inspiration 39 | 40 | The dotfiles took inspiration mainly from [ThePrimeagen](https://github.com/ThePrimeagen/.dotfiles) to the point that I 41 | have blatantly copied files over to my repo. 42 | -------------------------------------------------------------------------------- /sway/.config/waybar/toggle-wf-recorder.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | dir=$(xdg-user-dir VIDEOS)/Aufnahmen 4 | 5 | [ -d $dir ] || mkdir -p $dir 6 | 7 | file=$dir/$(date +'recording_%Y-%m-%d-%H%M%S.mp4') 8 | 9 | echo $file 10 | 11 | if [ -z $(pgrep wf-recorder) ] 12 | then 13 | # do not disturb 14 | pkill --signal SIGINT mako 15 | if [ "$1" == "-s" ] 16 | then 17 | notify-send "Record Selection" 18 | wf-recorder -f $file -a -g "$(slurp -c "#FFFFFF")" & 19 | while [ ! -z $(pgrep -x slurp) ]; do wait; done 20 | elif [ "$1" == "-w" ] 21 | then 22 | notify-send "Record Window" 23 | wf-recorder -f $file -a -g "$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp -c "#FFFFFF" )" & 24 | while [ ! -z $(pgrep -x slurp) ]; do wait; done 25 | else 26 | wf-recorder -f $file -a -g "$(swaymsg -t get_outputs | jq -r '.. | select(.active?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp -c "#FFFFFF" )"& 27 | while [ ! -z $(pgrep -x slurp) ]; do wait; done 28 | fi 29 | else 30 | notify-send "Record Output" 31 | pkill --signal SIGINT wf-recorder 32 | while [ ! -z $(pgrep -x wf-recorder) ]; do wait; done 33 | notify-send "Recording Stopped" 34 | name=$(zenity --entry --text "Enter a filename") 35 | 36 | if [ -n $name ] 37 | then 38 | mv $(ls -d $(xdg-user-dir VIDEOS)/Aufnahmen/* -t | head -n1) $(xdg-user-dir VIDEOS)/Aufnahmen/$name.mp4 39 | fi 40 | fi 41 | -------------------------------------------------------------------------------- /zsh/.oh-my-zsh/custom/themes/m3b6.zsh-theme: -------------------------------------------------------------------------------- 1 | # ZSH Theme - Preview: https://gyazo.com/8becc8a7ed5ab54a0262a470555c3eed.png 2 | local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" 3 | 4 | if [[ $UID -eq 0 ]]; then 5 | local user_host='%{$terminfo[bold]$fg[red]%}%n@%m %{$reset_color%}' 6 | local user_symbol='#' 7 | else 8 | local user_host='%{$terminfo[bold]$fg[green]%}%n@%m %{$reset_color%}' 9 | local user_symbol='$' 10 | fi 11 | 12 | local current_dir='%{$terminfo[bold]$fg[blue]%}%~ %{$reset_color%}' 13 | local git_branch='$(git_prompt_info)' 14 | local rvm_ruby='$(ruby_prompt_info)' 15 | local venv_prompt='$(virtualenv_prompt_info)' 16 | local distrobox_prompt_info='$(distrobox_prompt_info)' 17 | local distrobox_prompt_name='$(distrobox_prompt_name)' 18 | 19 | ZSH_THEME_RVM_PROMPT_OPTIONS="i v g" 20 | 21 | PROMPT="╭─${distrobox_prompt_info}${user_host}${distrobox_prompt_name}${current_dir}${rvm_ruby}${git_branch}${venv_prompt} 22 | ╰─%B${user_symbol}%b " 23 | 24 | RPROMPT="%B${return_code}%b" 25 | 26 | ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}‹" 27 | ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}" 28 | 29 | ZSH_THEME_RUBY_PROMPT_PREFIX="%{$fg[red]%}‹" 30 | ZSH_THEME_RUBY_PROMPT_SUFFIX="› %{$reset_color%}" 31 | 32 | ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX="%{$fg[green]%}‹" 33 | ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX="› %{$reset_color%}" 34 | ZSH_THEME_VIRTUALENV_PREFIX=$ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX 35 | ZSH_THEME_VIRTUALENV_SUFFIX=$ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX 36 | -------------------------------------------------------------------------------- /silverblue/.config/personal/env: -------------------------------------------------------------------------------- 1 | gitClone () { 2 | REPO=$1 3 | NAME=$(basename "$REPO" .git) 4 | 5 | shift 6 | MAIN_BRANCH=$1 7 | git clone --bare $REPO $NAME 8 | pushd "$PWD/$NAME" 9 | 10 | for BRANCH in "$@" 11 | do 12 | git worktree add $BRANCH 13 | done 14 | pushd "$PWD/$MAIN_BRANCH" 15 | } 16 | 17 | addToPath() { 18 | if [[ "$PATH" != *"$1"* ]]; then 19 | export PATH=$PATH:$1 20 | fi 21 | } 22 | 23 | addToPathFront() { 24 | if [[ "$PATH" != *"$1"* ]]; then 25 | export PATH=$1:$PATH 26 | fi 27 | } 28 | 29 | commitDotFiles() { 30 | pushd $DOTFILES 31 | pushd personal 32 | git add . 33 | git commit -m "automagic message" 34 | git push origin main 35 | popd 36 | pushd work 37 | git add . 38 | git commit -m "automagic message" 39 | git push origin main 40 | popd 41 | pushd demo 42 | git add . 43 | git commit -m "automagic message" 44 | git push origin main 45 | popd 46 | git add . 47 | git commit -m "automagic message" 48 | git push origin main 49 | popd 50 | } 51 | 52 | commitAnsible() { 53 | pushd $ANSIBLEFILES 54 | git add . 55 | git commit -m "automagic message" 56 | git push origin main 57 | popd 58 | } 59 | 60 | commitSilberblau() { 61 | pushd $SILBERBLAUFILES 62 | git add . 63 | git commit -m "automagic message" 64 | git push origin live 65 | popd 66 | } 67 | 68 | export WORKSPACE=$HOME/Sources 69 | export BIBINPUTS=$HOME/Sciebo/Zotero.bib 70 | -------------------------------------------------------------------------------- /sway/.config/alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | background_opacity: 0.94 2 | 3 | # Fonts 4 | 5 | font: 6 | normal: 7 | family: FiraCode Nerd Font Mono 8 | style: Regular 9 | 10 | bold: 11 | family: FiraCode Nerd Font Mono 12 | style: bold 13 | 14 | Light,Regular: 15 | family: FiraCode NF 16 | style: Light,Regular 17 | 18 | Medium,Regular: 19 | family: FiraCode Nerd Font Mono 20 | style: Medium,Regular 21 | 22 | size: 11 23 | 24 | # Draw 25 | draw_bold_text_with_bright_colors: true 26 | 27 | colors: 28 | primary: 29 | background: '#2e3440' 30 | foreground: '#d8dee9' 31 | dim_foreground: '#a5abb6' 32 | cursor: 33 | text: '#2e3440' 34 | cursor: '#d8dee9' 35 | vi_mode_cursor: 36 | text: '#2e3440' 37 | cursor: '#d8dee9' 38 | selection: 39 | text: CellForeground 40 | background: '#4c566a' 41 | search: 42 | matches: 43 | foreground: CellBackground 44 | background: '#88c0d0' 45 | bar: 46 | background: '#434c5e' 47 | foreground: '#d8dee9' 48 | normal: 49 | black: '#3b4252' 50 | red: '#bf616a' 51 | green: '#a3be8c' 52 | yellow: '#ebcb8b' 53 | blue: '#81a1c1' 54 | magenta: '#b48ead' 55 | cyan: '#88c0d0' 56 | white: '#e5e9f0' 57 | bright: 58 | black: '#4c566a' 59 | red: '#bf616a' 60 | green: '#a3be8c' 61 | yellow: '#ebcb8b' 62 | blue: '#81a1c1' 63 | magenta: '#b48ead' 64 | cyan: '#8fbcbb' 65 | white: '#eceff4' 66 | dim: 67 | black: '#373e4d' 68 | red: '#94545d' 69 | green: '#809575' 70 | yellow: '#b29e75' 71 | blue: '#68809a' 72 | magenta: '#8c738c' 73 | cyan: '#6d96a5' 74 | white: '#aeb3bb' 75 | -------------------------------------------------------------------------------- /silverblue/.config/personal/alias: -------------------------------------------------------------------------------- 1 | alias rm="rm -i" 2 | alias vim="nvim" 3 | alias o="xdg-open" 4 | alias dotc="commitDotFiles" 5 | alias dotr=$DOTFILES/install-personal 6 | alias dote="pushd $HOME/.dotfiles && nvim && popd" 7 | alias sbe="pushd $HOME/Sources/silberblau/ && nvim && popd" 8 | alias sbc="commitSilberblau" 9 | alias dac="distrobox assemble create ~/Sources/silberblau/config/files/usr/etc/distrobox/distrobox.ini" 10 | alias ansc="commitAnsible" 11 | alias gcn="git commit -m \"Updated: `date +'%Y-%m-%d %H:%M:%S'`\"" 12 | function bluejc() { 13 | javac $1 -cp ".:./+libs" 14 | } 15 | 16 | function ansr() { 17 | pushd $ANSIBLEFILES 18 | ansible-galaxy install -r requirements.yml 19 | if [[ "$1" = "all" ]]; then 20 | ansible-playbook main.yml --ask-become 21 | else 22 | local tags=$(ls $ANSIBLEFILES/roles | fzf -m | tr '\n' ',' | sed 's/,$/\n/') 23 | ansible-playbook main.yml --ask-become --tags=$tags 24 | fi 25 | popd 26 | } 27 | alias anse="pushd $ANSIBLEFILES && nvim && popd" 28 | alias podman_ghcr="echo $GH_TOKEN | podman login ghcr.io --username=mikebarkmin --password-stdin" 29 | function bjava() { 30 | filename="${1%.*}" 31 | rm -rf **/*.class 32 | javac -cp "$HOME/Sources/openpatch/scratch-for-java/distribution/scratch4j-linux-amd64.jar:$HOME/.bluej/libs/*:+libs/*:." $1 33 | shift 34 | java -cp "$HOME/Sources/openpatch/scratch-for-java/distribution/scratch4j-linux-amd64.jar:$HOME/.bluej/libs/*:+libs/*:." $filename $@ 35 | } 36 | function s4j_init() { 37 | mkdir $1 38 | cd $1 39 | cp -a "$HOME/Sources/openpatch/scratch-for-java/templates/bluej-starter/." . 40 | cp "$HOME/Sources/openpatch/scratch-for-java/distribution/scratch4j-linux-amd64.jar" "+libs" 41 | } 42 | 43 | function normalize() { 44 | ffmpeg-normalize $1 -c:a aac -b:a 192k 45 | } 46 | -------------------------------------------------------------------------------- /tmux/.tmux.conf: -------------------------------------------------------------------------------- 1 | set-option -sa terminal-overrides ",xterm*:Tc" 2 | set -g @plugin 'tmux-plugins/tmux-sensible' 3 | set -g @plugin 'tmux-plugins/tmux-yank' 4 | set -g @plugin 'tmux-plugins/tmux-resurrect' 5 | #set -g @plugin 'catppuccin/tmux' 6 | 7 | unbind C-b 8 | set-option -g prefix C-a 9 | bind-key C-a send-prefix 10 | 11 | set -g base-index 1 12 | setw -g mouse on 13 | 14 | set-window-option -g mode-keys vi 15 | bind -T copy-mode-vi v send-keys -X begin-selection 16 | bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' 17 | 18 | # vim-like pane switching 19 | bind -r ^ last-window 20 | bind -r k select-pane -U 21 | bind -r j select-pane -D 22 | bind -r h select-pane -L 23 | bind -r l select-pane -R 24 | 25 | 26 | # rename windows 27 | set-option -g allow-rename off 28 | set-option -g status-position top 29 | 30 | # stay in the current working directory 31 | bind c new-window -c "#{pane_current_path}" 32 | bind '"' split-window -c "#{pane_current_path}" 33 | bind % split-window -h -c "#{pane_current_path}" 34 | 35 | bind-key -r i run-shell "tmux neww tmux-cht.sh" 36 | 37 | # Resurrect 38 | set -g @resurrect-strategy-nvim 'session' 39 | 40 | # Theme 41 | set -g status-interval 3 # update the status bar every 3 seconds 42 | set -g status-justify left 43 | set -g status-left-length 200 # increase length (from 10) 44 | set -g status-right-length 200 # increase length (from 10) 45 | set -g status-position top # macOS / darwin style 46 | set -g default-terminal "${TERM}" 47 | set -g message-command-style bg=default,fg=yellow 48 | set -g message-style bg=default,fg=yellow 49 | set -g mode-style bg=default,fg=yellow 50 | 51 | source-file ~/.tmux_light.tmux 52 | 53 | # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) 54 | run '~/.tmux/plugins/tpm/tpm 55 | -------------------------------------------------------------------------------- /zsh/.oh-my-zsh/custom/plugins/distrobox/distrobox.plugin.zsh: -------------------------------------------------------------------------------- 1 | function is_in_distrobox() { 2 | if [[ -f /run/.containerenv ]]; then 3 | return 0 4 | else 5 | return 1 6 | fi 7 | } 8 | 9 | if ! is_in_distrobox && [[ $? -eq 0 ]] && ! type distrobox &>/dev/null; then 10 | print "[oh-my-zsh] distrobox plugin: shell function 'distrobox' not defined.\n" \ 11 | "Please check distrobox" >&2 12 | return 13 | fi 14 | 15 | function distrobox_prompt_info { 16 | if is_in_distrobox; then 17 | echo "⬢ " 18 | else 19 | return 0 20 | fi 21 | } 22 | 23 | function distrobox_prompt_name { 24 | if is_in_distrobox; then 25 | echo "($CONTAINER_ID)" 26 | else 27 | return 0 28 | fi 29 | } 30 | 31 | function distrobox_name { 32 | # Get absolute path, resolving symlinks 33 | local PROJECT_ROOT="${PWD:A}" 34 | while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.distrobox" && 35 | ! -d "$PROJECT_ROOT/.git" ]]; do 36 | PROJECT_ROOT="${PROJECT_ROOT:h}" 37 | done 38 | 39 | # Check for distrobox name override 40 | if [[ -f "$PROJECT_ROOT/.distrobox" ]]; then 41 | echo "$(cat "$PROJECT_ROOT/.distrobox")" 42 | elif [[ -d "$PROJECT_ROOT/.git" ]]; then 43 | echo "" 44 | fi 45 | } 46 | 47 | alias dbc="distrobox create" 48 | alias db="distrobox" 49 | alias dbrm="distrobox rm" 50 | alias dbrmi="distrobox rmi" 51 | alias dbl="distrobox list" 52 | 53 | function dbe { 54 | local DISTROBOX_NAME=$(distrobox_name) 55 | 56 | if [[ -n "$1" ]]; then 57 | DISTROBOX_NAME=$1 58 | elif [[ -z $DISTROBOX_NAME ]]; then 59 | DISTROBOX_NAME= 60 | fi 61 | 62 | distrobox enter $DISTROBOX_NAME 63 | } 64 | 65 | function dbr { 66 | local DISTROBOX_NAME=$(distrobox_name) 67 | 68 | if $(podman container exists $1); then 69 | DISTROBOX_NAME=$1 70 | shift 71 | elif [[ -z $DISTROBOX_NAME ]]; then 72 | DISTROBOX_NAME= 73 | fi 74 | 75 | distrobox-ephemeral $DISTROBOX_NAME "$@" 76 | } 77 | -------------------------------------------------------------------------------- /zsh/.oh-my-zsh/custom/plugins/last-working-dir-tmux/last-working-dir-tmux.plugin.zsh: -------------------------------------------------------------------------------- 1 | # Flag indicating if we've previously jumped to last directory 2 | typeset -g ZSH_LAST_WORKING_DIR_TMUX 3 | 4 | # Updates the last directory once directory is changed 5 | autoload -U add-zsh-hook 6 | add-zsh-hook chpwd chpwd_last_working_dir_tmux 7 | 8 | chpwd_last_working_dir_tmux() { 9 | if [ "$ZSH_SUBSHELL" = 0 ]; then 10 | local cache_dir="$ZSH_CACHE_DIR/last-working-dir-tmux" 11 | if [[ ! -d $cache_dir ]]; then 12 | mkdir -p $cache_dir 13 | fi 14 | tmux_session=$(tmux display -p '#S') 15 | if [[ ! -z $tmux_session ]]; then 16 | local cache_file_session="$ZSH_CACHE_DIR/last-working-dir-tmux/$tmux_session" 17 | pwd >| "$cache_file_session" 18 | fi 19 | local cache_file_global="$ZSH_CACHE_DIR/last-working-dir-tmux/global" 20 | pwd >| "$cache_file_global" 21 | fi 22 | } 23 | 24 | # Changes directory to the last working directory in this tmux session 25 | lwd() { 26 | tmux_session=$(tmux display -p '#S') 27 | local cache_file_session="$ZSH_CACHE_DIR/last-working-dir-tmux/$tmux_session" 28 | local cache_file_global="$ZSH_CACHE_DIR/last-working-dir-tmux/global" 29 | if [[ ! -z $tmux_session && -r "$cache_file_session" ]]; then 30 | cd "$(cat "$cache_file_session")" 31 | elif [[ -r "$cache_file_global" ]]; then 32 | cd "$(cat "$cache_file_global")" 33 | fi 34 | } 35 | 36 | # Changes directory to the last working directory 37 | lwd_global() { 38 | local cache_file_global="$ZSH_CACHE_DIR/last-working-dir-tmux/global" 39 | [[ -r "$cache_file_global" ]] && cd "$(cat "$cache_file_global")" 40 | } 41 | 42 | # Jump to last directory automatically unless: 43 | # - this isn't the first time the plugin is loaded 44 | # - it's not in $HOME directory 45 | [[ -n "$ZSH_LAST_WORKING_DIR_TMUX" ]] && return 46 | [[ "$PWD" != "$HOME" ]] && return 47 | 48 | lwd 2>/dev/null && ZSH_LAST_WORKING_DIR_TMUX=1 || true 49 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | require("telescope").load_extension("project") 2 | 3 | require("telescope").setup { 4 | defaults = { 5 | file_ignore_patterns = {"node_modules", ".git", "dist", ".next", "out", "pnpm-lock.yaml"}, 6 | vimgrep_arguments = { 7 | "rg", 8 | "--color=never", 9 | "--no-heading", 10 | "--with-filename", 11 | "--line-number", 12 | "--column", 13 | "--hidden", 14 | "--iglob", 15 | "!yarn.lock", 16 | "--smart-case", 17 | "-u" 18 | }, 19 | -- Default configuration for telescope goes here: 20 | -- config_key = value, 21 | mappings = { 22 | i = { 23 | -- map actions.which_key to (default: ) 24 | -- actions.which_key shows the mappings for your picker, 25 | -- e.g. git_{create, delete, ...}_branch for the git_branches picker 26 | [""] = "which_key" 27 | } 28 | } 29 | }, 30 | pickers = { 31 | find_files = { 32 | find_command = { 33 | "rg", 34 | "--files", 35 | "--hidden", 36 | "--ignore-file", 37 | ".next", 38 | "--ignore-file", 39 | "out", 40 | "--ignore-file", 41 | "pnpm-lock.yaml" 42 | } 43 | }, 44 | file_browser = { 45 | hidden = true 46 | } 47 | -- picker_name = { 48 | -- picker_config_key = value, 49 | -- ... 50 | -- } 51 | -- Now the picker_config_key will be applied every time you call this 52 | -- builtin picker 53 | }, 54 | extensions = { 55 | ["ui-select"] = {}, 56 | project = { 57 | fzf = { 58 | fuzzy = true, -- false will only do exact matching 59 | override_generic_sorter = true, -- override the generic sorter 60 | override_file_sorter = true, -- override the file sorter 61 | case_mode = "smart_case" -- or "ignore_case" or "respect_case" 62 | -- the default case_mode is "smart_case" 63 | }, 64 | base_dirs = { 65 | {path = "~/Sources", max_depth = 2} 66 | }, 67 | hidden_files = true 68 | }, 69 | bibtex = { 70 | format = "plain" 71 | } 72 | } 73 | } 74 | 75 | require("telescope").load_extension("fzf") 76 | require("telescope").load_extension("ui-select") 77 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/keybindings.lua: -------------------------------------------------------------------------------- 1 | local map = require("utils").map 2 | 3 | vim.g.mapleader = " " 4 | 5 | -- wrap 6 | map("n", "w", ":set wrap! linebreak!") 7 | map("n", "j", "gj") 8 | map("n", "k", "gk") 9 | 10 | -- navigation 11 | --- behave like other capitals 12 | map("n", "Y", "y$") 13 | --- keeping it centered 14 | map("n", "n", "nzzzv") 15 | map("n", "N", "Nzzzv") 16 | map("n", "J", "mzJ`z") 17 | --- moving text 18 | map("v", "J", ":m '>+1gv=gv") 19 | map("v", "K", ":m '<-2gv=gv") 20 | map("n", "k", ":m .-2==") 21 | map("n", "j", ":m .+1==") 22 | 23 | -- telescope 24 | map("n", "ff", "Telescope find_files") 25 | map("n", "fg", "Telescope live_grep") 26 | map("n", "fb", "Telescope buffers") 27 | map("n", "fr", "Telescope bibtex") 28 | 29 | --- quicklist 30 | map("n", "qn", ":cnext") 31 | map("n", "qp", ":cprev") 32 | map("n", "qo", ":copen") 33 | 34 | -- lua tree 35 | map("n", "tt", "NvimTreeToggle") 36 | map("n", "tf", "NvimTreeFindFileToggle") 37 | map("n", "tr", "NvimTreeRefresh") 38 | 39 | -- language server 40 | map("n", "vd", "lua vim.lsp.buf.definition()") 41 | map("n", "vi", "lua vim.lsp.buf.implementation()") 42 | map("n", "vsh", "lua vim.lsp.buf.signature_help()") 43 | map("n", "vrr", "lua vim.lsp.buf.references()") 44 | map("n", "vrn", "lua vim.lsp.buf.rename()") 45 | map("n", "vh", "lua vim.lsp.buf.hover()") 46 | map("n", "vca", "lua vim.lsp.buf.code_action()") 47 | map("n", "vsd", "lua vim.diagnostic.open_float({scope='line'})") 48 | map("n", "vn", "lua vim.diagnostic.goto_next()") 49 | map("n", "vp", "lua vim.diagnostic.goto_prev()") 50 | map("n", "vf", "Format") 51 | 52 | --- dap 53 | map("n", "dc", ":lua require'telescope'.extensions.dap.commands{}") 54 | map("n", "ds", ":lua require'telescope'.extensions.dap.configurations{}") 55 | map("n", "dl", ":lua require'telescope'.extensions.dap.list_breakpoints{}") 56 | map("n", "dv", ":lua require'telescope'.extensions.dap.variables{}") 57 | map("n", "df", ":lua require'telescope'.extensions.dap.frames{}") 58 | 59 | -- neogit 60 | map("n", "go", "Neogit") 61 | map("n", "gc", "Neogit commit") 62 | map("n", "gws", "lua require('telescope').extensions.git_worktree.git_worktrees()") 63 | map("n", "gwc", ":lua require('telescope').extensions.git_worktree.create_git_worktree()") 64 | 65 | --- zen-mode 66 | map("n", "z", "ZenMode") 67 | -------------------------------------------------------------------------------- /nvim/.config/nvim/ftplugin/java.lua: -------------------------------------------------------------------------------- 1 | 2 | -- If you started neovim within `~/dev/xy/project-1` this would resolve to `project-1` 3 | local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t") 4 | if project_name == "main" then 5 | project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:h:t") 6 | end 7 | local workspace_dir = "/var/home/mbarkmin/.local/share/java-workspace/" .. project_name 8 | 9 | local config = { 10 | cmd = { 11 | -- 💀 12 | "java", 13 | "-Declipse.application=org.eclipse.jdt.ls.core.id1", 14 | "-Dosgi.bundles.defaultStartLevel=4", 15 | "-Declipse.product=org.eclipse.jdt.ls.core.product", 16 | "-Dlog.protocol=true", 17 | "-Dlog.level=ALL", 18 | "-Xms1g", 19 | "--add-modules=ALL-SYSTEM", 20 | "--add-opens", 21 | "java.base/java.util=ALL-UNNAMED", 22 | "--add-opens", 23 | "java.base/java.lang=ALL-UNNAMED", 24 | -- 💀 25 | "-jar", 26 | "/var/home/mbarkmin/.local/share/nvim/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_1.6.500.v20230717-2134.jar", 27 | "-configuration", 28 | "/var/home/mbarkmin/.local/share/nvim/mason/packages/jdtls/config_linux", 29 | "-data", 30 | workspace_dir 31 | }, 32 | root_dir = require("jdtls.setup").find_root( 33 | { 34 | ".git", 35 | "package.bluej", 36 | "gradlew", 37 | "settings.gradle", 38 | "settings.gradel.kts", 39 | ".classpath", 40 | "pom.xml", 41 | ".gitattributes" 42 | } 43 | ), 44 | single_file_support = true, 45 | settings = { 46 | java = { 47 | sources = { 48 | organizeImports = { 49 | starThreshold = 9999, 50 | staticStarThreshold = 9999 51 | } 52 | }, 53 | project = { 54 | referencedLibraries = { 55 | "+libs/*.jar", 56 | "libs/*.jar" 57 | } 58 | }, 59 | configuration = { 60 | runtimes = { 61 | { 62 | name = "JavaSE-17", 63 | path = "/var/home/mbarkmin/.sdkman/candidates/java/17.0.9.fx-zulu", 64 | default = true 65 | }, 66 | { 67 | name = "JavaSE-11", 68 | path = "/var/home/mbarkmin/.sdkman/candidates/java/11.0.21.fx-zulu" 69 | } 70 | } 71 | } 72 | } 73 | }, 74 | init_options = { 75 | bundles = { 76 | vim.fn.glob( 77 | "/var/home/mbarkmin/Sources/java-debug/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-*.jar", 78 | 1 79 | ) 80 | } 81 | } 82 | } 83 | require("jdtls").jol_path = "/var/home/mbarkmin/Applications/jol-cli-0.17-full.jar" 84 | require("jdtls").start_or_attach(config) 85 | 86 | local map = require("utils").map 87 | map("n", "vtc", "lua require'jdtls'.test_class()") 88 | map("n", "vtm", "lua require'jdtls'.test_nearest_method()") 89 | -------------------------------------------------------------------------------- /zsh/.oh-my-zsh/custom/plugins/toolbox/README.md: -------------------------------------------------------------------------------- 1 | # Toolbox plugin 2 | 3 | This plugin manages [toolbox](https://github.com/containers/toolbox) containers. 4 | 5 | To use it, add `toolbox` to the plugins array in your `zshrc` file: 6 | 7 | ```zsh 8 | plugins=(... toolbox) 9 | ``` 10 | 11 | ## Usage 12 | 13 | The plugin allows to automatically enter toolboxes on `cd` into git 14 | repositories. It will use the default container defined in 15 | `TOOLBOX_DEFAULT_CONTAINER`. It will set the hostname of the container to the 16 | container name and set a ⬢ in front of the prompt to indicated that you 17 | are in a toolbox. 18 | 19 | ``` 20 | ➜ github $ cd ansible 21 | ⬢ (default) ➜ ansible git:(devel) $ cd docs 22 | ⬢ (default) ➜ docs git:(devel) $ cd .. 23 | ⬢ (default) ➜ ansible git:(devel) $ cd .. 24 | ➜ github $ 25 | ``` 26 | 27 | We can override this by having a `.toolbox` file in the directory containing a differently named container: 28 | 29 | ``` 30 | ➜ github $ cat ansible/.toolbox 31 | my-toolbox 32 | ➜ github $ cd ansible 33 | ⬢ (my-toolbox) ➜ ansible git:(devel) $ cd .. 34 | ➜ github $ 35 | ``` 36 | 37 | You can disable this behavior by setting `DISABLE_TOOLBOX_ENTER=1` before Oh My ZSH is sourced: 38 | ```zsh 39 | DISABLE_TOOLBOX_ENTER=1 40 | plugins=(... toolbox) 41 | source $ZSH/oh-my-zsh.sh 42 | ``` 43 | 44 | Toolboxes are exited when leaving a git repository. You can disable this behavior by setting `DISABLE_TOOLBOX_EXIT=1`. 45 | 46 | You can specify which image should be used as a default by setting `TOOLBOX_DEFAULT_IMAGE=ghcr.io/mikebarkmin/fedora-toolbox:35`. 47 | 48 | For this plugin to work your container must have `zsh` installed. You can used this image `ghcr.io/mikebarkmin/fedora-toolbox:35` which comes preinstalled with `zsh` and `neovim`. 49 | 50 | ## Aliases 51 | 52 | There are some convenient aliases which make for example use of the `TOOLBOX_DEFAULT_IMAGE` when set. 53 | 54 | | alias | command | comment | 55 | | ----- | ------- | ------- | 56 | | tb | toolbox | | 57 | | tbi | echo $TOOLBOX_DEFAULT_CONTAINER > .toolbox && toolbox_cwd | | 58 | | tbc | toolbox create --image $TOOLBOX_DEFAULT_IMAGE | | 59 | | tbe | toolbox enter | This is context aware | 60 | | tbrm | toolbox rm | | 61 | | tbrmi | toolbox rmi | | 62 | | tbl | toolbox list | | 63 | | tbr | toolbox run | This is context aware | 64 | 65 | 66 | ## Theme Integration 67 | In most themes you can see the hostname (`user_host`), which is set by this plugin for each container, so there is no additional setup needed. 68 | 69 | Additionally, the plugin provides a prompt function with can be used in a theme to display a hexagon to indicated that you are in a toolbox. 70 | 71 | Here is an example of a modified `bira` theme: 72 | 73 | ```zsh 74 | ... 75 | local toolbox_prompt='$(toolbox_prompt_info)' 76 | 77 | PROMPT="╭─${toolbox_prompt}${user_host}${current_dir}${rvm_ruby}${git_branch}${venv_prompt} 78 | ╰─%B${user_symbol}%b " 79 | ... 80 | ``` 81 | 82 | ## Advanced Setup 83 | 84 | This plugin works great with vscode, if you use this [toolbox-vscode](https://github.com/owtaylor/toolbox-vscode). 85 | -------------------------------------------------------------------------------- /zsh/.oh-my-zsh/custom/plugins/distrobox/README.md: -------------------------------------------------------------------------------- 1 | # Toolbox plugin 2 | 3 | This plugin manages [toolbox](https://github.com/containers/toolbox) containers. 4 | 5 | To use it, add `toolbox` to the plugins array in your `zshrc` file: 6 | 7 | ```zsh 8 | plugins=(... toolbox) 9 | ``` 10 | 11 | ## Usage 12 | 13 | The plugin allows to automatically enter toolboxes on `cd` into git 14 | repositories. It will use the default container defined in 15 | `TOOLBOX_DEFAULT_CONTAINER`. It will set the hostname of the container to the 16 | container name and set a ⬢ in front of the prompt to indicated that you 17 | are in a toolbox. 18 | 19 | ``` 20 | ➜ github $ cd ansible 21 | ⬢ (default) ➜ ansible git:(devel) $ cd docs 22 | ⬢ (default) ➜ docs git:(devel) $ cd .. 23 | ⬢ (default) ➜ ansible git:(devel) $ cd .. 24 | ➜ github $ 25 | ``` 26 | 27 | We can override this by having a `.toolbox` file in the directory containing a differently named container: 28 | 29 | ``` 30 | ➜ github $ cat ansible/.toolbox 31 | my-toolbox 32 | ➜ github $ cd ansible 33 | ⬢ (my-toolbox) ➜ ansible git:(devel) $ cd .. 34 | ➜ github $ 35 | ``` 36 | 37 | You can disable this behavior by setting `DISABLE_TOOLBOX_ENTER=1` before Oh My ZSH is sourced: 38 | ```zsh 39 | DISABLE_TOOLBOX_ENTER=1 40 | plugins=(... toolbox) 41 | source $ZSH/oh-my-zsh.sh 42 | ``` 43 | 44 | Toolboxes are exited when leaving a git repository. You can disable this behavior by setting `DISABLE_TOOLBOX_EXIT=1`. 45 | 46 | You can specify which image should be used as a default by setting `TOOLBOX_DEFAULT_IMAGE=ghcr.io/mikebarkmin/fedora-toolbox:35`. 47 | 48 | For this plugin to work your container must have `zsh` installed. You can used this image `ghcr.io/mikebarkmin/fedora-toolbox:35` which comes preinstalled with `zsh` and `neovim`. 49 | 50 | ## Aliases 51 | 52 | There are some convenient aliases which make for example use of the `TOOLBOX_DEFAULT_IMAGE` when set. 53 | 54 | | alias | command | comment | 55 | | ----- | ------- | ------- | 56 | | tb | toolbox | | 57 | | tbi | echo $TOOLBOX_DEFAULT_CONTAINER > .toolbox && toolbox_cwd | | 58 | | tbc | toolbox create --image $TOOLBOX_DEFAULT_IMAGE | | 59 | | tbe | toolbox enter | This is context aware | 60 | | tbrm | toolbox rm | | 61 | | tbrmi | toolbox rmi | | 62 | | tbl | toolbox list | | 63 | | tbr | toolbox run | This is context aware | 64 | 65 | 66 | ## Theme Integration 67 | In most themes you can see the hostname (`user_host`), which is set by this plugin for each container, so there is no additional setup needed. 68 | 69 | Additionally, the plugin provides a prompt function with can be used in a theme to display a hexagon to indicated that you are in a toolbox. 70 | 71 | Here is an example of a modified `bira` theme: 72 | 73 | ```zsh 74 | ... 75 | local toolbox_prompt='$(toolbox_prompt_info)' 76 | 77 | PROMPT="╭─${toolbox_prompt}${user_host}${current_dir}${rvm_ruby}${git_branch}${venv_prompt} 78 | ╰─%B${user_symbol}%b " 79 | ... 80 | ``` 81 | 82 | ## Advanced Setup 83 | 84 | This plugin works great with vscode, if you use this [toolbox-vscode](https://github.com/owtaylor/toolbox-vscode). 85 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/cmp.lua: -------------------------------------------------------------------------------- 1 | -- Set completeopt to have a better completion experience 2 | vim.o.completeopt = 'menuone,noselect' 3 | local cmp = require 'cmp' 4 | 5 | cmp.setup({ 6 | completion = { 7 | -- completeopt = 'menu,menuone,noinsert', 8 | }, 9 | snippet = { 10 | expand = function(args) require('luasnip').lsp_expand(args.body) end 11 | }, 12 | formatting = { 13 | format = function(entry, vim_item) 14 | -- fancy icons and a name of kind 15 | vim_item.kind = require("lspkind").presets.default[vim_item.kind] 16 | -- set a name for each source 17 | vim_item.menu = ({ 18 | buffer = "[Buff]", 19 | nvim_lsp = "[LSP]", 20 | luasnip = "[LuaSnip]", 21 | nvim_lua = "[Lua]", 22 | latex_symbols = "[Latex]" 23 | })[entry.source.name] 24 | return vim_item 25 | end 26 | }, 27 | sources = { 28 | {name = 'nvim_lsp'}, {name = 'nvim_lua'}, {name = 'path'}, 29 | {name = 'luasnip'}, {name = 'buffer', keyword_length = 1}, 30 | {name = 'calc'} 31 | }, 32 | experimental = { 33 | -- ghost_text = true, 34 | } 35 | 36 | }) 37 | 38 | -- Require function for tab to work with LUA-SNIP 39 | local has_words_before = function() 40 | local line, col = unpack(vim.api.nvim_win_get_cursor(0)) 41 | return col ~= 0 and 42 | vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, 43 | col) 44 | :match("%s") == nil 45 | end 46 | local luasnip = require("luasnip") 47 | 48 | -- If you want insert `(` after select function or method item 49 | local cmp_autopairs = require('nvim-autopairs.completion.cmp') 50 | cmp.event:on( 51 | 'confirm_done', 52 | cmp_autopairs.on_confirm_done() 53 | ) 54 | 55 | cmp.setup({ 56 | mapping = { 57 | [''] = cmp.mapping.complete(), 58 | [''] = cmp.mapping.close(), 59 | [''] = cmp.mapping.scroll_docs(-4), 60 | [''] = cmp.mapping.scroll_docs(4), 61 | [''] = cmp.mapping.confirm({ 62 | behavior = cmp.ConfirmBehavior.Replace, 63 | select = false 64 | }), 65 | 66 | [""] = cmp.mapping(function(fallback) 67 | if cmp.visible() then 68 | cmp.select_next_item() 69 | elseif luasnip.expand_or_jumpable() then 70 | luasnip.expand_or_jump() 71 | elseif has_words_before() then 72 | cmp.complete() 73 | else 74 | fallback() 75 | end 76 | end, {"i", "s"}), 77 | 78 | [""] = cmp.mapping(function(fallback) 79 | if cmp.visible() then 80 | cmp.select_prev_item() 81 | elseif luasnip.jumpable(-1) then 82 | luasnip.jump(-1) 83 | else 84 | fallback() 85 | end 86 | end, {"i", "s"}) 87 | 88 | } 89 | }) 90 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/formatter.lua: -------------------------------------------------------------------------------- 1 | local java = function() 2 | return { 3 | exe = "google-java-format", 4 | args = {"--replace"}, 5 | } 6 | end 7 | 8 | local goFmt = function() 9 | return { 10 | exe = "gofmt", 11 | args = {"-w"}, 12 | tempfile_postfix = ".tmp", 13 | stdin = false 14 | } 15 | end 16 | 17 | local goImports = function() 18 | return { 19 | exe = "goimports", 20 | args = {"-w"}, 21 | tempfile_postfix = ".tmp", 22 | stdin = false 23 | } 24 | end 25 | 26 | local prettier = function() 27 | return { 28 | exe = "prettier", 29 | args = { 30 | "--config-precendece", 31 | "prefer-file", 32 | "--stdin-filepath", 33 | vim.fn.fnameescape(vim.api.nvim_buf_get_name(0)) 34 | }, 35 | stdin = true 36 | } 37 | end 38 | 39 | require("formatter").setup( 40 | { 41 | filetype = { 42 | html = { 43 | prettier 44 | }, 45 | tex = { 46 | -- prettier 47 | function() 48 | return { 49 | exe = "latexindent", 50 | stdin = true 51 | } 52 | end 53 | }, 54 | css = { 55 | prettier 56 | }, 57 | json = { 58 | prettier 59 | }, 60 | markdown = { 61 | prettier 62 | }, 63 | javascript = { 64 | prettier 65 | }, 66 | javascriptreact = { 67 | prettier 68 | }, 69 | java = { 70 | java 71 | }, 72 | sh = { 73 | prettier 74 | }, 75 | zsh = { 76 | prettier 77 | }, 78 | bash = { 79 | prettier 80 | }, 81 | sql = { 82 | prettier 83 | }, 84 | typescript = { 85 | prettier 86 | }, 87 | typescriptreact = { 88 | prettier 89 | }, 90 | go = { 91 | goImports, 92 | goFmt 93 | }, 94 | terraform = { 95 | function() 96 | return { 97 | exe = "terraform fmt", 98 | stdin = true 99 | } 100 | end 101 | }, 102 | lua = { 103 | -- luafmt 104 | function() 105 | return { 106 | exe = "luafmt", 107 | args = {"--indent-count", 2, "--stdin"}, 108 | stdin = true 109 | } 110 | end 111 | }, 112 | python = { 113 | -- Configuration for psf/black 114 | function() 115 | return { 116 | exe = "black", -- this should be available on your $PATH 117 | args = {"-"}, 118 | stdin = true 119 | } 120 | end 121 | } 122 | } 123 | } 124 | ) 125 | 126 | --[=[ 127 | vim.api.nvim_exec([[ 128 | augroup FormatAutogroup 129 | autocmd! 130 | autocmd BufWritePost *.js,*.py,*.ts,*.tsx,*.jsx,*.html,*.css,*.json,*.rs,*.lua FormatWrite 131 | augroup END 132 | ]], true) 133 | ]=] 134 | 135 | vim.api.nvim_exec( 136 | [[ 137 | augroup TrimTrailingWhiteSpace 138 | au! 139 | au BufWritePre * %s/\s\+$//e 140 | au BufWritePre * %s/\n\+\%$//e 141 | augroup END 142 | ]], 143 | true 144 | ) 145 | -------------------------------------------------------------------------------- /zsh/.oh-my-zsh/custom/plugins/toolbox/toolbox.plugin.zsh: -------------------------------------------------------------------------------- 1 | if [[ $? -eq 0 ]] && ! type toolbox &>/dev/null; then 2 | print "[oh-my-zsh] toolbox plugin: shell function 'toolbox' not defined.\n" \ 3 | "Please check toolbox" >&2 4 | return 5 | fi 6 | 7 | function is_in_toolbox() { 8 | if [[ -f /run/.containerenv && -f /run/.toolboxenv ]]; then 9 | return 0 10 | else 11 | return 1 12 | fi 13 | } 14 | 15 | function toolbox_prompt_info() { 16 | if is_in_toolbox; then 17 | echo "⬢ " 18 | else 19 | return 0 20 | fi 21 | } 22 | 23 | function toolbox_name { 24 | # Get absolute path, resolving symlinks 25 | local PROJECT_ROOT="${PWD:A}" 26 | while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.toolbox" && 27 | ! -d "$PROJECT_ROOT/.git" ]]; do 28 | PROJECT_ROOT="${PROJECT_ROOT:h}" 29 | done 30 | 31 | # Check for toolbox name override 32 | if [[ -f "$PROJECT_ROOT/.toolbox" ]]; then 33 | echo "$(cat "$PROJECT_ROOT/.toolbox")" 34 | elif [[ -d "$PROJECT_ROOT/.git" && -n $TOOLBOX_DEFAULT_CONTAINER ]]; then 35 | echo "$TOOLBOX_DEFAULT_CONTAINER" 36 | fi 37 | } 38 | 39 | # Automatically enter Git projects in the default toolbox container. Toolbox 40 | # container can be overridden by placing a .toolbox file in the project root 41 | # with a container name in it. 42 | # 43 | function toolbox_cwd { 44 | if [[ -z "$TOOLBOX_CWD" ]]; then 45 | local TOOLBOX_CWD=1 46 | local TOOLBOX_NAME=$(toolbox_name) 47 | 48 | if [[ -n $TOOLBOX_NAME ]]; then 49 | if ! is_in_toolbox; then 50 | if ! $(podman container exists $TOOLBOX_NAME); then 51 | tbc $TOOLBOX_NAME 52 | fi 53 | toolbox --container $TOOLBOX_NAME run sudo hostname $TOOLBOX_NAME 54 | toolbox enter $TOOLBOX_NAME 55 | fi 56 | elif [[ "$(hostname)" != "toolbox" && ! $DISABLE_TOOLBOX_EXIT -eq 1 ]]; then 57 | if is_in_toolbox; then 58 | exit 59 | fi 60 | fi 61 | fi 62 | } 63 | 64 | if [[ ! $DISABLE_TOOLBOX_ENTER -eq 1 ]]; then 65 | 66 | # Append workon_cwd to the chpwd_functions array, so it will be called on cd 67 | # http://zsh.sourceforge.net/Doc/Release/Functions.html 68 | autoload -Uz add-zsh-hook 69 | add-zsh-hook chpwd toolbox_cwd 70 | fi 71 | 72 | if [[ -n "$TOOLBOX_DEFAULT_IMAGE" ]]; then 73 | alias tbc="toolbox create --image $TOOLBOX_DEFAULT_IMAGE" 74 | else 75 | alias tbc="toolbox create" 76 | fi 77 | alias tbi="echo $TOOLBOX_DEFAULT_CONTAINER > .toolbox && toolbox_cwd" 78 | alias tb="toolbox" 79 | alias tbrm="toolbox rm" 80 | alias tbrmi="toolbox rmi" 81 | alias tbl="toolbox list" 82 | 83 | function tbe { 84 | local TOOLBOX_NAME=$(toolbox_name) 85 | 86 | if [[ -n "$1" ]]; then 87 | TOOLBOX_NAME=$1 88 | elif [[ -z $TOOLBOX_NAME ]]; then 89 | TOOLBOX_NAME=$TOOLBOX_DEFAULT_CONTAINER 90 | fi 91 | 92 | if ! $(podman container exists $TOOLBOX_NAME); then 93 | tbc $TOOLBOX_NAME 94 | fi 95 | 96 | toolbox --container $TOOLBOX_NAME run sudo hostname $TOOLBOX_NAME 97 | toolbox enter $TOOLBOX_NAME 98 | } 99 | 100 | function tbr { 101 | local TOOLBOX_NAME=$(toolbox_name) 102 | 103 | if $(podman container exists $1); then 104 | TOOLBOX_NAME=$1 105 | shift 106 | elif [[ -z $TOOLBOX_NAME ]]; then 107 | TOOLBOX_NAME=$TOOLBOX_DEFAULT_CONTAINER 108 | fi 109 | 110 | toolbox --container $TOOLBOX_NAME run sudo hostname $TOOLBOX_NAME 111 | toolbox --container $TOOLBOX_NAME run "$@" 112 | } 113 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins/lsp.lua: -------------------------------------------------------------------------------- 1 | require("mason").setup( 2 | { 3 | ui = { 4 | icons = { 5 | server_installed = "✓", 6 | server_pending = "➜", 7 | server_uninstalled = "✗" 8 | } 9 | } 10 | } 11 | ) 12 | 13 | require("mason-lspconfig").setup( 14 | { 15 | ensure_installed = { 16 | "astro", 17 | "tsserver", -- for javascript 18 | "jsonls", -- for json 19 | "jdtls", -- for java 20 | "texlab", -- for latex 21 | "ltex", 22 | "sqlls", -- for sql 23 | "pyright", -- for python 24 | "lua_ls", -- for lua 25 | "gopls", -- for go 26 | "yamlls", 27 | "bashls", 28 | "dockerls", 29 | "html", 30 | "cssls", 31 | "marksman" 32 | } 33 | } 34 | ) 35 | 36 | require("mason-tool-installer").setup { 37 | ensure_installed = { 38 | "checkstyle", 39 | "codespell", 40 | "java-debug-adapter", 41 | "js-debug-adapter", 42 | "luaformatter", 43 | "latexindent" 44 | }, 45 | auto_update = true, 46 | run_on_start = true, 47 | start_delay = 3000, 48 | debouce_hours = 5 49 | } 50 | 51 | require("mason-lspconfig").setup_handlers { 52 | -- default handler - setup with default settings 53 | function(server_name) 54 | require("lspconfig")[server_name].setup {} 55 | end, 56 | ["lua_ls"] = function() 57 | require("lspconfig").lua_ls.setup { 58 | settings = { 59 | Lua = { 60 | diagnostics = { 61 | globals = {"vim"} 62 | } 63 | } 64 | } 65 | } 66 | end, 67 | ["texlab"] = function() 68 | require("lspconfig").texlab.setup { 69 | settings = { 70 | texlab = { 71 | auxDirectory = "build/pdf", 72 | chktex = { 73 | onEdit = true 74 | }, 75 | build = { 76 | executable = "latexmk", 77 | forwardSearchAfter = false, 78 | onSave = false 79 | } 80 | } 81 | } 82 | } 83 | end, 84 | ["ltex"] = function() 85 | require("lspconfig").ltex.setup( 86 | { 87 | settings = { 88 | ltex = { 89 | enabled = {"latex", "tex", "bib", "markdown", "text", "txt"}, 90 | diagnosticSeverity = "information", 91 | setenceCacheSize = 2000, 92 | additionalRules = { 93 | enablePickyRules = true, 94 | motherTongue = "de" 95 | }, 96 | trace = {server = "verbose"}, 97 | dictionary = {}, 98 | disabledRules = {}, 99 | hiddenFalsePositives = {} 100 | } 101 | } 102 | } 103 | ) 104 | end 105 | } 106 | 107 | -- options for lsp diagnostic 108 | vim.lsp.handlers["textDocument/publishDiagnostics"] = 109 | vim.lsp.with( 110 | vim.lsp.diagnostic.on_publish_diagnostics, 111 | { 112 | underline = true, 113 | signs = true, 114 | update_in_insert = true, 115 | virtual_text = { 116 | true, 117 | spacing = 6 118 | --severity_limit='Error' -- Only show virtual text on error 119 | } 120 | } 121 | ) 122 | 123 | -- se LSP diagnostic symbols/signs 124 | vim.api.nvim_command [[ sign define LspDiagnosticsSignError text=✗ texthl=LspDiagnosticsSignError linehl= numhl= ]] 125 | vim.api.nvim_command [[ sign define LspDiagnosticsSignWarning text=⚠ texthl=LspDiagnosticsSignWarning linehl= numhl= ]] 126 | vim.api.nvim_command [[ sign define LspDiagnosticsSignInformation text= texthl=LspDiagnosticsSignInformation linehl= numhl= ]] 127 | vim.api.nvim_command [[ sign define LspDiagnosticsSignHint text= texthl=LspDiagnosticsSignHint linehl= numhl= ]] 128 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/configs.lua: -------------------------------------------------------------------------------- 1 | local exec = vim.api.nvim_exec -- execute Vimscript 2 | local set = vim.opt -- global options 3 | local cmd = vim.cmd -- execute Vim commands 4 | -- local fn = vim.fn -- call Vim functions 5 | local g = vim.g -- global variables 6 | -- local b = vim.bo -- buffer-scoped options 7 | -- local w = vim.wo -- windows-scoped options 8 | 9 | 10 | vim.cmd [[ set formatoptions=croq]] 11 | vim.cmd [[ colorscheme catppuccin-frappe ]] 12 | set.guifont = "FiraCode Nerd Font 11" 13 | set.termguicolors = true -- Enable GUI colors for the terminal to get truecolor 14 | set.undofile = true 15 | set.undodir = vim.fn.stdpath("config") .. "/undo" 16 | set.clipboard = set.clipboard + "unnamedplus" -- copy & paste 17 | set.wrap = false -- don't automatically wrap on load 18 | set.showmatch = true -- show the matching part of the pair for [] {} and () 19 | set.cursorline = true -- highlight current line 20 | set.number = true -- show line numbers 21 | set.relativenumber = true -- show relative line number 22 | set.incsearch = true -- incremental search 23 | set.hlsearch = true -- highlighted search results 24 | set.ignorecase = true -- ignore case sensetive while searching 25 | set.smartcase = true 26 | set.scrolloff = 1 -- when scrolling, keep cursor 1 lines away from screen border 27 | set.sidescrolloff = 2 -- keep 30 columns visible left and right of the cursor at all times 28 | set.backspace = "indent,start,eol" -- make backspace behave like normal again 29 | set.mouse = "a" -- turn on mouse interaction 30 | set.updatetime = 500 -- CursorHold interval 31 | set.expandtab = true 32 | set.softtabstop = 2 33 | -- set.textwidth = 100 34 | set.shiftwidth = 2 -- spaces per tab (when shifting), when using the >> or << commands, shift lines by 4 spaces 35 | set.tabstop = 2 -- spaces per tab 36 | set.smarttab = true -- / indent/dedent in leading whitespace 37 | set.autoindent = true -- maintain indent of current line 38 | set.shiftround = true 39 | set.splitbelow = true -- open horizontal splits below current window 40 | set.splitright = true -- open vertical splits to the right of the current window 41 | set.laststatus = 2 -- always show status line 42 | -- set.colorcolumn = "79" -- vertical word limit line 43 | 44 | set.hidden = true -- allows you to hide buffers with unsaved changes without being prompted 45 | set.inccommand = "split" -- live preview of :s results 46 | set.shell = "zsh" -- shell to use for `!`, `:!`, `system()` etc. 47 | -- highlight on yank 48 | exec( 49 | [[ 50 | augroup YankHighlight 51 | autocmd! 52 | autocmd TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=500, on_visual=true} 53 | augroup end 54 | ]], 55 | false 56 | ) 57 | 58 | -- jump to the last position when reopening a file 59 | cmd( 60 | [[ 61 | if has("autocmd") 62 | au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif 63 | endif 64 | ]] 65 | ) 66 | 67 | -- auto source vim 68 | cmd([[ 69 | augroup neovim 70 | autocmd! 71 | autocmd BufWritePost $MYVIMRC nested source $MYVIMRC 72 | augroup end 73 | ]]) 74 | 75 | -- patterns to ignore during file-navigation 76 | set.wildignore = set.wildignore + "*.o,*.rej,*.so" 77 | -- remove whitespace on save 78 | cmd([[au BufWritePre * :%s/\s\+$//e]]) 79 | -- faster scrolling 80 | set.lazyredraw = true 81 | -- completion options 82 | set.completeopt = "menuone,noselect,noinsert" 83 | 84 | cmd([[ autocmd BufNewFile,BufRead *.mdx set filetype=markdown ]]) 85 | 86 | -- 2 spaces for selected filetypes 87 | cmd([[ autocmd FileType xml,html,xhtml,css,scssjavascript,lua,dart setlocal shiftwidth=2 tabstop=2 ]]) 88 | -- json 89 | cmd([[ au BufEnter *.json set ai expandtab shiftwidth=2 tabstop=2 sta fo=croql ]]) 90 | 91 | --- latex 92 | g.tex_flavor = "latex" 93 | cmd([[ autocmd FileType latex,tex,plaintex set wrap linebreak ]]) 94 | -------------------------------------------------------------------------------- /sway/.config/waybar/mediaplayer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import argparse 3 | import logging 4 | import sys 5 | import signal 6 | import gi 7 | import json 8 | gi.require_version('Playerctl', '2.0') 9 | from gi.repository import Playerctl, GLib 10 | 11 | logger = logging.getLogger(__name__) 12 | 13 | 14 | def write_output(text, player): 15 | logger.info('Writing output') 16 | 17 | output = {'text': text, 18 | 'class': 'custom-' + player.props.player_name, 19 | 'alt': player.props.player_name} 20 | 21 | sys.stdout.write(json.dumps(output) + '\n') 22 | sys.stdout.flush() 23 | 24 | 25 | def on_play(player, status, manager): 26 | logger.info('Received new playback status') 27 | on_metadata(player, player.props.metadata, manager) 28 | 29 | 30 | def on_metadata(player, metadata, manager): 31 | logger.info('Received new metadata') 32 | track_info = '' 33 | 34 | if player.props.player_name == 'spotify' and \ 35 | 'mpris:trackid' in metadata.keys() and \ 36 | ':ad:' in player.props.metadata['mpris:trackid']: 37 | track_info = 'AD PLAYING' 38 | elif player.get_artist() != '' and player.get_title() != '': 39 | track_info = '{artist} - {title}'.format(artist=player.get_artist(), 40 | title=player.get_title()) 41 | else: 42 | track_info = player.get_title() 43 | 44 | if player.props.status != 'Playing' and track_info: 45 | track_info = ' ' + track_info 46 | write_output(track_info, player) 47 | 48 | 49 | def on_player_appeared(manager, player, selected_player=None): 50 | if player is not None and (selected_player is None or player.name == selected_player): 51 | init_player(manager, player) 52 | else: 53 | logger.debug("New player appeared, but it's not the selected player, skipping") 54 | 55 | 56 | def on_player_vanished(manager, player): 57 | logger.info('Player has vanished') 58 | sys.stdout.write('\n') 59 | sys.stdout.flush() 60 | 61 | 62 | def init_player(manager, name): 63 | logger.debug('Initialize player: {player}'.format(player=name.name)) 64 | player = Playerctl.Player.new_from_name(name) 65 | player.connect('playback-status', on_play, manager) 66 | player.connect('metadata', on_metadata, manager) 67 | manager.manage_player(player) 68 | on_metadata(player, player.props.metadata, manager) 69 | 70 | 71 | def signal_handler(sig, frame): 72 | logger.debug('Received signal to stop, exiting') 73 | sys.stdout.write('\n') 74 | sys.stdout.flush() 75 | # loop.quit() 76 | sys.exit(0) 77 | 78 | 79 | def parse_arguments(): 80 | parser = argparse.ArgumentParser() 81 | 82 | # Increase verbosity with every occurrence of -v 83 | parser.add_argument('-v', '--verbose', action='count', default=0) 84 | 85 | # Define for which player we're listening 86 | parser.add_argument('--player') 87 | 88 | return parser.parse_args() 89 | 90 | 91 | def main(): 92 | arguments = parse_arguments() 93 | 94 | # Initialize logging 95 | logging.basicConfig(stream=sys.stderr, level=logging.DEBUG, 96 | format='%(name)s %(levelname)s %(message)s') 97 | 98 | # Logging is set by default to WARN and higher. 99 | # With every occurrence of -v it's lowered by one 100 | logger.setLevel(max((3 - arguments.verbose) * 10, 0)) 101 | 102 | # Log the sent command line arguments 103 | logger.debug('Arguments received {}'.format(vars(arguments))) 104 | 105 | manager = Playerctl.PlayerManager() 106 | loop = GLib.MainLoop() 107 | 108 | manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player)) 109 | manager.connect('player-vanished', on_player_vanished) 110 | 111 | signal.signal(signal.SIGINT, signal_handler) 112 | signal.signal(signal.SIGTERM, signal_handler) 113 | signal.signal(signal.SIGPIPE, signal.SIG_DFL) 114 | 115 | for player in manager.props.player_names: 116 | if arguments.player is not None and arguments.player != player.name: 117 | logger.debug('{player} is not the filtered player, skipping it' 118 | .format(player=player.name) 119 | ) 120 | continue 121 | 122 | init_player(manager, player) 123 | 124 | loop.run() 125 | 126 | 127 | if __name__ == '__main__': 128 | main() 129 | -------------------------------------------------------------------------------- /xkb/.config/xkb/symbols/custom: -------------------------------------------------------------------------------- 1 | xkb_symbols "de-prog" { 2 | name[Group1]="German (Programmer)"; 3 | 4 | // code normal , shift, lalt (lower), lalt + ralt (adjust), ralt (raise) 5 | key { [ 1, exclam, onesuperior, exclamdown ] }; 6 | key { [ 2, quotedbl, at, oneeighth ] }; 7 | key { [ 3, numbersign, threesuperior, sterling ] }; 8 | key { [ 4, dollar, onequarter, dollar ] }; 9 | key { [ 5, percent, onehalf, threeeighths ] }; 10 | key { [ 6, ampersand, notsign, fiveeighths ] }; 11 | key { [ 7, slash, braceleft, seveneighths ] }; 12 | key { [ 8, parenleft, bracketleft, trademark ] }; 13 | key { [ 9, parenright, bracketright, plusminus ] }; 14 | key { [ 0, equal, braceright, degree ] }; 15 | key { [ minus, underscore, backslash, questiondown ] }; 16 | key { [ equal, plus, cedilla, ogonek ] }; 17 | 18 | key { [ q, Q, at, Greek_OMEGA ] }; 19 | key { [ w, W, lstroke, Lstroke ] }; 20 | key { [ e, E, EuroSign, cent ] }; 21 | key { [ r, R, paragraph, registered ] }; 22 | key { [ t, T, tslash, Tslash ] }; 23 | key { [ y, Y, leftarrow, yen ] }; 24 | key { [ u, U, downarrow, uparrow ] }; 25 | key { [ i, I, rightarrow, idotless ] }; 26 | key { [ o, O, oslash, Ooblique ] }; 27 | key { [ p, P, thorn, THORN ] }; 28 | key { [bracketleft, braceleft, diaeresis, degree ] }; 29 | key { [bracketright, braceright, asciitilde, macron ] }; 30 | 31 | key { [ a, A, ae, AE ] }; 32 | key { [ s, S, ssharp, section ] }; 33 | key { [ d, D, eth, ETH ] }; 34 | key { [ f, F, dstroke, ordfeminine ] }; 35 | key { [ g, G, eng, ENG ] }; 36 | key { [ h, H, Left, Hstroke ] }; 37 | key { [ j, J, Down, dead_horn ] }; 38 | key { [ k, K, Up, ampersand ] }; 39 | key { [ l, L, Right, Lstroke ] }; 40 | key { [ semicolon, colon, acute, doubleacute ] }; 41 | key { [apostrophe, quotedbl, asciicircum, caron ] }; 42 | key { [ grave, asciitilde, notsign, notsign ] }; 43 | 44 | key { [ backslash, bar, grave, breve ] }; 45 | key { [ z, Z, guillemotleft, less ] }; 46 | key { [ x, X, guillemotright, greater ] }; 47 | key { [ c, C, cent, copyright ] }; 48 | key { [ v, V, leftdoublequotemark, leftsinglequotemark ] }; 49 | key { [ b, B, rightdoublequotemark, rightsinglequotemark ] }; 50 | key { [ n, N, n, N ] }; 51 | key { [ m, M, mu, masculine ] }; 52 | key { [ comma, semicolon, horizconnector, multiply ] }; 53 | key { [ period, colon, periodcentered, division ] }; 54 | key { [ minus, underscore, belowdot, abovedot ] }; 55 | 56 | key { [ BackSpace, BackSpace, BackSpace, BackSpace ] }; 57 | key { [ KP_Enter, KP_Enter, Tab, KP_Enter, Tab ] }; 58 | key { [ Escape, Escape, Escape, Escape, Escape ] }; 59 | key { [ Shift_L, Shift_L, greater, Shift_L, Shift_L ] }; 60 | key { [ Shift_R, Shift_R, Shift_R, Shift_R, Shift_R ] }; 61 | key { [ Tab, Tab, EuroSign, Tab, F1 ] }; 62 | key { [ Space, Space, BackSpace, Space, BackSpace ] } 63 | 64 | // Make caps an escape key 65 | key { [ Escape, Escape, dollar, Escape, Escape ] }; 66 | 67 | // copied from de baisc 68 | include "kpdl(comma)" 69 | 70 | include "level3(lalt_switch)" 71 | include "level5(ralt_switch)" 72 | }; 73 | -------------------------------------------------------------------------------- /zsh/.zshrc: -------------------------------------------------------------------------------- 1 | # If you come from bash you might have to change your $PATH. 2 | # export PATH=$HOME/bin:/usr/local/bin:$PATH 3 | 4 | # Path to your oh-my-zsh installation. 5 | export ZSH="/var/home/mbarkmin/.oh-my-zsh" 6 | 7 | # Set name of the theme to load --- if set to "random", it will 8 | # load a random theme each time oh-my-zsh is loaded, in which case, 9 | # to know which specific one was loaded, run: echo $RANDOM_THEME 10 | # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes 11 | ZSH_THEME="omer" 12 | 13 | # Set list of themes to pick from when loading at random 14 | # Setting this variable when ZSH_THEME=random will cause zsh to load 15 | # a theme from this variable instead of looking in $ZSH/themes/ 16 | # If set to an empty array, this variable will have no effect. 17 | # ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) 18 | 19 | # Uncomment the following line to use case-sensitive completion. 20 | # CASE_SENSITIVE="true" 21 | 22 | # Uncomment the following line to use hyphen-insensitive completion. 23 | # Case-sensitive completion must be off. _ and - will be interchangeable. 24 | # HYPHEN_INSENSITIVE="true" 25 | 26 | # Uncomment one of the following lines to change the auto-update behavior 27 | # zstyle ':omz:update' mode disabled # disable automatic updates 28 | # zstyle ':omz:update' mode auto # update automatically without asking 29 | # zstyle ':omz:update' mode reminder # just remind me to update when it's time 30 | 31 | # Uncomment the following line to change how often to auto-update (in days). 32 | # zstyle ':omz:update' frequency 13 33 | 34 | # Uncomment the following line if pasting URLs and other text is messed up. 35 | # DISABLE_MAGIC_FUNCTIONS="true" 36 | 37 | # Uncomment the following line to disable colors in ls. 38 | # DISABLE_LS_COLORS="true" 39 | 40 | # Uncomment the following line to disable auto-setting terminal title. 41 | # DISABLE_AUTO_TITLE="true" 42 | 43 | # Uncomment the following line to enable command auto-correction. 44 | # ENABLE_CORRECTION="true" 45 | 46 | # Uncomment the following line to display red dots whilst waiting for completion. 47 | # You can also set it to another string to have that shown instead of the default red dots. 48 | # e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" 49 | # Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) 50 | # COMPLETION_WAITING_DOTS="true" 51 | 52 | # Uncomment the following line if you want to disable marking untracked files 53 | # under VCS as dirty. This makes repository status check for large repositories 54 | # much, much faster. 55 | # DISABLE_UNTRACKED_FILES_DIRTY="true" 56 | 57 | # Uncomment the following line if you want to change the command execution time 58 | # stamp shown in the history command output. 59 | # You can set one of the optional three formats: 60 | # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" 61 | # or set a custom format using the strftime function format specifications, 62 | # see 'man strftime' for details. 63 | # HIST_STAMPS="mm/dd/yyyy" 64 | 65 | # Would you like to use another custom folder than $ZSH/custom? 66 | # ZSH_CUSTOM=/path/to/new-custom-folder 67 | 68 | # Which plugins would you like to load? 69 | # Standard plugins can be found in $ZSH/plugins/ 70 | # Custom plugins may be added to $ZSH_CUSTOM/plugins/ 71 | # Example format: plugins=(rails git textmate ruby lighthouse) 72 | # Add wisely, as too many plugins slow down shell startup. 73 | DISABLE_DISTROBOX_ENTER=true 74 | ZSH_TMUX_DEFAULT_SESSION_NAME="default" 75 | ZSH_TMUX_AUTOSTART=false 76 | ZSH_TMUX_AUTOQUIT=false 77 | ZSH_TMUX_AUTOCONNECT=true 78 | plugins=( 79 | ssh-agent 80 | git 81 | distrobox 82 | virtualenv 83 | poetry-env 84 | tmux 85 | auto-source 86 | ) 87 | 88 | source $ZSH/oh-my-zsh.sh 89 | 90 | # User configuration 91 | 92 | # export MANPATH="/usr/local/man:$MANPATH" 93 | 94 | # You may need to manually set your language environment 95 | # export LANG=en_US.UTF-8 96 | 97 | # Preferred editor for local and remote sessions 98 | # if [[ -n $SSH_CONNECTION ]]; then 99 | # export EDITOR='vim' 100 | # else 101 | # export EDITOR='mvim' 102 | # fi 103 | 104 | # Compilation flags 105 | # export ARCHFLAGS="-arch x86_64" 106 | 107 | # Set personal aliases, overriding those provided by oh-my-zsh libs, 108 | # plugins, and themes. Aliases can be placed here, though oh-my-zsh 109 | # users are encouraged to define aliases within the ZSH_CUSTOM folder. 110 | # For a full list of active aliases, run `alias`. 111 | # 112 | # Example aliases 113 | # alias zshconfig="mate ~/.zshrc" 114 | # alias ohmyzsh="mate ~/.oh-my-zsh" 115 | 116 | source $HOME/.zsh_profile 117 | 118 | # pnpm 119 | export PNPM_HOME="/var/home/mbarkmin/.local/share/pnpm" 120 | export PATH="$PNPM_HOME:$PATH" 121 | # pnpm end 122 | 123 | #THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! 124 | export SDKMAN_DIR="$HOME/.sdkman" 125 | [[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh" 126 | -------------------------------------------------------------------------------- /nvim/.config/nvim/lua/plugins.lua: -------------------------------------------------------------------------------- 1 | -- Only required if you have packer configured as `opt` 2 | vim.cmd [[packadd packer.nvim]] 3 | local fn = vim.fn 4 | local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" 5 | if fn.empty(fn.glob(install_path)) > 0 then 6 | packer_bootstrap = 7 | fn.system({"git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path}) 8 | end 9 | 10 | return require("packer").startup { 11 | function(use) 12 | -- Packer can manage itself 13 | use "wbthomason/packer.nvim" 14 | 15 | use { 16 | -- colorscheme for (neo)vim 17 | "catppuccin/nvim", 18 | as = "catppuccin", 19 | config = [[ require('plugins/catppuccin') ]] 20 | } 21 | 22 | use { 23 | "vimpostor/vim-lumen" 24 | } 25 | 26 | use { 27 | "windwp/nvim-autopairs", 28 | config = function() 29 | require("nvim-autopairs").setup {} 30 | end 31 | } 32 | 33 | use { 34 | "neovim/nvim-lspconfig", 35 | wants = { 36 | "williamboman/mason.nvim", 37 | "williamboman/mason-lspconfig.nvim", 38 | "WhoIsSethDaniel/mason-tool-installer.nvim" 39 | }, 40 | requires = { 41 | "williamboman/mason.nvim", 42 | "williamboman/mason-lspconfig.nvim", 43 | "WhoIsSethDaniel/mason-tool-installer.nvim" 44 | }, 45 | config = [[ require('plugins/lsp') ]] 46 | } 47 | 48 | use { 49 | -- vscode-like pictograms for neovim lsp completion items Topics 50 | "onsails/lspkind-nvim", 51 | config = [[ require('plugins/lspkind') ]] 52 | } 53 | 54 | use { 55 | -- A completion plugin for neovim coded in Lua. 56 | "hrsh7th/nvim-cmp", 57 | requires = { 58 | "hrsh7th/cmp-nvim-lsp", -- nvim-cmp source for neovim builtin LSP client 59 | "hrsh7th/cmp-nvim-lua", -- nvim-cmp source for nvim lua 60 | "hrsh7th/cmp-buffer", -- nvim-cmp source for buffer words. 61 | "hrsh7th/cmp-path", -- nvim-cmp source for filesystem paths. 62 | "hrsh7th/cmp-calc", -- nvim-cmp source for math calculation. 63 | "saadparwaiz1/cmp_luasnip" -- luasnip completion source for nvim-cmp 64 | }, 65 | config = [[ require('plugins/cmp') ]] 66 | } 67 | 68 | use { 69 | "nvim-telescope/telescope-project.nvim" 70 | } 71 | 72 | use { 73 | "nvim-telescope/telescope-ui-select.nvim" 74 | } 75 | 76 | use { 77 | "nvim-telescope/telescope-dap.nvim", 78 | requires = { 79 | "mfussenegger/nvim-dap" 80 | } 81 | } 82 | 83 | use { 84 | "mfussenegger/nvim-jdtls", 85 | requires = { 86 | "mfussenegger/nvim-dap" 87 | } 88 | } 89 | use { 90 | "nvim-telescope/telescope-fzf-native.nvim", 91 | run = "make" 92 | } 93 | 94 | use { 95 | "nvim-telescope/telescope.nvim", 96 | requires = { 97 | "nvim-lua/plenary.nvim", 98 | "BurntSushi/ripgrep" 99 | }, 100 | config = [[ require('plugins/telescope') ]] 101 | } 102 | 103 | use { 104 | "nvim-telescope/telescope-bibtex.nvim", 105 | requires = { 106 | "nvim-telescope/telescope.nvim" 107 | }, 108 | config = function() 109 | require "telescope".load_extension("bibtex") 110 | end 111 | } 112 | 113 | use { 114 | -- Snippet Engine for Neovim written in Lua. 115 | "L3MON4D3/LuaSnip", 116 | requires = { 117 | "rafamadriz/friendly-snippets" -- Snippets collection for a set of different programming languages for faster development. 118 | }, 119 | config = [[ require('plugins/luasnip') ]] 120 | } 121 | 122 | use { 123 | -- Nvim Treesitter configurations and abstraction layer 124 | "nvim-treesitter/nvim-treesitter", 125 | run = ":TSUpdate", 126 | requires = { 127 | "windwp/nvim-ts-autotag", 128 | "p00f/nvim-ts-rainbow" 129 | }, 130 | config = [[ require('plugins/treesitter') ]] 131 | } 132 | 133 | use { 134 | "numToStr/Comment.nvim", 135 | config = function() 136 | require("Comment").setup() 137 | end 138 | } 139 | 140 | use { 141 | "lukas-reineke/indent-blankline.nvim", 142 | config = [[ require('plugins/blankline') ]] 143 | } 144 | 145 | use { 146 | "tpope/vim-eunuch" 147 | } 148 | 149 | use { 150 | "nvim-lualine/lualine.nvim", 151 | config = [[ require('plugins/lualine') ]] 152 | } 153 | 154 | use { 155 | "NeogitOrg/neogit", 156 | requires = {"nvim-lua/plenary.nvim"}, 157 | config = [[ require('plugins/neogit') ]] 158 | } 159 | 160 | use { 161 | "nvim-tree/nvim-tree.lua", 162 | requires = "nvim-tree/nvim-web-devicons", 163 | config = [[ require('plugins/nvim-tree') ]] 164 | } 165 | 166 | use { 167 | "folke/zen-mode.nvim", 168 | config = [[ require('plugins/zen-mode') ]] 169 | } 170 | 171 | use { 172 | "mhartington/formatter.nvim", 173 | config = [[ require('plugins/formatter') ]] 174 | } 175 | 176 | use { 177 | "lambdalisue/suda.vim" 178 | } 179 | 180 | if packer_bootstrap then 181 | require("packer").sync() 182 | end 183 | end 184 | } 185 | -------------------------------------------------------------------------------- /sway/.config/waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "bottom", // Waybar at top layer 3 | "position": "top", // Waybar position (top|bottom|left|right) 4 | "modules-left": [ "clock", "custom/scratchpad-indicator", "sway/mode", "idle_inhibitor", "custom/recorder", "custom/screenshot", "custom/mako", "custom/media"], 5 | "modules-center": ["sway/workspaces"], 6 | "modules-right": [ "cpu", "temperature", "battery", "backlight", "pulseaudio", "bluetooth", "tray"], 7 | // Modules configuration 8 | "sway/workspaces": { 9 | "format": "{index}", 10 | "disable-scroll": true, 11 | "all-outputs": false, 12 | "format-icons": { 13 | "1": "", 14 | "2": "", 15 | "3": "", 16 | "4": "", 17 | "5": "", 18 | "6": "", 19 | "7": "", 20 | "8": "", 21 | "9": "", 22 | "10": "", 23 | "urgent": "", 24 | "active": "", 25 | "default": "" 26 | } 27 | }, 28 | "sway/mode": { 29 | "format": "{}" 30 | }, 31 | "sway/window": { 32 | "format": "{}", 33 | "max-length": 50, 34 | "tooltip": false 35 | }, 36 | "backlight": { 37 | "device": "intel_backlight", 38 | "format": "{percent}% {icon}", 39 | "format-icons": ["", ""], 40 | "on-scroll-up": "light -A 10", 41 | "on-scroll-down": "light -U 10" 42 | }, 43 | "bluetooth": { 44 | "interval": 30, 45 | "format": "{icon}", 46 | // "format-alt": "{status}", 47 | "format-icons": { 48 | "enabled": "", 49 | "disabled": "" 50 | }, 51 | "on-click": "blueberry" 52 | }, 53 | "idle_inhibitor": { 54 | "format": "{icon}", 55 | "format-icons": { 56 | "activated": "", 57 | "deactivated": "" 58 | }, 59 | "tooltip": "true" 60 | }, 61 | "tray": { 62 | //"icon-size": 11, 63 | "spacing": 5, 64 | "show-passive-items": true 65 | }, 66 | "clock": { 67 | "format": " {:%H:%M  %e %b}", 68 | "tooltip-format": "{:%Y %B}\n{calendar}", 69 | "today-format": "{}", 70 | "on-click": "flatpak run org.gnome.Calendar" 71 | }, 72 | "cpu": { 73 | "interval": "1", 74 | "format": " {max_frequency}GHz | {usage}%", 75 | "max-length": 13, 76 | "min-length": 13, 77 | "on-click": "gnome-system-monitor", 78 | "tooltip": false 79 | }, 80 | "temperature": { 81 | //"thermal-zone": 1, 82 | "interval": "4", 83 | "hwmon-path": "/sys/class/hwmon/hwmon3/temp1_input", 84 | "critical-threshold": 74, 85 | "format-critical": " {temperatureC}°C", 86 | "format": "{icon} {temperatureC}°C", 87 | "format-icons": ["", "", ""], 88 | "max-length": 7, 89 | "min-length": 7 90 | }, 91 | "network": { 92 | // "interface": "wlan0", // (Optional) To force the use of this interface, 93 | "format-wifi": " {essid}", 94 | "format-ethernet": "{ifname}: {ipaddr}/{cidr} ", 95 | "format-linked": "{ifname} (No IP) ", 96 | "format-disconnected": "", 97 | "format-alt": "{ifname}: {ipaddr}/{cidr}", 98 | "family": "ipv4", 99 | "on-click": "gnome-control-center wifi", 100 | "tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\n {bandwidthUpBits}  {bandwidthDownBits}", 101 | "tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n {bandwidthUpBits}  {bandwidthDownBits}" 102 | }, 103 | "pulseaudio": { 104 | "scroll-step": 3, // %, can be a float 105 | "format": "{icon} {volume}% {format_source}", 106 | "format-bluetooth": "{volume}% {icon} {format_source}", 107 | "format-bluetooth-muted": " {icon} {format_source}", 108 | "format-muted": " {format_source}", 109 | //"format-source": "{volume}% ", 110 | //"format-source-muted": "", 111 | "format-source": "", 112 | "format-source-muted": "", 113 | "format-icons": { 114 | "headphone": "", 115 | "hands-free": "", 116 | "headset": "", 117 | "phone": "", 118 | "portable": "", 119 | "car": "", 120 | "default": ["", "", ""] 121 | }, 122 | "on-click": "pavucontrol", 123 | }, 124 | "battery": { 125 | "states": { 126 | "good": 80, 127 | "warning": 30, 128 | "critical": 15 129 | }, 130 | "format": "{time} {icon}", 131 | "format-charging": "{time} ", 132 | "format-plugged": "{capacity}% ", 133 | "format-full": "", 134 | "format-icons": ["", "", "", "", ""] 135 | }, 136 | "custom/media": { 137 | "format": "{}", 138 | "return-type": "json", 139 | "max-length": 40, 140 | "escape": true, 141 | "on-click": "playerctl play-pause", 142 | "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder 143 | // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name 144 | }, 145 | "custom/mako": { 146 | "format": "{icon}", 147 | "return-type": "json", 148 | "format-icons": { 149 | "on": "", 150 | "off": "" 151 | }, 152 | "interval": 1, 153 | "exec": "$HOME/.config/waybar/mako-status.sh", 154 | "on-click": "$HOME/.config/waybar/toggle-mako.sh" 155 | }, 156 | "custom/screenshot": { 157 | "format": "", 158 | "on-click": "grimshot --notify save output", 159 | "on-click-right": "grimshot --notify save window", 160 | "on-click-middle": "grimshot --notify save area" 161 | }, 162 | "custom/recorder": { 163 | "format": "{icon}", 164 | "return-type": "json", 165 | "interval": 1, 166 | "format-icons": { 167 | "on": "", 168 | "off": "" 169 | }, 170 | "tooltip": true, 171 | "exec": "$HOME/.config/waybar/wf-recorder-status.sh", 172 | "on-click": "$HOME/.config/waybar/toggle-wf-recorder.sh", 173 | "on-click-right": "$HOME/.config/waybar/toggle-wf-recorder.sh -w", 174 | "on-click-middle": "$HOME/.config/waybar/toggle-wf-recorder.sh -s" 175 | }, 176 | "custom/scratchpad-indicator": { 177 | "interval": 3, 178 | "return-type": "json", 179 | "exec": "swaymsg -t get_tree | jq --unbuffered --compact-output '( select(.name == \"root\") | .nodes[] | select(.name == \"__i3\") | .nodes[] | select(.name == \"__i3_scratch\") | .focus) as $scratch_ids | [.. | (.nodes? + .floating_nodes?) // empty | .[] | select(.id |IN($scratch_ids[]))] as $scratch_nodes | { text: \"\\($scratch_nodes | length)\", tooltip: $scratch_nodes | map(\"\\(.app_id // .window_properties.class) (\\(.id)): \\(.name)\") | join(\"\\n\") }'", 180 | "format": "{}", 181 | "on-click": "exec swaymsg 'scratchpad show'", 182 | } 183 | } 184 | -------------------------------------------------------------------------------- /sway/.config/sway/keybindings: -------------------------------------------------------------------------------- 1 | # 2 | # Basics: 3 | # 4 | # Start a terminal 5 | bindsym $mod+Return exec $term 6 | 7 | # Kill focused window 8 | bindsym $mod+Shift+q kill 9 | 10 | # Start your launcher 11 | bindsym $mod+d exec $menu 12 | bindsym $mod+Shift+d exec $menu_bak 13 | 14 | # Map Wacom Tablet 15 | bindsym $mod+Shift+w exec swaymsg input type:tablet_tool map_to_output `swaymsg -t get_outputs | jq -r '.[] | select(.focused == true) | .name'` 16 | 17 | # Lock screen 18 | bindsym $mod+Escape exec $lock 19 | 20 | 21 | # Drag floating windows by holding down $mod and left mouse button. 22 | # Resize them with right mouse button + $mod. 23 | # Despite the name, also works for non-floating windows. 24 | # Change normal to inverse to use left mouse button for resizing and right 25 | # mouse button for dragging. 26 | floating_modifier $mod normal 27 | 28 | # Reload the configuration file 29 | bindsym $mod+Shift+c reload 30 | 31 | # Exit sway (logs you out of your Wayland session) 32 | bindsym $mod+Shift+Escape exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' 33 | # 34 | # Moving around: 35 | # 36 | # Move your focus around 37 | bindsym $mod+$left focus left 38 | bindsym $mod+$down focus down 39 | bindsym $mod+$up focus up 40 | bindsym $mod+$right focus right 41 | # Or use $mod+[up|down|left|right] 42 | bindsym $mod+Left focus left 43 | bindsym $mod+Down focus down 44 | bindsym $mod+Up focus up 45 | bindsym $mod+Right focus right 46 | 47 | # Move the focused window with the same, but add Shift 48 | bindsym $mod+Shift+$left move left 49 | bindsym $mod+Shift+$down move down 50 | bindsym $mod+Shift+$up move up 51 | bindsym $mod+Shift+$right move right 52 | # Ditto, with arrow keys 53 | bindsym $mod+Shift+Left move left 54 | bindsym $mod+Shift+Down move down 55 | bindsym $mod+Shift+Up move up 56 | bindsym $mod+Shift+Right move right 57 | # 58 | # Workspaces: 59 | # 60 | set $ws1 1 61 | set $ws2 2 62 | set $ws3 3 63 | set $ws4 4 64 | set $ws5 5 65 | set $ws6 6 66 | set $ws7 7 67 | set $ws8 8 68 | set $ws9 9 69 | set $ws10 10 70 | 71 | assign [class="bluej.Boot\$App"] $ws2 72 | for_window [class="bluej.Boot\$App"] move window to workspace $ws2 73 | assign [class="Zotero"] $ws3 74 | for_window [class="Zotero"] move window to workspace $ws3 75 | assign [class="obsidian"] $ws4 76 | assign [class="discord"] $ws5 77 | for_window [class="discord"] move window to workspace $ws5 78 | assign [class="Microsoft Teams"] $ws5 79 | assign [app_id="evolution.bin"] $ws5 80 | assign [class="Spotify"] $ws6 81 | for_window [class="Spotify"] move window to workspace $ws6 82 | assign [class="Gimp"] $ws7 83 | for_window [class="Gimp"] move window to workspace $ws7 84 | assign [class="Audacity"] $ws7 85 | assign [class="kdenlive"] $ws7 86 | assign [class="Processing"] $ws2 87 | for_window [class="kdenlive"] move window to workspace $ws7 88 | assign [app_id="xournalpp"] $ws8 89 | assign [app_id="gnome-boxes"] $ws10 90 | 91 | # Switch to workspace 92 | bindsym $mod+1 workspace $ws1 93 | bindsym $mod+2 workspace $ws2 94 | bindsym $mod+3 workspace $ws3 95 | bindsym $mod+4 workspace $ws4 96 | bindsym $mod+5 workspace $ws5 97 | bindsym $mod+6 workspace $ws6 98 | bindsym $mod+7 workspace $ws7 99 | bindsym $mod+8 workspace $ws8 100 | bindsym $mod+9 workspace $ws9 101 | bindsym $mod+0 workspace $ws10 102 | # Move focused container to workspace 103 | bindsym $mod+Shift+1 move container to workspace $ws1 104 | bindsym $mod+Shift+2 move container to workspace $ws2 105 | bindsym $mod+Shift+3 move container to workspace $ws3 106 | bindsym $mod+Shift+4 move container to workspace $ws4 107 | bindsym $mod+Shift+5 move container to workspace $ws5 108 | bindsym $mod+Shift+6 move container to workspace $ws6 109 | bindsym $mod+Shift+7 move container to workspace $ws7 110 | bindsym $mod+Shift+8 move container to workspace $ws8 111 | bindsym $mod+Shift+9 move container to workspace $ws9 112 | bindsym $mod+Shift+0 move container to workspace $ws10 113 | 114 | bindsym $mod+Shift+Control+$left move workspace to output left 115 | bindsym $mod+Shift+Control+$right move workspace to output right 116 | bindsym $mod+Shift+Control+$up move workspace to output up 117 | bindsym $mod+Shift+Control+$down move workspace to output down 118 | # Note: workspaces can have any name you want, not just numbers. 119 | # We just use 1-10 as the default. 120 | # 121 | # Layout stuff: 122 | # 123 | # You can "split" the current object of your focus with 124 | # $mod+b or $mod+v, for horizontal and vertical splits 125 | # respectively. 126 | bindsym $mod+b splith 127 | bindsym $mod+v splitv 128 | 129 | # Switch the current container between different layout styles 130 | bindsym $mod+s layout stacking 131 | bindsym $mod+w layout tabbed 132 | bindsym $mod+e layout toggle split 133 | 134 | # Make the current focus fullscreen 135 | bindsym $mod+f fullscreen 136 | 137 | # Toggle the current focus between tiling and floating mode 138 | bindsym $mod+Shift+space floating toggle 139 | 140 | # Swap focus between the tiling area and the floating area 141 | bindsym $mod+space focus mode_toggle 142 | 143 | # Move focus to the parent container 144 | bindsym $mod+a focus parent 145 | # 146 | # Scratchpad: 147 | # 148 | # Sway has a "scratchpad", which is a bag of holding for windows. 149 | # You can send windows there and get them back later. 150 | 151 | # Move the currently focused window to the scratchpad 152 | bindsym $mod+Shift+minus move scratchpad 153 | 154 | # Show the next scratchpad window or hide the focused scratchpad window. 155 | # If there are multiple scratchpad windows, this command cycles through them. 156 | bindsym $mod+minus scratchpad show 157 | # 158 | # Resizing containers: 159 | # 160 | mode "resize" { 161 | # left will shrink the containers width 162 | # right will grow the containers width 163 | # up will shrink the containers height 164 | # down will grow the containers height 165 | bindsym $left resize shrink width 10px 166 | bindsym $down resize grow height 10px 167 | bindsym $up resize shrink height 10px 168 | bindsym $right resize grow width 10px 169 | 170 | # Ditto, with arrow keys 171 | bindsym Left resize shrink width 10px 172 | bindsym Down resize grow height 10px 173 | bindsym Up resize shrink height 10px 174 | bindsym Right resize grow width 10px 175 | 176 | # Return to default mode 177 | bindsym Return mode "default" 178 | bindsym Escape mode "default" 179 | } 180 | bindsym $mod+r mode "resize" 181 | 182 | # 183 | # Media Keys 184 | # 185 | bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle 186 | bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% 187 | bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% 188 | bindsym --locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle 189 | bindsym XF86MonBrightnessUp exec light -A 10 190 | bindsym XF86MonBrightnessDown exec light -U 10 191 | -------------------------------------------------------------------------------- /sway/.config/waybar/style.css: -------------------------------------------------------------------------------- 1 | @keyframes blink-warning { 2 | 70% { 3 | color: @light; 4 | } 5 | 6 | to { 7 | color: @light; 8 | background-color: @warning; 9 | } 10 | } 11 | 12 | @keyframes blink-critical { 13 | 70% { 14 | color: @light; 15 | } 16 | 17 | to { 18 | color: @light; 19 | background-color: @critical; 20 | } 21 | } 22 | 23 | 24 | /* ----------------------------------------------------------------------------- 25 | * Styles 26 | * -------------------------------------------------------------------------- */ 27 | 28 | /* COLORS */ 29 | 30 | /* Nord */ 31 | @define-color bg #2E3440; 32 | /*@define-color bg #353C4A;*/ 33 | @define-color light #D8DEE9; 34 | /*@define-color dark @nord_dark_font;*/ 35 | @define-color warning #ebcb8b; /* yellow */ 36 | @define-color critical #BF616A; /* red */ 37 | @define-color success #a3be8c; /* green */ 38 | @define-color mode #434C5E; 39 | /*@define-color workspaces @bg;*/ 40 | /*@define-color workspaces @nord_dark_font;*/ 41 | /*@define-color workspacesfocused #434C5E;*/ 42 | @define-color workspacesfocused #4C566A; 43 | @define-color tray @workspacesfocused; 44 | @define-color sound #EBCB8B; 45 | @define-color network #5D7096; 46 | @define-color memory #546484; 47 | @define-color cpu #596A8D; 48 | @define-color temp #4D5C78; 49 | @define-color layout #5e81ac; 50 | @define-color battery #4D5C78; 51 | @define-color date #434C5E; 52 | @define-color time #434C5E; 53 | @define-color backlight #434C5E; 54 | @define-color nord_bg #434C5E; 55 | @define-color nord_bg_blue #546484; 56 | @define-color nord_light #D8DEE9; 57 | @define-color nord_light_font #D8DEE9; 58 | @define-color nord_dark_font #434C5E; 59 | 60 | /* Reset all styles */ 61 | * { 62 | border: none; 63 | border-radius: 3px; 64 | min-height: 0; 65 | margin: 0.2em 0.3em 0.2em 0.3em; 66 | } 67 | 68 | /* The whole bar */ 69 | #waybar { 70 | background: @bg; 71 | color: @light; 72 | font-family: "Ubuntu", "Font Awesome 6 Free"; 73 | font-size: 10px; 74 | font-weight: bold; 75 | } 76 | 77 | /* Each module */ 78 | #battery, 79 | #clock, 80 | #cpu, 81 | #custom-layout, 82 | #memory, 83 | #mode, 84 | #network, 85 | #pulseaudio, 86 | #temperature, 87 | #custom-alsa, 88 | #custom-pacman, 89 | #custom-weather, 90 | #custom-gpu, 91 | #tray, 92 | #backlight, 93 | #language, 94 | #custom-cpugovernor { 95 | padding-left: 0.6em; 96 | padding-right: 0.6em; 97 | } 98 | 99 | /* Each module that should blink */ 100 | #mode, 101 | #custom-recorder, 102 | #memory, 103 | #temperature, 104 | #battery { 105 | animation-timing-function: linear; 106 | animation-iteration-count: infinite; 107 | animation-direction: alternate; 108 | } 109 | 110 | /* Each critical module */ 111 | #memory.critical, 112 | #cpu.critical, 113 | #temperature.critical, 114 | #battery.critical { 115 | color: @critical; 116 | } 117 | 118 | /* Each critical that should blink */ 119 | #mode, 120 | #memory.critical, 121 | #temperature.critical, 122 | #custom-recorder.on, 123 | #battery.critical.discharging { 124 | animation-name: blink-critical; 125 | animation-duration: 2s; 126 | } 127 | 128 | /* Each warning */ 129 | #network.disconnected, 130 | #memory.warning, 131 | #cpu.warning, 132 | #temperature.warning, 133 | #battery.warning { 134 | background: @warning; 135 | color: @nord_dark_font; 136 | } 137 | 138 | /* Each warning that should blink */ 139 | #battery.warning.discharging { 140 | animation-name: blink-warning; 141 | animation-duration: 3s; 142 | } 143 | 144 | /* And now modules themselves in their respective order */ 145 | 146 | #mode { /* Shown current Sway mode (resize etc.) */ 147 | color: @light; 148 | background: @mode; 149 | } 150 | 151 | /* Workspaces stuff */ 152 | 153 | #workspaces { 154 | /* color: #D8DEE9; 155 | margin-right: 10px;*/ 156 | } 157 | 158 | #workspaces button { 159 | /*color: #999;*/ 160 | opacity: 0.3; 161 | padding: 0.2em; 162 | background: none; 163 | font-size: 1.2em; 164 | } 165 | 166 | #workspaces button.focused { 167 | background: @workspacesfocused; 168 | color: #D8DEE9; 169 | opacity: 1; 170 | } 171 | 172 | #workspaces button.urgent { 173 | border-color: #c9545d; 174 | color: #c9545d; 175 | opacity: 1; 176 | } 177 | 178 | #window { 179 | margin-right: 40px; 180 | margin-left: 40px; 181 | font-weight: normal; 182 | } 183 | #bluetooth { 184 | background: @nord_bg_blue; 185 | font-size: 1.2em; 186 | font-weight: bold; 187 | padding: 0 0.6em; 188 | } 189 | #custom-recorder { 190 | background: @nord_bg; 191 | font-weight: bold; 192 | padding: 0 0.6em; 193 | } 194 | #custom-recorder.on { 195 | background: @nord_bg; 196 | font-weight: bold; 197 | padding: 0 0.6em; 198 | } 199 | #custom-screenshot { 200 | background: @nord_bg; 201 | font-weight: bold; 202 | padding: 0 0.6em; 203 | } 204 | #custom-mako.off { 205 | background: @success; 206 | color: @nord_dark_font; 207 | font-weight: bold; 208 | padding: 0 0.6em; 209 | } 210 | #custom-mako.on { 211 | background: @nord_bg; 212 | font-weight: bold; 213 | padding: 0 0.6em; 214 | } 215 | #custom-gpu { 216 | background: @nord_bg; 217 | font-weight: bold; 218 | padding: 0 0.6em; 219 | } 220 | #custom-weather { 221 | background: @mode; 222 | font-weight: bold; 223 | padding: 0 0.6em; 224 | } 225 | #custom-pacman { 226 | background: @nord_light; 227 | color: @nord_dark_font; 228 | font-weight: bold; 229 | padding: 0 0.6em; 230 | } 231 | #custom-scratchpad-indicator { 232 | background: @nord_light; 233 | color: @nord_dark_font; 234 | font-weight: bold; 235 | padding: 0 0.6em; 236 | } 237 | #idle_inhibitor { 238 | background: @mode; 239 | /*font-size: 1.6em;*/ 240 | font-weight: bold; 241 | padding: 0 0.6em; 242 | } 243 | #custom-alsa { 244 | background: @sound; 245 | } 246 | 247 | #network { 248 | background: @nord_bg_blue; 249 | } 250 | 251 | #memory { 252 | background: @memory; 253 | } 254 | 255 | #cpu { 256 | background: @nord_bg; 257 | color: #D8DEE9; 258 | } 259 | #cpu.critical { 260 | color: @nord_dark_font; 261 | } 262 | #language { 263 | background: @nord_bg_blue; 264 | color: #D8DEE9; 265 | padding: 0 0.4em; 266 | } 267 | #custom-cpugovernor { 268 | background-color: @nord_light; 269 | color: @nord_dark_font; 270 | } 271 | #custom-cpugovernor.perf { 272 | 273 | } 274 | #temperature { 275 | background-color: @nord_bg; 276 | color: #D8DEE9; 277 | } 278 | #temperature.critical { 279 | background: @critical; 280 | } 281 | #custom-layout { 282 | background: @layout; 283 | } 284 | 285 | #battery { 286 | background: @battery; 287 | } 288 | 289 | #backlight { 290 | background: @backlight; 291 | } 292 | 293 | #clock { 294 | background: @nord_bg_blue; 295 | color: #D8DEE9; 296 | } 297 | #clock.date { 298 | background: @date; 299 | } 300 | 301 | #clock.time { 302 | background: @mode; 303 | } 304 | 305 | #pulseaudio { /* Unsused but kept for those who needs it */ 306 | background: @nord_bg_blue; 307 | color: #D8DEE9; 308 | } 309 | 310 | #pulseaudio.muted { 311 | background: #BF616A; 312 | color: #BF616A; 313 | /* No styles */ 314 | } 315 | #pulseaudio.source-muted { 316 | background: #D08770; 317 | color: #D8DEE9; 318 | /* No styles */ 319 | } 320 | #tray { 321 | background: #434C5E; 322 | } 323 | -------------------------------------------------------------------------------- /nvim/.config/nvim/plugin/packer_compiled.lua: -------------------------------------------------------------------------------- 1 | -- Automatically generated packer.nvim plugin loader code 2 | 3 | if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then 4 | vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') 5 | return 6 | end 7 | 8 | vim.api.nvim_command('packadd packer.nvim') 9 | 10 | local no_errors, error_msg = pcall(function() 11 | 12 | _G._packer = _G._packer or {} 13 | _G._packer.inside_compile = true 14 | 15 | local time 16 | local profile_info 17 | local should_profile = false 18 | if should_profile then 19 | local hrtime = vim.loop.hrtime 20 | profile_info = {} 21 | time = function(chunk, start) 22 | if start then 23 | profile_info[chunk] = hrtime() 24 | else 25 | profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 26 | end 27 | end 28 | else 29 | time = function(chunk, start) end 30 | end 31 | 32 | local function save_profiles(threshold) 33 | local sorted_times = {} 34 | for chunk_name, time_taken in pairs(profile_info) do 35 | sorted_times[#sorted_times + 1] = {chunk_name, time_taken} 36 | end 37 | table.sort(sorted_times, function(a, b) return a[2] > b[2] end) 38 | local results = {} 39 | for i, elem in ipairs(sorted_times) do 40 | if not threshold or threshold and elem[2] > threshold then 41 | results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' 42 | end 43 | end 44 | if threshold then 45 | table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') 46 | end 47 | 48 | _G._packer.profile_output = results 49 | end 50 | 51 | time([[Luarocks path setup]], true) 52 | local package_path_str = "/var/home/mbarkmin/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/var/home/mbarkmin/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/var/home/mbarkmin/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/var/home/mbarkmin/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" 53 | local install_cpath_pattern = "/var/home/mbarkmin/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" 54 | if not string.find(package.path, package_path_str, 1, true) then 55 | package.path = package.path .. ';' .. package_path_str 56 | end 57 | 58 | if not string.find(package.cpath, install_cpath_pattern, 1, true) then 59 | package.cpath = package.cpath .. ';' .. install_cpath_pattern 60 | end 61 | 62 | time([[Luarocks path setup]], false) 63 | time([[try_loadstring definition]], true) 64 | local function try_loadstring(s, component, name) 65 | local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) 66 | if not success then 67 | vim.schedule(function() 68 | vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) 69 | end) 70 | end 71 | return result 72 | end 73 | 74 | time([[try_loadstring definition]], false) 75 | time([[Defining packer_plugins]], true) 76 | _G.packer_plugins = { 77 | ["Comment.nvim"] = { 78 | config = { "\27LJ\2\n5\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\fComment\frequire\0" }, 79 | loaded = true, 80 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/Comment.nvim", 81 | url = "https://github.com/numToStr/Comment.nvim" 82 | }, 83 | LuaSnip = { 84 | config = { " require('plugins/luasnip') " }, 85 | loaded = true, 86 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/LuaSnip", 87 | url = "https://github.com/L3MON4D3/LuaSnip" 88 | }, 89 | catppuccin = { 90 | config = { " require('plugins/catppuccin') " }, 91 | loaded = true, 92 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/catppuccin", 93 | url = "https://github.com/catppuccin/nvim" 94 | }, 95 | ["cmp-buffer"] = { 96 | loaded = true, 97 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/cmp-buffer", 98 | url = "https://github.com/hrsh7th/cmp-buffer" 99 | }, 100 | ["cmp-calc"] = { 101 | loaded = true, 102 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/cmp-calc", 103 | url = "https://github.com/hrsh7th/cmp-calc" 104 | }, 105 | ["cmp-nvim-lsp"] = { 106 | loaded = true, 107 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", 108 | url = "https://github.com/hrsh7th/cmp-nvim-lsp" 109 | }, 110 | ["cmp-nvim-lua"] = { 111 | loaded = true, 112 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/cmp-nvim-lua", 113 | url = "https://github.com/hrsh7th/cmp-nvim-lua" 114 | }, 115 | ["cmp-path"] = { 116 | loaded = true, 117 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/cmp-path", 118 | url = "https://github.com/hrsh7th/cmp-path" 119 | }, 120 | cmp_luasnip = { 121 | loaded = true, 122 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/cmp_luasnip", 123 | url = "https://github.com/saadparwaiz1/cmp_luasnip" 124 | }, 125 | ["formatter.nvim"] = { 126 | config = { " require('plugins/formatter') " }, 127 | loaded = true, 128 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/formatter.nvim", 129 | url = "https://github.com/mhartington/formatter.nvim" 130 | }, 131 | ["friendly-snippets"] = { 132 | loaded = true, 133 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/friendly-snippets", 134 | url = "https://github.com/rafamadriz/friendly-snippets" 135 | }, 136 | ["indent-blankline.nvim"] = { 137 | config = { " require('plugins/blankline') " }, 138 | loaded = true, 139 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim", 140 | url = "https://github.com/lukas-reineke/indent-blankline.nvim" 141 | }, 142 | ["lspkind-nvim"] = { 143 | config = { " require('plugins/lspkind') " }, 144 | loaded = true, 145 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/lspkind-nvim", 146 | url = "https://github.com/onsails/lspkind-nvim" 147 | }, 148 | ["lualine.nvim"] = { 149 | config = { " require('plugins/lualine') " }, 150 | loaded = true, 151 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/lualine.nvim", 152 | url = "https://github.com/nvim-lualine/lualine.nvim" 153 | }, 154 | ["mason-lspconfig.nvim"] = { 155 | loaded = true, 156 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim", 157 | url = "https://github.com/williamboman/mason-lspconfig.nvim" 158 | }, 159 | ["mason-tool-installer.nvim"] = { 160 | loaded = true, 161 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/mason-tool-installer.nvim", 162 | url = "https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim" 163 | }, 164 | ["mason.nvim"] = { 165 | loaded = true, 166 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/mason.nvim", 167 | url = "https://github.com/williamboman/mason.nvim" 168 | }, 169 | neogit = { 170 | config = { " require('plugins/neogit') " }, 171 | loaded = true, 172 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/neogit", 173 | url = "https://github.com/NeogitOrg/neogit" 174 | }, 175 | ["nvim-autopairs"] = { 176 | config = { "\27LJ\2\n@\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\19nvim-autopairs\frequire\0" }, 177 | loaded = true, 178 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-autopairs", 179 | url = "https://github.com/windwp/nvim-autopairs" 180 | }, 181 | ["nvim-cmp"] = { 182 | config = { " require('plugins/cmp') " }, 183 | loaded = true, 184 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-cmp", 185 | url = "https://github.com/hrsh7th/nvim-cmp" 186 | }, 187 | ["nvim-dap"] = { 188 | loaded = true, 189 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-dap", 190 | url = "https://github.com/mfussenegger/nvim-dap" 191 | }, 192 | ["nvim-jdtls"] = { 193 | loaded = true, 194 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-jdtls", 195 | url = "https://github.com/mfussenegger/nvim-jdtls" 196 | }, 197 | ["nvim-lspconfig"] = { 198 | config = { " require('plugins/lsp') " }, 199 | loaded = true, 200 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", 201 | url = "https://github.com/neovim/nvim-lspconfig", 202 | wants = { "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim", "WhoIsSethDaniel/mason-tool-installer.nvim" } 203 | }, 204 | ["nvim-tree.lua"] = { 205 | config = { " require('plugins/nvim-tree') " }, 206 | loaded = true, 207 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-tree.lua", 208 | url = "https://github.com/nvim-tree/nvim-tree.lua" 209 | }, 210 | ["nvim-treesitter"] = { 211 | config = { " require('plugins/treesitter') " }, 212 | loaded = true, 213 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-treesitter", 214 | url = "https://github.com/nvim-treesitter/nvim-treesitter" 215 | }, 216 | ["nvim-ts-autotag"] = { 217 | loaded = true, 218 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-ts-autotag", 219 | url = "https://github.com/windwp/nvim-ts-autotag" 220 | }, 221 | ["nvim-ts-rainbow"] = { 222 | loaded = true, 223 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-ts-rainbow", 224 | url = "https://github.com/p00f/nvim-ts-rainbow" 225 | }, 226 | ["nvim-web-devicons"] = { 227 | loaded = true, 228 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/nvim-web-devicons", 229 | url = "https://github.com/nvim-tree/nvim-web-devicons" 230 | }, 231 | ["packer.nvim"] = { 232 | loaded = true, 233 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/packer.nvim", 234 | url = "https://github.com/wbthomason/packer.nvim" 235 | }, 236 | ["plenary.nvim"] = { 237 | loaded = true, 238 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/plenary.nvim", 239 | url = "https://github.com/nvim-lua/plenary.nvim" 240 | }, 241 | ripgrep = { 242 | loaded = true, 243 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/ripgrep", 244 | url = "https://github.com/BurntSushi/ripgrep" 245 | }, 246 | ["suda.vim"] = { 247 | loaded = true, 248 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/suda.vim", 249 | url = "https://github.com/lambdalisue/suda.vim" 250 | }, 251 | ["telescope-bibtex.nvim"] = { 252 | config = { "\27LJ\2\nK\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0'\2\3\0B\0\2\1K\0\1\0\vbibtex\19load_extension\14telescope\frequire\0" }, 253 | loaded = true, 254 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/telescope-bibtex.nvim", 255 | url = "https://github.com/nvim-telescope/telescope-bibtex.nvim" 256 | }, 257 | ["telescope-dap.nvim"] = { 258 | loaded = true, 259 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/telescope-dap.nvim", 260 | url = "https://github.com/nvim-telescope/telescope-dap.nvim" 261 | }, 262 | ["telescope-fzf-native.nvim"] = { 263 | loaded = true, 264 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/telescope-fzf-native.nvim", 265 | url = "https://github.com/nvim-telescope/telescope-fzf-native.nvim" 266 | }, 267 | ["telescope-project.nvim"] = { 268 | loaded = true, 269 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/telescope-project.nvim", 270 | url = "https://github.com/nvim-telescope/telescope-project.nvim" 271 | }, 272 | ["telescope-ui-select.nvim"] = { 273 | loaded = true, 274 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/telescope-ui-select.nvim", 275 | url = "https://github.com/nvim-telescope/telescope-ui-select.nvim" 276 | }, 277 | ["telescope.nvim"] = { 278 | config = { " require('plugins/telescope') " }, 279 | loaded = true, 280 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/telescope.nvim", 281 | url = "https://github.com/nvim-telescope/telescope.nvim" 282 | }, 283 | ["vim-eunuch"] = { 284 | loaded = true, 285 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/vim-eunuch", 286 | url = "https://github.com/tpope/vim-eunuch" 287 | }, 288 | ["vim-lumen"] = { 289 | loaded = true, 290 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/vim-lumen", 291 | url = "https://github.com/vimpostor/vim-lumen" 292 | }, 293 | ["zen-mode.nvim"] = { 294 | config = { " require('plugins/zen-mode') " }, 295 | loaded = true, 296 | path = "/var/home/mbarkmin/.local/share/nvim/site/pack/packer/start/zen-mode.nvim", 297 | url = "https://github.com/folke/zen-mode.nvim" 298 | } 299 | } 300 | 301 | time([[Defining packer_plugins]], false) 302 | -- Config for: neogit 303 | time([[Config for neogit]], true) 304 | require('plugins/neogit') 305 | time([[Config for neogit]], false) 306 | -- Config for: zen-mode.nvim 307 | time([[Config for zen-mode.nvim]], true) 308 | require('plugins/zen-mode') 309 | time([[Config for zen-mode.nvim]], false) 310 | -- Config for: nvim-tree.lua 311 | time([[Config for nvim-tree.lua]], true) 312 | require('plugins/nvim-tree') 313 | time([[Config for nvim-tree.lua]], false) 314 | -- Config for: nvim-treesitter 315 | time([[Config for nvim-treesitter]], true) 316 | require('plugins/treesitter') 317 | time([[Config for nvim-treesitter]], false) 318 | -- Config for: nvim-cmp 319 | time([[Config for nvim-cmp]], true) 320 | require('plugins/cmp') 321 | time([[Config for nvim-cmp]], false) 322 | -- Config for: catppuccin 323 | time([[Config for catppuccin]], true) 324 | require('plugins/catppuccin') 325 | time([[Config for catppuccin]], false) 326 | -- Config for: telescope.nvim 327 | time([[Config for telescope.nvim]], true) 328 | require('plugins/telescope') 329 | time([[Config for telescope.nvim]], false) 330 | -- Config for: formatter.nvim 331 | time([[Config for formatter.nvim]], true) 332 | require('plugins/formatter') 333 | time([[Config for formatter.nvim]], false) 334 | -- Config for: telescope-bibtex.nvim 335 | time([[Config for telescope-bibtex.nvim]], true) 336 | try_loadstring("\27LJ\2\nK\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0'\2\3\0B\0\2\1K\0\1\0\vbibtex\19load_extension\14telescope\frequire\0", "config", "telescope-bibtex.nvim") 337 | time([[Config for telescope-bibtex.nvim]], false) 338 | -- Config for: lualine.nvim 339 | time([[Config for lualine.nvim]], true) 340 | require('plugins/lualine') 341 | time([[Config for lualine.nvim]], false) 342 | -- Config for: lspkind-nvim 343 | time([[Config for lspkind-nvim]], true) 344 | require('plugins/lspkind') 345 | time([[Config for lspkind-nvim]], false) 346 | -- Config for: indent-blankline.nvim 347 | time([[Config for indent-blankline.nvim]], true) 348 | require('plugins/blankline') 349 | time([[Config for indent-blankline.nvim]], false) 350 | -- Config for: nvim-autopairs 351 | time([[Config for nvim-autopairs]], true) 352 | try_loadstring("\27LJ\2\n@\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\19nvim-autopairs\frequire\0", "config", "nvim-autopairs") 353 | time([[Config for nvim-autopairs]], false) 354 | -- Config for: nvim-lspconfig 355 | time([[Config for nvim-lspconfig]], true) 356 | require('plugins/lsp') 357 | time([[Config for nvim-lspconfig]], false) 358 | -- Config for: LuaSnip 359 | time([[Config for LuaSnip]], true) 360 | require('plugins/luasnip') 361 | time([[Config for LuaSnip]], false) 362 | -- Config for: Comment.nvim 363 | time([[Config for Comment.nvim]], true) 364 | try_loadstring("\27LJ\2\n5\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\fComment\frequire\0", "config", "Comment.nvim") 365 | time([[Config for Comment.nvim]], false) 366 | 367 | _G._packer.inside_compile = false 368 | if _G._packer.needs_bufread == true then 369 | vim.cmd("doautocmd BufRead") 370 | end 371 | _G._packer.needs_bufread = false 372 | 373 | if should_profile then save_profiles() end 374 | 375 | end) 376 | 377 | if not no_errors then 378 | error_msg = error_msg:gsub('"', '\\"') 379 | vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') 380 | end 381 | --------------------------------------------------------------------------------