diff options
author | makefu <github@syntax-fehler.de> | 2021-02-11 14:06:45 +0100 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2021-02-11 14:06:45 +0100 |
commit | 540e13721d85dcf100bf3529414d96cd8e28a446 (patch) | |
tree | 7db6b3955f8f06af83434027e4825f8b160ba9d4 /tv/5pkgs/simple/xdpytools/src/xdpysel | |
parent | 38bddfd404b4418b4e820dfbd312145fc6abca68 (diff) | |
parent | d0e7bc46b4cdb15f7505aa069ac29588b02ddf92 (diff) |
Merge remote-tracking branch 'lass/master'
Diffstat (limited to 'tv/5pkgs/simple/xdpytools/src/xdpysel')
-rwxr-xr-x | tv/5pkgs/simple/xdpytools/src/xdpysel | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tv/5pkgs/simple/xdpytools/src/xdpysel b/tv/5pkgs/simple/xdpytools/src/xdpysel new file mode 100755 index 000000000..e08015576 --- /dev/null +++ b/tv/5pkgs/simple/xdpytools/src/xdpysel @@ -0,0 +1,49 @@ +#! /bin/sh +# usage: xdpysel {prev,next} +# Print the number of the selected X display. + +find /tmp/.X11-unix -mindepth 1 -maxdepth 1 | +jq -Rrs --arg command "$1" ' + ( + split("\n") | + map( + select(.!="") | + match("^.*/X([0-9]+)$").captures[0].string | + tonumber + ) + ) + as $all_displays | + + ( + env.DISPLAY | + match("^:([0-9]+)(?:[.][0-9]+)?$").captures[0].string | + tonumber + ) + as $current_display | + + ($all_displays | length) as $all_displays_count | + + ($all_displays|index($current_display)) + as $current_index | + + (($current_index + 1) % $all_displays_count) + as $next_index | + + (($all_displays_count + $current_index - 1) % $all_displays_count) + as $prev_index | + + $all_displays[$prev_index] as $prev_display | + $all_displays[$next_index] as $next_display | + + { + prev: $prev_display, + next: $next_display, + }[$command] + as $result | + + if $result | type == "number" then + $result + else + "xdpysel: bad argument: \($command)\n" | halt_error(-1) + end +' |