Skip to content

Command Line Controls

Dani John edited this page Dec 1, 2023 · 214 revisions

Lively can be controlled with commands from terminal which allows interaction through scripts or third party applications.

Contents

Instruction

Make sure Lively is already running and then send the commands through its main executable.

(Alternatively download the command utility which includes --help documentation and also if required set it as PATH for easy access.)

For example the wallpaper audio can by muted by running the following commands

without PATH variable:

<install_location>\lively.exe app --volume 0

with PATH variable and command utility:

livelycu app --volume 0

Note:

There will be a 1sec delay for script execution if you directly send message to Lively executable instead of the command utility

Commands

Open Application

Open Lively main application.

--showApp <state>

state: true/false - open/minimize Lively tray application.

Quit Application

Close all wallpapers and exit Lively.

--shutdown <state>

state: true/false

Wallpaper Playback

Control wallpaper playback state.

--play <state>

state: true/false - play/pause wallpapers.

Wallpaper Volume

Set global sound level of all wallpapers.

--volume <volume-level>

volume-level: Number in the range 0-100.

Screenshot

Take wallpaper screenshot.

screenshot --file <file-path> --monitor <screen-id>

screen-id: (optional) The screen number as seen in Lively control panel, if not given primary screen is default.

file-path: Screenshot savefile location (.jpg)

Desktop Icon

Control desktop icon visibility.

--showIcons <state>

state: true/false - show/hide desktop icons.

Screen Saver

Show currently running wallpaper as screen saver.

screensaver --show <state>

state: true/false - start/stop screen saver.

Set Wallpaper

setwp --file <file-path> --monitor <screen-id>

screen-id: (optional) The screen number as seen in Lively control panel, if not given primary screen is default.

file-path: Folder path containing LivelyInfo.json project file/File path of the wallpaper file.

Example:

Set wallpaper project to primary screen.

setwp --file "C:\Users\rocks\AppData\Local\Lively Wallpaper\Library\wallpapers\xyz"

Set wallpaper file to screen 1.

```setwp --file "D:\media\video.mp4" --monitor 1````

Close Wallpaper(s)

Closes the running wallpaper on the given screen.

closewp --monitor <screen-id>

screen-id: The screen number as seen in Lively control panel, if -1 then all wallpapers are closed.

Seek Wallpaper

Sets wallpaper playback position.

seekwp --monitor <screen-id> --value <seek_value>

screen-id: (optional) The screen number as seen in Lively control panel, if not given primary screen is default.

seek_value: Playback position value, several possible combinations given below.

  • Absolute: Percentage(0 to 100) value, seeks to the given percent position.

    Example: seekwp --value 10.5

  • Relative: Percentage(-100 to 100) value starting with + or -, seeks from the current media position.

    Example: seekwp --value +10

Special cases:

For webpages only value of 0 have effect which reloads the page.

Customize Wallpaper

Set the Lively Properties of the wallpaper.

setprop --monitor <screen-id> --property <arg>

screen-id: (optional) The screen number as seen in Lively control panel, if not given primary screen is default.

arg: LivelyProperty.json argument, syntax "keyValue=value".

  • keyValue: JSON key name.
  • value: Absolute value or Increment/decrement from current value when starting with ++/-- respectively.

Make sure to enclose the arg inside double quotes so that spaces in text are correctly parsed.

To get the keyValue navigate to the wallpaper project folder and check LivelyProperties.json file.

Examples:

To change the color control:

   "backgroundColor": {
    "text": "Overlay Color",
    "type": "color",
    "value": "#C0C0C0"
  }

setprop --monitor 1 --property "backgroundColor=#ff0000"

To increment current value from 25 to 30:

  "saturation": {
    "max": 100,
    "min": -100,
    "tick": 200,
    "text": "Saturation",
    "type": "slider",
    "value": 25
  }

setprop --property "saturation=++5"

To change the file in folderDropdown control:

   "imgSelect": {
    "type": "folderDropdown",
    "value": "image3.jpg",
    "text": "Image",
    "filter": "*.jpg|*.png",
    "folder": "wallpapers"
  }

setprop --monitor 1 --property "imgSelect=image1.jpg"

Special cases:

Reset properties: setprop --monitor 1 --property "lively_default_settings_reload=true"

Button press: setprop --monitor 1 --property "button_name=true"

The default Livelyproperty of media files can be referred here.

Placement Method

Changes the wallpaper placement method after closing the running wallpapers.

--layout <placement>

placement: per, span or duplicate.

Python

Python scripts can be used to control Lively, for example:

import subprocess

def changeProperty(name, value, monitor):
    """
    Customize running wallpaper.
    """
    runCommand(['setprop', f'--monitor={monitor}', f'--property={name}={value}'])
    return;

def setWallpaper(path, monitor):
    """
    Set a wallpaper from the library.
    """
    runCommand(['setwp', f'--monitor={monitor}', f'--file={path}'])
    return;
   
def runCommand(args):
    """
    Execute lively commandline command with the list of arguments.
    Copy Livelycu.exe to the program folder or system PATH.
    """
    si = subprocess.STARTUPINFO()
    si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    subprocess.run(['Livelycu'] + args, startupinfo=si)
    return;

setWallpaper('D:\\test\\test_clip.mp4', 1)
#changeProperty('hue', 30, 1)

AutoHotkey

The following AutoHotkey scripts execute when Win + Z key is pressed.

Requires adding Lively command utility to system PATH variable.

Audio toggle

Toggle wallpaper volume between 0 and 75.

toggle:= false
; hotkeys - winkey-z
#z::
toggle := !toggle
If toggle
{
  Run cmd.exe /c livelycu.exe app --volume 0,,hide 
}
else
{
  Run cmd.exe /c livelycu.exe app --volume 75,,hide 
}

Wallpaper shuffle

Sets a random wallpaper by creating wallpapers.txt file alongside ahk script.

; Create the array, initially empty:
Array := Array()

; Write to the array:
Loop, Read, wallpapers.txt ; This loop retrieves each line from the file, one at a time.
{
    Array.Push(A_LoopReadLine) ; Append this line to the array.
}

#z::
command := "livelycu.exe setwp --file " . """"Array[random(Array.MinIndex(), Array.MaxIndex())]""""
Run cmd.exe /c %command%,,hide

random( x, y )
{
   Random, var, %x%, %y%
   return var
}
wallpapers.txt
C:\Users\rocks\AppData\Local\Lively Wallpaper\Library\wallpapers\aiqzbihh.0ho
C:\Users\rocks\Documents\GIFS\Car.gif

Random hue (video wallpaper)

Sets a random hue value for the running wallpaper.

#z::
command := "livelycu.exe setprop --property hue=" . random(-100,100)
Run cmd.exe /c %command%,,hide

random( x, y )
{
   Random, var, %x%, %y%
   return var
}

Seek Step (video wallpaper)

Skips forward/backward wallpaper playback position by 10 percentage.

; hotkeys - winkey-z
#z::
command := "livelycu.exe seekwp --value +10"
Run cmd.exe /c %command%,,hide 

Screen saver

Set currently running wallpaper(s) as fullscreen screen saver(s.)

#z::
Run cmd.exe /c livelycu.exe screensaver --show true,,hide 

Rainmeter

The following Rainmeter meters require adding Lively command utility to system PATH variable.

Day/Night Hue (video wallpaper)

In this example color of wallpaper is changed based on time of day.

[Rainmeter]
Update=1000
AccurateText=1

[Metadata]
Name=Lively Hue
Author=rocksdanister
Information=Cycles different video hue property based on time.
Version=1.0
License=MIT

[Variables]

[MeterDummy]
Meter=String

[MeasureRunDay]
Measure=Plugin
Plugin=RunCommand
Program=livelycu.exe
Parameter=setprop --property hue=-40
State=Hide

[MeasureRunNight]
Measure=Plugin
Plugin=RunCommand
Program=livelycu.exe
Parameter=setprop --property hue=70
State=Hide

[MeasureHour]
Measure=Time
Format=%H
IfCondition=((MeasureHour >= 6) && (MeasureHour < 18))
IfTrueAction=[!CommandMeasure "MeasureRunDay" "Run"]
IfFalseAction=[!CommandMeasure "MeasureRunNight" "Run"]

Arduino

This tutorial is not updated for Lively 2.0

Full project files can be downloaded from here.

Rotary hue changer (video only)

In this example color of wallpaper is changed using rotary hardware.

C# Message receiver

class Program
{
  private static int hue = 0;
  private static readonly string uniqueAppName = "LIVELY:DESKTOPWALLPAPERSYSTEM";
  private static readonly string pipeServerName = uniqueAppName + Environment.UserName;

  static void Main(string[] args)
  {
    var connection = new SharerConnection("COM3", 115200);
    connection.Connect();
    connection.UserDataReceived += UserDataReceived;
    Console.ReadKey();
  }

  private static void UserDataReceived(object sender, UserDataReceivedEventArgs e)
  {
    string msg = System.Text.Encoding.ASCII.GetString(e.Data);
    if (int.TryParse(msg, out int val))
    {
      hue = val == 1 ? (hue+10) : (hue-10);
      //or execute livelycu commandline commands..
      livelywpf.Helpers.PipeClient.SendMessage(
        pipeServerName, 
        new string[] { "setprop", "--property", "hue=" + Clamp(hue, -100, 100)});
    }
  }

  public static T Clamp<T>(T value, T min, T max) where T : IComparable<T>
  {
    if (value.CompareTo(min) < 0)
      return min;
    if (value.CompareTo(max) > 0)
      return max;

     return value;
  }
}

Arduino code

#include <Sharer.h>
#include <RotaryEncoder.h>

#define PIN_IN1 15
#define PIN_IN2 16

RotaryEncoder encoder(PIN_IN1, PIN_IN2, RotaryEncoder::LatchMode::FOUR3);

void setup() {
  Sharer.init(115200); // Init Serial communication with 115200 bauds
}

void loop() {
  Sharer.run();
  Sharer.print(readRotatory());
}

int readRotatory(){
  static int pos = 0;
  encoder.tick();
  int newPos = encoder.getPosition();
  
  if (pos != newPos){
    pos = newPos;
    int dir =(int)(encoder.getDirection());
    if ( dir == -1) 
      return 1;
    else if(dir == 1) 
      return -1;
  }
  return 0;
}