A Service is an instance of a GObject.Object
that emits signals when its state changes.
Widgets can connect to them and execute a callback function on their signals
which are usually functions that updates the widget’s properties.
Widget . Label ({
// the signal is 'changed' if not specified
// [Service, callback, signal = 'changed']
setup : self => self . hook ( someService , function ( self , ... args ) {
// there can be other arguments based on signals
self . label = ' new label '
}, ' changed ' )
})
Widget . Label ({
label: someService . bind ( ' service-prop ' ) . as ( serviceProp => {
return ` transformed ${ serviceProp } `
}),
})
Utility to have multiple bindings as one
Widget . Label ({
label: Utils . merge ([ service1 . bind ( " prop1 " ), service2 . bind ( " prop2 " )], ( p1 , p2 ) => {
return ` service1.prop1: ${ p1 } , service2.prop2: ${ p2 } `
}),
})
Services can be also connected outside of widgets
someService . connect ( ' changed ' , ( service , ... args ) => {
print ( service , ... args )
})
List of builtin services
use Service.import
const battery = await Service . import ( ' battery ' )
or if you prefer static import
import { battery } from ' resource:///com/github/Aylur/ags/service/battery.js ' ;