dotatui

alt text alt text alt text A terminal-based Git interface written in Rust, designed for streamlined dotfile management. Inspired by the speed and keyboard-centric nature of tools like lazygit and lazyvim.

About The Project

dotatui was built to solve a common problem: managing version-controled configuration files (dotfiles) across multiple systems without leaving the terminal. The goal was to create a fast, and intuitive TUI application that provides the most common Git operations at your fingertips.

Core features

  • Dual-Panel Layout: View staged/unstaged files and the diff for the selected file simultaneously.
  • Full Staging Control: Stage and unstage entire files, including additions, modifications, and deletions.
  • Git Workflow: Browse the commit log to see a history of changes.
  • Intuitive Navigation:
    • Vim Keybindings: Navigate lists (j/k) and switch between panels (h/k)
    • Mouse Support: Click to select files/panels and scroll lists with the mouse wheel.
  • Responsive, Asynchronous UI: Built on async event loop to handle slow network operations (like git push) without freezing the interface.

Tech Stack

This project is entirely built using Rust:

  • Core Language: Rust
  • TUI Framework: Ratatui for robust widget-based terminal rendering.
  • Terminal Backend: Crossterm for cross-platform terminal manipulation.
  • Git Backend: git2-rs, the official Rust bindings for libgit2, providing a safe and fast alternative to shelling out to the git command.
  • Asynchronous Runtime: Tokio for handling slow network operations (like git push) without freezing the UI.
  • Error Handling: thiserror for idiomatic, boilerplate-free error types.
  • Logging: simplelog for file-based debugging that doesn’t corrupt the TUI.

Getting Started

To get a local copy up and running, follow these simple steps.

Prerequisites

  • Rust toolchain (via rustup)
  • libgit2 and its dependencies (often handled automatically by the git2-rs build script)

Installation

  1. Clone the repository:
    git clone https://github.com/sarang-kernel/dotatui.git
    
  2. Navigate into the project directory:
    cd dotatui
    
  3. Build and run the application:
    cargo run
    
    The application must be run from withing a Git repository

Keybindings

KeyAction
qQuit Application / Exit Hunk Mode
s / lSwitch to Status / Log View
j / kNavigate Up / Down in lists
h / lSwitch focus between Left / Right panels
spaceStage selected file
uUnstage selected file
cOpen Commit message editor
Shift+PPush to remote (origin)
enterEnter Hunk Selection Mode
?Show Help Popup
escClose Popup

Project Roadmap

dotatui is under active development. Future enhancements include:

  • Interactive Hunk Staging: Stage/unstage individual lines or blocks of code.
  • Branch Management: A UI for viewing, creating, and switching branches.
  • Interactive Log: View commit diffs and checkout commits directly from the log.

Sarang Vehale

Software Developer and Tinkerer


Just a funny little penguin