app-fleet.mp4
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.
App Fleet comes with a self-update and uninstall feature.
See CHANGELOG for a full feature list.
🎗️ 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.
You need to have wmctrl
installed on your system, or else app-fleet won't be able to switch workspaces automatically as expected.
On Debian or Ubuntu,
sudo apt install wmctrl
On Fedora,
sudo dnf install wmctrl
For other distributions, look out for instructions.
Copy and run the following in your terminal:
curl https://raw.githubusercontent.com/omegaui/app_fleet/main/network-install.sh | bash
git clone https://github.com/omegaui/app-fleet
cd app-fleet/package
./install.sh
git clone https://github.com/omegaui/app-fleet
cd app-fleet/package
./install-from-source.sh
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:
curl https://raw.githubusercontent.com/omegaui/app_fleet/main/network-update.sh | bash
git clone https://github.com/omegaui/app-fleet
cd app-fleet/package
./update.sh
git clone https://github.com/omegaui/app-fleet
cd app-fleet/package
./update-from-source.sh
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
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.
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).
Configurations are saved in a readable format i.e., json.
You can directly edit the workspace configs located at $HOME/.config/app-fleet/workspaces
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
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.
You can even try the latest beta by selecting the branch with latest
version number in the branches popup.
then, you need to install from source.
See what is planned for the next release.
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.