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.
- 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.
To run this application, ensure you have the following:
- Python: 3.6 or later
- Required Python packages:
pystray
Pillow
tkinter
- Clone or download the repository.
- Install the required dependencies by running:
pip install -r requirements.txt
- Run the application:
python app.py
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.
- 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
- Run the command
-
📂 Reload JSON:
- Opens a file dialog to select a JSON file.
- Updates the tray menu with the apps listed in the file.
-
🔄 Change Icon:
- Opens a file dialog to select an image file (
.png
or.ico
). - Updates the tray icon.
- Opens a file dialog to select an image file (
-
❌ Exit:
- Stops the application.
The JSON file should be structured as follows:
{
"AppName1": "Path/To/App1.exe",
"AppName2": "Path/To/App2.exe",
"AppName3": "Path/To/App3.exe"
}
If no icon is specified, the app uses a default blue icon. To set a custom icon:
- Click on 🔄 Change Icon.
- Select an image file (
.png
or.ico
).
The application saves configuration settings in config.json
. This file includes:
- Path to the JSON file.
- Path to the selected icon.
{
"json_path": "path/to/apps.json",
"icon_path": "path/to/icon.png"
}
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.
Feel free to fork the project and submit pull requests. Contributions are welcome!
- 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.
Run the app with Python to see detailed error messages in the console.
This project is licensed under the MIT License. See the LICENSE file for details.