├── .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 |
--------------------------------------------------------------------------------