Siglaunchd

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(List of users configs)
Line 11: Line 11:
 
* author: Tom Hacohen <available_at_profile>
 
* author: Tom Hacohen <available_at_profile>
 
* this is a python script so code resides in /usr/bin/siglaunchd (hopefuly in a public svn soon)
 
* this is a python script so code resides in /usr/bin/siglaunchd (hopefuly in a public svn soon)
* link: [http://stosb.com/openmoko/siglaunchd_0.2.0_armv4t.ipk package]
+
* link: [http://stosb.com/openmoko/siglaunchd_0.2.1_armv4t.ipk package]
  
== How To Use ==
+
= How To Use =
 
siglaunchd connects to predefined dbus signals checks some parameters
 
siglaunchd connects to predefined dbus signals checks some parameters
 
and if the signal matches the application associated with it is launched.
 
and if the signal matches the application associated with it is launched.
Line 43: Line 43:
  
 
Please send me feedback about bugs/suggestions. Enjoy.
 
Please send me feedback about bugs/suggestions. Enjoy.
== Change Log ==
+
= Change Log =
 +
'''0.2.1:'''
 +
* fixed a minor regex spaces bug
 
'''0.2.0:'''
 
'''0.2.0:'''
 
* added spaces support for the configuartion file. spaces do not break the configuration anymore.
 
* added spaces support for the configuartion file. spaces do not break the configuration anymore.
Line 53: Line 55:
 
* wrote the profile-changer app, a script packed with the siglaunchd that controls the framework's phone profile using a gui.
 
* wrote the profile-changer app, a script packed with the siglaunchd that controls the framework's phone profile using a gui.
  
== TODO ==
+
= TODO =
 
* upgrade the rules system (add more complex variable types for comparison in the rules)
 
* upgrade the rules system (add more complex variable types for comparison in the rules)
 
* add errors (and a log file?) when the configuration file is broken
 
* add errors (and a log file?) when the configuration file is broken
Line 60: Line 62:
 
* change the config files to be in xml/other format instead of the current custom one
 
* change the config files to be in xml/other format instead of the current custom one
  
== List of users configs ==
+
= List of users configs =
 
This is a list of config lines users added. If you use any custom config yourself (you should, the stock config is a demo) please add it here so others may use them as well.
 
This is a list of config lines users added. If you use any custom config yourself (you should, the stock config is a demo) please add it here so others may use them as well.
=== AUX button - Launch The profile-changer (STOCK) ===
+
== AUX button - Launch The profile-changer (STOCK) ==
 
"DISPLAY=:0.0 /usr/share/siglaunchd/scripts/profile-changer"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>0
 
"DISPLAY=:0.0 /usr/share/siglaunchd/scripts/profile-changer"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>0
=== AUX button - Launch Terminal ===
+
== AUX button - Launch Terminal ==
 
"DISPLAY=:0.0 openmoko-terminal2"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1
 
"DISPLAY=:0.0 openmoko-terminal2"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1
=== AUX button - Launch [[Framework-settings]] ===
+
== AUX button - Launch [[Framework-settings]] ==
 
"DISPLAY=:0.0 python fso-settings"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1
 
"DISPLAY=:0.0 python fso-settings"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1
  
 
[[Category:Applications]]
 
[[Category:Applications]]

Revision as of 22:22, 18 November 2008


This project is daemon which listens to dbus signals and runs applications accordingly. The signals, application to run and some rules that will be evaluated against incoming dbus signals can be easily changed in the configuration file. This application is mainly intended to work with the openmoko framework so end users will be able to run application upon events without too much effort, though that isn't a limitation. For example, one can set the aux button to launch the dialer and the other can set a sound when screen is dimmed with as little as no effort.

(The default config file is set to run the profile-changer when the aux button is pressed for more than a second)

Contents

Package

  • author: Tom Hacohen <available_at_profile>
  • this is a python script so code resides in /usr/bin/siglaunchd (hopefuly in a public svn soon)
  • link: package

How To Use

siglaunchd connects to predefined dbus signals checks some parameters and if the signal matches the application associated with it is launched.

This daemon reads the configuration file looking for records of the type: bin=interface;busname;path;signal;rule1,rule2...
While:

  • bin is the binary to run (and parameters)
  • interface, busname, path and signal are dbus related
  • rules are seperated by a ',' and look like arg[id](=|<|>)value. arg[] is a configuration file patteren and shouldn't be changed.

For example if I a rule to check if the first parameter got from the dbus signal equals to "test" the rule will be: 0=test


Example configuration file line: "DISPLAY=:0.0 openmoko-terminal2"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1


I used this configuration to run the openmoko-terminal2 everytime I held the aux button for 2 seconds or more.

You can actually add as many lines you want to the config and associate as many applications needed to a single signal with different/same rules(in different lines) .

This daemon is designed for use with the openmoko framework, read about the framework dbus signals at: http://git.freesmartphone.org/?p=specs.git;a=blob_plain;f=html/index.html

Please send me feedback about bugs/suggestions. Enjoy.

Change Log

0.2.1:

  • fixed a minor regex spaces bug

0.2.0:

  • added spaces support for the configuartion file. spaces do not break the configuration anymore.
  • arg[id]>value is the new rules pattern and replaced the old id>value.
  • the daemon now starts when installed, no need to start it explicitly.
  • stopped using the deprecated os.system and started using the subprocess module

0.1.3:

  • added a scripts dir in /usr/share/siglaunchd/scripts/ that's the proper place to put custom user scripts (and stock example ones)
  • wrote the profile-changer app, a script packed with the siglaunchd that controls the framework's phone profile using a gui.

TODO

  • upgrade the rules system (add more complex variable types for comparison in the rules)
  • add errors (and a log file?) when the configuration file is broken
  • < and > only supports floats, add string support (= works with strings).
  • add support for SIGHUP so configuration will be loaded without app restart
  • change the config files to be in xml/other format instead of the current custom one

List of users configs

This is a list of config lines users added. If you use any custom config yourself (you should, the stock config is a demo) please add it here so others may use them as well.

AUX button - Launch The profile-changer (STOCK)

"DISPLAY=:0.0 /usr/share/siglaunchd/scripts/profile-changer"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>0

AUX button - Launch Terminal

"DISPLAY=:0.0 openmoko-terminal2"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1

AUX button - Launch Framework-settings

"DISPLAY=:0.0 python fso-settings"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1

Personal tools


This project is daemon which listens to dbus signals and runs applications accordingly. The signals, application to run and some rules that will be evaluated against incoming dbus signals can be easily changed in the configuration file. This application is mainly intended to work with the openmoko framework so end users will be able to run application upon events without too much effort, though that isn't a limitation. For example, one can set the aux button to launch the dialer and the other can set a sound when screen is dimmed with as little as no effort.

(The default config file is set to run the profile-changer when the aux button is pressed for more than a second)

Package

  • author: Tom Hacohen <available_at_profile>
  • this is a python script so code resides in /usr/bin/siglaunchd (hopefuly in a public svn soon)
  • link: package

How To Use

siglaunchd connects to predefined dbus signals checks some parameters and if the signal matches the application associated with it is launched.

This daemon reads the configuration file looking for records of the type: bin=interface;busname;path;signal;rule1,rule2...
While:

  • bin is the binary to run (and parameters)
  • interface, busname, path and signal are dbus related
  • rules are seperated by a ',' and look like arg[id](=|<|>)value. arg[] is a configuration file patteren and shouldn't be changed.

For example if I a rule to check if the first parameter got from the dbus signal equals to "test" the rule will be: 0=test


Example configuration file line: "DISPLAY=:0.0 openmoko-terminal2"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1


I used this configuration to run the openmoko-terminal2 everytime I held the aux button for 2 seconds or more.

You can actually add as many lines you want to the config and associate as many applications needed to a single signal with different/same rules(in different lines) .

This daemon is designed for use with the openmoko framework, read about the framework dbus signals at: http://git.freesmartphone.org/?p=specs.git;a=blob_plain;f=html/index.html

Please send me feedback about bugs/suggestions. Enjoy.

Change Log

0.2.0:

  • added spaces support for the configuartion file. spaces do not break the configuration anymore.
  • arg[id]>value is the new rules pattern and replaced the old id>value.
  • the daemon now starts when installed, no need to start it explicitly.
  • stopped using the deprecated os.system and started using the subprocess module

0.1.3:

  • added a scripts dir in /usr/share/siglaunchd/scripts/ that's the proper place to put custom user scripts (and stock example ones)
  • wrote the profile-changer app, a script packed with the siglaunchd that controls the framework's phone profile using a gui.

TODO

  • upgrade the rules system (add more complex variable types for comparison in the rules)
  • add errors (and a log file?) when the configuration file is broken
  • < and > only supports floats, add string support (= works with strings).
  • add support for SIGHUP so configuration will be loaded without app restart
  • change the config files to be in xml/other format instead of the current custom one

List of users configs

This is a list of config lines users added. If you use any custom config yourself (you should, the stock config is a demo) please add it here so others may use them as well.

AUX button - Launch The profile-changer (STOCK)

"DISPLAY=:0.0 /usr/share/siglaunchd/scripts/profile-changer"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>0

AUX button - Launch Terminal

"DISPLAY=:0.0 openmoko-terminal2"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1

AUX button - Launch Framework-settings

"DISPLAY=:0.0 python fso-settings"=org.freesmartphone.Device.Input;org.freesmartphone.oeventsd;/org/freesmartphone/Device/Input;Event;arg[0]=AUX,arg[1]=released,arg[2]>1