@zemerik/macbrew
v1.0.1
Published
๐ Advanced terminal emulator built in Rust with Python integration - A comprehensive command-line experience
Maintainers
Readme

A feature-rich terminal emulator built in Rust with Python integration, designed to provide a comprehensive command-line experience similar to macOS/Homebrew environments.
โจ Features
๐ฏ Core Features
- Real Python Execution: Execute Python scripts and interactive Python sessions
- Command History: Persistent command history with search and navigation
- Autocomplete: Intelligent command and file path completion
- Job Control: Background process management with
jobs,fg,bg,kill - Plugin System: Extensible plugin architecture for custom commands
- Color Support: Rich colored output and syntax highlighting
- Configuration: Customizable settings and aliases
๐ File Operations
- Basic Commands:
ls,cd,pwd,cat,echo,mkdir,rm,cp,mv - Advanced File Operations:
find,grep,chmod,chown,chgrp - Text Processing:
head,tail,sort,uniq,cut,paste,tr,sed,awk - File Analysis:
wc,file,stat,du,df
๐ง System Administration
- Process Management:
ps,top,htop,kill,nohup - System Services:
systemctl,service,init - User Management:
useradd,userdel,groupadd,groupdel,passwd - Disk Management:
fdisk,parted,mkfs,fsck,mount,umount - Scheduling:
cron,at,batch,crontab
๐ Networking
- Network Tools:
ping,curl,wget,ssh,scp,rsync - Network Analysis:
netstat,lsof,nmap,tcpdump - Network Monitoring:
iftop,nethogs,iotop - Remote Access:
telnet,nc,socat
๐ Security & Cryptography
- Encryption:
openssl,gpg,ssh-keygen - Hashing:
md5sum,sha256sum,sha512sum - Encoding:
base64,hexdump,xxd
๐ฆ Package Management
- Homebrew: Full Homebrew package manager simulation
- Python:
pip,condapackage management - Node.js:
npm,yarnpackage management - Docker: Container management commands
๐ณ DevOps & Cloud
- Containerization:
docker,kubectl,helm - Infrastructure:
terraform,ansible,puppet,chef - Virtualization:
vagrant,virtualbox,vmware,qemu,kvm - Cloud Tools:
libvirt,virsh,virt-manager
๐ Text Editors
- Editors:
vim,nano,emacs - Pagers:
less,more
๐ Documentation
- Manual Pages:
man,info,apropos,whatis - Help System: Built-in help for all commands
๐ฆ Compression & Archives
- Compression:
gzip,gunzip,bzip2,bunzip2,xz,unxz - Archives:
tar,zip,unzip,7z,rar,unrar
๐ Logging & Monitoring
- System Logs:
dmesg,syslog,rsyslog,logwatch - Journal:
journalctl,logrotate
๐ฎ Terminal Multiplexing
- Sessions:
screen,tmux
๐ Quick Start
Prerequisites
- Rust (1.70 or higher) - Install Rust
- Python 3.8+ - Install Python
- Node.js 14+ - Install Node.js
[!CAUTION] โ ๏ธ Windows Users: If you encounter a
link.exe not founderror when building, you need to install Visual Studio Build Tools with the "Desktop development with C++" workload. Alternatively, you can switch to the GNU toolchain by running:rustup default stable-x86_64-pc-windows-gnuFor the GNU toolchain, you may also need to install MinGW-w64.
Installation
Option 1: Using npx (Recommended)
npx macbrewOption 2: Global Installation
npm install -g macbrew
macbrewOption 3: From Source
git clone https://github.com/Zemerik/Macbrew.git
cd Macbrew
cargo build --release
cargo run๐ Usage Examples
Basic Commands
# File operations
ls -la
cd /path/to/directory
pwd
cat filename.txt
echo "Hello, World!"
# Python execution
python -c "print('Hello from Python!')"
python script.py
# Homebrew package management
brew install package_name
brew search query
brew update
brew upgrade
# Plugin commands (included by default)
hello World
weather TokyoAdvanced Features
# Job control
long_running_command &
jobs
fg 1
bg 1
kill 1
# Plugin management
plugins list
install-plugin example
uninstall-plugin example
# Text processing
echo "hello world" | tr '[:lower:]' '[:upper:]'
cat file.txt | sort | uniq
grep "pattern" file.txtSystem Administration
# Process management
ps aux
top
kill -9 process_id
# User management
useradd username
passwd username
userdel username
# System services
systemctl status service_name
systemctl start service_name
systemctl stop service_nameNetworking
# Network diagnostics
ping google.com
curl https://api.github.com
ssh user@hostname
scp file.txt user@hostname:/path/
# Network analysis
netstat -tuln
lsof -i :8080
nmap localhostSecurity
# Hashing
echo "password" | md5sum
echo "password" | sha256sum
# Encryption
openssl enc -aes-256-cbc -in file.txt -out file.enc
gpg --encrypt file.txt
# SSH key management
ssh-keygen -t rsa -b 4096โ๏ธ Configuration
The terminal emulator uses a configuration file located at:
- Linux/macOS:
~/.config/terminal-emulator/config.json - Windows:
%APPDATA%\terminal-emulator\config.json
Configuration Options
{
"prompt_style": {
"show_hostname": true,
"show_username": true,
"show_path": true,
"show_git_branch": false,
"format": "{username}@{hostname}:{path} $ "
},
"history_size": 1000,
"auto_completion": true,
"syntax_highlighting": true,
"colors": {
"prompt": "\u001b[32m",
"command": "\u001b[36m",
"output": "\u001b[0m",
"error": "\u001b[31m",
"success": "\u001b[32m",
"warning": "\u001b[33m"
}
}๐ Plugin System
The terminal emulator supports a plugin system for extending functionality:
Creating a Plugin
- Create a plugin directory in
~/.config/terminal-emulator/plugins/ - Add a
plugin.tomlmanifest file - Include your script files
Example Plugin
# plugin.toml
name = "my-plugin"
version = "1.0.0"
description = "My custom plugin"
author = "Your Name"
commands = [
{ name = "hello", description = "Say hello", usage = "hello [name]", script = "hello.py", language = "python", enabled = true }
]# hello.py
#!/usr/bin/env python3
import sys
def main():
if len(sys.argv) > 1:
name = sys.argv[1]
print(f"Hello, {name}!")
else:
print("Hello, World!")
if __name__ == "__main__":
main()๐จ Customization
Aliases
# Set aliases
alias ll='ls -la'
alias g='git'
alias p='python'
# List aliases
alias
# Remove aliases
unalias llEnvironment Variables
# Set environment variables
export EDITOR=vim
export PATH=$PATH:/custom/path
# Show environment
env
# Unset variables
unset VARIABLE_NAME๐ง Development
Project Structure
macbrew/
โโโ src/ # TypeScript source code
โ โโโ bin/ # Binary launcher
โ โ โโโ macbrew.ts # Main binary launcher
โ โโโ scripts/ # Installation scripts
โ โ โโโ install.ts # Build and setup script
โ โ โโโ postinstall.ts # Post-installation setup
โ โ โโโ uninstall.ts # Cleanup script
โ โโโ types/ # TypeScript type definitions
โ โ โโโ config.ts # Configuration types
โ โ โโโ plugin.ts # Plugin types
โ โ โโโ terminal.ts # Terminal types
โ โโโ lib/ # Core library modules
โ โ โโโ macbrew.ts # Main Macbrew class
โ โ โโโ terminal.ts # Terminal functionality
โ โ โโโ plugin-manager.ts # Plugin system
โ โ โโโ config-manager.ts # Configuration management
โ โโโ index.ts # Main entry point
โโโ dist/ # Compiled JavaScript output
โโโ bin/ # JavaScript wrappers
โ โโโ macbrew.js # Binary launcher wrapper
โโโ scripts/ # JavaScript wrappers
โ โโโ install.js # Install script wrapper
โ โโโ postinstall.js # Postinstall script wrapper
โ โโโ uninstall.js # Uninstall script wrapper
โโโ package.json # NPM package configuration
โโโ Cargo.toml # Rust dependencies
โโโ README.md # This fileAdding New Commands
- Add the command to the
execute_commandmatch statement inmain.rs - Implement the command function
- Add help documentation
Building for Distribution
# Build optimized release
cargo build --release
# Create installation package
cargo install --path .
# Publish to npm
npm publish๐ Troubleshooting
Common Issues
- Python not found: Ensure Python 3.x is installed and in PATH
- Permission denied: Check file permissions and ownership
- Plugin not loading: Verify plugin.toml syntax and file paths
- Command not found: Check if the command is available in your system
Debug Mode
Run with debug output:
RUST_LOG=debug cargo runโ Troubleshooting Command Not Found or Execution Errors
If you see an error like:
Error: Failed to execute external command 'your-command'.
This usually means the command is not installed, not in your PATH, or not available on your system.What does this mean?
- The command you tried to run is not available on your device, or your system cannot find it.
- This is not a bug in Macbrew. Macbrew passes commands to your operating system, so if the OS can't find or run the command, neither can Macbrew.
How to Fix
- Check for typos: Make sure you typed the command correctly.
- Is the command installed?
- On Windows, some commands (like
ls,grep,awk, etc.) are not available by default. You may need to install tools like Git Bash, Cygwin, or Windows Subsystem for Linux (WSL). - On macOS/Linux, use your package manager (e.g.,
brew install,apt install,yum install) to install missing commands.
- On Windows, some commands (like
- Check your PATH: Make sure the directory containing the command is in your system's PATH environment variable.
- Try in your system terminal: Open Command Prompt, PowerShell, or Terminal and try the command there. If it fails, it's a system issue.
- Permissions: Make sure you have permission to run the command.
- Still not working?
- If the command works in your system terminal but not in Macbrew, please open an issue with details.
Example
If you type ls on Windows and see this error, try using dir instead, or install a Unix-like environment.
๐ฆ NPM Package
Rusty Shell is available as an npm package for easy installation and distribution.
Package Information
- Package Name:
macbrew - Registry: npmjs.com
- Install Command:
npm install -g macbrew - NPX Command:
npx macbrew
Package Features
- โ Automatic Rust binary compilation
- โ Cross-platform support (Windows, macOS, Linux)
- โ Automatic dependency checking
- โ Configuration setup
- โ Example plugins included
- โ Clean uninstallation
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ค Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
๐ Support
- Issues: Report bugs and feature requests on GitHub
- Documentation: Check the inline documentation and examples
- Community: Join our community discussions
๐ฏ Roadmap
- [ ] GUI mode with TUI interface
- [ ] Remote terminal support
- [ ] Advanced scripting capabilities
- [ ] Package manager integration
- [ ] Cloud provider integrations
- [ ] Machine learning command suggestions
- [ ] Voice command support
- [ ] Advanced debugging tools
Built with โค๏ธ using Rust, Python, and TypeScript
