A dual-pane file manager for Linux with APK tools integration, inspired by MT Manager for Android.
- Dual-pane file manager - Navigate with two side-by-side file browsers ❌
REMOVED
- File operations - Copy, move, rename, delete with progress dialogs
- APKTool integration - Decompile and recompile APK files
- Text editor - Built-in editor with syntax highlighting for Smali, Java, XML
- Archive support - Browse and extract ZIP/APK archives
- Dark theme - Modern dark UI theme
- Modular design - Clean, class-based architecture
- Python 3.6+
- PyQt5
- APKTool (for APK operations)
- Java (for APK signing)
-
Clone the repository:
git clone https://github.com/GrandpaEJ/GPmanager.git cd GPmanager
-
Run the setup wizard:
# GUI installer (recommended) python3 setup.py --gui # Or command-line installer python3 setup.py --install
-
Start the application:
./run.sh
# Install required dependencies
sudo apt update
sudo apt install python3-pyqt5 python3-pyqt5.qsci python3-pygments python3-magic
# Install optional dependencies for APK operations
sudo apt install apktool default-jdk git
# Run the application
python3 main.py
# Install required dependencies
sudo dnf install python3-qt5 qscintilla-python3 python3-pygments python3-magic
# Install optional dependencies
sudo dnf install apktool java-11-openjdk-devel git
# Run the application
python3 main.py
# Install required dependencies
sudo pacman -S python-pyqt5 qscintilla-python python-pygments python-magic
# Install optional dependencies
sudo pacman -S apktool jdk-openjdk git
# Run the application
python3 main.py
# Create virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate
# Install Python dependencies
pip install PyQt5 QScintilla Pygments python-magic
# Install system tools separately
# APKTool: Download from https://ibotpeaches.github.io/Apktool/
# Java: Install OpenJDK from your system package manager
# Run the application
python3 main.py
The setup script provides multiple installation methods:
# Check dependency status
python3 setup.py --check
# Install missing dependencies
python3 setup.py --install
# Install only required dependencies (skip APKTool, Java, Git)
python3 setup.py --install --skip-optional
# Generate installation script for manual execution
python3 setup.py --script
# Save installation script to file
python3 setup.py --script -o install.sh
# Create desktop entry
python3 setup.py --desktop
# Run GUI setup wizard
python3 setup.py --gui
python main.py
- Navigate: Double-click folders to enter, use ↑ button to go up
- Copy: Select files and click "Copy" or Ctrl+C, then paste in other pane
- Move: Select files and click "Move" or cut with Ctrl+X
- Delete: Select files and press Delete key or click "Delete" button
- Rename: Select file and press F2 or right-click → Rename
- New Folder: Ctrl+Shift+N or right-click → New Folder
- Swap Panes: Ctrl+U to swap left and right pane contents
- Sync Panes: Ctrl+Shift+O to sync inactive pane to active pane's directory
- Copy to Other Pane: Select files and click "Copy" button in toolbar
- Move to Other Pane: Select files and click "Move" button in toolbar
- Select an APK file in the file manager
- Double-click to open APK tools, or click "APK" button in toolbar
- Decompile: Click "Decompile APK" to extract and decompile
- Recompile: Select decompiled directory and click "Recompile APK"
- Sign: Click "Sign APK" to sign with debug key
- Double-click text files (.txt, .java, .smali, .xml) to open in editor
- Syntax highlighting for Smali, Java, and XML files
- Find/Replace: Ctrl+F to open find panel
- Go to Line: Ctrl+G to jump to specific line
- Multiple tabs for editing multiple files
- Double-click ZIP/APK files to open in archive viewer
- Browse contents with file details (size, compression, date)
- Extract files: Select files and click "Extract Selected" or "Extract All"
- View files: Double-click text files in archive to view content
Shortcut | Action |
---|---|
Ctrl+O | Open file |
Ctrl+S | Save file |
Ctrl+Shift+N | New folder |
Ctrl+C | Copy |
Ctrl+X | Cut |
Ctrl+V | Paste |
Delete | Delete selected |
F2 | Rename |
F5 | Refresh |
Ctrl+A | Select all |
Ctrl+U | Swap panes |
Ctrl+Shift+O | Sync panes |
Ctrl+F | Find/Replace |
Ctrl+G | Go to line |
Ctrl+, | Preferences |
Ctrl+Q | Quit |
Access preferences through File → Preferences or Ctrl+,:
- Theme: Dark/Light theme selection
- Show hidden files: Toggle visibility of hidden files
- Font family: Set editor font (default: Consolas)
- Font size: Set editor font size (default: 10)
- APKTool path: Path to apktool executable
- Java path: Path to java executable
Configuration is saved in ~/.gpmanager/config.json
gpmanager/
├── main.py # Application entry point
├── requirements.txt # Python dependencies
├── src/
│ ├── main_window.py # Main application window
│ ├── file_manager/ # File manager components
│ │ ├── file_pane.py # Single file browser pane
│ │ ├── dual_pane.py # Dual pane manager
│ │ └── file_operations.py # File operations
│ ├── editors/ # Text editor components
│ │ ├── text_editor.py # Text editor widget
│ │ └── syntax_highlighter.py # Syntax highlighting
│ ├── tools/ # Tool integrations
│ │ ├── apktool.py # APKTool integration
│ │ └── archive_manager.py # Archive handling
│ ├── ui/ # UI components
│ │ ├── themes.py # Theme management
│ │ └── dialogs.py # Custom dialogs
│ └── utils/ # Utility modules
│ ├── file_utils.py # File utility functions
│ └── config.py # Configuration management
└── README.md
The application is designed with a modular architecture:
- File Manager: Extend
file_pane.py
ordual_pane.py
for new file operations - Editors: Add new syntax highlighters in
syntax_highlighter.py
- Tools: Create new tool integrations in the
tools/
directory - UI: Add new dialogs or themes in the
ui/
directory
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
PyQt5 import errors:
pip install PyQt5
APKTool not found:
- Install apktool:
sudo apt install apktool
- Or set custom path in Preferences
Permission denied errors:
- Ensure you have read/write permissions for the directories
- Run with appropriate user permissions
Archive extraction fails:
- Check if the archive file is corrupted
- Ensure sufficient disk space for extraction
Run with debug output:
python main.py --debug
This project is open source. See LICENSE file for details.
- Inspired by MT Manager for Android
- Built with PyQt5
- Uses APKTool for APK operations
- Syntax highlighting powered by Pygments concepts