This repository contains all my dotfiles managed by chezmoi. Please note that this is my own personal dotfiles. Stuffs may change without further notice and this README can get outdated.
I use fisher as my plugin manager. These are the plugins I'm using:
To update fish plugins, type in fisher update
in terminal.
To install or remove fish plugins, you can run fisher
command.
I use packer.nvim as my plugin manager. These are the plugins I'm using:
- ansible-vim
- better-escape.nvim
- chezmoi.vim
- colorizer.lua
- Comment.nvim
- FTerm.nvim
- fzf-lua
- Indent Blankline
- lspconfig
- lualine.nvim
- LuaSnip
- nvim-autopairs
- tokyonight.nvim
- nvim-cmp
- null-ls.nvim
- mason.nvim
- mason-tool-installer.nvim
- lir.nvim
- nvim-treesitter
- nvim-ts-autotag
- nvim-surround
- trouble
- presence.nvim
- gitsigns.nvim
- b64.nvim
To update Neovim plugins, do :PackerSync
in your nvim.
Note: You need Neovim version >=0.7.0
You need to have these packages installed in your system if you want to set up:
For Sway:
waybar
grim
slurp
swayidle
python-i3ipc
rofi (optional)
nwg-dock (optional)
For i3
py3status
scrot
i3lock
picom (optional)
rofi (optional)
xfce4-panel (optional)
For Fish:
fish
git
fd
bat
chsh
fzf
zoxide
curl/wget
exa
For Neovim:
nvim
git
curl
npm
fzf
unzip
Starship and Lualine requires powerline fonts to work. I suggest Nerd-fonts. The font in the screenshot above is using UbuntuMono Nerd Font Regular. I also need Unifont installed in the system for some glyphs to work. Chezmoi will do this automatically for you.
Git clone this repository into your host machine:
git clone https://github.com/budimanjojo/dotfiles.git
Run install.sh:
./install.sh
Then do chezmoi init --apply budimanjojo
I use Super
and Alt
key for Sway/i3.
hjkl
keys are mapped to left
, down
, up
, right
arrow keys.
S
means Super key, [0-9] means number key 0 to 9.
Keypress | Description |
---|---|
S+t |
Open terminal app |
S+w |
Open browser |
S+f |
Open file manager |
S+g |
Open GIMP |
S+b |
Open OBS |
S+s |
Open Steam |
S+grave |
Open rofi apps menu |
S+Tab |
Open rofi opened apps menu |
Alt+F4 |
Close window |
S+F4 |
Close window |
Alt+k |
Change focus to window above |
Alt+j |
Change focus to window below |
Alt+h |
Change focus to left side window |
Alt+l |
Change focus to right side window |
Alt+Shift+k |
Move focused window up |
Alt+Shift+j |
Move focused window down |
Alt+Shift+h |
Move focused window left |
Alt+Shift+l |
Move focused window right |
Alt+Ctrl+h |
Split opened windows horizontally |
Alt+Ctrl+v |
Split opened windows vertically |
Alt+Ctrl+q |
Toggle opened windows split |
S+Tab |
Go to next workspace |
S+Shift+Tab |
Go to previous workspace |
Alt+Ctrl+t |
Toggle window border on/off |
Alt+Ctrl+g |
Toggle gaps on/off |
Alt+Ctrl+f |
Toggle fullscreen mode on/off |
Alt+Ctrl+s |
Change container layout to stacking |
Alt+Ctrl+w |
Change container layout to tabbed |
Alt+Ctrl+e |
Toggle split layout to horizontal/vertical |
S+Shift+Space |
Toggle window floating on/off |
S+Space |
Swap focus between tiling/floating window |
S+Shift+- |
Move current focused window to scratchpad |
S+- |
Show/hide scratchpad window |
S+[0-9] |
Go to workspace #[0-9] |
S+Shift+[0-9] |
Move focused window to workspace #[0-9] |
Alt+Shift+r |
Go to resize container mode |
Alt+Shift+g |
Go to resize gaps mode |
Alt+Ctrl+Del |
Go to logout mode |
Printscreen |
Go to screenshot mode |
S+Shift+c |
Reload Sway configuration |
S+Shift+e |
Exit Sway |
The prefix key is Space
.
You can override this using your custom .vimrc.local
file.
<Leader>
means you need to press prefix key first.
If they are not in the table, that means it's using the default Vim keybindings.
Mode | Keypress | Description |
---|---|---|
Normal | <Leader>w |
Save file |
Normal | <Leader>x |
Save file and quit |
Normal | <Leader>qq |
Quit |
Normal | <Leader>qa |
Force quit without saving |
Normal | <Leader>wq |
Save file and quit |
Normal | Y |
Yank from cursor to end of file |
Insert | ii |
Exit Insert mode |
Normal | K |
Move Up one paragraph |
Normal | J |
Move Down one paragraph |
Normal | H |
Move to the first character in line |
Normal | L |
Move to the last character in line |
Normal | Control+k |
Move to the split window above |
Normal | Control+j |
Move to the split window below |
Normal | Control+h |
Move to the left split window |
Normal | Control+l |
Move to the right split window |
Normal | <Leader>s |
Open new horizontal split window |
Normal | <Leader>v |
Open new vertical split window |
Insert | Control+k |
Move cursor Up |
Insert | Control+j |
Move cursor Down |
Insert | Control+h |
Move cursor Left |
Insert | Control+l |
Move cursor Right |
Normal | <Leader>tn |
Open new tab |
Normal | <Leader>td |
Close tab |
Normal | <Leader>th |
Go to previous tab |
Normal | <Leader>tl |
Go to next tab |
Normal | <Leader>te |
Open new tab with current buffer's path |
Normal | <Leader>hh |
Jump back to older cursor position |
Normal | <Leader>ll |
Jump forward to newer cursor position |
Normal/Visual | Tab |
Indent current line or selection |
Normal/Visual | Shift+Tab |
De-indent current line or selection |
Normal | <Leader>lr |
Restart LSP client |
Normal | <Leader>fz |
Open FzfLua |
Normal | <Leader>ff |
Open FzfLua to find files |
Normal | <Leader>fg |
Open FzfLua to live grep |
Normal | <Leader>fc |
Open FzfLua to see git commits |
Normal | <Leader>fb |
Open FzfLua to see opened buffers |
Normal | <Leader>fh |
Open FzfLua to find help |
Normal | <Leader>fk |
Open FzfLua to see keymappings |
Normal | <Leader>fe |
Open FzfLua to find lsp diagnostics |
Normal | <Leader>fr |
Open FzfLua to find lsp references |
Normal | <Leader>fd |
Open FzfLua to find lsp typedefs |
Normal | <Leader>xx |
Toggle Trouble |
Normal | <Leader>xr |
Toggle Trouble to find lsp references |
Normal | Control+f |
Toggle lir.nvim file manager |
Normal/Term | Control+t |
Toggle floating terminal |
Normal | <Leader>pp |
Format buffer with null-ls |
Visual | <Leader>pp |
Range format buffer with null-ls |
Normal | rn |
Do LSP buffer rename |
Normal | gd |
Do LSP buffer get definition |
Normal | gD |
Do LSP buffer get declaration |
Normal | gh |
Do LSP buffer get hover |
Normal | gr |
Do LSP buffer get references |
Normal | gi |
Do LSP buffer get implementation |
I override the default keybindings for Tmux to be more reasonable.
Prefix key is Alt+a
for local session and Alt+z
for nested session.
You can of course override this.
<prefix>
means you need to press prefix key first, <repeat>
means you don't need to press prefix key again after triggering it within repeat-time
set (default set to 1 second), <copy-mode>
means you must be in copy-mode first.
The table below lists all the keybindings set.
If they are not in the table, that means it's using the default Tmux keybindings.
Keypress | Description |
---|---|
<prefix>Alt+e |
Edit tmux.conf.local file and reload configuration after saving |
<prefix>Alt+r |
Reload tmux configuration |
<prefix>f |
Find session, window, pane from list |
<prefix>Alt+s |
Create new horizontal split window |
<prefix>Alt+v |
Create new vertical split window |
<prefix>r |
Rename current window |
<prefix>R |
Rename current session |
<prefix><repeat>k |
Move selection to pane above |
<prefix><repeat>j |
Move selection to pane below |
<prefix><repeat>h |
Move selection to left pane |
<prefix><repeat>l |
Move selection to right pane |
<prefix><repeat>> |
Swap to next pane |
<prefix><repeat>< |
Swap to previous pane |
<prefix><repeat>K |
Resize current pane upwards |
<prefix><repeat>J |
Resize current pane downwards |
<prefix><repeat>H |
Resize current pane to the left |
<prefix><repeat>L |
Resize current pane to the right |
<prefix><repeat>Alt+n |
Move selection to next window |
<prefix><repeat>Alt+p |
Move selection to previous window |
<prefix><repeat>Tab |
Move selection to next window |
<prefix>S |
Join current pane to selected window in horizontal split |
<prefix>V |
Join current pane to selected window in vertical split |
<prefix>x |
Close current pane |
<prefix>X |
Close current window |
<prefix>Alt+x |
Close all other windows |
<prefix>a |
Get into copy mode |
<prefix>p |
Paste copied text from last buffer |
<prefix>P |
Paste copied text from list |
<copy-mode>y |
Copy selected text |
<copy-mode>Y |
Copy the whole line of selected text |
<copy-mode>D |
Copy till the end of line from selected text |
I'm migrating my tmux to Zellij.
I mimicked my tmux configuration to work in zellij but not everything works the same.
Prefix key is Alt+a
, I use the "switch to normal mode" in zellij to achieve this.
<normal>
means you need to be in normal mode, <pane>
means pane mode, and so on.
The table below lists all the keybindings set.
Keypress | Description |
---|---|
<locked>Alt+a |
Swith to normal mode (act like prefix key in tmux) |
<normal>Alt+s |
Create new horizontal split window and back to locked mode |
<normal>Alt+v |
Create new vertical split window and back to locked mode |
<normal>r |
Switch to renametab mode |
<normal>h |
Move selection to left pane |
<normal>j |
Move selection to pane below |
<normal>k |
Move selection to pane above |
<normal>l |
Move selection to right pane |
<normal>> |
Move pane around |
<normal>H |
Resize current pane upwards |
<normal>J |
Resize current pane downwards |
<normal>H |
Resize current pane to the left |
<normal>L |
Resize current pane to the right |
<normal>Alt+n |
Go to next window |
<normal>Alt+p |
Go to previous window |
<normal>c |
Open new tab and back to locked mode |
<normal>x |
Close current pane and back to locked mode |
<normal>a |
Open pane with $EDITOR and back to locked mode |
<normal>Esc/' '/"\n" |
Switch back to locked mode |
<renametab>Alt+a |
Switch to normal mode |
<renametab>"\n" |
Switch to locked mode |
<renametab>Esc |
Confirm tab name and back to locked mode |