Run, Developer, Run!

Better Notify OSD Alternative

Notification OSD Alternative

Ubuntu's Notify OSD was great idea, most of functionality unfortunately wasn't implemented. It seems will never be completed.

If you are still using Notify OSD it that and replace with with Dunst.

Dunst advantages over Notify OSD:

  • Can show more than one message ⚠
  • Minimalistic
  • Highly configurable
  • Message stacking
  • Group duplicated messages
  • Close messages on click
  • Notifications with critical urgency (notify-send -u critical test), don't dissapear automaticaly and will be only closed on click
  • idle_timeout so you don't miss notification if you are not near computer
  • Custom rules for certain applications
  • History
  • Supports urls
  • Works fine in multiple monitor configuration

See sample config.

Read More →

System Wide Snippet Expansion Ubuntu

Unicode symbols (like x ) look nice, and we should use them more often. But typing them is not fun at all. Either you need to remember long numeric codes or take hands from keyboard to do multiple mouse clicks. Ligatures have right idea that -> should be converted to , +- to ± etc, but whats the point of it, if only selected apps with rare font are able to show them?

On another topic, I hate to type long words like "unfortunately" and "successful" and always make mistakes in them. So I want to autocomplete them. And expand frequently used phrases like "Thank you".

So I suggest you to use global snippets which will work in any app like Slack, Sublime Text, Intellij Idea, Browser input fields e.t.c. As bonus script to do that is very minimalistic - it relies on simulating keyboard shortcuts to select, cut and paste text. Original idea by sessy, my version is heavily modified and have number of improvements.

Works like this:

  • Type ->, press hotkey, get .
  • Type 15eur, press hotkey, get 15€.
  • Type unf, press hotkey, get unfortunately.
  • Type thx, press hotkey, get Thank you.
  • ...

Read instalation, and add your own snippets:

Source on Github

Sublime Text Python Tips

Python 3 print autocompletion

Working with both Python 3 and Python 2.7 in Sublime? Can't make yourself used to type print with brackets? Put this simple snippet in your Sublime Text User Package directory. It will autocomplete print statement with brackets.

Bonus tip for Linux users. Tired to switch build system from Python to Python 3 and back? Just want to Sublime Text use shebang/hashbang when running Build (F7) command? I.e:

  • If your file starts with #!/usr/bin/python3 use Python3
  • If your file starts with #!/usr/bin/python use Python
  • If your file starts with #!/usr/bin/env python use default Python version
  • If your file starts with #!/bin/bash or perl e.t.c., run file defined app..

Put this simple build system in your Sublime Text User Package directory, then select Tools → Build System → Run, and you will have universal runner based on file first line.

Designer tip

Nice looking color scheme

So you are programmer and not designer, but need to highlight something by using different colors? Create scheme, graph or some kind of drawing? Please don't use bold default colors like RED #FF0000 GREEN #00FF00 and BLUE #0000FF, or your creation will look like something from nineties.

Just go to COLOURlovers Top where people with taste and free time created and evaluated color palettes, that just look nice. If you need more colors use Adobe Color wheel to find colors that match. Its quick and simple, but your work will instantly look stylish and professional.

Booting Ubuntu from USB External Drive on Macbook Air

Macbook Air Ubuntu

So I have that tiny USB 3.0 bootable 32GB drive, where I have copied (using dd) Ubuntu instalation from my workstation. It's very convenient to have it, as I can boot from it on any machine (even inside VirtualBox), and instantly get my familiar working environment1.

Story is,that recently I've tried this trick with Macbook Air, and was very disappointed - despite as Ive holded button firmly during boot, my awesome USB wasn't detected.

Thing is that my Ubuntu installation had BIOS boot mode, but Macbooks only support EFI boot.

If you Google that problem, you will find extremely complex solutions.

Here's much more simple one, which will not require any modifications in your Ubuntu installation, and it will still be bootable on computers without EFI support.

Read More →

Simple Hackable Pomodoro Timer

Pomodoro Timer Slack Status and Do Not Disturb

There are tons Pomodoro timers out there. But they are either not customizable, or have "Enterprise Architecture" with multiple methods and calls in the source code, making it complicated to quickly make changes. What if want to quickly customize timer for yourself?

You may want to:

  • Score Habitica habits on completed or canceled Pomodoros
  • Set Slack to "do not disturb" mode while Pomodoro is running
  • Set Tomato Emoji as Slack status, so your colleagues get that you are "trying to concentrate"
  • Update Beeminder to match goal of completing n Pomodoros per day
  • Change color to match your favorite breed of tomato
  • ...

So I've created one more Pomodoro timer. Less than 50 lines of *very simple cross-platform1 Python script. By default, it displays "always on top" window with a timer in window and title.

Source on Github

The code has no options, as its self-explanatory and intended to be hacked and modified to fit your specific vision of how Pomodoro timers should work. Read More →

Proper way to create alert box in Markdown

Sometimes, especially when writing documentation, you might want to put text in a nice colored box. To highlight info, notes, warnings, alerts etc. Like this:

Markdown colored alert box

The problem here is that there no such tag in markdown. So your only option is to use html or macros. As markdown is not processed inside html tags and following code:

<div class="note">       
    **NOTE**: Source [here](//developer.run)
</div>

Will look like this:

Markdown warning

So you either need to make all text inside warning box html (which is ugly and inconsistent) or look for a better solution. Read More →

whereami

If you wake up from amnesia, and found yourself near computer, first thing you need to type is whoami. After that, you probaly want to type history to recall whats happened. Third logical question would be whereami, but unfortunatelly command does not exist by default. So prepare yourself to sudden amnesia now, and add to your aliases:

alias whereami='curl ifconfig.co/json'

It will show your ip and location. Also useful to check which VPN are you using.

More Bash and Fish goodness.

Adding ToDos to Wunderlist via Fish Command line

(With human readable dates and autocompletion!)

Wunderlist is good GUI tool when you need todo organization, sharing and access from multiple devices. But for speed I want to add todos via command line, and allow scripts to do that for me.

If you Google "Wunderlist CLI", you will get solutions on Ruby and Nodejs. Nope, does not sound right for small CLI utility. Found good one written in Go - wl, but it intended as raw API, and there could be some user friendly improvements. For example you need to address lists via numeric id, and have to write date in defined format.

So I've created wrapper to make it more quick and convenient to use. Works like that (with tab completion and autosuggestions):

todo buy raspberry pi --life --on next monday
todo do code review --work --star
todo --work meet customer --on jan 7
todo visit mars --goals --on 2020-01-01
todo return books --on 3 days

Wrapper is written in Fish, because I wanted to try its syntax. Fish scripts are less bulky and more readable than Bash ones, but argument parsing is still a bother. So I've used lazy approach - check argument string for words using contains. Then remove all words starting with "--" by regexp. In my opinion result looks more clean.

I've also used lazy (but universal) approach to generate argument completion - search script source for strings starting with "--" and add them to Fish completion as arguments for todo command. Fish autosuggestions works greatly in this case - if you ever typed routine todo, fish will suggest completion next time.

Did you know that GNU Date understand human readable dates date --date="next Friday"? Cool! So script assumes everything after --on argument is date, so make sure it goes last in cmd. If date fails to interpret date it will save todo as todays with date in title, so you will be able to correclty set it manually later.

For installation read script header

Source on Github

How to download latest release from Github

Sometimes you might want to download latest release of binary from Github repo using script. You can do this using API, but lets assume that on some enviroments you have only basic tools, and no jq to extract values from JSon.

  1. Git hub has built in redirect, i.e. https://github.com/user/repo/releases/latest which redirect to page dedicated to latest release
  2. We can get redirect url with curl, i.e. curl -Ls -o /dev/null -w "%{url_effective}" https://github.com/user/repo/releases/latest will get us https://github.com/user/repo/releases/tag/0.15.9
  3. Now we can extract version by using basename, i.e. basename https://github.com/user/repo/releases/tag/0.15.9 will return 0.15.9
  4. Using this version we can construct download url.

For example script that downloads and installs latest version of fzf

    #!/bin/bash
    export FZF_VERSION=$(curl -Ls -o /dev/null -w "%{url_effective}" https://github.com/junegunn/fzf-bin/releases/latest | xargs basename)
    curl -L https://github.com/junegunn/fzf-bin/releases/download/$FZF_VERSION/fzf-$FZF_VERSION-linux_amd64.tgz | tar -xz -C /tmp/
    sudo mv /tmp/fzf-$FZF_VERSION-linux_amd64 /usr/bin/fzf

←Prev 1 2 3 4 5 6 7 Next→

Contact

Follow

Me on Twitter and Github

We have RSS!

© 20xx

Hosted on Cloudflare Pages, which is awesome!