That said, it uses the "intense" palette which seems odd considering the regular colours would have sufficed.
That.... works i guess but it's pretty limiting and only helps people who happened to have completely reworked the definitions of basic things like "white" and "black" and "blue" which would result in a completely unpredictable result for the app creator. A much BETTER solution would be for them to set the background color because they've got a UI specifically designed for dark background.
> That.... works i guess but it's pretty limiting and only helps people who happened to have completely reworked the definitions of basic things like "white" and "black" and "blue" which would result in a completely unpredictable result for the app creator.
I completely disagree for a few reasons:
1/ if you're running a white (or any other coloured) terminal then odds are you've already changed the other colours to suite (since other applications use the 3/4bit standard as well).
2/ or if they are just using a preset theme then that theme would have a suitable colour palette already
3/ CLI programs shouldn't be so dependant on the palette of the colours that alternative shades render the tool "unpredictable". It's a CLI tool, not a fancy graphical package. You cannot make any assumptions about the terminal eg what if the user has colour disabled entirely - does that then also make the tool "unpredictable"? What about different terminal typefaces? Or widths? You cannot make any assumptions aside that text will be rendered (and even that isn't a guarantee if you're using unicode).
The one exception to this is ASCII / terminal art. But they are justified in using true colour escape sequences since their entire point is pseudo-graphical.
> A much BETTER solution would be for them to set the background color because they've got a UI specifically designed for dark background.
That's another solution but I fundamentally disagree it is a better one. eg what if people are dyslexic or partially sighted so have their terminal configured for readability reasons? What the developer is doing is overriding that accessibility setting.
Unlike many CLI junkies I actually don't mind a bit of colour in the terminal. But I'd honestly rather have developers not using colour at all if they're really that concerned about their output looking identical on every terminal.
those points are totally valid and really important. I can't help but think of what the implications are for them on the web though. Sure we, as users, can control font choice and size for readability but color? Realistically the only thing i think you could do is install a plugin that compensates for various forms of color blindness by shifting the colors.
maybe _that_ is the right solution to the color blindness on the cli... modify your shell to run all input through a color shifter. I can't think of ever having seen an example of this but... it shouldn't be too hard AND for people without color blindness you could customize the behavior so that it shifted the output of apps like this one to colors more useful / happy-making to you.
I expect to be proven wrong about the "shouldn't be too hard" shortly.... ;)
> 1/ if you're running a white (or any other coloured) terminal then odds are you've already changed the other colours to suite (since other applications use the 3/4bit standard as well).
That doesn't seem right to me. The people i see running white terminals almost completely overlap with the people who have done NO customization.
> It's a CLI tool, not a fancy graphical package.
I have issues with this general approach to CLI apps. As someone who basically lives in the terminal every day I am regularly disappointed by just how poor the current state of cli UI is. There are SO many opportunities for them to be providing me with useful feedback by leveraging colors, and emoji, and formatting and most of them... just don't. This kind of UI / UX helps avoid bad data entry, mistaken choices, etc....
There are a lot of young folks writing new cli tools in nodejs these days AND thinking about how they can make the visuals more useful to the user. I totally applaud this approach. But, you're right about not taking disabilities into account.
Re CLIs should be more graphical. I both agree and disagree. The issue with user input and mistakes etc is more down to the tooling and/or user experience than the CLI itself. This is actually why I'm writing my own shell at the moment. I'm trying to address some of the discoverability issues that traditional shells have. A bit like Fish tries to do except mine is more programmer orientated.
I do actually think modern terminals would benefit from supporting richer content but I really don't think that should be at the cost of breaking the basics we come to expect (tools can be pipelined, shells can be customised, etc). I think if the web has taught us anything, it's that developers cannot be trusted with UIs. I know that sounds harsh but every webpage is themed differently and on the whole it's a bit of a UX nightmare. Where as CLI tools need to work homogeneously together. Coloured output breaks this because many developers (particularly the nodejs ones it seems) forget to check if the tool is outputting to a TTY or not. This matters because it prevents the user from doing the following without writing a load of crap escape sequences that won't render in your text editor:
todo list | grep urgent > urgent.txt
Or alternatively, they can just not use any colours at all. Frankly I don't even have different colour schemes on my JIRA kanban board so the argument that CLI todo lists require true colour support is tenuous at best.
There are only eight standard colours in ECMA-48, set by SGR 30 to 37 and 40 to 47. Some emulators substitute a colour modifier for boldface. But not all of them even do that, with several terminal emulators rendering boldface as actual boldface, meaning that that is not a route to a colour change in the first place. As for faint, my terminal emulator is one of the very few that even takes any notice at all of the faint attribute.
SGR 90 to 97 and 100 to 107 are not standardized by ECMA-48. They are an extension from aixterm.
The intence and faint codes are the same SGR ranges as the standard 8 colours but have their additional property encoded in their escape sequence (separated by a semi-colon, as is common with terminal escape sequences).
Arguements about whether it is standard or not aside (because there are dozens of standards and no terminal emulator follows any of those standards strictly anyway - instead picking and choosing parts from different standards based on whatever gets the best results the easiest), most terminals do support it. In fact faint and intense are more widely supported than the 8 bit and 24 bit SGR sequences. However if you're really going to get hung up on compatibility and standards then the only safe route is not to use colour at all.
You have the wrong model for how this works. SGR control sequences do not work this way.
There is no "additional property". The "additional property" is the very boldface and faint attribute that you erroneously want to "strike from the conversation". It is a standalone attribute, separate from the foreground/background colour setting. And as I said: Some, but not all, terminal emulators treat the bold attribute as a colour modifier, with several conversely now rendering it as true boldface, sometimes to the surprise of users; and the majority simply ignore the faint attribute completely.
And no, you don't get to set aside whether this is a standard, since you brought up the argument that there were "standard colour ANSI escapes" in the first place. (These are not ANSI, by the way. You have the wrong standards body, on the wrong continent.)
To which you then added this erroneous notion that there are "faint and intense palettes", based as we now see on an incorrect understanding of the ECMA-48 SGR control sequence.
No, not using colour is not the only safe route, as ECMA-48 standardizes eight colours with a mapping from ordinal to colour, the use of which is very safely within standard-defined areas. Indexed colour, standardized by ITU T.416, in contrast does not have a similar defined map for the various indices. The "standard 16 colours" in indices 0 to 15, so often talked about, are not in fact standardized.
And indexed colour control sequences properly use colon, not semi-colon, as a separator. Ironically, that is the way that "additional properties", more properly termed sub-parameters, are encoded in ECMA control sequences. You are not alone in making this mistake. It was widely made based upon samizdat, rather than reading the actual standards, and has some historical inertia behind it; although by my observations a fair number of terminal emulator authors have nowadays come around to supporting the proper, standard, mechanism. But you are nonetheless making another mistake.
No, there are not "dozens of standards". There's ECMA-48, ECMA-35, ITU T.416, the Unicode standard (for UTF-8), and the de facto standard of what the VT520 doco says about all of the DEC private stuff. One can nowadays get away with, as I and the mosh people do, not implementing any of the ECMA-35 8-bit character set switching mechanisms and ignoring that standard. The mosh people tout this as a feature. That leaves just four.
Nor are terminal emulator people flippant about them, as you claim, in my direct experience of dealing with them.
I've spent a great many hours of my life implementing terminal escape codes into various $SHELLs and $TERMs (and I don't mean some Electron crap), so I have read the specs and I'm not just making this stuff up nor talking purely from the perspective of throwing some colour in a personal CLI tool.
> There is no "additional property". The "additional property" is the very boldface and faint attribute that you erroneously want to "strike from the conversation".
I think you're more hung up on my wording than anything.
ESC[31m -- red
ESC[1;31m -- intense red
ESC[2;31m -- faint red
ESC[1m -- bold
ESC[2m -- faint
> And no, you don't get to set aside whether this is a standard, since you brought up the argument that there were "standard colour ANSI escapes" in the first place. (These are not ANSI, by the way. You have the wrong standards body, on the wrong continent.)
Again, you're arguing semantics rather than trying to understand the point I was making (maybe that was my fault for trying to discuss complex thing on a phone with a broken touch screen?). But in any case you later went on to reiterate my original arguments when you said devs should use 3/4 bit.
> No, not using colour is not the only safe route, as ECMA-48 standardizes eight colours with a mapping from ordinal to colour, the use of which is very safely within standard-defined areas.
Not all terms honour those SGR sequences. If portability is a concern then you cannot rely on colour - period.
However it's interesting to see you're basically reiterating my primary point now :)
> And indexed colour control sequences properly use colon, not semi-colon, as a separator.
Some do, some don't (as I demonstrated above). Semi-colon is more commonly used as a separator in terminal escape sequences though (not just with SGR codes either, I could list dozens of CSI sequences which use semi-colon as a separator).
But don't take my word for it: https://stackoverflow.com/questions/4842424/list-of-ansi-col...
> No, there are not "dozens of standards".
Not all standards have been enshrined by a standards body but there are indeed multiple vendor specific standards and de facto standards as well. Working with vendor specific standards is "fun".
> Nor are terminal emulator people flippant about them, as you claim, in my direct experience of dealing with them.
Then I question you're experience because my direct experience has been that you cannot count on a $TERM following any specification to the letter (unless of course that specification was written for that term). This is a particularly potent problem when you start dealing with CSI and other sequences. Heck, $TERMs don't even agree on backspace all of the time (^? vs ^H) so god help them when it comes to anything more complex.
But I guess if it was as simple as you claim then termcap et al wouldn't be a thing ;)
It's great, well thought-out in many ways, and supports many types of workflows. I sorely lack a web tool for it to share with others.
I wish somebody would make a "dumbed-down" version of emacs that was always in org-mode and used modern interaction-conventions and configuration. Something like FoldingText but for org-mode. (I realize this somebody could be me, but I've already got enough side-projects.)
There's also an Android app called Orgzly which supports Org Mode files.
Besides of course ease in styling with css and hackability.
* there is no custom theme option either, and they have stopped accepting new themes too; https://github.com/dawnlabs/carbon/issues/427#issuecomment-4...
From the readme it looks like it is single user - like org-mode. I wonder is any organizations have developed group/multi-user features for org-mode?
Probably a good organizational org-mode policy would be to sync using git. Unless the pace is too fast.
Incidentally, there's many nice ways to make org-agenda look like a kanban.
(Although if I'd replied with this at the time rather than accidentally having the tab open for 2 days it would have helped ;)
I found scrolling between the columns a bit cumbersome...
Suggestion: configurable text colors. You already have a config file. I may try to hack it together myself later - if I get it working I'll make a PR.
Overall though this is a cool idea and looks very well executed. Nice work!
It'd be lovely if this could synchronize with Trello. They do have an API :)
This is a hugely understated paradigm.
However, I can't stop thinking "tuberculosis".
I'm giving it a go, looks good and the shortcuts flow well when typing them:
tb -t @personal Finish groceries