feat: let a teacher ask the sanctuary to call a child's parent
The coordinator already existed on the control computer and its contract is frozen, so this is the classroom half of a contract that was read from its README and source rather than guessed: four fields out, the status topic subscribed before anything is published, and every word the teacher reads taken from the coordinator's own message field. It is a separate process, not a Plasma applet. A broker library, a network timeout and a text entry have no business inside the only way a teacher has of getting anywhere; if this dies the bar is untouched. The panel mark is Breeze's call-outgoing. The old one was a bell, sitting two inches from Plasma's notification bell in the same bar and meaning something entirely different. Two things it will not do: claim a call was displayed, and let a teacher type the room. The machine already knows which room it is. Sixty tests cover the contract without a broker. The live path was proven against the real coordinator running in the lab, on a loopback broker, with ProPresenter mocked and the church's networks rejected from inside the container first. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
380f031092
commit
7790003c03
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Parent Call.
|
||||
|
||||
Deliberately not a colour tile. Parent Call is not one of the room's
|
||||
applications and does not sit in the row with them, so it is drawn in
|
||||
the interface's own accent as a line mark: present, reachable, and
|
||||
visibly a different kind of thing from Wonder Ink and the browser. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
|
||||
<!-- Inset so the mark has the same optical size as the filled tiles
|
||||
beside it in the bar; an outline drawn to the edges reads larger. -->
|
||||
<g transform="translate(64 64) scale(0.62) translate(-64 -64)"
|
||||
fill="none" stroke="#4FB3A8" stroke-width="8"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M40 58a24 24 0 0 1 48 0c0 18 6 24 9 28H31c3-4 9-10 9-28z"/>
|
||||
<path d="M55 94a9 9 0 0 0 18 0"/>
|
||||
<path d="M64 26v-8"/>
|
||||
<path d="M100 30a30 30 0 0 1 8 20"/>
|
||||
<path d="M28 30a30 30 0 0 0-8 20"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 992 B |
@@ -1,10 +1,22 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Parent Call
|
||||
Comment=Ask for a child's parent to come to the room
|
||||
Comment=Ask the sanctuary to call a child's parent to this room
|
||||
# Breeze's own, and deliberately not a bell.
|
||||
#
|
||||
# The previous mark was a bell, which sat two inches from Plasma's
|
||||
# notification bell in the same bar and meant something entirely
|
||||
# different. A handset with an outgoing arrow cannot be mistaken for an
|
||||
# alert: it reads as placing a call, and the arrow says the call leaves
|
||||
# this room. No stock Breeze icon combines a person with a call, so the
|
||||
# unambiguous half was chosen over the half that could be read as user
|
||||
# settings — which is what two grey people on a panel look like.
|
||||
Icon=call-outgoing
|
||||
Exec=/usr/local/bin/classroom-parent-call
|
||||
Icon=ekklesia-parent-call
|
||||
Terminal=false
|
||||
Categories=Utility;
|
||||
StartupNotify=false
|
||||
NoDisplay=false
|
||||
StartupNotify=true
|
||||
StartupWMClass=classroom-parent-call
|
||||
# Never in an application list. It is reached from the bar, and it is not
|
||||
# one of the room's applications.
|
||||
NoDisplay=true
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Window rules.
|
||||
#
|
||||
# There is one, and it is about video.
|
||||
# There are two: one about video, one about the Parent Call card.
|
||||
#
|
||||
# Everything else the classroom used to arrange by hand is ordinary window
|
||||
# manager behaviour and needs no rule: a dialog stays in front of the window
|
||||
@@ -17,8 +17,8 @@
|
||||
# 314-line window arbiter was doing.
|
||||
|
||||
[General]
|
||||
count=1
|
||||
rules=classroom-video
|
||||
count=2
|
||||
rules=classroom-video,classroom-parent-call
|
||||
|
||||
[classroom-video]
|
||||
Description=Video is an appliance screen, not a window
|
||||
@@ -30,3 +30,21 @@ wmclassmatch=3
|
||||
wmclasscomplete=false
|
||||
noborder=true
|
||||
noborderrule=2
|
||||
|
||||
[classroom-parent-call]
|
||||
Description=Parent Call is a quick action, not a window
|
||||
wmclass=classroom-parent-call
|
||||
wmclassmatch=1
|
||||
wmclasscomplete=false
|
||||
# It is not an application, so it does not belong in the row of them. The
|
||||
# button that opened it is already in the bar.
|
||||
skiptaskbar=true
|
||||
skiptaskbarrule=2
|
||||
skipswitcher=true
|
||||
skipswitcherrule=2
|
||||
skippager=true
|
||||
skippagerrule=2
|
||||
# In front of the lesson a teacher was reading when they pressed the
|
||||
# button, rather than behind it.
|
||||
above=true
|
||||
aboverule=2
|
||||
|
||||
Reference in New Issue
Block a user