LG WebOS TV and GNU Emacs

Modern LG TVs with WebOS allow remote control via websockets. Since this is a web technology, you might want to automate this using Node JS [1]. However, if you want a fair balance between scripting and interactive use, Emacs will serve you better.

Toast (top right) sent from Emacs


Completing LG TV commands in Emacs


  1. Install package websocket from ELPA.
    M-x package-install RET websocket RET 

  2. Download tv.el and pairing.json
  3. Load tv.el
    M-x load-library RET tv RET 

  4. Ensure variable lgtv--pairing-json is pointing to pairing.json file.
  5. Run M-x lgtv-command
  6. Enter a command for LG TV. Use TAB for completion.
  7. Enter a JSON object for command parameter. Leave empty if the command doesn't require a parameter. (Note: Remember to quote the keys in JSON.)

;; Sample payload passed to TV. You need to provide URI (without ssap://) and payload parts
;; Show toast
{ "id": "0c8b18a10002", "type": "request", "uri": "ssap://system.notifications/createToast","payload": {"message":"TV is being controlled by Emacs"} }
;; Play youtube video. Note - some content might not work
{ "id": "0c8b18a10002", "type": "request", "uri": "ssap://system.launcher/launch","payload": {"contentId":"dQw4w9WgXcQ", "id": "youtube.leanback.v4"} }






  1. https://github.com/msloth/lgtv.js
  2. Commands list 
  3. Emacs websocket



Popular posts from this blog

Formula Editor in GNU Emacs

Draw and Scribble Notes in GNU Emacs

GNU Emacs: A configurable browser