Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

display-config #12

Merged
merged 5 commits into from Sep 28, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
74 changes: 53 additions & 21 deletions snap/hooks/configure
@@ -1,40 +1,72 @@
#!/bin/bash

changes=0
display_changes=0
config_changes=0
miral_kiosk_display="$SNAP_DATA/miral-kiosk.display"
miral_kiosk_config="$SNAP_DATA/miral-kiosk.config"

# Ensure we have a config file with the fixed options
if [ ! -e "$SNAP_DATA/miral-kiosk.config" ]; then
cat <<EOT > "$SNAP_DATA/miral-kiosk.config"
if [ ! -e "${miral_kiosk_config}" ]; then
cat <<EOT > "${miral_kiosk_config}"
arw-file=
file=/run/mir_socket
console-provider=vt
EOT
let changes+=1
let config_changes+=1
fi

# display-config
if display_config=$(snapctl get display-config); then
if [ -n "${display_config}" ]; then
echo "# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN" > "${miral_kiosk_display}~"
echo "# USE 'snap set mir-kiosk display-config=...' INSTEAD" >> "${miral_kiosk_display}~"
echo "" >> "${miral_kiosk_display}~"
echo "${display_config}" >> "${miral_kiosk_display}~"
if [ -e "${miral_kiosk_display}" ]; then
if ! diff "${miral_kiosk_display}~" "${miral_kiosk_display}" > /dev/null; then
mv "${miral_kiosk_display}" "${miral_kiosk_display}.save"
mv "${miral_kiosk_display}~" "${miral_kiosk_display}"
let display_changes+=1
else
rm "${miral_kiosk_display}~"
fi
else
mv "${miral_kiosk_display}~" "${miral_kiosk_display}"
let display_changes+=1
fi
else
if [ -e "${miral_kiosk_display}" ]; then
if grep "# USE 'snap set mir-kiosk display-config=...' INSTEAD" "${miral_kiosk_display}"; then
mv "${miral_kiosk_display}" "${miral_kiosk_display}.save"
let display_changes+=1
fi
fi
fi
fi

# display-layout
display_layout=$(snapctl get display-layout)
if [ -n "${display_layout}" ]; then
if [ -e "$SNAP_DATA/miral-kiosk.display" ]; then
if [ -z "$(grep "^ ${display_layout}:" "$SNAP_DATA/miral-kiosk.display")" ]; then
echo "ERROR: '$display_layout' is not a layout in $SNAP_DATA/miral-kiosk.display"
if [ -e "${miral_kiosk_display}" ]; then
if [ -z "$(grep "^ ${display_layout}:" "${miral_kiosk_display}")" ]; then
echo "ERROR: '$display_layout' is not a layout in ${miral_kiosk_display}"
exit 1
fi
else
if [ "${display_layout}" != "default" ]; then
echo "ERROR: '$display_layout' is not a layout in $SNAP_DATA/miral-kiosk.display"
echo "ERROR: '$display_layout' is not a layout in ${miral_kiosk_display}"
exit 1
fi
fi

if [ "display-layout=${display_layout}" != "$(grep \^display-layout= $SNAP_DATA/miral-kiosk.config)" ]; then
if [ changes -gt 0 ]; then
sed '/^display-layout=/d' $SNAP_DATA/miral-kiosk.config
if [ "display-layout=${display_layout}" != "$(grep \^display-layout= ${miral_kiosk_config})" ]; then
if [ $config_changes -gt 0 ]; then
sed '/^display-layout=/d' ${miral_kiosk_config}
else
sed --in-place=.save '/^display-layout=/d' $SNAP_DATA/miral-kiosk.config
sed --in-place=.save '/^display-layout=/d' ${miral_kiosk_config}
fi
echo display-layout=${display_layout} >> $SNAP_DATA/miral-kiosk.config
let changes+=1
echo display-layout=${display_layout} >> ${miral_kiosk_config}
let config_changes+=1
fi
fi

Expand All @@ -46,17 +78,17 @@ if [ -n "${vt}" ]; then
exit 1
fi

if [ "vt=${vt}" != "$(grep vt= $SNAP_DATA/miral-kiosk.config)" ]; then
if [ changes -gt 0 ]; then
sed '/^vt/d' $SNAP_DATA/miral-kiosk.config
if [ "vt=${vt}" != "$(grep vt= ${miral_kiosk_config})" ]; then
if [ $config_changes -gt 0 ]; then
sed '/^vt/d' ${miral_kiosk_config}
else
sed --in-place=.save '/^vt/d' $SNAP_DATA/miral-kiosk.config
sed --in-place=.save '/^vt/d' ${miral_kiosk_config}
fi
echo vt=${vt} >> $SNAP_DATA/miral-kiosk.config
let changes+=1
echo vt=${vt} >> ${miral_kiosk_config}
let config_changes+=1
fi
fi

if [ $changes -gt 0 ]; then
if [ $(($config_changes+$display_changes)) -gt 0 ]; then
snapctl restart $SNAP_NAME
fi