avatarNikhil Vemu

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

11424

Abstract

      <div>
          <div>
            <h2>libqrencode</h2>
            <div><h3>Libqrencode is a fast and compact library for encoding data in a QR Code symbol, a kind of 2D symbology that can be…</h3></div>
            <div><p>fukuchi.org</p></div>
          </div>
          <div>
            <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*-TEyi3t38zXUr82f)"></div>
          </div>
        </div>
      </a>
    </div><h1 id="780c">#4. Bartib (Your personal time-tracker)</h1><p id="cb58">Bartib’s your new time-tracking assistant that helps log your activities throughout the day, and generate timesheet reports.</p><h2 id="28e6">Demo (as if you’re already using Bartib)</h2><p id="8612">Let’s say you’re starting a task X from an ‘Important Project’. So you use this command on Terminal:</p><div id="aa0e"><pre>bartib <span class="hljs-keyword">start</span> <span class="hljs-operator">-</span>d "Task X" <span class="hljs-operator">-</span>p "Important Project"</pre></div><p id="0a2d">And Bartib acknowledges: <code>Started activity: "Task X" (Important Project) at 2023-01-08 09:41</code> .</p><p id="e0b0">After few minutes, you wanna go have some coffee. So you stop the task to resume it later:</p><div id="b193"><pre>bartib <span class="hljs-keyword">stop</span></pre></div><p id="504b">You’re back to work:</p><div id="6de7"><pre>bartib <span class="hljs-keyword">continue</span></pre></div><p id="ef15">After few minutes, you realise there’s a more urgent task from another project. So you start it:</p><div id="f354"><pre>bartib <span class="hljs-keyword">start</span> <span class="hljs-operator">-</span>d "Urgent Task Y" <span class="hljs-operator">-</span>p "Another Project"</pre></div><p id="6379">(Note, Bartib automatically stops the current activity as you start another one)</p><p id="e5cd">You’ve finished ‘Urgent Task Y’ and it’s lunch time. And you wanna check all the tasks you’ve worked on since morning:</p><div id="dc40"><pre><span class="hljs-section">foo@bar: ~ $ bartib list --today</span>

Started Stopped Description Project Duration <span class="hljs-section">08:00 08:34 Task X Important Project 34m</span> <span class="hljs-section">08:49 10:01 Task X Important Project 1h 12m</span> <span class="hljs-section">10:15 10:35 Urgent Task Y Another Project 20m</span> <span class="hljs-section">10:35 10:53 Urgent Task X Important Project 18m</span> <span class="hljs-section">10:55 11:25 Simple Task Z Less Important Project 30m</span> <span class="hljs-section">11:35 12:34 Boring Task XY Internal Project 59m</span></pre></div><p id="c907">After lunch, you plan to continue working on ‘Urgent Task Y’. Instead of typing task’s name and description again, you do this:</p><div id="c7fd"><pre>foo@bar: ~ $ bartib last

<span class="hljs-meta"># Description Project </span> [<span class="hljs-meta">3</span>] Urgent Task Y Just Another Project B [<span class="hljs-meta">2</span>] Urgent Task X Important Project
[<span class="hljs-meta">1</span>] Simple Task Z Less Important Project [<span class="hljs-meta">0</span>] Boring Task XY Internal Project C </pre></div><p id="ee7c">Now, you use <code>bartib continue 3</code> to resume with ‘Urgent Task Y’.</p><p id="7cde">It’s been evening, so you stop the current task to leave to home. Here’s the report of your today’s work:</p><div id="0f17"><pre>alice<span class="hljs-variable">@work</span>: <span class="hljs-operator">~</span> $ bartib report <span class="hljs-comment">--today</span>

Important Project................................. <span class="hljs-number">2</span>h <span class="hljs-number">43</span>m Another Task xyz.............................. <span class="hljs-number">15</span>m Important <span class="hljs-keyword">Call</span> <span class="hljs-keyword">with</span> the Client................ <span class="hljs-number">35</span>m Urgent Task X................................. <span class="hljs-number">1</span>h <span class="hljs-number">53</span>m

Internal Project C................................ <span class="hljs-number">4</span>h <span class="hljs-number">30</span>m Another Meeting............................... <span class="hljs-number">45</span>m Boring Task XY................................ <span class="hljs-number">1</span>h <span class="hljs-number">15</span>m Long Meeting <span class="hljs-keyword">with</span> Everyone <span class="hljs-keyword">from</span> the Department <span class="hljs-number">2</span>h <span class="hljs-number">30</span>m

Just Another Project B............................ <span class="hljs-number">45</span>m More Urgent Task Y............................ <span class="hljs-number">45</span>m

Less Important Project............................ <span class="hljs-number">2</span>h <span class="hljs-number">27</span>m Simple Task No. <span class="hljs-number">5.</span>............................ <span class="hljs-number">1</span>h <span class="hljs-number">35</span>m Simple Task Z................................. <span class="hljs-number">52</span>m

Total............................................. <span class="hljs-number">10</span>h <span class="hljs-number">25</span>m</pre></div><p id="286a"><i>AMAZING, right? They’re so neatly organised. Isn’t it such a nifty time tracking tool?</i></p><h2 id="d425">More useful commands:</h2><ul><li>To start or stop an activity at a preset time, use -t HH:MM in the start or stop command.</li><li>To list the last 25 activities, use <code>bartib last -n 25</code> . Without <code>-n 25</code> , it only lists last 10 activities.</li><li>To cancel the current activity and delete its entry completely, use <code>bartib cancel</code> .</li></ul><p id="8929">I’ve just scraped the surface. There’s a lot more you can do with Bartib. Check out its official page to know!</p><p id="5f5c">Install bartib: <code>brew install bartib</code></p><div id="15ed" class="link-block"> <a href="https://github.com/nikolassv/bartib"> <div> <div> <h2>GitHub - nikolassv/bartib: A simple timetracker for the command line. It saves a log of all tracked…</h2> <div><h3>A simple timetracker for the command line. It saves a log of all tracked activities as a plaintext file and allows you…</h3></div> <div><p>github.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*Bb71efrd57J-7jk-)"></div> </div> </div> </a> </div><h1 id="72cb">#5. Calcurse (Your personal time organiser)</h1><p id="310b">Calcurse is the most lightweight Calendar and To-Do app I’ve ever used.</p><p id="0c60">Simply type <code>calcurse</code> and your calendar pops up over the screen — displaying all your appointments and todo items.</p><h2 id="f990">Gif:</h2><figure id="ac06"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*WEO1J6T_lRfSQUvLmu6Xrg.gif"><figcaption>Credit: <a href="https://calcurse.org">calcurse</a></figcaption></figure><p id="6ece">It lets you</p><ul><li>Add calendar events like you normally do — with date, time, description, duration, and repetition.</li><li>Edit, move, or delete your existing appointments — so it’s fully customisable.</li><li>Add todo items with specific priorities and check them off when they’re done.</li></ul><p id="def1">Best part, Calcurse colour-codes calendar dates with appointments, making it easy to find the ones you have every month.</p><p id="7180">All you need to do is to remember (or see and use) the hotkeys required to operate Calcurse.</p><div id="adec" class="link-block"> <a href="https://readmedium.com/10-useful-mac-shortcuts-that-save-you-vital-time-of-your-work-48862634d148"> <div> <div> <h2>10 Useful Mac Shortcuts That Save You Vital Time Of Your Work</h2> <div><h3>If you apply them once, you can’t live without.</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*bmPtSFas9lV6fSbPHELKIQ.jpeg)"></div> </div> </div> </a> </div><p id="3d91">Once you get familiar with them, Calcurse can potentially be your only personal organiser.</p><p id="f3a1">Install calcurse: <code>brew install calcurse</code></p><div id="831a" class="link-block"> <a href="https://calcurse.org/"> <div> <div> <h2>calcurse: a text-based calendar and scheduling application</h2> <div><h3>calcurse is a calendar and scheduling application for the command line. It helps keep track of events, appointments and…</h3></div> <div><p>calcurse.org</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/)"></div> </div> </div> </a> </div><h1 id="4cda">#6. thefuck (Quickly correct mistyped commands)</h1><p id="bd8b">Oh, lemme type a commit message and come back. 1 min.</p><div id="6174"><pre>gti commit -m <span class="hljs-string">"Fixed a bug"</span> zsh: <span class="hljs-built_in">command</span> not found: gti</pre></div><p id="6eac">Oh, fck! I typed gti for git.</p><p id="c268">Do things like these often happen to you? Then instead of shouting “FCK” (like me), type fuck on Terminal.</p><p id="27db">Then you’ll be prompted with a set of correct console commands you might’ve intended to type.</p><p id="a21d">Use ↑/↓ to scroll through the probably correct commands and hit Enter to use it.</p><figure id="522d"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*vcJXRwHXOmt1moDDovCI_Q.jpeg"><figcaption>Image by the author</figcaption></figure><p id="6198"><i>(Ignore the error. I didn’t configure Git, so this occurred.)</i></p><p id="e366">If thefuck weren’t there,</p><ul><li>I’d had to hit ↑ to get the typo-ed command back,</li><li>Navigate to ‘gti’ by repeatedly hitting ←,</li><li>Change ‘gti’ to ‘git’ and then hit Enter 😩</li></ul><p id="33e1">There are about 170 rules preset by thefuck devs. And if you wanna set up your own rules for your most attempted typos, you can do that too.</p><h2 id="67d8">Better demo</h2><figure id="35bc"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*pQ0_4IjuoZyf-yuMyQYGrA.gif"><figcaption>Credit: <a href="https://github.com/nvbn/thefuck">thefuck</a></figcaption></figure><p id="a68b">Instal thefuck: <code>brew install thefuck</code></p><div id="21bd" class="link-block"> <a href="https://github.com/nvbn/thefuck"> <div> <div> <h2>GitHub - nvbn/thefuck: Magnificent app which corrects your previous console command.</h2> <div><h3>Magnificent app which corrects your previous console command. - GitHub - nvbn/thefuck: Magnificent app which corrects…</h3></div> <div><p>github.com</p></div>

Options

      </div>
          <div>
            <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*X_fRkJn7-6cUiQ0s)"></div>
          </div>
        </div>
      </a>
    </div><h1 id="6326">#7. tty-clock (Shows time to let you know it exists)</h1><figure id="497a"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*KYwp8m5QmnMasOAXjB2rtg.jpeg"><figcaption>Image by the author</figcaption></figure><p id="7610">As you type <code>tty-clock</code>, it displays the current time in a green bold font. That’s almost what tty-clock could do.</p><p id="6c6c">But why do I say this is so useful?</p><p id="58b4">Non-programmers don’t understand this.

But I, as a savvy coder, spend a fair share of my day on macOS Terminal. It’s so addictive I often lose track of my time while exploring new console commands and <a href="https://nikhilvemu.medium.com/list/amazing-homebrew-tools-b6ecb7545a97">HB tools</a>.</p><p id="9f96">I lately got my eureka moment.</p><p id="860c">I’m now using tmux to separate my Terminal into panes and am using tty-clock in the cornermost pane to keep track of time. Like this →</p><figure id="b994"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*LhP0zfZJNxPzAflH4x4sgw.jpeg"><figcaption>Image by the author</figcaption></figure><p id="270e">(Find <b>tmux</b> in <b><i>#2</i></b> of this article →</p><div id="467d" class="link-block"> <a href="https://readmedium.com/7-hot-homebrew-tools-for-mac-that-feel-like-superpowers-5a136e81f177"> <div> <div> <h2>7 Hot HomeBrew Tools for Mac That Feel Like Superpowers</h2> <div><h3>No-UI tools for minimalist Mac users</h3></div> <div><p>medium.com)</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*bGlmkryn4Yek4hmwDWKHDg.jpeg)"></div> </div> </div> </a> </div><p id="6f00">Productivity++ Time consciousness++</p><h2 id="4640">Also, you could</h2><ul><li>Enable seconds: <code>-s</code></li><li>Enable 12h format: <code>-t</code></li><li>Use UTC time: <code>-u</code></li><li>Set date format: <code>-f format</code></li><li>Hide date: <code>-D</code></li><li>Enable blinking colon: <code>-B</code></li></ul><p id="3e9f">Install tty-clock: <code>brew install tty-clock</code></p><div id="f7aa" class="link-block"> <a href="https://github.com/xorg62/tty-clock"> <div> <div> <h2>GitHub - xorg62/tty-clock: Clock using lib ncurses</h2> <div><h3>Clock using lib ncurses. Contribute to xorg62/tty-clock development by creating an account on GitHub.</h3></div> <div><p>github.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*et5WZjuu2NcDEZGS)"></div> </div> </div> </a> </div><h1 id="783b">#8. xtitle (Distinguishes various Terminal windows)</h1><p id="f2ca">I know. I know. Not everybody likes tmux.</p><p id="4794">Some people prefer using different standalone Terminal windows for separate activities.</p><p id="e04b">Like</p><ul><li>one for <b>gaming</b>,</li></ul><div id="87cb" class="link-block"> <a href="https://readmedium.com/bored-these-9-quick-games-on-macos-terminal-will-change-that-8bdccab61cac"> <div> <div> <h2>9 Quick Games on macOS Terminal That Will Assassinate Your Boredom</h2> <div><h3>Terminal has a fun side too</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*PR8RkCqSs0AiPtWyEPB99Q.jpeg)"></div> </div> </div> </a> </div><ul><li>one for programming,</li><li>one for personal</li></ul><p id="995b">etc.</p><p id="97f1">If you’re one of such people, you’ll appreciate this little Homebrew tool — xtitle.</p><p id="b0f2">Why?</p><p id="c413">It lets you distinguish between different Terminal windows and makes it quicker to get to your preferred window on Mission Control.</p><p id="b09f">For example, here’s how my Terminals appear</p><h2 id="5abc">without xtitle distinguish-ment:</h2><figure id="608f"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*sYyQZO3olXgLFhhsQM3btw.jpeg"><figcaption>Image by the author</figcaption></figure><p id="31bc">(All the windows have the same title, making it difficult to identify each one unless there’s any visual difference based on their content.)</p><h2 id="f12d">with xtitle distinguish-ment:</h2><figure id="24ce"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*UNuuNvjzYGjbrUIHnvn_Yw.jpeg"><figcaption>Image by the author</figcaption></figure><p id="1671">See, I’ve changed their titles to Personal, Programming, and Gaming respectively.</p><p id="479e">If you wanna make sub-sections for the windows, you can change their icons. (Not literally their icon. It’s still text)</p><h2 id="7540">Demo</h2><p id="4974">Let’s say you’re playing <a href="https://readmedium.com/bored-these-9-quick-games-on-macos-terminal-will-change-that-8bdccab61cac#248e">Pac-Man</a> on Terminal. To dedicate that window to gaming, you use <code>xtitle -t gaming</code> .</p><p id="131d">Now the window’s title changes to:</p><figure id="e49e"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*jDsULF6z9X9F9mJSvEk0yQ.jpeg"><figcaption>Image by the author</figcaption></figure><p id="9f94">Now you’re sick of <a href="https://readmedium.com/bored-these-9-quick-games-on-macos-terminal-will-change-that-8bdccab61cac#248e">Pac-Man</a> and wanna play <a href="https://readmedium.com/bored-these-9-quick-games-on-macos-terminal-will-change-that-8bdccab61cac#23f6">Space Invaders</a> on another gaming window for a while. But then, how’d you distinguish between them two?</p><p id="a8a1">Simple! Change their icons.</p><p id="fdbc">Change the first window’s icon to pacman using <code>xtitle -i pacman</code> :</p><figure id="01b8"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*CxARua0dM8hvEZYU4Cnpig.jpeg"><figcaption>Image by the author</figcaption></figure><p id="03c7">Create another window for spaceinvaders and type <code>xtitle -t gaming; xtitle -i spaceinvaders</code> :</p><figure id="ec77"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*a6GW3JjSAgTTGWmAqgaKOg.jpeg"><figcaption>Image by the author</figcaption></figure><p id="19cc">Now both their titles are the same. And it’s the game that distinguishes them both.</p><p id="e35d"><i>Happy gaming!</i></p><p id="6daf">Install xtitle: <code>brew install xtitle</code></p><div id="4f20" class="link-block"> <a href="https://kinzler.com/me/xtitle/"> <div> <div> <h2>xtitle</h2> <div><h3>Web site for the xtitle software, which sets X11 terminal titles.</h3></div> <div><p>kinzler.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/)"></div> </div> </div> </a> </div><h1 id="ce26">#9. tmate (Live-telecast your Terminal activity)</h1><p id="ab8d">Let’s confess. You’re already loving the above 8 Homebrew tools, right?</p><p id="ae86">If so, you might wanna show your remote friends how they work. But how?</p><p id="ec27"><b>tmate</b>! It lets you share your Terminal activity <i>live</i> over the internet via a shareable link.</p><p id="a951">Simply type <code>tmate</code> , and you’ll see these links to share your Terminal activity via web or ssh and give read-only or write-access:</p><div id="a413"><pre>Connecting to ssh.tmate.<span class="hljs-built_in">io</span>... Note: clear your terminal before sharing readonly access web session <span class="hljs-built_in">read</span> only: https://tmate.<span class="hljs-built_in">io</span>/t/xx-XXxXXxXxxXxXXxXXXx0xxxXxX ssh session <span class="hljs-built_in">read</span> only: ssh [email protected].<span class="hljs-built_in">io</span> web session: https://tmate.<span class="hljs-built_in">io</span>/t/<span class="hljs-number">0</span>xxXxXxXxXXXX0Xxx00Xxxx0x ssh session: ssh <span class="hljs-number">0</span>[email protected].<span class="hljs-built_in">io</span></pre></div><ul><li>If it’s read-only, your friend can only see what you’re doing on your Terminal.</li><li>If it’s write-access, your friend can even control it — i.e., you can both collaborate on one Terminal!</li></ul><p id="6702">After sharing the link, hit <code>Q</code> to start your Terminal activity. (Note, the links are unique for every new session)</p><p id="f0f4">This (tmate) way is better than screen-sharing or Remote Desktop coz it uses very less internet bandwidth.</p><p id="2b7b">Install tmate: <code>brew install tmate</code></p><div id="4c47" class="link-block"> <a href="https://tmate.io/"> <div> <div> <h2>tmate</h2> <div><h3>Warning: this information is outdated. A more up to date technical draft can be found here [PDF], but is still…</h3></div> <div><p>tmate.io</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*qONpVO-eUWzz5gQn)"></div> </div> </div> </a> </div><h2 id="644f">For more a’macOS’zing Terminal commands, read these</h2><div id="cb72" class="link-block"> <a href="https://nikhilvemu.medium.com/list/890c0ead4adf"> <div> <div> <h2>Useful Mac Terminal Tricks</h2> <div><h3>Save this list to get notified everytime a new story is added!</h3></div> <div><p>nikhilvemu.medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*e83684381633c29a01ca3f27e165ce6d65483c57.jpeg)"></div> </div> </div> </a> </div><p id="4ad1"><b><i>For only Homebrew tools, <a href="https://nikhilvemu.medium.com/list/amazing-homebrew-tools-b6ecb7545a97">read these</a>.</i></b></p><p id="7e47"><i>Join <b>390+</b> others to <a href="https://nikhilvemu.medium.com/subscribe"><b>get notified</b></a> whenever I publish a new story.</i></p><div id="70e4" class="link-block"> <a href="https://nikhilvemu.medium.com/membership"> <div> <div> <h2>Join Medium with my referral link — Nikhil Vemu</h2> <div><h3>As a Medium member, a portion of your membership fee goes to writers you read, and you get full access to every story…</h3></div> <div><p>nikhilvemu.medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*l3bgY7rvxLwLkdLX)"></div> </div> </div> </a> </div></article></body>

I Can’t Explain How Useful These 9 Mac HomeBrew Tools Are

Tiny UI-less tools for your rescue

Created by DALL-E

Contents

1 — Mailsy (Creates temp emails) 2 — ata (ChatGPT client) 3 — qrencode (Creates QR codes) 4 — Bartib (Time-tracker tool) 5 — Calcurse (Time organiser) 6 — thefuck (Corrects typoes) 7 — tty-clock (Shows time) 8 — xtitle (Identifies Terminals) 9 — tmate (Telecasts Terminal activity)

#1. Mailsy (Instantly generates disposable emails)

Mailsy is the quickest disposable email generator (DEG) I’ve ever used.

In fact, I’ve also used apps like Tempbox before as DEGs (#1 of this article → ),

but that felt a bit heavy coz it’s got a UI.

On flip-side, Mailsy’s a UI-less Homebrew tool so it’s quicker and lightweight-er.

How to use

  • To generate a new email: mailsy g
foo@bar:~$ mailsy g
Account created: 7o8ptb@internetkeno.com
  • To fetch received messages: mailsy m
foo@bar:~$ mailsy m
? Select an email (Use arrow keys)
❯ 1. Hello, World! - from nikhilvemu@gmail.com
  2. Mailsy - from nikhilvemu@gmail.com

Hit return on a message, and its body will be displayed in your default browser.

  • To delete an account: mailsy d
foo@bar:~$ mailsy d
Account deleted
  • To view details of the account: mailsy me
foo@bar:~$ mailsy me

 Email: 7[email protected]
 createdAt: 6/5/2023, 9:09:05 AM

How cool! But there are some

Drawbacks

Unlike Apple’s Hide My Email,

  • You can only receive messages to the email. You can’t send.
  • Incoming messages can’t be chosen to be forwarded to your own email.
  • You can’t own multiple disposable emails at once. You’ve got to delete one before you’d generate another.

Install mailsy: brew install mailsy

#2. ata (ask the terminal anything)

I’ve already written about a Homebrew ChatGPT client — aichat:

ata is yet another ChatGPT client for Homebrew.

As you first run it, it asks you to fill its config file with your API key, GPT model, max tokens, and temperature. Next,

To run it, use ata and it’s ready to hear your prompt.

Credit: rikh via Asciinema

To abort a response midway, use ⌃ + C. To quit ata, use it again.

ata’s way handier than web ChatGPT for simple one-off prompts. If you prefer conversations with ChatGPT and not one-off prompts, ata isn’t for you. Use aichat.

Install ata: brew install ata

#3. qrencode (Create QR codes instantly)

I wish QR Code generator were a native macOS app.

(“Who would use it?” “Do you use Colour Picker?”)

Coz finding web tools and creating QR codes online is a tedious job. There aren’t any popular offline tools for it too.

But that’s until now. We’ve got qrencode!

After you install it, to create a QR code that encodes the text “Hello World”, use qrencode -t ansiutf8 "Hello World"

Image by the author

See? You’ve got the QR code directly on Terminal! How impressive!

How to save them as images?

Don’t take screenshots. Do this.

If you want a QR code (code.png) that encodes “Hello World”, use qrencode -o code.png "Hello World" — and the file will be created in the directory.

To generate a QR code for contents of a text file, use qrencode -o output_file.png -r input_file.txt .

Bonus: Create Wi-Fi QR Code

If you have a long Wi-Fi password and are sick of repeating it to everyone who visits your house, try this.

Create a QR Code in the format: WIFI:T:<auth_type>;S:<SSID>;P:<password>;; , where:

  • <auth_type> : WPA, WPA2, WEP, or nopass
  • <SSID> : Your Wi-Fi name
  • <password> : Your Wi-Fi password

Example: WIFI:T:WPA2;S:MyNetwork;P:MyPassword123;;

Image by the author

If you own a coffee shop, stick this on a wall. Anyone who scans this code will instantly connect to your network :)

Install qrencode: brew install qrencode

#4. Bartib (Your personal time-tracker)

Bartib’s your new time-tracking assistant that helps log your activities throughout the day, and generate timesheet reports.

Demo (as if you’re already using Bartib)

Let’s say you’re starting a task X from an ‘Important Project’. So you use this command on Terminal:

bartib start -d "Task X" -p "Important Project"

And Bartib acknowledges: Started activity: "Task X" (Important Project) at 2023-01-08 09:41 .

After few minutes, you wanna go have some coffee. So you stop the task to resume it later:

bartib stop

You’re back to work:

bartib continue

After few minutes, you realise there’s a more urgent task from another project. So you start it:

bartib start -d "Urgent Task Y" -p "Another Project"

(Note, Bartib automatically stops the current activity as you start another one)

You’ve finished ‘Urgent Task Y’ and it’s lunch time. And you wanna check all the tasks you’ve worked on since morning:

foo@bar: ~ $ bartib list --today

Started Stopped Description        Project                Duration
08:00   08:34   Task X             Important Project         34m
08:49   10:01   Task X             Important Project      1h 12m
10:15   10:35   Urgent Task Y      Another Project           20m
10:35   10:53   Urgent Task X      Important Project         18m
10:55   11:25   Simple Task Z      Less Important Project    30m
11:35   12:34   Boring Task XY     Internal Project          59m

After lunch, you plan to continue working on ‘Urgent Task Y’. Instead of typing task’s name and description again, you do this:

foo@bar: ~ $ bartib last

 #  Description        Project                
[3] Urgent Task Y      Just Another Project B 
[2] Urgent Task X      Important Project      
[1] Simple Task Z      Less Important Project 
[0] Boring Task XY     Internal Project C 

Now, you use bartib continue 3 to resume with ‘Urgent Task Y’.

It’s been evening, so you stop the current task to leave to home. Here’s the report of your today’s work:

alice@work: ~ $ bartib report --today

Important Project.................................  2h 43m
    Another Task xyz..............................     15m
    Important Call with the Client................     35m
    Urgent Task X.................................  1h 53m

Internal Project C................................  4h 30m
    Another Meeting...............................     45m
    Boring Task XY................................  1h 15m
    Long Meeting with Everyone from the Department  2h 30m

Just Another Project B............................     45m
    More Urgent Task Y............................     45m

Less Important Project............................  2h 27m
    Simple Task No. 5.............................  1h 35m
    Simple Task Z.................................     52m

Total............................................. 10h 25m

AMAZING, right? They’re so neatly organised. Isn’t it such a nifty time tracking tool?

More useful commands:

  • To start or stop an activity at a preset time, use -t HH:MM in the start or stop command.
  • To list the last 25 activities, use bartib last -n 25 . Without -n 25 , it only lists last 10 activities.
  • To cancel the current activity and delete its entry completely, use bartib cancel .

I’ve just scraped the surface. There’s a lot more you can do with Bartib. Check out its official page to know!

Install bartib: brew install bartib

#5. Calcurse (Your personal time organiser)

Calcurse is the most lightweight Calendar and To-Do app I’ve ever used.

Simply type calcurse and your calendar pops up over the screen — displaying all your appointments and todo items.

Gif:

Credit: calcurse

It lets you

  • Add calendar events like you normally do — with date, time, description, duration, and repetition.
  • Edit, move, or delete your existing appointments — so it’s fully customisable.
  • Add todo items with specific priorities and check them off when they’re done.

Best part, Calcurse colour-codes calendar dates with appointments, making it easy to find the ones you have every month.

All you need to do is to remember (or see and use) the hotkeys required to operate Calcurse.

Once you get familiar with them, Calcurse can potentially be your only personal organiser.

Install calcurse: brew install calcurse

#6. thefuck (Quickly correct mistyped commands)

Oh, lemme type a commit message and come back. 1 min.

gti commit -m "Fixed a bug"
zsh: command not found: gti

Oh, f*ck! I typed gti for git.

Do things like these often happen to you? Then instead of shouting “F*CK” (like me), type fuck on Terminal.

Then you’ll be prompted with a set of correct console commands you might’ve intended to type.

Use ↑/↓ to scroll through the probably correct commands and hit Enter to use it.

Image by the author

(Ignore the error. I didn’t configure Git, so this occurred.)

If thefuck weren’t there,

  • I’d had to hit ↑ to get the typo-ed command back,
  • Navigate to ‘gti’ by repeatedly hitting ←,
  • Change ‘gti’ to ‘git’ and then hit Enter 😩

There are about 170 rules preset by thefuck devs. And if you wanna set up your own rules for your most attempted typos, you can do that too.

Better demo

Credit: thefuck

Instal thefuck: brew install thefuck

#7. tty-clock (Shows time to let you know it exists)

Image by the author

As you type tty-clock, it displays the current time in a green bold font. That’s almost what tty-clock could do.

But why do I say this is so useful?

Non-programmers don’t understand this. But I, as a savvy coder, spend a fair share of my day on macOS Terminal. It’s so addictive I often lose track of my time while exploring new console commands and HB tools.

I lately got my eureka moment.

I’m now using tmux to separate my Terminal into panes and am using tty-clock in the cornermost pane to keep track of time. Like this →

Image by the author

(Find tmux in #2 of this article →

Productivity++ Time consciousness++

Also, you could

  • Enable seconds: -s
  • Enable 12h format: -t
  • Use UTC time: -u
  • Set date format: -f format
  • Hide date: -D
  • Enable blinking colon: -B

Install tty-clock: brew install tty-clock

#8. xtitle (Distinguishes various Terminal windows)

I know. I know. Not everybody likes tmux.

Some people prefer using different standalone Terminal windows for separate activities.

Like

  • one for gaming,
  • one for programming,
  • one for personal

etc.

If you’re one of such people, you’ll appreciate this little Homebrew tool — xtitle.

Why?

It lets you distinguish between different Terminal windows and makes it quicker to get to your preferred window on Mission Control.

For example, here’s how my Terminals appear

without xtitle distinguish-ment:

Image by the author

(All the windows have the same title, making it difficult to identify each one unless there’s any visual difference based on their content.)

with xtitle distinguish-ment:

Image by the author

See, I’ve changed their titles to Personal, Programming, and Gaming respectively.

If you wanna make sub-sections for the windows, you can change their icons. (Not literally their icon. It’s still text)

Demo

Let’s say you’re playing Pac-Man on Terminal. To dedicate that window to gaming, you use xtitle -t gaming .

Now the window’s title changes to:

Image by the author

Now you’re sick of Pac-Man and wanna play Space Invaders on another gaming window for a while. But then, how’d you distinguish between them two?

Simple! Change their icons.

Change the first window’s icon to pacman using xtitle -i pacman :

Image by the author

Create another window for spaceinvaders and type xtitle -t gaming; xtitle -i spaceinvaders :

Image by the author

Now both their titles are the same. And it’s the game that distinguishes them both.

Happy gaming!

Install xtitle: brew install xtitle

#9. tmate (Live-telecast your Terminal activity)

Let’s confess. You’re already loving the above 8 Homebrew tools, right?

If so, you might wanna show your remote friends how they work. But how?

tmate! It lets you share your Terminal activity live over the internet via a shareable link.

Simply type tmate , and you’ll see these links to share your Terminal activity via web or ssh and give read-only or write-access:

Connecting to ssh.tmate.io...
Note: clear your terminal before sharing readonly access
web session read only: https://tmate.io/t/xx-XXxXXxXxxXxXXxXXXx0xxxXxX
ssh session read only: ssh [email protected].io
web session: https://tmate.io/t/0xxXxXxXxXXXX0Xxx00Xxxx0x
ssh session: ssh 0[email protected].io
  • If it’s read-only, your friend can only see what you’re doing on your Terminal.
  • If it’s write-access, your friend can even control it — i.e., you can both collaborate on one Terminal!

After sharing the link, hit Q to start your Terminal activity. (Note, the links are unique for every new session)

This (tmate) way is better than screen-sharing or Remote Desktop coz it uses very less internet bandwidth.

Install tmate: brew install tmate

For more a’macOS’zing Terminal commands, read these

For only Homebrew tools, read these.

Join 390+ others to get notified whenever I publish a new story.

Technology
Apple
Mac
Terminal
Programming
Recommended from ReadMedium