A macOS CLI to configure multi-display arrangements
Run displayplacer list
to print your current layout’s args so you can create profiles for scripting/hotkeys with Automator, BetterTouchTool, etc.
Run displayplacer list
to print your current layout’s args so you can create profiles for scripting/hotkeys with Automator, BetterTouchTool, etc.
Built with Ruby and powered by UnicodePlot
npm install -g easy-sharing
sharing /directory-or-file-to-share
It’s Hacktoberfest again, but you don’t know where to find interesting projects? This CLI will help you find participating projects based on your starred repositories. Simply run:
npx hacktoberfest-hunt
This is cool because portability. But also because you can embed it as a library in your Go projects. It’s not identical to jq
in practice, though. Here’s a long list of differences between the two.
If Nix seems too daunting, this might just be a great way to reap one of its benefits without getting lost in its complexity.
Devbox is a command-line tool that lets you easily create isolated shells and containers. You start by defining the list of packages required by your development environment, and devbox uses that definition to create an isolated environment just for your application.
Remember The Changelog #481 - Making the command line glamorous?
You can now make your shell scripts glamorous too. No Go required, just pure shell.
John Goerzen built a computer for his 3yo, installed Debian on it, and set up a GUI for it.
The looks of shock I get from people when I explain, as if it’s perfectly natural, that my child has been able to log in by himself to a Linux shell since age 3, are amusing and astounding. Especially considering that it is really not that hard.
It’s not that hard, but it is so foreign to people that they’re quickly impressed by such things. Still, John decided to introduce his kids to a GUI eventually:
Jacob mastered the basics of xmonad really quickly. Alt-Shift-C to close a window. Alt-Shift-Q to quit back to the “big black screen”. Alt-Shift-Enter to get a terminal window.
We launched thunar (the XFCE file manager) and plugged in his camera. He had a good deal of fun looking at photos and videos from it. But then I dropped the true highlight of the day for him: I offered to install Tuxpaint for him. That’s probably his favorite program of all time.
Nick Nisi shared this with me recently and it’s cool, so I thought I’d pass it along. Here’s Nick describing it:
And it is a visual wrapper around
jq
, that kind of does thefzf
type thing where as you’re writing out your query, it’s live showing you a preview in virtual text of exactly what would get returned by what you’re querying as you go. So you can use that as a nice tool to build out yourjq
syntax, or yourjq
query, and in real time get that feedback.
The only bummer is that it’s written in Ruby. Don’t get me wrong, I love Ruby. But it requires you to have Ruby tooling on your machine to use jqq
, which many people don’t have or want. BUT it’s a mere 241 lines of code, so porting it to something a little more portable shouldn’t be too much work…
Install via gh extension install dlvhdr/gh-dash
. Customize ~/.config/gh-dash/config.yml
.
SQLite and Python strike me as particularly complementary tools.
This is just one of Charm’s various open source CLI projects.
OpenDrop is a command-line tool that allows sharing files between devices directly over Wi-Fi. Its unique feature is that it is protocol-compatible with Apple AirDrop which allows to share files with Apple devices running iOS and macOS.
Super cool, but with a disclaimer: this is the result of reverse engineering the transfer protocol, so the odds of it being flakey (especially as Apple ships OS updates) are high. It’d be rad if Apple would publish an AirDrop-compatible specification for the community to rally around.
You know, like they did with FaceTime. 😉
There are a lot of HTTP client tools out there. This one is neat because of its simple/repeatable plain text API that I’d imagine works great for writing integration tests.
# Get home:
GET https://example.net
HTTP/1.1 200
[Captures]
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"
# Do login!
POST https://example.net/login?user=toto&password=1234
X-CSRF-TOKEN: {{csrf_token}}
HTTP/1.1 302
Datree is a CLI tool that supports Kubernetes admins in their roles, by preventing developers from making errors in Kubernetes configurations that can cause clusters to fail in production. Our CLI tool is open source, enabling it to be supported by the Kubernetes community.
It’s far more effective than manual processes, such as sending an email to a slew of developers, begging them to set various limits, which likely falls on deaf ears because developers are already overwhelmed.
In addition the CIL, Datree provides a web app interface which you can see in action right here.
Nice is a highly customizable and lightweight framework for crafting CLI apps.
Nice respects idiomatic Go code and focuses to be clear, efficient and easy to write and maintain.
You can use it as a full-featured non-opinionated framework or use any nice packages as stand-alone libraries.
I’m a big fan of the similar projects section in the README. Classy!
Ars Technica gave some of our favorite command-line tools the deep-dive they deserve:
Instead of giving you encyclopedic listings of every possible argument and use case for each of these ubiquitous commands, we’re going to teach you how to think about them—and how to easily, productively incorporate them in your own daily command-line use.
This is a solid primer on the usefulness of jq
(a lightweight, command-line JSON processor.)
In this article, I’m going to go over the basics building blocks of jq in enough depth that you will be able to understand how jq works. Of course, you still might occasionally need to head to google to find a function name or check your syntax, but at least you’ll have a firm grounding in the basics.
This one is for Jerod since he’s such a Nick Miller fan 🤣
Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON
This comment on HN does a great job summarizing Bashly.
…think of this as an argparse equivalent for Bash. You provide a YAML file listing commands, subcommands, arguments, and flags, and it automatically generates a Bash script that can parse and validate them, provide help messages, and run your code for each command.
It also lets you keep the actual code for each command and subcommand in separate files, which are merged together into one distributable Bash script at generation time. It’s basically a templating system to auto-generate argument parsing so you don’t have to solve that again or deal with things like
optparse
.
Brett Cannon:
… over 3 years ago I set out to re-implement the Python Launcher for Unix in Rust. On July 24, 2021, I launched 1.0.0 of the Python Launcher for Unix… This gives you a
py
command on Unix which will always use the newest version of Python.
He goes on to describe some workflow niceties that a built in and also what this project is not about:
The Launcher is purely a convenience and not meant to be The Launcher For All Things; this should never end up in a Docker container.
Nick told us about this on our modern Unix tooling episode, but I thought I’d link up his excellent writeup/video on the subject for those who had a hard time following with audio only.
Let’s say you have an nginx or Kubernetes config file which doesn’t support templating out of the box and you want to dynamically create config files based on 1 or more environment variables. This is what
envsubst
lets you do.
This week we’re talking with Nick Janetakis about modern unix tools, and the various commands, tooling, and ways we use the commmand line. Do you Bash or Zsh? Do you use cat
or bat
? What about man
vs tldr
? Today’s show is a deep dive into unix tools you know and love, or should know and maybe love.
Angle-grinder allows you to parse, aggregate, sum, average, min/max, percentile, and sort your data. You can see it, live-updating, in your terminal. Angle grinder is designed for when, for whatever reason, you don’t have your data in graphite/honeycomb/kibana/sumologic/splunk/etc. but still want to be able to do sophisticated analytics.
Angle grinder can process well above 1M rows per second (simple pipelines as high as 5M), so it’s usable for fairly meaty aggregation. The results will live update in your terminal as data is processed. Angle grinder is a bare bones functional programming language coupled with a pretty terminal UI.
I’m not gonna lie, they had me with the name on this one.
Difftastic is an experimental structured diff tool that compares files based on their syntax. It is very much unfinished. It works reasonably on very parenthesised data (lisps, JSON), it works sometimes on other languages with sufficient parentheses (Rust, JS), and falls back to a line-oriented diff otherwise.