XZOOM(1x)

πŸ“¦ version 0.3, in nixos 26.05, nixpkgs unstable

🌸 XZOOM(1x) β€” like, the manual page for xzoom, bestie ✨

Okay so picture this: a tiny window that shows you a magnified chunk of your X11 screen, and it updates so fast it's basically main-character energy. That's xzoom. It lives in section 1x of the manual, and we're gonna go through the whole thing together, no skips, no cap. πŸ’…


✨ NAME ✨

xzoom β€” magnify part of the screen, with fast updates

Like a little magnifying glass for your display, except it's fast, so animations actually look alive. Obsessed. πŸ¦‹


πŸŽ€ SYNOPSIS πŸŽ€

xzoom [ -display displayname ] [ -mag mag [ mag ] ] [ -x ] [ -y ] [ -xy
] [ -geometry geometry ] [ -source geometry ]

That's the whole vibe check. Now let's break down every single flag, because we do not leave details behind. πŸ’–


🌈 OPTIONS 🌈

  • -display displayname / -d displayname β€” tells it which display to use. ngl the manpage itself says this one is (not very useful), so like… it's there, it's iconic in a lowkey way, but you'll probably never touch it. πŸ™ˆ
  • -mag mag [ mag ] β€” sets the magnification. If you hand it two numbers, the first one is the X magnification and the second one is the Y magnification (so you can stretch things unevenly, queen behavior ✨). The magnification should be greater than 0 β€” zero and negatives are not it.
  • -x β€” mirror horizontally. Flip it like a selfie camera you actually like. πŸͺž
  • -y β€” mirror vertically. Same energy, other axis.
  • -xy / -z β€” exchange the X and Y axes before any magnification happens. Two names, same slay. πŸ’«
  • -geometry geometry / =geometry β€” picks the size and position of xzoom's window. Note the cute alternate spelling with the equals sign β€” yes, that's real.
  • -source geometry β€” size and position the initial source area that gets magnified. The dimensions of this area get multiplied by the magnification to figure out how big xzoom's window ends up.
⚠️ Heads up bestie: if those source dimensions get given separately (i.e. via -geometry), it's an error. Pick one lane, you can't do both. 🫢

πŸ’œ DESCRIPTION πŸ’œ

xzoom displays a magnified area of the X11 display inside its own window. And the way that you can interactively change stuff is the whole point β€” you can change the zoomed area, change the window size, change the magnification (with the option of different magnification on the X and Y axes!), or rotate and mirror the image. All of it, live, from the keyboard. Periodt. πŸ‘‘


🧚 COMMANDS 🧚

Once xzoom has started up, you just type simple commands on the keyboard. No menus, no scrollbars, just vibes and keys:

  • q β€” quit. bye bestie πŸ‘‹
  • + β€” increase the magnification value by 1.
  • - β€” decrease the magnification value by 1.
  • w β€” makes the next + or - command affect only the X magnification.
  • h β€” makes the next + or - command affect only the Y magnification.
  • x β€” mirror the display image horizontally.
  • y β€” mirror the display image vertically.
  • z β€” rotate the displayed image 90 degrees counter-clockwise. Spinning, spinning. πŸŒ€
  • arrow keys β€” scroll the zoomed area 1 pixel in the direction of the arrow. Oh, and if the Ctrl key is pressed, the zoomed area scrolls 10 pixels instead. Big moves. πŸ’…
  • d β€” sets the delay between frame updates. The built-in delays are 200, 100, 50, 10 and 0 ms.
  • g β€” toggle the grid on and off. Grid girlies rise. ✨
  • Mouse buttons β€” to set where the magnified area is, click the left mouse button inside xzoom's window, then move it (keeping the button pressed, don't let go 😭) to the place you want to see magnified.

Also, xzoom lets you resize its window at any time. And when xzoom is iconified, it simply waits to get deiconified β€” like a nap, honestly. 😴


πŸ¦‹ DISPLAYS πŸ¦‹

xzoom uses the window's title bar to keep you informed about its status. Normally the title says something like xzoom x2, which means the magnification is 2 on both the X and Y axes.

If the image is stretched differently on the X and Y axes, the title will say xzoom X 2; Y 4.

Negative numbers mean reflection. πŸͺž

If the image is rotated by 90 or 270 degrees, the title will show <=> between the X and Y values.

When d is depressed, the title displays the new delay value for approximately 2 seconds, then reverts to the default display of the magnification values. Cute little pop-up moment, love that for us. πŸŽ€


πŸ”₯ PERFORMANCE πŸ”₯

xzoom is fast enough to display enlarged or mirrored animations in small windows. For the receipts: on the author's 486 DX2-66 with a Cirrus Logic CL-GD5428 display card (attached to a Vesa local bus), updating a 256x256 window magnified by 2 (i.e. the source rect is 128x128) takes approximately 30 ms.

That time varies, off course, when a different size window or a different magnification is used. If we choose 50 ms between updates, we can get about 12.5 frames per second and still let an animation program do its work.

It's possible to compile xzoom without X shared memory support. In that case, window updates may be about 3 times slower β€” that's if we're using a local display; using LAN is a different story. πŸ’€


⭐ SEE ALSO ⭐

  • xmag.1x.

And a little backstory for you, iykyk: the author got the motivation for writing xzoom after seeing a similar WindowsNT program, zoomin, working. It started just as a test for X11 performance. They don't have the fancy menus and scrollbar like zoomin, but they do have all of zoomin's features (and more) accessible from the keyboard. Iconic trade-off, honestly. πŸ‘‘


πŸ’€ BUGS πŸ’€

† The maximum internal built-in delay (see command d above) was set to 200 ms. xzoom completes the delay before polling the X event queue for the next command β€” so larger delays would feel like poor response to user commands. Genuinely, don't ask for more delay, it will be sluggish and sad. 😭

† For best performance, the shared memory extension for X11 is used. xzoom will fail if it is compiled to use XSHM and its display is not on the local host. Not a vibe check you want to fail. 🫠

† xzoom is given with no warranty. It was tested only under Linux with Xfree86 release 3.1.2 (X11R6).

† Some strange behavior may occur if the requested magnified area falls beyond the borders of the screen. Example: when you have a magnification of 1 and a window whose width is greater than the height of the screen, and you want 90 degrees of rotation. In that case, part of the window will not get updated. Rude, but that's what happens. πŸ™ˆ

† The frame used to mark the zoomed area may corrupt the contents of other windows if they are modified when the frame is visible. If you don't like it, disable the -DFRAME option when compiling xzoom.


🌸 AUTHOR 🌸

Itai Nahshon


πŸ’– That's the whole page, bestie. And for the little sign-off: the footer of this manpage just says XZOOM(1x) again β€” no version string, no date, nothing extra, so there's genuinely nothing more to report. Two headers, one iconic zoom tool. Slay. βœ¨πŸŽ€πŸ¦‹
πŸ“¦ where this page comes from