making changes to get back lost progress from yesterday
This commit is contained in:
@@ -25,58 +25,73 @@ if ! command -v kscreen-doctor &>/dev/null; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
#######################
|
||||
# Parse JSON + restore
|
||||
#######################
|
||||
|
||||
# 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 $dis
|
||||
outputs=$(jq -c '.outputs[]' "$PROFILE")
|
||||
|
||||
# 1. Restore enabled/disabled + basic properties
|
||||
while IFS= read -r out; do
|
||||
id=$(echo "$out" | jq -r '.id')
|
||||
enabled=$(echo "$out" | jq -r '.enabled')
|
||||
posx=$(echo "$out" | jq -r '.pos.x')
|
||||
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')
|
||||
priority=$(echo "$out" | jq -r '.priority')
|
||||
# Restore enabled/disabled starting with the enabled monitors
|
||||
# Starting with a disabled monitor might not work if it was
|
||||
# previously the only enabled monitor
|
||||
|
||||
# Enable/disable
|
||||
if [[ "$enabled" == "true" ]]; then
|
||||
kscreen-doctor "output.$id.enable"
|
||||
else
|
||||
kscreen-doctor "output.$id.disable"
|
||||
continue
|
||||
fi
|
||||
function enable_outputs {
|
||||
local outputs=$1
|
||||
while IFS= read -r out; do
|
||||
id=$(echo "$out" | jq -r '.id')
|
||||
name=$(echo "$out" | jq -r '.name')
|
||||
enabled=$(echo "$out" | jq -r '.enabled')
|
||||
|
||||
# Mode (Resolution + refresh)
|
||||
kscreen-doctor "output.$id.mode.$mode"
|
||||
# Enable/disable
|
||||
if [[ "$enabled" == "true" ]]; then
|
||||
kscreen-doctor "output.$name.enable"
|
||||
else
|
||||
kscreen-doctor "output.$name.disable"
|
||||
fi
|
||||
done <<< "$outputs"
|
||||
}
|
||||
|
||||
# Position
|
||||
kscreen-doctor "output.$id.position.$posx,$posy"
|
||||
function load_profile_to_outputs {
|
||||
local outputs=$1
|
||||
while IFS= read -r out; do
|
||||
id=$(echo "$out" | jq -r '.id')
|
||||
name=$(echo "$out" | jq -r '.name')
|
||||
posx=$(echo "$out" | jq -r '.pos.x')
|
||||
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')
|
||||
priority=$(echo "$out" | jq -r '.priority')
|
||||
|
||||
# Scale
|
||||
kscreen-doctor "output.$id.scale.$scale"
|
||||
|
||||
# Rotation (map from JSON names to kscreen-doctor options)
|
||||
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" ;;
|
||||
esac
|
||||
# Mode (Resolution + refresh)
|
||||
kscreen-doctor "output.$id.mode.$mode"
|
||||
|
||||
# Primary / Not Primary
|
||||
echo $priority
|
||||
if [ $priority -eq 1 ]; then
|
||||
kscreen-doctor "output.$id.primary"
|
||||
fi
|
||||
# Position
|
||||
kscreen-doctor "output.$id.position.$posx,$posy"
|
||||
|
||||
# Scale
|
||||
kscreen-doctor "output.$id.scale.$scale"
|
||||
|
||||
# Rotation (map from JSON names to kscreen-doctor options)
|
||||
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" ;;
|
||||
esac
|
||||
|
||||
done <<< "$outputs"
|
||||
# Primary / Not Primary
|
||||
echo $priority
|
||||
if [ $priority -eq 1 ]; then
|
||||
kscreen-doctor "output.$id.primary"
|
||||
fi
|
||||
|
||||
done <<< "$outputs"
|
||||
`
|
||||
}
|
||||
|
||||
|
||||
#########################
|
||||
@@ -85,13 +100,15 @@ done <<< "$outputs"
|
||||
|
||||
clone_groups=$(jq -c '.clones[]?' "$PROFILE")
|
||||
|
||||
while IFS= read -r clone; do
|
||||
primary=$(echo "$clone" | jq -r '.[0]')
|
||||
others=$(echo "$clone" | jq -r '.[]' | tail -n +2)
|
||||
function restore_clone_groups {
|
||||
while IFS= read -r clone; do
|
||||
primary=$(echo "$clone" | jq -r '.[0]')
|
||||
others=$(echo "$clone" | jq -r '.[]' | tail -n +2)
|
||||
|
||||
for o in $others; do
|
||||
kscreen-doctor "output.$o.clone.$primary"
|
||||
done
|
||||
done <<< "$clone_groups"
|
||||
for o in $others; do
|
||||
kscreen-doctor "output.$o.clone.$primary"
|
||||
done
|
||||
done <<< "$clone_groups"
|
||||
}
|
||||
|
||||
echo "Display configuration restored."
|
||||
Reference in New Issue
Block a user