times became so long that I stopped developing this program on it.
However, this doesn’t mean I use additional libraries without consideration. I often try to standardize dependency versions or use projects that are actively maintained and update the libraries they depend on — for example, rawler instead of rawloader, or image-hasher instead of img-hash (which I created as a fork of img-hash with updated dependencies).
To verify the issue of long compilation times, I generated several charts showing how long Krokiet takes to compile with different options, how large the binary is after various optimizations, and how long a recompilation takes after adding a comment (I didn’t test binary performance, as that is a more complicated matter). This allowed me to consider which options were worth including in CI. After reviewing the results, I decided it was worth switching from the current configuration— release + thin lto to release + fat lto + codegen units = 1 .
The tests were conducted on a 12-core AMD Ryzen 9 9700 running Ubuntu 25.04, using the mold linker and rustc 1.91.0-nightly (cd7cbe818 2025–08–15). The base profiles were debug and release, and I adjusted some options based on them (not all combinations seemed worth testing, and some caused various errors) to see their impact on compilation. It’s important to note that Krokiet is a rather specific project with many dependencies, and Slint that generates a large (\~100k lines) Rust file, so other projects may experience significantly different compilation times.
Test Results:
|Config | Output File Size | Target Folder Size | Compilation Time | Rebuild Time |
|:---------------------------------------------------|:-------------------|:---------------------|:-------------------|:---------------|
| release + overflow checks | 73.49 MiB | 2.07 GiB | 1m 11s | 20s |
| debug | 1004.52 MiB | 7.00 GiB | 1m 54s | 3s |
| debug + cranelift | 624.43 MiB | 5.25 GiB | 47s | 3s |
| debug + debug disabled | 131.64 MiB | 2.52 GiB | 1m 33s | 2s |
| check | - | 1.66 GiB | 58s | 1s |
| release | 70.50 MiB | 2.04 GiB | 2m 58s | 2m 11s |
| release + cranelift | 70.50 MiB | 2.04 GiB | 2m 59s | 2m 10s |
| release + debug info | 786.19 MiB | 5.40 GiB | 3m 23s | 2m 18s |
| release + native | 67.22 MiB | 1.98 GiB | 3m 5s | 2m 13s |
| release + opt o2 | 70.09 MiB | 2.04 GiB | 2m 56s | 2m 9s |
| release + opt o1 | 76.55 MiB | 1.98 GiB | 1m 1s | 18s |
| release + thin lto | 63.77 MiB | 2.06 GiB | 3m 12s | 2m 32s |
| release + optimize size | 66.93 MiB | 1.93 GiB | 1m 1s | 18s |
| release + fat lto | 45.46 MiB | 2.03 GiB | 6m 18s | 5m 38s |
| release + cu 1 | 50.93 MiB | 1.92 GiB | 4m 9s | 2m 56s |
| release + panic abort | 56.81 MiB | 1.97 GiB | 2m 56s | 2m 15s
However, this doesn’t mean I use additional libraries without consideration. I often try to standardize dependency versions or use projects that are actively maintained and update the libraries they depend on — for example, rawler instead of rawloader, or image-hasher instead of img-hash (which I created as a fork of img-hash with updated dependencies).
To verify the issue of long compilation times, I generated several charts showing how long Krokiet takes to compile with different options, how large the binary is after various optimizations, and how long a recompilation takes after adding a comment (I didn’t test binary performance, as that is a more complicated matter). This allowed me to consider which options were worth including in CI. After reviewing the results, I decided it was worth switching from the current configuration— release + thin lto to release + fat lto + codegen units = 1 .
The tests were conducted on a 12-core AMD Ryzen 9 9700 running Ubuntu 25.04, using the mold linker and rustc 1.91.0-nightly (cd7cbe818 2025–08–15). The base profiles were debug and release, and I adjusted some options based on them (not all combinations seemed worth testing, and some caused various errors) to see their impact on compilation. It’s important to note that Krokiet is a rather specific project with many dependencies, and Slint that generates a large (\~100k lines) Rust file, so other projects may experience significantly different compilation times.
Test Results:
|Config | Output File Size | Target Folder Size | Compilation Time | Rebuild Time |
|:---------------------------------------------------|:-------------------|:---------------------|:-------------------|:---------------|
| release + overflow checks | 73.49 MiB | 2.07 GiB | 1m 11s | 20s |
| debug | 1004.52 MiB | 7.00 GiB | 1m 54s | 3s |
| debug + cranelift | 624.43 MiB | 5.25 GiB | 47s | 3s |
| debug + debug disabled | 131.64 MiB | 2.52 GiB | 1m 33s | 2s |
| check | - | 1.66 GiB | 58s | 1s |
| release | 70.50 MiB | 2.04 GiB | 2m 58s | 2m 11s |
| release + cranelift | 70.50 MiB | 2.04 GiB | 2m 59s | 2m 10s |
| release + debug info | 786.19 MiB | 5.40 GiB | 3m 23s | 2m 18s |
| release + native | 67.22 MiB | 1.98 GiB | 3m 5s | 2m 13s |
| release + opt o2 | 70.09 MiB | 2.04 GiB | 2m 56s | 2m 9s |
| release + opt o1 | 76.55 MiB | 1.98 GiB | 1m 1s | 18s |
| release + thin lto | 63.77 MiB | 2.06 GiB | 3m 12s | 2m 32s |
| release + optimize size | 66.93 MiB | 1.93 GiB | 1m 1s | 18s |
| release + fat lto | 45.46 MiB | 2.03 GiB | 6m 18s | 5m 38s |
| release + cu 1 | 50.93 MiB | 1.92 GiB | 4m 9s | 2m 56s |
| release + panic abort | 56.81 MiB | 1.97 GiB | 2m 56s | 2m 15s
|
| release + build-std | 70.72 MiB | 2.23 GiB | 3m 7s | 2m 11s |
| release + fat lto + cu 1 + panic abort | 35.71 MiB | 1.92 GiB | 5m 44s | 4m 47s |
| release + fat lto + cu 1 + panic abort + native | 35.94 MiB | 1.87 GiB | 6m 23s | 5m 24s |
| release + fat lto + cu 1 + panic abort + build-std | 33.97 MiB | 2.11 GiB | 5m 45s | 4m 44s |
| release + fat lto + cu 1 | 40.65 MiB | 1.95 GiB | 6m 3s | 5m 2s |
| release + incremental | 71.45 MiB | 2.38 GiB | 1m 8s | 2s |
| release + incremental + fat lto | 44.81 MiB | 2.44 GiB | 4m 25s | 3m 36s |
Some things that surprised me:
* build-std increases, rather than decreases, the binary size
* optimize-size is fast but only slightly reduces the final binary size.
* fat-LTO works much better than thin-LTO in this project, even though I often read online that thin-LTO usually gives results very similar to fat-LTO
* panic-abort — I thought using this option wouldn’t change the binary size much, but the file shrank by as much as 20%. However, I cannot disable this option and wouldn’t recommend it to anyone (at least for Krokiet and Czkawka), because with external libraries that process/validate/parse external files, panics can occur, and with panic-abort they cannot be caught, so the application will just terminate instead of printing an error and continuing
* release + incremental —this will probably become my new favorite flag, it gives release performance while keeping recompilation times similar to debug. Sometimes I need a combination of both, although I still need to test this more to be sure
The project I used for testing (created for my own purposes, so it might simply not work for other users, and additionally it modifies the Git repository, so all changes need to be committed before use) — [https://github.com/qarmin/czkawka/tree/master/misc/test\_compilation\_speed\_size](https://github.com/qarmin/czkawka/tree/master/misc/test_compilation_speed_size)
# Files from unverified sources
Lately, I’ve both heard and noticed strange new websites that seem to imply they are directly connected to the project (though this is never explicitly stated) and offer only binaries repackaged from GitHub, hosted on their own servers. This isn’t inherently bad, but in the future it could allow them to be replaced with malicious files.
Personally, I only manage a few projects related to Czkawka: the code repository on GitHub along with the binaries hosted there, the Flatpak version of the application, and projects on crates.io. All other projects are either abandoned (e.g., the Snap Store application) or managed by other people.
Czkawka itself does not have a website, and its closest equivalent is the [Readme.md](http://Readme.md) file displayed on the main GitHub project page — I have no plans to create an official site.
So if you use alternative methods to install the program, make sure they come from trustworthy sources. In my view, these include projects like [https://packages.msys2.org/base/mingw-w64-czkawka](https://packages.msys2.org/base/mingw-w64-czkawka) (MSYS2 Windows), [https://formulae.brew.sh/formula/czkawka](https://formulae.brew.sh/formula/czkawka) (Brew macOS), and [https://github.com/jlesage/docker-czkawka](https://github.com/jlesage/docker-czkawka) (Docker Linux).
# Other changes
* File logging — it’s now easier to check for panic errors and verify application behavior historically (mainly relevant for Windows, where both applications and users tend to avoid the terminal)
* Dependency updates — pdf-rs has been replaced with lopdf, and imagepipe + rawloader replaced with rawler (a fork of rawloader) which has more frequent commits,
| release + build-std | 70.72 MiB | 2.23 GiB | 3m 7s | 2m 11s |
| release + fat lto + cu 1 + panic abort | 35.71 MiB | 1.92 GiB | 5m 44s | 4m 47s |
| release + fat lto + cu 1 + panic abort + native | 35.94 MiB | 1.87 GiB | 6m 23s | 5m 24s |
| release + fat lto + cu 1 + panic abort + build-std | 33.97 MiB | 2.11 GiB | 5m 45s | 4m 44s |
| release + fat lto + cu 1 | 40.65 MiB | 1.95 GiB | 6m 3s | 5m 2s |
| release + incremental | 71.45 MiB | 2.38 GiB | 1m 8s | 2s |
| release + incremental + fat lto | 44.81 MiB | 2.44 GiB | 4m 25s | 3m 36s |
Some things that surprised me:
* build-std increases, rather than decreases, the binary size
* optimize-size is fast but only slightly reduces the final binary size.
* fat-LTO works much better than thin-LTO in this project, even though I often read online that thin-LTO usually gives results very similar to fat-LTO
* panic-abort — I thought using this option wouldn’t change the binary size much, but the file shrank by as much as 20%. However, I cannot disable this option and wouldn’t recommend it to anyone (at least for Krokiet and Czkawka), because with external libraries that process/validate/parse external files, panics can occur, and with panic-abort they cannot be caught, so the application will just terminate instead of printing an error and continuing
* release + incremental —this will probably become my new favorite flag, it gives release performance while keeping recompilation times similar to debug. Sometimes I need a combination of both, although I still need to test this more to be sure
The project I used for testing (created for my own purposes, so it might simply not work for other users, and additionally it modifies the Git repository, so all changes need to be committed before use) — [https://github.com/qarmin/czkawka/tree/master/misc/test\_compilation\_speed\_size](https://github.com/qarmin/czkawka/tree/master/misc/test_compilation_speed_size)
# Files from unverified sources
Lately, I’ve both heard and noticed strange new websites that seem to imply they are directly connected to the project (though this is never explicitly stated) and offer only binaries repackaged from GitHub, hosted on their own servers. This isn’t inherently bad, but in the future it could allow them to be replaced with malicious files.
Personally, I only manage a few projects related to Czkawka: the code repository on GitHub along with the binaries hosted there, the Flatpak version of the application, and projects on crates.io. All other projects are either abandoned (e.g., the Snap Store application) or managed by other people.
Czkawka itself does not have a website, and its closest equivalent is the [Readme.md](http://Readme.md) file displayed on the main GitHub project page — I have no plans to create an official site.
So if you use alternative methods to install the program, make sure they come from trustworthy sources. In my view, these include projects like [https://packages.msys2.org/base/mingw-w64-czkawka](https://packages.msys2.org/base/mingw-w64-czkawka) (MSYS2 Windows), [https://formulae.brew.sh/formula/czkawka](https://formulae.brew.sh/formula/czkawka) (Brew macOS), and [https://github.com/jlesage/docker-czkawka](https://github.com/jlesage/docker-czkawka) (Docker Linux).
# Other changes
* File logging — it’s now easier to check for panic errors and verify application behavior historically (mainly relevant for Windows, where both applications and users tend to avoid the terminal)
* Dependency updates — pdf-rs has been replaced with lopdf, and imagepipe + rawloader replaced with rawler (a fork of rawloader) which has more frequent commits,
wider usage, and newer dependencies (making it easier to standardize across different libraries)
* More options for searching similar video files — I had been blissfully unaware that the vid\_dup\_finder\_lib library only allowed adjusting video similarity levels; it turns out you can also configure the black-line detection algorithm and the amount of the ignored initial segment of a video
* Completely new icons — created by me (and admittedly uglier than the previous ones) under a CC BY 4.0 license, replacing the not-so-free icons
* Binaries for Mac with HEIF support, czkawka\_cli built with musl instead of eyre, and Krokiet with an alternative Skia backend — added to the release files on GitHub
* Faster resolution changes in image comparison mode (fast-image-resize crate) — this can no longer be disabled (because, honestly, why would anyone want to?)
* Fixed a panic error that occurred when the GTK SVG decoder was missing or there was an issue loading icons using it (recently this problem appeared quite often on macOS)
Full changelog: — [https://github.com/qarmin/czkawka/blob/master/Changelog.md](https://github.com/qarmin/czkawka/blob/master/Changelog.md)
Repository — [https://github.com/qarmin/czkawka](https://github.com/qarmin/czkawka)
License — MIT/GPL
(Reddit users don’t really like links to Medium, so I copied the entire article here. By doing so, I might have mixed up some things, so if needed you can read original article(with more images) here – [https://medium.com/@qarmin/czkawka-krokiet-10-0-4991186b7ad1](https://medium.com/@qarmin/czkawka-krokiet-10-0-4991186b7ad1) )
https://redd.it/1mtowxp
@r_linux
* More options for searching similar video files — I had been blissfully unaware that the vid\_dup\_finder\_lib library only allowed adjusting video similarity levels; it turns out you can also configure the black-line detection algorithm and the amount of the ignored initial segment of a video
* Completely new icons — created by me (and admittedly uglier than the previous ones) under a CC BY 4.0 license, replacing the not-so-free icons
* Binaries for Mac with HEIF support, czkawka\_cli built with musl instead of eyre, and Krokiet with an alternative Skia backend — added to the release files on GitHub
* Faster resolution changes in image comparison mode (fast-image-resize crate) — this can no longer be disabled (because, honestly, why would anyone want to?)
* Fixed a panic error that occurred when the GTK SVG decoder was missing or there was an issue loading icons using it (recently this problem appeared quite often on macOS)
Full changelog: — [https://github.com/qarmin/czkawka/blob/master/Changelog.md](https://github.com/qarmin/czkawka/blob/master/Changelog.md)
Repository — [https://github.com/qarmin/czkawka](https://github.com/qarmin/czkawka)
License — MIT/GPL
(Reddit users don’t really like links to Medium, so I copied the entire article here. By doing so, I might have mixed up some things, so if needed you can read original article(with more images) here – [https://medium.com/@qarmin/czkawka-krokiet-10-0-4991186b7ad1](https://medium.com/@qarmin/czkawka-krokiet-10-0-4991186b7ad1) )
https://redd.it/1mtowxp
@r_linux
GitHub
czkawka/Changelog.md at master · qarmin/czkawka
Multi functional app to find duplicates, empty folders, similar images etc. - qarmin/czkawka
Linux for a normie (me)
TLDR: can't code, love Linux
I'm not computer literate at all and have the most experience with really old versions of Windows.
Got Linux, Ubuntu distro.
Don't get kernels, don't get servers don't even know what anything means when I go to investigate the Linux user side of the web.
I must confess I also barely use the terminal because I use the laptop for spreadsheets and archiving mostly.
However, I really like it. Smooth, simple, etc etc.
One of the many perks for me is that my laptop hasn't been glitchy or slow since I got it and some of the weird noises stopped!
Thanks chat.
Room temperature IQ rating of Linux: 8/10
https://redd.it/1mtxne5
@r_linux
TLDR: can't code, love Linux
I'm not computer literate at all and have the most experience with really old versions of Windows.
Got Linux, Ubuntu distro.
Don't get kernels, don't get servers don't even know what anything means when I go to investigate the Linux user side of the web.
I must confess I also barely use the terminal because I use the laptop for spreadsheets and archiving mostly.
However, I really like it. Smooth, simple, etc etc.
One of the many perks for me is that my laptop hasn't been glitchy or slow since I got it and some of the weird noises stopped!
Thanks chat.
Room temperature IQ rating of Linux: 8/10
https://redd.it/1mtxne5
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
why isn't fedora recommended for beginners?
Installing nvidia drivers is pretty easy (only on workstation though), just enable 3rd party repos and search for nvidia on gnome software
codecs is still an issue, but way less than before, cuz it's mainly a flatpak distro nowadays
you can do major updates (like 42 to 43) with gnome software, no need for terminal
it have great bleeding edge hardware support
so why it's still barely recommended?
https://redd.it/1mu0ul2
@r_linux
Installing nvidia drivers is pretty easy (only on workstation though), just enable 3rd party repos and search for nvidia on gnome software
codecs is still an issue, but way less than before, cuz it's mainly a flatpak distro nowadays
you can do major updates (like 42 to 43) with gnome software, no need for terminal
it have great bleeding edge hardware support
so why it's still barely recommended?
https://redd.it/1mu0ul2
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
TIL that
https://curl.se/wcurl/
Instead of...
wget https://mirrors.rit.edu/ubuntu-releases/24.04.3/ubuntu-24.04.3-desktop-amd64.iso
...you can use
wcurl https://mirrors.rit.edu/ubuntu-releases/24.04.3/ubuntu-24.04.3-desktop-amd64.iso
TIL
https://redd.it/1mu43mn
@r_linux
curl 8.14.0 and later includes a wget replacement called wcurlhttps://curl.se/wcurl/
Instead of...
wget https://mirrors.rit.edu/ubuntu-releases/24.04.3/ubuntu-24.04.3-desktop-amd64.iso
...you can use
wcurl https://mirrors.rit.edu/ubuntu-releases/24.04.3/ubuntu-24.04.3-desktop-amd64.iso
TIL
https://redd.it/1mu43mn
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
Why do you use your distro?
Ive been using linux for almost a year now. Ive tried many different distros, Ranging from Fedora. Mint. Arch, CachyOS. Lubuntu. and more.
And after trying all of these distros. i eventually settled on mint just because it seemed to be the most streamlined.
But ive thought a lot. Why do you even bother with other distros? the only thing i notice are the difference in package managers. Obviously theres a difference in Desktop Environments. But thats different. Why would you use Ubuntu with KDE instead of Fedora with KDE. Because i really wouldnt notice the difference.
https://redd.it/1mu97jp
@r_linux
Ive been using linux for almost a year now. Ive tried many different distros, Ranging from Fedora. Mint. Arch, CachyOS. Lubuntu. and more.
And after trying all of these distros. i eventually settled on mint just because it seemed to be the most streamlined.
But ive thought a lot. Why do you even bother with other distros? the only thing i notice are the difference in package managers. Obviously theres a difference in Desktop Environments. But thats different. Why would you use Ubuntu with KDE instead of Fedora with KDE. Because i really wouldnt notice the difference.
https://redd.it/1mu97jp
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
Information about sleep inhibitors
I have aggressive power saving option but amazed how well it worked (GNOME).
When i have something downloading, its just turning off the screen instead of suspend. But if its only seeding, it know to suspend as well. When watching youtube videos, it doesnt turn off the screen even after hours not touching the mouse or keyboard. But somehow when i watch music videos instead, it know to turn off the screen after a while. How does it even work?
But when i check systemd inhibitor list, it only show some upower and network manager stuff. Is there any information so i customize it even more?
https://redd.it/1mufvok
@r_linux
I have aggressive power saving option but amazed how well it worked (GNOME).
When i have something downloading, its just turning off the screen instead of suspend. But if its only seeding, it know to suspend as well. When watching youtube videos, it doesnt turn off the screen even after hours not touching the mouse or keyboard. But somehow when i watch music videos instead, it know to turn off the screen after a while. How does it even work?
But when i check systemd inhibitor list, it only show some upower and network manager stuff. Is there any information so i customize it even more?
https://redd.it/1mufvok
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
Happy birthday #DebianDay!
Happy #DebianDay!
Happy 32nd birthday to Debian, one of the oldest operating systems based on the #LinuxKernel, and the basis for #Ubuntu, #Kali, and #LinuxMint! 🐧🎈🎂
Thank you, #Debian community, for all your amazing work!
Ubuntu #FOSS #opensource #freesoftware #LPI
https://redd.it/1muiwl3
@r_linux
Happy #DebianDay!
Happy 32nd birthday to Debian, one of the oldest operating systems based on the #LinuxKernel, and the basis for #Ubuntu, #Kali, and #LinuxMint! 🐧🎈🎂
Thank you, #Debian community, for all your amazing work!
Ubuntu #FOSS #opensource #freesoftware #LPI
https://redd.it/1muiwl3
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
RPGsh: A terminal application for managing TTRPGs
https://github.com/TheMohawkNinja/rpgsh
https://redd.it/1mujoyd
@r_linux
https://github.com/TheMohawkNinja/rpgsh
https://redd.it/1mujoyd
@r_linux
GitHub
GitHub - TheMohawkNinja/rpgsh: The interactive Linux shell for table-top RPGs.
The interactive Linux shell for table-top RPGs. Contribute to TheMohawkNinja/rpgsh development by creating an account on GitHub.
How do systemd-resolved, resolv.conf, and NetworkManager interact? It's confusing!
The following text applies to distros that use Network-Manager and Systemd-resolved, which is the default setup for most distros:
A few weeks ago, I found myself in a train wanting to use the free Wi-Fi with my Fedora 41 system, but was unable to get to the captive portal to register my device in the network and gain access to the internet. After lots of tinkering around, I found that my DNS settings were responsible for this problem.
The network relied on spoofing any DNS request made to the router to redirect users to the captive portal instead. Since the default behavior of most devices is using the default DNS this works most of the time.
On my machine though, a VPN (or maybe myself at some point) had altered systemd-resolved's config to use a secure DOH (DNS over HTTPS) server globally, which means instead of being redirected to the captive portal by the router my system tried to reach the secure DNS server.
I was able to solve my problem by temporarily stopping systemd-resolved and setting the routers DNS in resolv.conf (which usually forces requests to systemd-resolved)
This experience led me to dig deeper on how Linux handles DNS requests. I quickly realized that resolv.conf was merely a compatibility file for older software that still read it to find out which DNS server to use. I also understood that you can assign a DNS server to each network interface, but those will be overwritten by the global settings.
What I don't get is how NetworkManager ties into all of this and why disabling systemd-resolved fixed my issue. Changing the DNS settings through the gnome settings (which AFAIK is just a frontend to nm) doesn't seem to affect systemd-resolved's configuration. Setting the DNS in resolv.conf seems to work to a certain degree even though it's deprecated, some applications have their own DNS settings which will overwrite anything I just explained.
While I feel like I got somewhat of a picture on how all of these systems interact, I'm still left with lots of confusion. It seems like the whole setup is bodged together and prone to error if interacted with.
Perhaps it's just my lack of knowledge....
https://redd.it/1mus26j
@r_linux
The following text applies to distros that use Network-Manager and Systemd-resolved, which is the default setup for most distros:
A few weeks ago, I found myself in a train wanting to use the free Wi-Fi with my Fedora 41 system, but was unable to get to the captive portal to register my device in the network and gain access to the internet. After lots of tinkering around, I found that my DNS settings were responsible for this problem.
The network relied on spoofing any DNS request made to the router to redirect users to the captive portal instead. Since the default behavior of most devices is using the default DNS this works most of the time.
On my machine though, a VPN (or maybe myself at some point) had altered systemd-resolved's config to use a secure DOH (DNS over HTTPS) server globally, which means instead of being redirected to the captive portal by the router my system tried to reach the secure DNS server.
I was able to solve my problem by temporarily stopping systemd-resolved and setting the routers DNS in resolv.conf (which usually forces requests to systemd-resolved)
This experience led me to dig deeper on how Linux handles DNS requests. I quickly realized that resolv.conf was merely a compatibility file for older software that still read it to find out which DNS server to use. I also understood that you can assign a DNS server to each network interface, but those will be overwritten by the global settings.
What I don't get is how NetworkManager ties into all of this and why disabling systemd-resolved fixed my issue. Changing the DNS settings through the gnome settings (which AFAIK is just a frontend to nm) doesn't seem to affect systemd-resolved's configuration. Setting the DNS in resolv.conf seems to work to a certain degree even though it's deprecated, some applications have their own DNS settings which will overwrite anything I just explained.
While I feel like I got somewhat of a picture on how all of these systems interact, I'm still left with lots of confusion. It seems like the whole setup is bodged together and prone to error if interacted with.
Perhaps it's just my lack of knowledge....
https://redd.it/1mus26j
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
How do you handle pre/post Btrfs snapshot hooks when managing packages?
I've generally stuck to Ext4 partitions with various backup strategies over the years, after a mishap with Btrfs years ago. Recently, I've gone back to Btrfs for new builds and am now adding snapshots to my data redundancy & recovery strategy. I was using Timeshift at first, but now I am starting to use Snapper with native btrfs-tools instead, along with btrfs-assistant for GUI managemet.
I was going to write some noscripts to handle snapshots for package management, but saw some existing packages to help with this. These are a list of the packages I've found with some links and copypasta. I am curious as to how y'all approach it. Do you use your own noscripts, use any of these packages, know of other packages I didn't find, or something else entirely?
I'm trying to decide how I should handle it. I generally run Arch (btw) on my laptops & Debian on my desktops & servers, usually with rEFInd and just Grub for headless installs.
\---
[**Arch**](https://wiki.archlinux.org/noscript/Snapper?pubDate=20250306#Wrapping_pacman_transactions_in_snapshots)
* [**snap-pac**](https://github.com/wesbarnett/snap-pac) — Makes pacman automatically use snapper to create [pre/post snapshots](https://wiki.archlinux.org/noscript/Snapper?pubDate=20250306#Pre/post_snapshots) like openSUSE's YaST. Uses [pacman hooks](https://wiki.archlinux.org/noscript/Pacman_hooks). *\[last commit: 4 years ago\]*
* [**grub-btrfs**](https://github.com/Antynea/grub-btrfs) — Includes a daemon (*grub-btrfsd*) that can be enabled via *systemctl* to look for new snapshots and automatically includes them in the [GRUB](https://wiki.archlinux.org/noscript/GRUB) menu. For that daemon to work you need to install the optional dependency [inotify-tools](https://archlinux.org/packages/?name=inotify-tools) *\[last commit: 7 months ago\]*
* [**snap-pac-grub**](https://github.com/maximbaz/snap-pac-grub) — Additionally updates [GRUB](https://wiki.archlinux.org/noscript/GRUB) entries for [grub-btrfs](https://archlinux.org/packages/?name=grub-btrfs) after [snap-pac](https://archlinux.org/packages/?name=snap-pac) made the snapshots. Also uses [pacman hooks](https://wiki.archlinux.org/noscript/Pacman_hooks). *\[last commit: 4 months ago.\]*
* [**refind-btrfs**](https://github.com/Venom1991/refind-btrfs) — Adds entries to [rEFInd](https://wiki.archlinux.org/noscript/REFInd) after [snap-pac](https://archlinux.org/packages/?name=snap-pac) made the snapshots. *\[last commit: 11 months ago\]*
* [**snp**](https://gist.github.com/erikw/5229436) — Wraps any shell command in a snapper pre-post snapshot (e.g. `snp pacman -Syu`), with better output than the native `--command` option of snapper (see [\#Pre/post snapshots](https://wiki.archlinux.org/noscript/Snapper?pubDate=20250306#Pre/post_snapshots)). *\[last update: 2 years ago\]*
* [**limine-snapper-sync**](https://gitlab.com/Zesko/limine-snapper-sync) — Adds snapper entries to [Limine](https://wiki.archlinux.org/noscript/Limine) [boot loader](https://wiki.archlinux.org/noscript/Boot_loader) after [snap-pac](https://archlinux.org/packages/?name=snap-pac) made the snapshots. *\[last commit: today\]*
**Debain/Ubuntu**
* [**snap-apt**](https://github.com/pavinjosdev/snap-apt) **-** Based on [snap-pac](https://github.com/wesbarnett/snap-pac) by Wes Barnett and [apt-btrfs-snapper](https://github.com/xhess/apt-btrfs-snapper) by xhess. *\[last commit: last year\]*
* [**apt-btrfs-snapper**](https://github.com/xhess/apt-btrfs-snapper) **-** This tool hooks into the apt install/remove/update process and creates two snapshots. One before and one after the packages have been installed/removed. *\[last commit: 10 years ago\]*
* [**apt-snapper**](https://github.com/credativ/apt-snapper) **-** apt-snapper is a wrapper noscript to take snapper snapshots from package manager hooks, and annotating the snappshot with the package list differences. In theory it should not only work with apt/dpkg but also with rpm, pacman and pkg. *\[last commit: 9 years ago\]*
**Suse**
* [Snapper handles this by
I've generally stuck to Ext4 partitions with various backup strategies over the years, after a mishap with Btrfs years ago. Recently, I've gone back to Btrfs for new builds and am now adding snapshots to my data redundancy & recovery strategy. I was using Timeshift at first, but now I am starting to use Snapper with native btrfs-tools instead, along with btrfs-assistant for GUI managemet.
I was going to write some noscripts to handle snapshots for package management, but saw some existing packages to help with this. These are a list of the packages I've found with some links and copypasta. I am curious as to how y'all approach it. Do you use your own noscripts, use any of these packages, know of other packages I didn't find, or something else entirely?
I'm trying to decide how I should handle it. I generally run Arch (btw) on my laptops & Debian on my desktops & servers, usually with rEFInd and just Grub for headless installs.
\---
[**Arch**](https://wiki.archlinux.org/noscript/Snapper?pubDate=20250306#Wrapping_pacman_transactions_in_snapshots)
* [**snap-pac**](https://github.com/wesbarnett/snap-pac) — Makes pacman automatically use snapper to create [pre/post snapshots](https://wiki.archlinux.org/noscript/Snapper?pubDate=20250306#Pre/post_snapshots) like openSUSE's YaST. Uses [pacman hooks](https://wiki.archlinux.org/noscript/Pacman_hooks). *\[last commit: 4 years ago\]*
* [**grub-btrfs**](https://github.com/Antynea/grub-btrfs) — Includes a daemon (*grub-btrfsd*) that can be enabled via *systemctl* to look for new snapshots and automatically includes them in the [GRUB](https://wiki.archlinux.org/noscript/GRUB) menu. For that daemon to work you need to install the optional dependency [inotify-tools](https://archlinux.org/packages/?name=inotify-tools) *\[last commit: 7 months ago\]*
* [**snap-pac-grub**](https://github.com/maximbaz/snap-pac-grub) — Additionally updates [GRUB](https://wiki.archlinux.org/noscript/GRUB) entries for [grub-btrfs](https://archlinux.org/packages/?name=grub-btrfs) after [snap-pac](https://archlinux.org/packages/?name=snap-pac) made the snapshots. Also uses [pacman hooks](https://wiki.archlinux.org/noscript/Pacman_hooks). *\[last commit: 4 months ago.\]*
* [**refind-btrfs**](https://github.com/Venom1991/refind-btrfs) — Adds entries to [rEFInd](https://wiki.archlinux.org/noscript/REFInd) after [snap-pac](https://archlinux.org/packages/?name=snap-pac) made the snapshots. *\[last commit: 11 months ago\]*
* [**snp**](https://gist.github.com/erikw/5229436) — Wraps any shell command in a snapper pre-post snapshot (e.g. `snp pacman -Syu`), with better output than the native `--command` option of snapper (see [\#Pre/post snapshots](https://wiki.archlinux.org/noscript/Snapper?pubDate=20250306#Pre/post_snapshots)). *\[last update: 2 years ago\]*
* [**limine-snapper-sync**](https://gitlab.com/Zesko/limine-snapper-sync) — Adds snapper entries to [Limine](https://wiki.archlinux.org/noscript/Limine) [boot loader](https://wiki.archlinux.org/noscript/Boot_loader) after [snap-pac](https://archlinux.org/packages/?name=snap-pac) made the snapshots. *\[last commit: today\]*
**Debain/Ubuntu**
* [**snap-apt**](https://github.com/pavinjosdev/snap-apt) **-** Based on [snap-pac](https://github.com/wesbarnett/snap-pac) by Wes Barnett and [apt-btrfs-snapper](https://github.com/xhess/apt-btrfs-snapper) by xhess. *\[last commit: last year\]*
* [**apt-btrfs-snapper**](https://github.com/xhess/apt-btrfs-snapper) **-** This tool hooks into the apt install/remove/update process and creates two snapshots. One before and one after the packages have been installed/removed. *\[last commit: 10 years ago\]*
* [**apt-snapper**](https://github.com/credativ/apt-snapper) **-** apt-snapper is a wrapper noscript to take snapper snapshots from package manager hooks, and annotating the snappshot with the package list differences. In theory it should not only work with apt/dpkg but also with rpm, pacman and pkg. *\[last commit: 9 years ago\]*
**Suse**
* [Snapper handles this by
default](https://documentation.suse.com/en-us/sles/15-SP7/html/SLES-all/cha-snapper.html#snapper-snapshot-type); not sure how they handle grub integration (too lazy to look rn 😅).
https://redd.it/1muugqj
@r_linux
https://redd.it/1muugqj
@r_linux
Suse
Administration Guide
Maintain, monitor and customize SLES
More fun than a human should be allowed!
https://preview.redd.it/64dvefoh82kf1.png?width=3840&format=png&auto=webp&s=37b86ab5e016599dbb695755932867bfdd35705b
It's been nearly 25 years since I went down the Linux ricing rabbit hole. Well, that changed this weekend!
After upgrading to Debian Trixie, I got the itch to try a tiling window manager and immediately recognized its potential, and less than a nano second longer to realize how much I took for granted all the comforts that a desktop environment like Gnome, or a system like OSX, provides.
Here's what I got done with Sway and the native Swaybar (I'm sure I'm leaving a bunch of stuff out)...
My Swaybar shows all the system info that's of interest to me. Though, brightness only shows the laptop's built in display. And my memory calc for used memory always shows roughly .5 -.75 gig higher than htop... ugh.
Suspend works for bott the lid and command-line; and the system executes a screen lock prior to suspending.
Outputs defined for the built-in display and my external displays.
Inputs defined for keyboard, trackpads, and mouse.
Keys mapped for volume +/-/mute
Keys mapped for screen brightness +/- (only works on the built-in display)
Keys mapped for screen lock and suspend.
PrtScn takes selectable screen-shots, names then saves them.
Keys mapped for core apps and navigation.
If there isn't an external display connected, all workspaces show on the laptop's built-in display. When an external monitor is connected, a keyboard shortcut moves all workspaces to the external display.
Sound works between HDMI and built in speakes, though I didn't do any mappings. This may be residual from Gnome?
Foot is now my terminal
Python is now my calculator
nmcli is now my network management interface
I know this is probably more configuration than ricing and not terribly impressive... Still, it takes me back to my younger years, before kids, where I could spend hours upon hours messing with my system.
https://redd.it/1muyj9i
@r_linux
https://preview.redd.it/64dvefoh82kf1.png?width=3840&format=png&auto=webp&s=37b86ab5e016599dbb695755932867bfdd35705b
It's been nearly 25 years since I went down the Linux ricing rabbit hole. Well, that changed this weekend!
After upgrading to Debian Trixie, I got the itch to try a tiling window manager and immediately recognized its potential, and less than a nano second longer to realize how much I took for granted all the comforts that a desktop environment like Gnome, or a system like OSX, provides.
Here's what I got done with Sway and the native Swaybar (I'm sure I'm leaving a bunch of stuff out)...
My Swaybar shows all the system info that's of interest to me. Though, brightness only shows the laptop's built in display. And my memory calc for used memory always shows roughly .5 -.75 gig higher than htop... ugh.
Suspend works for bott the lid and command-line; and the system executes a screen lock prior to suspending.
Outputs defined for the built-in display and my external displays.
Inputs defined for keyboard, trackpads, and mouse.
Keys mapped for volume +/-/mute
Keys mapped for screen brightness +/- (only works on the built-in display)
Keys mapped for screen lock and suspend.
PrtScn takes selectable screen-shots, names then saves them.
Keys mapped for core apps and navigation.
If there isn't an external display connected, all workspaces show on the laptop's built-in display. When an external monitor is connected, a keyboard shortcut moves all workspaces to the external display.
Sound works between HDMI and built in speakes, though I didn't do any mappings. This may be residual from Gnome?
Foot is now my terminal
Python is now my calculator
nmcli is now my network management interface
I know this is probably more configuration than ricing and not terribly impressive... Still, it takes me back to my younger years, before kids, where I could spend hours upon hours messing with my system.
https://redd.it/1muyj9i
@r_linux
Ubuntu 25.04 Enables Full Host Support for AMD SEV-SNP
https://techswire.com/ubuntu-25-04-amd-sev-snp-host-support/
https://redd.it/1muztzs
@r_linux
https://techswire.com/ubuntu-25-04-amd-sev-snp-host-support/
https://redd.it/1muztzs
@r_linux
Techswire
Ubuntu 25.04 Enables Full Host Support for AMD SEV-SNP
Ubuntu 25.04 is now the first major Linux distribution to offer out-of-the-box host and guest support for AMD SEV-SNP, marking a significant advance in confidential computing for both private and public clouds.
Messed something up...
So, I was running Debian 12 in a VM for a bit and reasonably comfortable with it and increasingly annoyed with Windows both pestering me to input my key if I try to do anything on it (even update the time) or upgrade to 11 because 10 won't be supported in a month or so
So
I decided today to oust Windows and make Debian 12 the main boot. Trouble is, my computer (hardware) is really new. A friend built it so I don't have all the details but they built it not long ago. So, after installing Debian 12 I get a config error which I was told indicated incompatibility with the hardware. I then go and get the new release hoping this will resolve the issue... it does not. When I boot into BIOS/UEFI I see 3 options, Debian 12 and two named for my USB with the .iso file for Debian 13. If I choose Debian 12 I get the install screen but the same config error after install, I eventually end up at a "terminal" where I can input my username/pw but it doesn't recognize any commands. Or I can choose the USB Debian 13 options which takes me GNU GRUB. I'm not really sure what to do here.
grub> ls
(proc) (memdisk) (hd0) (hd0, gpt2) (hd0, gpt1) (hd1) (hd1, gpt3) (hd1, gpt2) (hd1, gpt1)
I don't really know what this means. Why isn't it recognizing my USB as something to install from? and also reading it twice? Is there any way to clear everything and start over? It was probably hubris to try to run this outside of a VM. I'd even accept defeat and take instructions for getting Windows back at this point.
(wasn't sure what flair to use for this)
https://redd.it/1mv4ffn
@r_linux
So, I was running Debian 12 in a VM for a bit and reasonably comfortable with it and increasingly annoyed with Windows both pestering me to input my key if I try to do anything on it (even update the time) or upgrade to 11 because 10 won't be supported in a month or so
So
I decided today to oust Windows and make Debian 12 the main boot. Trouble is, my computer (hardware) is really new. A friend built it so I don't have all the details but they built it not long ago. So, after installing Debian 12 I get a config error which I was told indicated incompatibility with the hardware. I then go and get the new release hoping this will resolve the issue... it does not. When I boot into BIOS/UEFI I see 3 options, Debian 12 and two named for my USB with the .iso file for Debian 13. If I choose Debian 12 I get the install screen but the same config error after install, I eventually end up at a "terminal" where I can input my username/pw but it doesn't recognize any commands. Or I can choose the USB Debian 13 options which takes me GNU GRUB. I'm not really sure what to do here.
grub> ls
(proc) (memdisk) (hd0) (hd0, gpt2) (hd0, gpt1) (hd1) (hd1, gpt3) (hd1, gpt2) (hd1, gpt1)
I don't really know what this means. Why isn't it recognizing my USB as something to install from? and also reading it twice? Is there any way to clear everything and start over? It was probably hubris to try to run this outside of a VM. I'd even accept defeat and take instructions for getting Windows back at this point.
(wasn't sure what flair to use for this)
https://redd.it/1mv4ffn
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community