feat: give Parent Call a mark that says what it does
Three marks were put on a real panel and judged at the size the bar actually draws them. A bell sat inches from Plasma's own notification bell and meant something entirely different. A handset with an outgoing arrow read as a telephone feature. Breeze has people and it has telephones and the two never meet, so this is drawn in Breeze's language instead: an adult, a child, and one small speech bubble, on Breeze's 22-unit grid with its ColorScheme-Text class, so it recolours with the session and needs no second file for the light theme. Quick Launch carries it. The Icon widget copies the entry into the user's home so an update could never change it; a task manager reads the entry live but also shows every running window, which filled the auxiliary corner with the lesson's tasks. One defect found on the way, and it affected the Wonder Ink icon that is already shipping: gdk-pixbuf recognises an SVG by sniffing the first bytes, and a licence-length comment above the opening tag pushes it out of that window. Every GTK program reported "couldn't recognize the image file format" while Qt rendered the same file happily. The comments live inside <svg> now. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
323989ac61
commit
18cf0249dd
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22" width="22" height="22">
|
||||
<!-- The comment lives inside <svg>, not above it. gdk-pixbuf
|
||||
recognises an SVG by sniffing the first bytes of the file, and a
|
||||
licence-length comment before the opening tag pushes it out of
|
||||
that window: every GTK program then reports "couldn't recognize
|
||||
the image file format" while Qt renders it happily. Measured on
|
||||
both of the classroom's own icons. -->
|
||||
<!-- Parent Call.
|
||||
|
||||
Drawn in Breeze's own language rather than picked from it, because
|
||||
Breeze has no icon that means "fetch this child's grown-up". It has
|
||||
people, and it has telephones, and the two never meet. A bare handset
|
||||
was tried first and read as a telephone feature; a bell was tried
|
||||
before that and read as Plasma's notifications, which sit in the same
|
||||
bar.
|
||||
|
||||
So: an adult and a child, and one small speech bubble. Same 22-unit
|
||||
grid, same single path style, same ColorScheme-Text class, so it
|
||||
recolours with the session exactly as a Breeze icon does and follows
|
||||
the light and dark themes without a second file. -->
|
||||
<defs>
|
||||
<style type="text/css">.ColorScheme-Text { color: #fcfcfc; }</style>
|
||||
</defs>
|
||||
<g class="ColorScheme-Text" style="fill:currentColor;fill-opacity:1;stroke:none">
|
||||
<!-- One small speech bubble, top right, clear of both heads: somebody
|
||||
is being asked for. It is the only round thing up there, so it
|
||||
cannot be counted as a third person. -->
|
||||
<path d="M16.6 1.2c-2.4 0-4.4 1.3-4.4 3s2 3 4.4 3c.3 0 .6 0 .9-.1l2.3 1.2-.5-1.7c1-.5 1.6-1.4
|
||||
1.6-2.4 0-1.7-2-3-4.3-3z"/>
|
||||
<!-- The adult: taller, at the back, on the left. -->
|
||||
<circle cx="6.6" cy="8.2" r="3.1"/>
|
||||
<path d="M6.6 12.3c-2.9 0-5.1 2.1-5.1 4.9V19h10.2v-1.8c0-2.8-2.2-4.9-5.1-4.9z"/>
|
||||
<!-- The child: smaller, in front, on the right. -->
|
||||
<circle cx="14.6" cy="12.4" r="2.2"/>
|
||||
<path d="M14.6 15.3c-2.1 0-3.6 1.5-3.6 3.3V19h7.2v-.4c0-1.8-1.5-3.3-3.6-3.3z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
@@ -1,13 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Wonder Ink.
|
||||
|
||||
A stand-in for the product's own mark, which the classroom does not
|
||||
have a licensed asset for. It is a filled colour tile rather than a
|
||||
line drawing on purpose: the room already learned, the hard way, that
|
||||
a monochrome glyph on a bar is read as a decoration and not as an
|
||||
application. Somebody asked whether the old browser glyph meant "the
|
||||
Internet". A tile with its own colour does not get that question. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
|
||||
<!-- The comment lives inside <svg>, not above it. gdk-pixbuf
|
||||
recognises an SVG by sniffing the first bytes of the file, and a
|
||||
licence-length comment before the opening tag pushes it out of
|
||||
that window: every GTK program then reports "couldn't recognize
|
||||
the image file format" while Qt renders it happily. Measured on
|
||||
both of the classroom's own icons. -->
|
||||
<!-- Wonder Ink.
|
||||
|
||||
A stand-in for the product's own mark, which the classroom does not
|
||||
have a licensed asset for. It is a filled colour tile rather than a
|
||||
line drawing on purpose: the room already learned, the hard way, that
|
||||
a monochrome glyph on a bar is read as a decoration and not as an
|
||||
application. Somebody asked whether the old browser glyph meant "the
|
||||
Internet". A tile with its own colour does not get that question. -->
|
||||
<defs>
|
||||
<linearGradient id="tile" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#4FB3A8"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -2,16 +2,15 @@
|
||||
Type=Application
|
||||
Name=Parent Call
|
||||
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
|
||||
# Drawn for this, in Breeze's language, because Breeze has no icon that
|
||||
# means "fetch this child's grown-up". Two marks were tried and rejected
|
||||
# on a real panel first: a bell, which sat inches from Plasma's own
|
||||
# notification bell in the same bar, and a handset with an outgoing
|
||||
# arrow, which read as a telephone feature. This one is an adult, a
|
||||
# child, and one small speech bubble. It uses Breeze's ColorScheme-Text
|
||||
# class, so it recolours with the session and needs no second file for
|
||||
# the light theme.
|
||||
Icon=ekklesia-parent-call
|
||||
Exec=/usr/local/bin/classroom-parent-call
|
||||
Terminal=false
|
||||
Categories=Utility;
|
||||
|
||||
@@ -41,29 +41,29 @@ panel.opacity = "adaptive";
|
||||
|
||||
// LEFT — auxiliary. Parent Call is not one of the room's applications and
|
||||
// is deliberately not in the row with them.
|
||||
// A task manager holding one launcher, not the Icon widget.
|
||||
// Quick Launch: a launcher, and only a launcher.
|
||||
//
|
||||
// The Icon widget copies the desktop entry into the user's home and uses
|
||||
// the copy, so a classroom that had already run would keep the old icon
|
||||
// and the old command for ever — an update could never change either.
|
||||
// Measured: it kept showing a bell out of a package that no longer
|
||||
// contains one. Quick Launch would also do, but Debian does not ship it.
|
||||
// Two other widgets were tried on a real panel. The Icon widget copies
|
||||
// the desktop entry into the user's home and uses the copy, so an update
|
||||
// could never change the icon or the command — it kept showing a bell out
|
||||
// of a package that no longer contained one. A task manager reads
|
||||
// /usr/share/applications live, which fixes that, but a task manager also
|
||||
// shows every running window, so the auxiliary corner filled up with the
|
||||
// lesson's tasks.
|
||||
//
|
||||
// This applet reads /usr/share/applications live, which is what an OTA
|
||||
// update writes to, and it costs nothing extra: the classroom already
|
||||
// runs one for the applications.
|
||||
var parentCall = panel.addWidget("org.kde.plasma.icontasks");
|
||||
// Quick Launch reads the entry live and shows nothing but the button.
|
||||
var parentCall = panel.addWidget("org.kde.plasma.quicklaunch");
|
||||
parentCall.currentConfigGroup = ["General"];
|
||||
parentCall.writeConfig("launchers", "applications:ekklesia-parent-call.desktop");
|
||||
parentCall.writeConfig("groupingStrategy", 0);
|
||||
parentCall.writeConfig("showOnlyCurrentDesktop", false);
|
||||
parentCall.writeConfig("showOnlyCurrentActivity", false);
|
||||
parentCall.writeConfig("showOnlyCurrentScreen", false);
|
||||
parentCall.writeConfig("minimizeActiveTaskOnClick", false);
|
||||
parentCall.writeConfig("fill", false);
|
||||
parentCall.writeConfig("maxStripes", 1);
|
||||
parentCall.writeConfig("wheelEnabled", false);
|
||||
parentCall.writeConfig("showToolTips", true);
|
||||
// A file URL, not applications:. Quick Launch resolves the entry itself
|
||||
// and does not copy it, so the path is a live reference to what the
|
||||
// package installs.
|
||||
parentCall.writeConfig(
|
||||
"launcherUrls",
|
||||
"file:///usr/share/applications/ekklesia-parent-call.desktop"
|
||||
);
|
||||
parentCall.writeConfig("showLauncherNames", false);
|
||||
parentCall.writeConfig("enablePopup", false);
|
||||
parentCall.writeConfig("maxSectionCount", 1);
|
||||
|
||||
var leftGap = panel.addWidget("org.kde.plasma.panelspacer");
|
||||
leftGap.currentConfigGroup = ["General"];
|
||||
|
||||
Reference in New Issue
Block a user