5 May 2021

Directory Opus 12.24

Directory Opus 12.24 is now available as a free update for all Directory Opus 12 users.

New versions are often made available several days before they will be detected by the update checker. You can download Opus using the links below if you don't want to wait.


The following changes were part of the 12.23.1 - 12.23.4 beta updates:

  • Added a new folder tree option: FTP Site roots always to go initial folder. Changes what happens when you're already connected to an FTP site and then click its name in the folder tree again, for sites with an initial folder specified in their FTP Address Book entry. Whether this option is on or off, if you are not connected to an FTP site and click its name in the folder tree, you will connect to the site and navigate to its initial folder (if it has one). The option changes what happens if you then click the site again: If the option is off (the default), you will go to the site's root folder. If the option is on, you will go to the site's initial folder. The option only affects what happens when you click the site in the tree using the mouse; selection via the keyboard, and navigation via things other than the tree, are not affected.
  • The Find command's ADVANCED and SIMPLE arguments are now ignored in situations that don't open the find panel.
  • The advanced find (filter control) now allows searching by music bit depth.

  • The Description column now reports the type of ARM64 executables.
  • The Image Conversion dialog now has options to prevent images from being enlarged or from being reduced (useful when resizing a batch of images).
  • The Image LOCATE command now accepts the kml keyword. This does exactly the same thing as Image LOCATE=googleearth but doesn't check for the presence of Google Earth specifically (i.e. any tool can be assigned to open .kml files).
  • Image LOCATE=googleearth (and kml) now supports locating multiple images at once.
  • Image LOCATE=windowsmaps now works to locate selected images (up to 25 maximum) in the Windows 10 Maps app.
  • The command parser now supports string arguments with embedded quotation marks. To use this, the argument itself must be quoted. Inside a quoted string, two quotation marks together will turn into one literal quotation mark in the parsed string.

        For example, SetAttr META "comment:a string with ""internal"" quotes"
  • The {dlgstring} code has a new doublequotes modifier. You can use this to allow the user to type quotes within strings that are fed into command parameters. The parameters would usually need explicit quotes around them.

        For example, SetAttr META "comment:{dlgstring|Enter Comment||doublequotes}"
  • The {file} etc codes have a new urlencode modifier, which URL-encodes the filename it adds to the command line.

        For example, you could now have a context menu command which does an automatic Google search for the selected filename with: https://www.google.com/search?q={file|urlencode}
  • The format lock (if turned on) no longer applies when navigating to the This PC or MTP folder (i.e. one of the locations in the System folder formats category).
  • The Inherit columns from other matching formats and Content threshold folder format settings are no longer preserved by Favorite formats (they aren't applicable to Favorites, but if you created the Favorite by copying it from a format that had these options modified, they would be preserved behind the scenes).
  • The Blend file background colors with background option now applies in the icon/thumbnail modes as well as in Power/Details modes.
  • Clicking OK in the Customize dialog now saves any changes in any currently-open function editors (previously changes in function editors would be lost unless they were OK'd first).
  • When searching the Preferences dialog, the search index is now saved to disk to make subsequent searches faster. This also avoids having to create all the Preferences pages, which takes a while and, in turn, triggers a bug in current versions of Windows 10 that makes the Preferences window very slow to move. Further, it should help users who reported extremely slow Preferences searches unless they disabled their virus checkers. The first search you do will be the same speed as before, but all subsequent searches should be much faster. (The cache will also be discarded each time Opus is updated, after changing language, and after larger Windows updates.)
  • Added keywords ftpsitename and ftphost to the Breadcrumbs field. When in an FTP site, ftpsitename will cause the breadcrumbs field to show the address book name of the site (if any) rather than the host address. ftpsitename,ftphost will show both.
  • The combination of {file|noext|urlencode} now works.
  • The context menu in the File Log now has an Open Containing Folder command on it.
  • Close PROGRAM=onlast now works properly from a user-defined command.
  • It's now possible to type an alias name containing a vertical bar into the location field.
  • When a label definition's text and background colors are so similar that the text would be unreadable, Opus now makes the label color more high contrast in the UI (e.g. in Preferences or in the Set Label menu item).
  • If the drag & drop function from filetypes is deleted so that no action would take place when a drag & drop occurs, the mouse cursor now reflects this rather than showing the default "copy" cursor.
  • The {dlgchoose} and {dlgchooseS} codes now let you prefix an option with default: to make it the initial selection.
  • The options/values for {dlgchoose} now support embedded + and = characters if they are doubled-up.
  • Additions to the date and time format syntax for {...} codes, providing functionality which previously required scripting:
    • Time strings can be made to include milliseconds by inserting M (capital-m) at the start of the format string. For example, {time|MHH:mm:ss} will return something similar to "08:45:32.021".
    • Date strings can use "Monday", "Today", Tomorrow", and similar for dates within a week of today by inserting N (capital-n) at the start of the format string. For example, {modified|D#Nyyyy-MM} when renaming a file.
  • Tooltip thumbnails are now shown in thumbnails mode if they are configured for a size at least twice as large as the thumbnails in the file display (this same logic was already used for tiles and details+thumbnails modes).
  • EXIF tags written by Opus no longer have a UTF-8 BOM prefix. (This was in the release notes for 12.22 but the change was left out by mistake.)

  • Fixed cosmetic issues in the metadata editor's date-time fields, when multiple files were selected with fields that had the same date or time but not both.

  • When a button editor is open, most actions which move, cut or delete the item being edited, or a parent of it (e.g. items inside menus) are now blocked to avoid losing edits.

  • To help avoid rare conflicts with other software and Desktop Double-Click, where launching other software after the double-click handler (DOpusRT.exe) breaks things, you can now add a /Delay=x argument to make DOpusRT.exe /DblClk wait before starting. Currently, this has to be added via the registry, but we will add a Prefs UI for it in the future. Ask on the forum if you need to use this.
  • Fix for Print/Export Folder not working correctly, and taking an extremely long time, if a graph column was collapsed to zero width.
  • When the current drive is removed and the Lister reverts automatically to showing the This PC folder, the removed drive's paths are no longer removed from the history list - so if the drive is reconnected you will be able to click Back to get back to the previous location.
  • The text viewer now lets you choose a bold/italic font (and hex viewer lets you choose a bold font).

  • OneDrive's context menu is now included when right-clicking the background of a OneDrive folder.

  • Hopefully fixed a problem with the duplicate finder which could cause a corrupted file list if a large number of results were returned.

  • The from/to fields at the top of the progress dialog can now be clicked to open a new Lister showing that folder.

  • The path field's Paste and Go context menu item is now enabled for paths containing aliases and envvars, and WSL /mnt/... paths, provided they resolve to fully qualified paths. (These already worked, but you had to paste and push return instead of using Paste and Go.)
  • Fixed the folder tree sometimes needing a manual refresh after certain sequences of folder creation, deletion and rename in quick succession.
  • Improved error reports and retry prompts when setting file comments on files which are in use or require UAC elevation.
  • Made a change to help guard against a reported crash.
  • Fixed path completion not working if configured to "when I press the cursor keys".
  • If the advanced custom_date_format setting uses codes for week number, ISO week number, or ISO year, they should now all work everywhere which the format affects. (But note that most people trying to use ISO year there are making a mistake. ISO year is tied to ISO week, where some dates in early January may have fall under the previous year. ISO year is not what you should use if you just want the year in a normal DMY, MDY, or YMD format.)

    When loading configs from older versions, if the advanced custom_date_format setting uses the ISO Year code but not the ISO Week code, it will be fixed automatically to use the normal year code. Using ISO Year without ISO Week is almost certainly a mistake and misunderstanding.

    When editing the same setting, if the ISO year code is used without the ISO week code, Opus will now alert you and offer to fix the format for you. If you really want ISO Year by itself at that point, you can say no, and it will then be saved and loaded in the config as in previous versions.
  • Fixed a bug in the Archives plugin (used for everything except Zip) where generating thumbnails or using the viewer on very large files could mean the files continued to be extracted (in turn locking the archive from deletion) for up to a minute after the thumbnailer/viewer finished with them (where they only needed data from the start of the file to display it, or gave up trying to display its contents entirely). Speculative extraction now only continues for up to 2 seconds, as it was supposed to.
  • Fixed native display of This PC (My Computer) not happening if it was added to and accessed via Quick Access.
  • Fixed problem with Rename sequential numbering when a pattern was specified and files didn't match the pattern.
  • Preferences / File Operations / Filters now blocks path characters when renaming filters.
  • Fixed incompatibility with drag & drops coming from PeaZip.
  • Fixed problems with descript.ion files being left behind if a folder containing one was moved from one drive to another (assuming support for descript.ion files is enabled).
  • Dragging a folder from an MTP device in Explorer to the Opus folder tab bar no longer opens a tab for every subfolder within it.
  • The Allow file selection when clicking to... options on the Preferences / File Displays / Mouse page now work with Single-click to open an item turned on.
  • In a dual file display, %G in the custom title bar definition would always show the target folder for the left file display rather than the source.
  • When the Sort field-specific key scrolling option is turned on, and the file list is sorted by something other than the name column, matches from the FAYT are now shown in that column as they are when searching on filename.
  • In a context menu, clicking the parent item of an already-open submenu no longer closes the submenu and then reopens it.
  • Resetting the Folder Options / Columns page to factory defaults now resets the Width columns to Auto rather than leaving them empty.
  • Implemented a workaround for a Windows 10 issue which causes lag when moving certain windows. (This problem started with a late 2020 Windows 10 update and affects any program or window with a large number of controls inside it. In Opus, the worst affected window was Preferences after doing a search, since that created all the sub-pages inside the window. Opening a large number of folder tabs in a lister could also trigger similar problems. You can see similar problems with Photoshop, or in some text editors if you open a lot of document tabs. Our workaround isn't perfect -- window movement can become jerky instead of laggy -- but makes things a lot better, until Microsoft fix their OS. The workaround has only been added to the Preferences and lister windows for now, as it shouldn't be needed for any others.)
  • Changing the Text Viewer's bold and italic font settings now updates existing viewers.
  • When loading a Lister Style that is set to load a tab group, if any sections of the folder formats of the tabs in the group are turned off, this is now respected.
  • Fixed problem with wildcard label filters on MTP devices where wildcards would not correctly match the beginning of filenames.
  • Fixed problem with the controls under the Preferences / Folder Tabs / Appearance / Same size tabs option not being initially selected correctly in all cases.
  • Fixed incorrect interaction between custom time format and the Show seconds/Show milliseconds options.
  • Fixed problem which could result in an incorrect folder being loaded in a dual display Lister when changing between a network and a local folder, and something other than Desktop was selected as the start of the folder tree.
  • Fixed high DPI combobox height with simple {dlgchoose} and script dialog requesters that use them.
  • Made some changes to improve resize speed (only affects Windows 10 / DWM currently).
  • Fixed the Folder Tree Options page in Preferences not displaying correctly with certain custom/non-standard Windows scaling factors.
  • Fixed problem with folder tabs context menu command "Split to dual display" leaving the remaining tabs the wrong size in some cases.
  • Clarified docs and command template for the Set FORMAT argument.
  • Scripting changes:
    • The UnorderedSet.Exists method now works with sets containing things other than strings.

    • DOpus.LoadImage can now accept a Blob instead of a filename to decode an image from memory.

    • FSUtil has new GetTempDirPath, GetTempFilePath and GetTempFile methods, to make creating temporary files and folders easier.
    • FileSize.high and FileSize.low properties now return a DECIMAL type rather than a LONG (LONG types are signed; DECIMAL types are unsigned).

    • FileSize has a new val property, which returns the full 64-bit value as a DECIMAL type. Works in JScript, does not work in VBScript.
    • FileSize has new valhex, highhex and lowhex to return the values as hexadecimal strings.
    • FileSize can now be initialised with a hex string by prepending $ or 0x to the value (e.g. "$100").

    • Added File.path property which returns the path of the File object as a Path object (the default value only returns a string).

    • The File.Write method can now accept a string to write to the file as well as a blob/array. The string will be UTF-8 encoded.

    • The FSUtil.OpenFile and Item.Open methods now accept the d flag to mark the file as "delete-on-close". It will be automatically deleted when the file is closed.

    • The Map script object has new Get and Set methods as an alternative to using map("key"). For convenience [] can also now be used to access map members, but only if the key is completely numeric (e.g. map[123]) or begins with an underscore (map["_moo"]);
    • The DOpus.LoadThumbnail script method has a new optional flags parameter. Currently the available flags are i and c. If the i flag is set this prevents Opus from waiting for thumbnails that may take some time to generate, and instead returns a large icon if the thumbnail can't be generated immediately. You can also set the c flag to make make this only happen in cloud folders (e.g. OneDrive).
    • Added FSUtil.GetADSNames script method. Returns a StringSet containing the names of any alternate NTFS data streams attached to the specified file.
    • Added valign property to script dialog static controls; allows text to be centered vertically or bottom-aligned as well as top-aligned.
    • Number fields in script dialogs can now have their minimum/maximum values set to negative numbers
    • Added script Dialog.WatchTab event type filter - notifies of changes to filtering via the filter bar.

The following changes are new for 12.24:

  • Fixed {file|noext} not adding automatic quotes when needed.
  • Fixed issue with local HTTP help where some internal page links used Javascript that didn't work locally.
  • Fixed Preferences / Miscellaneous / Advanced not filtering itself if the search cache existed and a Preferences search matching the Advanced page was done before it had been displayed.
  • Added PDF-XChange Column Handler shell extension to the default blocklist, as it was causing delays reading the first folder after a reboot. This only affects the custom file display columns it added, which we don't think many people were using. Other PDF-XChange functionality, such as the Preview Handler, is unaffected.

    If you need to unblock it, add {D8716A0E-4E9F-4D3F-BF1B-3460D86BB310} to Preferences / Miscellaneous / Advanced [Troubleshooting]: allow_context_menus