-
8 votes
-
Baltic Pipe pipeline between Norway and Poland received its first direct deliveries of Norwegian gas – Danish terminal started operations following delays
6 votes -
The race to build an LNG terminal in north Germany
6 votes -
What are your favorite CLI tools/applications?
While I've been teaching myself my first programming language (Python), I've been getting more into using the terminal as much as possible to build familiarity and get comfortable. This has opened...
While I've been teaching myself my first programming language (Python), I've been getting more into using the terminal as much as possible to build familiarity and get comfortable. This has opened my eyes to so many useful utilities and makes me curious as to what there is out there that I haven't heard of yet.
My favorites so far:
exa - A modern version of "ls"
youtube-dl - Download videos from youtube.com or other video platforms with various options
hledger - Plain text double-entry accounting software based on ledger written in Haskell
thefuck - App that corrects a spelling mistake in the previous command by typing "fuck"
spicetify-cli - Customizes the Spotify client with themes and extensions
spotifyd - Lightweight Spotify daemon
spotify-tui - Control Spotify in the terminal
neofetch - Launch tool that can display ASCII art or pictures and general system information
I'm on macOS but I'm almost certain all of these are cross-platform.
What are your favorite or "must-have" CLI packages?
40 votes -
What terminal emulator do you use?
What are your experiences with your current terminal emulator or former ones? What makes you use your current terminal emulator? What shell do you use?
16 votes -
Unearthed Arcana: `edbrowse`
I recently happened to mention edbrowse in a throwaway comment, and @ainar-g expressed some interest in it. I took my sweet time, but I finally managed to assemble a short(ish) write-up on it, and...
I recently happened to mention
edbrowse
in a throwaway comment, and @ainar-g expressed some interest in it. I took my sweet time, but I finally managed to assemble a short(ish) write-up on it, and my sleep-addled mind is thinking that this topic - niche, weird tools - could just become recurrent.
Terminal brosers, such as
lynx
,w3m
andelinks
, while still used and under more-or-less active development, are very niche tools.edbrowse
fills a niche within that niche, as it's meant for use by non-sighted people, and thus provides an interface even more bare-bones and arcane than the usual TUI/curses apps that share its space.As per the name,
edbrowse
's interface is heavily inspired byed
's, the standard text editor:edbrowse
, in fact, is not just a web browser, but it combines together a browser, a text editor, a mail client, and - for some reason - a database client. All of these functions are mostly controlled via one-letter commands and, as is tradition, only displaying a single?
on error*.edbrowse
is also unique amongst the terminal browsers because of its support for JavaScript and the DOM. The text it spits out is meant for Braille displays and screen readers, so it lacks niceties like color or aligned tables, but if you were to browse toreddit.com
with it, you would see a perhaps ASCII-art Snoo fill the screen†."Browsing reddit? How‽," you might ask. "How am I supposed to get this thing to stop questioning me? All those
?
are filling me with existential dread, I have no idea what to do!"While it's all there in the manual (but not in the manpages, for some reason), reading through 30k words of text can be a bit of a slog. They do provide a cheatsheet, though, even if it's a bit messy.
So, how do you use
edbrowse
? If you already know howed
works, most commands (especially "movement", search and listing commands) will work as expected - it is also an editor, after all - butedbrowse
adds another handful of them.The most important of them is, perhaps,
b
rowse. It will makeedbrowse
put in an HTTP request, grab the response (if any), and then render it. It will print out the length, in bytes, of the response and of the rendered text, and stop there.$ edbrowse edbrowse ready b https://tildes.net 119201 20083
To actually peruse the page you can use any of the
ed
listing commands (p
rint,l
ist, andn
umber), or thez
command.z
works much likep
, but it prints a number of lines (normally 24) while "remembering" your position within the page.0z10 {Tildes} {Log in} <>Sidebar * {Activity} * {Votes} * {Comments} * {New} * {All activity}
Links are indicated by curly brackets, while form elements (both input elements and buttons) are wrapped in angle brackets. You can follow a link by jumping to the line containing it and issuing a
g
o command (usingg2
to follow the second link on that line,g3
for the third,g$
for the last), but, in normal use, you should probably just search for the link text./{Log in}/g 5886 923 0z10 {Tildes} <>Sidebar Log in Username <> Password <> <-> Keep me logged in <Go>Log in
The same thing goes for form elements, but the command to use, here, is
i
(fori
nteract).i
has actually four different subcommands:i[N]=
, to set the value of a text field,ipass[N]
to prompt for the value of a password field,i[N]*
to press a button‡, andi[N]?
to askedbrowse
what that damned element is supposed to be./Username/ i=mftrhu /Password/ ipass hunter12 /<Go>/i* submitting form 124579 20049
You can jump back to the previous page with
^
, and refresh the current page withrf
.Of course,
edbrowse
can do much more - can be configured to do much more, via.ebrc
, as it possessed (very) rudimentary programming facilities. It can edit its own configuration file, and reload it withconfig
, so - rejoice. You won't ever need to leave it.And, after seeing just how aesthetically pleasing its configuration language can be, I'm confident that you won't ever want to leave it.
# Switch to a new editing session e2 no file e ~/.ebrc # Show the last lines of the configuration file $100,113n 100 function+google { 101 b http://www.google.com 102 /<>/ i=~0 103 /</ i1* 104 /^About/+2 105 } 106 function+ddg { 107 b https://duckduckgo.com 108 /<>/ i=~0 109 i2* 110 /<Go secure>/+1 111 /<Go secure>/+2 112 z24 113 }
As I said earlier, while
edbrowse
does possess some programming facilities, they are very rudimentary. Functions are nothing more than sequences ofedbrowse
commands with some flow control constructs: they can do everything an user could do, which means that they are often convoluted and overly terse.The
ddg
function, for example (which is invoked via<ddg [PARAMS]
), firstb
rowses to duckduckgo.com. The DuckDuckGo home page, as rendered byedbrowse
, only contains a link followed by the search form:{About DuckDuckGo Duck it!} <> <S secure> <X>
So the function looks for the (first) empty text field (
/<>/
), fills it in with the parameters passed to it (i~=0
), activates the second form element on that line (i2*
) and, once the results page has loaded, skips the initial boilerplate (/<Go secure>/+1,+2
) and prints the first 24 lines of results (z24
).Sure. It could be replaced by a single line, replacing all the form interaction with a simple
b https://duckduckgo.com/?q=~0
, but where would be the !!FUN!! in that?
* This is not completely true, as
edbrowse
will show more long-form error messages, but it's pretty inconsistent with them.
† Iff you have JS enabled in your current session. It can be toggled on and off with thejs
command.
‡ I had no luck with the Tildes buttons (e.g., sidebar toggle, upvote button), though, at least not with the version ofedbrowse
that Debian bundles up.10 votes -
The new Windows Terminal
22 votes -
When setting an environment variable gives you a 40x speedup
15 votes