- 31 Posts
- 21 Comments
dupeGuru has a great GUI for finding similar looking images (videos are not supported). See How to deduplicate files on Linux with dupeGuru for a tutorial. There’s a similar tool for videos called videoduplicatefinder but I did not try it out.
I will now share my experiences with using dupeGuru. I ran it in Picture mode and selected “Match pictures of different dimensions”. It was nice to see that it found a few low-quality JPEGs that look identical to higher-quality PNGs. One feature that I really like is the option to “ignore duplicates hardlinking to the same file”; let me explain why: I sometimes download the same image into multiple subfolders of my fan art collection, so I want to keep both images despite them being exact duplicates. This can be accomplished by running
rdfind -makehardlinks true .to turn exact duplicates into hardlinks, and running dupeGuru afterwards.I experimented a bit with with “Filter Hardness”. On the first run, I set it to “≥95% match” and the results did not contain any false positives! I later went down to “≥70% match”, which reported more duplicates, but also some false positives. If you have many comic doodles in your collection, choose at least 80%. However, if you want to detect crops of other images, you have to choose a lower percentage. On my collection of 3000 images, dupeGuru took about 5 minutes.
dupeGuru has one major downside: The current release version ignores webp images, but you can build it from source (Arch users can install dupeguru-git from the AUR). Another downside is that it automatically chooses the biggest file among all duplicates as the reference file. This is often a good heuristic but fails badly with webp images that have better compression ratio than other formats. So, if you want to keep only the image of highest quality for every group of duplicates, you have to select it in the GUI and press Ctrl+Space, or export the results to CSV and do some scripting.
Ordoviz@lemmy.mlto Linux Gaming@lemmy.world•[SOLVED] Unity games downloaded from Steam not working on Linux MintEnglish5·3 months agoLogs are probably in
~/.config/unity3d/. If not, check https://www.pcgamingwiki.com/
Baba Is You is Finnish (and hands down the best puzzle game ever).
Ordoviz@lemmy.mlto Rust@programming.dev•Rust Coreutils 0.1 Released With Big Performance Gains - Can Match Or Exceed GNU Speed101·11 months agoUsing MIT license means the developers cannot look at GNU source code when writing code for uutils. This feels like a unnecessary hurdle given that uutils wants to be 100% compatible with GNU tools.
Ordoviz@lemmy.mlto Fuck AI@lemmy.world•Is there such a thing as a manually curated search engine?1·11 months agohttps://mwmbl.org/ has a custom index of user-submitted domains and user-curated results but it’s not suitable for daily use yet.
Ordoviz@lemmy.mlto You Should Know@lemmy.world•YSK you can use custom keyboard symbols(keys), so you can easily enter symbols like αβγδ, or swap : -> ; and ; -> :2·1 year agoYou can also put this in
~/.config/xkb/symbols/us-custom(create the parent directories if necessary) and set the environment variableXKB_DEFAULT_LAYOUT=us-custom. This works in most Wayland compositors, including river and niri. For Hyprland, you can add this to your config file:input { kb_layout = us-custom }If you use GNOME, run
gsettings set org.gnome.desktop.input-sources mru-sources "[('xkb', 'us-custom')]" gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us-custom')]"and restart GNOME.
This is my keyboard layout (I explained some bits of it here):
default partial alphanumeric_keys xkb_symbols "basic" { include "us(de_se_fi)" // Umlauts (ä, ö, ü) and € include "level5(rctrl_switch)" key.type[Group1] = "EIGHT_LEVEL"; // Number row key <TLDE> {[ grave, asciitilde, dead_grave, dead_tilde ]}; key <AE01> {[ 1, exclam, onesuperior, U2081 ]}; // x₁ key <AE02> {[ 2, at, twosuperior, U2082 ]}; // x₂ key <AE03> {[ 3, numbersign, threesuperior, U2083 ]}; // x₃ key <AE06> {[ 6, asciicircum, dead_circumflex, dead_caron ]}; key <AE08> {[ 8, asterisk, enfilledcircbullet, U22C5, infinity ]}; // dot operator key <AE10> {[ 0, parenright, NoSymbol, NoSymbol ]}; key <AE11> {[ minus, underscore, endash, emdash, U207B ]}; // x⁻ key <AE12> {[ equal, plus, notequal, approxeq ]}; // Top row key <AD01> {[ q, Q, NoSymbol, U211A, NoSymbol, NoSymbol ]}; // ℚ key <AD02> {[ w, W, NoSymbol, NoSymbol, Greek_omega, Greek_OMEGA ]}; key <AD03> {[ e, E, NoSymbol, NoSymbol, Greek_epsilon, U2203 ]}; // ∃ key <AD04> {[ r, R, NoSymbol, U211D, Greek_rho, U03F1 ]}; // ℝ ϱ key <AD05> {[ t, T, U03D1, Greek_tau, Greek_theta, Greek_THETA ]}; // ϑ key <AD08> {[ i, I, U21d2, U21d4, Greek_iota, integral ]}; // ⇒ ⇔ key <AD09> {[ o, O, NoSymbol, NoSymbol, Greek_omega, Greek_OMEGA ]}; key <AD10> {[ p, P, section, paragraph, Greek_pi, Greek_PI ]}; // Home row key <AC01> {[ a, A, NoSymbol, NoSymbol, Greek_alpha, U2200 ]}; // ∀ key <AC02> {[ s, S, NoSymbol, NoSymbol, Greek_sigma, Greek_SIGMA ]}; key <AC03> {[ d, D, NoSymbol, NoSymbol, Greek_delta, Greek_DELTA ]}; key <AC04> {[ f, F, NoSymbol, NoSymbol, Greek_phi, Greek_PHI ]}; key <AC05> {[ g, G, degree, NoSymbol, Greek_gamma, Greek_GAMMA ]}; key <AC06> {[ h, H, U2190, NoSymbol, Greek_eta, U2225 ]}; // ← ∥ key <AC07> {[ j, J, U2193, NoSymbol, NoSymbol, NoSymbol ]}; // ↓ key <AC08> {[ k, K, U2191, NoSymbol, Greek_kappa, U03F0 ]}; // ↑ ϰ key <AC09> {[ l, L, U2192, NoSymbol, Greek_lambda, Greek_LAMBDA ]}; // → key <AC10> {[ semicolon, colon, dead_diaeresis, NoSymbol, NoSymbol, NoSymbol ]}; key <AC11> {[ apostrophe, quotedbl, rightsinglequotemark, NoSymbol, NoSymbol, NoSymbol ]}; key <AC12> {[ backslash, bar, U2500, U2502, NoSymbol, NoSymbol ]}; // box drawing // Bottom row key <AB01> {[ z, Z, NoSymbol, U2124, Greek_zeta, U2220 ]}; // ℤ ∠ key <AB02> {[ x, X, multiply, NoSymbol, Greek_xi, Greek_XI ]}; key <AB03> {[ c, C, NoSymbol, U2102, Greek_chi, copyright ]}; // ℂ key <AB04> {[ v, V, doublelowquotemark, singlelowquotemark, Greek_psi, Greek_PSI ]}; key <AB05> {[ b, B, leftdoublequotemark, leftsinglequotemark, Greek_beta, NoSymbol ]}; key <AB06> {[ n, N, rightdoublequotemark, rightsinglequotemark,Greek_nu, U2115 ]}; // ℕ key <AB07> {[ m, M, U2212, plusminus, Greek_mu, NoSymbol ]}; // minus key <AB08> {[ comma, less, dead_cedilla, NoSymbol, U27e8, NoSymbol ]}; // ⟨ key <AB09> {[ period, greater, ellipsis, dead_abovedot, U27e9, NoSymbol ]}; // ⟩ key <AB10> {[ slash, question, division, questiondown, NoSymbol, NoSymbol ]}; };GNOME Settings shows a visual preview of the first four layers:
See also this writeup by Leon Plickat.
Ordoviz@lemmy.mlto No Stupid Questions@lemmy.world•What can I actually do with 64 GB or RAM?9·1 year agoStore your Firefox profile and all tabs in RAM for snappier browsing: https://wiki.archlinux.org/title/Firefox/Profile_on_RAM
Shattered Pixel Dungeon is a great Rouge-like.
Don’t blindly run untrusted software, use Bubblewrap at the very least. Keep https://xkcd.com/538/ in mind.
OpenStreetMap and Internet Archive because they are operating with a small budget (as opposed to Wikipedia).
Ordoviz@lemmy.mlto Linux@lemmy.ml•CLI tools to quickly find recently opened files by fuzzy search?4·2 years ago#!/bin/sh # Select a file with fzf from a database sorted by frecency and open it using # xdg-open. frece can be found at https://github.com/YodaEmbedding/frece DB_FILE=${FRECE_FILES_DB:-$HOME/.cache/frecent-files.csv} item=$(frece print "$DB_FILE" | fzf --tiebreak=index --scheme=path) [ -z "$item" ] && exit 1 frece increment "$DB_FILE" "$item" xdg-open "$item" #!/bin/sh # Update frece database DB_FILE=${FRECE_FILES_DB:-$HOME/.cache/frecent-files.csv} tmp_file=$(mktemp) fd -H . ~ > "$tmp_file" # use ~/.fdignore file to exclude certain dirs frece update "$DB_FILE" "$tmp_file" --purge-old rm "$tmp_file"
Ordoviz@lemmy.mltoGeneral Programming Discussion@lemmy.ml•How to audit a shell-completion script?3·2 years agoThe mojo, cpan and pip bash scripts don’t fail my test of “skimming over the source and looking for dangerous external commands like curl or
rm” (good syntax highlighting is helpful here). They look like typical completion scripts. However, if your Linux distribution has a pip completion script in their repos, prefer that one.
Ordoviz@lemmy.mlto Technology@beehaw.org•How Google Alters Search Queries to Get at Your Wallet - WIRED3·3 years agoWired has removed the story because it “does not meet [their] editorial standards”.
Ordoviz@lemmy.mlto Technology@lemmy.ml•How Google Alters Search Queries to Get at Your Wallet4·3 years agoWired has removed the story because it “does not meet [their] editorial standards”.
Make sure that
toolkit.legacyUserProfileCustomizations.stylesheetsis enabled in about:config.
Ordoviz@lemmy.mlto World News@lemmy.ml•Readout of Xi-Biden phone call On the evening of 28 July0·4 years agoThanks, I was confused because I thought “not supporting Taiwan independence” means being fine with China annexing Taiwan. In both versions of the readout, Biden wants to keep the status quo in Cross-Strait relations, but this is phrased differently in each readout.
Ordoviz@lemmy.mlto World News@lemmy.ml•Readout of Xi-Biden phone call On the evening of 28 July0·4 years agoIt’s good that China and the US keep up the communication. However, I would like to see an US version of this: Did Biden really “reiterated that the one-China policy of the US has not changed and will not change, and that the US does not support ‘Taiwan independence’.”?
Ctrl+Q closes Firefox (very easy to misinput due to being so close to Ctrl+W):
browser.quitShortcut.disabled = true