A beautiful, cross-platform GUI application for building complex Linux shell commands with ease
Features • Installation • Usage • Commands • Development
Linux Command Builder is a modern, intuitive desktop application that helps users construct complex Linux shell commands through a user-friendly graphical interface. Perfect for system administrators, DevOps engineers, students, and anyone who works with Linux systems.
- 🎯 No More Syntax Errors - Build commands visually with validation
- 🔒 Security First - Built-in shell injection prevention
- 🎨 Beautiful Dark Theme - Easy on the eyes during long sessions
- 🚀 Fast & Responsive - Optimized performance with smart caching
- 🤖 AI-Powered - Optional AI command analysis (Claude integration)
- 🌍 Cross-Platform - Runs on Windows, Linux, and macOS
- 📝 Dynamic Form Generation - Context-aware input fields based on command type
- 🔍 Real-Time Validation - Instant feedback on invalid inputs
- 📋 One-Click Copy - Copy generated commands to clipboard
- 🔎 Smart Search - Filter commands with fuzzy search
- 💾 Command History - Quick access to recently used commands
- 🎨 Dark Theme UI - Professional, customizable interface
- 🤖 AI Command Analysis - Explain what your command does (requires API key)
- 🔄 Auto-Updates - Built-in command definition updater
- ⚙️ Customizable - Adjust settings to your preferences
- 📊 Command Preview - See the final command before copying
- 🛡️ Security - Automatic escaping and sanitization
| Type | Description | Example |
|---|---|---|
| Text Input | Standard text fields | File names, paths |
| Dropdowns | Predefined options | File types, permissions |
| Checkboxes | Boolean flags | -l, -a, -r |
| Date Pickers | Date selection | Modified dates |
| File Pickers | Browse filesystem | Input/output files |
| Permission Grids | chmod permissions | 755, 644 |
| Size Inputs | File size filters | +100M, -5k |
- Python 3.8 or higher
- pip package manager
# Clone the repository
git clone https://github.com/crenta/Linux-Commander.git
cd Linux-Commander
# Install dependencies
pip install -r requirements.txt
# Run the application
python main.py
⚠️ COMING SOON... Yet to be implemented.
Download the latest release for your platform:
Python>=3.8
tkinter (included with Python)
Pillow>=9.0.0
pyperclip>=1.8.2
validators>=0.20.0
- Select a Command from the left sidebar
- Fill in Parameters using the dynamic form
- Preview the generated command at the bottom
- Copy the command to your clipboard
- Run on your Linux system
# Generated command:
find /var/log -name '*.log' -type f -mtime -7 -size +10MSteps:
- Select
findfrom "Search and Filter" category - Enter search path:
/var/log - Set name pattern:
*.log - Select type:
file - Set modified time:
-7(last 7 days) - Set size:
+10M(larger than 10MB)
⚠️ COMING SOON... Yet to be implemented.
| Shortcut | Action |
|---|---|
Ctrl+C |
Copy command |
Ctrl+L |
Clear form |
Ctrl+F |
Focus search |
Escape |
Clear search |
find- Search for files and directoriesls- List directory contentscp- Copy files and directoriesmv- Move/rename filesrm- Remove files and directoriesmkdir- Create directoriestouch- Create empty files
cat- Display file contentsgrep- Search text patternssed- Stream editorawk- Text processinghead- Display file beginningtail- Display file endwc- Word/line/byte count
tar- Archive filesgzip- Compress fileszip- Create ZIP archivesunzip- Extract ZIP archives
df- Disk space usagedu- Directory sizefree- Memory usagetop- Process viewerps- Process statusuname- System information
chmod- Change file permissionschown- Change file ownerchgrp- Change file group
ping- Test connectivitycurl- Transfer datawget- Download filesnetstat- Network statisticsssh- Remote login
kill- Terminate processeskillall- Kill by namepkill- Kill by pattern
apt- Debian/Ubuntu packagesyum- Red Hat/CentOS packagesdnf- Fedora packages
...and many more!
⚠️ Compatibility Note: This feature is currently only tested on Mistral & Gemini. You may have to edit the specific model string insettings.json.
- Click "AI Settings ⚙️" button
- Enter your API KEY
- Click "Save Settings"
- Build a command
- Click "Analyze with AI 🤖"
- Get detailed explanation including:
- Check the syntax
- What the command does
- Potential risks/warnings
- Alternative approaches
- Usage examples
🤖 Command Analysis
Command: find /var/log -name "*.log" -type f -mtime -7 -delete
📋 Explanation:
This command searches for all log files in /var/log modified
in the last 7 days and deletes them.
⚠️ Warnings:
- DESTRUCTIVE: Files will be permanently deleted
- Consider backing up first
- Test with -print before using -delete
💡 Safer Alternative:
find /var/log -name "*.log" -type f -mtime -7 -print
Settings are stored in:
- Windows:
%LOCALAPPDATA%\LinuxCommander\ - Linux:
~/.local/share/LinuxCommander/ - macOS:
~/Library/Application Support/LinuxCommander/
Command definitions are JSON files in the commands/ directory. You can:
- ✏️ Edit existing commands
- ➕ Add new commands
- 🔄 Update via built-in updater
Enable verbose logging:
# Windows
set DEBUG=1
python main.py
# Linux/macOS
DEBUG=1 python main.pyLogs are saved to app.log in the data directory.
linux-commander/
├── main.py # Application entry point
├── ui_controller.py # Main UI coordination
├── theme_manager.py # Visual theming
├── command_manager.py # Command loading & parsing
├── form_builder.py # Dynamic form generation
├── command_generator.py # Shell command assembly
├── logger_config.py # Logging configuration
├── constants.py # Application constants
├── ai_analyzer.py # AI integration (optional)
├── settings_panel.py # Settings UI (optional)
├── update_manager.py # Update system (optional)
├── settings_manager.py # Manages the AI setttings
├── commands/ # Command definitions (JSON)
│ ├── file_operations.json
│ ├── system_info.json
│ └── ...
├── settings.json # ** API KEYS & model info **
├── LOGO.png # Application icon
├── requirements.txt # Python dependencies
├── README.md # This file
└── LICENSE # License
Create a JSON file in commands/:
{
"Category Name": {
"command_name": {
"description": "What this command does",
"example": "command_name -flag value",
"requires_sudo": false,
"sudo_optional": true,
"fields": [
{
"type": "text",
"label": "Input File",
"flag": "-f",
"tooltip": "Path to input file"
},
{
"type": "checkbox",
"label": "Verbose Output",
"flag": "-v"
}
]
}
}
}{
"type": "text", // Standard text input
"type": "checkbox", // Boolean flag
"type": "dropdown", // Selection from options
"type": "file_picker", // Browse for file
"type": "dir_picker", // Browse for directory
"type": "date_input", // Date selector
"type": "size_input", // File size with units
"type": "permission_grid", // chmod permission grid
"type": "number_input", // Numeric input only
"type": "url" // URL with validation
}# Run specific test file
python tester1.py
python tester2.py
python tester3.py
⚠️ Untested: I haven't built and tested the EXE yet
# Install PyInstaller
pip install pyinstaller
# Build for current platform
pyinstaller LinuxCommander.spec
# Output in dist/ folder- ✅ Shell Injection Prevention - All inputs sanitized with
shlex.quote() - ✅ Path Validation - Invalid filesystem characters blocked
- ✅ Input Length Limits - DoS prevention (8000 char max)
- ✅ URL Validation - Malformed URLs rejected
- ✅ JSON Schema Validation - Command definitions validated on load
- 🔍 Review commands before running them on production systems
- 🧪 Test in safe environment first
- 💾 Backup important data before destructive operations
- 🔐 Use sudo carefully - only when necessary
- 📝 Read command descriptions and tooltips
Contributions are welcome! Here's how you can help:
- Check existing issues
- Create a new issue with:
- Clear description
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
- Log file (
app.log)
Open an issue with:
- Feature description
- Use case / motivation
- Proposed implementation (optional)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests if applicable
- Commit with clear messages (
git commit -m 'Add amazing feature') - Push to your fork (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PEP 8 guidelines
- Use descriptive variable names
- Add docstrings to functions
- Keep functions focused and small
- Add comments for complex logic
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2025 Crenta
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- Python Community - For the amazing ecosystem
- Tkinter - For the cross-platform GUI framework
- Contributors - Thank you for your contributions!
Please report it on our issue tracker with:
- Description of the problem
- Steps to reproduce
- Expected behavior
- Actual behavior
- Log file contents
- Command history with search
- Favorite commands
- Command templates/snippets
- Export command collections
- Multi-language support
- Light theme option
- Plugin system
- Command scheduling
- SSH integration (run commands remotely)
- AI command analysis
- Auto-update system
- Improved error handling
- Command chaining (pipes)
- Batch operations
Made with ❤️ by Crenta
⭐ Star us on GitHub — it helps!

