This directory contains the dotfiles for my system, managed using GNU Stow.
The repository is structured to support multiple operating systems (Linux/macOS) and separates common configurations from OS-specific ones.
If you just want to bootstrap your dotfiles on a new machine:
# Clone the repository and run the install script
git clone git@github.com:marceloid/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.shThe script will:
- Detect your OS (
linuxormacos) - Stow all common and OS-specific packages folder by folder
- Automatically create symlinks in your
$HOMEusing the--dotfilesconvention
dotfiles/
├── install.sh # Main install/uninstall script
├── .stowrc # Stow default options
├── .stow-local-ingore # Stow ignore files
├── common/ # Shared configurations (both OSes)
│ ├── espanso/
│ │ └── dot-config/espanso/
│ │ ├── config/default.yml
│ │ └── match/base.yml
│ ├── herdr/
│ │ └── dot-config/herdr/config.toml
│ ├── nvim/
│ │ └── dot-config/nvim/
│ └── tmux/
│ └── dot-tmux.conf
├── linux/ # Linux-specific configs
│ ├── ghostty/
│ │ └── dot-config/ghostty/config
│ ├── git/
│ │ └── dot-gitconfig (identidade + preferências; defaults vêm do Omarchy)
│ └── hyprmoncfg/
│ └── dot-config/hyprmoncfg/profiles/ (perfis de monitores do Hyprland)
└── macos/ # macOS-specific configs
├── aerospace/
│ └── dot-config/aerospace/
│ └── aerospace.toml
├── ghostty/
│ └── dot-config/ghostty/config
├── git/
│ └── dot-gitconfig
└── zsh/
└── dot-zshrc
Ensure the following are installed on your system:
# Linux (Ubuntu/Debian)
sudo apt install git
# macOS
brew install git# Linux (Ubuntu/Debian)
sudo apt install stow
# macOS
brew install stow- Clone the repository to your
$HOMEdirectory:
$ git clone git@github.com:marceloid/dotfiles.git
$ cd dotfiles- Run the installation script to automatically stow all packages folder by folder, including OS-specific configurations:
$ ./install.sh- The script will detect your OS and stow both
common/and your OS-specific folder. - All dotfiles are managed with the
--dotfilesoption: files/folders prefixed withdot-in the repository will be linked as normal dotfiles in your home directory (.prefix).
To safely remove all symlinks created by the script:
$ ./install.sh --unstowThis will unstow common/ and your OS-specific dotfiles.
-
The repo uses a folder-by-folder approach:
common/→ configs shared across all systems (e.g., Git, Zsh, Neovim)linux/→ Linux-specific configsmacos/→ macOS-specific configs
-
The script is idempotent: running it multiple times will not duplicate links or overwrite existing files.
Since Omarchy 4, the following configs are managed by Omarchy itself and are intentionally not versioned here:
- Hyprland →
~/.config/hypr/*.lua(new Lua format; personal overrides live directly there, seeomarchyCLI /omarchy refresh hyprland) - Shell/bar (antiga waybar) → Omarchy Shell, via
~/.config/omarchy/shell.json - Defaults do git (aliases, rerere, etc.) →
/usr/share/omarchy/config/git/config - Webapps (.desktop) → gerenciados pelo Omarchy (
omarchy launch webapp ...)
Por isso os antigos pacotes linux/hypr, linux/waybar, linux/copyq,
linux/app_launchers e common/kitty foram removidos do repo.
Config at macos/aerospace/dot-config/aerospace/aerospace.toml. Key highlights:
- Vim-style navigation:
Alt + H / J / K / Lto focus left/down/up/right. - Move windows:
Alt + Shift + H / J / K / L(or HyperKey:Cmd+Ctrl+Alt+Shift + H/J/K/L). - Workspaces:
- Numbers:
Alt + 1..9(Switch) /Alt + Shift + 1..9(Move window) - Dedicated letters:
Alt + B: Browser (Chrome, Safari, Firefox, Edge)Alt + T: Terminal (Ghostty, Kitty, iTerm)Alt + N: Notes (Obsidian, Notion, Evernote)Alt + C: Communication (Telegram, WhatsApp, Slack)Alt + D: Dev / Docs / Database (DBeaver, VS Code, Excel, Word, Acrobat)Alt + E: Explorer (Finder)Alt + M: Music / Media (Spotify, VLC)Alt + V: Video / Production (OBS Studio, CapCut, HandBrake)
- Numbers:
- Layouts:
Alt + /(tiles),Alt + ,(accordion),Alt + Shift + F(fullscreen). - Modes:
- Resize mode:
Alt + Shift + R(H/J/K/L,-/+,Bto balance,Enter/Escto exit). - Service mode:
Alt + Shift + ;(Escreload config,Rflatten tree,Ftoggle floating/tiling,H/J/K/Ljoin-with).
- Resize mode:
- Automatic floating windows: System Settings, Keychain, Activity Monitor, Calculator, Bitwarden, AppCleaner, Shottr, Wispr Flow, Tailscale, etc.
Reload with aerospace reload-config or Alt + Shift + ; then Esc (also reloads automatically on save).
Shared config at common/espanso/. Triggers defined in match/base.yml:
| Trigger | Expands to |
|---|---|
;today |
Current date (dd/mm/YYYY) |
;now |
Current date and time (dd/mm/YYYY HH:MM) |
;email |
Personal email address |
;assino |
Signature block |
On macOS the install script symlinks ~/Library/Application Support/espanso →
~/.config/espanso so the same config works on both OSes. Reload with
espanso restart after changes.
- macOS: config em
macos/ghostty/dot-config/ghostty/config. Tema embutido (theme = Ultra Dark), fonteJetBrainsMonoNL Nerd Fonttamanho 14, atalhos com Super (Cmd+1..9para abas). Recarregue comCmd+Shift+,. - Linux (Omarchy / Hyprland): config em
linux/ghostty/dot-config/ghostty/config. Importa o tema dinâmico do Omarchy (~/.local/state/omarchy/current/theme/ghostty.conf), usa backendepollpara Wayland, atalhos CSI-u, fonte tamanho 14 e navegação de abas viaAlt+1..9(sem conflitar com o Hyprland). Recarregue comomarchy restart terminalou reiniciando o Ghostty.
Perfis em linux/hyprmoncfg/dot-config/hyprmoncfg/profiles/. O app
(hyprmoncfg-bin, AUR) e o painel na barra do Omarchy (plugin crmne.hyprmoncfg)
gerenciam o layout de monitores e os workspaces persistentes, com troca
automática de perfil ao conectar/desconectar monitores. Perfis são amarrados
por EDID/descrição do monitor (sobrevivem à troca de conector). Editar pelo
TUI (hyprmoncfg) ou pelo painel já reflete neste repo via symlink do stow.
Config at common/tmux/dot-tmux.conf (prefix: C-a). Useful bindings:
| Binding | Action |
|---|---|
C-a r |
Reload ~/.tmux.conf |
C-a h/j/k/l |
Navigate panes (vim-style) |
C-a X |
Kill current session (asks for confirmation) |
If you want to see what would be linked before actually doing it:
$ stow -n --dotfiles common
$ stow -n --dotfiles linuxor
$ stow -n --dotfiles macosThe -n (--no) option prints what would be linked without making changes.