Skip to content

Releases: shundhammer/qdirstat

New QDirStat Release: 1.9

14 Jan 14:05
Compare
Choose a tag to compare

Overview

The QDirStat project proudly presents its latest release: QDirStat 1.9.

This is a stable release. It brings a some new features and bug fixes.

Summary

  • Greatly improved the visual appearance of the treemap thanks to @Lithopsian

  • Dominant (very large) items are now highlighted in bold font in the tree view

  • New "Find" function in the scanned directory tree

  • Added support for bookmarks

  • New documentation to explain the treemap

  • Some small improvements

  • Bug fixes

Screenshot

QDirStat-1 9-main

Details

Treemap Improvements

@Lithopsian noticed that the treemap layout algorithm and the shading of treemap tiles were somewhat different in QDirStat from the original papers by the TU Eindhoven from 1999-2000, and he contributed fixes to change that.

This was a great opportunity to fine-tune the lighting parameters of the treemap, and the overall result is that the colors now look much cleaner and brighter.

In addition to that, the directory hierarchy (always a weak point in the treemap) is now much more obvious: You can see from the spiral-like layout on each directory level which files belong together.

See also GitHub issue #236 for more details and lots of screenshots.

Dominant Items

QDirStat-dominant-items

Now Showing dominant items in the directory tree in bold font. This may not sound spectacular, but it is immensely helpful to spot disproportinally large directories or files.

If you don't like it, you can turn it off, of course.

Screenshots and more details at GitHub issue #210.

New "Find" Function

Added a "find files"function in the in-memory tree. You can search for files or directories or both with various options. Use menu "Edit" -> "Find" or Ctrl+F to start it:

Searching in the in-memory directory tree is lightning fast, and it's flexible with all the search modes:

  • Contains
  • Starts with
  • Ends with
  • Wildcard
  • Regexp
  • Auto (Default)

"Auto" tries to guess one of the above: If it looks like you used shell wildcards, it uses "Wildcard"; if it looks like a regular expression (i.e. it contains any of .*, ^, $, but not .*), it uses "Regexp", otherwise "Contains".

The search results are presented in the same window that you might know from the "Discover" actions (largest files, oldest files, broken symlinks etc.). That means that you can move this results window out of the way and select each of the results to see it in the main window with all details:

QDirStat-search-result

More screenshots and use cases at GitHub issue #222.

Use Case: Media Browser

Some time ago, that window also got support to start cleanup actions directly from there, including a context menu for each search result, so you can use cleanup actions there directly. Or use their keyboard shortcuts, of course.

With just a tiny bit of customizing, that makes for a very flexible media browser: I configured 'VLC' as one of the cleanup actions, and now I can search through my video or music collection easily to find media files where I only know a fraction of the title and start playing it right away, directly from within QDirStat. Or open a file manager there. Or a shell window. Or whatever else might come to mind.

media-browser

This opens a lot of new possibilities. Use your imagination!

Use Case: Examining Browser Extensions

See GitHub issue #222

Bookmarks

Added bookmarks, very much like in an Internet browser.

There is now a star icon to the left of the current path to show you if it's a bookmark / favorite, and you can click on it (or use Ctrl+D like in all major browsers) to bookmark or un-bookmark it.

The "Go" menu now has a "To Bookmarks" submenu where the bookmarks appear. Selecting one of them will go to that location in the tree. Bookmarks that are not in the current tree are disabled, but still there.

As with the "Cleanups" menu, you can "tear off" the bookmarks menu and leave it open at a convenient place on your screen for instant access.

The bookmarks are stored in a simple text file at ~/.config/QDirStat/bookmarks.txt so you can easily edit, add or delete them in bulk.

Use Case: Examine Left-over Browser Cache Directories

cache-bookmarks

A use case are all those Internet browser cache directories somewhere deep below ~/.cache and ~/.config that keep filling up with Gigabytes of stuff, and that are never emptied even when you tell your browser to clear browsing data.

Use the new "Find" function to search for "cache" and "thumbnails" directories and bookmark them so you can easily revisit them: Tear off both the "Bookmarks" and the "Cleanups" menu, move them to the side and go through the bookmarks one by one and decide for which ones you want to use the "Clear Directory Contents" cleanup action. Cleaning up browser cruft becomes very easy.

...and yes, they dump tons of cruft not only into the ~/.cache directory which has the express purpose of just that, they also do it in ~/.config which is intended for configuration data, not for random junk that can be easily restored. Chrome / Chromium, Firefox, Opera, even Thunderbird - they all do it.

When you've cleaned up often enough like that to get a feeling where it's worthwhile, you can even use the bookmarks file as a starting point for a simple script to automate the task.

New Treemap Documentation

https://github.com/shundhammer/qdirstat/blob/master/doc/Treemap.md

This is also available from the "Help" menu.

Small Improvements

  • Implemented GitHub issue #240:
    Follow a symlink that was passed as a command line argument

  • Reworked the context menus: No more disabled actions, removed very uncommon menu items (which are also easily available in the main menu or via a key combination).

  • Improved the initial selection after reading a directory tree or refreshing a part of it: Now it much more reliably selects the toplevel item after reading is complete, so the "Details" panel on the right displays something useful.

  • The blue stripe at the bottom of some treemaps (e.g. in the package view) is now gone.

  • The file type statistics now have a sub-category Other to account for matches of non-suffix patterns so the sub-total of each category adds up.
    This wasn't wrong per se, it just led to a bit of confusion.
    See also GitHub issue #241.

  • Added some type icons (file, directory) to some results windows (Search results, discover action results, file extension search)

  • Show the number of results in the search results window and tell the user when the results have been cut off at the maximum 1000.

  • Package view: Added a "splash" pop-up to indicate what is going on while reading the package database.

  • Package view: Dont' set the directory read error status for missing files (files that should be there for a package, but are not), just log it.

  • Package view: Allow for extra slashes in a Pkg:/ URLs, e.g. Pkg://foo (technically wrong, but it happens all the time)

  • Made the keyboard shortcuts for actions "Go Up" and "Go to Toplevel" available globally, no matter what QDirStat window is the active one.

Bug Fixes

  • Fixed GitHub issue #231:
    Crash with exception when opening the packages view multiple times and selecting items in the treemap

  • Fixed GitHub issue #232:
    No or wrong content in the details panel after hiding it, selecting a file and showing it again

  • Fixed GitHub issue #213:
    Hyperlink difficult to see in dark widget theme

Donations

QDirStat is Free Open Source Software.

If you find it useful, please consider donating. You can donate any amount of your choice via PayPal:

paypal

New QDirStat Release: 1.8.1

30 Jun 08:38
Compare
Choose a tag to compare

Overview

The QDirStat project proudly presents its latest release: QDirStat 1.8.1.

This is a stable release. It brings a some new features and bug fixes:

Summary

  • New treemap interaction: Middle click in the treemap now highlights the parent directories of the clicked item, and everything outside that branch is dimmed.

  • Some small improvements

  • Bug fixes

Details

  • A middle click now outlines an item's parent, grandparent etc. directories in the treemap.

    Middle-click it again or click outside the highlighted area to remove the highlight.

    You can use the middle click pretty much like a left click, including Shift- and Ctrl-click to extend the selection.

    See GitHub issue #181 for a screenshot and more details.

  • No longer drawing additional lines in the treemap by default if there is low contrast between individual treemap tiles; that only makes the treemap display uglier for little benefit.

    You can still switch it on with the EnforceContrast setting in the config file (~/.config/QDirStat/QDirStat.conf).

  • Don't show inactive (unmounted) mounts managed by the automounter anymore in the "Places and Mounted Filesystems" bar of the "Open Directory" dialog.

    Notice that those directories are still accessible from the tree at the right side, but they no longer take a prominent place in the left bar.

  • Prevent a hanging Samba (CIFS) or NFS mount from blocking the program, even when no information from that mount is needed at all:

    If you started QDirStat with a path on the command line, it collected the information about used / free / reserved disk space for all mounted filesytems already. If you had a network mount that didn't respond, you still had to wait for a timeout before the program could continue.

    Now it collects that information only when it's really needed:

    • In the "Open Directory" dialog where it displays those sizes in the "Places and Mounted Filesystems" bar on the left

    • In the "Mounted Filesystems" (du-like) window (Menu "View" -> "Show Mounted Filesystems").

  • Now cutting off insanely long generated device names of LUKS devices in the "Mounted Filesystems" window: E.g. /dev/mapper/luks-3fae43... instead of /dev/mapper/luks-3fae4328-4294-4c77-8f98-d437c41da26c. The long name is displayed in a tooltip.

  • Added packed Git archives ("pack-*.pack") to the "Compressed Archives" MIME category, i.e., they appear now in green in the treemap, no longer in the "I don't know what that thing is" grey.

    If you never changed your MIME type configuration, simply delete ~/.config/QDirStat/QDirStat-mime.conf (while QDirStat is not running!) to get this change; it will be regenerated with the new defaults upon the next program start.

Bug Fixes

  • Fixed GitHub issue #184: When reading a cache file, sparse files were displayed as "allocated: 0 Bytes".

  • Fixed GitHub issue #190: MIME categories for overlapping suffixes

    Files with multiple suffixes like .tar.gz were wrongly sorted into the same MIME category as .gz. It did find the category for the longer one (.tar.gz), but then it continued looking, resulting in the shortest matching one (.gz). Now stopping at the longest hit.

  • Now using xdg-open %d in KDE Plasma for the "Open File Manager Here" standard cleanup action. This may help for GitHub issue #192, yet still maintain the ability to use a powerful file manager like Konqueror (if that is configured), falling back to the standard Dolphin.

  • Improved BSD support (GitHub issue #195): If neither /proc/mounts nor /etc/mtab is available, fall back to using QStorageInfo (if available; Qt 5.4 or later).

    This returns a little less complete information; for example, only rudimentary mount options which are used for some special cases.

  • Bug fix for the "Packages" view for .deb / APT based systems: Now also list packages that are on hold. They were previously missing.

New QDirStat Release: 1.8

28 Aug 18:33
Compare
Choose a tag to compare

Overview

The QDirStat project proudly presents its latest release: QDirStat 1.8.

This is a stable release. It brings a some new features and bug fixes:

  • New view: File Age Statistics

  • Navigation history like in a web browser (Back, Forward)

  • Bug fixes

  • Some small improvements

Details

New view: File Age Statistics

This shows the number of files per year and/or per month that were last modified in that year or month, together with the total size of those files and a percent bar for both (number and total size).

This view is extensively documented in the File Age Statistics Document.

Navigation History

This implements a navigation history for directories like in a web browser:

  • New buttons Back / Forward in the tool bar

  • Standard keyboard shortcuts [Alt] [Cursor Left] /
    [Alt] [Cursor Right] like in all common web browsers

  • Support for Back / Forward mouse buttons if the mouse has them

  • History menu on those buttons (long press on the buttons) for the last 16 directories

Bug Fixes

  • Fixed GitHub issue #169:
    Shorten path components in the breadcrumb widget for insanely long paths.

  • Now closing a left-over Permissions error panel when refreshing from disk: After the re-read, the permissions error may no longer be there.

Other Improvements

  • In the Mounted Filesystems window, don't show inactive mounts managed by the automounter anymore.

  • In the Open Directory window, automatically open the first directory level if a path was clicked in the Places list on the left, and scroll the tree on the right so that path is at the top.

  • Added a little margin to the left in the main window's tree view for the Size column so it looks now less cramped.

  • Internal restructuring and refactoring to keep the code maintainable.

New QDirStat Release: 1.7.1

05 Apr 13:58
Compare
Choose a tag to compare

Overview

The QDirStat project proudly presents its latest release: QDirStat 1.7.1.

This is a stable release. It brings a number new features and a bug fix:

  • Added a "Discover" toplevel menu with actions to easily find

    • the largest files
    • the newest files
    • the oldest files
    • files with multiple hard links
    • broken symbolic links
    • sparse files
  • Now showing the target of symbolic links in the details panel. If the target does not exist, a Broken Link warning is also shown.

  • Menu reorganization. The new toplevel menus are now:

    File, Edit, View, Go To, Discover, Clean up, Help

  • Enabled Refresh Selected now for files as well. In that case, the parent directory is refreshed.

  • Added hotkey [F6] for Refresh Selected.

  • Now ignoring the loopback mounts of installed snap packages in the "Open Directory" dialog and in the "Mounted Filesystems" window.

  • Added links to external documents to a new "Problems and Solutions" submenu of the "Help" menu so they are more easily discoverable.

  • Added a document about finding files that are shadowed by a mount and a script for the most common case.

  • Bug fix: Fixed GitHub Issue #149:

    Segfault when using a cleanup action with refresh policy AssumeDeleted after a cleanup action with RefreshParent in the same directory.

Details

"Discover" Actions

Added a "Discover" toplevel menu with actions to easily find

  • the largest files
  • the newest files
  • the oldest files
  • files with multiple hard links
  • broken symbolic links
  • sparse files

in the whole displayed directory tree or, if a directory is selected, in that subtree.

In each case, a non-modal dialog is opened with a list of the results. Clicking on one of them selects it in the main window where you can see more details and use cleanup actions.

Most of that was already there in some way or the other, but now it's easier to discover (pun intended) and to use.

Finding large files is of course what the treemap is primarily for; just spot large blobs and click on them to find out what they are and where they are hiding.

Finding the newest files can also be done by sorting the tree by the "last modified" column and then opening the topmost branches. This is often useful to find out where some browser dumped that last download.

Similarly, to find the oldest files, enable the "oldest files" tree column, sort by that and open branches until you can see a file.

Files with multiple hard links or sparse files were mentioned in the log; otherwise they were not so easy to find (short of using the command line, of course).

Symlinks in the Details Panel

Now showing the target of symbolic links in the details panel.

If it's a short path, the whole path is shown; otherwise without the path (".../somewhere"), and the full path is shown as a pop-up upon mouse click.

If the target does not exist, a Broken Link warning is also shown.

Menu Reorganization

The menus had become a little too crowded, especially on the top level.

  • The new toplevel menus are now:

    • File
    • Edit
    • View
    • Go To
    • Discover
    • Clean up
    • Help

    I.e. it's down to 7 items which is generally regarded as the gold standard by usability experts.

  • The former "Settings" menu is gone; "Configure QDirStat" is now in the "Edit" menu. There was only that one action in the "Settings" menu, and that is quite wasteful in terms of screen space and toplevel menu complexity.

  • Moved out some options entirely from the menus; they are still available when editing the config file manually:

    • "Show current path"
    • "Treemap as side panel"
  • "Expand tree level" is now limited to level 5 (formerly 9). Opening that many tree branches means a huge performance drop anyway.

  • The former "Treemap" menu is now a submenu of "View". Most of those actions are available as tool bar buttons and mouse wheel operations anyway.

Documentation

  • Added links to external documents to a new "Problems and Solutions" submenu of the "Help" menu so they are more easily discoverable.

  • Added a document about finding files that are shadowed by a mount and a script for the most common case.

Handling Loopback Mounts

Now ignoring the loopback mounts of installed snap packages in the "Open Directory" dialog and in the "Mounted Filesystems" window.

Yes, each of them has a separate loop mount, even if it's only installed, not in active use. Those mounts clutter the output of commands like df or mount with nonsensical cruft:

df -hT | grep snap

/dev/loop0  squashfs  159M  159M  0 100% /snap/chromium/1244
/dev/loop1  squashfs   55M   55M  0 100% /snap/core18/1880
/dev/loop2  squashfs   63M   63M  0 100% /snap/gtk-common-themes/1506
/dev/loop3  squashfs   30M   30M  0 100% /snap/snapd/8542

(From a freshly installed Xubuntu 20.04 LTS)

Misc

  • Enabled Refresh Selected now for files as well. In that case, the parent directory is refreshed.

  • Added hotkey [F6] for Refresh Selected.

    [F5] is still Refresh All like in all web browsers. Since window managers / desktop environments tend to consume [F5] with modifier keys ([Shift] [F5], [Alt] [F5], [Ctrl] [F5]), this is the closest we can get, and it's more consistent than using something like [Ctrl] [R].

    This was inspired by the discussion in PR#145.

Bug Fix

Fixed GitHub Issue #149:

Segfault when using a cleanup action with refresh policy AssumeDeleted after a cleanup action with RefreshParent in the same directory.

New QDirStat Release: 1.7

26 Jul 12:08
Compare
Choose a tag to compare

Overview

The QDirStat project proudly presents its latest release: QDirStat 1.7.

This is a stable release. It brings a number new features and some bug fixes:

  • Closing the gap between sizes reported by QDirstat and sizes reported by the du command: Now also taking the allocated size into account.

  • Now also displaying the allocated size where it makes sense.

  • New "Mounted Filesystems" window showing output similar to the df command (but without the cruft).

  • New directory selection dialog showing all (real) filesystems.

  • New checkbox to cross filesystems (temporarily) in the directory selection dialog.

  • Workaround for NTFS oddities: Ignoring hard links on NTFS.

  • Added config option to ignore hard links in general.

  • Added a document about Btrfs free size and how different tools tend to show different values:
    Btrfs-Free-Size.md

  • Bug fixes

Details

Closing the Gap Between QDirstat and the "du" Command

QDirStat now also takes the allocated size (the number of allocated disk blocks) into account.

There were repeated threads on various social media where users wondered why QDirStat displayed different sizes than the du or the df commands, sometimes slightly different, sometimes off by quite a lot.

In short, this is mostly due to the difference between a file's byte size and its allocated blocks: On most filesystem types, a file of 49 bytes still consumes a minimum of 4 KB (4096 bytes); disk space is allocated in clusters (typically 4 KB), not byte by byte. On a typical Linux root filesystem with many thousands of tiny files, this difference can add up to a lot.

Formerly, QDirStat only added up the byte sizes, disregarding the allocated, but really unused part at the end of tiny files. The rationale was that some filesystem types handle that in more intelligent ways, yet there is no documented way to get information from a filesystem if it actually does that. It turned out that in reality, most of them don't bother; they simply let most of that last cluster go to waste.

Now QDirStat displays both sizes where useful:

  • For tiny files, the tree view now shows both sizes: "49 B (4k)"

  • For directories, the tree view now shows the total of the allocated sizes. This may sound a bit inconsistent, but it feels very natural and intuitive: You are typically interested in how much disk space the subtree consumes, no matter if some part of that is really wasted.

  • The details view shows both sizes when there is a difference (in the displayed numeric precision): "Size: 42.1 MB" vs. "Allocated: 42.2 MB", but not "Size: 42.0 MB" vs. "Allocated: 42.0 MB".

  • Treemap tiles now correspond to a file's allocated size. This makes a real difference for tiny files.

More details at GitHub Issue #134: Size Difference between QDirStat Reports and the "du" and "df" Commands.

New "Mounted Filesystems" Window

Menu "View" -> "Show Mounted Filesystems" or Ctrl-M:

This shows information about "normal" mounted filesystems (excluding system mounts like /dev, /proc, /sys, bind mounts, Btrfs subvolumes) with usage data as reported by the filesystem itself. The "Reserved" column shows the disk space reserved for the root user on that filesystem, "Free" is the available space for non-privileged users.

Sometimes the "Used" size reported here may be different from what QDirStat reports after reading that complete filesystem; this can be due to metadata, journals or snapshots. Notice that in those cases, the du command will also display a different value than the df command.

New Directory Selection Dialog

QDirStat now has its own custom directory selection dialog; it no longer uses one of the simplistic Qt standard file dialogs:

The "Places" bar on the left shows your home directory and all "real" filesystems (the same as in the new "Mounted Filesystems" window). For each filesystem, it shows

  • The mount point
  • The total size of the filesystem
  • The filesystem type ("ext4", "btrfs", "ntfs", ...)
  • The device name ("/dev/sda2") (in a tooltip)

In the "Path" combo box you can simply edit the path or copy and paste it from another window. Use the "Up" button to move one directory level up.

Crossing Filesystems Temporarily

The "Cross Filesystems" checkbox lets you temporarily override the global configuration option of the same name: QDirStat will then no longer stop when a mount point is found during reading a subtree, it will descend into that mounted filesystem and read it, too; but again, only for "real" filesystems, not for system mounts such as /dev, /sys, /proc, not for bind mounts, not for filesystems mounted multiple times, and not for network mounts (NFS, Samba / CIFS).

More details at GitHub Issue #129.

NTFS File Sizes and Hard Links

Added a workaround for wrong size sums on NTFS: Now disregarding hard links on NTFS.

The (current?) ntfs-3g implementation using fuseblk seems to disagree with Windows tools which files really have hard links.

It appears that ntfs-3g regards even the MS-DOS compatible short filename (PROGRA~2 vs. Program Files) as a hard link which is of course utter nonsense; that means that almost all files on an NTFS partition are reported as having multiple hard links, so QDirStat displayed them as having only half their real size.

Notice that this is a bug in ntfs-3g, not in QDirStat.

See also GitHub Issue #88.

Completely Ignore Hard Links

Added a config option to ignore hard links.

This is useful for a very small number of use cases. Hard links are not very common anymore in today's Linux / BSD / Unix-like systems, so most users won't have to bother with this at all.

By default, QDirStat sums up the disk space for a file with multiple hard links for each hard link's share of the overall size: If a file with 1 MB has 4 hard links, for each of those 4 links QDirStat adds 1/4 of the size (i.e., 256 kB) to the parent directory. If all those 4 links are in the same directory, that's very simple: They add up to 4 * 256 kB = 1 MB, so the sum is correct.

If those hard links are all in different directories, each directory only gets part of that disk space allocated, because in fact they share the disk space among each other; the total disk space sum taking all those directories into account is still correct, of course.

The trouble starts when you want to make a backup of only one of those directories: Even though the disk space is still shared with other directories, on the backup medium, you still need the disk space for that complete file, i.e. the full 1 MB, not only that directory's share (256 kB). With a lot of hard-linked files, that can add up to a lot of difference between what QDirStat displays and what disk space you actually need for the backup.

There was a user who makes heavy use of that, and for that kind of use case there is now the option to ignore hard links: In that case, QDirStat sums up the complete size (the full 1 MB) for each hard link of the file.

While that is useful for this special case, and you can now see the total size that you will need for your backup medium for that one directory, the total size higher up in the directory tree where more than one of those directories that share hard linked files with each other is off: That file now appears 4 times with 1 MB each, so it will add up to 4 MB.

There is now a new config option in ~/.config/QDirStat/QDirStat.conf:

[DirectoryTree]
...
IgnoreHardLinks=false

This is intentionally not available in the GUI config dialog to avoid confusion; use a text editor (while QDirStat is not running) to change this setting.

Please use that config option only when you are aware of the consequences; this is a specialized option for rare, specialized use cases. It basically makes sense only if the other hard links are all outside the subtree that QDirStat displays.

More details at GitHub Issue #124.

New Document about Btrfs Free Size

There is now a new document about Btrfs free size and how different tools tend to show different values: Btrfs-Free-Size.md

Whenever users run out of disk space on Btrfs (which happens a lot, mostly because of snapshots) and they try to figure out where all their disk space went, they are confused about different tools reporting totally different and inconsistent sizes; traditional Linux / Unix command line tools like du and df just like GUI tools like QDirStat. Hopefully, this document will shed some light on that.

Bug Fixes

  • Fixed the internal cache writer (the one called from the File menu, not the qdirstat-cache-writer Perl script): For files with multiple hard links, it wrote the wrong size to the cache file: The result of size / links, not size.

    This was part of [GitHub Issue #124](https://...

Read more

New QDirStat Release: 1.6.1

13 Feb 13:25
Compare
Choose a tag to compare

Overview

The QDirStat project proudly presents its latest release: QDirStat 1.6.1.

This is a stable release. It brings some new (minor) features and one bug fix:

  • Much better handling for "permission denied" errors while reading directories.

  • Now showing the exact byte size (134 495 994 Bytes instead of 128.3 MB) upon mouse click in the tree (right click) and in the details panel (left or right click).

  • New optional tree column "Oldest File" (not enabled by default).

  • Bug fix: Support for dark widget themes in File Size Histogram window.

Details

Improved Handling for "Permission Denied" Errors while Reading Directories

If you start QDirStat with insufficient permissions, you could easily overlook large subtrees in the filesystem that consume disk space, but were not visible to you. They did get a special icon, but you would have to open the parent directory in the tree view to see that.

Now, QDirStat notifies you in several ways:

  • All parent directories that contain a subtree that could not be read are now displayed in dark red in the tree view.

  • The Size field of those directories as well as other accumulated values (Items, Files, Subdirs) are now preceded with a "greater than" sign to indicate that there is most likely more, but that information could not be retrieved: ">7.2 MB" indicating that it's at least 7.2 MB and most likely more than that, but we don't know because one or more subdirectories could not be read.

  • A message panel in the main window between the tree view and the treemap with a message that some directories could not be read.

    You can close the message with the [x] close button on its right side, but you can also simply leave it open. This is a lot less obtrusive than a pop-up dialog, yet less temporary than a message in the bottom status line that will disappear in a few seconds or when anything else is reported.

  • Clicking on the "Details..." link in that message opens a separate window to report all directories that could not be read (typically because of insufficient permissions).

    This window is non-modal, i.e. you can still interact with the main window when it is open. Click on any directory that it lists to locate it in the main window: The tree view will open that branch and scroll to make it visible.

  • In addition to the "locked folder" icon, unreadable directories are shown in bright red in the tree view.

  • When an unreadable directory is selected in the tree view, the details panel now shows a large padlock icon and a message "[Permission Denied]", and the permissions are highlighted in red.

Exact Byte Size on Demand

You can now see the exact size in bytes both in the tree view and in the details panel: 134 495 994 Bytes instead of 128.3 MB. The field is still (somewhat) human readable with thousands separators (using blanks to avoid confusion with different decimal / thousands separators in different languages).

This can make it easier to compare sizes with other tools that report them in bytes or that insist in using 1000-based units (QDirStat uses 1024-based size units: 1 kB = 1024 Bytes; 1 MB = 1024 kB; 1 GB = 1024 MB; etc.).

Not using tool tips that appear automatically was a conscious decision: This level of detailed information is not needed that often, and tool tips get in the way whenever the mouse cursor lingers too long at an active spot. More often than not a tool tip obscurs other content that the user might want to read at that very moment. This is why in QDirStat in the rare cases that you are interested in those exact numbers, you have to click:

  • In the tree view, right-click a size field (a left click is used for selecting an item in tree views, so the context menu is pressed into service for that purpose (only for the size column)).

  • In the details panel, use left or right click. To indicate what fields can be clicked, they are now underlined when the mouse hovers over them.

    Hovering over fields that can be clicked shows them underlined, very much like a hyperlink.

    Clicking (left or right mouse button) shows more details: In this case, the exact byte size.

New Tree Column "Oldest File"

There is now an optional new column "Oldest File" that shows the timestamp (the mtime) of the oldest file in a subtree. This is strictly about files; directories, symlinks and special files (block or character devices, FIFOs etc.) are ignored for this.

This may be useful to spot some old cruft, for example leftover dot files in your home directory. Many programs generate such files when you start them for the first time, and they are rarely cleaned up when they fall out of use.

Notice that this column is not enabled by default. If you would like to use it, switch to layout L2 or L3, right-click the tree header to open the columns context menu, select Hidden Columns, then Show Column "Oldest File".

Of course you can also sort by this column to see the oldest files first (or last).

Bug Fix

Fixed text color in histogram in dark widget themes (GitHub Issue #117).

New QDirStat Release: 1.6

22 Jul 13:07
Compare
Choose a tag to compare

Overview

The QDirStat project proudly presents its latest release: QDirStat 1.6.

This is a stable release. It brings performance improvements, new features and some bug fixes:

  • Performance improvement while reading directories

  • Vast performance improvement for huge directories (100.000+ entries in a single directory)

  • New packages view

  • New unpackaged files view

  • New standard cleanup: Check File Type

  • Support for excluding directories containing a file with a specific name or pattern.

  • Greatly improved man page

  • Some minor bug fixes.

Details

Performance Improvements

New Views

  • New packages view:
    QDirStat can now visualize the file lists of installed packages:

    I.e. files are now grouped by the package they belong to, and in each subtree only the files that belong to the package are displayed: In this example, in /usr/bin only the chromium-browser binary is displayed, not all the other files in /usr/bin. This is intentional.

    You can display all installed packages with their file lists (but that takes a while), or you can select just a subset. Use Menu File -> Show Installed Packages or start QDirStat with a pkg:/ command line argument.

    As with the other package manager related features, this is supported for all Linux distributions that use one of dpkg, rpm or pacman (or any higher-level package manager based on any of those like apt, zypper etc.).

    More details at Pkg-View.md.

  • New unpackaged files view:

    QDirStat can now visualize the files in system directories that are not packaged, i.e. that are not part of any file list of any installed software package.

    This can be useful to track down problems after package upgrades or after manually installing software with sudo make install.

    This is supported for all Linux distributions that use dpkg or rpm (or any higher-level package manager based on any of those like apt, zypper etc.).

    More details at Unpkg-View.md.

Misc

  • New standard cleanup: Check File Type. This uses the file command to find out more detailed information what exactly a file is and displays it in the cleanup output window.

    More details, screenshots and how to get it if you already have an existing QDirStat cleanup configuration file (i.e. if you used QDirStat before): GitHub Issue #102.

  • Implemented GitHub Issue #90: Support excluding directories containing a file with a specific name or pattern.

    Similar to some backup tools, you can now specify an exclude rule that lets you exclude a directory that contains a file like .nobackup or .qdirstatexclude.

  • Greatly improved the man page; see man 1 qdirstat.

  • Some minor bug fixes.

New QDirStat Release: 1.5

07 Nov 20:25
Compare
Choose a tag to compare

Overview

The QDirStat project proudly presents its latest release: QDirStat 1.5.

This is a stable release following the recent 1.4.97-Beta release.
It brings a number of new features as well as some bug fixes:

  • (Optional) breadcrumbs navigation

  • (Optional) a new "details" panel for the currently selected item

  • (Optional) new tree columns:
    owner, group, permissions both in "rwxrwxrwx" and in octal format

  • Package manager support for the major Linux package managers (dpkg / rpm / pacman) to see what package a system file belongs to.

  • Quick-switchable different layouts for the main window

  • A new "General" page in the configuration dialog

  • Show in the window title if the program runs with root permissions (sudo etc.)

  • (Optional) show the URL in the window title

  • Some bug fixes (see below)

There were very few changes compared to the 1.4.97-Beta release. No bugs were reported against that Beta.

Details

Main Window

Breadcrumbs Navigation (Optional)

Above the directory tree there is now a breadcrumbs navigation widget.

This shows the current path with each component a clickable link so you can easily go up the tree - up to the top of the tree that you started QDirStat with.

You can switch this on and off with View -> Show Current Path.

The New "Details" Panel (Optional)

On the right side of the tree there is now a "Details" panel showing information about the currently selected item, or, if multiple items are selected, about the sum of them all.

You can switch this on and off with View -> Show Details Panel.

What information is dispayed depends on the type of the selected item:

  • File:

    • File name (without path)
    • Type (file / symlink / block device / character device / FIFO)
    • MIME Category (Documents / Images / Videos / ...) as defined for the treemap colors (see MIME Categories in the configuration dialog).
    • Size
    • A notification if this is very likely a system file, i.e. a file owned by a user ID < 500 and in a known system directory like /bin, /dev, /etc, /lib, /opt; /usr, but not /usr/local; etc.
    • For system files: The software package that it belongs to, if known (see below)
    • User (file owner)
    • Group
    • Permissions in both "rwxrwxrwx" and octal ("0777") format
    • Date and time of last modification (mtime)
  • Directory:

    • Subtree information:
      Total size, items, files, subdirectories; date and time of the last modification anywhere in that subtree
    • Information about the directory itself:
      Size of the directory itself without the subtree, user, group, permissions; date and time of the last modification of the directory (which might be less recent than the last modification of any file anywhere in the subtree).
  • Files pseudo directory:

    Similar to directory, but only the subtree information since there is no counterpart to this object on disk; it just serves to collect the direct file children of the directory.

  • Multi-selection:

    • Total size of all selected items including any subtrees
    • Number of directly selected files (without subtrees)
    • Number of directly selected directories (without subtrees)
    • Total number of files in all selected subtrees

Package Manager Support

If a file is identified as a system file and a supported package manager is detected on the system, QDirStat now queries the package manager what software package the file belongs to and displays that information in the new "Details" panel.

This gives a surprising amount of insight where all the disk space on the system directories goes to, most importantly some of the big blobs in the tremap.

Currently, QDirStat supports the most common Linux package managers: dpkg, rpm, pacman.

Please notice that higher-level package managers such as apt, zypper, yum or front-ends like synaptic, PackageKit all use one of those lower-level package managers internally, so even if you normally only use one of those higher-level package managers, it still works without any restriction.

That means that QDirStat currently supports this feature for:

  • Debian
  • Ubuntu / Kubuntu / Xubuntu / Lubuntu
  • SUSE (openSUSE Tumbleweed or Leap, SLES)
  • Red Hat (Fedora, RHEL)
  • Arch Linux
  • Manjaro

... and dozens more; basically all that are based on any of the above.

This feature works by running dpkg -S, rpm -qf or pacman -Qo as external commands, so this is a somewhat expensive operation. To keep the user interface responsive, QDirStat now has an "adaptive timer" for updating that information: Normally, the result is shown instantly, but if you click around wildly, there is a timer that is increased or decreased (thus "adaptive") for a delayed update after that timeout (0 / 333 / 1000 / 2500 millisec right now).

It can even handle rpm installed as a foreign package manager on a dpkg based system (and the other way round); it tries the primary package manager first, then any others that are also installed.

Support for BSD systems (FreeBSD, OpenBSD) was also planned, but it turned out that currently the package managers of those systems only know what package owns files of ports / 3rd party, not for the base system, so this feature might not be very useful on those systems.

Unified Size Columns

In the tree there used to be separate colums for total size and own size; this is now unified to only one size column. Own size was really mostly useful for directories where the directory itself has a size, and then there are all its children in the subtree. But that information (which is only rarely useful anyway) is available in the "Details" panel, so it no longer makes much sense to consume so much screen space with that separate column.

New Tree Columns (Optional)

This was the result of GitHub issue #80: Show owner and group in the tree.

The directory tree view can now display those additional columns:

  • User (file owner)
  • Group
  • Permissions in "rwxrwxrwx" format
  • Permissions in octal ("0777") as used for the chmod command.

Remember that you can hide or show tree columns in the tree by using the context menu in the tree header: Right-click on any header in the tree. You can also rearrange columns by dragging them where you want them - with the exception of the Name column which always remains at the left edge.

Switching Layouts

Since the new columns consume so much screen space and they are only useful in certain situations, but in others the details panel is so much more useful, it is now possible to quickly switch between three different layouts for the upper half of the main window.



  • Layout 1 (short): Display only a bare minimum of columns in the tree view, but show the new details panel on the right side. This is to minimize clutter in the tree view, yet keep all the information available.

  • Layout 2 (classic): Display the same columns as always in the tree view and additionally the new details panel on the right side.

  • Layout 3 (full): Display all available columns in the tree view, including the new file owner, group, permissions in both "rwxrwxrwx" and octal. But don't display the new display side panel so there is enough screen space to show all those columns.

Switching between the layouts is as easy as pressing one of the three new buttons in the tool bar: L1, L2, L3. Or use the corresponding entries in the "View" menu. Or use the Alt-1, Alt-2, Alt-3 key combinations.

For each view, you can individually configure what columns to display and whether or not to display the new details side panel and / or the new breadcrumbs navigator.

The column widths are still configured globally (and this will remain like that); after some experiments, it turned out that it is very awkward to have to set all of them individually for each layout.

New "General" Configuration Dialog Page

[<img src="https://github.com/shundhammer/qdirstat/blob/master/screenshots/QDirSta...

Read more

New QDirStat Release: 1.4.97-Beta

26 Oct 19:15
Compare
Choose a tag to compare
Pre-release

Removed the change log to avoid duplication; see the 1.5 release.

New QDirStat Release: 1.4

04 Jun 15:28
Compare
Choose a tag to compare

Overview

The QDirStat project proudly presents its latest release: QDirStat 1.4.

This release brings a number of new features as well as some bug fixes:

  • File size statistics window with histogram

  • Filling the gaps in the treemap (directories with lots of small files)

  • Checked code with Coverity and fixed all issues it pointed out

  • Improved support for file and directory names with UTF-8 special characters (Qt 4 only issue)

  • Improved support for directories that have read, but not execute permissions

Details

New Features

File Size Statistics Window with Histogram

File Size Histogram Screenshot

This is a whole new kind of statistics in QDirStat showing how file sizes are distributed. You can start that for any selected directory (menu View -> File Size Statistics or F2) or from the File Type Statistics window if you select any filename suffix (extension) there and then File Type -> Size Statistics (or F2). In the latter case, you can see how large all your photos (.jpg), your videos (.mp4) or whatever are.

This new statistics window deals with a lot of things you might have come to hate at school or at university, and which your math teacher or your statistics professor never explained in a way that mere mortals can understand, so there are explanations of those things as a bonus. There is a landing page for that in that new window:

File Size Help

Or you might use this as a starting point.

Everybody thinking "I have no clue what this is all about", please have a look at the Median, Quartiles and Percentiles Explained document to convince yourself that really everybody can easily understand this.

There is also a GitHub issue to discuss this; comments are welcome. Feel free to reopen this for any discussions about that topic.

Filling the Gaps in the Treemap

GitHub issue #58 shows that users feel under-informed when there are grey areas in the treemap. The explanation is simple: Treemap tiles are only displayed when they have at least a certain minimum size (by default 3 pixels). Otherwise the treemap just gets cluttered with tiny things that don't show any information whatsoever.

The remaining space is taken by its parent directory's tile. They were rendered just flat grey which makes their boundaries against each other invisible, thus giving the impression that there is nothing.

So there were some experiments with visible borders, but that completely destroyed the visual impression of the treemap because those borders were everywhere. Fill patterns also didn't help: They were just ugly, and there was no way to tell where one directory tile ends and where the next one starts.

The next approach was using gradients. The first impression was good, but then it turned out that it was hard to tell which item was a (now over-emphasized) directory and which one a large file. Locating large files deep inside the directory hierarchy is the major strong point of the treemap visualization, so giving that up did not seem like a smart idea. After playing a bit with the gradient parameters (toning it down and giving it just a little blueish tint) this was the result:

Using Gradients

This appears to be a good compromise.

Of course this is configurable: Edit ~/.config/QDirStat/QDirStat.conf:

[Treemaps]
...
DirGradientEnd=#707080
DirGradientStart=#606070
...
UseDirGradient=true

Beware that QSettings sorts the entries alphabetically, so the start is after the end (how philosophical...).

Bugfixes

  • Fixed problem with directories that have read, but not execute permissions thanks to slodki:

    In that case, you'd get a warning in the log for every entry in such a directory, and it would get the wrong icon (a locked folder) and null values for all fields. Now checking for execute and read permission of the directory in advance and not even trying to read any contents (because the values would be bogus anyway).

  • Fixed GitHub Issue #61: Files and directories with UTF-8 special characters in the name not read correctly when built with Qt 4.x

    This happened only when QDirStat was built against Qt 4.x, but that is the default for NHellFire's PPA, so this affects all Ubuntu users who installed QDirStat from that PPA.

    Thanks to slodki who pointed this problem out!

Other Improvements

  • Checked code with Coverity

    Coverity offers free static code analysis for Open Source projects. This is really an outstanding tool, and it does a really thorough analysis.

    You might be glad to hear that while it complained about some minor things, there was not a single issue that would have been user relevant (let alone any security problems - there were none). Still, I did my best to fix the small complaints it had, and now we are down to zero outstanding defects reported by Coverity in QDirStat's 130,000 lines of code.

  • More consistency between file type and size statistics

    Like the new file size statistics window, the older file type statistics window now uses the currently selected directory (in the tree view), not always the tree's toplevel directory. If nothing is selected, it still uses the toplevel directory.

    That means that F3 no longer toggles that window, but re-populates it with the currently selected directory instead. This is consistent with the F2 view.

    Of course, the "Locate Files by Type" window now is also restricted to that subtree which actually gives it better functionality if you know that you want to locate files only there.

    This means that you can now select a subdirectory in the tree, open the file type statistics for it (F3 key), then select any filename extension (suffix) in that window and then open the file size statistics (F2 key) for that file type in that subtree.

    Previously, you would have to start QDirStat to show only that directory, then open the file type statistics window (F3), then the file size statistics window (F2) from there.