Compare commits

...

19 Commits

Author SHA1 Message Date
0573abe905 Added a readme 2025-09-20 17:13:31 -04:00
abaa3e2271 Added some small text 2025-09-20 17:05:50 -04:00
230cb70257 Old stuff. someday maybe useful. 2025-09-20 14:50:33 -04:00
6091576170 rclone setup for ftp server 2025-09-20 14:49:22 -04:00
0c1a801a17 waybar config 2025-09-20 14:47:46 -04:00
468cbe649b wireplumber wip for stt audio sink 2025-09-20 14:46:13 -04:00
bf035507f6 wofi config 2025-09-20 14:45:19 -04:00
c214976757 yazi config 2025-09-20 14:45:02 -04:00
03cadb8ea5 zsh config 2025-09-20 14:44:48 -04:00
93f110a501 ansible wip 2025-09-20 14:44:26 -04:00
1d7f1845f9 My wallpapers 2025-09-20 14:28:27 -04:00
ecb9cf58a0 tmux config 2025-09-20 14:25:08 -04:00
27a38bb557 Starship config 2025-09-20 14:23:39 -04:00
ac2f3a8fb5 nvim config 2025-09-20 14:21:05 -04:00
03b0ee9591 kitty config 2025-09-20 14:16:20 -04:00
df9edd76ab Hypr config 2025-09-20 14:13:50 -04:00
d8f89d18d3 btop config 2025-09-20 14:07:52 -04:00
780e4605f2 krl formating on save 2025-09-20 14:00:56 -04:00
ab6d6a8492 Fixed age secrets 2025-09-20 14:00:35 -04:00
85 changed files with 5972 additions and 107 deletions

23
README.org Normal file
View File

@@ -0,0 +1,23 @@
:PROPERTIES:
:ID: 75f35b3b-f46f-42b6-ac4b-3988f15c46e1
:END:
#+title: Gortium Dotfiles
#+subtitle: My attempt at having my computer do what I want, not the contrary
* Welcome
I use stow to deploy all this to where it need to go (mostly ~/.confg).
* Apps
** emacs (Doom)
** nvim
** btop
** hyprland
** kitty
** rclone
** starship
** tmux
** waybar
** Wireplumber
** wofi
** yazi
** zsh

177
ansible.yml Normal file
View File

@@ -0,0 +1,177 @@
- name: Setup Arch Linux
hosts: localhost
become: yes
tasks:
- name: Check internet connectivity
shell: ping -c 1 archlinux.org
register: internet_check
ignore_errors: yes
- name: Prompt user if no internet connection
pause:
prompt: "No internet detected. Please connect to a network and press Enter to continue."
when: internet_check.rc != 0
- name: Set the timezone to America/Montreal
command: timedatectl set-timezone America/Montreal
changed_when: false # Prevents Ansible from reporting this task as "changed" unnecessarily
- name: Enable NTP synchronization
command: timedatectl set-ntp true
changed_when: false
- name: Ensure systemd-timesyncd is running and enabled
systemd:
name: systemd-timesyncd
state: started
enabled: yes
- name: Sync hardware clock with system time
command: hwclock --systohc
changed_when: false
- name: Install base packages
pacman:
name:
- base
- base-devel
- linux
- linux-firmware
- sof-firmware
- efibootmgr
- grub
state: present
- name: Enable essential services
systemd:
name: "{{ item }}"
enabled: yes
loop:
- NetworkManager
- bluetooth.service
- name: Install yay (AUR helper)
shell: |
sudo pacman -S --needed git base-devel && \
git clone https://aur.archlinux.org/yay-bin.git && \
cd yay-bin && makepkg -si --noconfirm
args:
creates: /usr/bin/yay
- name: Install core utilities
pacman:
name:
- networkmanager
- openssh
- git
- wget
- neofetch
- ripgrep
- eza
- fd
- stow
- zoxide
- bat
state: present
- name: Install desktop environment packages
pacman:
name:
- hyprland
- hyprlock
- hypridle
- waybar
- swaync
- wofi
- firefox
- hyprshot
- power-profiles-daemon
- swww
- nvidia-lts
- brightnessctl
- pavucontrol
- pipewire
- pipewire-alsa
- pipewire-pulse
- bluez
- bluez-utils
- udiskie
- obsidian
state: present
- name: Install TUI utilities
pacman:
name:
- bluetuith
- lazydocker
- lazygit
- lazysql
- fzf
- sshs
- yazi
- taskwarrior-tui
state: present
- name: Install terminal applications
pacman:
name:
- kitty
- zsh
- starship
- tmux
- tmux-plugin-manager
- neovim
state: present
- name: Set default shell to zsh
command: chsh -s /usr/bin/zsh
- name: Install fonts
pacman:
name:
- ttf-cascadia-code-nerd
- ttf-font-awesome
- ttf-jetbrains-mono-nerd
- ttf-meslo-nerd
state: present
- name: Install AI stack
pacman:
name:
- ollama
- aichat
- pandoc-cli
state: present
- name: Install TTS stack
pacman:
name:
- piper-tts
- paplay
state: present
- name: Install theming tools
pacman:
name:
- pywal16
- pywalfox
- nwg-look
state: present
- name: Clone dotfiles repository
git:
repo: "https://github.com/yourusername/dotfiles.git"
dest: "/home/{{ ansible_user }}/dotfiles"
update: yes
- name: Stow dotfiles
shell: |
cd /home/{{ ansible_user }}/dotfiles && stow */
args:
executable: /bin/bash
- name: Apply pywal theme
command: wal -i ~/.config/wallpapers/green_yellow_forest.jpg -o ~/.config/waybar/launch.sh
args:
executable: /bin/zsh

113
archive/README.md Normal file
View File

@@ -0,0 +1,113 @@
# config
My dot config
## TODO
### For window WSL
git config --global core.autocrlf true
### To start terminator from WSL
DISPLAY=:0 terminator -u &
### To use chmod (git clone) from WSL
edit: /etc/wsl.conf
paste:
[automount]
options = "metadata"
###
## VIM
Is set to save automatically ;)
Usefull command:
* i : insert mode
* v : visual mode (selecting)
* shift-v : same but by line
* ctrl-v : block select
* d : cut (visual mode)
* y : copy (visual mode)
* p : past (normal mode)
* [esc] : exit modes
* :q : exit
* :w : save
* NERDTree : open files manager
* ? : NERDTREE help menu
* I : show hidden files
* ctrl-w ctrl-w : change split
* ctrl-w [arrows] : change split in this direction
* Bd : close file in buffer
* [tab] : cycle through buffers
* shift-[tab] : cycle through tabs
* shift-t : new tab
* shift-d : delete tab
* :split : open file in a split screen
* :hide : close a split
* :A : switch between .cpp and .hpp
* If ctrl-s and freeze, ctrl-q ;)
### a.vim
A few of quick commands to swtich between source files and header files quickly.
### ctlp
Full path fuzzy __file__, __buffer__, __mru__, __tag__, __...__ finder for Vim.
### delimitMate
This plug-in provides automatic closing of quotes, parenthesis, brackets, etc.
### neocomplete
Neocomplete is the abbreviation of "neo-completion with cache". It provides
keyword completion system by maintaining a cache of keywords in the current
buffer. neocomplete can be customized easily and has many more features than
Vim's built-in completion.
### nerdtree
The NERDTree is a file system explorer for the Vim editor. Using this plugin,
users can visually browse complex directory hierarchies, quickly open files for
reading or editing, and perform basic file system operations.
### syntastic
Syntastic is a syntax checking plugin for [Vim][vim] created by
[Martin Grenfell][scrooloose]. It runs files through external syntax checkers
and displays any resulting errors to the user. This can be done on demand, or
automatically as files are saved. If syntax errors are detected, the user is
notified and is happy because they didn't have to compile their code or execute
their script to find them.
### vim-airline-theme
Airline themes for vim
### vim-airline
When the plugin is correctly loaded, Vim will draw a nice statusline at the
bottom of each window. That line consists of several sections, each one displaying some piece of
information.
### vim-fugitive
A git wrapper
### vim-gitgutter
A Vim plugin which shows a git diff in the 'gutter' (sign column). It shows which lines
have been added, modified, or removed. You can also preview, stage, and undo individual hunks.
The plugin also provides a hunk text object.
### vim-nerdtree-tab
This plugin aims at making NERDTree feel like a true panel, independent of tabs.
### vim-tmux-navigator
This plugin is a repackaging of [Mislav Marohnić's][] tmux-navigator
configuration described in [this gist][]. When combined with a set of tmux
key bindings, the plugin will allow you to navigate seamlessly between
vim and tmux splits using a consistent set of hotkeys.
### Vundle
[Vundle] is short for _Vim bundle_ and is a [Vim] plugin manager.
[Vundle] allows you to...
* keep track of and [configure] your plugins right in the `.vimrc`
* [install] configured plugins (a.k.a. scripts/bundle)
* [update] configured plugins
* [search] by name all available [Vim scripts]
* [clean] unused plugins up
* run the above actions in a *single keypress* with [interactive mode]
[Vundle] automatically...
* manages the [runtime path] of your installed scripts
* regenerates [help tags] after installing and updating

192
archive/i3/config Executable file
View File

@@ -0,0 +1,192 @@
# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
#
# This config file uses keycodes (bindsym) and was written for the QWERTY
# layout.
#
# To get a config file with the same key positions, but for your current
# layout, use the i3-config-wizard
#
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 8
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# Before i3 v4.8, we used to recommend this one as the default:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, its unicode glyph coverage is limited, the old
# X core fonts rendering does not support right-to-left and this being a bitmap
# font, it doesnt scale on retina/hidpi displays.
# use these keys for focus, movement, and resize directions when reaching for
# the arrows is not convenient
set $mod Mod4
set $sup Shift+Mod4
set $up l
set $down k
set $left j
set $right semicolon
# use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec i3-sensible-terminal
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
bindsym $mod+d exec dmenu_run
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
# switch to workspace
bindsym $mod+1 workspace 1:web
bindsym $mod+2 workspace 2:slack
bindsym $mod+3 workspace 3:terminal
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1:web
bindsym $mod+Shift+2 move container to workspace 2:slack
bindsym $mod+Shift+3 move container to workspace 3:terminal
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym $left resize shrink width 10 px or 10 ppt
bindsym $down resize grow height 10 px or 10 ppt
bindsym $up resize shrink height 10 px or 10 ppt
bindsym $right resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3status
}
# Start nm-applet (wifi and other options in the bar)
exec --no-startup-id nm-applet
# Startup layout
exec --no-startup-id "i3-msg 'workspace 1:web; append_layout ~/.i3/workspace-1.json; exec /usr/bin/google-chrome'"
exec --no-startup-id "i3-msg 'workspace 2:slack; append_layout ~/.i3/workspace-2.json; exec /usr/bin/slack"
exec --no-startup-id "i3-msg 'workspace 3:terminal; append_layout ~/.i3/workspace-3.json; exec /usr/bin/gnome-terminal'"
# Multiscreen
exec i3 --force-xinerama -V >>~/.i3/i3log 2>&1
#######################################################################
# automatically start i3-config-wizard to offer the user to create a
# keysym-based config which used their favorite modifier (alt or windows)
#
# i3-config-wizard will not launch if there already is a config file
# in ~/.i3/config.
#
# Please remove the following exec line:
#######################################################################
exec i3-config-wizard

25
archive/i3/workspace-1.json Executable file
View File

@@ -0,0 +1,25 @@
// vim:ts=4:sw=4:et
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 729,
"width": 1362,
"x": 2,
"y": 18
},
"name": "i3: Layout saving in i3 - Google Chrome",
"percent": 1,
"swallows": [
{
"class": "^google-chrome$",
"instance": "^Google-chrome$",
//"title": "^Google\\ Chrome$",
//"transient_for": "^$",
"window_role": "^browser$"
}
],
"type": "con"
}

25
archive/i3/workspace-2.json Executable file
View File

@@ -0,0 +1,25 @@
// vim:ts=4:sw=4:et
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 729,
"width": 1362,
"x": 2,
"y": 18
},
"name": "Slack",
"percent": 1,
"swallows": [
{
"class": "^Slack$",
"instance": "^slack$",
//"title": "^Slack",
//"transient_for": "^$",
"window_role": "^browser\\-window$"
}
],
"type": "con"
}

24
archive/i3/workspace-3.json Executable file
View File

@@ -0,0 +1,24 @@
// vim:ts=4:sw=4:et
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 383,
"width": 575,
"x": 0,
"y": 0
},
"name": "tpouplier@tpouplier-edge: ~",
"percent": 1,
"swallows": [
{
"class": "^gnome-terminal-server$",
"instance": "^Gnome-terminal$",
//"title": "^tpouplier\\@tpouplier\\-edge\\:\\ \\~$",
//"transient_for": "^$"
}
],
"type": "con"
}

567
archive/new_setup.md Normal file
View File

@@ -0,0 +1,567 @@
---
id: new_setup
aliases: []
tags: []
---
# New Computer Setup
- Switched from Ubuntu to Arch btw.
- Tilling window manager
- Kept my /home folder for comfiness... May need a big cleanup soon thought.
- New dotfile management (stow)
- Switch from VScode to... Nvim !! xD (+ kitty, zsh, starship, tmux)
## TODO
- [ ] Set a swaync config for notifications [cool config](https://github.com/ErikReider/SwayNotificationCenter/discussions/183)
- [ ] Save firefox extantion and settings
- [ ] Explore how to complete snippets with multiple cursor placement (low priority. see luasnip)
- [ ] Look into nvim orgmode
[Nvim Orgmode website](https://nvim-orgmode.github.io/)
[Nvim Orgmode github](https://github.com/nvim-orgmode/orgmode)
- This is where shit hit the fan and i found out the emacs is awesome.. xD
## Package installed
```zsh
comm -23 <(pacman -Qqett | sort) <(pacman -Qqg | sort | uniq)
```
### Base install
- base
Base install
- base-devel
Base install
- linux
Base install, kernel
- linux-firmware
Base install, firmware
- sof-firmware
Firmware needed for audio
- efibootmgr
EFI boot manager
- grub
Bootloader
### Desktop
- networkmanager
Network manager
nmtui
- hyprland
Tile window manager
- hyprlock
Lock screen manager
SUPER + SHIFT + l
- hypridle
Trigger lockscreen, screen off, hibernation
- waybar
Top bar in hyprland
- swaync
Notifications
- wofi
App launcher
SUPER + R
- okular
Open and edit pdf
- firefox
Browser
- hyprshot
Screenshot manager
- xdg-desktop-portal-hyprland
For screen sharing in discord, team, etc.
<!-- - power-profiles-daemon -->
<!-- Power profile selector (perf, eco..) -->
<!-- [!WARNING] May be needed by waybar? not working right now -->
<!-- - auto-cpufreq -->
<!-- Manage cpu freq for better batterie life -->
- tlp
Better cpu freq manager
```zsh
sudo systemctl enable tlp.service
sudo systemctl mask systemd-rfkill.service
sudo systemctl mask systemd-rfkill.socket
```
- qimgv
GUI image viewer
[!ERROR] Not the right package
- swww-git
Setting wallpaper
- nvidia-lts
Nvidia driver
- brightnessctl
Allow brighness control of the screen
- pipewire
- wireplumber
- pipewire-audio
- pipewire-pulse
- pipewire-alsa
- pwvucontrol
Audio GUI panel
- udiskie
Auto usb mount
- openssh
Needed for its ssh agent
```zsh
ssh-keygen -t ed25519 -C "your_email@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
systemctl --user enable ssh-agent.service
systemctl --user start ssh-agent.service
```
- obsidian
Note taking app in plain text markdown
- poppler
For yazi rendering of pdf (doom emacs dired too)
- imagemagick
For pywal, doom emacs dired
- rg
For file content searching
- jq
For yazi json preview
- ueberzugpp
For yazi image preview under hyprland
- ffmpeg
For yazi rendering of video
- texlive-pictures
- texlive-binextra
- texlive-plaingeneric
- texlive-basic
- texlive-latexrecommended
- texlive-latex
- texlive-latexextra
- texlive-bin
- texlive-binextra
All testlive above to have the pdflatex executable to allow emacs to export to latex, then.
- curlftpfs
To mount ftp server
```zsh
modprobe fuse
mkdir /mnt/ftp
curlftpfs ftp.exemple.com /mnt/ftp/ -o user=username:password
nvim /etc/fstab
curlftpfs#USER:PASSWORD@ftp.example.com /mnt/exampleorg fuse auto,user,uid=1000,allow_other,_netdev 0 0
```
- isync
To have mbsync to sync email for mu and mu4e
See ~/.config/isyncrc
```zsh
mbsync -a
```
- mu
```zsh
mu init --maildir=~/Mail --my-address='tpouplier@exemple.com'
mu index
```
- hunspell
Spell checking for emacs with multiple dictionaries
Dict placed at ~/Library/Spelling/
- bluez
Daemons for the bluetooth protocol stack
```zsh
systemctl start bluetooth.service
systemctl enable bluetooth.service
```
- bluez-utils
Provide bluetoothctl
- unzip
- tar
- 7zip
File compression
<!-- I use mu4e now -->
<!-- - mutt -->
<!-- email TUI client -->
<!-- ```zsh -->
<!-- mkdir -p ~/.mutt/cache/headers -->
<!-- mkdir ~/.mutt/cache/bodies -->
<!-- touch ~/.mutt/certificates -->
<!-- touch ~/.mutt/muttrc -->
<!-- ``` -->
- wlogout
hyprland power menu
- xclip
For emacs everywhere
- xdotool
For emacs everywhere
- xprop
For emacs everywhere
- xwininfo
For emacs everywhere
- uv
Serena dependency
### Devel
- Edit /etc/locale.gen
- uncomment en_US.UTF-8
- sudo locale-gen
- Needed for those build bellow
- mono-msbuild-git
- mono-msbuild-sdkresolver-git
- mono-git
- python-debugpy
python debuger
### TUI
- bluetuith
Bluetooth tui
- lazydocker
TUI docker manager
- lazygit
TUI git manager
- lazysql
TUI sql manager
[!ERROR] Not able to connect yet
- fzf
Fuzzy terminal finder
- sshs
ssh TUI
sshs
- yazi
TUI folder manager
```zsh
# Install packages
ya pack -u
```
- taskwarrior-tui
taskwarior tui
[!WARNING] May uninstall, not using it very much
- ncspot
spotify player in the terminal
### Terminal tool
- tldr
better, simple man
- git
code versioning
```zsh
git config --global user.name "FIRST_NAME LAST_NAME"
git config --global user.email "EMAIL"
git config --global pull.rebase false
git config core.autocrlf input
```
- neofetch
Show system info
- ripgrep
Better grep
- eza
Better ls
zsh'''
eza .config --tree --level=2 --icons
'''
- fd
File searching (yayazi use it. doom emacs dired too)
- stow
Dotfile manager
cd dotfiles
stow [package]
[.stowrc]
- yay
Pacman + AUR
```zsh
sudo pacman -S --needed git base-devel && git clone https://aur.archlinux.org/yay-bin.git && cd yay-bin && makepkg -si
```
- zoxide
Better cd
```zsh
z
```
- bat
Better cat
```zsh
bat --color=always
```
- atuin
Command history sync server
[!WARNING] To install and setup
- wget
Download utility
- trash-cli
Allow easy management of trashed files
- rm-improved
better rm
```zsh
rip [TARGET]
- syncthing
```zsh
systemctl enable syncthing.service --user
systemctl start syncthing.service --user
```
### Fonts
- ttf-font-awesome
Fonts
- ttf-jetbrains-mono-nerd
Fonts
### Terminal stack
- kitty
Terminal emulator
[kitty/.config/kitty.conf]
- zsh
Better bash (shell)
[zsh/.zshrc]
```zsh
chsh -s /usr/bin/zsh
```
- starship
Custom prompt
[starship/.config/starship.toml]
- tmux
Terminal multiplexer, persistant sessions
[tmux/.config/tmux/config]
- tmux-plugin-manager
tmux plugin manager
[!ERROR] Not working yet
- neovim
Editor
[nvim/.config/nvim/init.lua]
### AI Stack
- ollama
LLM local server
- aichat
All in one llm cli (session, role, RAG, agent, tools)
- pandoc-cli
document type convertion
### TTS stack
- piper-tts
Generate the tts audio
- paplay
play the sound
## Rising
- pywal16
Util that change the wallpaper, then generate color theme from the wallpaper for other app to use.
```zsh
wal -i ~/.config/wallpapers/green_yellow_forest.jpg -o ~/.config/waybar/launch.sh
```
- pywalfox
Util that link with the firefox extension to apply color them to it.
- nwg-look
gtk theming
[!WARNING] Not in use right now. may uninstall.
## Favorite keybinds
### Hyprland
- <SUPER-q> : New terminal
- <SUPER-c> : Close Hypr window
- <SUPER-L> : Lock screen
- <SUPER-hjkl> : Move focus to window
- <SUPER-(1-9)> : Change workspace
- <SUPER-SHIFT-(1-9)> : Move window to workspace
- <SUPER-s> : Bring the scratchpad workspace (overlay over any workspace, always accecible)
- <SUPER-SHIFT-S>: Move window to scratchpad
- <SUPER-P>: Change split mode
### tmux
- <CTRL-a> : tmux special key (b by default)
- <CTRL-a, SHIFT-I> : inside vim, to install pluggins, source tmux.conf, open it in vim, then.. the keys
- <CTRL-a, CTRL-w> : show open windows
- <CTRL-a, CTRL-o> : open sessionx manager
- <CTRL-a, %> : Split vertical
- <CTRL-a, "> : Split horizontly
- <CTRL-a, hjkl> : Switch focus
- <CTRL-a, :> : Command line
- <CTRL-a, c> : New window
- <CTRL-a, ()> : Change session
- <CTRL-a, 1-9> : Change window
- <CTRL-a, :, new> : New session
- <CTRL-a, :, rename-> : Rename window, session
- <CTRL-a, CTRL-s, CTRL-r> : Save and restore session
### Nvim
- <CTRL, " "> : Trigger LSP suggestion
- <*> : normal search the word under the cursor
- <.> : replay last command
- <" ", backspace> : Global which-key!!
- <" ", s, k> : Search all nvim keybinds!!
- <" ", s, g> : Search in all project file with grep
- <" ", s, n> : search in nvim config
- <SHIFT-a> : Append at the end of line
- <ciw> : Change Inside Word (W to only stop at spaces)
- <viw> : select whole Word (W to only stop at spaces)
- <CTRL-w, v> : Open a new vertical split window
- <CTRL-w, h> : Open a new horizontal split window
- <j,j or k,k> : Exit insert mode
- <y,y> : Yank the line
- <p> : Paste
- </> : Search
- <n, N> : next, previous results
- <CTRL, n-o> : select proposed choices
- <CTRL, y> : accept selected choice
- <t, j-k> : prev,next buffer
- <t, h-l> : last,first buffer
- <t,d> : delete buffer
- <g,d> : go to definition <3
- <CTRL, i-o> : jump through the ressent jump list (comme back from gd)
- <SHIFT, v> : Select mode by line
- <ALT, j-k> : Move a line (visal bloc work too)
- <g,g> : Go to first line
- <SHIFT, g> : Go to last line
- < = > : format selected lines
- <" ", " "> : search buffers
### Yazi
- <~> : Help menu
- <z> : Cd to a directory via zoxide
- <Z> : Cd to a directory or reveal a file via fzf
- <" "> : Toggle selection of hovered file/directory
- <o or enter> : Open file
- <Tab> : show file info
- <y> : Yank selected files
- <x> : Cut selected files
- <p> : Paste yanked files
- <Y or X> : Cancel yank
- <d> : Delete selected files
- <a> : Create a file (end with / for folder)
- <r> : Rename selected file(s)
- <.> : Toggle the visibility of hidden files
- </> : Find next file
- <n> : Go to the next found
- <N> : Go to the previous found
- <s> : Search files by name using fd
- <S> : Search files by content using ripgrep
- <CTRL-s> : Cancel the ongoing search
- <t> : Create a new tab with CWD
- <1, 2, ..., 9> : Switch to the N-th tab
- <[]> : Switch to the previous tab
- <{}> : Switch tab order
- <CTRL-c> : Close the current tab
- <",", m> : Sort by modified time (M reverse)
- <",", b> : Sort by birth time (B reverse)
- <",", e> : Sort by file extension (E reverse)
- <",", a> : Sort alphabetically (A reverse)
- <",", n> : Sort naturally (N reverse)
- <",", s> : Sort by size (S reverse)
### Misc
- <CTRL-r> : fzf powered command history
## dotfile inspiration
### Rising
- [typecraft](https://github.com/typecraft-dev/dotfiles/tree/master)
- [MrVivekRajan Hyprland themes](https://github.com/MrVivekRajan/Hypr-Dots)
- [DevOps toolkit](https://github.com/omerxx/dotfiles)
- [Bina](https://github.com/LierB/dotfiles/tree/master)
- [elifouts](https://github.com/elifouts/Dotfiles)
### Dev
- [KiLLeRRaT](https://github.com/KiLLeRRaT/.dotfiles/tree/master)
- [DerrikCreates](https://github.com/DerrikCreates/dotfiles)

53
archive/terminator/config Normal file
View File

@@ -0,0 +1,53 @@
[global_config]
window_state = fullscreen
inactive_color_offset = 0.805555555556
suppress_multiple_term_dialog = True
always_split_with_profile = True
[keybindings]
[profiles]
[[default]]
background_darkness = 0.7
background_type = transparent
font = Ubuntu Mono 10
foreground_color = "#00ffff"
show_titlebar = False
scrollbar_position = hidden
scroll_on_output = True
scrollback_infinite = True
palette = "#073642:#dc322f:#613583:#b58900:#268bd2:#d33682:#2aa198:#eee8d5:#002b36:#f5c211:#586e75:#f57900:#edd400:#b435c8:#25cc5e:#fdf6e3"
custom_command = glances
use_system_font = False
[layouts]
[[default]]
[[[child0]]]
type = Window
parent = ""
order = 0
position = 0:771
maximised = False
fullscreen = True
size = 1456, 819
title = tpouplier@PR-TPOUPL-LP-U:~
last_active_term = 5fb46960-7a03-46fd-b5f9-1a0f9b57fac0
last_active_window = True
[[[child1]]]
type = VPaned
parent = child0
order = 0
position = 410
ratio = 0.5036855036855037
[[[terminal2]]]
type = Terminal
parent = child1
order = 0
profile = default
uuid = 5fb46960-7a03-46fd-b5f9-1a0f9b57fac0
command = glances
[[[terminal3]]]
type = Terminal
parent = child1
order = 1
profile = default
uuid = 2d160bbc-2214-4a61-85a0-33d0f9e5d279
command = ""
[plugins]

158
archive/vim/vimrc Normal file
View File

@@ -0,0 +1,158 @@
set nocompatible " be iMproved, required
set laststatus=2
set autowriteall " save when changing buffer
set t_Co=256
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
filetype off " required
" Buffer Remap
nnoremap <Tab> :bnext<CR>
" Tab remap
nnoremap <S-t> :tabnew<CR>
nnoremap <S-d> :tabclose<CR>
nnoremap <S-Tab> :tabnext<CR>
" Command
command Bd bp | sp | bn | bd "Close a buffer without closing the window
" Airline init
autocmd VimEnter * AirlineTheme murmur
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_symbols.space = "\ua0"
" unicode symbols
"let g:airline_left_sep = '»'
"let g:airline_left_sep = '▶'
"let g:airline_right_sep = '«'
"let g:airline_right_sep = '◀'
"let g:airline_symbols.linenr = '␊'
"let g:airline_symbols.linenr = '␤'
"let g:airline_symbols.linenr = '¶'
"let g:airline_symbols.branch = '⎇'
"let g:airline_symbols.paste = 'ρ'
"let g:airline_symbols.paste = 'Þ'
"let g:airline_symbols.paste = '∥'
"let g:airline_symbols.whitespace = 'Ξ'
" airline symbols
"let g:airline_left_sep = ''
"let g:airline_left_alt_sep = ''
"let g:airline_right_sep = ''
"let g:airline_right_alt_sep = ''
"let g:airline_symbols.branch = ''
"let g:airline_symbols.readonly = ''
"let g:airline_symbols.linenr = ''
" neocomplete init
let g:neocomplcache_enable_at_startup = 1
" NERDTree init
autocmd VimEnter * NERDTree
autocmd VimEnter * NERDTreeMirror
autocmd VimEnter * wincmd p
" Syntax checking init
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
let g:syntastic_error_symbol = '✘'
let g:syntastic_warning_symbol = "▲"
let g:syntastic_cpp_check_header = 1
let g:syntastic_c_include_dirs = [ '../include', 'include' ]
" Delimiter init
let delimitMate_expand_cr = 1
augroup mydelimitMate
au!
au FileType markdown let b:delimitMate_nesting_quotes = ["`"]
au FileType tex let b:delimitMate_quotes = ""
au FileType tex let b:delimitMate_matchpairs = "(:),[:],{:},`:'"
au FileType python let b:delimitMate_nesting_quotes = ['"', "'"]
augroup END
" Gitgutter init
autocmd VimEnter * GitGutterEnable
autocmd VimEnter * GitGutterSignsEnable
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
"Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
"Plugin 'L9'
" Git plugin not hosted on GitHub
"Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
"Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
"Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Install L9 and avoid a Naming conflict if you've already installed a
" different version somewhere else.
"Plugin 'ascenator/L9', {'name': 'newL9'}
" **My plugin seletion**
" Completion stuff
Plugin 'Shougo/neocomplete'
" File system stuff
Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
Plugin 'kien/ctrlp.vim'
" Buttom bar stuff
Plugin 'vim-airline/vim-airline-themes'
Plugin 'vim-airline/vim-airline'
" Git stuff
Plugin 'airblade/vim-gitgutter'
Plugin 'tpope/vim-fugitive'
" Syntax stuff
Plugin 'scrooloose/syntastic'
" Easy open .h
Plugin 'vim-scripts/a.vim'
" Auto () [] {}
Plugin 'Raimondi/delimitMate'
" ctrl-hjkl to move
Plugin 'christoomey/vim-tmux-navigator'
" Buffer stuff
"Plugin 'jeetsukumaran/vim-buffergator'
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

138
archive/zsh_oh-my-zsh/.zshrc Executable file
View File

@@ -0,0 +1,138 @@
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:$PATH
PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
PATH="$PATH:$PYTHON_BIN_PATH"
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH=~/.oh-my-zsh
# Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="agnoster"
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion. Case
# sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git)
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='mvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# ssh
# export SSH_KEY_PATH="~/.ssh/rsa_id"
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
alias Install='sudo apt-get install'
alias Update='sudo apt-get update'
alias Upgrade='sudo apt-get upgrade'
alias Autoremove='sudo apt-get autoremove'
alias Glances='glances --process-short-name'
ConnectTo() {
if [[ "$1" = "horse" ]]; then
ssh gortium@192.168.1.3
elif [[ "$1" = "cow" ]]; then
ssh admin@192.168.1.2
elif [[ "$1" = "chicken" ]]; then
ssh root@192.168.1.1
elif [[ "$1" = "goat" ]]; then
ssh gortium@192.168.1.4
else
echo 'Wrong host nickname.'
fi
}
# ROS exports
#source /opt/ros/neotic/setup.zsh
#source ~/Short-Circuit/devel/setup.bash
#source ~/sara_ws/devel/setup.bash
#source ~/phase0_ws/devel/setup.sh
#source ~/elmec_ws/devel/setup.zsh
#source ~/Projects/ros_kortex/devel/setup.bash
#export ROSLAUNCH_SSH_UNKNOWN=1
#export ROS_MASTER_URI=http://192.168.1.100:11311
#export ROS_MASTER_URI=http://SARA:11311
#export ROS_MASTER_URI=http://10.0.0.1:11311
#export ROS_MASTER_URI=http://localhost:11311
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

254
btop/.config/btop/btop.conf Normal file
View File

@@ -0,0 +1,254 @@
#? Config file for btop v. 1.4.4
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "/usr/share/btop/themes/everforest-dark-medium.theme"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = False
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = True
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "braille"
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
graph_symbol_gpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
shown_boxes = "cpu mem net proc"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy"
#* Reverse sorting order, True or False.
proc_reversed = False
#* Show processes as a tree.
proc_tree = True
#* Use the cpu graph colors in the process list.
proc_colors = True
#* Use a darkening gradient in the process list.
proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = True
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
#* Show cpu graph for each process.
proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
#* Show proc box on left side of screen instead of right.
proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = True
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "Auto"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "Auto"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
#* Shows the system uptime in the CPU box.
show_uptime = True
#* Show cpu temperature.
check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False
#* Show CPU frequency.
show_cpu_freq = True
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
#* Show mem box below net box instead of above.
mem_below_net = True
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
#* If swap memory should be shown in memory box.
show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
#* If mem box should be split to also show disks info.
show_disks = True
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
#* Starts with the Network Interface specified here.
net_iface = ""
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present.
show_battery = True
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Show power stats of battery next to charge indicator.
show_battery_watts = True
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = True
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = True
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = True
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""
#* Custom gpu1 model name, empty string to disable.
custom_gpu_name1 = ""
#* Custom gpu2 model name, empty string to disable.
custom_gpu_name2 = ""
#* Custom gpu3 model name, empty string to disable.
custom_gpu_name3 = ""
#* Custom gpu4 model name, empty string to disable.
custom_gpu_name4 = ""
#* Custom gpu5 model name, empty string to disable.
custom_gpu_name5 = ""

2
btop/.stow-local-ignore Normal file
View File

@@ -0,0 +1,2 @@
\.config/btop/btop.log
\.config/btop/themes

View File

@@ -43,14 +43,6 @@ they are implemented.
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
#+end_src
** Secrets
#+begin_src emacs-lisp
(after! auth-source
(add-to-list 'auth-sources
`(:source ,(concat doom-private-dir "secrets.el.age") :type age)))
#+end_src
** User Info
Place your private configurations. It is optional.
@@ -709,7 +701,7 @@ Handles org-clock and context link capture for tasks."
;; Connecteam org-roam-dailies integration
(require 'request)
(defvar gortium/connecteam-api-key (auth-source-pick-first-password :host "connecteam") "Your Connecteam API Key")
(defvar gortium/connecteam-api-key (auth-source-passage-get 'secret "connecteam") "Your Connecteam API Key")
(defvar gortium/connecteam-user-id "9885891" "Your Connecteam User ID")
(defvar gortium/connecteam-clock-id "9335145" "Your Connecteam time clock ID used in API calls.")
@@ -818,52 +810,54 @@ Handles org-clock and context link capture for tasks."
:name "Python :: My Script with Args")))
#+end_src
** Dape
** +Dape+
Tried it, was not able to make it work, so back to dap mode for now
#+begin_src emacs-lisp :tangle no
;; (use-package dape
;; :preface
;; ;; By default dape shares the same keybinding prefix as `gud'
;; ;; If you do not want to use any prefix, set it to nil.
;; ;; (setq dape-key-prefix "\C-x\C-a")
(use-package dape
:preface
;; By default dape shares the same keybinding prefix as `gud'
;; If you do not want to use any prefix, set it to nil.
;; (setq dape-key-prefix "\C-x\C-a")
;; :hook
;; ;; Save breakpoints on quit
;; (kill-emacs . dape-breakpoint-save)
;; ;; Load breakpoints on startup
;; (after-init . dape-breakpoint-load)
:hook
;; Save breakpoints on quit
(kill-emacs . dape-breakpoint-save)
;; Load breakpoints on startup
(after-init . dape-breakpoint-load)
;; :custom
;; ;; Turn on global bindings for setting breakpoints with mouse
;; (dape-breakpoint-global-mode +1)
:custom
;; Turn on global bindings for setting breakpoints with mouse
(dape-breakpoint-global-mode +1)
;; ;; Info buffers to the right
;; ;; (dape-buffer-window-arrangement 'right)
;; ;; Info buffers like gud (gdb-mi)
;; ;; (dape-buffer-window-arrangement 'gud)
;; ;; (dape-info-hide-mode-line nil)
;; Info buffers to the right
;; (dape-buffer-window-arrangement 'right)
;; Info buffers like gud (gdb-mi)
;; (dape-buffer-window-arrangement 'gud)
;; (dape-info-hide-mode-line nil)
;; ;; Projectile users
;; (dape-cwd-function 'projectile-project-root)
;; Projectile users
(dape-cwd-function 'projectile-project-root)
;; :config
;; ;; Pulse source line (performance hit)
;; (add-hook 'dape-display-source-hook 'pulse-momentary-highlight-one-line)
:config
;; Pulse source line (performance hit)
(add-hook 'dape-display-source-hook 'pulse-momentary-highlight-one-line)
;; ;; Save buffers on startup, useful for interpreted languages
;; (add-hook 'dape-start-hook (lambda () (save-some-buffers t t)))
;; Save buffers on startup, useful for interpreted languages
(add-hook 'dape-start-hook (lambda () (save-some-buffers t t)))
;; ;; Kill compile buffer on build success
;; ;; (add-hook 'dape-compile-hook 'kill-buffer)
;; )
;; Kill compile buffer on build success
;; (add-hook 'dape-compile-hook 'kill-buffer)
)
;; ;; For a more ergonomic Emacs and `dape' experience
;; (use-package repeat
;; :custom
;; (repeat-mode +1))
;; For a more ergonomic Emacs and `dape' experience
(use-package repeat
:custom
(repeat-mode +1))
#+end_src
** LSP
I had to work on C# Framework 4.8..
#+begin_src emacs-lisp
;; LSP BABY
@@ -873,9 +867,9 @@ Handles org-clock and context link capture for tasks."
#+end_src
** Scroll-Margin
To keep my eye in the center of the screen while scrolling. Like in my nvim x)
#+begin_src emacs-lisp
;; To keep my eye in the center of the screen while scrolling. Like in my nvim x)
(setq scroll-margin 10)
#+end_src
@@ -904,9 +898,9 @@ Load org-phscroll after org. This allow horizontal scroll in tables. (No line wr
** Spellchecking
*** Ispell
Now I can write x) (spellchecking)
#+begin_src emacs-lisp
;; Now I can write x) (spellchecking)
(after! ispell
(setq ispell-program-name "hunspell"
ispell-dictionary "en_CA,fr_CA"
@@ -930,9 +924,9 @@ Load org-phscroll after org. This allow horizontal scroll in tables. (No line wr
#+end_src
*** Writegood Mode
Let me write like a broken engineer, thank you.
#+begin_src emacs-lisp
;; Let me write like a broken engineer, thank you.
(add-hook 'writegood-mode-hook 'writegood-passive-voice-turn-off)
#+end_src
@@ -964,7 +958,6 @@ Load org-phscroll after org. This allow horizontal scroll in tables. (No line wr
#+end_src
** Line Number Type
This determines the style of line numbers in effect. If set to ~nil~, line
numbers are disabled. For relative line numbers, set this to ~relative~.
@@ -973,9 +966,9 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
#+end_src
** Evile-Escape (JK)
JK to escape was not working. Added it back.
#+begin_src emacs-lisp
;; JK to escape was not working. Added it back.
(use-package! evil-escape
:config
(setq evil-escape-excluded-states '(normal visual multiedit emacs motion)
@@ -998,9 +991,9 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
#+end_src
** KRL Mode
Im not working in WorkVisual. Thank you. (Kuka Robot stuff)
#+begin_src emacs-lisp
;; KRL mode
(add-hook 'krl-mode-hook 'font-lock-mode)
(add-hook 'krl-mode-hook 'display-line-numbers-mode)
(use-package! krl-mode
@@ -1015,12 +1008,12 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
ahs-default-range 'ahs-range-whole-buffer ; highlight in whole buffer
ahs-case-fold-search t ; case-INsensitive matching
ahs-include-definition t)) ; highlight definition too
#+end_src
(defcustom krl-formatter-command "python"
"Command to run the KRL formatter."
:type 'string
:group 'krl)
** KRL formater
Im a formating nazi now xD
#+begin_src emacs-lisp
(defcustom krl-formatter-script-path "~/ExoKortex/1-Projects/Exit_strat/exit_strat/scripts/krl_formatter.py"
"Path to the KRL formatter script."
:type 'string
@@ -1034,7 +1027,7 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
(shell-command-on-region
(point-min)
(point-max)
(concat krl-formatter-command " " krl-formatter-script-path)
(concat "python " krl-formatter-script-path)
t t)
;; Try to restore cursor position
(goto-char (point-min))
@@ -1047,7 +1040,7 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
(shell-command-on-region
start
end
(concat krl-formatter-command " " krl-formatter-script-path)
(concat "python " krl-formatter-script-path)
t t)
(message "KRL region formatted"))
@@ -1058,7 +1051,7 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
(krl-format-buffer)))
;; Uncomment the next line to enable auto-formatting on save
;; (add-hook 'before-save-hook 'krl-format-before-save)
(add-hook 'before-save-hook 'krl-format-before-save)
#+end_src
** Hledger Mode
@@ -1108,22 +1101,91 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
#+end_src
** Age
Allow me to edit encryted age file directly in emacs buffer.
#+begin_src emacs-lisp
(use-package! age
:demand t
:custom
(age-program "rage")
(age-default-identity "~/.ssh/gortium_ssh_key")
(age-default-recipient "~/.ssh/gortium_ssh_key.pub")
:config
(setq age-program "rage")
(setq age-default-identity "~/.ssh/gortium_ssh_key")
(setq age-default-recipient "~/.ssh/gortium_ssh_key.pub")
(age-file-enable))
#+end_src
* Terminal
#+begin_src emacs-lisp
(require 'notifications)
(require 'cl-lib)
** EEE
(defun gortium/age-notify (msg &optional simple)
"Notify about AGE operations. SIMPLE uses `message` instead of desktop notification."
(if simple
(message "%s" msg)
(if (eq system-type 'gnu/linux)
(notifications-notify
:title "age.el"
:body msg
:urgency 'low
:timeout 800)
(message "%s" msg))))
(defun gortium/age-notify-decrypt (&rest args)
"Notification hook for age decryption."
(cl-destructuring-bind (context cipher) args
(gortium/age-notify (format "Decrypting %s" (age-data-file cipher)) t)))
(defun gortium/age-notify-encrypt (&rest args)
"Notification hook for age encryption."
(cl-destructuring-bind (context plain recipients) args
(gortium/age-notify (format "Encrypting %s" (age-data-file plain)) t)))
(defun gortium/age-toggle-decrypt-notifications ()
"Toggle notifications for age decryption."
(interactive)
(if (advice-member-p #'gortium/age-notify-decrypt #'age-start-decrypt)
(progn
(advice-remove #'age-start-decrypt #'gortium/age-notify-decrypt)
(message "Disabled age decrypt notifications."))
(advice-add #'age-start-decrypt :before #'gortium/age-notify-decrypt)
(message "Enabled age decrypt notifications.")))
(defun gortium/age-toggle-encrypt-notifications ()
"Toggle notifications for age encryption."
(interactive)
(if (advice-member-p #'gortium/age-notify-encrypt #'age-start-encrypt)
(progn
(advice-remove #'age-start-encrypt #'gortium/age-notify-encrypt)
(message "Disabled age encrypt notifications."))
(advice-add #'age-start-encrypt :before #'gortium/age-notify-encrypt)
(message "Enabled age encrypt notifications.")))
;; enable notifications by default
(gortium/age-toggle-decrypt-notifications)
(gortium/age-toggle-encrypt-notifications)
#+end_src
** Passage
Allow retrieval of password from age file formatted like passwordstore
#+begin_src emacs-lisp
(use-package! passage
:demand t
:config
;; rebind function value for pass to passage
(fset #'pass (lambda () (interactive) (passage)))
(setq age-program "rage")
(setq auth-source-passage-filename (expand-file-name "~/ExoKortex/2-Areas/IT/dotfiles/secrets"))
(setenv "PASSAGE_IDENTITIES_FILE" (expand-file-name age-default-identity))
(setenv "PASSAGE_RECIPIENTS_FILE" (expand-file-name age-default-recipient))
(setenv "PASSAGE_AGE" "rage")
(setenv "PASSAGE_DIR" (expand-file-name "~/ExoKortex/2-Areas/IT/dotfiles/secrets"))
)
#+end_src
* Terminal
** +EEE+
#+begin_src emacs-lisp :tangle no
;; TUI tools in emacs
(after! eee
(setq ee-terminal-command "kitty")
@@ -1143,6 +1205,7 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
* AI
** GPTel
The best LLM integration I found. Works with MCP server for more functionnalities. And Rewrite is awesome.
#+begin_src emacs-lisp
;; GPTel AI chat for emacs
@@ -1160,21 +1223,21 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
(setq gptel-expert-commands t
gptel-default-mode 'org-mode
;; gptel-model 'OpenRouter:deepseek/deepseek-chat-v3-0324:free
gptel-api-key (auth-source-pick-first-password :host "openrouter"))
gptel-api-key (auth-source-passage-get 'secret "openrouter"))
(require 'gptel-integrations)
(gptel-make-openai "OpenRouter"
:host "openrouter.ai"
:endpoint "/api/v1/chat/completions"
:stream t
:key (auth-source-pick-first-password :host "openrouter")
:key (auth-source-passage-get 'secret "openrouter")
:models '(deepseek/deepseek-r1-0528-qwen3-8b:free
google/gemini-2.0-flash-exp:free
deepseek/deepseek-chat-v3-0324:free
meta-llama/llama-4-maverick:free
qwen/qwen3-coder:free))
(gptel-make-gemini "Gemini"
:key (auth-source-pick-first-password :host "gemini")
:key (auth-source-passage-get 'secret "gemini")
:stream t
:models '(gemini-2.5-pro
gemini-2.5-flash))
@@ -1186,23 +1249,29 @@ numbers are disabled. For relative line numbers, set this to ~relative~.
(gptel-make-openai "OpenWebUI"
:host "ai.aziworkhorse.duckdns.org"
:curl-args '("--insecure") ; needed for self-signed certs
:key (auth-source-pick-first-password :host "openwebui")
:key (auth-source-passage-get 'secret "openwebui")
:endpoint "/api/chat/completions"
:stream t
:models '("orieg/gemma3-tools:1b"))
)
#+end_src
*** Rewrite
Really useful to do stuff you dont want to do
#+begin_src emacs-lisp
(map! :after gptel
:leader
(:prefix ("r" . "GPTel Rewrite")
(
:prefix ("r" . "GPTel Rewrite")
:desc "Rewrite region" "r" #'gptel-rewrite
:desc "Show rewrite diff" "d" #'gptel--rewrite-diff
:desc "Accept rewrite" "a" #'gptel--rewrite-accept
:desc "Reject rewrite" "x" #'gptel--rewrite-reject
:desc "Iterate rewrite" "i" #'gptel--rewrite-iterate))
))
#+end_src
** +MCP+
May reuse later with opencode or gptel, but for now, deactivated
#+begin_src emacs-lisp :tangle no
#+end_(use-package! mcp
@@ -1231,7 +1300,7 @@ Emigo - Aidermacs 2.0
;; Encourage using OpenRouter with Deepseek
(emigo-model "openrouter/deepseek/deepseek-chat-v3-0324:free")
(emigo-base-url "https://openrouter.ai/api/v1")
(emigo-api-key (auth-source-pick-first-password :host "openrouter")))
(emigo-api-key (auth-source-passage-get 'secret "openrouter")))
;; Enable line wrapping in Emigo chat buffers
(add-hook 'emigo-mode-hook
@@ -1256,7 +1325,7 @@ Emigo - Aidermacs 2.0
;; Set API_KEY in .bashrc, that will automatically picked up by aider or in elisp
;; (setenv "ANTHROPIC_API_KEY" "sk-...")
;; defun my-get-openrouter-api-key yourself elsewhere for security reasons
(setenv "OPENROUTER_API_KEY" (auth-source-pick-first-password :host "openrouter"))
(setenv "OPENROUTER_API_KEY" (auth-source-passage-get 'secret "openrouter"))
:custom
;; See the Configuration section below
(aidermacs-use-architect-mode t)
@@ -1296,11 +1365,11 @@ Emigo - Aidermacs 2.0
(setopt ellama-providers
'(
("deepseek-r1" . (make-llm-openai-compatible
:key (auth-source-pick-first-password :host "openrouter")
:key (auth-source-passage-get 'secret "openrouter")
:url "https://openrouter.ai/api/v1"
:chat-model "deepseek/deepseek-chat-v3-0324:free"))
("gemini-2.0-flash" . (make-llm-openai-compatible
:key (auth-source-pick-first-password :host "openrouter")
:key (auth-source-passage-get 'secret "openrouter")
:url "https://openrouter.ai/api/v1"
:chat-model "google/gemini-2.0-flash-exp:free"))
)
@@ -1350,7 +1419,7 @@ Emigo - Aidermacs 2.0
(require 'llm-openai)
(setopt elisa-chat-provider
(make-llm-openai-compatible
:key (auth-source-pick-first-password :host "openrouter")
:key (auth-source-passage-get 'secret "openrouter")
:url "https://openrouter.ai/api/v1"
:chat-model "deepseek/deepseek-chat-v3-0324:free")
llm-warn-on-nonfree nil)
@@ -1388,12 +1457,14 @@ Org-AI
#+end_src
* Diff HL Mode
Show git changes in the sidebar
#+begin_src emacs-lisp
(diff-hl-mode +1)
#+end_src
* Tramp
Remote connection to server inside emacs (with all my config) <3
#+begin_src emacs-lisp
;; set `tramp-direct-async-process' locally in all ssh connections
@@ -1406,6 +1477,8 @@ Org-AI
#+end_src
* Dirvish
Allow fast navigation and preview to files.
Recently added the quick access entries. Game changer.
#+begin_src emacs-lisp
;; Dirvish config
@@ -1463,6 +1536,7 @@ Org-AI
#+end_src
* Org-Modern
Make org task, agenda, tables look nicer, but you need to deactivate it sometimes to really see what is going on.
#+begin_src emacs-lisp
;; Modern look for org
@@ -1511,6 +1585,7 @@ Org-AI
#+end_src
* Cursor Beacon
Useful for the user, but also when you have someone over your sholder trying to follow what is going on x)
#+begin_src emacs-lisp
;; Flash the point (cursor) when moving between window
@@ -1607,7 +1682,7 @@ www.tdnde.com \\\\
:tls t
:nick "gortium"
:sasl-username "gortium"
:sasl-password (auth-source-pick-first-password :host "irc")
:sasl-password (auth-source-passage-get 'secret "irc")
:channels ("#emacs-circe")
)))
)
@@ -1633,6 +1708,7 @@ www.tdnde.com \\\\
** TODO Fix noter if needed
* PDF-Tools
Really useful to be able to have a buffer with notes, and another with the official PDF doc
#+begin_src emacs-lisp
;; Enable midnight mode by default for PDF files

View File

@@ -1,9 +1,5 @@
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
(after! auth-source
(add-to-list 'auth-sources
`(:source ,(concat doom-private-dir "secrets.el.age") :type age)))
(setq user-full-name "Thierry Pouplier"
user-mail-address "tpouplier@tdnde.com")
@@ -527,7 +523,7 @@ Handles org-clock and context link capture for tasks."
;; Connecteam org-roam-dailies integration
(require 'request)
(defvar gortium/connecteam-api-key (auth-source-pick-first-password :host "connecteam") "Your Connecteam API Key")
(defvar gortium/connecteam-api-key (auth-source-passage-get 'secret "connecteam") "Your Connecteam API Key")
(defvar gortium/connecteam-user-id "9885891" "Your Connecteam User ID")
(defvar gortium/connecteam-clock-id "9335145" "Your Connecteam time clock ID used in API calls.")
@@ -765,7 +761,7 @@ Handles org-clock and context link capture for tasks."
(krl-format-buffer)))
;; Uncomment the next line to enable auto-formatting on save
;; (add-hook 'before-save-hook 'krl-format-before-save)
(add-hook 'before-save-hook 'krl-format-before-save)
(use-package! hledger-mode
:config
@@ -807,13 +803,74 @@ Handles org-clock and context link capture for tasks."
(use-package! age
:demand t
:custom
(age-program "rage")
(age-default-identity "~/.ssh/gortium_ssh_key")
(age-default-recipient "~/.ssh/gortium_ssh_key.pub")
:config
(setq age-program "rage")
(setq age-default-identity "~/.ssh/gortium_ssh_key")
(setq age-default-recipient "~/.ssh/gortium_ssh_key.pub")
(age-file-enable))
(require 'notifications)
(require 'cl-lib)
(defun gortium/age-notify (msg &optional simple)
"Notify about AGE operations. SIMPLE uses `message` instead of desktop notification."
(if simple
(message "%s" msg)
(if (eq system-type 'gnu/linux)
(notifications-notify
:title "age.el"
:body msg
:urgency 'low
:timeout 800)
(message "%s" msg))))
(defun gortium/age-notify-decrypt (&rest args)
"Notification hook for age decryption."
(cl-destructuring-bind (context cipher) args
(gortium/age-notify (format "Decrypting %s" (age-data-file cipher)) t)))
(defun gortium/age-notify-encrypt (&rest args)
"Notification hook for age encryption."
(cl-destructuring-bind (context plain recipients) args
(gortium/age-notify (format "Encrypting %s" (age-data-file plain)) t)))
(defun gortium/age-toggle-decrypt-notifications ()
"Toggle notifications for age decryption."
(interactive)
(if (advice-member-p #'gortium/age-notify-decrypt #'age-start-decrypt)
(progn
(advice-remove #'age-start-decrypt #'gortium/age-notify-decrypt)
(message "Disabled age decrypt notifications."))
(advice-add #'age-start-decrypt :before #'gortium/age-notify-decrypt)
(message "Enabled age decrypt notifications.")))
(defun gortium/age-toggle-encrypt-notifications ()
"Toggle notifications for age encryption."
(interactive)
(if (advice-member-p #'gortium/age-notify-encrypt #'age-start-encrypt)
(progn
(advice-remove #'age-start-encrypt #'gortium/age-notify-encrypt)
(message "Disabled age encrypt notifications."))
(advice-add #'age-start-encrypt :before #'gortium/age-notify-encrypt)
(message "Enabled age encrypt notifications.")))
;; enable notifications by default
(gortium/age-toggle-decrypt-notifications)
(gortium/age-toggle-encrypt-notifications)
(use-package! passage
:demand t
:config
;; rebind function value for pass to passage
(fset #'pass (lambda () (interactive) (passage)))
(setq age-program "rage")
(setq auth-source-passage-filename (expand-file-name "~/ExoKortex/2-Areas/IT/dotfiles/secrets"))
(setenv "PASSAGE_IDENTITIES_FILE" (expand-file-name age-default-identity))
(setenv "PASSAGE_RECIPIENTS_FILE" (expand-file-name age-default-recipient))
(setenv "PASSAGE_AGE" "rage")
(setenv "PASSAGE_DIR" (expand-file-name "~/ExoKortex/2-Areas/IT/dotfiles/secrets"))
)
;; TUI tools in emacs
(after! eee
(setq ee-terminal-command "kitty")
@@ -840,21 +897,21 @@ Handles org-clock and context link capture for tasks."
(setq gptel-expert-commands t
gptel-default-mode 'org-mode
;; gptel-model 'OpenRouter:deepseek/deepseek-chat-v3-0324:free
gptel-api-key (auth-source-pick-first-password :host "openrouter"))
gptel-api-key (auth-source-passage-get 'secret "openrouter"))
(require 'gptel-integrations)
(gptel-make-openai "OpenRouter"
:host "openrouter.ai"
:endpoint "/api/v1/chat/completions"
:stream t
:key (auth-source-pick-first-password :host "openrouter")
:key (auth-source-passage-get 'secret "openrouter")
:models '(deepseek/deepseek-r1-0528-qwen3-8b:free
google/gemini-2.0-flash-exp:free
deepseek/deepseek-chat-v3-0324:free
meta-llama/llama-4-maverick:free
qwen/qwen3-coder:free))
(gptel-make-gemini "Gemini"
:key (auth-source-pick-first-password :host "gemini")
:key (auth-source-passage-get 'secret "gemini")
:stream t
:models '(gemini-2.5-pro
gemini-2.5-flash))
@@ -866,7 +923,7 @@ Handles org-clock and context link capture for tasks."
(gptel-make-openai "OpenWebUI"
:host "ai.aziworkhorse.duckdns.org"
:curl-args '("--insecure") ; needed for self-signed certs
:key (auth-source-pick-first-password :host "openwebui")
:key (auth-source-passage-get 'secret "openwebui")
:endpoint "/api/chat/completions"
:stream t
:models '("orieg/gemma3-tools:1b"))
@@ -1055,7 +1112,7 @@ www.tdnde.com \\\\
:tls t
:nick "gortium"
:sasl-username "gortium"
:sasl-password (auth-source-pick-first-password :host "irc")
:sasl-password (auth-source-passage-get 'secret "irc")
:channels ("#emacs-circe")
)))
)

View File

@@ -114,6 +114,9 @@
(package! age)
(package! passage
:recipe (:host github :repo "anticomputer/passage.el" :protocol ssh))
(package! krl-mode
:recipe (:host nil
:repo "ssh://code.lazyworkhorse.net:2222/gortium/krl-mode.git"

View File

@@ -1,19 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IEdoTUQ4QSBwbkNa
QmJFdVpLV1BOTXJXVmhTY3NZZmZsZ2wraWE3TEZ4d01zOVdoaERzClJCVG03YVIz
Q2pMK1ZHekViTzYzUjJ1cm52UnNRMDQvSE9yTnIva3E5aDAKLT4gcyxfLnw6Qy1n
cmVhc2UgUFogNUVoID5SCkpRVy9sU2hQYnl0MmlDdWdaamx0bEVrQ2Z2U0V3eUp2
dTU1ZFppL1pZWmNpRzMwZ0lkckl4ZFBTVkdmVlAyRzAKdWEzTC83RnVHZ1h4aXVV
aUE0azBzU3lEM25vZEh5awotLS0gN3p6Q1BpU0dQUEkza2h1cGVaTDc3NVNaQm1T
RGUxNExMcHBYNllyRFdNcwoxkC/nFDh5dBrdnmzhcqyNJA9ABDon4SgHIr7p+qZx
SG1vKOT2wlUdofhmlDNMTVD170gpiyyHX8WvWDvcgkabi8AJrfdpMNIYFWKLkmih
jTtvTp+h9dYy/Vb2Lt3wAR+4MNMUR0G7QGIoQat9EnbY10Lk0UTqgAvUshKNixgZ
Ld1ZCQhe3Gu49e7LR/f2St4pyao92DuHTPuROcaiPmB6wSReXjKkh0XQNbDnOd6a
rQDIqwewJ4iwv5qknyh6O3AMvun2c6+zl4XzZ8UySgArRACBVoyW2w4wWvyx7KFE
kUqWQ31HghleX4w+tX9/CRvdQMS1IzUC5bfhxxK53AolPfJmtwNu9wvuAQvvU4GF
7Ue9YAH7yxz/Q2zf3w67gpkZBNDu5ua/D2Dw4WUUYePG+Dt0BvqRiZKOAAIdgxX5
p1FBAHgAg971WUa9+zK489+rSl7ryKVpW0UjxBNa0YtdfBabj21sXMG+O8lU9d5P
HfVe/NWergbRBdW4LtdKiLWY5VS7uLGiBqpCSCjfkx9BDE1BzcC6TyWZ1HaLSISm
9d3KgQyK36Df5O9eAzpecPumUQCRniHLJ7dENJcIBprnQDXLGq0oyt8wOz0LCYtZ
0980yCVoNzODIpvdJ5fQ
-----END AGE ENCRYPTED FILE-----

View File

@@ -0,0 +1,34 @@
general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
listener {
timeout = 300 # 5min.
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restore.
}
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
}
listener {
timeout = 600 # 10min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}
listener {
timeout = 630 # 10.5min
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
}
listener {
timeout = 1800 # 30min
on-timeout = systemctl suspend # suspend pc
}

View File

@@ -0,0 +1,361 @@
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
source = ~/.cache/wal/colors-hyprland.conf
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
# Useful command:
# hyprctl monitors all
## Valkyrie setup
# monitor=eDP-1,highres,auto,2 #3200x1800,0x0,2
# monitor=HDMI-A-2,2560x1600,auto,1 #1600x0,1 #x-370,1,transform,1
## Ingenuity setup
monitor=eDP-1,1920x1080,0x0,1
monitor=DP-3,1920x1080,1920x0,1 # HDMI screen
# Horizontal setup
#monitor=DP-4,1920x1080,-960x-1080,1 # Left screen
#monitor=DP-6,1920x1080,-960x-1080,1 # Left screen
#monitor=DP-5,1920x1080,960x-1080,1 # Right screen
#monitor=DP-7,1920x1080,960x-1080,1 # Right screen
# Vertical setup
monitor=DP-4,1920x1080,0x-1080,1,transform,0 # Left screen
monitor=DP-6,1920x1080,0x-1080,1,transform,0 # Left screen
monitor=DP-5,1920x1080,1920x-1480,1,transform,1 # Right screen
monitor=DP-7,1920x1080,1920x-1480,1,transform,1 # Right screen
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
$fileManager = emacsclient -c -a emacs --eval '(dirvish "$HOME")'
$menu = wofi --show drun
$zen = zen-browser
$music = kitty ncspot
$monitoring = kitty btop
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# exec-once = $terminal
# exec-once = nm-applet &
exec = hyprshade auto
exec-once = udiskie
exec-once = waybar
exec-once = swww-daemon
exec-once = swaync
exec-once = hypridle
exec-once = hyprlock
exec-once = /usr/bin/emacs --daemon
exec-once = dbus-update-activation-environment --systemd HYPRLAND_INSTANCE_SIGNATURE
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = LIBVA_DRIVER_NAME,nvidia
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = WLR_NO_HARDWARE_CURSOR,1
env = XDG_SESSION_TYPE,wayland
env = GBM_BACKEND,nvidia-drm
env = WLR_RENDERER_ALLOW_SOFTWARE,1
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 4.5
gaps_out = 9
border_size = 2
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = $color1 $color1 $color2 45deg
col.inactive_border = $background
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 4
# Change transparency of focused and unfocused windows
active_opacity = 0.9
inactive_opacity = 0.75
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = false
# enabled = true
# size = 16
# passes = 2
# new_optimizations = true
}
layerrule = blur, waybar
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = true
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 2, myBezier
animation = windowsOut, 1, 2, default, popin 80%
animation = border, 1, 2, default
animation = borderangle, 1, 2, default
animation = fade, 1, 2, default
animation = workspaces, 1, 2, default
animation = specialWorkspace, 1, 2, myBezier, slidefadevert -10%
}
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = us,ca #,halmak
kb_options = grp:win_space_toggle, ctrl:nocaps
# kb_variant =
# kb_model =
# kb_rules =
follow_mouse = 1
sensitivity = 0.5 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = true
disable_while_typing = true
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
# workspace_swipe = false
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, T, exec, $terminal
bind = $mainMod, D, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, U, exec, ~/ExoKortex/2-Areas/IT/config/scripts/make_all.sh
bind = $mainMod, M, exec, $monitoring
bind = $mainMod, W, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, Z, exec, $zen
#bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, P, togglesplit, # dwindle
bind = $mainMod, N, movecurrentworkspacetomonitor, -1
bind = $mainMod SHIFT, N, movecurrentworkspacetomonitor, +1
bind = $mainMod, X, swapwindow
bind = $mainMod, B, exec, nerd-dictation begin
bind = $mainMod, G, exec, nerd-dictation end
bind = $mainMod, A, exec, $music
#
# Full screen
bind = SUPER, F, fullscreen
# Screenshot
bind = , PRINT, exec, hyprshot -m output
bind = $mainMod, PRINT, exec, hyprshot -m window
bind = shift, PRINT, exec, hyprshot -m region
# hyprlock
bind = $mainMod, o, exec, hyprlock
# Move focus with mainMod + arrow keys
bind = $mainMod, h, movefocus, l
bind = $mainMod, j, movefocus, d
bind = $mainMod, k, movefocus, u
bind = $mainMod, l, movefocus, r
# Forward and reverse cycle (to focus floating)
bind = $mainMod, Tab, cyclenext
bind = $mainMod SHIFT, Tab, cyclenext, prev
# Resize windows
bind = $mainMod CTRL, l, resizeactive, 20 0
bind = $mainMod CTRL, h, resizeactive, -20 0
bind = $mainMod CTRL, k, resizeactive, 0 -20
bind = $mainMod CTRL, j, resizeactive, 0 20
# Swap window position
bind = $mainMod SHIFT, h, swapwindow, l
bind = $mainMod SHIFT, j, swapwindow, d
bind = $mainMod SHIFT, k, swapwindow, u
bind = $mainMod SHIFT, l, swapwindow, r
# Move floating window
bind = $mainMod SHIFT, l, moveactive, 100 0
bind = $mainMod SHIFT, h, moveactive, -100 0
bind = $mainMod SHIFT, k, moveactive, 0 -100
bind = $mainMod SHIFT, j, moveactive, 0 100
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
# Emacs-everywhere
bind = $mainMod, E, exec, emacsclient --eval '(thanos/type)'
windowrulev2 = float,title:^(emacs-float)$
# Play/Pause
# bind = $mainMod, P, exec, playerctl play-pause
# Next Track
# bind = $mainmod SHIFT, L, exec, playerctl next
# Previous Track
# bind = $mainmod SHIFT, H, exec, playerctl previous
# Volume Up (player volume)
# bind = $mainmod , U, exec, playerctl volume 0.05+
# Volume Down (player volume)
# bind = $mainmod, D, exec, playerctl volume 0.05-
# Stop Playback
# bind = $mainmod, S, exec, playerctl stop
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrulev2 = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
workspace = 1, name:short-1, monitor:DP-4 # Left screen
workspace = 2, name:short-2, monitor:DP-4 # Left screen
workspace = 3, name:long-1, monitor:DP-5 # Right screen
workspace = 4, name:long-2, monitor:DP-5 # Right screen
workspace = 5, name:smoll, monitor:eDP-1 # Laptop screen
#workspace = 4, name:windows, monitor:DP-4, on-created-empty:VBoxManage startvm "Windows 11"
#workspace = special:scratchpad, on-created-empty:kitty

View File

@@ -0,0 +1,111 @@
source = $HOME/.cache/wal/colors-hyprland.conf
general {
ignore_empty_input = true
}
background {
monitor =
path = $wallpaper
# color = $color1
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
blur_size = 4
blur_passes = 3 # 0 disables blurring
noise = 0.0117
contrast = 1.3000 # Vibrant!!!
brightness = 0.8000
vibrancy = 0.2100
vibrancy_darkness = 0.0
}
# Hours
label {
monitor =
text = cmd[update:1000] echo "<b><big> $(date +"%H") </big></b>"
color = $color6
font_size = 112
font_family = Geist Mono 10
shadow_passes = 3
shadow_size = 4
position = 0, 220
halign = center
valign = center
}
# Minutes
label {
monitor =
text = cmd[update:1000] echo "<b><big> $(date +"%M") </big></b>"
color = $color6
font_size = 112
font_family = Geist Mono 10
shadow_passes = 3
shadow_size = 4
position = 0, 80
halign = center
valign = center
}
# Today
label {
monitor =
text = cmd[update:18000000] echo "<b><big> "$(date +'%A')" </big></b>"
color = $color7
font_size = 22
font_family = JetBrainsMono Nerd Font 10
position = 0, 30
halign = center
valign = center
}
# Week
label {
monitor =
text = cmd[update:18000000] echo "<b> "$(date +'%d %b')" </b>"
color = $color7
font_size = 18
font_family = JetBrainsMono Nerd Font 10
position = 0, 6
halign = center
valign = center
}
# Degrees
label {
monitor =
text = cmd[update:18000000] echo "<b>Feels like<big> $(curl -s 'wttr.in?format=%t' | tr -d '+') </big></b>"
color = $color7
font_size = 18
font_family = Geist Mono 10
position = 0, 40
halign = center
valign = bottom
}
input-field {
monitor =
size = 250, 50
outline_thickness = 3
dots_size = 0.26 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.64 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
dots_rouding = -1
rounding = 22
outer_color = $color0
inner_color = $color0
font_color = $color6
fade_on_empty = true
placeholder_text = <i>Password...</i> # Text rendered in the input box when it's empty.
position = 0, 120
halign = center
valign = bottom
}

View File

@@ -0,0 +1,2 @@
preload = ~/.config/wallpapers/tree_bark.jpg
wallpaper = , ~/.config/wallpapers/tree_bark.jpg

View File

@@ -0,0 +1,8 @@
[[shades]]
name = "vibrance"
default = true # will be activated when no other shader is scheduled
[[shades]]
name = "blue-light-filter"
start_time = 19:00:00
end_time = 06:00:00

View File

@@ -0,0 +1,78 @@
$rosewater = rgb(f5e0dc)
$rosewaterAlpha = f5e0dc
$flamingo = rgb(f2cdcd)
$flamingoAlpha = f2cdcd
$pink = rgb(f5c2e7)
$pinkAlpha = f5c2e7
$mauve = rgb(cba6f7)
$mauveAlpha = cba6f7
$red = rgb(f38ba8)
$redAlpha = f38ba8
$maroon = rgb(eba0ac)
$maroonAlpha = eba0ac
$peach = rgb(fab387)
$peachAlpha = fab387
$yellow = rgb(f9e2af)
$yellowAlpha = f9e2af
$green = rgb(a6e3a1)
$greenAlpha = a6e3a1
$teal = rgb(94e2d5)
$tealAlpha = 94e2d5
$sky = rgb(89dceb)
$skyAlpha = 89dceb
$sapphire = rgb(74c7ec)
$sapphireAlpha = 74c7ec
$blue = rgb(89b4fa)
$blueAlpha = 89b4fa
$lavender = rgb(b4befe)
$lavenderAlpha = b4befe
$text = rgb(cdd6f4)
$textAlpha = cdd6f4
$subtext1 = rgb(bac2de)
$subtext1Alpha = bac2de
$subtext0 = rgb(a6adc8)
$subtext0Alpha = a6adc8
$overlay2 = rgb(9399b2)
$overlay2Alpha = 9399b2
$overlay1 = rgb(7f849c)
$overlay1Alpha = 7f849c
$overlay0 = rgb(6c7086)
$overlay0Alpha = 6c7086
$surface2 = rgb(585b70)
$surface2Alpha = 585b70
$surface1 = rgb(45475a)
$surface1Alpha = 45475a
$surface0 = rgb(313244)
$surface0Alpha = 313244
$base = rgb(1e1e2e)
$baseAlpha = 1e1e2e
$mantle = rgb(181825)
$mantleAlpha = 181825
$crust = rgb(11111b)
$crustAlpha = 11111b

View File

@@ -0,0 +1,12 @@
shell zsh
include ~/.cache/wal/colors-kitty.conf
font_size 11
# background_opacity 0.5
# BEGIN_KITTY_FONTS
font_family family='JetBrainsMono Nerd Font' postscript_name=JetBrainsMonoNF-Regular
bold_font auto
italic_font auto
bold_italic_font auto
# END_KITTY_FONTS

109
nvim/.config/nvim/init.lua Normal file
View File

@@ -0,0 +1,109 @@
--[[
=====================================================================
==================== READ THIS BEFORE CONTINUING ====================
=====================================================================
======== .-----. ========
======== .----------------------. | === | ========
======== |.-""""""""""""""""""-.| |-----| ========
======== || || | === | ========
======== || KICKSTART.NVIM || |-----| ========
======== || || | === | ========
======== || || |-----| ========
======== ||:Tutor || |:::::| ========
======== |'-..................-'| |____o| ========
======== `"")----------------(""` ___________ ========
======== /::::::::::| |::::::::::\ \ no mouse \ ========
======== /:::========| |==hjkl==:::\ \ required \ ========
======== '""""""""""""' '""""""""""""' '""""""""""' ========
======== ========
=====================================================================
=====================================================================
What is Kickstart?
Kickstart.nvim is *not* a distribution.
Kickstart.nvim is a starting point for your own configuration.
The goal is that you can read every line of code, top-to-bottom, understand
what your configuration is doing, and modify it to suit your needs.
Once you've done that, you can start exploring, configuring and tinkering to
make Neovim your own! That might mean leaving Kickstart just the way it is for a while
or immediately breaking it into modular pieces. It's up to you!
If you don't know anything about Lua, I recommend taking some time to read through
a guide. One possible example which will only take 10-15 minutes:
- https://learnxinyminutes.com/docs/lua/
After understanding a bit more about Lua, you can use `:help lua-guide` as a
reference for how Neovim integrates Lua.
- :help lua-guide
- (or HTML version): https://neovim.io/doc/user/lua-guide.html
Kickstart Guide:
TODO: The very first thing you should do is to run the command `:Tutor` in Neovim.
If you don't know what this means, type the following:
- <escape key>
- :
- Tutor
- <enter key>
(If you already know the Neovim basics, you can skip this step.)
Once you've completed that, you can continue working through **AND READING** the rest
of the kickstart init.lua.
Next, run AND READ `:help`.
This will open up a help window with some basic information
about reading, navigating and searching the builtin help documentation.
This should be the first place you go to look when you're stuck or confused
with something. It's one of my favorite Neovim features.
MOST IMPORTANTLY, we provide a keymap "<space>sh" to [s]earch the [h]elp documentation,
which is very useful when you're not exactly sure of what you're looking for.
I have left several `:help X` comments throughout the init.lua
These are hints about where to find more information about the relevant settings,
plugins or Neovim features used in Kickstart.
NOTE: Look for lines like this
Throughout the file. These are for you, the reader, to help you understand what is happening.
Feel free to delete them once you know what you're doing, but they should serve as a guide
for when you are first encountering a few different constructs in your Neovim config.
If you experience any errors while trying to install kickstart, run `:checkhealth` for more info.
I hope you enjoy your Neovim journey,
- TJ
P.S. You can delete this when you're done too. It's your config now! :)
--]]
-- Set <space> as the leader key
-- See `:help mapleader`
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
vim.g.mapleader = " "
vim.g.maplocalleader = " "
-- Set to true if you have a Nerd Font installed and selected in the terminal
vim.g.have_nerd_font = true
-- [[ Setting options ]]
require 'options'
-- [[ Basic Keymaps ]]
require 'keybinds'
-- [[ Install `lazy.nvim` plugin manager ]]
require 'lazy-bootstrap'
-- [[ Configure and install plugins ]]
require 'lazy-plugins'
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,49 @@
{
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "776a29c3e1ac61029ac3f57ac6b5937df2340162" },
"auto-save.nvim": { "branch": "main", "commit": "979b6c82f60cfa80f4cf437d77446d0ded0addf0" },
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "d0f90ef51d4be86b824b012ec52ed715b5622e51" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
"leetcode.nvim": { "branch": "master", "commit": "db7e1cd6b9191b34b4c1f2f96e4e3949cde9f951" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "c2682b0d9732bf52cbc34862056f143e71dc4a6d" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "4c2cdc69d69fe00c15ae8648f7e954d99e5de3ea" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "93a9ff9b34c91c0cb0f7de8d5f7e4abce51d8903" },
"mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" },
"mini.nvim": { "branch": "main", "commit": "5a10dfb3ab49b3ee2425bc2c215b5067ccce1c79" },
"move.nvim": { "branch": "main", "commit": "599b14047b82e92874b9a408e4df228b965c3a1d" },
"nui.nvim": { "branch": "main", "commit": "7cd18e73cfbd70e1546931b7268b3eebaeff9391" },
"nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-dap": { "branch": "master", "commit": "ea82027c3447dc1a022be9a9884de276c05cd33a" },
"nvim-dap-lldb": { "branch": "main", "commit": "9c795072554b3dbf738d0c9cb29d28d7f820b2b4" },
"nvim-dap-python": { "branch": "master", "commit": "261ce649d05bc455a29f9636dc03f8cdaa7e0e2c" },
"nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
"nvim-lspconfig": { "branch": "master", "commit": "036885e8e5456d3907626b634693234f628afef6" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-ufo": { "branch": "main", "commit": "3c7a3570e9c9dc198a2ad4491b0b0e51c4d4ba08" },
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
"orgmode": { "branch": "master", "commit": "32ef9e95f43a6e951fb931b438372546a4f0c524" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"render-markdown": { "branch": "main", "commit": "dd620561843d5a62c917fffe77f2923c965d12c7" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
"transparent.nvim": { "branch": "main", "commit": "d41ae9b56ac2706cb3db4b16afe5cd6903013937" },
"vim-be-good": { "branch": "master", "commit": "0ae3de14eb8efc6effe7704b5e46495e91931cc5" },
"vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
"vimtex": { "branch": "master", "commit": "f20b11458e97250d690ce0dc8670759b838cace9" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
}

View File

@@ -0,0 +1,73 @@
-- [[ Basic Keymaps ]]
-- See `:help vim.keymap.set()`
-- Clear highlights on search when pressing <Esc> in normal mode
-- See `:help hlsearch`
vim.keymap.set("n", "<Esc>", "<cmd>nohlsearch<CR>")
-- Diagnostic keymaps
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous [D]iagnostic message" })
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next [D]iagnostic message" })
vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float, { desc = "Show diagnostic [E]rror messages" })
vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" })
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
-- is not what someone will guess without a bit more experience.
--
-- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping
-- or just use <C-\><C-n> to exit terminal mode
vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })
vim.keymap.set("i", "jk", "<Esc>", { desc = "Exit insert mode" })
-- TIP: Disable arrow keys in normal mode
vim.keymap.set("n", "<left>", '<cmd>echo "Use h to move!!"<CR>')
vim.keymap.set("n", "<right>", '<cmd>echo "Use l to move!!"<CR>')
vim.keymap.set("n", "<up>", '<cmd>echo "Use k to move!!"<CR>')
vim.keymap.set("n", "<down>", '<cmd>echo "Use j to move!!"<CR>')
-- latex keys
vim.keymap.set("n", "<leader>ll", "<plug>(vimtex-compile)", { desc = "Compile LaTeX" })
vim.keymap.set("n", "<leader>lv", "<plug>(vimtex-view)", { desc = "View PDF" })
vim.keymap.set("n", "<leader>lc", "<plug>(vimtex-clean)", { desc = "Clean auxiliary files" })
-- QuickFix List
vim.keymap.set("n", "<M-n>", "<cmd>cnext<CR>")
vim.keymap.set("n", "<M-p>", "<cmd>cprev<CR>")
vim.keymap.set("n", "<M-o>", "<cmd>copen<CR>")
vim.keymap.set("n", "<M-c>", "<cmd>cclose<CR>")
-- buffers
vim.api.nvim_set_keymap("n", "bh", ":bfirst<enter>", { noremap = false })
vim.api.nvim_set_keymap("n", "bj", ":bnext<enter>", { noremap = false })
vim.api.nvim_set_keymap("n", "bk", ":bprev<enter>", { noremap = false })
vim.api.nvim_set_keymap("n", "bl", ":blast<enter>", { noremap = false })
vim.api.nvim_set_keymap("n", "bd", ":bdelete<enter>", { noremap = false })
-- Todo search
vim.keymap.set("n", "<leader>st", "<cmd>TodoQuickFix<CR>")
-- greatest remap ever
vim.keymap.set("x", "<leader>p", [["_dP]])
-- Keybinds to make split navigation easier.
-- Use CTRL+<hjkl> to switch between windows
-- See `:help wincmd` for a list of all window commands
vim.keymap.set("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" })
vim.keymap.set("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" })
vim.keymap.set("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" })
vim.keymap.set("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" })
-- [[ Basic Autocommands ]]
-- See `:help lua-guide-autocommands`
-- Highlight when yanking (copying) text
-- Try it with `yap` in normal mode
-- See `:help vim.highlight.on_yank()`
vim.api.nvim_create_autocmd("TextYankPost", {
desc = "Highlight when yanking (copying) text",
group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }),
callback = function()
vim.highlight.on_yank()
end,
})

View File

@@ -0,0 +1,37 @@
return {
{
"pocco81/auto-save.nvim",
opts = {
enabled = true, -- start auto-save when the plugin is loaded (i.e. when your package manager loads it)
execution_message = {
message = function() -- message to print on save
return ("AutoSave: saved at " .. vim.fn.strftime("%H:%M:%S"))
end,
dim = 0.18, -- dim the color of `message`
cleaning_interval = 1250, -- (milliseconds) automatically clean MsgArea after displaying `message`. See :h MsgArea
},
trigger_events = { "InsertLeave", "TextChanged" }, -- vim events that trigger auto-save. See :h events
-- function that determines whether to save the current buffer or not
-- return true: if buffer is ok to be saved
-- return false: if it's not ok to be saved
condition = function(buf)
local fn = vim.fn
local utils = require("auto-save.utils.data")
if fn.getbufvar(buf, "&modifiable") == 1 and utils.not_in(fn.getbufvar(buf, "&filetype"), {}) then
return true -- met condition(s), can save
end
return false -- can't save
end,
write_all_buffers = false, -- write all buffers when the current one meets `condition`
debounce_delay = 135, -- saves the file at most every `debounce_delay` milliseconds
callbacks = { -- functions to be executed at different intervals
enabling = nil, -- ran when enabling auto-save
disabling = nil, -- ran when disabling auto-save
before_asserting_save = nil, -- ran before checking `condition`
before_saving = nil, -- ran before doing the actual save
after_saving = nil, -- ran after doing the actual save
},
},
},
}

View File

@@ -0,0 +1,45 @@
return {
{ -- Autoformat
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo" },
keys = {
{
"<leader>f",
function()
require("conform").format({ async = true, lsp_format = "fallback" })
end,
mode = "",
desc = "[F]ormat buffer",
},
},
opts = {
notify_on_error = false,
format_on_save = function(bufnr)
-- Disable "format_on_save lsp_fallback" for languages that don't
-- have a well standardized coding style. You can add additional
-- languages here or re-enable it for the disabled ones.
local disable_filetypes = { c = true, cpp = true, cs = true }
local lsp_format_opt
if disable_filetypes[vim.bo[bufnr].filetype] then
lsp_format_opt = "never"
else
lsp_format_opt = "fallback"
end
return {
timeout_ms = 500,
lsp_format = lsp_format_opt,
}
end,
formatters_by_ft = {
lua = { "stylua" },
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
-- You can use 'stop_after_first' to run the first available formatter from the list
-- javascript = { "prettierd", "prettier", stop_after_first = true },
},
},
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,84 @@
-- Alternatively, use `config = function() ... end` for full control over the configuration.
-- If you prefer to call `setup` explicitly, use:
-- {
-- 'lewis6991/gitsigns.nvim',
-- config = function()
-- require('gitsigns').setup({
-- -- Your gitsigns configuration here
-- })
-- end,
-- }
--
-- Here is a more advanced example where we pass configuration
-- options to `gitsigns.nvim`. This is equivalent to the following Lua:
-- require('gitsigns').setup({ ... })
--
-- See `:help gitsigns` to understand what the configuration keys do
return {
{ -- Adds git related signs to the gutter, as well as utilities for managing changes
"lewis6991/gitsigns.nvim",
opts = {
signs = {
add = { text = "+" },
change = { text = "~" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "~" },
},
on_attach = function(bufnr)
local gitsigns = require 'gitsigns'
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map('n', ']c', function()
if vim.wo.diff then
vim.cmd.normal { ']c', bang = true }
else
gitsigns.nav_hunk 'next'
end
end, { desc = 'Jump to next git [c]hange' })
map('n', '[c', function()
if vim.wo.diff then
vim.cmd.normal { '[c', bang = true }
else
gitsigns.nav_hunk 'prev'
end
end, { desc = 'Jump to previous git [c]hange' })
-- Actions
-- visual mode
map('v', '<leader>hs', function()
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
end, { desc = 'git [s]tage hunk' })
map('v', '<leader>hr', function()
gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
end, { desc = 'git [r]eset hunk' })
-- normal mode
map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
map('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' })
map('n', '<leader>hu', gitsigns.stage_hunk, { desc = 'git [u]ndo stage hunk' })
map('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' })
map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
map('n', '<leader>hD', function()
gitsigns.diffthis '@'
end, { desc = 'git [D]iff against last commit' })
-- Toggles
map('n', '<leader>tb', gitsigns.toggle_current_line_blame,
{ desc = '[T]oggle git show [b]lame line' })
map('n', '<leader>tD', gitsigns.preview_hunk_inline,
{ desc = '[T]oggle git show [D]eleted' })
end,
},
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,330 @@
-- LSP Plugins
return {
{
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
-- used for completion, annotations and signatures of Neovim apis
"folke/lazydev.nvim",
ft = "lua",
opts = {
library = {
-- Load luvit types when the `vim.uv` word is found
{ path = "${3rd}/luv/library", words = { "vim%.uv" } },
},
},
},
{
-- Main LSP Configuration
"neovim/nvim-lspconfig",
dependencies = {
-- Automatically install LSPs and related tools to stdpath for Neovim
-- Mason must be loaded before its dependents so we need to set it up here.
-- NOTE: `opts = {}` is the same as calling `require('mason').setup({})`
{ "williamboman/mason.nvim", opts = {} }, -- NOTE: Must be loaded before dependants
"williamboman/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
-- Useful status updates for LSP.
{ "j-hui/fidget.nvim", opts = {} },
-- Allows extra capabilities provided by nvim-cmp
"hrsh7th/cmp-nvim-lsp",
},
config = function()
-- Brief aside: **What is LSP?**
--
-- LSP is an initialism you've probably heard, but might not understand what it is.
--
-- LSP stands for Language Server Protocol. It's a protocol that helps editors
-- and language tooling communicate in a standardized fashion.
--
-- In general, you have a "server" which is some tool built to understand a particular
-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers
-- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone
-- processes that communicate with some "client" - in this case, Neovim!
--
-- LSP provides Neovim with features like:
-- - Go to definition
-- - Find references
-- - Autocompletion
-- - Symbol Search
-- - and more!
--
-- Thus, Language Servers are external tools that must be installed separately from
-- Neovim. This is where `mason` and related plugins come into play.
--
-- If you're wondering about lsp vs treesitter, you can check out the wonderfully
-- and elegantly composed help section, `:help lsp-vs-treesitter`
-- This function gets run when an LSP attaches to a particular buffer.
-- That is to say, every time a new file is opened that is associated with
-- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this
-- function will be executed to configure the current buffer
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }),
callback = function(event)
-- NOTE: Remember that Lua is a real programming language, and as such it is possible
-- to define small helper and utility functions so you don't have to repeat yourself.
--
-- In this case, we create a function that lets us more easily define mappings specific
-- for LSP related items. It sets the mode, buffer and description for us each time.
local map = function(keys, func, desc, mode)
mode = mode or "n"
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc })
end
-- Jump to the definition of the word under your cursor.
-- This is where a variable was first declared, or where a function is defined, etc.
-- To jump back, press <C-t>.
map("gd", require("telescope.builtin").lsp_definitions, "[G]oto [D]efinition")
-- Find references for the word under your cursor.
map("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences")
-- Jump to the implementation of the word under your cursor.
-- Useful when your language has ways of declaring types without an actual implementation.
map("gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation")
-- Jump to the type of the word under your cursor.
-- Useful when you're not sure what type a variable is and you want to see
-- the definition of its *type*, not where it was *defined*.
map("<leader>D", require("telescope.builtin").lsp_type_definitions, "Type [D]efinition")
-- Fuzzy find all the symbols in your current document.
-- Symbols are things like variables, functions, types, etc.
map("<leader>ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols")
-- Fuzzy find all the symbols in your current workspace.
-- Similar to document symbols, except searches over your entire project.
map(
"<leader>ws",
require("telescope.builtin").lsp_dynamic_workspace_symbols,
"[W]orkspace [S]ymbols"
)
-- Rename the variable under your cursor.
-- Most Language Servers support renaming across files, etc.
map("<leader>rn", vim.lsp.buf.rename, "[R]e[n]ame")
-- Execute a code action, usually your cursor needs to be on top of an error
-- or a suggestion from your LSP for this to activate.
map("<leader>ca", vim.lsp.buf.code_action, "[C]ode [A]ction", { "n", "x" })
-- WARN: This is not Goto Definition, this is Goto Declaration.
-- For example, in C this would take you to the header.
map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")
-- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10)
---@param client vim.lsp.Client
---@param method vim.lsp.protocol.Method
---@param bufnr? integer some lsp support methods only in specific files
---@return boolean
local function client_supports_method(client, method, bufnr)
if vim.fn.has("nvim-0.11") == 1 then
return client:supports_method(method, bufnr)
else
return client.supports_method(method, { bufnr = bufnr })
end
end
-- The following two autocommands are used to highlight references of the
-- word under your cursor when your cursor rests there for a little while.
-- See `:help CursorHold` for information about when this is executed
--
-- When you move your cursor, the highlights will be cleared (the second autocommand).
local client = vim.lsp.get_client_by_id(event.data.client_id)
if
client
and client_supports_method(
client,
vim.lsp.protocol.Methods.textDocument_documentHighlight,
event.buf
)
then
local highlight_augroup =
vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false })
vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.document_highlight,
})
vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.clear_references,
})
vim.api.nvim_create_autocmd("LspDetach", {
group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }),
callback = function(event2)
vim.lsp.buf.clear_references()
vim.api.nvim_clear_autocmds({ group = "kickstart-lsp-highlight", buffer = event2.buf })
end,
})
end
-- Not working... deactivated for now until i debug it
-- -- Function to preview the definition in a floating window
-- function PreviewDefinition()
-- local params = vim.lsp.util.make_position_params()
-- vim.lsp.buf_request(0, 'textDocument/definition', params, function(_, result)
-- -- Check if result is nil or empty
-- if not result or vim.tbl_isempty(result) then
-- print('No definition found.')
-- return
-- end
--
-- -- Check if the location is valid
-- local location = result[1]
-- if location and location.uri then
-- vim.lsp.util.preview_location(location)
-- else
-- print('Invalid location data.')
-- end
-- end)
-- end
-- -- Keybind for the preview
-- vim.api.nvim_set_keymap('n', 'gP', ':lua PreviewDefinition()<CR>', { noremap = true, silent = true })
-- The following code creates a keymap to toggle inlay hints in your
-- code, if the language server you are using supports them
--
-- This may be unwanted, since they displace some of your code
if
client
and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf)
then
map("<leader>th", function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf }))
end, "[T]oggle Inlay [H]ints")
end
end,
})
-- Diagnostic Config
-- See :help vim.diagnostic.Opts
vim.diagnostic.config({
severity_sort = true,
float = { border = "rounded", source = "if_many" },
underline = { severity = vim.diagnostic.severity.ERROR },
signs = vim.g.have_nerd_font and {
text = {
[vim.diagnostic.severity.ERROR] = "󰅚 ",
[vim.diagnostic.severity.WARN] = "󰀪 ",
[vim.diagnostic.severity.INFO] = "󰋽 ",
[vim.diagnostic.severity.HINT] = "󰌶 ",
},
} or {},
virtual_text = {
source = "if_many",
spacing = 2,
format = function(diagnostic)
local diagnostic_message = {
[vim.diagnostic.severity.ERROR] = diagnostic.message,
[vim.diagnostic.severity.WARN] = diagnostic.message,
[vim.diagnostic.severity.INFO] = diagnostic.message,
[vim.diagnostic.severity.HINT] = diagnostic.message,
}
return diagnostic_message[diagnostic.severity]
end,
},
})
-- LSP servers and clients are able to communicate to each other what features they support.
-- By default, Neovim doesn't support everything that is in the LSP specification.
-- When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities.
-- So, we create new capabilities with nvim cmp, and then broadcast that to the servers.
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities())
-- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
--
-- Add any additional override configuration in the following tables. Available keys are:
-- - cmd (table): Override the default command used to start the server
-- - filetypes (table): Override the default list of associated filetypes for the server
-- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.
-- - settings (table): Override the default settings passed when initializing the server.
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
local servers = {
-- clangd = {},
-- gopls = {},
-- pyright = {},
-- rust_analyzer = {},
-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
--
-- Some languages (like typescript) have entire language plugins that can be useful:
-- https://github.com/pmizio/typescript-tools.nvim
--
-- But for many setups, the LSP (`ts_ls`) will work just fine
-- ts_ls = {},
--
omnisharp_mono = {
-- Indentation style to One True Brace (OTBS)
-- settings = {
-- FormattingOptions = {
-- NewLine = "\n",
-- UseTabs = false,
-- TabSize = 4,
-- IndentationSize = 4,
-- ["/"] = {
-- ["braceNewLine"] = false, -- This enables OTBS (braces stay on the same line)
-- },
-- },
-- },
},
lua_ls = {
-- cmd = { ... },
-- filetypes = { ... },
-- capabilities = {},
settings = {
Lua = {
completion = {
callSnippet = "Replace",
},
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
-- diagnostics = { disable = { 'missing-fields' } },
},
},
},
}
-- Ensure the servers and tools above are installed
--
-- To check the current status of installed tools and/or manually install
-- other tools, you can run
-- :Mason
--
-- You can press `g?` for help in this menu.
--
-- `mason` had to be setup earlier: to configure its options see the
-- `dependencies` table for `nvim-lspconfig` above.
--
-- You can add other tools here that you want Mason to install
-- for you, so that they are available from within Neovim.
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
"stylua", -- Used to format Lua code
})
require("mason-tool-installer").setup({ ensure_installed = ensure_installed })
require("mason-lspconfig").setup({
ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
automatic_installation = false,
handlers = {
function(server_name)
local server = servers[server_name] or {}
-- This handles overriding only values explicitly passed
-- by the server configuration above. Useful when disabling
-- certain features of an LSP (for example, turning off formatting for ts_ls)
server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {})
require("lspconfig")[server_name].setup(server)
end,
},
})
end,
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,22 @@
return { -- mason.nvim integration
"jay-babu/mason-nvim-dap.nvim",
dependencies = "mason.nvim",
cmd = { "DapInstall", "DapUninstall" },
opts = {
-- Makes a best effort to setup the various debuggers with
-- reasonable debug configurations
automatic_installation = true,
-- You can provide additional configuration to the handlers,
-- see mason-nvim-dap README for more information
handlers = {},
-- You'll need to check that you have the required things installed
-- online, please don't ask me how to install them :)
ensure_installed = {
-- Update this to ensure that you have the debuggers for the langs you want
},
},
-- mason-nvim-dap is loaded when nvim-dap loads
config = function() end,
}

View File

@@ -0,0 +1,111 @@
return {
{
"mfussenegger/nvim-dap",
dependencies = {
"nvim-neotest/nvim-nio",
"rcarriga/nvim-dap-ui",
"mfussenegger/nvim-dap-python",
"theHamsta/nvim-dap-virtual-text",
},
config = function()
local dap = require("dap")
local dapui = require("dapui")
local dap_python = require("dap-python")
require("dapui").setup()
require("nvim-dap-virtual-text").setup({
commented = true, -- Show virtual text alongside comment
})
dap_python.setup("python3")
table.insert(require('dap').configurations.python, {
justMyCode = false,
type = 'python';
request = 'launch';
name = 'file:args:allCode';
program = '${file}';
args = function()
local args_string = vim.fn.input('Arguments: ')
local utils = require("dap.utils")
if utils.splitstr and vim.fn.has("nvim-0.10") == 1 then
return utils.splitstr(args_string)
end
return vim.split(args_string, " +")
end;
-- console = opts.console;
-- pythonPath = opts.pythonPath,
})
vim.fn.sign_define("DapBreakpoint", {
text = "",
texthl = "DiagnosticSignError",
linehl = "",
numhl = "",
})
vim.fn.sign_define("DapBreakpointRejected", {
text = "", -- or "❌"
texthl = "DiagnosticSignError",
linehl = "",
numhl = "",
})
vim.fn.sign_define("DapStopped", {
text = "", -- or "→"
texthl = "DiagnosticSignWarn",
linehl = "Visual",
numhl = "DiagnosticSignWarn",
})
-- Automatically open DAP UI
dap.listeners.after.event_initialized["dapui_config"] = function()
dapui.open()
end
-- Automatically close DAP UI when session terminates
dap.listeners.after.event_terminated["dapui_config"] = function()
dapui.close()
end
dap.listeners.after.event_exited["dapui_config"] = function()
dapui.close()
end
local opts = { noremap = true, silent = true }
-- Toggle breakpoint
vim.keymap.set("n", "<leader>db", function()
dap.toggle_breakpoint()
end, opts)
-- Continue / Start
vim.keymap.set("n", "<leader>dc", function()
dap.continue()
end, opts)
-- Step Over
vim.keymap.set("n", "<leader>do", function()
dap.step_over()
end, opts)
-- Step Into
vim.keymap.set("n", "<leader>di", function()
dap.step_into()
end, opts)
-- Step Out
vim.keymap.set("n", "<leader>dO", function()
dap.step_out()
end, opts)
-- Keymap to terminate debugging
vim.keymap.set("n", "<leader>dq", function()
require("dap").terminate()
end, opts)
-- Toggle DAP UI
vim.keymap.set("n", "<leader>du", function()
dapui.toggle()
end, opts)
end,
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

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

View File

@@ -0,0 +1,120 @@
-- NOTE: Plugins can specify dependencies.
--
-- The dependencies are proper plugin specifications as well - anything
-- you do for a plugin at the top level, you can do for a dependency.
--
-- Use the `dependencies` key to specify the dependencies of a particular plugin
return {
{ -- Fuzzy Finder (files, lsp, etc)
"nvim-telescope/telescope.nvim",
event = "VimEnter",
branch = "0.1.x",
dependencies = {
"nvim-lua/plenary.nvim",
{ -- If encountering errors, see telescope-fzf-native README for installation instructions
"nvim-telescope/telescope-fzf-native.nvim",
-- `build` is used to run some command when the plugin is installed/updated.
-- This is only run then, not every time Neovim starts up.
build = "make",
-- `cond` is a condition used to determine whether this plugin should be
-- installed and loaded.
cond = function()
return vim.fn.executable("make") == 1
end,
},
{ "nvim-telescope/telescope-ui-select.nvim" },
-- Useful for getting pretty icons, but requires a Nerd Font.
{ "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font },
},
config = function()
-- Telescope is a fuzzy finder that comes with a lot of different things that
-- it can fuzzy find! It's more than just a "file finder", it can search
-- many different aspects of Neovim, your workspace, LSP, and more!
--
-- The easiest way to use Telescope, is to start by doing something like:
-- :Telescope help_tags
--
-- After running this command, a window will open up and you're able to
-- type in the prompt window. You'll see a list of `help_tags` options and
-- a corresponding preview of the help.
--
-- Two important keymaps to use while in Telescope are:
-- - Insert mode: <c-/>
-- - Normal mode: ?
--
-- This opens a window that shows you all of the keymaps for the current
-- Telescope picker. This is really useful to discover what Telescope can
-- do as well as how to actually do it!
-- [[ Configure Telescope ]]
-- See `:help telescope` and `:help telescope.setup()`
require("telescope").setup({
-- You can put your default mappings / updates / etc. in here
-- All the info you're looking for is in `:help telescope.setup()`
--
-- defaults = {
-- mappings = {
-- i = { ['<c-enter>'] = 'to_fuzzy_refine' },
-- },
-- },
-- pickers = {}
pickers = {
find_files = {
hidden = true,
follow = true,
},
},
extensions = {
["ui-select"] = {
require("telescope.themes").get_dropdown(),
},
},
})
-- Enable Telescope extensions if they are installed
pcall(require("telescope").load_extension, "fzf")
pcall(require("telescope").load_extension, "ui-select")
-- See `:help telescope.builtin`
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<leader>sh", builtin.help_tags, { desc = "[S]earch [H]elp" })
vim.keymap.set("n", "<leader>sk", builtin.keymaps, { desc = "[S]earch [K]eymaps" })
vim.keymap.set("n", "<leader>sf", builtin.find_files, { desc = "[S]earch [F]iles" })
vim.keymap.set("n", "<leader>ss", builtin.builtin, { desc = "[S]earch [S]elect Telescope" })
vim.keymap.set("n", "<leader>sw", builtin.grep_string, { desc = "[S]earch current [W]ord" })
vim.keymap.set("n", "<leader>sg", builtin.live_grep, { desc = "[S]earch by [G]rep" })
vim.keymap.set("n", "<leader>sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" })
vim.keymap.set("n", "<leader>sr", builtin.resume, { desc = "[S]earch [R]esume" })
vim.keymap.set("n", "<leader>s.", builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
vim.keymap.set("n", "<leader><leader>", builtin.buffers, { desc = "[ ] Find existing buffers" })
-- Slightly advanced example of overriding default behavior and theme
vim.keymap.set("n", "<leader>/", function()
-- You can pass additional configuration to Telescope to change the theme, layout, etc.
builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({
winblend = 10,
previewer = false,
}))
end, { desc = "[/] Fuzzily search in current buffer" })
-- It's also possible to pass additional configuration options.
-- See `:help telescope.builtin.live_grep()` for information about particular keys
vim.keymap.set("n", "<leader>s/", function()
builtin.live_grep({
grep_open_files = true,
prompt_title = "Live Grep in Open Files",
})
end, { desc = "[S]earch [/] in Open Files" })
-- Shortcut for searching your Neovim configuration files
vim.keymap.set("n", "<leader>sn", function()
builtin.find_files({ cwd = vim.fn.stdpath("config") })
end, { desc = "[S]earch [N]eovim files" })
end,
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,71 @@
return {
{
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
signs = true, -- show icons in the signs column
sign_priority = 8, -- sign priority
-- keywords recognized as todo comments
keywords = {
FIX = {
icon = "", -- icon used for the sign, and in search results
color = "error", -- can be a hex color, or a named color (see below)
alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords
-- signs = false, -- configure signs for some keywords individually
},
TODO = { icon = "", color = "info" },
HACK = { icon = "", color = "warning" },
WARN = { icon = "", color = "warning", alt = { "WARNING", "XXX" } },
PERF = { icon = "", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
NOTE = { icon = "", color = "hint", alt = { "INFO" } },
TEST = { icon = "", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
Q = { icon = "", color = "warning", alt = { "QUESTION", "WTF", "HMM?" } },
},
gui_style = {
fg = "NONE", -- The gui style to use for the fg highlight group.
bg = "BOLD", -- The gui style to use for the bg highlight group.
},
merge_keywords = true, -- when true, custom keywords will be merged with the defaults
-- highlighting of the line containing the todo comment
-- * before: highlights before the keyword (typically comment characters)
-- * keyword: highlights of the keyword
-- * after: highlights after the keyword (todo text)
highlight = {
multiline = true, -- enable multine todo comments
multiline_pattern = "^.", -- lua pattern to match the next multiline from the start of the matched keyword
multiline_context = 10, -- extra lines that will be re-evaluated when changing a line
before = "", -- "fg" or "bg" or empty
keyword = "wide", -- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg, but will also highlight surrounding characters, wide_fg acts accordingly but with fg)
after = "fg", -- "fg" or "bg" or empty
pattern = [[.*<(KEYWORDS)\s*:]], -- pattern or table of patterns, used for highlighting (vim regex)
comments_only = true, -- uses treesitter to match keywords in comments only
max_line_len = 400, -- ignore lines longer than this
exclude = {}, -- list of file types to exclude highlighting
},
-- list of named colors where we try to extract the guifg from the
-- list of highlight groups or use the hex color if hl not found as a fallback
colors = {
error = { "DiagnosticError", "ErrorMsg", "#DC2626" },
warning = { "DiagnosticWarn", "WarningMsg", "#FBBF24" },
info = { "DiagnosticInfo", "#2563EB" },
hint = { "DiagnosticHint", "#10B981" },
default = { "Identifier", "#7C3AED" },
test = { "Identifier", "#FF00FF" }
},
search = {
command = "rg",
args = {
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
},
-- regex that will be used to match keywords.
-- don't replace the (KEYWORDS) placeholder
pattern = [[\b(KEYWORDS):]], -- ripgrep regex
-- pattern = [[\b(KEYWORDS)\b]], -- match without the extra colon. You'll likely get false positives
},
}
},
}

View File

@@ -0,0 +1,74 @@
-- NOTE: Plugins can also be configured to run Lua code when they are loaded.
--
-- This is often very useful to both group configuration, as well as handle
-- lazy loading plugins that don't need to be loaded immediately at startup.
--
-- For example, in the following configuration, we use:
-- event = 'VimEnter'
--
-- which loads which-key before all the UI elements are loaded. Events can be
-- normal autocommands events (`:help autocmd-events`).
--
-- Then, because we use the `opts` key (recommended), the configuration runs
-- after the plugin has been loaded as `require(MODULE).setup(opts)`.
return {
{ -- Useful plugin to show you pending keybinds.
"folke/which-key.nvim",
event = "VimEnter", -- Sets the loading event to 'VimEnter'
opts = {
-- delay between pressing a key and opening which-key (milliseconds)
-- this setting is independent of vim.opt.timeoutlen
delay = 0,
icons = {
-- set icon mappings to true if you have a Nerd Font
mappings = vim.g.have_nerd_font,
-- If you are using a Nerd Font: set icons.keys to an empty table which will use the
-- default whick-key.nvim defined Nerd Font icons, otherwise define a string table
keys = vim.g.have_nerd_font and {} or {
Up = "<Up> ",
Down = "<Down> ",
Left = "<Left> ",
Right = "<Right> ",
C = "<C-…> ",
M = "<M-…> ",
D = "<D-…> ",
S = "<S-…> ",
CR = "<CR> ",
Esc = "<Esc> ",
ScrollWheelDown = "<ScrollWheelDown> ",
ScrollWheelUp = "<ScrollWheelUp> ",
NL = "<NL> ",
BS = "<BS> ",
Space = "<Space> ",
Tab = "<Tab> ",
F1 = "<F1>",
F2 = "<F2>",
F3 = "<F3>",
F4 = "<F4>",
F5 = "<F5>",
F6 = "<F6>",
F7 = "<F7>",
F8 = "<F8>",
F9 = "<F9>",
F10 = "<F10>",
F11 = "<F11>",
F12 = "<F12>",
},
},
-- Document existing key chains
spec = {
{ "<leader>c", group = "[C]ode", mode = { "n", "x" } },
{ "<leader>d", group = "[D]ocument" },
{ "<leader>r", group = "[R]ename" },
{ "<leader>s", group = "[S]earch" },
{ "<leader>w", group = "[W]orkspace" },
{ "<leader>t", group = "[T]oggle" },
{ "<leader>h", group = "Git [H]unk", mode = { "n", "v" } },
},
},
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,13 @@
-- [[ Install `lazy.nvim` plugin manager ]]
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
error("Error cloning lazy.nvim:\n" .. out)
end
end ---@diagnostic disable-next-line: undefined-field
vim.opt.rtp:prepend(lazypath)
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,471 @@
-- [[ Configure and install plugins ]]
--
-- To check the current status of your plugins, run
-- :Lazy
--
-- You can press `?` in this menu for help. Use `:q` to close the window
--
-- To update plugins you can run
-- :Lazy update
--
-- NOTE: Here is where you install your plugins.
require("lazy").setup({
-- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
"tpope/vim-sleuth", -- Detect tabstop and shiftwidth automatically
-- NOTE: Plugins can also be added by using a table,
-- with the first argument being the link and the following
-- keys can be used to configure plugin behavior/loading/etc.
--
-- Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded.
-- modular approach: using `require 'path/name'` will
-- include a plugin definition from file lua/path/name.lua
{
'numToStr/Comment.nvim',
opts = {
-- add any options here
}
},
-- { FIXME: Not working right now
-- 'VidocqH/lsp-lens.nvim',
-- config = function ()
-- require("lsp-lens").setup({})
-- end,
-- },
require("kickstart/plugins/orgmode"),
"ThePrimeagen/vim-be-good",
require("kickstart/plugins/nvim-dap"),
{ -- nvim-dap-lldb
"julianolf/nvim-dap-lldb",
dependencies = { "mfussenegger/nvim-dap" },
},
{ -- vimtex
"lervag/vimtex",
lazy = false, -- we don't want to lazy load VimTeX
-- tag = "v2.15", -- uncomment to pin to a specific release
init = function()
-- VimTeX configuration goes here, e.g.
vim.g.vimtex_view_method = "zathura"
vim.g.vimtex_compiler_method = "latexmk"
end,
},
require("kickstart.plugins.mason-nvim-dap"),
{ -- nvim-autopairs
"windwp/nvim-autopairs",
event = "InsertEnter",
config = true,
-- use opts = {} for passing setup options
-- this is equivalent to setup({}) function
},
-- NOTE: Plugins can also be added by using a table,
-- with the first argument being the link and the following
-- keys can be used to configure plugin behavior/loading/etc.
--
-- Use `opts = {}` to force a plugin to be loaded.
--
require("kickstart/plugins/gitsigns"),
require("kickstart/plugins/auto-save"),
{ -- markdown.nvim
"MeanderingProgrammer/markdown.nvim",
main = "render-markdown",
opts = {},
name = "render-markdown",
dependencie = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" },
},
{ -- Allow to move line, word, and bloc
"fedepujol/move.nvim",
config = function()
require("move").setup({})
local opts = { noremap = true, silent = true }
-- Normal-mode commands
vim.keymap.set("n", "<A-j>", ":MoveLine(1)<CR>", opts)
vim.keymap.set("n", "<A-k>", ":MoveLine(-1)<CR>", opts)
vim.keymap.set("n", "<A-l>", ":MoveWord(1)<CR>", opts)
vim.keymap.set("n", "<A-h>", ":MoveWord(-1)<CR>", opts)
vim.keymap.set("v", "<A-j>", ":MoveBlock(1)<CR>", opts)
vim.keymap.set("v", "<A-k>", ":MoveBlock(-1)<CR>", opts)
vim.keymap.set("v", "<A-l>", ":MoveHBlock(1)<CR>", opts)
vim.keymap.set("v", "<A-h>", ":MoveHBlock(-1)<CR>", opts)
end,
},
{ -- leetcode.nvim
"kawre/leetcode.nvim",
build = ":TSUpdate html",
dependencies = {
"nvim-telescope/telescope.nvim",
"nvim-lua/plenary.nvim", -- required by telescope
"MunifTanjim/nui.nvim",
-- optional
"nvim-treesitter/nvim-treesitter",
"rcarriga/nvim-notify",
"nvim-tree/nvim-web-devicons",
},
opts = {
-- configuration goes here
},
},
require("kickstart.plugins.which-key"),
-- Awesome search
require("kickstart.plugins.telescope"),
-- Highlight todo, notes, etc in comments
require("kickstart/plugins/todo-comments"),
-- Transparent background
{
"xiyaowong/transparent.nvim",
},
-- FIXME: Deactivated for now because enable to set the tabulation standard
-- NOTE: Maybe the new language support added to treesitter make this work now?
-- require("kickstart.plugins.conform"),
-- Folding
{
"kevinhwang91/nvim-ufo",
event = "BufRead",
dependencies = { "kevinhwang91/promise-async" },
config = function()
vim.o.foldcolumn = "1"
vim.o.foldlevel = 99
vim.o.foldlevelstart = 99
vim.o.foldenable = true
require("ufo").setup()
end,
},
-- LSP Plugins
require("kickstart.plugins.lspconfig"),
{ -- obsidian
"epwalsh/obsidian.nvim",
version = "*", -- recommended, use latest release instead of latest commit
lazy = true,
ft = "markdown",
-- Replace the above line with this if you only want to load obsidian.nvim for markdown files in your vault:
-- event = {
-- -- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand'.
-- -- E.g. "BufReadPre " .. vim.fn.expand "~" .. "/my-vault/*.md"
-- -- refer to `:h file-pattern` for more examples
-- "BufReadPre path/to/my-vault/*.md",
-- "BufNewFile path/to/my-vault/*.md",
-- },
dependencies = {
-- Required.
"nvim-lua/plenary.nvim",
-- see below for full list of optional dependencies 👇
},
opts = {
ui = {enable = false},
workspaces = (
function()
local ws = {}
if vim.fn.hostname() == "valkyrie" then
table.insert(ws, {
name = "personal",
path = vim.fn.expand("~/Nextcloud/3. Resources/Notes"),
})
end
if vim.fn.hostname() == "Ingenuity-WSL" then
table.insert(ws, {
name = "work",
path = vim.fn.expand("/mnt/c/Users/Thierry/3-Resources/Work_Notes"),
})
end
if vim.fn.hostname() == "ingenuity" then
table.insert(ws, {
name = "work",
path = vim.fn.expand("~/3-Resources/Work_Notes"),
})
end
return ws
end)(),
},
},
{ -- Autocompletion
"hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = {
-- Snippet Engine & its associated nvim-cmp source
{
"L3MON4D3/LuaSnip",
build = (function()
-- Build Step is needed for regex support in snippets.
-- This step is not supported in many windows environments.
-- Remove the below condition to re-enable on windows.
if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then
return
end
return "make install_jsregexp"
end)(),
dependencies = {
-- `friendly-snippets` contains a variety of premade snippets.
-- See the README about individual language/framework/plugin snippets:
-- https://github.com/rafamadriz/friendly-snippets
{
'rafamadriz/friendly-snippets',
config = function()
require('luasnip.loaders.from_vscode').lazy_load()
end,
},
},
},
"saadparwaiz1/cmp_luasnip", -- snippet completion
-- Adds other completion capabilities.
-- nvim-cmp does not ship with all sources by default. They are split
-- into multiple repos for maintenance purposes.
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-path",
},
config = function()
-- See `:help cmp`
local cmp = require("cmp")
local luasnip = require("luasnip")
luasnip.config.setup({})
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
completion = { completeopt = "menu,menuone,noinsert" },
-- For an understanding of why these mappings were
-- chosen, you will need to read `:help ins-completion`
--
-- No, but seriously. Please read `:help ins-completion`, it is really good!
mapping = cmp.mapping.preset.insert({
-- Select the [n]ext item
["<C-n>"] = cmp.mapping.select_next_item(),
-- Select the [p]revious item
["<C-p>"] = cmp.mapping.select_prev_item(),
-- Scroll the documentation window [b]ack / [f]orward
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
-- Accept ([y]es) the completion.
-- This will auto-import if your LSP supports it.
-- This will expand snippets if the LSP sent a snippet.
["<C-y>"] = cmp.mapping.confirm({ select = true }),
-- If you prefer more traditional completion keymaps,
-- you can uncomment the following lines
--['<CR>'] = cmp.mapping.confirm { select = true },
--['<Tab>'] = cmp.mapping.select_next_item(),
--['<S-Tab>'] = cmp.mapping.select_prev_item(),
-- Manually trigger a completion from nvim-cmp.
-- Generally you don't need this, because nvim-cmp will display
-- completions whenever it has completion options available.
["<C-Space>"] = cmp.mapping.complete({}),
-- Think of <c-l> as moving to the right of your snippet expansion.
-- So if you have a snippet that's like:
-- function $name($args)
-- $body
-- end
--
-- <c-l> will move you to the right of each of the expansion locations.
-- <c-h> is similar, except moving you backwards.
["<C-l>"] = cmp.mapping(function()
if luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
end
end, { "i", "s" }),
["<C-h>"] = cmp.mapping(function()
if luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
end
end, { "i", "s" }),
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
}),
sources = {
{
name = "lazydev",
-- set group index to 0 to skip loading LuaLS completions as lazydev recommends it
group_index = 0,
},
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "path" },
},
})
end,
},
{ -- You can easily change to a different colorscheme.
-- Change the name of the colorscheme plugin below, and then
-- change the command in the config to whatever the name of that colorscheme is.
--
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
"folke/tokyonight.nvim",
priority = 1000, -- Make sure to load this before all the other start plugins.
init = function()
-- Load the colorscheme here.
-- Like many other themes, this one has different styles, and you could load
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
vim.cmd.colorscheme("retrobox")
-- You can configure highlights by doing something like:
vim.cmd.hi("Comment gui=none")
end,
},
{ -- Collection of various small independent plugins/modules
"echasnovski/mini.nvim",
config = function()
-- Better Around/Inside textobjects
--
-- Examples:
-- - va) - [V]isually select [A]round [)]paren
-- - yinq - [Y]ank [I]nside [N]ext [Q]uote
-- - ci' - [C]hange [I]nside [']quote
require("mini.ai").setup({ n_lines = 500 })
-- Add/delete/replace surroundings (brackets, quotes, etc.)
--
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
-- - sd' - [S]urround [D]elete [']quotes
-- - sr)' - [S]urround [R]eplace [)] [']
require("mini.surround").setup()
-- Simple and easy statusline.
-- You could remove this setup call if you don't like it,
-- and try some other statusline plugin
local statusline = require("mini.statusline")
-- set use_icons to true if you have a Nerd Font
statusline.setup({ use_icons = vim.g.have_nerd_font })
-- You can configure sections in the statusline by overriding their
-- default behavior. For example, here we set the section for
-- cursor location to LINE:COLUMN
---@diagnostic disable-next-line: duplicate-set-field
statusline.section_location = function()
return "%2l:%-2v"
end
-- ... and there is more!
-- Check out: https://github.com/echasnovski/mini.nvim
end,
},
{ -- Highlight, edit, and navigate code
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
main = "nvim-treesitter.configs", -- Sets main module to use for opts
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = {
ensure_installed = {
"bash",
"c",
"cpp",
"csv",
"gitignore",
"git_config",
"haskell",
"hyprlang",
"javadoc",
"json",
"lua",
"make",
"nginx",
"requirements",
"rust",
"sql",
"ssh_config",
"tmux",
"vhdl",
"xml",
"c_sharp",
"python",
"diff",
"bash",
"html",
"lua",
"luadoc",
"markdown",
"markdown_inline",
"query",
"vim",
"vimdoc",
},
-- Autoinstall languages that are not installed
auto_install = true,
highlight = {
enable = true,
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
-- If you are experiencing weird indenting issues, add the language to
-- the list of additional_vim_regex_highlighting and disabled languages for indent.
additional_vim_regex_highlighting = { "ruby" },
},
indent = { enable = true, disable = { "ruby" } },
},
-- There are additional nvim-treesitter modules that you can use to interact
-- with nvim-treesitter. You should go explore a few and see what interests you:
--
-- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
-- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
},
-- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the
-- init.lua. If you want these files, they are in the repository, so you can just download them and
-- place them in the correct locations.
-- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart
--
-- Here are some example plugins that I've included in the Kickstart repository.
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
--
-- require 'kickstart.plugins.debug',
-- require 'kickstart.plugins.indent_line',
-- require 'kickstart.plugins.lint',
-- require 'kickstart.plugins.autopairs',
-- require 'kickstart.plugins.neo-tree',
-- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
-- This is the easiest way to modularize your config.
--
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
-- { import = 'custom.plugins' },
--
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
-- Or use telescope!
-- In normal mode type `<space>sh` then write `lazy.nvim-plugin`
-- you can continue same window with `<space>sr` which resumes last telescope search
}, {
ui = {
-- If you are using a Nerd Font: set icons to an empty table which will use the
-- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table
icons = vim.g.have_nerd_font and {} or {
cmd = "",
config = "🛠",
event = "📅",
ft = "📂",
init = "",
keys = "🗝",
plugin = "🔌",
runtime = "💻",
require = "🌙",
source = "📄",
start = "🚀",
task = "📌",
lazy = "💤 ",
},
},
})
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,81 @@
-- [[ Setting options ]]
-- See `:help vim.opt`
-- NOTE: You can change these options as you wish!
-- For more options, you can see `:help option-list`
vim.opt.expandtab = true -- Use spaces instead of tabs
vim.opt.shiftwidth = 2 -- Indent/outdent by 2 spaces
vim.opt.tabstop = 2 -- Tab key inserts 2 spaces
vim.opt.softtabstop = 2 -- Backspace removes 2 spaces
-- Set fileformat to dos (CRLF) on Windows-based systems
if vim.fn.has('win32') == 1 or vim.fn.has('win64') == 1 then
vim.opt.fileformat = 'dos'
end
-- Make line numbers default
vim.opt.number = true
-- You can also add relative line numbers, to help with jumping.
-- Experiment for yourself to see if you like it!
vim.opt.relativenumber = true
-- Enable mouse mode, can be useful for resizing splits for example!
vim.opt.mouse = "a"
-- Don't show the mode, since it's already in the status line
vim.opt.showmode = false
-- Sync clipboard between OS and Neovim.
-- Schedule the setting after `UiEnter` because it can increase startup-time.
-- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'`
vim.schedule(function()
vim.opt.clipboard = "unnamedplus"
end)
-- Enable break indent
vim.opt.breakindent = true
-- Save undo history
vim.opt.undofile = true
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
vim.opt.ignorecase = true
vim.opt.smartcase = true
-- Keep signcolumn on by default
vim.opt.signcolumn = "yes"
-- Decrease update time
vim.opt.updatetime = 250
-- Decrease mapped sequence wait time
-- Displays which-key popup sooner
vim.opt.timeoutlen = 300
-- Configure how new splits should be opened
vim.opt.splitright = true
vim.opt.splitbelow = true
-- Sets how neovim will display certain whitespace characters in the editor.
-- See `:help 'list'`
-- and `:help 'listchars'`
vim.opt.list = true
vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "" }
-- Preview substitutions live, as you type!
vim.opt.inccommand = "split"
-- Show which line your cursor is on
vim.opt.cursorline = true
-- Minimal number of screen lines to keep above and below the cursor.
vim.opt.scrolloff = 20
-- Setting this for obsidian.nvim
vim.opt_local.conceallevel = 2
-- Setting transparency
vim.g.transparent_enabled = true
-- vim: ts=2 sts=2 sw=2

View File

@@ -0,0 +1,16 @@
[Unit]
Description=Mount Rclone FTP
After=network-online.target network.target
Wants=network-online.target
[Service]
Type=simple
# Use Environment to explicitly set $HOME
Environment=HOME=%h
ExecStartPre=%h/.local/bin/rclone_mount_check.sh
ExecStart=/usr/bin/rclone mount tdnde_ftp: %h/mnt/tdnde_server --vfs-cache-mode full --vfs-cache-max-size 1G --ftp-concurrency 20 --timeout 60s --contimeout 30s --dir-cache-time 1h
ExecStop=/bin/fusermount -u %h/mnt/tdnde_server
Restart=on-failure
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,18 @@
#!/bin/bash
# Define the network name (SSID) of your work network
WORK_SSID="BELL577" # Replace with your actual work network name
# Get the current SSID (Wi-Fi network name)
# CURRENT_SSID=$(iwgetid -r) # If using iwgetid for Wi-Fi; you can also use nmcli for more flexibility
# Alternatively, use nmcli to get the SSID
CURRENT_SSID=$(nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d: -f2)
# Check if the current SSID matches the work network
if [ "$CURRENT_SSID" == "$WORK_SSID" ]; then
exit 0
else
echo "Not on the correct network (SSID: $CURRENT_SSID), skipping mount."
exit 1
fi

8
scripts/make_all.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
cd ~/ExoKortex/2-Areas/IT/config
make all
if [ $? -eq 0 ]; then
notify-send "Dotfiles" "Configuration reloaded successfully!"
else
notify-send "Dotfiles" "Failed to reload configuration!"
fi

View File

@@ -0,0 +1,39 @@
#!/bin/bash
# Define paths
CHECK_SCRIPT="$HOME/.local/bin/rclone_mount_check.sh"
SERVICE_FILE="$HOME/.config/systemd/user/rclone_ftp_mount.service"
# Ensure the check script is executable
if [ -f "$CHECK_SCRIPT" ] && [ ! -x "$CHECK_SCRIPT" ]; then
echo "Making the check script executable: $CHECK_SCRIPT"
chmod +x "$CHECK_SCRIPT" || { echo "Failed to make the script executable"; exit 1; }
else
echo "Check script already executable or doesn't exist."
fi
# Reload user systemd to recognize the new unit
systemctl --user daemon-reload
# Enable the service if not already enabled
if [ -f "$SERVICE_FILE" ]; then
if ! systemctl --user is-enabled --quiet rclone_ftp_mount.service; then
echo "Enabling the rclone service."
systemctl --user enable rclone_ftp_mount.service || { echo "Failed to enable the service"; exit 1; }
else
echo "Service already enabled."
fi
else
echo "Service file does not exist at $SERVICE_FILE."
exit 1
fi
# Start the service if not already running
if systemctl --user is-active --quiet rclone_ftp_mount.service; then
echo "Rclone service is already running."
else
echo "Starting the rclone service."
systemctl start rclone_ftp_mount.service || { echo "Failed to start the service"; exit 1; }
fi
echo "Post-installation steps for rclone completed successfully."

8
secrets/connecteam.age Normal file
View File

@@ -0,0 +1,8 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IEdoTUQ4QSByeHZa
eGZjcWJrbVhOQXBiRU4wdjFTMHVOZisxRzYvUTFKTnRuUTlWMWxjCnJGL1I3U0Nn
TkJQelRmcGFuVjU3aVJmWkoxWEtnUUdZTVdDam9DdDhFbGsKLT4gMDstZ3JlYXNl
CjQxVlY0c3J2RjZzCi0tLSBsNmJsWTU1bFVqc3h2TlNBOGF1RXFFcXVrUHVyd0p6
L2Z6RGtIWElhN2RZCh6YumB0j025dfLQDqboPSVITEwJQLb8L1X5HDy7i1cHr/E0
wv0yfp//2rRtp9X4ZFT8nG7BUPtigAma5bGJTEFKY633Iw==
-----END AGE ENCRYPTED FILE-----

10
secrets/gemini.age Normal file
View File

@@ -0,0 +1,10 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IEdoTUQ4QSBxdXpL
VVg5RmNGNGxLcVByNjFpejlDejVtZTNQT0doVEdRL1U2VHhMT0hRCmJEaGdXTnFD
Ykw0QkQvR0NyQW1QV2pUS1BaZWw1RkxLQ1I1elpqRDMzVlkKLT4gbXE9X3gtZ3Jl
YXNlID84QFBWRSB4JiYnaWNJIE8/WUIKekQ0UkJnMGZKbFBzaVVCUHZ1aER4UU9r
alc5RG5jcVEwcGh5K2hETmtsTFY2K3RVRmliVmY2VQotLS0gaW5ZdU1CZXhCcjRz
TndZd0tCdy95by9kaGN1Zy85M2VZQ056eTFZdkdyTQqlnKkPs75J6J3b0pEIFMWt
SIx4FXPo1OadOWy4MQZ7A7DzrE7tJjcVQ19/4i28Ui10KuPaDH1KdZAVet3xhuRR
coqQfb8p3JQ=
-----END AGE ENCRYPTED FILE-----

8
secrets/irc.age Normal file
View File

@@ -0,0 +1,8 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IEdoTUQ4QSBhWER0
SG5jMVpSVWpDMUJKaENOeUd4cVNBeXR3R2RuZXl5cmFIaHU1aFc4Ckh0dmZHeVlp
bzhsUUlVa3J4Y3ZZbEl2K3hmalJvSm5FS05FOEt5dGRTTTQKLT4gZi1ncmVhc2UK
eFJJVDhNMXpMUXd3aWRNTjlSVCttWXlSRmd5a1hkZWVBYXcKLS0tIDZEeS82U1kz
c0FDZXd3NUZsVjhsTjFVK1hsWGNlSVJLblJnWDBrR3V4bncKXzz/LdYlVqSVLRWU
9ehBi6D1jCbK8y1W6AURWvOM2gqg/eDW1Rf10gqgUPg=
-----END AGE ENCRYPTED FILE-----

10
secrets/openrouter.age Normal file
View File

@@ -0,0 +1,10 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IEdoTUQ4QSBHWncw
MnQ0b1NqKzFRMVJpaDhIZ1hTVE1YMFJITVRNV3c2ZjJuSXdlVGxnCkpCYXhOd2Z1
Q2M5VWw2MUVaeEFUdWlseWR0dVNyRWRuQitDSEZYcHlrN2MKLT4gKWQ5Skw7dC1n
cmVhc2UgZlIyTSpPfCApIFQyIFdkR1hpclovCkx1UXE1S0VwU0M1MWhYSGxsdwot
LS0gSnN0ZEwxMmlCU0hoVGlLN3lyVlhYZ3ZLSURYNkJDai9BN3hJL3pxSzhOMAoa
0dYMeWqxwkq/mgK4rqcuNLG/uT2aHzOqtMNTJyv6n/SaLio/LXkW+xtGLAOxkCBO
EEfs0G+mTrluJ/IO5NmzeMBhWC4/rfKG7rXeX3cfWNIx7K5FwOJkWh3zYQkKzFRP
q/V9qw8s41r3
-----END AGE ENCRYPTED FILE-----

11
secrets/openwebui.age Normal file
View File

@@ -0,0 +1,11 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IEdoTUQ4QSBVdmND
MFlRWlh5TWgyZ2Z1bXRIT1RKYk9RTzB3RDVQN2VjZjVZek4rZm04CktncSt1eitI
eXZQL1kwNy9ndzJFMVhMZFdDRGd5Ym5ZUHM0UEhGQURVd0UKLT4gQWoyUS1ncmVh
c2UgOEJFIE53QHklKyA1dnEKbUNvczMxTUpuOGlNQWhjd0tpVnFyMDdyMkpyWGxz
UjNLRlFLczBIUmk5dmlGM1ozVENZV0pVbE9oL1VtN0U0YgpONm5SUlhrSTNSamt3
Y0c2MlBkbHNOT2hmeFh0RVVKL2RsbnFGVE15cS8zMWJicy93Y0JxaG9UcThXVQot
LS0gUzBZMU1ENmo4RWdDRit4QW9HNVR6YjZBUjd4Nkhsb01hSGZiT2ltdXg2TQqk
cltlcAYo7a7ZfsAI+4XxZAvIC4dv7XZyTKcfIetTap3aWRLYGEhajQQXUXJqTdYC
7X1er9Kz7FO79mMZlzrNnhhEMg==
-----END AGE ENCRYPTED FILE-----

View File

@@ -0,0 +1,180 @@
"$schema" = 'https://starship.rs/config-schema.json'
format = """
[](color_orange)\
$os\
$username\
[](bg:color_yellow fg:color_orange)\
$directory\
[](fg:color_yellow bg:color_aqua)\
$git_branch\
$git_status\
[](fg:color_aqua bg:color_blue)\
$c\
$cpp\
$rust\
$golang\
$nodejs\
$php\
$java\
$kotlin\
$haskell\
$python\
[](fg:color_blue bg:color_bg3)\
$docker_context\
$conda\
$pixi\
[](fg:color_bg3 bg:color_bg1)\
$time\
[ ](fg:color_bg1)\
$line_break$character"""
palette = 'gruvbox_dark'
[palettes.gruvbox_dark]
color_fg0 = '#fbf1c7'
color_bg1 = '#3c3836'
color_bg3 = '#665c54'
color_blue = '#458588'
color_aqua = '#689d6a'
color_green = '#98971a'
color_orange = '#d65d0e'
color_purple = '#b16286'
color_red = '#cc241d'
color_yellow = '#d79921'
[os]
disabled = false
style = "bg:color_orange fg:color_fg0"
[os.symbols]
Windows = "󰍲"
Ubuntu = "󰕈"
SUSE = ""
Raspbian = "󰐿"
Mint = "󰣭"
Macos = "󰀵"
Manjaro = ""
Linux = "󰌽"
Gentoo = "󰣨"
Fedora = "󰣛"
Alpine = ""
Amazon = ""
Android = ""
Arch = "󰣇"
Artix = "󰣇"
EndeavourOS = ""
CentOS = ""
Debian = "󰣚"
Redhat = "󱄛"
RedHatEnterprise = "󱄛"
Pop = ""
[username]
show_always = true
style_user = "bg:color_orange fg:color_fg0"
style_root = "bg:color_orange fg:color_fg0"
format = '[ $user ]($style)'
[directory]
style = "fg:color_fg0 bg:color_yellow"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[directory.substitutions]
"Documents" = "󰈙 "
"Downloads" = " "
"Music" = "󰝚 "
"Pictures" = " "
"Developer" = "󰲋 "
[git_branch]
symbol = ""
style = "bg:color_aqua"
format = '[[ $symbol $branch ](fg:color_fg0 bg:color_aqua)]($style)'
[git_status]
style = "bg:color_aqua"
format = '[[($all_status$ahead_behind )](fg:color_fg0 bg:color_aqua)]($style)'
[nodejs]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[c]
symbol = " "
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[cpp]
symbol = " "
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[rust]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[golang]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[php]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[java]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[kotlin]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[haskell]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[python]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[docker_context]
symbol = ""
style = "bg:color_bg3"
format = '[[ $symbol( $context) ](fg:#83a598 bg:color_bg3)]($style)'
[conda]
style = "bg:color_bg3"
format = '[[ $symbol( $environment) ](fg:#83a598 bg:color_bg3)]($style)'
[pixi]
style = "bg:color_bg3"
format = '[[ $symbol( $version)( $environment) ](fg:color_fg0 bg:color_bg3)]($style)'
[time]
disabled = false
time_format = "%R"
style = "bg:color_bg1"
format = '[[  $time ](fg:color_fg0 bg:color_bg1)]($style)'
[line_break]
disabled = false
[character]
disabled = false
success_symbol = '[](bold fg:color_green)'
error_symbol = '[](bold fg:color_red)'
vimcmd_symbol = '[](bold fg:color_green)'
vimcmd_replace_one_symbol = '[](bold fg:color_purple)'
vimcmd_replace_symbol = '[](bold fg:color_purple)'
vimcmd_visual_symbol = '[](bold fg:color_yellow)'

119
tmux/.tmux.conf Normal file
View File

@@ -0,0 +1,119 @@
# Configure Tmux
set -g status-position top
set -g status-style "bg=#{@thm_bg}"
set -g status-justify "absolute-centre"
set -g prefix ^A
set -g base-index 1 # start indexing windows at 1 instead of 0
set -g detach-on-destroy off # don't exit from tmux when closing a session
set -g escape-time 0 # zero-out escape time delay
set -g history-limit 1000000 # increase history size (from 2,000)
set -g renumber-windows on # renumber all windows when any window is closed
set -g set-clipboard on # use system clipboard
setw -g mode-keys vi
setw -g mouse on
if-shell 'echo $TERM | grep -q "xterm-kitty"' \
'set -g default-terminal "kitty"; set -g terminal-overrides "xterm-kitty:Tc"'
if-shell 'grep -qi microsoft /proc/version' \
'set -g default-terminal "screen-256color"; set-option -sa terminal-overrides ",xterm-256color:RGB"'
set -g @plugin 'catppuccin/tmux'
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'tmux-plugins/tmux-online-status'
set -g @plugin 'tmux-plugins/tmux-battery'
#set -g @plugin 'sainnhe/tmux-fzf'
#set -g @plugin 'wfxr/tmux-fzf-url'
#set -g @plugin 'fcsonline/tmux-thumbs'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'omerxx/tmux-sessionx'
#set -g @plugin 'omerxx/tmux-floax'
# Configure sessionx
set -g @sessionx-bind 'o'
#set -g @sessionx-bind-zo-new-window 'ctrl-y'
#set -g @sessionx-auto-accept 'off'
#set -g @sessionx-custom-paths '/Users/omerxx/dotfiles'
#set -g @sessionx-bind 'o'
#set -g @sessionx-x-path '~/dotfiles'
set -g @sessionx-window-height '85%'
set -g @sessionx-window-width '75%'
set -g @sessionx-zoxide-mode 'on'
#set -g @sessionx-custom-paths-subdirectories 'false'
set -g @sessionx-filter-current 'false'
# Configure Continuum
set -g @continuum-restore 'on'
#set -g @continuum-boot 'on' # Break the ressurect in my setup by saving at boot
# Configure Resurrect
set -g @resurrect-strategy-nvim 'session'
set -g @resurrect-capture-pane-contents 'on'
set -g @resurrect-processes 'ssh btop nvim lazygit yazi aichat spotify_player'
# Yazi image preview
set -g allow-passthrough on
set -ga update-environment TERM
set -ga update-environment TERM_PROGRAM
# Configure Catppuccin
set -g @catppuccin_flavor "macchiato"
set -g @catppuccin_status_background "none"
set -g @catppuccin_window_status_style "none"
set -g @catppuccin_pane_status_enabled "off"
set -g @catppuccin_pane_border_status "off"
## Configure Online
set -g @online_icon "ok"
set -g @offline_icon "nok"
## Keybinds
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
## status left look and feel
set -g status-left-length 100
set -g status-left ""
set -ga status-left "#{?client_prefix,#{#[bg=#{@thm_red},fg=#{@thm_bg},bold]  #S },#{#[bg=#{@thm_bg},fg=#{@thm_green}]  #S }}"
set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_overlay_0},none]│"
set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_maroon}]  #{pane_current_command} "
set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_overlay_0},none]│"
set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_blue}]  #{=/-32/...:#{s|$USER|~|:#{b:pane_current_path}}} "
set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_overlay_0},none]#{?window_zoomed_flag,│,}"
set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_yellow}]#{?window_zoomed_flag,  zoom ,}"
## status right look and feel
set -g status-right-length 100
set -g status-right ""
set -ga status-right "#{?#{e|>=:10,#{battery_percentage}},#{#[bg=#{@thm_red},fg=#{@thm_bg}]},#{#[bg=#{@thm_bg},fg=#{@thm_pink}]}} #{battery_icon} #{battery_percentage} "
set -ga status-right "#[bg=#{@thm_bg},fg=#{@thm_overlay_0}, none]│"
set -ga status-right "#[bg=#{@thm_bg}]#{?#{==:#{online_status},ok},#[fg=#{@thm_mauve}] 󰖩 on ,#[fg=#{@thm_red},bold]#[reverse] 󰖪 off }"
set -ga status-right "#[bg=#{@thm_bg},fg=#{@thm_overlay_0}, none]│"
set -ga status-right "#[bg=#{@thm_bg},fg=#{@thm_blue}] 󰭦 %Y-%m-%d 󰅐 %H:%M "
# pane border look and feel
setw -g pane-border-status top
setw -g pane-border-format ""
setw -g pane-active-border-style "bg=#{@thm_bg},fg=#{@thm_overlay_0}"
setw -g pane-border-style "bg=#{@thm_bg},fg=#{@thm_surface_0}"
setw -g pane-border-lines single
# window look and feel
set -wg automatic-rename on
set -g automatic-rename-format "Window"
set -g window-status-format " #I#{?#{!=:#{window_name},Window},: #W,} "
set -g window-status-style "bg=#{@thm_bg},fg=#{@thm_rosewater}"
set -g window-status-last-style "bg=#{@thm_bg},fg=#{@thm_peach}"
set -g window-status-activity-style "bg=#{@thm_red},fg=#{@thm_bg}"
set -g window-status-bell-style "bg=#{@thm_red},fg=#{@thm_bg},bold"
set -gF window-status-separator "#[bg=#{@thm_bg},fg=#{@thm_overlay_0}]│"
set -g window-status-current-format " #I#{?#{!=:#{window_name},Window},: #W,} "
set -g window-status-current-style "bg=#{@thm_peach},fg=#{@thm_bg},bold"
run '/usr/share/tmux-plugin-manager/tpm'
run '~/.tmux/plugins/catppuccin/tmux/catppuccin.tmux'

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 995 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1008 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 923 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

View File

@@ -0,0 +1,34 @@
{
// load modules
"include": "~/.config/waybar/modules.json",
// general settings
"position": "top",
"margin-top": 8,
"margin-bottom": 0,
"layer": "top",
"margin-left": 8,
"margin-right": 8,
"spacing": 10,
"fixed-center": true,
"exclusive": true,
// modules
"modules-left": [
"hyprland/workspaces",
"wlr/taskbar"
],
"modules-center": [
"clock"
],
"modules-right": [
"group/hardware",
"pulseaudio",
"bluetooth",
"network",
"battery",
"custom/exit"
]
}

11
waybar/.config/waybar/launch.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# terminate running instances
killall -q waybar
# wait until processes have been shut down
while pgrep -x waybar >/dev/null; do sleep 0.1; done
# launch main
waybar -c ~/.config/waybar/config.jsonc & -s ~/.config/waybar/style.css

View File

@@ -0,0 +1,26 @@
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;

View File

@@ -0,0 +1,161 @@
{
// workspaces
"hyprland/workspaces" : {
"on-click": "activate",
"active-only": true,
"all-outputs": true,
"format": "{}",
"format-icons": {
"urgent": "",
"active": "",
"default": ""
},
"persistent-workspaces": {
"*": 5
},
},
// taskbar
"wlr/taskbar": {
"format": "{icon}",
"icon-size": 18,
"tooltip-format": "{title}",
"on-click": "activate",
"on-click-middle": "close",
},
// clock
"clock": {
"interval": 1,
"format": "{:%A, %B %d - %H:%M}",
//"format": "{:%I:%M %p}", // AM PM format
"format-alt": "{:%H:%M}",
"tooltip-format": "<big>{calendar}</big>",
"calendar": {
"mode": "month",
"mode-mon-col": 3,
"weeks-pos": "right",
"on-scroll": 1,
"format": {
"months": "<span color='#ffffff'><b>{}</b></span>",
"days": "<span color='#ffffff'><b>{}</b></span>",
"weeks": "<span color='#ffffff'><b>W{}</b></span>",
"weekdays": "<span color='#ffffff'><b>{}</b></span>",
"today": "<span color='#ffffff'><b><u>{}</u></b></span>"
}
}
},
// hardware
"group/hardware": {
"orientation": "inherit",
"drawer": {
"transition-duration": 300,
"children-class": "not-memory",
"transition-left-to-right": false
},
"modules": [
"custom/system",
"cpu",
"temperature",
"disk",
"memory"
]
},
// system
"custom/system": {
"format": "<span size='small'>  </span>",
"tooltip": false
},
// CPU
"cpu": {
"format": " 󰍛 {usage}% ",
"on-click": "kitty btop"
},
// temperature
"temperature": {
"format": " 󰈸 {temperatureC}°C ",
"on-click": "kitty btop"
},
// harddisc space
"disk": {
"interval": 30,
"format": " 󰋊 {percentage_used}% ",
"path": "/",
"on-click": "kitty btop"
},
// memory
"memory": {
"format": "  {}% ",
"on-click": "kitty btop"
},
// audio
"pulseaudio": {
"scroll-step": 1,
"format": "{icon} {volume}%",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": "󰖁 {icon} {format_source}",
"format-muted": "󰖁 {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"phone": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pwvucontrol"
},
// bluetooth
"bluetooth": {
"format": " {status}",
"format-disabled": " {status}",
"format-off": " {status}",
"interval": 30,
"on-click": "kitty bluetuith",
"format-no-controller": ""
},
// network
"network": {
"format": "{ifname}",
"format-wifi": " {signalStrength}%",
"format-ethernet": "󰌘 {ifname}",
"format-disconnected": "disconnected",
"tooltip-format": "󰌘 {ifname} via {gwaddri}",
"tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\n {bandwidthUpBits}  {bandwidthDownBits}",
"tooltip-format-ethernet": "󰌘 {ifname}\nIP: {ipaddr}\n  {bandwidthUpBits}  {bandwidthDownBits}",
"tooltip-format-disconnected": "disconnected",
"max-length": 50,
"on-click": "kitty nmtui"
//"on-click": "~/dotfiles/.settings/networkmanager.sh"
},
// battery
"battery": {
"states": {
"good": 95,
"warning": 30,
"critical": 10
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": ["", "", "", "", ""],
"on-click": "kitty sudo auto-cpufreq --monitor"
},
// power menu
"custom/exit": {
"format": "",
"on-click": "wlogout -b 2",
"tooltip": false
},
}

View File

@@ -0,0 +1,261 @@
/* pywal colors */
@import "../../.cache/wal/colors-waybar.css";
@define-color ws @color4;
@define-color tt @color1;
@define-color clock @color3;
@define-color set @color4;
@define-color tb rgba(200,200,200,0.2);
@define-color tbh @color5;
@define-color text #FFFFFF;
/* general */
* {
font-family: "JetBrainsMono Nerd Font";
border: none;
border-radius: 5px;
}
window#waybar {
background-color: rgba(0,0,0,0.4); /* r, g, b, a(transparency) */
transition-property: background-color;
transition-duration: .5s;
}
/* workspaces */
#workspaces {
margin: 4px 1px 4px 1px;
padding: 0px 0px;
border-radius: 5px;
border: 0px;
font-weight: normal;
font-style: normal;
font-size: 16px;
color: @text;
opacity: 0.9;
}
#workspaces button {
margin: 0px 2px;
padding: 0px 5px;
color: @text;
transition: all 0.3s ease-in-out;
}
#workspaces button.active {
color: @text;
background: @ws;
transition: all 0.3s ease-in-out;
opacity: 0.9;
}
#workspaces button:hover {
color: @text;
background: @ws;
opacity: 0.9;
border: none;
box-shadow: none;
}
/* taskbar */
#taskbar {
background: @tb;
margin: 4px 15px 4px 1px;
padding: 0px;
}
#taskbar button {
margin: 0px 1px;
border-radius: 5px;
padding: 0px 5px;
}
#taskbar button:hover {
background: @tbh;
opacity: 1;
border: none;
box-shadow: none;
}
/* tooltip */
tooltip {
border-radius: 5px;
background-color: @tt;
opacity: 0.8;
}
tooltip label {
border-radius: 5px;
background-color: @tt;
opacity: 0.8;
padding: 0px;
margin: -5px 0px;
font-size: 12px;
color: @text;
}
/* modules */
.modules-left > widget:first-child > #workspaces {
margin-left: 10;
}
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
/* clock */
#clock {
background-color: @clock;
font-size: 16px;
color: @text;
border-radius: 5px;
padding: 1px 10px 0px 10px;
margin: 4px 1px;
opacity: 0.9;
border: none;
}
/* hardware group */
#cpu,#temperature,#disk,#memory {
margin: 0px;
padding: 0px;
font-size: 16px;
color: @text;
}
/* audio */
#pulseaudio {
background-color: @set;
font-size: 16px;
color: @text;
border-radius: 5px;
padding: 1px 10px 0px 10px;
margin: 4px 1px 4px -15px;
opacity: 0.9;
}
/* network */
#network {
background-color: @set;
font-size: 16px;
color: @text;
border-radius: 5px;
padding: 1px 10px 0px 10px;
margin: 4px 1px;
opacity: 0.9;
}
#network.ethernet {
background-color: @set;
color: @text;
}
#network.wifi {
background-color: @set;
color: @text;
}
/* bluetooth */
#bluetooth, #bluetooth.on, #bluetooth.connected, #bluetooth.off {
background-color: @set;
font-size: 16px;
color: @text;
border-radius: 5px;
padding: 1px 10px 0px 10px;
margin: 4px 1px;
opacity: 0.9;
}
/* battery */
#battery {
background-color: @set;
font-size: 16px;
color: @text;
border-radius: 5px;
padding: 1px 10px 0px 10px;
margin: 4px 1px;
opacity: 0.9;
}
#battery.charging, #battery.plugged {
color: @text;
background-color: @set;
}
@keyframes blink {
to {
background-color: @set;
color: @text;
}
}
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: @text;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
/* tray */
#tray {
padding: 0px 15px 0px 0px;
color: @text;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
}
/* custom modules */
#custom-exit {
margin: 0px 18px 0px 5px;
padding: 0px;
font-size: 20px;
color: @text;
}
#custom-system {
margin-right: 15px;
font-size: 20px;
font-weight: bold;
opacity: 0.8;
color: @text;
}
#custom-settings {
margin-right: 0px;
font-size: 20px;
font-weight: bold;
opacity: 0.8;
color: @text;
}
#custom-updates {
background-color: @set;
font-size: 16px;
color: @text;
border-radius: 5px;
padding: 2px 10px 0px 10px;
margin: 8px 15px 8px 0px;
opacity:0.8;
}
#custom-updates.green {
background-color: @set;
}
#custom-updates.yellow {
background-color: #ff9a3c;
color: #FFFFFF;
}
#custom-updates.red {
background-color: #dc2f2f;
color: #FFFFFF;
}

View File

@@ -0,0 +1,13 @@
[Unit]
Description=Whisper Combined Audio Setup
After=pipewire.service wireplumber.service
Requires=pipewire.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c 'pw-cli create-node adapter "{ factory.name=support.null-audio-sink node.name=whisper-combined node.description=\\"Whisper Combined Audio\\" media.class=Audio/Sink audio.channels=2 audio.position=[FL,FR] }" && sleep 2 && pw-loopback -P @DEFAULT_SINK@ -C whisper-combined --latency=1024 & pw-loopback -P @DEFAULT_SOURCE@ -C whisper-combined --latency=1024 &'
ExecStop=/bin/bash -c 'pkill -f "pw-loopback.*whisper-combined"'
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,63 @@
{
"wireplumber.components": [
{
"name": "whisper-combined-setup",
"type": "virtual-item/item",
"provides": "virtual-item"
}
],
"wireplumber.settings": {
"node.rules": [
{
"matches": [
{
"node.name": "whisper-combined"
}
],
"actions": {
"update-props": {
"node.description": "Whisper Combined Audio",
"media.class": "Audio/Sink"
}
}
}
]
},
"context.objects": [
{
"factory": "adapter",
"args": {
"factory.name": "support.null-audio-sink",
"node.name": "whisper-combined",
"node.description": "Whisper Combined Audio",
"media.class": "Audio/Sink",
"audio.channels": 2,
"audio.position": "[ FL FR ]"
}
},
{
"factory": "adapter",
"args": {
"factory.name": "support.null-audio-sink",
"node.name": "whisper-speaker-loopback",
"node.description": "Speaker to Whisper Loopback",
"media.class": "Stream/Output/Audio",
"audio.channels": 2,
"stream.capture.sink": "@DEFAULT_SINK@",
"stream.playback.sink": "whisper-combined"
}
},
{
"factory": "adapter",
"args": {
"factory.name": "support.null-audio-sink",
"node.name": "whisper-mic-loopback",
"node.description": "Mic to Whisper Loopback",
"media.class": "Stream/Output/Audio",
"audio.channels": 2,
"stream.capture.sink": "@DEFAULT_SOURCE@",
"stream.playback.sink": "whisper-combined"
}
}
]
}

4
wofi/.config/wofi/config Normal file
View File

@@ -0,0 +1,4 @@
key_up=Ctrl-k
key_down=Ctrl-j
key_left=Ctrl-h
key_right=Ctrl-l

107
wofi/.config/wofi/style.css Normal file
View File

@@ -0,0 +1,107 @@
@import ".cache/wal/colors-waybar.css";
@define-color txt @color7;
@define-color bg @color0;
@define-color bg2 @color4;
@define-color bginput @color9;
@define-color accent @color11;
* {
font-family: 'JetBrains Mono Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 1px solid @accent;
border-radius: 5px;
background-color: @bg;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @bg;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @bg;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
}
/* Input */
#input {
margin: 5px;
padding: 10px;
border: none;
color: @accent;
background-color: @bginput;
animation: fadeIn 0.5s ease-in-out both;
}
/* Text */
#text {
margin: 5px;
padding: 10px;
border: none;
color: @txt;
animation: fadeIn 0.5s ease-in-out both;
}
/* Selected Entry */
/*
#entry:selected {
background-color: @accent;
border-radius: 5px;
}
*/
#entry:selected {
background: @bg2;
border-radius: 5px;
font-weight: bold;
}
#entry:selected #text {
color: @txt;
}

View File

@@ -0,0 +1,3 @@
[[mgr.prepend_keymap]]
on = "M"
run = "plugin mount"

View File

@@ -0,0 +1,3 @@
[[manager.prepend_keymap]]
on = "M"
run = "plugin mount"

View File

@@ -0,0 +1,7 @@
[[plugin.deps]]
use = "yazi-rs/plugins:mount"
rev = "cb6165b"
hash = "dd97eede8e20e59cd2604e8006e470e2"
[flavor]
deps = []

222
yazi/.config/yazi/yazi.toml Normal file
View File

@@ -0,0 +1,222 @@
# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
[mgr]
ratio = [ 1, 4, 3 ]
sort_by = "alphabetical"
sort_sensitive = false
sort_reverse = false
sort_dir_first = true
sort_translit = false
linemode = "none"
show_hidden = true
show_symlink = true
scrolloff = 5
mouse_events = [ "click", "scroll" ]
title_format = "Yazi: {cwd}"
[preview]
wrap = "no"
tab_size = 2
max_width = 600
max_height = 900
cache_dir = ""
image_delay = 30
image_filter = "triangle"
image_quality = 75
sixel_fraction = 15
ueberzug_scale = 1
ueberzug_offset = [ 0, 0, 0, 0 ]
[opener]
edit = [
{ run = '$EDITOR "$@"', desc = "$EDITOR", block = true, for = "unix" },
{ run = 'code %*', orphan = true, desc = "code", for = "windows" },
{ run = 'code -w %*', block = true, desc = "code (block)", for = "windows" },
]
open = [
{ run = 'xdg-open "$1"', desc = "Open", for = "linux" },
{ run = 'open "$@"', desc = "Open", for = "macos" },
{ run = 'start "" "%1"', orphan = true, desc = "Open", for = "windows" },
{ run = 'termux-open "$1"', desc = "Open", for = "android" },
]
reveal = [
{ run = 'xdg-open "$(dirname "$1")"', desc = "Reveal", for = "linux" },
{ run = 'open -R "$1"', desc = "Reveal", for = "macos" },
{ run = 'explorer /select,"%1"', orphan = true, desc = "Reveal", for = "windows" },
{ run = 'termux-open "$(dirname "$1")"', desc = "Reveal", for = "android" },
{ run = '''exiftool "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show EXIF", for = "unix" },
]
extract = [
{ run = 'ya pub extract --list "$@"', desc = "Extract here", for = "unix" },
{ run = 'ya pub extract --list %*', desc = "Extract here", for = "windows" },
]
play = [
{ run = 'mpv --force-window "$@"', orphan = true, for = "unix" },
{ run = 'mpv --force-window %*', orphan = true, for = "windows" },
{ run = '''mediainfo "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show media info", for = "unix" },
]
[open]
rules = [
# Folder
{ name = "*/", use = [ "edit", "open", "reveal" ] },
# Text
{ mime = "text/*", use = [ "edit", "reveal" ] },
# Image
{ mime = "image/*", use = [ "open", "reveal" ] },
# Media
{ mime = "{audio,video}/*", use = [ "play", "reveal" ] },
# Archive
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", use = [ "extract", "reveal" ] },
# JSON
{ mime = "application/{json,ndjson}", use = [ "edit", "reveal" ] },
{ mime = "*/javascript", use = [ "edit", "reveal" ] },
# Empty file
{ mime = "inode/empty", use = [ "edit", "reveal" ] },
# Fallback
{ name = "*", use = [ "open", "reveal" ] },
]
[tasks]
micro_workers = 10
macro_workers = 10
bizarre_retry = 3
image_alloc = 536870912 # 512MB
image_bound = [ 0, 0 ]
suppress_preload = false
[plugin]
fetchers = [
# Mimetype
{ id = "mime", name = "*", run = "mime", prio = "high" },
]
z = "zoxide query {args}"
spotters = [
{ name = "*/", run = "folder" },
# Code
{ mime = "text/*", run = "code" },
{ mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" },
# Image
{ mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
{ mime = "image/*", run = "image" },
# Video
{ mime = "video/*", run = "video" },
# Fallback
{ name = "*", run = "file" },
]
preloaders = [
# Image
{ mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
{ mime = "image/*", run = "image" },
# Video
{ mime = "video/*", run = "video" },
# PDF
{ mime = "application/pdf", run = "pdf" },
# Font
{ mime = "font/*", run = "font" },
{ mime = "application/ms-opentype", run = "font" },
]
previewers = [
{ name = "*/", run = "folder", sync = true },
# Code
{ mime = "text/*", run = "code" },
{ mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" },
# JSON
{ mime = "application/{json,ndjson}", run = "json" },
# Image
{ mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
{ mime = "image/*", run = "image" },
# Video
{ mime = "video/*", run = "video" },
# PDF
{ mime = "application/pdf", run = "pdf" },
# Archive
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", run = "archive" },
{ mime = "application/{debian*-package,redhat-package-manager,rpm,android.package-archive}", run = "archive" },
{ name = "*.{AppImage,appimage}", run = "archive" },
# Virtual Disk / Disk Image
{ mime = "application/{iso9660-image,qemu-disk,ms-wim,apple-diskimage}", run = "archive" },
{ mime = "application/virtualbox-{vhd,vhdx}", run = "archive" },
{ name = "*.{img,fat,ext,ext2,ext3,ext4,squashfs,ntfs,hfs,hfsx}", run = "archive" },
# Font
{ mime = "font/*", run = "font" },
{ mime = "application/ms-opentype", run = "font" },
# Empty file
{ mime = "inode/empty", run = "empty" },
# Fallback
{ name = "*", run = "file" },
]
[input]
cursor_blink = false
# cd
cd_title = "Change directory:"
cd_origin = "top-center"
cd_offset = [ 0, 2, 50, 3 ]
# create
create_title = [ "Create:", "Create (dir):" ]
create_origin = "top-center"
create_offset = [ 0, 2, 50, 3 ]
# rename
rename_title = "Rename:"
rename_origin = "hovered"
rename_offset = [ 0, 1, 50, 3 ]
# filter
filter_title = "Filter:"
filter_origin = "top-center"
filter_offset = [ 0, 2, 50, 3 ]
# find
find_title = [ "Find next:", "Find previous:" ]
find_origin = "top-center"
find_offset = [ 0, 2, 50, 3 ]
# search
search_title = "Search via {n}:"
search_origin = "top-center"
search_offset = [ 0, 2, 50, 3 ]
# shell
shell_title = [ "Shell:", "Shell (block):" ]
shell_origin = "top-center"
shell_offset = [ 0, 2, 50, 3 ]
[confirm]
# trash
trash_title = "Trash {n} selected file{s}?"
trash_origin = "center"
trash_offset = [ 0, 0, 70, 20 ]
# delete
delete_title = "Permanently delete {n} selected file{s}?"
delete_origin = "center"
delete_offset = [ 0, 0, 70, 20 ]
# overwrite
overwrite_title = "Overwrite file?"
overwrite_content = "Will overwrite the following file:"
overwrite_origin = "center"
overwrite_offset = [ 0, 0, 50, 15 ]
# quit
quit_title = "Quit?"
quit_content = "The following tasks are still running, are you sure you want to quit?"
quit_origin = "center"
quit_offset = [ 0, 0, 50, 15 ]
[pick]
open_title = "Open with:"
open_origin = "hovered"
open_offset = [ 0, 1, 50, 7 ]
[which]
sort_by = "none"
sort_sensitive = false
sort_reverse = false
sort_translit = false

View File

@@ -0,0 +1,222 @@
# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
[manager]
ratio = [ 1, 4, 3 ]
sort_by = "alphabetical"
sort_sensitive = false
sort_reverse = false
sort_dir_first = true
sort_translit = false
linemode = "none"
show_hidden = true
show_symlink = true
scrolloff = 5
mouse_events = [ "click", "scroll" ]
title_format = "Yazi: {cwd}"
[preview]
wrap = "no"
tab_size = 2
max_width = 600
max_height = 900
cache_dir = ""
image_delay = 30
image_filter = "triangle"
image_quality = 75
sixel_fraction = 15
ueberzug_scale = 1
ueberzug_offset = [ 0, 0, 0, 0 ]
[opener]
edit = [
{ run = '$EDITOR "$@"', desc = "$EDITOR", block = true, for = "unix" },
{ run = 'code %*', orphan = true, desc = "code", for = "windows" },
{ run = 'code -w %*', block = true, desc = "code (block)", for = "windows" },
]
open = [
{ run = 'xdg-open "$1"', desc = "Open", for = "linux" },
{ run = 'open "$@"', desc = "Open", for = "macos" },
{ run = 'start "" "%1"', orphan = true, desc = "Open", for = "windows" },
{ run = 'termux-open "$1"', desc = "Open", for = "android" },
]
reveal = [
{ run = 'xdg-open "$(dirname "$1")"', desc = "Reveal", for = "linux" },
{ run = 'open -R "$1"', desc = "Reveal", for = "macos" },
{ run = 'explorer /select,"%1"', orphan = true, desc = "Reveal", for = "windows" },
{ run = 'termux-open "$(dirname "$1")"', desc = "Reveal", for = "android" },
{ run = '''exiftool "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show EXIF", for = "unix" },
]
extract = [
{ run = 'ya pub extract --list "$@"', desc = "Extract here", for = "unix" },
{ run = 'ya pub extract --list %*', desc = "Extract here", for = "windows" },
]
play = [
{ run = 'mpv --force-window "$@"', orphan = true, for = "unix" },
{ run = 'mpv --force-window %*', orphan = true, for = "windows" },
{ run = '''mediainfo "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show media info", for = "unix" },
]
[open]
rules = [
# Folder
{ name = "*/", use = [ "edit", "open", "reveal" ] },
# Text
{ mime = "text/*", use = [ "edit", "reveal" ] },
# Image
{ mime = "image/*", use = [ "open", "reveal" ] },
# Media
{ mime = "{audio,video}/*", use = [ "play", "reveal" ] },
# Archive
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", use = [ "extract", "reveal" ] },
# JSON
{ mime = "application/{json,ndjson}", use = [ "edit", "reveal" ] },
{ mime = "*/javascript", use = [ "edit", "reveal" ] },
# Empty file
{ mime = "inode/empty", use = [ "edit", "reveal" ] },
# Fallback
{ name = "*", use = [ "open", "reveal" ] },
]
[tasks]
micro_workers = 10
macro_workers = 10
bizarre_retry = 3
image_alloc = 536870912 # 512MB
image_bound = [ 0, 0 ]
suppress_preload = false
[plugin]
fetchers = [
# Mimetype
{ id = "mime", name = "*", run = "mime", prio = "high" },
]
z = "zoxide query {args}"
spotters = [
{ name = "*/", run = "folder" },
# Code
{ mime = "text/*", run = "code" },
{ mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" },
# Image
{ mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
{ mime = "image/*", run = "image" },
# Video
{ mime = "video/*", run = "video" },
# Fallback
{ name = "*", run = "file" },
]
preloaders = [
# Image
{ mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
{ mime = "image/*", run = "image" },
# Video
{ mime = "video/*", run = "video" },
# PDF
{ mime = "application/pdf", run = "pdf" },
# Font
{ mime = "font/*", run = "font" },
{ mime = "application/ms-opentype", run = "font" },
]
previewers = [
{ name = "*/", run = "folder", sync = true },
# Code
{ mime = "text/*", run = "code" },
{ mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" },
# JSON
{ mime = "application/{json,ndjson}", run = "json" },
# Image
{ mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
{ mime = "image/*", run = "image" },
# Video
{ mime = "video/*", run = "video" },
# PDF
{ mime = "application/pdf", run = "pdf" },
# Archive
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", run = "archive" },
{ mime = "application/{debian*-package,redhat-package-manager,rpm,android.package-archive}", run = "archive" },
{ name = "*.{AppImage,appimage}", run = "archive" },
# Virtual Disk / Disk Image
{ mime = "application/{iso9660-image,qemu-disk,ms-wim,apple-diskimage}", run = "archive" },
{ mime = "application/virtualbox-{vhd,vhdx}", run = "archive" },
{ name = "*.{img,fat,ext,ext2,ext3,ext4,squashfs,ntfs,hfs,hfsx}", run = "archive" },
# Font
{ mime = "font/*", run = "font" },
{ mime = "application/ms-opentype", run = "font" },
# Empty file
{ mime = "inode/empty", run = "empty" },
# Fallback
{ name = "*", run = "file" },
]
[input]
cursor_blink = false
# cd
cd_title = "Change directory:"
cd_origin = "top-center"
cd_offset = [ 0, 2, 50, 3 ]
# create
create_title = [ "Create:", "Create (dir):" ]
create_origin = "top-center"
create_offset = [ 0, 2, 50, 3 ]
# rename
rename_title = "Rename:"
rename_origin = "hovered"
rename_offset = [ 0, 1, 50, 3 ]
# filter
filter_title = "Filter:"
filter_origin = "top-center"
filter_offset = [ 0, 2, 50, 3 ]
# find
find_title = [ "Find next:", "Find previous:" ]
find_origin = "top-center"
find_offset = [ 0, 2, 50, 3 ]
# search
search_title = "Search via {n}:"
search_origin = "top-center"
search_offset = [ 0, 2, 50, 3 ]
# shell
shell_title = [ "Shell:", "Shell (block):" ]
shell_origin = "top-center"
shell_offset = [ 0, 2, 50, 3 ]
[confirm]
# trash
trash_title = "Trash {n} selected file{s}?"
trash_origin = "center"
trash_offset = [ 0, 0, 70, 20 ]
# delete
delete_title = "Permanently delete {n} selected file{s}?"
delete_origin = "center"
delete_offset = [ 0, 0, 70, 20 ]
# overwrite
overwrite_title = "Overwrite file?"
overwrite_content = "Will overwrite the following file:"
overwrite_origin = "center"
overwrite_offset = [ 0, 0, 50, 15 ]
# quit
quit_title = "Quit?"
quit_content = "The following tasks are still running, are you sure you want to quit?"
quit_origin = "center"
quit_offset = [ 0, 0, 50, 15 ]
[pick]
open_title = "Open with:"
open_origin = "hovered"
open_offset = [ 0, 1, 50, 7 ]
[which]
sort_by = "none"
sort_sensitive = false
sort_reverse = false
sort_translit = false

1
yazi/.stow-local-ignore Normal file
View File

@@ -0,0 +1 @@
\.config/yazi/plugins

123
zsh/.zshrc Normal file
View File

@@ -0,0 +1,123 @@
# NO FUCKING BEEP
unsetopt BEEP
# Run pywal only on WSL
if grep -qE "(Microsoft|WSL)" /proc/version &> /dev/null && [ -z "$TMUX" ]; then
cat ~/.cache/wal/sequences
clear
fi
# hledger
export LEDGER_FILE=~/ExoKortex/2-Areas/Finances/finance_vault/tpouplier.hledger
# emacs client
alias emacs="emacsclient -c -a emacs"
# Opencode
alias oc="opencode"
# Yazi
alias y="yazi"
function yy() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
yazi "$@" --cwd-file="$tmp"
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
cd -- "$cwd"
fi
rm -f -- "$tmp"
}
# nvim
export LANG=en_CA.UTF-8
export LC_ALL=en_CA.UTF-8
export EDITOR="nvim"
# Set up fzf key bindings and fuzzy completion
source <(fzf --zsh)
# Capitalization fixing in tab completion
autoload -Uz compinit && compinit
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
# bat
alias cat=bat
# aichat
alias ai="aichat"
alias aido="aichat -e"
aitts() {
paplay --raw --rate=22050 --format=s16le --channels=1 <(aichat "Answer only with speech. Your answer will be read outlound. No title, no bold or no special character. Only the short and direct answer. $*" | piper-tts --model en_US-amy-medium.onnx --output-raw)
}
# tmux
alias t='tmux attach || tmux new'
# Docker
alias dco="docker compose"
alias dps="docker ps"
alias dpa="docker ps -a"
alias dl="docker ps -l -q"
alias dx="docker exec -it"
# cd
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias ......="cd ../../../../.."
# Git
alias gc="git commit -m"
alias gca="git commit -a -m"
alias gp="git push origin HEAD"
alias gpu="git pull origin"
alias gst="git status"
alias glog="git log --graph --topo-order --pretty='%w(100,0,6)%C(yellow)%h%C(bold)%C(black)%d %C(cyan)%ar %C(green)%an%n%C(bold)%C(white)%s %N' --abbrev-commit"
alias gdiff="git diff"
alias gco="git checkout"
alias gb='git branch'
alias gba='git branch -a'
alias gadd='git add'
alias ga='git add -p'
alias gcoall='git checkout -- .'
alias gr='git remote'
alias gre='git reset'
alias gcl='git clone'
# lazygit
alias lg="lazygit"
# NVIM
alias v="nvim"
# Eza
alias l="eza -l --icons --git -a"
alias lt="eza --tree --level=2 --icons --git"
alias ltree="eza --tree --level=2 --long --icons --git"
# navigation
function cx() { cd "$@" && l; }
function fcd() { cd "$(find . -type d -not -path '' | fzf)" && l; }
#function f() { echo "$(find . -type f -not -path '*/.*' | fzf)" | pbcopy }
function fv() { nvim "$(find . -type f -not -path '*/.*' | fzf)" }
# Command history
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory
# Starship
eval "$(starship init zsh)"
# Zoxide
eval "$(zoxide init zsh)"
# hyprshot
export HYPRSHOT_DIR="Images"
# direnv
# eval "$(direnv hook zsh)"
# Atuin
#eval "$(atuin init zsh)"