Suggestion: change executable name to `pj`


  1. It’s easier to remember
  2. It’s very ergonomic to type (hand moves smoothly through p-j-space)
  3. Adopting short but unique executable names is common practice across Rust crates (rg, fd, sk, …)
  4. Version control should be ergonomic by default (git does it right)

While you wait for an official reply, consider adding a shell alias so that you can get used to typing what you desire.

I’m curious what your fourth reason means. I would think that a full word, pijul, would be easier for accessibility software, like a screen reader, to communicate than two consecutive consonants. Likely, I’ve misunderstood what accessible means in this context, even with the hint about git.

1 Like

Oh that’s a great idea. No offence but I stand little chance of spelling / remembering pijul right.

pj is much easier to remember and faster to type than git :slight_smile:
(and easier to recommend to others aurally - they won’t get pj wrong when they search for pj version control system)

1 Like

Oh, sorry for my terrible English and thank you for suggestion.

Behind “accessible” I was mean “such that provides direct access to features” e.g. git is simple to type and because of that it makes add, commit, push features easier to access.

There always are situations when you want to work on someone’s else machine or provide terminal demonstration. In context of version control typing of long commands could be a real pain.


Well, that depends on your keyboard layout :smile: As a Dvorak user, the p and j are not placed that conveniently.

But it would still be faster to type than pijul (which on Dvorak is almost all on the left hand).

Personally, I use the alias anu which is the Portuguese name for the same bird (but I also get why that is not a desired name for a binary :stuck_out_tongue:).

I wouldn’t change the name of the executable, just add a shell alias if you want a different name. But i would like to be able to define aliases for pijul commands like i do for git: g s (g: shell alias for git; s: git alias for status).

Well, would a simple shell function/arbitrary blown-up program like this

pj() {
    case "$1" in
        s | st* ) cmd=status;;
        r | rec* ) cmd=record;;
        * ) cmd="$1";;
    pijul "$cmd" "$@"

still your needs?

I’m really not sure wether such a simple thing should be handled by the main program. Shell completion would be a nice addition.

I mean this might seem like a non-issue, but seriously, pijul is painful to both write, read and remember. And sane defaults are of huuuge importance to me, especially if considering to try something new.

First thing i am going to see and do when trying some new command is typing it in. If that is non-pleasant, or downright annoying i will have had a bad first-impression. Google first impressions and you will see their importance.

as it stands now, I am intrigued by what pijul is, but I will wait until it is more standardized and widely adopted before even trying it, and one of the reasons for that is probably because I really really do not look forward to having to configure my shell on my machines to have a new alias, or have to type out “pijul” everytime.

I also use fd (find-fd) instead of find, mostly because its more ergonomic from the start, as well as rg instead of grep.


Hi @TotalKill! Thanks for the kind feedback. It’s true that “Pijul” is painful to write, and I am saying that both as a dvorak user and as the person who has probably typed that word the most on the entire planet.

First impressions matter alright, but so does “googleability” or the choice of a non-ambiguous name, and Pijul is not doing too bad on that metric. I did consider a number of other names, especially shorter ones, but they failed that test badly.

1 Like

Would it be a problem to keep the name ”pijul“ and make the command accessible as pijul and pj? Either as a symlink or maybe pj could also be an alias wrapper like


This sounds good to me. pijul is pretty awkward to type on qwerty also.

I think if people want aliases then that should be built in to the command itself - i.e. pijul and pj should behave the same way.

1 Like

Agree. Maybe we can call the project as pijul and have the binary called pj or pjl. Kind of like Subversion has svn or Mercurial has hg

1 Like

I like pj, would be good change I think. pjl not so much.


Yeah I see. I was just giving some mere examples. Take it with a grain of salt

1 Like

pj or pij. I think this should be done centrally, rather than users specifying their own aliases. Cosmetic things like this, unfortunately, tend to be quite important.


Please nothing with three keys of the same hand on most keyboards, as is the case for pjl or pij on at least QWERTY, QWERTZ, AZERTY.

In case anyone is interested, I updated jorsn/pj for the new pijul.

It allows you to define command aliases, and by default chooses a command if you typed a unique prefix. This only applies to primary commands so far, not secondary e.g. pj chann delete not pj chann d.

Related: I opened

I’d favour just renaming the executable. There’s no need to change the overall Pijul project name, or to provide two executables/symlinks/aliases (a recipe for confusion). Precedent: Mercurial’s executable is “hg”, ripgrep’s is “rg”, etc.


I just came to chime in, in favor of shipping with a default ‘pj’ link to the pijul executable. I’ve aliased it but it strikes me this would be a good, ergonomic default.


I don’t like this, personally. I’m against gratuitous abbreviations in general - I’ve looked through so many codebases where the code gets obfuscated and something that otherwise would be obvious makes me think really quite hard, all in order to save a couple of keystrokes ( pijul is included by the way - it took me 15 minutes to work out “txn” probably means “token”, which IMO is no obvious and just is never worth the headache for two characters ).

And it does feels more of a shell alias thing. I prefer the name of the command to match the project - it’s cleaner and makes it easier to look up, whilst shortening it makes it feel hacky. And it’s a nice name. It makes me think of the birds. If I hit p and type tab I’m likely to get most of the way anyway. I’d rather type mercurial using tab than have something that is harder to google (hg). If it’s really too long for me then I can make a function called m- also probably containing some wrappers for common thins I want to do that aren’t straightforward commands, as I am beginning to do for pijul.

In fact a real pet peeve of mine is if I install something and the project, the name of the apt package, and the command itself are subtly different. If I’m in a container for example, it wastes time if I have a project named pijul, a command called pj (and if I tab-complete all of p, this will contains many entries, but can’t tab-complete pi, so now I have to start looking what I just installed or google how to run it) and a package called e.g. pijul-vcs or something subtly different. If I wanted to install delta, it’s much better user experience for me to run cargo install delta and have a command called delta, not dt or something obscure.

Lastly, admittedly everyone is different, but I don’t really see how five letters is much harder to remember or type than two. I’d understand more (bust probably still disagree) if the name were much longer. It also means remembering two pieces of information, not one, because finding the project using pj is probably not going to work, so it seems necessary anyway.