Ways to contribute
There are many ways to contribute to Dracula tmux:- Report bugs and issues
- Suggest new features or widgets
- Improve documentation
- Submit bug fixes
- Add new widgets
- Improve existing widgets
- Review pull requests
- Help other users in discussions
Getting started
Fork the repository
Visit the Dracula tmux GitHub repository and click the “Fork” button to create your own copy.
Reporting bugs
Before reporting a bug, please:- Search existing issues to see if it’s already been reported
- Test with the latest version to ensure the bug still exists
- Create a minimal reproduction to isolate the issue
How to submit a bug report
Create a bug report
Use the bug report template on GitHub
System information
System information
- Operating system: macOS, Linux (distribution), FreeBSD, etc.
- OS version: e.g., macOS 14.0, Ubuntu 22.04
- tmux version: Run
tmux -Vto check - Terminal emulator: iTerm2, Alacritty, GNOME Terminal, etc.
Bug description
Bug description
- What happened: Clear description of the issue
- What you expected: What should have happened instead
- Steps to reproduce: Numbered list of steps to trigger the bug
- Frequency: Does it happen always, sometimes, or rarely?
Configuration
Configuration
Screenshots
Screenshots
If the issue is visual, include screenshots showing:
- The problem
- Expected vs actual appearance
- Terminal emulator settings (if relevant)
Suggesting features
We welcome feature suggestions! Before submitting:- Check existing feature requests to avoid duplicates
- Consider the scope - does it fit Dracula tmux’s goals?
- Think about implementation - how would it work?
How to submit a feature request
Request a feature
Use the feature request template on GitHub
- Clear description of the feature you’d like
- Use case explaining why this would be valuable
- Potential risks or concerns to consider
- Alternative approaches you’ve considered
- Examples from other tools (if applicable)
Contributing code
Code style and guidelines
Shell script conventions
Shell script conventions
- Use bash for scripts
- Include shebang:
#!/usr/bin/env bash - Use meaningful variable names
- Add comments for complex logic
- Follow existing code style in the project
- Use consistent indentation (2 spaces)
Widget structure
Widget structure
Widgets should be placed in the Basic widget template:
scripts/ directory:Testing your changes
Testing your changes
Before submitting:
-
Test on your system:
-
Test with different configurations:
- With and without powerline
- With different color schemes
- With minimal and maximal widget lists
-
Test edge cases:
- What if data is unavailable?
- What if commands fail?
- What if network is down?
-
Check for errors:
Documentation
Documentation
If adding a new widget or feature:
-
Update CONFIG.md:
- Add section for your widget
- Document all configuration options
- Include usage examples
-
Update README.md:
- Add to features list if applicable
- Update compatibility notes
-
Include code comments:
- Explain non-obvious logic
- Document function parameters
- Add usage examples
Pull request process
When you’re ready to submit your changes:Ensure your code works
- Test thoroughly on your system
- Check for shell script errors
- Verify no existing functionality is broken
Create pull request
Use the pull request template:
Pull requests should reference the issue they’re solving using “Closes #issue-number”.
What to expect
After submitting a pull request:- Maintainers will review your code
- You may receive feedback or requests for changes
- Make requested changes and push updates to your branch
- Once approved, a maintainer will merge your PR
Adding new widgets
Creating a new widget is a great way to contribute!Widget development guide
Plan your widget
- Purpose: What information will it display?
- Data source: Where does the data come from?
- Dependencies: What commands or tools are required?
- Platforms: Which OS will it support?
Document it
Add a section to
docs/CONFIG.md with the widget description, available options, and example configuration.Widget best practices
Performance
Performance
- Cache data when possible
- Avoid expensive operations in tight loops
- Respect the global refresh rate
- Consider adding widget-specific refresh options
Error handling
Error handling
- Check if required commands exist:
command -v cmd - Handle missing data gracefully
- Return meaningful defaults
- Don’t spam error messages
Configurability
Configurability
- Allow users to customize labels
- Support Nerd Font icons
- Provide text-only fallbacks
- Use sensible defaults
Platform compatibility
Platform compatibility
- Test on Linux and macOS if possible
- Document platform-specific limitations
- Use portable commands when available
- Gracefully handle unsupported platforms
Documentation contributions
Improving documentation is valuable! You can:- Fix typos and grammar
- Clarify confusing sections
- Add missing examples
- Update outdated information
- Improve formatting
- Add troubleshooting tips
Community guidelines
When participating in the Dracula tmux community:Be respectful
Treat everyone with respect and kindness. We’re all here to help.
Be constructive
Provide helpful feedback. Criticism should be constructive and actionable.
Be patient
Maintainers are volunteers. Responses may take time.
Be helpful
Help other users when you can. Share your knowledge and experience.
Maintainers
Dracula tmux is maintained by: And supported by many awesome contributors.Additional resources
GitHub Repository
Source code and issue tracker
GitHub Discussions
Ask questions and discuss ideas
Discord Community
Chat with the community
Follow for updates
License
By contributing to Dracula tmux, you agree that your contributions will be licensed under the MIT License.All contributions are reviewed by maintainers before being merged. This ensures code quality and maintains the project’s standards.
Thank you for contributing to Dracula tmux! Every contribution, no matter how small, helps make the project better for everyone.