app_fleet
app_fleet copied to clipboard
A brilliant workspace manager & launch automation tool specially designed for GNOME.
https://github.com/omegaui/app_fleet/assets/73544069/6bfe8b68-2886-4c02-80a2-8450f37311a6
Overview
App Fleet is a workspace management tool written entirely for the Linux Desktops, designed and finely tested on GNOME . It offers creation of workspace configurations that can later be launched using a startup workspace launcher.
Modern Linux Desktop Environments provide their users with the ability to have multiple workspaces on the same desktop;
this is highly beneficial for users
who often switch between the group of apps or group of browser windows with multiple tabs.
But launching these many apps manually on startup is a hideous task, sure we can write a script that can do this,
but doing that requires a bit of brainstorm, and also, even on a powerful machine, some apps take some time to
specifically show the first window
(you cannot have another workspace until there is at least one window in all the current workspaces),
and as the requirement increases we have to edit these scripts and maintain them, also,
taking a look at the logs if any error occurs, waiting for the app to actually come up before switching the
workspace to launch another, ..... phew .. honestly,
this is a lot of work to do just to make a single workspace configuration.
But What if there exists a graphical tool to do this? A Tool that can let you create your workspace configurations, also, allows you to give your workspaces cool names and icons. A Tool that can detect installed apps on your system so that you don't have to do a manual entry. A Tool that can even execute specific browser tabs or shell scripts? also, what if, it offers a quick workspace launcher once you log in?
Here comes App Fleet, A brilliant workspace manager & quick launcher specially designed for GNOME.
You only need wmctrl installed on your distro, also make sure flutter works, then, you can compile App Fleet for your distro.
App Fleet is written using The Flutter Framework.
Features
App Fleet comes with a self-update and uninstall feature.
See CHANGELOG for a full feature list.
Review
Install (Advanced Installation Options)
🎗️ Before installing make sure wmctrl
is installed on your system, or else you will not be able to switch workspace
using the App Fleet Launcher.
Install using your shell
Copy and run the following in your terminal:
curl https://raw.githubusercontent.com/omegaui/app_fleet/main/network-install.sh | bash
Install from Precompiled Bundle
git clone https://github.com/omegaui/app-fleet
cd app-fleet/package
./install.sh
Install from Source
git clone https://github.com/omegaui/app-fleet
cd app-fleet/package
./install-from-source.sh
Update
You can seamlessly update app-fleet without touching your workspace configuration. Once, an update arrives, your installation will notify you about the update. then, you can simply, update using these three ways:
Update directly from the shell
curl https://raw.githubusercontent.com/omegaui/app_fleet/main/network-update.sh | bash
Update from Precompiled Bundle
git clone https://github.com/omegaui/app-fleet
cd app-fleet/package
./update.sh
Update from source
git clone https://github.com/omegaui/app-fleet
cd app-fleet/package
./update-from-source.sh
Why there is no Snap/Flatpak/AppImage/Deb/RPM Package?
Snap/Flatpak Packaging is Unsupported by program like App Fleet
App Fleet being a workspace launch automation tool requires system wide read access, the reason is very justifying:
- App Fleet not only launches Apps but also any custom script the user wants and this script can exist anywhere on the drive or even on the external drive.
- Snap Packaging isn't possible as packaging a flutter app with snap requires gnome extension which in turn doesn't supports classic confinement, and App Fleet cannot leverage the full system in a strict confinement. (I searched a lot about building it under classic confinement to get system wide read access but didn't find any way to do it. Any help on this is highly appreciated.)
- Flatpak Packaging also isn't supported as flatpaks have additional set of hindrance, the
/usr
directory is inaccessible by a flatpak app, and this is the core directory around which App Fleet detects apps and system icons. Not only/usr
but directories like/var
where the installed flatpak's metainfo resides is inaccessible, thus, App Fleet won't be able to detect other apps.
Both Snaps and Flatpak are launched in a SANDBOX, and App Fleet needs to be directly invoked on the system to be able to do what it is meant to do.
As far as AppImage is considered, the sole cause why I planned for packaging was to roll out updates through the native software updater and not by making the user to rerun the update command everytime an update arrives.
Current network installers included on home repo provide a much seamless install and update experience to the users. App Fleet already includes a Self Update and In-App Uninstall Option.
-
Debian/RPM or Native Packaging
- App Fleet can be packaged into .deb or .rpm but the reason why this isn't done is App Fleet's ability to do a
self update, reinstall and install. Elaborating more, when packaged as a deb package, the core of the app needs
to
placed to
/usr/local/lib
while the config always stays at~/.config
, App Fleet's current installations are placed inside~/.config/app-fleet
only, and the self-updater/installer is coded to update it there only. Thus, packaging it as deb package would break the self-updater/installer. - Moreover, current network installers work out of the box, you just have to copy/paste the curl command.
- App Fleet can be packaged into .deb or .rpm but the reason why this isn't done is App Fleet's ability to do a
self update, reinstall and install. Elaborating more, when packaged as a deb package, the core of the app needs
to
placed to
Contributing
Hey, App Fleet is built in the ecosystem of IntelliJ.
If you want to contribute to App Fleet, make sure you use IntelliJ-Based project configurations and edits.
The project is built using clean architecture, and there are four launch configurations.
-
project-root
-
.run
-
Launcher Dev.run.xml
-
Launcher Prod.run.xml
-
Manager Dev.run.xml
-
Manager Prod.run.xml
-
-
The Prod configurations are meant for production ready states,
and the Dev configurations are meant for debugging purpose.
You can only see app logs in Dev Mode.
App Fleet is designed to automatically generate Bug Reports.
You can find them at $HOME/.config/app-fleet/bug-reports`.
Flutter 3.13.6 or above is Required for compiling the program.
Advanced Configuration Options
App Entry Customization
![App Customization](https://github.com/omegaui/app_fleet/raw/main/github/images/app-customization.png)
Some Apps take a specific period of time to load,
App Fleet offers wait-time for that kind of heavy App.
By Default, each app is given a time period of 500ms to load, which can be customized as per
your needs (usually system performance).
Manual Configuration Editing
![Gaming Example](https://github.com/omegaui/app_fleet/raw/main/github/images/gaming-example.png)
Configurations are saved in a readable format i.e., json.
You can directly edit the workspace configs located at $HOME/.config/app-fleet/workspaces
Hiding Workspace Configs in Launcher
![Workspace Paths](https://github.com/omegaui/app_fleet/raw/main/github/images/workspace-paths.png)
You can even hide some workspaces from coming the launcher mode by removing them from app-settings.json
this file contains app preferences and is located at $HOME/.config/app-fleet
Quick Task Launcher
There also exists a tiny version of this project, its called the floating-action-bar, which can be used to quickly launch anything on any Modern Desktop Environment.
What's next?
You can even try the latest beta by selecting the branch with latest
version number in the branches popup.
![](https://github.com/omegaui/app_fleet/raw/main/github/images/branches.png)
then, you need to install from source.
See what is planned for the next release.
Support Me
If you have really liked the project and want to support the development of App Fleet. Then, please consider buying me a coffee.
It helps me to work on the project in my free time.
Scan this Qr Code or
Click the button below to Buy Me a Coffee.