Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 11 Sep 03:09
· 67 commits to main since this release

TobiiLinux v0.3.0 — the hub, rebuilt

This is a user-interface release. The hub is shorter, it goes to the status area
instead of the taskbar, its text size is adjustable, and a copy installed by your
package manager can now fetch its own update instead of just being told it can't
have one.

Nothing below the GUI changed. No driver, protocol, USB, head-pose or
game-output code is touched in this release — everything v0.2.0 said about head
tracking into games still stands exactly as it did, untouched and equally
untested by a real game.

Unofficial. Not affiliated with, endorsed by, or supported by Tobii.
Use at your own risk.

The window is 374 pixels shorter

Measured on the same machine, same screen, opening at the default text size:

v0.2.0 1040 x 1087
v0.3.0 1189 x 713

The live data — trackbox, readout, sensor view — is now one card spanning the
top, with six setting cards in three columns beneath it. Before, one tall column
set the height of the whole window and the other ran out halfway down.

The layout still has three column counts and drops to two, then one, as the
window narrows. Be aware that on an ordinary floating desktop you probably
cannot reach those: the window's minimum width and the three-column threshold
come from the same measurement, so the narrower layouts need a tiling compositor
or a screen smaller than the hub.

Pressing X now goes to the status area — where your desktop has one

v0.2.0's notes said "closing the hub window minimises it instead of quitting".
As of this release that is only half true, and which half you get depends on
your desktop.

If something on your session bus owns org.kde.StatusNotifierWatcher — KDE
Plasma, and the bars and panels that implement the same interface — the window
is hidden, and a tray icon is your way back. If nothing does, which includes
stock GNOME, the window is minimised exactly as before and Alt-Tab or the
overview is the way back.

Either way, launching the app again raises the hub you already have, and Quit in
the cogwheel still exits for real.

The tray icon deliberately has no menu. Left-, right- and middle-click all just
raise the hub; there is no right-click Quit. If you find that surprising, so
will the next person — it is listed under Known limitations rather than hidden.

Fixed along the way: in v0.2.0, Quit did not actually quit a hub that had been
started at login. --background leaked a GApplication hold and nothing ever
called app.quit(), so the window closed and the process stayed running with no
window and no way back to it.

Text size, 80% to 160%

In the cogwheel, beside the other settings that are about the program rather
than the tracker. Minus, the current percentage, plus. It applies instantly and
is remembered in ~/.config/tobii-linux/text_scale.

It scales the text in every window this program draws, including the fullscreen
setup and calibration flows. The tracker, the games and the gaze overlay are
unaffected.

Two honest caveats. At 160% the hub's own minimum size reaches 1395 x 857, which
is bigger than a 1366 x 768 laptop screen can show — and the control that undoes
it sits in a popover attached to that oversized window. If you get stuck there,
delete ~/.config/tobii-linux/text_scale and restart the hub. And only text
follows the setting: every fixed pixel dimension stays put, so making the text
smaller does not make the window fit a screen it did not fit before.

Download, for copies a package manager owns

If dpkg, rpm or pacman installed your copy, the update banner has never been
able to do anything for you — replacing a packaged file behind the package
manager's back is how a package database comes to describe files that are no
longer there, so it refused, and that was the end of it.

Now the button says Download. It asks where to put the file, fetches the
artifact that matches your package manager — the .deb, the .rpm, or the PKGBUILD
and its install hook together — into a version-named folder there, checks it
against SHA256SUMS, and prints the one command that installs it.

It does not install anything. That is still your package manager's job, and the
command to hand it is on screen.

This is the hub only. tobii update on the command line still refuses and tells
you why.

Read this part: nobody has ever clicked this button against a real release. It
cannot be done from a development build — the path is reachable only when a
package manager owns the running binary AND a newer release exists. The code is
unit-tested and its asset matching was checked against the real v0.2.0 release
assets, but v0.3.0 is the release that first makes the button reachable, and its
first users are its first test. Same standing as "no game has consumed any of
it" was in v0.2.0.

Also in this release

  • The window follows its own content. Raising the text size or a banner
    appearing now grows the window instead of clipping the last card off the
    bottom. It stops doing this once you resize the window by hand, which is
    deliberate and is also listed under Known limitations.
  • The sensor view no longer changes size when the tracker connects. The
    disconnected placeholder is drawn in the same letterboxed, rounded rectangle a
    real frame occupies, so there is no jump.
  • The layout breakpoints are measured from the widgets rather than computed.
    The old arithmetic assumed dropping a column frees its width plus a gutter; it
    frees 63 pixels less than that, so at the default text size the hub switched
    to two columns 63 pixels before two columns fit.
  • tobii debug now reports the text scale, because "the window opens too big"
    and "the last card is cut off" are not answerable without it.
  • tobii-gtk --accuracy no longer puts a second, identical icon in the status
    area. It runs as a separate process, so it was publishing its own.
  • Closing the hub to the tray now stops its 30 Hz tick instead of running it to
    reach a guard. The CPU saved is below what /proc can measure; what it actually
    removes is roughly 324,000 timer wakeups over a three-hour session.

Upgrading

tobii update replaces binaries and nothing else — and this time that is
everything there is. No new udev rule, no new asset, nothing to install by hand.
If you are coming from v0.1.0 rather than v0.2.0, read v0.2.0's "Upgrading" note
about the udev rule first, because that one does still apply.

The one exception: a copy run straight out of a build tree has no icon installed,
so its tray icon is whatever placeholder your theme uses for an unknown
application. scripts/build.sh --install, or any of the packages, installs the
real one.

Known limitations

  • The tray has only ever been seen on KDE Plasma. waybar, xfce4-panel, LXQt and
    GNOME's AppIndicator extension implement the same interface and are believed
    to work; none has been tried.
  • The hub decides to hide itself based on whether anything owns the watcher bus
    name, not on whether its icon was accepted. A host that refuses the item, or a
    panel set to hide unknown icons, leaves the window hidden with no icon
    visible. Launching the app again brings it back.
  • No tray menu: right- and middle-click raise the hub, they do not offer Quit.
  • On stock GNOME there is no status area and no taskbar, so "minimised" means
    the overview and Alt-Tab.
  • Only the pacman branch of the package-ownership query has run against a real
    package database. The dpkg and rpm branches are unit-tested only — and they
    are what decides whether a Debian or Fedora user is offered Update or
    Download.
  • Re-downloading the same version into the same folder and failing part-way
    deletes the copy that was already there.
  • Changing the text size mid-session does not re-measure the column
    breakpoints; only the window height is re-fitted.
  • The fullscreen setup and calibration flows follow the text-size setting and
    have not been looked at at either end of its range.
  • The PKGBUILD the Download button hands pacman users builds from GitHub's
    generated source tarball, which pins no digest (sha256sums=('SKIP')). The
    PKGBUILD itself is checksum-verified before it is written; what it downloads
    afterwards is not. Pre-existing, but v0.3.0 is the first release that steers
    anyone to that file from inside the program.

How this was tested

  • The two window sizes above were measured by building v0.2.0 in a worktree and
    opening both hubs on the same machine and screen, not estimated from the
    layout.
  • The tray was verified against Plasma's live kded6 watcher: after the hub
    starts, its item appears in the watcher's RegisteredStatusNotifierItems, and
    reading the ToolTip property back over D-Bus returns the right string.
  • --accuracy was checked to publish no item, and the ordinary hub exactly one.
  • The three layout thresholds were measured at four text scales; at every one,
    the width at which the layout switches and the width that layout needs are the
    same number.
  • minimize() was measured to leave a GTK4 window mapped, which is why the tick
    is keyed on map/unmap and a minimised hub still ticks.
  • 821 tests pass, 8 ignored, none failing. Clippy clean at -D warnings and
    rustfmt clean across the main workspace, which is what CI gates; both
    workspaces build --locked. The bridge workspace is not linted by CI and has
    7 clippy warnings of its own, unchanged by this release.

Three adversarial passes were run over this work and every finding from all
three was adjudicated: 32 review findings (27 confirmed and fixed, 5 refuted),
26 cleanup findings across four lenses (15 applied, 3 skipped with reasons
recorded in the commit), and 85 release-readiness findings of which 76 survived
refutation. Several of the fixes above — the two-column breakpoint, Quit in
background mode, the duplicate accuracy-mode tray icon — were found that way
rather than by use.

The full list of what is untested and what is merely believed to work is at
https://github.com/Tropaion/Tobii_Linux/blob/main/docs/wiki/Quality-and-Risks.md
— see section 11.3b for this release and 11.3a for v0.2.0's game output. That
page is written to be uncomfortable to read.

Reporting a problem

tobii debug prints the report an issue asks for, and the hub's cogwheel can
copy or save it. It now includes the text scale. If the problem is about the
window or the tray, say which desktop and which panel you use — for a tray
question that is the first thing that will be asked.

Credits

The FreeTrack and TrackIR interfaces are public ABIs; opentrack was read for
interface facts and the files that use them say so and say which fact. No
opentrack code was copied. The StatusNotifierItem interface is KDE's published
D-Bus specification. The clean-room claim covers the ET5's USB protocol, which
was derived from captured traffic and nothing else.