The TL;DR doesn’t really say what this new pager offers compared to less; it seems to mostly be a learning project:
> lore supports only a subset of what less does, but in a more intuitive and useful manner for my daily activity. I also find value in understanding it from the ground up, bytes to terminal views, and continuing to refine it as I learn more about what I actually want and need in a terminal pager.
If I were to give this post a longer title, it would be "I made a terminal pager because I needed a really good viewport component for my Go TUIs, then realized that a TUI viewport is just a mini terminal pager and I want the same text navigation and manipulation experience everywhere that I encounter long text blocks in my terminal".
I take no issue at all with `less`, it's super powerful and configurable as I call out in the post. I took the functionality I needed, made it a reusable component for Go TUIs, then made a terminal pager in the form of a Go TUI with it.
In fact it's not. The name itself mimicks cat, not less. It's a filter that adds annotations to its input, such as syntax highlighting, git diffs and special-char coloring.
Personally I can't find any use for bat: I'm a devote user of vim for editing, and it already does all of this, so why not using it to view files as well? It's satisfying to have the same interface, colors and shortcuts whether you're editing or viewing!
I like it a lot more than `less`, but unfortunately it's always a lot slower when first opening really large files. I'm not sure if it's eagerly loading the whole thing (maybe because that's needed for AST parsing in the case of syntax highlighting, although it happens even on files without highlighting), but there are times I have to swap to `less` still.
It's not great but I made a typescript library to wrap pickers recently, such as skim, fuzzel, fzf, dmenu, rofi, etc. Some very similar problems.
Would love if anyone has thoughts or suggestions. It was quick and dirty, and works fine for my use, but I'm not sure where else I could take this, how else I might splice apart the problem, what else would suit it. https://tangled.org/jauntywk.bsky.social/picker-power
I am definitely waiting for a "modern less replacement" in the same vein as fd, sd, fzf, and the rest of the under-20yo cli crew. I get that "less" is reasonably maintained still.
I think the killer feature for me would be refresh. I get that this can't work for piped input, but I want `git diff` to show in a pager with a refresh button that holds my place. fzf supports both refresh and piped input, so perhaps there's some ideas there that could be leveraged.
I went looking for a 'new' pager a couple years back and settled on this [0]. I've since gone back to `less` since it got annoying jumping between systems and having different pagers, but when I used it it was quite nice.
How does this compare to less with syntax highlighting? I've been using bat as a pager (bat --paging=always) and it covers most of what I need. Curious what the advantage is for larger files.
I wish there was some kind of standard to tell CLI apps what features to expect from the system pager, so they can act accordingly …
Right now, apps can talk to the terminal to check for feature support, but all of that falls apart when the output is piped to a pager. (Do we support inline links? ANSI colors? Sixel support??)
Shameless plug, specifically regarding Sixel support: I needed a pager with better image support than just less -r and made https://github.com/roblillack/lessi
I wrote streampager a few years ago to scratch a similar itch. It works well enough for my own uses (and is/was used in library form as the built-in pager for sapling and jj).
I think it still needs some work for more general use which I unfortunately don't have time for at the moment.
pimlottc | 12 hours ago
> lore supports only a subset of what less does, but in a more intuitive and useful manner for my daily activity. I also find value in understanding it from the ground up, bytes to terminal views, and continuing to refine it as I learn more about what I actually want and need in a terminal pager.
gandreani | 11 hours ago
cocodill | 11 hours ago
vomayank | 11 hours ago
What was the main limitation in existing pagers like less that pushed you to build a new one?
lrobinovitch | 11 hours ago
If I were to give this post a longer title, it would be "I made a terminal pager because I needed a really good viewport component for my Go TUIs, then realized that a TUI viewport is just a mini terminal pager and I want the same text navigation and manipulation experience everywhere that I encounter long text blocks in my terminal".
I take no issue at all with `less`, it's super powerful and configurable as I call out in the post. I took the functionality I needed, made it a reusable component for Go TUIs, then made a terminal pager in the form of a Go TUI with it.
ghthor | 9 hours ago
dostick | 11 hours ago
nkoren | 5 hours ago
fragmede | 10 hours ago
(too bad Cisco bought them and made it too expensive).
Also, no "less does more than more and most does more than less" joke?
mnkyprskbd | 10 hours ago
teki_one | 9 hours ago
teo_zero | 5 hours ago
Personally I can't find any use for bat: I'm a devote user of vim for editing, and it already does all of this, so why not using it to view files as well? It's satisfying to have the same interface, colors and shortcuts whether you're editing or viewing!
asibahi | 9 hours ago
joombaga | 7 hours ago
saghm | 9 hours ago
ancientcatz | 9 hours ago
netghost | 8 hours ago
project2501a | 5 hours ago
https://github.com/charmbracelet
jauntywundrkind | 9 hours ago
Would love if anyone has thoughts or suggestions. It was quick and dirty, and works fine for my use, but I'm not sure where else I could take this, how else I might splice apart the problem, what else would suit it. https://tangled.org/jauntywk.bsky.social/picker-power
CGamesPlay | 9 hours ago
I think the killer feature for me would be refresh. I get that this can't work for piped input, but I want `git diff` to show in a pager with a refresh button that holds my place. fzf supports both refresh and piped input, so perhaps there's some ideas there that could be leveraged.
zeech | 8 hours ago
[0] https://github.com/walles/moor
anthk | 4 hours ago
busfahrer | an hour ago
CGamesPlay | 19 minutes ago
sourcegrift | 9 hours ago
thegdsks | 7 hours ago
jzer0cool | 5 hours ago
umutnaber | 5 hours ago
da_rob | 4 hours ago
I wish there was some kind of standard to tell CLI apps what features to expect from the system pager, so they can act accordingly …
Right now, apps can talk to the terminal to check for feature support, but all of that falls apart when the output is piped to a pager. (Do we support inline links? ANSI colors? Sixel support??)
Shameless plug, specifically regarding Sixel support: I needed a pager with better image support than just less -r and made https://github.com/roblillack/lessi
Cthulhu_ | an hour ago
broken-kebab | 3 hours ago
efaref | an hour ago
I think it still needs some work for more general use which I unfortunately don't have time for at the moment.