mirror of https://github.com/cutefishos/appmotor
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
# Cutefish AppMotor
 | 
						|
 | 
						|
Optimize the speed of starting cutefish apps.
 | 
						|
 | 
						|
## Dependencies
 | 
						|
 | 
						|
Debian/Ubuntu Dependencies:
 | 
						|
 | 
						|
```shell
 | 
						|
sudo apt install cmake qtbase5-dev qtdeclarative5-dev qtquickcontrols2-5-dev libsystemd-dev libcap-dev
 | 
						|
```
 | 
						|
 | 
						|
## Build
 | 
						|
 | 
						|
```shell
 | 
						|
mkdir build
 | 
						|
cd build
 | 
						|
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
 | 
						|
make
 | 
						|
sudo make install
 | 
						|
```
 | 
						|
 | 
						|
## Introduction
 | 
						|
 | 
						|
Applauncherd is a daemon that helps to launch applications faster by
 | 
						|
preloading dynamically linked libraries and caching stuff.
 | 
						|
It also saves memory, because all launched applications share certain resources.
 | 
						|
 | 
						|
Applauncherd also provides support for fast single instance launches.
 | 
						|
 | 
						|
Some technical details are explained below.
 | 
						|
 | 
						|
Install applauncherd-doc for the Doxygen-based user documentation.
 | 
						|
See INSTALL on how to build applauncherd and the documentation.
 | 
						|
 | 
						|
Booster daemons (written using the provided library) are started as part of the
 | 
						|
user session. The booster is responsible for forking the will-be-application
 | 
						|
before knowing which application is going to be launched next. There can be
 | 
						|
different kinds of boosters optimized for different kinds of
 | 
						|
applications, e.g. Qt or QML.
 | 
						|
 | 
						|
In the current architecture boosters are implemented as seperate processes,
 | 
						|
using the provided support library. Each booster process waits for launch
 | 
						|
commands.
 | 
						|
 | 
						|
The user uses the launcher always through a special invoker program. The
 | 
						|
invoker (/usr/bin/invoker) tells booster process to load an application
 | 
						|
binary via a socket connection. 
 | 
						|
 | 
						|
The application to be launched via applauncherd should be compiled as a
 | 
						|
shared library or a position independent executable (-pie) and it should
 | 
						|
always export main(). There's also a "booster" for all applications.
 | 
						|
In that case exec() is used.
 | 
						|
 | 
						|
## Technical details
 | 
						|
 | 
						|
Loading the binary is done with dlopen(), and therefore the
 | 
						|
application needs to be compiled and linked as a shared library or a
 | 
						|
position independent executable. The booster process also sets the
 | 
						|
environment variables. Finally, it finds the main function in the
 | 
						|
application binary with dlsym() and calls the main() with the command
 | 
						|
line arguments given by the invoker.
 | 
						|
 | 
						|
Booster processes do some initializations that cannot be shared among
 | 
						|
other processes and therefore have to be done after forking. This allows,
 | 
						|
for instance, instantiating a application before knowing the
 | 
						|
name of the application. Then the booster process waits for a connection
 | 
						|
from the invoker with the information about which application should be
 | 
						|
launched. 
 | 
						|
 | 
						|
## Contributors
 | 
						|
 | 
						|
People who have contributed to mapplauncherd:
 | 
						|
 | 
						|
Robin Burchell
 | 
						|
John Brooks
 | 
						|
Thomas Perl
 | 
						|
 | 
						|
People who have contributed to meegotouch-applauncherd:
 | 
						|
 | 
						|
Olli Leppänen
 | 
						|
Jussi Lind
 | 
						|
Juha Lintula
 | 
						|
Pertti Kellomäki
 | 
						|
Antti Kervinen
 | 
						|
Nimika Keshri
 | 
						|
Alexey Shilov
 | 
						|
Oskari Timperi
 | 
						|
 | 
						|
Some parts of the code is based on the maemo-launcher by:
 | 
						|
 | 
						|
Guillem Jover
 | 
						|
Michael Natterer
 | 
						|
 | 
						|
## License
 | 
						|
 | 
						|
This project has been licensed by LGPL-2.1.
 |