From 196b9cb8c8721d77901fd8650950f60f1da7c0c8 Mon Sep 17 00:00:00 2001 From: Thomas Ruoff Date: Wed, 2 Mar 2016 00:13:53 +0100 Subject: [PATCH] update readme and usage --- README.md | 43 ++++++++++++++++++++++++++++++++----------- cli.js | 44 +++++++++++--------------------------------- usage.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 44 deletions(-) create mode 100644 usage.js diff --git a/README.md b/README.md index a676789..cbbcebe 100644 --- a/README.md +++ b/README.md @@ -2,30 +2,51 @@ Simple helper for turning on/off connected/disconnected monitors with `xrandr`. -## Usage -`swm [monitor-1...montior-n] [--postCmd="cmd"]` e.g. `swm LVDS1 HDMI1` +## Synopsis +`swm` -If `monitor-1` to `monitor-n` is specified `swm` will turn on these monitors -and place them from left to right in the order given. If a provided monitor is -not connected it will be skipped. +`swm [monitor-1..montior-n]` + +`swm --profile external` + +`swm --list` + +## Description +To turn on/off connected/disconnected monitors. If no monitors are specified all connected monitors will be turned on and placed from left to right in alphabetical order of their name. -If `--postCmd` is given, this command is executed after switching the monitors. -This is usefull to tell your window manager to re-detect monitors, e.g. for -herbstluftwm `herbstclient reload`. +If monitors `monitor-1..monitor-n` are specified these monitors will be turned +on and place them from left to right in the order given. -`swm -l` or `swm --list` +* `--profile profilename` or `-p profilename` -List all devices with the connectivity status. + If a profile is specified, the configured monitors will be turned on. + +* `--postCmd "some cmd"` + + A post command is executed after switching the monitors. This is usefull to + tell your window manager to re-detect monitors, e.g. for herbstluftwm + `herbstclient reload`. + +* `-l` or `swm --list` + + List all devices with the connectivity status. + +## Configuration The configuration can be placed in `$XDG_CONFIG_HOME/switchmon/config.json` in the form of ``` { - "postCmd": "some command" + "postCmd": "some command", + "profiles": { + "internal": ["LVDS1"], + "external": ["HDMI1"], + "dual": ["LVDS1", "HDMI1"] + } } ``` diff --git a/cli.js b/cli.js index c5741e9..d71c69b 100755 --- a/cli.js +++ b/cli.js @@ -2,44 +2,21 @@ 'use strict'; const argv = require('minimist')(process.argv.slice(2)); + const swm = require('./swm.js'); const config = require('./config.js'); +const usage = require('./usage.js'); + const postCmd = argv.postCmd || config.postCmd; const profile = argv.profile || argv.p; +function connectionStatus(device) { + return device.connected ? 'Connected' : 'Disconnected'; +} + if (argv.help || argv.h) { - console.log( -`Simple helper for turning on/off connected/disconnected monitors with 'xrandr'. - -Usage: - -'swm [monitor-1...montior-n] [--postCmd="cmd"]' e.g. 'swm LVDS1 HDMI1' - -If 'monitor-1' to 'monitor-n' is specified 'swm' will turn on these monitors -and place them from left to right in the order given. If a provided monitor is -not connected it will be skipped. - -If no monitors are specified all connected monitors will be turned on and -placed from left to right in alphabetical order of their name. - -If "--postCmd" is given, this command is executed after switching the monitors. -This is usefull to tell your window manager to re-detect monitors, e.g. for -herbstluftwm "herbstclient reload". - -'swm -l' or 'swm --list' - -List all devices with the connectivity status. - -The configuration can be placed in "$XDG_CONFIG_HOME/switchmon/config.json" in -the form of - -{ - "postCmd": "some command" -}` - - ); - - process.exit(2); + console.log(usage); + process.exit(0); } const devices = swm.getDevices(); @@ -50,7 +27,7 @@ if (argv.list || argv.l) { console.log('Detected devices:\n'); Object.keys(devices) .sort(key => !devices[key].connected) - .forEach(key => console.log(key + ':', devices[key].connected ? 'Connected' : 'Disconnected')); + .forEach(key => console.log(key + ':', connectionStatus(devices[key]))); process.exit(0); }); } else { @@ -73,5 +50,6 @@ if (argv.list || argv.l) { .then(swm.executePostCmd.bind(null, postCmd)) .catch(err => { console.error(err); + process.exit(2); }); } diff --git a/usage.js b/usage.js new file mode 100644 index 0000000..2dfbe3f --- /dev/null +++ b/usage.js @@ -0,0 +1,47 @@ +const usage = `Synopsis + + swm + swm [monitor-1..montior-n] + swm --profile external + swm --list + +Description + + To turn on/off connected/disconnected monitors. + + If no monitors are specified all connected monitors will be turned on and + placed from left to right in alphabetical order of their name. + + If monitors monitor-1..monitor-n are specified these monitors will be turned + on and place them from left to right in the order given. + + --profile profilename or -p profilename + If a profile is specified, the configured monitors will be turned on. + + --postCmd "some cmd" + + A post command is executed after switching the monitors. This is usefull to + tell your window manager to re-detect monitors, e.g. for herbstluftwm + herbstclient reload. + + -l or swm --list + + List all devices with the connectivity status. + +Configuration + +The configuration can be placed in $XDG_CONFIG_HOME/switchmon/config.json in +the form of + +{ + "postCmd": "some command", + "profiles": { + "internal": ["LVDS1"], + "external": ["HDMI1"], + "dual": ["LVDS1", "HDMI1"] + } +} + +`; + +module.exports = usage;