# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview Ansible playbook project that automates the installation and configuration of a personalized i3 window manager desktop environment across multiple Linux distributions (Arch/Manjaro, Fedora, Ubuntu/Debian). ## Running the Playbook ```bash ansible-playbook -i inventory setup.yaml ``` **Important:** The username in `setup.yaml` (variable `myuser`) must be changed from the default `venkatn` to the actual user before running. **Prerequisites by distribution:** - Arch/Manjaro: `sudo pacman -S ansible i3` - Fedora: `sudo dnf install ansible` - Ubuntu: `sudo apt install git ansible python curl i3` ## Architecture **`setup.yaml`** is the main entry point. It runs against localhost with sudo and conditionally loads tasks based on the detected OS family (`ansible_os_family`). ### Task Flow 1. **Distribution-specific package installation** — one task file per distro family: - `tasks/configure-software-manjaro.yaml` (Arch Linux) - `tasks/configure-software-ubuntu.yaml` (Debian) - `tasks/configure-software-fedora.yaml` (RedHat) 2. **`tasks/configure-user.yaml`** — sudoers config, tmux config, wallpaper, `~/opt/scripts` directory 3. **`tasks/configure-i3.yaml`** — deploys all i3 configs, status bar scripts, and system-wide scripts (i3exit, blurlock) ### Configuration Files (`files/configs/`) - `i3/i3/config` — main i3 window manager configuration - `i3/config/picom.conf` — compositor settings - `i3/config/dunst/dunstrc` — notification daemon - `i3/config/rofi/config.rasi` — application launcher - `i3/config/i3blocks/config` — status bar configuration - `i3/myi3blocks/` — custom bash scripts for i3blocks status bar segments (memory, load, weather, date, battery, temp) - `misc-scripts/i3exit` — system exit actions (lock, logout, suspend, hibernate, reboot, shutdown) using systemctl - `misc-scripts/blurlock` — blurred lock screen script using i3lock