Hey there! Some of you may have seen my post from a couple weeks ago to the open source community about this project, if you haven’t, feel free to go there and read it for some context.
But for a quick rundown: A friend of mine showed me how both the official clients and the actual tldr-pages repo either openly took AI submissions, or had a relaxed/non-existant AI policy. She also pointed me to ethical-tldr, which is a repo committed to removing all of the AI submissions from tldr, they have their own client forked from the official, but since it’s still written in python, it’s slow, (and python is very tainted). Thus, I decided to learn C from scratch over just a couple of days, and wrote my own client. Hence, my client is called cldr, opposed to tldr.
Now, let’s look at what makes cldr better than tldr. And yes, this is absolutely me “shilling out” for my project, I think it’s awesome and I want people to use it!
For some direct statistics: at best, when printing a page, tldr is 20 times slower than cldr, but on some systems, (my laptop), it can be over 150 times slower, taking 200ms compared to cldr’s 1-2ms. tldr is slow enough to see a very noticeable gap between the moment you run the command and when it actually prints the page. cldr is also smaller than tldr! Taking only 55kB opposed to the 100+kB of tldr.
cldr just overall has a much more polished user experience, with a cleaner interface (compare cldr --list -p common to tldr --list -p common), detailed error messages and debug logs, and when something goes wrong, cldr gives you suggestions on how you can fix it.
By the way, if you don’t want the fancy visuals (maybe you’re scripting) just add --plain to your arguments.
cldr adds the notes feature, allowing you to write as much additional information about a command as you want. For example, if you frequently use a special ffmpeg command, but can never remember it, just write a note about it! And hey, you can make the note as fancy as you’d like, with all of the formatting of normal page files. To get an in-depth lesson on how to write formatted notes, run cldr --help-notes.
cldr also lets you customize the rendering even more than tldr, you can choose from many different colors, backgrounds, and formatting keys to make different parts of pages look however you want! You can run cldr --colors to see everything available!
cldr stores the database of pages locally at $HOME/.local/share/cldr (this can be customized!) instead of tldr’s default behavior of fetching the pages over the internet, this leads to much faster loading, and means you don’t need an internet connection to use cldr.
And best of all, cldr was (and always will be) developed without the usage of any generative ai.
Oh and, by the way, cldr is a direct replacement for tldr in the command line, meaning for *any command you’d run in tldr, you can simply replace the ‘t’ with a ‘c’ and it will work the exact same.
*The only exceptions to this are with -s/--source, -s must instead be changed to -S, AND, while writing this, I realized that the source functionality is broken. Also, -c/--color and -r/--render are not implemented, because I couldn’t even notice them doing anything in the original client.
ETA: I didn’t really make it clear in this post, but cldr uses ethical-tldr pages by default, but if you wish, you can use parameters/env vars to change the source for the pages.


Did it provide any error messages?
You can try installing gcc if it’s not installed already
It simply says
Segmentation faulteven after installinggccand rebooting.Ah, one other thing, is this error happening when you’re trying to install
cldr? Or is it only when you runcldr? If the latter, run cldr with the commandDEBUG_LEVEL=-1 cldr [whatever other args you want], it’ll print a log of the steps it’s taking, so I can figure out where in the code something is broken. If the former, try building the project from source, or getting the prebuilt binary from the release.Additionally, does this still happen if you download the binary from the release? Opposed to following any of the steps in the Installation wiki.
PS: I’ve been editing this comment a bit, so just to make sure the edits were federated, lmk if you see this part of the comment
It seems I’ve got all of the edits.
The error happens when I’m trying to run the command, so running
DEBUG_LEVEL=-1 cldrgives the following:spoiler
Log Level 1: Getting environment variablesLog Level 2: Getting home ENVLog Level 3: homeDir is set to /home/$USERLog Level 2: Getting language priorityLog Level 4: Checking argument for invalid charactersLog Level 4: Checking argument for invalid charactersSegmentation faultI’ll try the binary and report back.
Edit: I tried the binary as well with the exact same results sadly.
This is good info, can you give me the output of
echo $LANGUAGE? According to the logs it seems like it’s breaking during the parsing of that variable.If that proves inconclusive, I might also make some custom builds for you to test with, most likely I’d just be adding a bunch of extra debug logs to pin point where things are going wrong.
Edit: I’ve been able to reproduce the issue on my computer, I’ll let you know when I fix it!
echo $LANGUAGEoutputsen_GBon my working Mint system anden_GB:enon the non-working Debian system. Not sure how big of a difference that is, but maybe it has something to do with that.When you get a chance, let me know how the new version works out! If it’s still breaking, send the logs again like last time.
Happy to report that the new version works. Thanks so much for all your help.
Oh and obviously you can also remove gcc if you don’t want it
And thank you for reporting the issue!
It is indeed a big difference! I believe I have fixed the issue, I’ve just released v.1.8.1 with a couple of other improvements.