diff --git a/README.md b/README.md index 2c5b39fd..4b7ddef8 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Target Platforms: Linux, BSD, Unix-like systems License: GPL V2 -Updated: 2020-06-14 +Updated: 2020-07-26 ## Overview @@ -113,7 +113,7 @@ Donate via PayPal (freely select the amount to donate): ## Latest Stable Release -**QDirStat V1.6.1** +**QDirStat V1.7** See the [release announcement](https://github.com/shundhammer/qdirstat/releases). @@ -123,319 +123,257 @@ Download installable binary packages for various Linux distributions here: ## Latest News -- 2020-06-14 +- 2020-07-26 **New stable release: 1.7** - - Now displaying the allocated size for very small files (8 kB (2 clusters) - or less) in a much more subdued way so it's still there, but less - distracting. + **Summary:** + - Closing the gap between sizes reported by QDirstat and sizes reported by + the `du` command: Now also taking the allocated size into account. - - If a file is wasting very much space (i.e. if it uses 33% or less of its - allocated disk space), now displaying the allocated size in bold in the - "Details" panel to draw more attention to the fact. This affects pretty - much all tiny files with 1360 bytes or less since the cluster size of most - (all?) Linux filesystem is so large (4 kB for ext4, XFS, Btrfs). - - Screenshot for both changes at [GitHub Issue #134](https://github.com/shundhammer/qdirstat/issues/134). + - 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). -- 2020-06-13 + - New directory selection dialog showing all (real) filesystems. - - Now automatically reopening the old current branch in the tree view when - using actions like "refresh selected" and "continue reading at mount point - ([GitHub Issue #135](https://github.com/shundhammer/qdirstat/issues/135)). + - New checkbox to cross filesystems (temporarily) in the directory selection + dialog. - - Now automatically expanding the first directory level of a mount point - after "continue reading at mount point". + - Workaround for NTFS oddities: Ignoring hard links on NTFS. - - Now correctly labelling a mount point as mount point in the "Details" - panel. + - 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](doc/Btrfs-Free-Size.md) + - Bug fixes -- 2020-06-12 - - NTFS is now detected as "ntfs", no longer as "fuseblk" in the "Open - Directory" and the "Filesystems" dialogs. + **Details:** - This was fallout of - [GitHub Issue #88](https://github.com/shundhammer/qdirstat/issues/88) - (NTFS hard links). + - Closing the gap between sizes reported by QDirstat and sizes reported by + the `du` command: Now also taking the allocated size into account. - - Now ignoring hard links on NTFS; the (current?) ntfs-3g implementation - using fuseblk seems to disagree with Windows tools which files really have - hard links. And in this case I tend to have more faith in the Windows - tools. Now the total sizes of my Windows partitions as reported by QDirStat - are much closer to the sizes reported by the `df` command, the `statfs()` - system call and QDirStat's new "Filesystems" window. + 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. - See also [GitHub Issue #88](https://github.com/shundhammer/qdirstat/issues/88). + 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. -- 2020-06-11 + Now QDirStat displays _both_ sizes where useful: - - Fixed [GitHub Issue #134](https://github.com/shundhammer/qdirstat/issues/134): - _Size Difference between QDirStat Reports and the "du" and "df" Commands_: + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-tiny-files.png) - - Now also showing the _allocated_ size in the details panel for files and - directory trees. This can make a a big difference if there are lots of tiny files. + - For tiny files, the tree view now shows both sizes: "49 B (4k)" - - Now showing the _allocated_ size for directories in the tree view, not - only the sum of all the _byte_ sizes of all the files in the subtree. + - 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. - - Now using the _allocated_ size in the treemap so tiny files appear with - their true size, no longer disappearing in the grey background: A 6 bytes - file is now displayed with the 4 KB that it actually consumes, not just - the 6 bytes of its content. + - 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". - More information and lots of screenshots at - [GitHub Issue #134](https://github.com/shundhammer/qdirstat/issues/134). + - Treemap tiles now correspond to a file's _allocated_ size. This makes a + real difference for tiny files. + More details at [GitHub Issue #134](https://github.com/shundhammer/qdirstat/issues/134): + _Size Difference between QDirStat Reports and the "du" and "df" Commands_. -- 2020-06-03 - New "Mounted Filesystems" window ("View" -> "Show Mounted Filesystems" or Ctrl-M): - [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-filesystems-window.png) + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-filesystems-window.png) 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 quite different from what - QDirStat reports after reading that complete filesystem; this can be due to - metadata, journals or snapshots. - - - Added a document about Btrfs free size and how different tools tend to show - different values: [Btrfs-Free-Size.md](doc/Btrfs-Free-Size.md) - - + 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. -- 2020-05-27 + 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. - - Implemented [GitHub Issue #129](https://github.com/shundhammer/qdirstat/issues/129): - _Option to continue reading at all mount points at once_. - Previously, you could choose to either always cross filesystems while - reading directories, or you could later open the parent branch of the mount - point in the tree view and then use "Continue reading at mount point" from - the main menu / context menu. + - QDirStat now has its own custom directory selection dialog; it no longer + uses one of the simplistic Qt standard file dialogs: - Now you can change this setting temporarily for the current program run; it - will continue reading at "normal" mount points, i.e. excluding system - mounts like /dev, /proc, /sys and also bind mounts or network mounts; but - it still reads Btrfs subvolumes. + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-open-dir-dialog.png) - - This new option needed a check box in the "Open Directory" dialog; so from - now on, QDirStat no longer uses the generic Qt file dialog, it has a custom - one: + 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 - [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-open-dir-dialog.png) + - The mount point + - The total size of the filesystem + - The filesystem type ("ext4", "btrfs", "ntfs", ...) + - The device name ("/dev/sda2") (in a tooltip) - In addition to that new check box at the bottom, there is now also a new - "places" widget for quick access to the user's home directory and all - ("normal", see above) mounted filesystems, including network mounts (NFS, - Samba / Cifs). + 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. + - 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). -- 2020-03-19 + More details at [GitHub Issue #129](https://github.com/shundhammer/qdirstat/issues/129). - - 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. + - Added a workaround for wrong size sums on NTFS: Now disregarding hard links + on NTFS. - 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. + The (current?) _ntfs-3g_ implementation using _fuseblk_ seems to disagree + with Windows tools which files really have hard links. - 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. + 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. - 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. - - So 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. - - If in doubt, leave this option off (which is the default). - - More details at [GitHub Issue #124](https://github.com/shundhammer/qdirstat/issues/124). - - -- 2020-03-06 - - - 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://github.com/shundhammer/qdirstat/issues/124). - -- 2020-02-24 - - - Fixed crash when terminating with Ctrl-Q while reading directories - [(GitHub Issue #122)](https://github.com/shundhammer/qdirstat/issues/122). + Notice that this is a bug in _ntfs-3g_, not in QDirStat. + See also [GitHub Issue #88](https://github.com/shundhammer/qdirstat/issues/88). -- 2020-02-13 **New stable release: 1.6.1** - - **Summary:** - - - 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 + - + Added a config option to ignore hard links. + - **Details:** +
- - 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. + 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. - Now, QDirStat notifies you in several ways: + 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. - [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-err-dirs-light.png) + 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. - - All parent directories that contain a subtree that could not be read are - now displayed in dark red in the tree view. + 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. - - 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. + 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. - - A message panel in the main window between the tree view and the treemap - with a message that some directories could not be read. + 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. - 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. + There is now a new config option in `~/.config/QDirStat/QDirStat.conf`: - - 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). + ```ini + [DirectoryTree] + ... + IgnoreHardLinks=false + ``` - 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. + 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. - [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-unreadable-dirs-window.png) + 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. - - In addition to the "locked folder" icon, unreadable directories are shown - in bright red in the tree view. + More details at [GitHub Issue #124](https://github.com/shundhammer/qdirstat/issues/124). +
- - 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. - - 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). + - There is now a new document about Btrfs free size and how different tools + tend to show different values: [Btrfs-Free-Size.md](doc/Btrfs-Free-Size.md) - 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.). + 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. - 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)). + **Bug Fixes:** - [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-byte-size.png) + - 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_. - - 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. + This was part of [GitHub Issue #124](https://github.com/shundhammer/qdirstat/issues/124). - [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-byte-size-2a.png) + - Fixed crash when terminating with Ctrl-Q while reading directories + [(GitHub Issue #122)](https://github.com/shundhammer/qdirstat/issues/122). - _Hovering over fields that can be clicked shows them underlined, very - much like a hyperlink._ + - Now automatically reopening the old current branch in the tree view when + using actions like "refresh selected" and "continue reading at mount point + ([GitHub Issue #135](https://github.com/shundhammer/qdirstat/issues/135)). - [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-byte-size-2b.png) + - Not a bug, but a minor new feature: Now automatically expanding the first + directory level of a mount point after "continue reading at mount point". - _Clicking (left or right mouse button) shows more details: In this case, - the exact byte size._ + - Now correctly labelling a mount point as mount point in the "Details" + panel. - - 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). - - Fixed text color in histogram in dark widget themes - [(GitHub Issue #117)](https://github.com/shundhammer/qdirstat/issues/117). +_See [DevHistory.md](doc/DevHistory.md) +for older entries._ --------- +## History +This is just a rough summary. For more details, see [DevHistory.md](doc/DevHistory.md). -_See [DevHistory.md](doc/DevHistory.md) -for older entries._ +- 2020-02-13 New stable release: 1.6.1 + - Much better handling for "permission denied" errors while reading directories -## History + - Now showing the exact byte size (134 495 994 Bytes instead of 128.3 MB) + upon mouse click + - New optional tree column "Oldest File" (not enabled by default) -This is just a rough summary. For more details, see [DevHistory.md](doc/DevHistory.md). - 2019-07-22 New stable release: V1.6 @@ -816,7 +754,7 @@ old code base that had been long overdue. `qdirstat --slow-update` or `qdirstat -s`. The slow update interval can be customized in `~/.config/QDirStat/QDirStat.conf`: - ``` + ```ini [DirectoryTree] SlowUpdateMillisec = 3000 ``` diff --git a/doc/DevHistory.md b/doc/DevHistory.md index 7b8ee8e6..a5387aff 100644 --- a/doc/DevHistory.md +++ b/doc/DevHistory.md @@ -11,6 +11,313 @@ https://github.com/shundhammer/qdirstat/blob/master/README.md ## QDirStat History +- 2020-06-14 + + - Now displaying the allocated size for very small files (8 kB (2 clusters) + or less) in a much more subdued way so it's still there, but less + distracting. + + + - If a file is wasting very much space (i.e. if it uses 33% or less of its + allocated disk space), now displaying the allocated size in bold in the + "Details" panel to draw more attention to the fact. This affects pretty + much all tiny files with 1360 bytes or less since the cluster size of most + (all?) Linux filesystem is so large (4 kB for ext4, XFS, Btrfs). + + Screenshot for both changes at [GitHub Issue #134](https://github.com/shundhammer/qdirstat/issues/134). + + +- 2020-06-13 + + - Now automatically reopening the old current branch in the tree view when + using actions like "refresh selected" and "continue reading at mount point + ([GitHub Issue #135](https://github.com/shundhammer/qdirstat/issues/135)). + + - Now automatically expanding the first directory level of a mount point + after "continue reading at mount point". + + - Now correctly labelling a mount point as mount point in the "Details" + panel. + + +- 2020-06-12 + + - NTFS is now detected as "ntfs", no longer as "fuseblk" in the "Open + Directory" and the "Filesystems" dialogs. + + This was fallout of + [GitHub Issue #88](https://github.com/shundhammer/qdirstat/issues/88) + (NTFS hard links). + + - Now ignoring hard links on NTFS; the (current?) ntfs-3g implementation + using fuseblk seems to disagree with Windows tools which files really have + hard links. And in this case I tend to have more faith in the Windows + tools. Now the total sizes of my Windows partitions as reported by QDirStat + are much closer to the sizes reported by the `df` command, the `statfs()` + system call and QDirStat's new "Filesystems" window. + + See also [GitHub Issue #88](https://github.com/shundhammer/qdirstat/issues/88). + + +- 2020-06-11 + + - Fixed [GitHub Issue #134](https://github.com/shundhammer/qdirstat/issues/134): + _Size Difference between QDirStat Reports and the "du" and "df" Commands_: + + - Now also showing the _allocated_ size in the details panel for files and + directory trees. This can make a a big difference if there are lots of tiny files. + + - Now showing the _allocated_ size for directories in the tree view, not + only the sum of all the _byte_ sizes of all the files in the subtree. + + - Now using the _allocated_ size in the treemap so tiny files appear with + their true size, no longer disappearing in the grey background: A 6 bytes + file is now displayed with the 4 KB that it actually consumes, not just + the 6 bytes of its content. + + More information and lots of screenshots at + [GitHub Issue #134](https://github.com/shundhammer/qdirstat/issues/134). + + +- 2020-06-03 + + - New "Mounted Filesystems" window ("View" -> "Show Mounted Filesystems" or + Ctrl-M): + + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-filesystems-window.png) + + 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 quite different from what + QDirStat reports after reading that complete filesystem; this can be due to + metadata, journals or snapshots. + + - Added a document about Btrfs free size and how different tools tend to show + different values: [Btrfs-Free-Size.md](doc/Btrfs-Free-Size.md) + + + +- 2020-05-27 + + - Implemented [GitHub Issue #129](https://github.com/shundhammer/qdirstat/issues/129): + _Option to continue reading at all mount points at once_. + + Previously, you could choose to either always cross filesystems while + reading directories, or you could later open the parent branch of the mount + point in the tree view and then use "Continue reading at mount point" from + the main menu / context menu. + + Now you can change this setting temporarily for the current program run; it + will continue reading at "normal" mount points, i.e. excluding system + mounts like `/dev`, `/proc`, `/sys` and also bind mounts or network mounts; but + it still reads Btrfs subvolumes. + + - This new option needed a check box in the "Open Directory" dialog; so from + now on, QDirStat no longer uses the generic Qt file dialog, it has a custom + one: + + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-open-dir-dialog.png) + + In addition to that new check box at the bottom, there is now also a new + "places" widget for quick access to the user's home directory and all + ("normal", see above) mounted filesystems, including network mounts (NFS, + Samba / Cifs). + + +- 2020-03-19 + + - 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. + + So 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. + + If in doubt, leave this option off (which is the default). + + More details at [GitHub Issue #124](https://github.com/shundhammer/qdirstat/issues/124). + + +- 2020-03-06 + + - 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://github.com/shundhammer/qdirstat/issues/124). + +- 2020-02-24 + + - Fixed crash when terminating with Ctrl-Q while reading directories + [(GitHub Issue #122)](https://github.com/shundhammer/qdirstat/issues/122). + + +-------------- + + +- 2020-02-13 **New stable release: 1.6.1** + + **Summary:** + + - 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:** + + - 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: + + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-err-dirs-light.png) + + - 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. + + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-unreadable-dirs-window.png) + + - 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. + + - 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)). + + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-byte-size.png) + + - 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. + + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-byte-size-2a.png) + + _Hovering over fields that can be clicked shows them underlined, very + much like a hyperlink._ + + [](https://raw.githubusercontent.com/shundhammer/qdirstat/master/screenshots/QDirStat-byte-size-2b.png) + + _Clicking (left or right mouse button) shows more details: In this case, + the exact byte size._ + + - 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). + + - Fixed text color in histogram in dark widget themes + [(GitHub Issue #117)](https://github.com/shundhammer/qdirstat/issues/117). + + +-------------------- + + - 2020-02-12 - Fine-tuned error handling: If there is a "permission denied" error while