Getting Started
Glow is an open-source project maintained by Charm. The source code is available on GitHub: Repository: https://github.com/charmbracelet/glowBuilding from Source
Glow is written in Go and requires Go 1.21 or later to build.Clone and Build
glow binary in the current directory.
Install with Go
Alternatively, you can install directly using Go:Running Tests
Run the test suite to ensure your changes don’t break existing functionality:Submitting Issues
Before submitting an issue, please search existing issues to avoid duplicates. When reporting a bug, please include:- OS (e.g., Ubuntu, macOS, Windows)
- Shell (e.g., zsh, bash, fish)
- Terminal Emulator (e.g., kitty, iTerm, Alacritty)
- Terminal Multiplexer (e.g., tmux, screen, if applicable)
- Locale (e.g., en_US.UTF-8)
- Glow version (
glow --version) - Steps to reproduce the issue
- Expected vs. actual behavior
- Source code or markdown that triggers the issue (if applicable)
- Screenshots (if relevant)
Submitting Pull Requests
- Fork the repository on GitHub
- Create a feature branch from
main: - Make your changes and commit them with clear, descriptive messages
- Test your changes thoroughly
- Push to your fork:
- Open a Pull Request on GitHub with a clear description of your changes
Pull Request Guidelines
- Keep changes focused and atomic
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass before submitting
- Reference any related issues in your PR description
Code Style
Glow follows standard Go conventions:- Run
gofmton your code - Follow Effective Go guidelines
- Use meaningful variable and function names
- Add comments for complex logic
Development Workflow
Project Structure
The main source files in main.go:46-63:main.go- Entry point and CLI argument handlingui/- TUI (textual user interface) implementationconfig_cmd.go- Configuration file managementgithub.go/gitlab.go- GitHub/GitLab integrationutils/- Utility functions
Configuration
Glow uses Viper for configuration management. The default config file isglow.yml and can be edited with:
Code of Conduct
Please be respectful and considerate in all interactions. We’re all here to make Glow better!Community
Connect with the Glow community:- Twitter/X: @charmcli
- Mastodon: @[email protected]
- Discord: charm.sh/chat
Questions?
If you have questions about contributing, feel free to:- Open a discussion on GitHub
- Ask in the Discord community
- Check existing issues for similar questions