This is my personal dotfiles repository. It contains all the configuration files for my system.
I'm using the Colemak layout, so I have to change some keybindings in some programs like tmux, vim, vscode, etc.
Everything is based on vim navigation. Usually, you can navigate through the files with hjkl keys, but I've changed it for hnei keys. This because the Colemak layout has the h key in the same position, the j key is in the n position, the k key is in the e position and the l key is in the i position.
Note: All the keys were mapped to the Colemak layout, this means that the
fkey (find char) is in thetposition, thedkey (delete char) is in thesposition, etc.
Yep, it's a little bit confusing π€―, but it's very useful when you're using the Colemak layout and/or you want easily switch to the qwerty layout.
The vim configuration is really basic. It contains just the basic Colemak keybindings and some general configurations.
$ git clone https://github.com/mateonunez/dotfiles ~/.somewhere
$ ln -s ~/.somewhere/.vimrc ~/.vimrcPlease backup your
~/.vimrcfile before running the previous command.
Create the swap and undo directories
$ mkdir ~/.vim/swap
$ mkdir ~/.vim/undoI really love tmux, it's a great tool for managing your terminal sessions. I've created a basic configuration file for it, based on oh-my-tmux and of course, with the Colemak keybindings (it uses the vi navigation to walk on the file).
Prefix key:
Ctrl + a
The panel navigation follows my default Colemak keybindings, so you can navigate through the panels with hnei keys.
- Focus right panel:
Ctrl + a + i - Focus left panel:
Ctrl + a + h - Focus top panel:
Ctrl + a + n - Focus bottom panel:
Ctrl + a + e
Also, you can resize the panels with HNEI keys.
- Resize to the right:
Ctrl + a + Shift + i (or I) - Resize to the left:
Ctrl + a + Shift + h (or H) - Resize to the top:
Ctrl + a + Shift + n (or N) - Resize to the bottom:
Ctrl + a + Shift + e (or E)
The copy mode is based on the vi navigation, so you can navigate through the text with hnei keys.
Requirements:
- On Linux:
xclippackage andreattach-to-user-namespace. - On macOS:
pbcopypackage. - On Windows: Who knows.
For Linux and macOS, you can install the
reattach-to-user-namespacepackage withbrew install reattach-to-user-namespaceorsudo apt install reattach-to-user-namespaceand switch to the right program in the configuration file.
To trigger the copy mode, you have to press Ctrl + a + [. Then, you can navigate through the text with hnei keys and select the text with v key. Once you've selected the text, you can copy it with:
- j (y in qwerty): copy to the clipboard.
- Ctrl + c: copy to the clipboard and exit the copy mode.
$ git clone https://github.com/mateonunez/dotfiles ~/.somewhere
$ ln -s ~/.somewhere/.tmux.conf ~/.tmux.conf
$ ln -s ~/.somewhere/.tmux.conf.local ~/.tmux.conf.localPlease backup your
~/.tmux.confand~/.tmux.conf.localfiles before running the previous commands.
A full IDE built on lazy.nvim, with Colemak-aware keymaps and one file per plugin. It's tuned to mirror my VS Code toolchain:
- LSP & completion β 14 servers (TS, Lua, Rust, Python, Tailwind, ESLint, YAML, TOML, CSS/HTML, Docker, Bash, clangdβ¦) via Mason,
blink.cmp, inlay hints, breadcrumbs + symbols outline. - Diagnostics & quality β
nvim-lint(eslint_d/ruff/shellcheck),conformformatting (Biome + Prettier + Stylua, manual via<leader>z), readable TS errors. - Debugging β
nvim-dap+ dap-ui with VS Code'sF5/F9/F10/F11keys (Python, JS/TS, Rust/C). - Testing β
neotest(jest/vitest/python), debug-a-test via DAP. - Git β
gitsigns(hunks + inline blame),codediff(diff/history/conflicts),octo(GitHub PRs),lazygit. - AI β Claude Code in-editor (
<leader>a). - Refactoring & editing β
refactoring.nvim, multiple cursors, surround, autopairs, Treesitter textobjects. - Navigation β Telescope, Harpoon, Neo-tree, Trouble, grug-far, which-key.
π Full guide β .config/nvim/README.md β install, the Colemak key map, the complete keybinding cheatsheet, and per-plugin notes.
$ git clone https://github.com/mateonunez/dotfiles ~/.somewhere
$ ln -s ~/.somewhere/.config/nvim ~/.config/nvimBack up your existing
~/.config/nvimfirst. On first launch lazy.nvim installs every plugin (and Mason pulls the LSP/DAP/linter tools β give it a minute).lazygitand theghCLI should be on yourPATHfor the git integrations.
gwm provides a multi-repository TUI over
curated workspaces and every linked worktree, including worktrees created by
external coding agents. Each workspace is a persistent directory of relative
repository symlinksβthe flat layout GWM expects. These directories are the
source of truth; VS Code .code-workspace files are unrelated and ignored.
The compact, stacked TUI uses the same black/surface/amber/blue/green/red
palette as tmux and Powerlevel10k. Its keymap mirrors the Colemak hnei
navigation used by Neovim, tmux, and lazygit.
Install and link the versioned configuration:
brew install kbrdn1/tap/gwm
mkdir -p ~/.config/gwm ~/.config/lazygit ~/.local/bin
ln -s ~/.dotfiles/.config/gwm/config.toml ~/.config/gwm/config.toml
ln -s ~/.dotfiles/.config/gwm/workspaces ~/.config/gwm/workspaces
ln -s ~/.dotfiles/.config/lazygit/config.yml ~/.config/lazygit/config.yml
ln -s ~/.dotfiles/scripts/gwm-codediff ~/.local/bin/gwm-codediff
ln -s ~/.dotfiles/scripts/gwm-workspace ~/.local/bin/gwm-workspaceList and open curated workspaces, or run GWM natively from the current folder:
gwm-workspace
gwm-workspace list
gwm-workspace open studiojinWorkspace homes live in ~/.config/gwm/workspaces as scope|directory
entries. Every direct child directory is a workspace whose children are
repository symlinks. Names can be qualified (whatwapp/studiojin) or short
when unique (studiojin).
Manage membership from the CLI:
gwm-workspace create personal/writing
gwm-workspace add writing ~/source/mateonunez/website
gwm-workspace repos writing
gwm-workspace remove writing websiteFrom Neovim, use <leader>gw or :GwmWorkspace to choose between native GWM
for the directory where Neovim was launched and one of the curated symlink
workspaces. :GwmWorkspace studiojin opens a workspace directly;
:GwmFolder [path] opens native GWM from the launch directory or an explicit
folder. Use :GwmWorkspaceAdd and :GwmWorkspaceRemove to manage symlinks.
Quit GWM with q; the terminal closes and focus returns to the editor.
Set GWM_WORKSPACES_FILE to use a different workspace registry without editing
the versioned defaults.
Useful bindings:
n/e: next / previous worktree (Colemak down / up)N: create a worktreeE: rename the selected worktreeEnter: exit into the selected worktreel/L: open lazygit in an overlay / fullscreenr/R: review the selected branch with Neovim + CodeDifft: open the worktree in a tmux panea: inspect detected coding-agent sessions
The CodeDiff launcher resolves the selected base and head to commit IDs before starting Neovim, then opens a PR-style three-dot comparison. Validate changes to the configuration with:
gwm config validate
gwm-workspace list
gwm-workspace open studiojin listgwm doctor currently operates on one repository at a time; run it from the
repository you want to diagnose.
The vscode configuration contains just the generics settings and some keybindings to improve UX.
Generic zsh configuration that contains some aliases, the theme and the plugins.
MIT.