Coder Social home page Coder Social logo

dhibbitts / wallboard Goto Github PK

View Code? Open in Web Editor NEW

This project forked from appdotnet/wallboard

0.0 2.0 0.0 329 KB

A multi-monitor-aware, full-screen WebKit browser designed specifically for use with information radiators.

License: Other

Objective-C 100.00%

wallboard's Introduction

Wallboard

Wallboard is a web browser for OS X designed to be used primarily with information radiators. It has no UI; instead, upon startup, it fills every attached screen with a full-screen WebKit browser. Configuration is via command-line modification of the OS X user defaults store.

Usage

Before launch, configure URLs to load like so:

    $ defaults write net.app.Wallboard url.0 http://www.google.com
    $ defaults write net.app.Wallboard url.1 http://www.yahoo.com

URL keys are in the format url.<number>, where <number> is a zero-based index of attached screens. At the moment you may either quit the application or use the HTTP API to change the current page. Keyboard and mouse input should work, but have not been extensively tested.

Wallboard can be added to Login Items for a user with minimal permissions. Upon launch, Wallboard will load the URLs configured in the user defaults store.

Wallboard can be quit like a normal application — use ⌘Q.

HTTP API

Wallboard can also be configured via a HTTP API. Responses are JSON-encoded, and any POST bodies must be JSON-encoded as well. URL-encoded POST bodies are not allowed. At the moment, no mechanism for authentication is provided. Wallboard listens on port 9244 by default, but this can be changed:

    $ defaults write net.app.Wallboard httpport -int 9245

Wallboard advertises itself via Bonjour. The service name used is _wallboard._tcp..

The API may be disabled altogether if desired:

    $ defaults write net.app.Wallboard disablehttp -bool YES

GET /screens — Get all screens

    $ curl http://wallboard.local:9244/screens
    [
        {
            "saved_url" : "http:\/\/www.google.com",
            "current_url" : "http:\/\/www.google.com",
            "height" : 1080,
            "width" : 1920,
            "api_endpoint" : "\/screens\/0"
        },
        {
            "saved_url" : "http:\/\/www.yahoo.com",
            "current_url" : "http:\/\/www.yahoo.com",
            "height" : 1080,
            "width" : 1920,
            "api_endpoint" : "\/screens\/1"
        }
    ]

GET /screens/:screen_id — Get one screen

    $ curl http://wallboard.local:9244/screens/0
    {
        "saved_url" : "http:\/\/www.google.com",
        "current_url" : "http:\/\/www.google.com",
        "height" : 1080,
        "width" : 1920,
        "api_endpoint" : "\/screens\/0"
    }

Attempts to access screens which do not exist will return a 404.

POST /screens/:screen_id — Set URL

    $ curl -H 'Content-type: application/json' --data-ascii '{"url":"http://www.google.com"}' http://10.1.1.48:9244/screens/0
    {
        "saved_url" : null,
        "current_url" : "http:\/\/www.google.com\/",
        "height" : 1080,
        "width" : 1920,
        "api_endpoint" : "\/screens\/0"
    }

In addition, if the POSTed object includes "save": true, the user defaults object will be updated, and Wallboard will navigate to that URL when it is opened next.

Development

If you're hacking on Wallboard (please do!), you can disable full-screen mode by setting the following preference:

    $ defaults write net.app.Wallboard devmode -bool YES

Security concerns

Wallboard is designed for use on trusted networks. You can only navigate to http or https URLs via the API, but it may be possible to inject javascript into the browser instances.

Feedback

Email me if you have any questions: [email protected]. Or talk to me on App.net: I'm @berg.

wallboard's People

Contributors

berg avatar

Watchers

James Cloos avatar Daniel Hibbitts avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.