A comprehensive Linux development environment focused on productivity, keyboard-driven workflows, and seamless task management integration.
- Layout system - i3 workspace automation
- Scripts - Productivity and automation scripts
- Visual Studio Code config
This dotfiles repository represents a highly customized Linux environment built around:
- i3 window manager for efficient window management
- Taskwarrior integration for project-based task management
- Custom scripts for workflow automation
- Vim/Neovim for text editing
- Polybar for status bar with custom modules
The setup emphasizes:
- Keyboard-driven workflows (minimal mouse usage)
- Context-aware task management (tasks automatically filtered by project)
- Quick screenshot and note-taking capabilities
- Automated workspace layouts for different activities
- Integration between tools (git repos → task projects, active tasks → directory navigation)
Tiling window manager configured with:
- Vim-style navigation keybindings (h/j/k/l)
- Alacritty as default terminal
- Rofi for application launching
- Custom workspace management
- Configuration: .config/i3/config
Status bar with custom modules showing:
- Taskwarrior active task and context
- GitHub notifications
- Pomodoro timer statistics
- Tasks completed today
- Security indicators
- Configuration: .config/polybar/
- Custom scripts: .config/polybar/*.sh
Application launcher and dmenu replacement
- Configuration: .config/rofi/
Shell configuration featuring:
- Theme: Spaceship prompt
- Plugins: git, gitfast, zoxide, aws, docker, taskwarrior, terraform
- Vi mode: Enabled with
kkto enter command mode - Custom aliases: Extensive git and taskwarrior shortcuts
- Configuration: .zshrc
Key customizations:
# Vi mode with fast escape
export KEYTIMEOUT=20
bindkey -M viins 'kk' vi-cmd-mode
# Taskwarrior shortcuts
alias tui="taskwarrior-tui"
alias tg=". tgoto" # Jump to active task's project
# Modern replacements
alias cat='bat' # Syntax-highlighted catGPU-accelerated terminal emulator
- Configuration: .config/alacritty/
Modern Vim configuration using Lua
- Configuration: .config/nvim/init.lua
Full VS Code setup with extensions and keybindings
- Extension installer: .config/Code/install-vs-code-extensions.sh
- Extension reloader: .config/Code/reload-vs-code-extensions.sh
Sophisticated task management workflow with custom scripts:
Core Philosophy: Tasks are automatically filtered by the current git repository, creating a seamless project-based workflow.
Key Scripts (see scripts README for full details):
t- Smart wrapper that filters tasks by current projectts- Start/stop task timerstt- Manage today's taskstgoto- Navigate to active task's project directorytstash- Context switching (stash/restore task groups)tdaily- Generate daily standup notes from completed taskstsync- Sync task database to git
Workflow Example:
cd ~/Projects/myapp # Navigate to project
t # See only myapp tasks
ts 42 # Start working on task 42
tg # Jump to task's project (uses zoxide)
tstash meeting # Interrupt: stash current tasks
# ... handle meeting ...
tstash meeting pop # Restore previous task context
tdaily # End of day: copy completed tasks to clipboardCustom automation scripts for common workflows. See scripts README for comprehensive documentation.
screen- Quick screenshot to clipboardscreenf- Screenshot to filescreenn- Screenshot with markdown formatting for notesvideo- Screen recording with region selection
n- Quick note-takingwl- Work log managementlinks- Organize bookmarks by tagsnsync- Sync notes to git
brightness- Control display brightness (laptop + external monitors)clearcaps- Fix stuck Caps Lockhibernate/spanie- Power management shortcutswall_reload- Random wallpaper selection
Automated i3 workspace configuration for different activities.
Usage:
layout # List available layouts
layout code ~/Work # Open development environment
layout book # Reading layout with PDF viewer
layout notes pocket # Note-taking with web researchAvailable Layouts:
- code - Full development: terminals, VS Code, browser
- book - Reading: PDF viewer + note terminals
- notes - Research: browser + terminals for note-taking
- planning - Planning and organization
- work - Standard work layout
- godot - Game development with Godot
Documentation: layouts/README.md
How it works:
- Saves i3 window tree configuration as JSON
- Paired script launches applications in correct order
- Windows are "swallowed" into layout positions
- Instant workspace setup for different activities
- ripgrep (
rg) - Fast text search - bat - Syntax-highlighted file viewer (replaces cat)
- fzf - Fuzzy finder
- zoxide - Smart directory jumping (enhanced cd)
- entr - Run commands when files change
- jq - JSON processor
- tig - Git interface
- mise - Development environment manager
- taskwarrior - Task management
- taskwarrior-tui - TUI for taskwarrior
- htop - Process viewer
- maim - Screenshot utility
- xclip - Clipboard management
- feh - Image viewer and wallpaper setter
- Google Chrome - Primary browser
- Alacritty - Terminal emulator
- Zathura - PDF viewer
- Obsidian - Note-taking
- GIMP - Image editing
- Visual Studio Code - Primary IDE
- Neovim - Terminal editor
- Godot - Game engine
- Slack - Team communication
- Configured through polybar integration
Tasks automatically filter based on your current git repository. Change directories, see relevant tasks.
Launch complete development environments with a single command using the layout system.
Take a screenshot with screenn, and the markdown image link is instantly in your clipboard ready to paste.
Working on a task? tg instantly jumps you to that project's directory using intelligent navigation.
tdaily generates a summary of completed tasks - perfect for standups or daily logs.
Working on something when an urgent task comes up? tstash urgent hides current tasks. tstash urgent pop brings them back.
Scripts detect git repositories and use them as context for tasks, notes, and project organization.
Status bar shows:
- Currently active task
- Active taskwarrior context
- Tasks completed today
- GitHub notifications
- Pomodoro statistics
Automatic configuration on boot:
- Display setup (multi-monitor)
- Keyboard layout and settings
- Mouse configuration
- Polybar launch
- Wallpaper rotation
- Configuration: .config/startup.sh
- i3 navigation:
h/j/k/l - Zsh command mode:
kk - Neovim for editing
- Keyboard-first philosophy throughout
- i3: .config/i3/config
- Zsh: .zshrc
- Neovim: .config/nvim/init.lua
- Polybar: .config/polybar/config
- Alacritty: .config/alacritty/
- Rofi: .config/rofi/
- X initialization: .xinitrc
- Startup script: .config/startup.sh
- Keyboard setup: .config/keyboard.sh
- Mouse setup: .config/mouse.sh
- Git: .gitconfig
- Dunst (notifications): .config/dunst/
- Compton (compositor): .config/compton.conf
Polybar with task integration and i3 tiling
Multi-window development layout
Terminal-based workflow with taskwarrior
# Window manager & UI
i3-wm polybar rofi dunst compton
# Terminal & shell
alacritty zsh oh-my-zsh
# Core tools
ripgrep bat fzf zoxide taskwarrior jq tig
# Screenshots & media
maim xclip feh ffmpeg slop
# Editors
neovim vim code
# System
xorg xinit xrandr# Enhanced task UI
taskwarrior-tui
# Development
mise docker terraform
# PDF & documents
zathuraSee install_instructions/mint/README.md for complete installation guide.
.
├── .config/ # Application configurations
│ ├── i3/ # i3 window manager config
│ ├── polybar/ # Polybar config and modules
│ ├── nvim/ # Neovim configuration
│ ├── Code/ # VS Code settings and extensions
│ ├── alacritty/ # Terminal emulator config
│ ├── rofi/ # App launcher config
│ └── ...
├── scripts/ # Custom automation scripts
│ └── README.md # Full scripts documentation
├── layouts/ # i3 workspace layouts
│ └── README.md # Layout system documentation
├── install_instructions/ # OS-specific setup guides
│ └── mint/ # Ubuntu/Mint installation
├── .zshrc # Zsh configuration
├── .xinitrc # X initialization
└── README.md # This file
This dotfiles repository is highly personalized but designed to be modular:
- Start with basics: i3, polybar, zsh configuration
- Add taskwarrior: If you use task management
- Adopt scripts: Pick the ones that fit your workflow
- Customize layouts: Create your own workspace layouts
- Modify keybindings: Adjust to your preferences
Key files to customize:
.config/i3/config- Keybindings and window rules.zshrc- Aliases and shell behaviorscripts/*- Modify paths and preferences in scripts.config/startup.sh- System-specific hardware setup
Mod+Enter- New terminalMod+d- Launch application (rofi)Mod+h/j/k/l- Navigate windowsMod+Shift+q- Close windowMod+1-9- Switch workspaces
- Start in a project directory:
cd ~/Projects/myapp - See tasks:
t - Add task:
t add "Fix the bug" - Start task:
ts <id> - Complete:
td <id>
- Quick share:
screen(to clipboard) - Save file:
screenf filename.png - For markdown notes:
screenn(auto-generates markdown)
- List layouts:
layout - Use layout:
layout code ~/Projects/myapp - Create new: Follow layouts/README.md
These are personal dotfiles, but feel free to:
- Fork and adapt for your own use
- Open issues for questions
- Submit PRs for bugs or improvements
- Share your own workflow adaptations
MIT License - Feel free to use and modify
- i3 window manager
- Taskwarrior
- Oh My Zsh
- Various tool authors and the open-source community
- Layout system inspired by i3's workspace save/restore functionality