Skip to content

Development Setup

mrgreen3 edited this page Dec 28, 2025 · 1 revision

Development Setup

Prerequisites

  • ArchBANG or Arch Linux system
  • Git installed
  • Text editor (vim, nano, or your preference)
  • Basic command-line knowledge

Setting Up Your Development Environment

1. Fork and Clone

# Fork the repository on GitHub, then clone your fork:
git clone https://github.com/YOUR-USERNAME/archbang.git
cd archbang

2. Create a Development Branch

git checkout -b feature/your-feature-name

3. Install Development Tools

For configuration modifications:

sudo pacman -S git base-devel

For comprehensive development:

sudo pacman -S git base-devel vim neovim python nodejs npm

Project Structure

archbang/
├── airootfs/           # Root filesystem for ISO
│   ├── etc/
│   │   ├── skel/       # Default user config
│   │   │   └── .config/ # Application configs
│   │   ├── os-release  # OS information
│   │   └── ...
│   ├── usr/
│   └── ...
├── profiledef.sh       # Build profile definition
├── archbang.sh         # Build script
├── README.md
├── LICENSE
└── .gitignore

Making Changes

Configuration Changes

  1. Edit configuration files in airootfs/etc/skel/.config/
  2. Test locally:
    # Copy to your ~/.config/
    cp airootfs/etc/skel/.config/* ~/.config/
  3. Test thoroughly before committing
  4. Commit with clear messages:
    git add .
    git commit -m "Fix: improve keybindings for X functionality"

Keybindings

Edit: airootfs/etc/skel/.config/labwc/rc.xml

After changes:

  • Test with Super + Shift + c (reconfigure)
  • Verify binding works
  • Update documentation if needed

Theming

rofi theme: airootfs/etc/skel/.config/rofi/archbang.rasi labwc theme: airootfs/etc/skel/.config/labwc/rc.xml

Documentation

  • Wiki pages: Keep in sync with code changes
  • User documentation: Update README and guides
  • Inline comments: Explain non-obvious configuration

Testing Your Changes

Quick Testing

  1. Copy changed files to your home directory
  2. Test functionality
  3. Verify no errors with journalctl -xe
  4. Test with reconfigure: Super + Shift + c

Full ISO Build

To build the complete ISO (requires more resources):

cd archbang/
sudo ./archbang.sh

This creates a full ArchBANG ISO with your changes.

Committing Changes

Commit Message Format

<type>: <brief description>

<detailed explanation if needed>
- Specific changes made
- Related issues or motivation

Fixes #<issue-number>

Types:

  • feat: - New feature
  • fix: - Bug fix
  • docs: - Documentation changes
  • style: - Configuration or formatting
  • refactor: - Code restructuring
  • test: - Adding/modifying tests
  • chore: - Maintenance tasks

Example Commits

feat: add custom keybinding for screenshot editor

Adds Super+P keybinding to launch screenshot annotation tool.
Useful for quick screenshot editing and sharing.

Implements #45

---

fix: rofi search not finding applications

Fixed issue where rofi cache wasn't updating. Cache
is now cleared on startup and updated every session.

Fixes #67

---

docs: expand configuration guide with examples

Added examples for:
- Custom keybindings
- Theme customization
- Terminal configuration

Related to #12

Testing Before Submitting PR

# Verify your changes don't break anything
git diff origin/main

# Check commit history
git log origin/main..HEAD

# Test the actual functionality
# 1. Test on a fresh login if possible
# 2. Test each modified keybinding
# 3. Check for any error messages

# Check for obvious issues
grep -r "TODO\|FIXME\|XXX" airootfs/

Submitting a Pull Request

  1. Push to your fork:

    git push origin feature/your-feature-name
  2. Go to GitHub and create a Pull Request

  3. Provide details:

    • What does it change?
    • Why is it needed?
    • Related issues?
    • Testing steps?
  4. Wait for review and address feedback

Common Development Tasks

Adding a New Keybinding

  1. Edit airootfs/etc/skel/.config/labwc/rc.xml
  2. Add your binding in the appropriate section
  3. Test with reconfigure: Super + Shift + c
  4. Update Keybindings documentation file
  5. Update wiki keybindings reference

Modifying rofi Configuration

  1. Edit airootfs/etc/skel/.config/rofi/config.rasi or theme file
  2. Copy to ~/.config/rofi/ to test
  3. Restart rofi or use killall rofi && rofi -show drun
  4. Verify appearance and functionality

Updating Documentation

  1. Edit relevant wiki pages in /home/mrgreen/Claude/archbang-wiki/
  2. Commit to wiki: git push
  3. Verify changes on GitHub wiki
  4. Also update any relevant README sections

Resources

Getting Help

  • Check existing issues and discussions
  • Review Contributing guide
  • Ask questions in comments
  • Discuss design before major changes

Happy developing!

Clone this wiki locally