https://github.com/luke7-404/apporganizer
A Python-based system tray application that lets users load and manage applications from a JSON configuration file
https://github.com/luke7-404/apporganizer
configurable passion-project python python-lambda windows
Last synced: about 2 months ago
JSON representation
A Python-based system tray application that lets users load and manage applications from a JSON configuration file
- Host: GitHub
- URL: https://github.com/luke7-404/apporganizer
- Owner: luke7-404
- License: mit
- Created: 2024-11-29T05:40:23.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-11-29T08:01:18.000Z (6 months ago)
- Last Synced: 2025-03-23T10:45:54.414Z (about 2 months ago)
- Topics: configurable, passion-project, python, python-lambda, windows
- Language: Python
- Homepage:
- Size: 5.86 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# App Organizer
**App Organizer** is a Python-based system tray application that lets users load and manage applications from a JSON configuration file. It provides an intuitive interface for launching applications and customizing the tray icon.
## Features
- Load and dynamically populate the tray menu with applications from a JSON file.
- Easily update the tray icon using an image file.
- Save and reload configuration settings, including the JSON file and icon path.
- Simple, user-friendly design with options to reload JSON, change the icon, or exit the application.---
## Requirements
To run this application, ensure you have the following:
- **Python**: 3.6 or later
- Required Python packages:
- `pystray`
- `Pillow`
- `tkinter`---
## Installation
1. Clone or download the repository.
2. Install the required dependencies by running:
```bash
pip install -r requirements.txt
```
3. Run the application:
```bash
python app.py
```---
## Build and use script (Windows instructions)
To make the script into a windows executable use ``pyinstaller``.
- Install
pyinstaller
:
pip install pyinstaller
- Create a
.exe
:
pyinstaller -- onefile --noconsole app.py
This generates an executable file in the dist/ folder.
### How to make the script run on start up
- Create a shortcut for
app.exe
- Add shortcut to startup folder:
- Run the command
win + r
- In the window type
shell:startup
- Add the
app.exe
shortcut to the folder that opened
---
## Usage
### Menu Options:
1. **📂 Reload JSON**:
- Opens a file dialog to select a JSON file.
- Updates the tray menu with the apps listed in the file.2. **🔄 Change Icon**:
- Opens a file dialog to select an image file (`.png` or `.ico`).
- Updates the tray icon.3. **❌ Exit**:
- Stops the application.---
### JSON Configuration
The JSON file should be structured as follows:
```json
{
"AppName1": "Path/To/App1.exe",
"AppName2": "Path/To/App2.exe",
"AppName3": "Path/To/App3.exe"
}
```### Tray Icon
If no icon is specified, the app uses a default blue icon. To set a custom icon:
1. Click on **🔄 Change Icon**.
2. Select an image file (`.png` or `.ico`).---
## Configuration File
The application saves configuration settings in `config.json`. This file includes:
- Path to the JSON file.
- Path to the selected icon.### Example `config.json`:
```json
{
"json_path": "path/to/apps.json",
"icon_path": "path/to/icon.png"
}
```---
## Development
### Code Structure
- **`main()`**: Initializes the tray application.
- **Dynamic Menu Updates**: Load apps and settings on the fly.
- **Helper Functions**:
- `select_json_file()`: Opens a dialog to choose the JSON file.
- `select_icon_file()`: Opens a dialog to choose an icon.
- `update_menu()`: Refreshes the tray menu dynamically.### Contribution
Feel free to fork the project and submit pull requests. Contributions are welcome!---
## Troubleshooting
### Common Issues:
- **JSON Load Error**: Ensure the JSON file is properly formatted.
- **App Launch Error**: Verify the application paths in the JSON file.
- **Icon Load Error**: Ensure the selected image file exists and is supported.### Debugging:
Run the app with Python to see detailed error messages in the console.---
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.