Compare commits
5 Commits
changing-t
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc15980ba5 | ||
| 5490b665f3 | |||
| 3c184743d0 | |||
| 46bf8aec49 | |||
| b07d7f3b03 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
profiles/*.json
|
||||
profiles/
|
||||
*.json
|
||||
30
all_attributes.md
Normal file
30
all_attributes.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# All Kscreen Doctor attributes
|
||||
|
||||
- [x] primary
|
||||
- [ ] priority
|
||||
- [x] enable
|
||||
- [x] disable
|
||||
- [x] mode
|
||||
- [x] position
|
||||
- [x] scale
|
||||
- [x] orientation / rotation
|
||||
- [ ] overscan (0-100)
|
||||
- [ ] vrrpolicy (never / always / automatic)
|
||||
- [ ] rgbrange (automatic / full / limited)
|
||||
- [ ] hdr (enable / disable / toggle)
|
||||
- [ ] sdr-brightness (50-10000)
|
||||
- [ ] wcg (enable / disable / toggle)
|
||||
- [ ] iccprofile (path)
|
||||
- [ ] sdrGamut (0-100)
|
||||
- [ ] maxBrightnessOverride (disable / int)
|
||||
- [ ] maxAverageBrightnessOverride (disable / int)
|
||||
- [ ] minBrightnessOverride (disable / int)
|
||||
- [ ] colorProfileSource (sRBG / ICC / EDID)
|
||||
- [ ] brightness (0-100)
|
||||
- [ ] colorPowerTradeoff (preferEfficiency / preferAccuracy)
|
||||
- [ ] dimming (0-100)
|
||||
- [ ] mirror ( none / output )
|
||||
- [ ] ddcCi (allow / disallow)
|
||||
- [ ] maxbpc (automatic / 6-16)
|
||||
- [ ] edrPolicy (never / always)
|
||||
- [ ] sharpness (0 - 100)
|
||||
15
apply.sh
15
apply.sh
@@ -1,15 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Make sure a config file was provided
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage: $0 <config file>"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Attempt to parse the config file
|
||||
INPUT_FILE=$1
|
||||
echo "Parsing config info from $INPUT_FILE..."
|
||||
|
||||
TEST=$(jq '.outputs[]' $INPUT_FILE)
|
||||
|
||||
echo $TEST[0]
|
||||
@@ -1,5 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
VERBOSE=1
|
||||
|
||||
function log {
|
||||
if [ $VERBOSE -eq 1 ]; then
|
||||
echo "$@"
|
||||
fi
|
||||
}
|
||||
set -e
|
||||
|
||||
# Make sure a config file was provided
|
||||
@@ -27,11 +34,7 @@ fi
|
||||
|
||||
# Extract outputs list
|
||||
enabled_outputs=$(jq -c '.outputs[] | select(.enabled == true)' "$PROFILE")
|
||||
echo "enabled:"
|
||||
echo $enabled_outputs
|
||||
disabled_outputs=$(jq -c '.outputs[] | select(.enabled == false)' "$PROFILE")
|
||||
echo "disabled:"
|
||||
echo $disabled_outputs
|
||||
outputs=$(jq -c '.outputs[]' "$PROFILE")
|
||||
|
||||
# Restore enabled/disabled starting with the enabled monitors
|
||||
@@ -40,25 +43,42 @@ outputs=$(jq -c '.outputs[]' "$PROFILE")
|
||||
|
||||
function enable_outputs {
|
||||
local outputs=$1
|
||||
|
||||
# If empty or only whitespace, return early
|
||||
[[ -z "$outputs" ]] && return
|
||||
|
||||
while IFS= read -r out; do
|
||||
id=$(echo "$out" | jq -r '.id')
|
||||
log "[VAR] id:" $id
|
||||
name=$(echo "$out" | jq -r '.name')
|
||||
log "[VAR] name:" $name
|
||||
enabled=$(echo "$out" | jq -r '.enabled')
|
||||
log "[VAR] enabled:" $enabled
|
||||
|
||||
# Enable/disable
|
||||
if [[ "$enabled" == "true" ]]; then
|
||||
kscreen-doctor "output.$name.enable"
|
||||
CMD="kscreen-doctor output.$name.enable"
|
||||
log "[CMD]" $CMD
|
||||
$CMD
|
||||
else
|
||||
kscreen-doctor "output.$name.disable"
|
||||
CMD="kscreen-doctor output.$name.disable"
|
||||
log "[CMD]" $CMD
|
||||
$CMD
|
||||
fi
|
||||
done <<< "$outputs"
|
||||
}
|
||||
|
||||
enable_outputs $enabled_outputs
|
||||
enable_outputs $disabled_outputs
|
||||
log "Enabling enabled outputs..."
|
||||
enable_outputs "$enabled_outputs"
|
||||
log "Disabling disabled outputs..."
|
||||
enable_outputs "$disabled_outputs"
|
||||
|
||||
function load_profile_to_outputs {
|
||||
local outputs=$1
|
||||
|
||||
# If empty or only whitespace, return early
|
||||
[[ -z "$outputs" ]] && return
|
||||
|
||||
while IFS= read -r out; do
|
||||
id=$(echo "$out" | jq -r '.id')
|
||||
name=$(echo "$out" | jq -r '.name')
|
||||
@@ -66,40 +86,63 @@ function load_profile_to_outputs {
|
||||
posy=$(echo "$out" | jq -r '.pos.y')
|
||||
rotation=$(echo "$out" | jq -r '.rotation')
|
||||
scale=$(echo "$out" | jq -r '.scale')
|
||||
mode=$(echo "$out" | jq -r '.currentModeId')
|
||||
mode_id=$(echo "$out" | jq -r '.currentModeId')
|
||||
# mode_name=$(echo "$out" | jq -r ".modes[] | select(.id == \"$mode_id\") | .name")
|
||||
# log "[VAR] mode_name:" $mode_name
|
||||
refresh_rate=$(echo "$out" | jq -r ".modes[] | select(.id == \"$mode_id\") | .refreshRate")
|
||||
height=$(echo "$out" | jq -r ".modes[] | select(.id == \"$mode_id\") | .size.height")
|
||||
width=$(echo "$out" | jq -r ".modes[] | select(.id == \"$mode_id\") | .size.width")
|
||||
mode="${width}x${height}@${refresh_rate}"
|
||||
replication_source_id=$(echo "$out" | jq -r ".replicationSource")
|
||||
log "[VAR] replication_source_id: $replication_source_id"
|
||||
if [ $replication_source_id -neq 0 ]; then
|
||||
replication_source_name=$(echo "$outputs.[] | select(.id == \"$replication_source_id\" | .name)" )
|
||||
log "[VAR] replication_source_name: $replication_source_name"
|
||||
CMD="kscreen-doctor output.$"
|
||||
done
|
||||
log "[VAR] mode: $mode"
|
||||
priority=$(echo "$out" | jq -r '.priority')
|
||||
|
||||
#
|
||||
|
||||
# Mode (Resolution + refresh)
|
||||
kscreen-doctor "output.$id.mode.$mode"
|
||||
# CMD="kscreen-doctor output.$name.mode.$mode"
|
||||
CMD="kscreen-doctor output.$name.mode.$mode"
|
||||
log "[CMD]" $CMD
|
||||
$CMD
|
||||
|
||||
# Position
|
||||
kscreen-doctor "output.$id.position.$posx,$posy"
|
||||
CMD="kscreen-doctor output.$name.position.$posx,$posy"
|
||||
log "[CMD]" $CMD
|
||||
$CMD
|
||||
|
||||
# Scale
|
||||
kscreen-doctor "output.$id.scale.$scale"
|
||||
CMD="kscreen-doctor output.$name.scale.$scale"
|
||||
log "[CMD]" $CMD
|
||||
$CMD
|
||||
|
||||
# Rotation (map from JSON names to kscreen-doctor options)
|
||||
CMD=""
|
||||
case "$rotation" in
|
||||
"1") kscreen-doctor "output.$id.rotation.normal" ;;
|
||||
"2") kscreen-doctor "output.$id.rotation.left" ;;
|
||||
"4") kscreen-doctor "output.$id.rotation.inverted" ;;
|
||||
"8") kscreen-doctor "output.$id.rotation.right" ;;
|
||||
"1") CMD="kscreen-doctor output.$name.rotation.normal" ;;
|
||||
"2") CMD="kscreen-doctor output.$name.rotation.left" ;;
|
||||
"4") CMD="kscreen-doctor output.$name.rotation.inverted" ;;
|
||||
"8") CMD="kscreen-doctor output.$name.rotation.right" ;;
|
||||
esac
|
||||
log "[CMD]" $CMD
|
||||
$CMD
|
||||
|
||||
# Primary / Not Primary
|
||||
echo $priority
|
||||
if [ $priority -eq 1 ]; then
|
||||
kscreen-doctor "output.$id.primary"
|
||||
CMD="kscreen-doctor output.$name.primary"
|
||||
log "[CMD]" $CMD
|
||||
$CMD
|
||||
fi
|
||||
|
||||
done <<< "$outputs"
|
||||
}
|
||||
|
||||
load_profile_to_outputs $outputs
|
||||
|
||||
#########################
|
||||
# 2. Restore clone groups
|
||||
#########################
|
||||
load_profile_to_outputs "$outputs"
|
||||
|
||||
clone_groups=$(jq -c '.clones[]?' "$PROFILE")
|
||||
|
||||
@@ -110,11 +153,14 @@ function restore_clone_groups {
|
||||
others=$(echo "$clone" | jq -r '.[]' | tail -n +2)
|
||||
|
||||
for o in $others; do
|
||||
kscreen-doctor "output.$o.clone.$primary"
|
||||
CMD="kscreen-doctor output.$o.clone.$primary"
|
||||
log "[CMD]" $CMD
|
||||
$CMD
|
||||
|
||||
done
|
||||
done <<< "$clone_groups"
|
||||
}
|
||||
|
||||
restore_clone_groups $clone_groups
|
||||
restore_clone_groups "$clone_groups"
|
||||
|
||||
echo "Display configuration restored."
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1297
profiles/tv.json
1297
profiles/tv.json
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user