Desktop

© nemo 2016-2025

Things concerned with the workings of the Wimp

RightMenu

The current version is 0.01 (31 Dec 2024) [32bit]

For people new to RISC OS and accustomed to right-clicking for a contextual menu, this module makes the RISC OS desktop slightly less surprising by swapping the middle and right mouse buttons, so that MENU == right-click (and ADJUST == middle-click).

I was tempted to call it “WrongMenu” but I will not mock the afflicted.

NOTE This currently does NOT work in RPCEmu for reasons I don’t yet understand.

!ToolMenus

The current version is 0.07 (24 Dec 2024) [32bit]

ToolMenus adds menus to all the window furniture – the titlebar, scrollbars and all their icons. Just click MENU to open a contextual menu that allows you to bring the window to the front even if you can only see the scrollbar, move windows up and down the stack, or (for windows that display a full path in the titlebar) open the parent directory in the Filer.

Clicking Shift-MENU in window furniture opens the !ToolMenus task menu, so you can check its version or quit.

!ScaleFac

The current version is 1.01 (21 Feb 2023)

Many OSes such as Windows allow you to set the exact resolution of your monitor. RISC OS does too, though you probably haven’t noticed.

This program allows you to calibrate your screen such that 100% is actually real size*.

*if your software isn’t broken, which most software is, sadly. Perhaps you might use this tool to test whether you read the PRMs?!

Calibrated resolution (above) or custom DPI (below) in RISC OS

Custom DPI in Windows

!MiniCal

Current version 1.03 (15 Dec 2024)

Today is a small day

It’s a tiny calendar for your iconbar.

You can choose its tiny colours. It doesn’t do anything else.

NEW: 1.03 now features a colour window instead of a colour menu because something broke in RO5.3. Thanks to Paul S for the report.

<adds another RO5-specific problem to solve for humanity>

BreakAche

Current version 0.01 (16 Jan 2023) [32bit]

If you’ve ever pressed Shift-Break when you meant Alt-Break, you’ll be aware that without any warning, RISC OS will cheerfully throw away all your unsaved work and reboot. No more! BreakAche gives you an alarming warning if you press Shift-Break, but does NOT reset unless you press it again within 1½ seconds.

Written as a request from a friend, but has saved my bacon MULTIPLE times, including yesterday.

Precise Mouse

PreciseMouse 0.04 (04 Mar 2024) [32bit]

PreciseMouse allows you to set non-integer MouseStep multipliers, and to  change to a second calibration when you hold a modifier-key combination  of your choice.

PreciseMouse works by taking over responsibility for scaling Mouse Deltas,  setting the Kernel's multipliers to 1. Scaling therefore occurs DURING the  PointerV status call rather than after it. The integer delta is returned and  the fractional delta accumulated. The Kernel's original integer scaling is  restored if the module is killed.

Examples

 *MouseStep 2.25 hits four out of every five pixels (16 out of 25 in 2D)
*MouseStep -ctrl 0.4 scales movement down by a factor of five when holding either Ctrl key
*MouseStep -ctrl -2 reverses pointer movement with Ctrl!

Note that this module CANNOT work in RPCEmu or touchscreen-like environments where the mouse pointer is forced to absolute coordinates. Also note that in emulators like VirtualRPC, if you don't set your main MouseStep to be 2 then the Host and RISC OS pointers won't move together when in windowed mode (this also happens if you use pointer acceleration in Windows, for example).

Iconbar Keyboard LEDs

LEDs 0.02 (01 Feb 2023) [32bit]

Not traffic lights

This little module adds a set of LEDs to your iconbar, showing the Caps Lock (green), Num Lock (orange) and Scroll Lock (red) states respectively.

The Caps Lock LED lights half-brightness if Shift-Caps is selected.

DataOpen template mode

!5Launcher 1.03 (16 Dec 2024)

The DataOpen message has a little-supported, never-documented “template mode” used for launching temporary files, help files, template files (not Template files you understand) and so forth – anything that you don’t want written back to where it was loaded from. Acorn supported it from RISC OS 2.00, but only in !Edit and !SrcEdit for some reason and it faded from memory, which is a great loss because it’s rather useful.

DataOpen template mode is selected by setting the unsafe flag to -2. I have supported it on all my editors for years, and I recommend you do too, it’s very simple – if you load a file in a DataOpen and unsafe=-2, reduce your filename to just the leaf... that’s all! I have patched Zap to support it. It’s also the best way of opening help files that you don’t want the user to accidentally change.

This is a file launcher (like a mini-Filer) which allows you to test your DataOpen template mode support. As a bonus, if the DataOpen is ignored (because there’s no suitable program running already) it attempts to launch a suitable editor and tries again. This will not always be successful because Alias$@RunType variables are not necessarily effective without a filename (do try to ensure that yours are though). However, this is just a bit of bonus behaviour (simulating the Filer in effect) – it’s perfectly acceptable to simply open a query window and complain if no suitable editor is running.

If you want to learn more about the Data Transfer Protocol there is a long article here.

Desktop state saver

!SaveState 1.03 (16 Dec 2024)

Before !Boot gained its Choices directory, you were expected to save your desktop state from a save dialog on the Task Manager. That has disappeared in some OSes which is a shame, as the resulting file is often useful when cut down. For example, you can run a set of development tools, save the state, and then cut out everything but the commands to run (and configure) those tools and hey presto, you have a little “Desktop” file that’ll launch all the programs in one go.

Anyway, even if one only used it once a year, I object to functionality being lost just because somebody thinks that they know better than you what you want to do with your computer.

!SaveState allows you to save the Desktop state, just like it used to work. In fact it’s slightly better than the old implementation, because it labels which program has output commands into the file, or whether they’re from modules. This makes it rather easier to separate out the bits you want from the rest of it.

Wimp_TransferBlock is 1337HAXOR or something

BlockTransfer 1.01 (06 Sep 2020) [32bit]

Wimp_TransferBlock is a security nightmare. Now this is like complaining about the size of one of the holes in a colander, but considering its entire purpose is to allow any program to read and write the memory of every other program, there’s no avoiding the unnecessary overpowered nature of the call. It exists primarily to allow RamFetch to be implemented, but it does far too much for that (and doesn’t check for even trivial errors). It’s dangerous.

This module defangs Wimp_TransferBlock so it can only be used with permission. This means RamFetch still works, but any other nefarious use does not. It also prevents a task writing outside the RamFetch buffer.

Inevitably this prevents some debugging tools from working, like Zap’s Read Memory window, but what do you expect. Computer now says No.

Please don’t mistake this for any kind of security whatsoever.