commandline
- `doggo` - a supercharged DNS client with CLI and web interfacegithub.com GitHub - mr-karan/doggo: :dog: Command-line DNS Client for Humans. Written in Golang
:dog: Command-line DNS Client for Humans. Written in Golang - mr-karan/doggo
I use this tool instead of
dig
andkdig
. - I used hyperfine CLI tool to measure startup and shutdown times of several code interpretersdev.to Measuring startup and shutdown overhead of several code interpreters
I used the hyperfine tool to measure the overhead of startup and shutdown of several code...
A blog post shows an example usage of hyperfine CLI tool to measure and plot time of startup and shutdown of several code interpreters.
- tui-battleship, the classic naval battle game (Bash).
https://gitlab.com/christosangel/tui-battleship
This is a tui implementation of the popular classic naval battle game, written in Bash.
The objective of the game is to destroy the computer's fleet, before the computer achieves the same against you.
You take turns with the computer, hitting squares in each other's grids.
You have to guess the position of the enemy ships on the computer's 10x10 grid, in order to win.
!win
You lose if the computer achieves sinking your ships first.
!lose
- eza (formerly exa, ls replacement) can now show the actual total size of directory contents
I just noticed that
eza
can now display total disk space used by directories!I think this is pretty cool. I wanted it for a long time.
There are other ways to get the information of course. But having it integrated with all the other options for listing directories is fab.
eza
has features like--git
-awareness,--tree
display, clickable--hyperlink
, filetype--icons
and other display, permissions, dates, ownerships, and other stuff. being able to mash everything together in any arbitrary way which is useful is handy. And of course you can--sort=size
docs:
--total-size show the size of a directory as the size of all files and directories inside (unix only)
It also (optionally) color codes the information. Values measures in kb, mb, and gb are clear. Here is a screenshot to show that:
sh eza --long -h --total-size --sort=oldest --no-permissions --no-user
Of course it take a little while to load large directories so you will not want to use by default.
Looks like it was first implemented Oct 2023 with some fixes since then. (Changelog). PR #533 - feat: added recursive directory parser with \
--total-size\
flag by Xemptuous - tui-mines: Sweep mines from a minefield, in the terminal (Bash)
https://gitlab.com/christosangel/tui-mines
tui mines is evidently a text-based user interface implimentation of the classic mine sweeping puzzle game.
The user has to clear a board, square by square, flagging the squares suspected to hide mines on the way.
If the user opens a mine square, things go KABOOM! and the game is lost.
The user uses hints from the numbered squares. This numbers how many bombs are touching that square in every direction ( 8 in total).
Through logic, and a bit of luck, the player ends up clearing all the squares, while flagging all the mines.
- Building Apps Like Nothing Else. A Unique Take on Shell and Python Coding.
YouTube Video
Click to view this content.
https://github.com/dislux-hapfyl/pynksh
Writing functional shell snake code to improve my sanity.
- Rook, a secret service backed by Keepass 4.x kdbx
Howdy Lemmy,
I'm announcing Rook v0.0.9, software that provides a secret service a-la secret-tool, keyring, or pass/gopass, except backed by a Keepass 4.x kdbx file.
The problem Rook solves is mainly in script automation, where you have aerc, offlineimap, isync, vdirsyncer, msmtp, restic, or any other cron jobs that need passwords and which are often configured to fetch these passwords from a secret service with a CLI tool. Unlike existing solutions, Rook is headless and does not have a bespoke secrets database, full of passwords that must be manually synchronized with Keepass; instead, it uses a Keepass db directly.
While the readme goes into more detail, I will say the motivation for Rook evolved from a desire to use a Keepass db in a GUI-less environment and finding no existing solutions. KeepassXC provides a secret service, but is not headless; it also provides a CLI tool, but this requires the db credentials on every call. kpmenu exists, but is designed specifically to require human interaction and is unsuitable for cron environment scripting. Every other solution maintains its own DB back end, incompatible with Keepass.
Rook also benefits from minimal external dependencies, and at 1kloc is auditable by developers - I believe even by ones who do not know Go (the language of implementation). Being able to verify for yourself that there's no malicious code is a critical trait for a tool with which you're trusting secrets.
Rook is fit for purpose, and signed binaries are provided as well as build-from-source instructions (for auditors).
The project contains work in progress: credentials are limited to simple password-locked kdbx, and so doesn't yet support key files. Bash scripts that provide autotyping and attribute/secret selection via rofi, fzf, and xdotool are provided, for GUI environments; these have known bugs. Rook has not been tested on BSD, Darwin, or any other system than Linux, but may well work; the main sticking point is the use of a local file socket for client/server communication, so POSIX systems should be fine, but still, YMMV.
As a final caveat: up until v0.0.9 I've been compressing with brotli, which is very nice yet somewhat obscure. With the next release, everything will be gzipped. Also included in the next release will be packages for various distributions.
- invidtui - An opensource cross-platform Invidious client v0.4.3 is released
Hello Lemmy,
invidtui is a TUI-based Invidious client, which can:
- Search for and browse videos, playlists and channels
- Play audio or video from any instance
- View, open, edit and save m3u8 playlists
- Download video/audio in any format
- Authenticate with the preferred instance, and show user feed, playlists and subscriptions
This release contains the following new features/fixes:
*** Embedded Recommendations tab
Recommendations for the video that is currently being played is now shown in a separate tab within the queue.
A demo and instructions are posted here *** YouTube timestamps
Timestamps found within Youtube URIs are now seeked to on playback.
A demo and instructions are posted here *** Custom seeking
A separate modal is shown to modify the playback position. Positions can be seeked to relatively/absolutely.
A demo and instructions are posted here ***
I hope you enjoy this release, and any feedback is appreciated.
- mass-git-scripts: Bash Scripts for Mass-Cloning & Updating Git Reposgithub.com GitHub - f3rno64/mass-git-scripts: A collection of scripts for working with a few or a large number of git repos at once.
A collection of scripts for working with a few or a large number of git repos at once. - f3rno64/mass-git-scripts
After an unexpected need to reset my work machine 😓, and needing to set up my development environment again by hand 🛠️, I decided to create a solution to quickly restore my local git repositories (and associated folder structure) 🔄.
I took this opportunity to write two bash scripts that clone and update all repositories on GitHub belonging to either a user or an organization 📦.
This means that, for example, with a single command ⌨️, you can clone hundreds or thousands of repositories, with high levels of concurrency (50 clones in parallel is doable 💨).
The scripts allow for a configurable clone depth, a limit for the number of repositories cloned, and a level of concurrency that decides how many clones are run in parallel 📈.
By running the following command:
git-clone-all --owner f3rno64 --limit 200 --jobs 40 --dir ./f3rno64
I was able to clone all 174 personal repositories 📚, with full commit histories and all tags & branches, in 58 seconds ⏱️.
I wrote a blog post describing this in more detail here 📝, check it out for a breakdown of the arguments and examples of usage.
The GitHub repository is f3rno64/mass-git-scripts and the README also includes examples and general usage instructions 🗂️.
Please check it out and let me know what you think! 💬
I hope you find it useful, and any feedback or suggestions for improvement would be greatly appreciated! 🙏
- xmq: Convert xml/html to a more human readable/editable format (xmq/htmq) and back. Can also work with JSON.github.com GitHub - libxmq/xmq: Convert xml/html to a more human readable/editable format (xmq/htmq) and back can also work with json. Includes a syntax highlighter and pretty printer, pager and can render to html and tex.
Convert xml/html to a more human readable/editable format (xmq/htmq) and back can also work with json. Includes a syntax highlighter and pretty printer, pager and can render to html and tex. - libx...
Hello! This is not my project, I just found it today.
Making verbose things more concise and readable makes a big difference to me, and this could be excellent for me when dealing with HTML/XML. Just piping those formats through
xmq
yields a beautiful and clear rendering of the data.And as a NestedText enthusiast, I can now (using additional existing tooling):
- transform HTML -> JSON -> NestedText
- edit NestedText
- transform NestedText -> JSON -> HTML
- Inverting match with grep, unless another term exists
I have a list containing a set of tags, and would like to exclude one tag, unless another tag exists in the line.
Say I have the following list, and want to exclude
B
, unlessA
is present.[A,B] [A,C] [B,C] [A] [B]
I can reverse grep forB
:> grep --invert-match "B" [A,C] [A]
How can I find the previous list, but also the item containing
[A,B]
? - [OC] Smassh your Keyboard, TUI Edition
Smassh is a TUI based typing test application inspired by MonkeyType -- A very popular online web-based typing application
Smassh tries to be a full fledged typing test experience but not missing out on looks and feel! There is a lot of room for improvements/additions and I am open to contributions and suggestions!
Github: https://github.com/kraanzu/smassh
Thank you! <3
- kdotool - an xdotool clone for KDE Wayland
kdotool uses KWin's scripting API to control windows. In each invocation, it generates a KWin script on-the-fly, loads it into KWin, runs it, and then deletes it, using KWin's DBus interface.
This program should work with both KDE 5 and the upcoming KDE 6.
- histat - a simple history stats
I created a very simple script that shows the history usage of your shell. Should work with bash and fish shells.
This basically goes through the history and counts the command names. So all of
git push
,git pull
, etc will count as justgit
.Example output:
847 pacman 296 cd 206 git 203 time 180 vim 172 awk 166 aur 142 strace 141 cat 125 ls Total commands: 7008 Unique commands: 753
- Terminal Trove - The $HOME of all things in the terminal.terminaltrove.com Terminal Trove - The $HOME of all things in the terminal.
Terminal Trove showcases the best of the terminal, Discover a collection of CLI, TUI, and more developer tools at Terminal Trove.
Terminal Trove showcases the best of the terminal, Discover a collection of CLI, TUI, and more developer tools at Terminal Trove.
- Turnip-TV, a tui iptv client (Bash)
https://gitlab.com/christosangel/turnip-tv
turnip-tv is a customizable tui iptv client, written in Bash.
The user can (among other customizations) choose input program between
- read
- fzf
- rofi
- dmenu
--- This script was inspired by and is almost identical with another project called radion, which is a tui internet radio client.
The channel list was found here, and was modified to fit the script's functionality.
- App::Rak - 21st century grep / find / ack / ag / rg on steroids
Note: Raku programming language and a module manager(zef) are required.
- bluetuith - An open source TUI based bluetooth manager v0.1.8 is released
Hello Lemmy,
Bluetuith is a TUI based bluetooth manager for Linux, that aims to be an alternative to most bluetooth managers, and can perform bluetooth based operations like:
-
Connection to and general management of bluetooth devices, with device information like battery percentage, RSSI etc. displayed, if the information is available. More detailed information about a device can be viewed by selecting the 'Info' option in the menu or by clicking the 'i' key.
-
Bluetooth adapter management, with toggleable power, discoverability, pairablilty and scanning modes.
-
Transfer and receive files via the OBEX protocol, with an interactive file picker to choose and select multiple files.
-
Handle both PANU and DUN based networking for each bluetooth device
-
Control media playback on the currently connected device, with a media player popup that displays playback information and controls.
This release contains the following new features:
- New command-line options
--adapter-states
to set adapter properties and--connect-bdaddr
to connect to a device on initialization - Block/unblock devices
- Indefinite passkey/pincode display
- Modifiable navigation keys
- Display the 'Bonded' property for a device
I hope you enjoy this release, and any feedback is appreciated.
-
- Radion, an internet radio CLI client, written in Bash.
cross-posted from: https://lemmy.world/post/7130937
radion is an internet radio CLI client, written in Bash.
https://gitlab.com/christosangel/radion
Radion can be costumized as far as the station selecting program is concerned. The user can choose between:
- read
!read
- fzf
!fzf
- rofi
!rofi
- dmenu
---
Update: Introduced new feature: costumizing prompt text for fzf dmenu and rofi.
Update: Recording functionality added, with the use of another (you guessed it) bash script
!icy
Also options in
read
as Preferred selector are also case insensitive.Any feedback is appreciated!
- Introducing Nushell 0.86
Nushell, or Nu for short, is a new shell that takes a modern, structured approach to your command line. It works seamlessly with the data from your filesystem, operating system, and a growing number of file formats to make it easy to build powerful command line pipelines.
Today, we're releasing version 0.86 of Nu. This release adds fish-like directory completions, type system improvements, our first officially supported uutils command, and much more
- An attempt to make a "oldschool clone" of the dvd logo screensaver. [C code] [CLI]pastebin.com #include #include #include #include
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Nothing too shabby honestly. But there you have it nonetheless. And yep, I used AI for a l"head start". :p
- LADDER: A CLI word puzzle
https://gitlab.com/christosangel/ladder
Ladder is a word puzzle, played in a terminal window.
Your starting point is an initial four-letter word.
Your goal is to transform this word, one letter at a time, through other valid words, and end up with the target word.
The tricky part is that on each entry, you can change ONLY ONE LETTER.
- Barebone arcade Stacker gamegithub.com GitHub - narshee/Stacker-arcade: Stacker arcade game for the terminal
Stacker arcade game for the terminal. Contribute to narshee/Stacker-arcade development by creating an account on GitHub.
Made in a day, it works and I wanted to share it
- UX patterns for CLI toolslucasfcosta.com UX patterns for CLI tools
Most technical people choose GUIs not because GUIs are the best tool for the job. People choose GUIs because the CLI alternatives usually suck.
- tui-sudoku (Bash script)
tui-sudoku is a configurable terminal interface sudoku game, with quite a few features.
https://gitlab.com/christosangel/tui-sudoku
Starting the game, and through the main menu, the player can :
- Start a new game
- Load previously saved game
- Configure some parameters (colors, preferred editor, puzzle symmetry,preffered png)
- exit the program
PLAYING THE GAME
After choosing the
n New Game
option, the player can select the level of difficulty.The user will be presented with the known 9x9 sudoku matrix.
Using the shortcuts in the shown cheatsheet table, the player can
|Shorcuts |Action | |-----|-----| | hjkl 🠄 🠅🠇🠆 | Move Cursor | | [1-9] | Insert Number | |0,␣,␈ |Clear Cell | | E | Earmark cells| |H|Toggle Highlight Numbers| |S|Save Game| |z,Z| Undo / Redo | |M|Return to Main Menu| |Q|Show Solution & Quit|
-
Typing
H
while the cursor is on a number, e.g. 2, will highlight all the 2s in the matrix.Typing
H
again will undo the highlighting:
-Typing
E
and entering up to 3 digits, will earmark the cell:- Entering an illegal number (a number that already exists in the row, the line or the 3x3 block) will mark the number with a different color, and give a warning message:
While the
M
option returns to theMain Menu
, and theS
option saves the game, theQ
option prints the solution and exits:- The user can also Undo or Redo their entries with the
z
orZ
option respectively.
Back in the
Main Menu
, the player can also-
Load a previously saved game with the
l
option -
Configure preferred colors, preferred text editor and puzzle symmetry with the
c
option -
or Browse the Top Ten Scores (
s
option)
The configuration is kept in the
$HOME/.config/tui-sudoku/tui-sudoku.config
file.If there is no file kept there, default values will be loaded.
-
You can select the colors you like and the respective codes as they demonstrated here:
https://talyian.github.io/ansicolors/
Default colors
| Color | Code | Script Variable | |-----|-----|-----| |Grid Color|\x1b[38;5;60m"| C1| |Given Numbers Color |\e[1;33m"|C2| |Found Numbers Color |\e[1;36m"|C3| |Wrong Numbers Color |\e[1;31m"|C4| |Highlight Color |\e[1;32m"|C5| |TextColor1 |\e[35m"|C6| |TextColor1 |\e[36m"|C7|
-
SYMMETRY
variable configures the symmetry of the given cells in the 9x9 matrix. Valid options are: none, rotate90, rotate180, mirror, flip, or random -
PREFFERED_PNG
variable defines the png that shows in the notifications. These images are located in the$HOME/.cache/tui-sudoku/png/
directory.
Any feedback is appreciated!
Any feedback is appreciated!
---
Added feature in 0.2.0: earmarked cells change color when illegal (the number already exists in row, column or 3x3 square)
--- Added feature in 0.3.0: Toggle info (key cheatsheet).
- bgammon.org - Online multiplayer backgammon service (AGPL)
Announcing bgammon.org (online multiplayer backgammon)
I have developed an entirely free and open source multiplayer backgammon service.
You can try it out by visiting https://bgammon.org or by connecting via SSH:
ssh bgammon.org -p 5000
I would very much appreciate help with testing and feedback from anyone who knows how to play backgammon, or is interested in learning. The rules of backgammon are available here:
https://bkgm.com/rules.html
The password prompt is currently non-functional, and private lobbies are not yet available. Otherwise, the service is ready to test out, particularly the accuracy of the backgammon simulation. Because there are no accounts yet, everyone is logged in as a guest.
A terminal-based client is available, and a graphical client is planned. The terminal-based client is available over the web at the link above. This is accomplished by using GoTTY.
Move pieces by dragging them or by clicking a source space and then a destination space. You may make multiple moves by dragging a checker directly to its final destination.
The source code is available here: server & client.
Feel free to contact me directly at trevor@rocket9labs.com with test results and feedback.
- WORDY: A TUI WORD PUZZLE
cross-posted from: https://lemmy.world/post/4793705
https://gitlab.com/christosangel/wordy
Wordy is a word spelling puzzle.
You have 6 guesses to find out the secret 5-letter word.
If a letter appears green, that means that this letter exists in the secret word, and is in the right position.
If a letter appears yellow, that means that this letter exists in the secret word, but is in NOT the right position.
If a letter appears red, that means that this letter does NOT appear in the secret word AT ALL.
There is another project that might interest you:
https://gitlab.com/christosangel/wordle-solver
UPDATES: Play menu became simpler,
show LETTERS
functionality was introduced, some improvements inshow STATS
andshow WORD LIST
. Also, word list file is now configurable. - SPELION: A TUI Spelling Bee Puzzle
Spelion is a word spelling puzzle.
https://gitlab.com/christosangel/spelion
Using just the given 7 letters, you are called to form as many words as possible.
Rules
- The word that you form must include the center letter.
- You don't have to use all the other letters.
- Minimum length of the word that you create is four letters.
- Any given letters can be used more than one time in a word.
- The word list is contained in
/usr/share/dict/words
, minus words with upper-case letters, words with apostrophe and words containing letters with accent marks.
Name
The name SPELION was just a made up word with letters that could form the root spel(l), while at the same time these letters could appear in a (recursive) Spelion puzzle. The name stuck when I found out that by pure chance Spelion was also an anagram of the greek letter epsilon.
- I hope we see more Notcurses apps in the future
Wouldn't it be nice to have, say, a Mastodon TUI that could show images in-line? A lot of terminals are capable of that.
Here is an interesting demo showing 3d rendering in the terminal: https://github.com/MasFlam/notcurses-rend3d
- The case for nushell
If you haven't heard of it before, nutshell is an alternative to bash/zsh: https://github.com/nushell/nushell
- Zellij - a terminal workspace with batteries included
This video has an interview and demo with the creator (the demo starts around 10:38)
- Fully featured YouTube TUI with music player functionalities.
btw linux only, no windows support planned at all, maybe works in macos, not tested im not rich
also uses the invidious api instead of the official one cuz easy
oh sry its youtube-tui https://siriusmart.github.io/youtube-tui/ the image overwrote the url
- InvidTUI: A cross-platform Invidious client v0.3.3 is released
Hello Lemmy,
InvidTUI is a cross platform Invidious client, which can:
- Browse, play and download YouTube audio and video
- Create, save and open m3u8 playlists
- Interactively switch between instances
- Change video and album art resolutions
- View and manage user feed, playlists and subscriptions
Among many other features.
In addition to the above, it also has a menu system, so that users need not remember all the keybindings, and instead select the required option from the menu to perform the desired operation.
This release contains the following new features:
- A HJSON based configuration format, where you can define custom keybindings as well
- Faster JSON parsing, thanks to jsoniter
- Create new folders and rename items within the filebrowser
- Automatically or manually configure the download directory from within the application
- Change thumbnail quality
I hope you enjoy this release, and any feedback is appreciated.
- [TUI] Lazydocker: a lazier way to manage everything Docker | GitHub - jesseduffieldgithub.com GitHub - jesseduffield/lazydocker: The lazier way to manage everything docker
The lazier way to manage everything docker. Contribute to jesseduffield/lazydocker development by creating an account on GitHub.
cross-posted from: https://programming.dev/post/776906
> Related discussion: > - https://news.ycombinator.com/item?id=36778905