Skip to content

Windows 2000 for X11 1.1.0

Choose a tag to compare

@JackTulli JackTulli released this 04 Sep 02:12
· 260 commits to main since this release

A hardening release after a full read of the code, sanitizer runs and fuzzing. Everything in 1.0.0 is still here; this is what changed.

Install

Fresh machine or VM, as root:

curl -sL jacktulli.github.io/w2k | sh

Machine with a desktop already: git clone https://github.com/JackTulli/Linux-explorer && cd Linux-explorer && ./install.sh --xinitrc. See the README.

The tarball is a prebuilt /usr/local tree (x86-64, glibc) for trying the desktop with startx /usr/local/bin/w2k-session; the logon screen w2kdm in it was built without PAM, so for the boot-to-logon setup use the one-command install, which builds on the machine.

Security

  • Logon screen: closing the logon dialog from another X client no longer starts a session without a password. Each logon gets a fresh X server and cookie, the cookie never appears on a command line, and the PAM session is attached to the session itself so logind closes it at logoff.
  • File names are data: every path handed to the shell is quoted; a file called a'$(...)'.txt opens, it does not run. "Open with" templates are spliced, not used as printf formats. Archive items are passed as ./name so a name starting with - cannot be read as an option.
  • Shortcuts: a .desktop file is a shortcut only when marked executable, as on every other desktop; anything else with that name is listed by its full name and opens as a file.
  • Installer: the source checkout stays root-owned; PAM stacks for Fedora/RHEL and Alpine were wrong and are now right.

Robustness

  • PNG and BMP loaders no longer read past the end of a corrupt file (found by fuzzing); JPEG errors no longer leak.
  • The window manager survives a window closing while it is being dragged, while its system menu or task-button menu is up, or during Alt+Tab.
  • Undo of New only removes an empty item and Undo of Copy goes to the Recycle Bin instead of deleting for good; Notepad saves through a temporary file and keeps CRLF endings; Restore never overwrites a newer file.
  • Explorer and the Control Panel no longer leave a zombie per launched program; Cancel in an archive progress dialog stops the tool itself.

Behaviour

  • Full-screen windows work (_NET_WM_STATE_FULLSCREEN): mpv, VLC, Firefox's F11.
  • Text entry is UTF-8: accented and non-Latin keys type, the caret moves by character.
  • The Windows key opens the Start menu on release when pressed alone, so Win+E, Win+R and Win+D work.
  • The taskbar on the left or right of the screen draws its buttons, tray and clock where they belong; the clock's date tooltip works.
  • Dialogs keep the resizability their hints give them and are never minimised into nowhere.
  • make install PREFIX=... is honoured for skins, cursors and icons; --full disables another display manager for the next boot rather than stopping it under you.