Skip to content

Latest commit

 

History

History
337 lines (291 loc) · 14.2 KB

README.md

File metadata and controls

337 lines (291 loc) · 14.2 KB

~/. my dotfiles ~/. 🏠 

> Managed with chezmoi 🤖 

📖  Overview

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.

📷  Screenshots

Sway sway

Tmux tmux

Fish prompt fish

Neovim nvim1 nvim2

📁  Included Plugins

🐟  Fish

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.

📝  Neovim

I use packer.nvim as my plugin manager. These are the plugins I'm using:

To update Neovim plugins, do :PackerSync in your nvim. Note: You need Neovim version >=0.7.0

📦  Dependencies

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

🔡  Fonts

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.

📥  Installation

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

📜  Cheatsheet

Sway/i3 keybindings

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

Neovim keybindings

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

Tmux keybindings

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

Zellij keybindings

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