-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Web Guide IV : Interaction
By default only mouse input is enabled for wallpaper, keyboard can be enabled by:
Lively settings -> Wallpaper ->Interaction -> Wallpaper Input -> Keyboard
![](https://private-user-images.githubusercontent.com/17554161/239680460-b7a9e8d9-4219-4e6e-a2cf-b98974215d73.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8yMzk2ODA0NjAtYjdhOWU4ZDktNDIxOS00ZTZlLWEyY2YtYjk4OTc0MjE1ZDczLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThiODJmYzFlNWZhYzAwZGM0ODMwNTg2MmY0MDU2NjE4ZDVjYzYzMDU0ODk5YjFiYmViZDMyM2JmYTkzYzkxZjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.vTY_jYSy_ZyfccHZSxUQqtybM27hb_8rz914nqZ_MTM)
Note
Application wallpapers can create their input hooks, so disabling input does not guarantee input to be disabled for them.
![](https://private-user-images.githubusercontent.com/17554161/332648340-858eb765-e123-4b14-a2f1-5d8456f1f9d1.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8zMzI2NDgzNDAtODU4ZWI3NjUtZTEyMy00YjE0LWEyZjEtNWQ4NDU2ZjFmOWQxLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZjYTNiOTNkYjZjMDAyNmY1YjA2NGFkYWZmMDhhZDQ5ZTM0NjMxNjEzMTgwODIwYjI0OTMzOWRjNWQyY2QwOWYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.L5esa1DXhITG-pgPnQ4l-WGYHAgqg-7QU8xzKF80pko)
Recommended and persistent way to interact with webpage wallpapers is via LivelyProperty API.
- Saves values on disk, next time you open the wallpaper this settings will be restored.
- Supports multiple displays, each display will have its own properties & will be restored accordingly.
- Has Restore Default option which resets all user modified values to default value the wallpaper came with.
- Its super easy to setup and most of the work is done for you already.
- Works across different wallpaper layouts - span, duplicate and perscreen with each layout having its own property file.
- Can be paired with other Lively features like commandline control.
- Officially supported and updated through Lively.
- Create LivelyProperties.json text file in wallpaper location, lively will generate menu's based on this file.
- In the webpage write
livelyPropertyListener(name, val)
event function, this will be called everytime user interacts with the menu. - Once wallpaper is launched right-click it in gallery and select
Customise
Example:
{
"property1Class": {
"max": 100,
"min": 0,
"text": "Property 1",
"type": "slider",
"help": "This is a tooltip",
"value": 43
},
"color1Class": {
"text": "Color 1",
"type": "color",
"value": "#C0C0C0"
}
}
LivelyProperties.json file in wallpaper root directory.
function livelyPropertyListener(name, val)
{
// or switch-case...
if(name =="property1Class")
{
console.log(val); //43
}
else if(name =="color1Class")
{
console.log(val); //#C0C0C0
}
}
Javascript function, lively property change event.
You can check out the Raindrop project for a complete example.
Note:
- The class names should start with lowercase letter.
- Lively will make a copy of the LivelyProperties.json file and make modification to the copy only, so inorder to update the copy with the source folder file click on Restore Default.
- livelyPropertyListener is called once when page is loaded to initialize webpage based on the value field in LivelyProperties.json
- This is a one way communication, as the user interacts with gui the value field in json is updated; restoring the settings next time wallpaper is launched.
- All the fields are required, follow the syntax provided below.
![slider](https://private-user-images.githubusercontent.com/17554161/239680895-99251857-a0c3-4f5c-93dc-31d3955228fd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8yMzk2ODA4OTUtOTkyNTE4NTctYTBjMy00ZjVjLTkzZGMtMzFkMzk1NTIyOGZkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ5OWJhYWRjNjg1NDBjM2ZhNGI1NTU1YTQwMDQ1Njg1YjlhMzJlODU5ODhlZWZjMTQyZWI5ZWZkYjM4YmVjYmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.4aA32spgtccCuSGjzViPjiaB4_FjppYLVT5ZNvk45UY)
Returns: Integer.
{
"rainIntensity": {
"max": 100,
"min": 0,
"step": 0.01,
"text": "Intensity",
"type": "slider",
"help": "Control the intensity of Rain",
"value": 43
}
}
![textbox](https://private-user-images.githubusercontent.com/17554161/332649048-f02fb54d-326d-42d2-81a1-27bb6b37178e.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8zMzI2NDkwNDgtZjAyZmI1NGQtMzI2ZC00MmQyLTgxYTEtMjdiYjZiMzcxNzhlLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcyZDkxMzM2Nzg1YjVlMWE2ZjU1ZmRjM2E0NjMyNjY3YWNiYjA4MmViZjZmZTg2MzY3ZjI5YjFmMmU0NDEzYWUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0._RP9rtvVftH09CvUaeZKRyi1SMKpD4Et13gkVeP-i_w)
Returns: String.
Event is called each time a key is pressed.
{
"apiKey": {
"text" : "Enter API Key",
"type" : "textbox",
"value" : "Text here"
}
}
![dropdown](https://private-user-images.githubusercontent.com/17554161/332649215-927098fa-bd7c-42d8-9465-577237ae7e5d.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8zMzI2NDkyMTUtOTI3MDk4ZmEtYmQ3Yy00MmQ4LTk0NjUtNTc3MjM3YWU3ZTVkLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNhZDk4ZTcyOTY0NmRhNDExNjdmNjFmODFiMjRmZjRhZjcxZGQ1MzJlNWIyMWYyYjRkYTBiOGJiMjI4Zjc3YTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.HxxYehyB-JinPDekS4hIJjCWzmlAbVIW0wqieI4IeVk)
Returns: item array index, starting from 0
{
"imgSelect": {
"type": "dropdown",
"value": 1,
"text": "Image",
"items": [
"City",
"Mountain",
"Forest",
"Leaves"
]
}
}
![folder-dropdown](https://private-user-images.githubusercontent.com/17554161/332648766-fbc73bad-0ae0-45d4-80db-d29fa760b48d.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8zMzI2NDg3NjYtZmJjNzNiYWQtMGFlMC00NWQ0LTgwZGItZDI5ZmE3NjBiNDhkLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM0ODRhMDFiNjY2NmU3MzAyNDViN2ZkNDMxNDE4MWRiN2FjMzI1NDI5OGQ1MDc0Y2FkNmViNzM5MDM1ZjZiOTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.KfiAEHcIqRro58TjsPGr__wAPanJgZ5o8JcS4gkMf-w)
Scans the given folder & populate the dropdown list automatically; has an optional FileDialog for adding more files.
Returns: Relative file location if file exists, null otherwise.
{
"imgSelect": {
"type": "folderDropdown",
"value": "forest.jpg",
"text": "Image",
"filter": "*.jpg|*.png",
"folder": "textures"
}
Note:
- Only works for directory within parent html file, inner directories are ignored.
![button](https://private-user-images.githubusercontent.com/17554161/332649403-6054ed75-3111-42aa-a13d-09aca19dbee8.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8zMzI2NDk0MDMtNjA1NGVkNzUtMzExMS00MmFhLWExM2QtMDlhY2ExOWRiZWU4LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTlmNmEwOTM3M2ZlOWZhOTFkN2I1ZDc1NTBjNGNiNDlhMzM2YmQyNTVlOTFjMjE0NmE5YTI2NDAxOTM1NWUwYjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Dt8oEMsFuyz6jqWMokmT79Gnc0z6eg9fhantFuYjZz4)
Returns: value String.
{
"btnOK" : {
"text" : "Click the OK button",
"type" : "button",
"value" : "OK"
}
}
![color-picker](https://private-user-images.githubusercontent.com/17554161/251486924-e629b0d6-bd16-4def-bdca-144c94cc587a.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8yNTE0ODY5MjQtZTYyOWIwZDYtYmQxNi00ZGVmLWJkY2EtMTQ0Yzk0Y2M1ODdhLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMzMGZlNDA3ZDNmYjhhOGU1Zjc0NjIyMjcwOTZmMWI1Mjc5NzU2ODZhNjAzMzcwMzZmZDIyZWVlMTIwYzEyNjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.7oK3yjsFd-eqqCgF4r0STKEP_0QpaS9nedxZ5En-1rY)
Returns: hex color string in format #RRGGBB
{
"overlayColor": {
"text": "Overlay Color",
"type": "color",
"value": "#C0C0C0"
}
}
![checkbox](https://private-user-images.githubusercontent.com/17554161/239681185-c7d1a0f7-1bed-458a-bac5-893c5e5f6f4a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8yMzk2ODExODUtYzdkMWEwZjctMWJlZC00NThhLWJhYzUtODkzYzVlNWY2ZjRhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAxNzNkMzRmNDg4ZGY1ZDU1MTM2N2MwZDNhOTc5MWUxNjM5NzRlNzhlYzA5NmVhYmU5YWZlY2NmMzc0YWJmMzYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.H-7_5yQ1qBGwGCYJPZ-hAl62FFhZ15KwiceG4AbGMEI)
Returns: true or false.
{
"postProcessingChk": {
"type": "checkbox",
"value": true,
"text": "Post Processing"
}
}
![label](https://private-user-images.githubusercontent.com/17554161/332649546-ce89df1e-5738-445b-b19b-41d335edc371.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTU5MDgsIm5iZiI6MTczOTM1NTYwOCwicGF0aCI6Ii8xNzU1NDE2MS8zMzI2NDk1NDYtY2U4OWRmMWUtNTczOC00NDViLWIxOWItNDFkMzM1ZWRjMzcxLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEwMjAwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJjOGQ5OGFkMjBiOGU1NDc5YzZhZWU4NGU2YjJlMTIzNzE5NmRiZWI0YzlkNjhkMmFkZmY3ZDEzYmY4ZjcwZmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.dq0aQhGYVh3vu_GfnI_3GFaxtKrMMw1xBbbC7-3XBpI)
Returns: value String.
{
"label1": {
"type": "label",
"value": "This is a title"
}
}
Default Lively Properties is used if user defined one is not present in the wallpaper media folder.
{
"saturation": {
"max": 100,
"min": -100,
"tick": 200,
"text": "Saturation",
"type": "slider",
"value": 0
},
"hue": {
"max": 100,
"min": -100,
"tick": 200,
"text": "Hue",
"type": "slider",
"value": 0
},
"brightness": {
"max": 100,
"min": -100,
"tick": 200,
"text": "Brightness",
"type": "slider",
"value": 0
},
"contrast": {
"max": 100,
"min": -100,
"tick": 200,
"text": "Contrast",
"type": "slider",
"value": 0
},
"gamma": {
"max": 100,
"min": -100,
"tick": 200,
"text": "Gamma",
"type": "slider",
"value": 0
},
"speed": {
"max": 5,
"min": 0.25,
"tick": 10,
"step": 0.01,
"text": "Speed",
"type": "slider",
"value": 1
},
"scaler": {
"type": "scalerDropdown",
"value": 3,
"text": "Choose a Fit",
"help": "Wallpaper scaling algorithm",
"items": [
"None",
"Fill",
"Uniform",
"Uniform Fill"
]
},
"mute": {
"type": "checkbox",
"value": false,
"text": "Mute"
}
}
JSON Schema for Lively Properties can be found here and Schema Store
- Home
- Getting Started
- Video Wallpaper
- Streaming Wallpaper
- Application Wallpaper
- GIF Wallpaper
- Web Wallpaper
- Machine Learning
- Screen Saver
- Performance
- Command Line Controls
- Taskbar Customization
- Theme
- Differences Between Distributions
- Common Problems
- Building
- Contributing Guidelines
- Wallpaper Tutorials