Compare commits
2 Commits
9e990cf58d
...
changing-t
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
39d46fa9e1 | ||
|
|
4bbe14f8f2 |
@@ -26,12 +26,12 @@ if ! command -v kscreen-doctor &>/dev/null; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Extract outputs list
|
# Extract outputs list
|
||||||
enabled_outputs=$(jq -c '.outputs[] | select(.enabled=="true")' "$PROFILE")
|
enabled_outputs=$(jq -c '.outputs[] | select(.enabled == true)' "$PROFILE")
|
||||||
echo "enabled:"
|
echo "enabled:"
|
||||||
echo $enabled_outputs
|
echo $enabled_outputs
|
||||||
disabled_outputs=$(jq -c '.outputs[] | select(.enabled=="false")' "$PROFILE")
|
disabled_outputs=$(jq -c '.outputs[] | select(.enabled == false)' "$PROFILE")
|
||||||
echo "disabled:"
|
echo "disabled:"
|
||||||
echo $dis
|
echo $disabled_outputs
|
||||||
outputs=$(jq -c '.outputs[]' "$PROFILE")
|
outputs=$(jq -c '.outputs[]' "$PROFILE")
|
||||||
|
|
||||||
# Restore enabled/disabled starting with the enabled monitors
|
# Restore enabled/disabled starting with the enabled monitors
|
||||||
@@ -54,6 +54,9 @@ function enable_outputs {
|
|||||||
done <<< "$outputs"
|
done <<< "$outputs"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enable_outputs $enabled_outputs
|
||||||
|
enable_outputs $disabled_outputs
|
||||||
|
|
||||||
function load_profile_to_outputs {
|
function load_profile_to_outputs {
|
||||||
local outputs=$1
|
local outputs=$1
|
||||||
while IFS= read -r out; do
|
while IFS= read -r out; do
|
||||||
@@ -90,9 +93,9 @@ function load_profile_to_outputs {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
done <<< "$outputs"
|
done <<< "$outputs"
|
||||||
`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
load_profile_to_outputs $outputs
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
# 2. Restore clone groups
|
# 2. Restore clone groups
|
||||||
@@ -101,6 +104,7 @@ function load_profile_to_outputs {
|
|||||||
clone_groups=$(jq -c '.clones[]?' "$PROFILE")
|
clone_groups=$(jq -c '.clones[]?' "$PROFILE")
|
||||||
|
|
||||||
function restore_clone_groups {
|
function restore_clone_groups {
|
||||||
|
local clone_groups=$1
|
||||||
while IFS= read -r clone; do
|
while IFS= read -r clone; do
|
||||||
primary=$(echo "$clone" | jq -r '.[0]')
|
primary=$(echo "$clone" | jq -r '.[0]')
|
||||||
others=$(echo "$clone" | jq -r '.[]' | tail -n +2)
|
others=$(echo "$clone" | jq -r '.[]' | tail -n +2)
|
||||||
@@ -111,4 +115,6 @@ function restore_clone_groups {
|
|||||||
done <<< "$clone_groups"
|
done <<< "$clone_groups"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
restore_clone_groups $clone_groups
|
||||||
|
|
||||||
echo "Display configuration restored."
|
echo "Display configuration restored."
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Make sure a config file was provided
|
|
||||||
if [ $# -lt 1 ]; then
|
|
||||||
echo "Usage: $0 <config file>"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
PROFILE=$1
|
|
||||||
|
|
||||||
if [[ ! -f "$PROFILE" ]]; then
|
|
||||||
echo "Profile file not found: $PROFILE" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! command -v jq &>/dev/null; then
|
|
||||||
echo "jq not installed!" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! command -v kscreen-doctor &>/dev/null; then
|
|
||||||
echo "kscreen-doctor not found!" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
#######################
|
|
||||||
# Parse JSON + ordering
|
|
||||||
#######################
|
|
||||||
|
|
||||||
# Extract output entries based on positions
|
|
||||||
origin_out=$(jq -c '.outputs[] | select(.pos.x == 0 and .pos.y == 0 and .enabled == true)' "$PROFILE")
|
|
||||||
non_origin_outs=$(jq -c '.outputs[] | select(.pos.x != 0 or .pos.y != 0 or .enable == false)' "$PROFILE")
|
|
||||||
|
|
||||||
#######################
|
|
||||||
# Function: Apply output
|
|
||||||
#######################
|
|
||||||
apply_output() {
|
|
||||||
local out="$1"
|
|
||||||
|
|
||||||
id=$(echo "$out" | jq -r '.id')
|
|
||||||
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')
|
|
||||||
enabled=$(echo "$out" | jq -r '.enabled')
|
|
||||||
|
|
||||||
# Enable/disable
|
|
||||||
if [[ "$enabled" == "true" ]]; then
|
|
||||||
kscreen-doctor "output.$id.enable"
|
|
||||||
else
|
|
||||||
kscreen-doctor "output.$id.disable"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Mode
|
|
||||||
kscreen-doctor "output.$id.mode.$mode"
|
|
||||||
|
|
||||||
# Position
|
|
||||||
kscreen-doctor "output.$id.position.$posx,$posy"
|
|
||||||
|
|
||||||
# Scale
|
|
||||||
kscreen-doctor "output.$id.scale.$scale"
|
|
||||||
|
|
||||||
# Rotation
|
|
||||||
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
|
|
||||||
|
|
||||||
# Primary
|
|
||||||
if [ "$priority" -eq 1 ]; then
|
|
||||||
kscreen-doctor "output.$id.primary"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ -n "$origin_out" ]]; then
|
|
||||||
apply_output "$origin_out"
|
|
||||||
fi
|
|
||||||
|
|
||||||
while IFS= read -r out; do
|
|
||||||
apply_output "$out"
|
|
||||||
done <<< "$non_origin_outs"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# 3. Restore clone groups
|
|
||||||
#########################
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
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