Language Selection

English French German Italian Portuguese Spanish


Using Menus For Command Line Programs and Scripts

Filed under

THE holidays are coming (Christmas approaching), so I've taken advantage of some spare time to menu-ise commands that I use frequently. Those commands aren't the mere opening of an application and they often require dealing with input and output (in the command line). So I've created and used dialog to craft the following menu, e.g. for operations associated with Techrights. I invoke this menu with the click of one button (of the mouse).

Rianne has a similar menu for commands she often runs (which are long and would otherwise need pasting or typing in length). Her menu looks something like this:

Rianne's menu

Here's the code (bash file) that renders the menu above (it's really that simple!):


BACKTITLE="Aloha, Rianne"
TITLE="Rianne @ Ted"
MENU="Choose one of the following options:"

OPTIONS=(1 "Start VPN"
         2 "REDACTED"
         3 "REDACTED"

CHOICE=$(dialog --clear \
                --backtitle "$BACKTITLE" \
                --title "$TITLE" \
                --menu "$MENU" \
                $HEIGHT $WIDTH $CHOICE_HEIGHT \
                "${OPTIONS[@]}" \
                2>&1 >/dev/tty)

case $CHOICE in
            echo "You chose Option 1"
sh ~/ ;;

            echo "You chose Option 2"
            echo "You chose Option 3"
            echo "You chose Option 4"
            echo "You chose Option 5"
            echo "You chose Option 6"
            echo "You chose Option 7"


Hopefully this inspires other people out there to do the same. It takes a while to set up, but it's a big time saver over the long run.

The Bash Fingertips: Making Your Own 'Information Centre'

Filed under

Information Centre

FORGET bloated Web browsers. Forget so-called 'social' media (I call it social control media). They're not efficient, they eat up a lot of memory and CPU cycles, and the interfaces are not consistent (across sites). They're sufficiently distracting and they have ads. They erode privacy. They don't scale well; neither for an aging system (my laptop turns 10 in a few months) nor for users. GUIs are good in particular scenarios, but when the same things are repeated over and over again one might as well set up scripts, automating things and tailoring one's own interfaces, which is easy to achieve (relatively fast and simple) in the command line. It's also more accessible, e.g. over SSH. The pertinent tools are already out there (available for download/installation from repositories), they just need to be put together and programming skills aren't required, just batching in a bash file.

Some years ago I 'developed' a little script (I've been scripting since I was about 12). I called it and it just ran another script that helped me see what applications use the swap (and how much of it). For the sake of speed I like to restart applications that heavily use swap (i.e. depend on magnetic disk operations). I don't have much RAM. I never had more than 2 GB. just called out ./ | sort -n -k 5 and comes from Erik Ljungstrom. Here it is:

# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"


The output of would be something like this:

PID=1559 - Swap used: 16472 - (x-terminal-emul )
PID=21980 - Swap used: 16648 - (kwalletd5 )
PID=25548 - Swap used: 16704 - (konversation )
PID=631 - Swap used: 19336 - (kded5 )
PID=23817 - Swap used: 50048 - (pidgin )
PID=23923 - Swap used: 180312 - (thunderbird )

This helps me see which application/process number uses swap and to what degree. It's sorted by the amount of swap taken and the PID helps when I just want to kill a process from the command line (some are small and obsolete anyway).

My script, however, grew bigger over time. I added more things to it, eventually binding it to a special (fifth) mouse key, using xbindkeys -- an immensely valuable and powerful program I've used since around 2004. Extra mouse buttons always seemed worthless (anything more than three), but that's just because there was no program I needed to open or action I needed to invoke often enough. Over time I found that keeping a new terminal one click away (fourth button) and another special terminal also a click away improved my workflow/productivity. I just needed to invest some time in tailoring it. I ended up opening, temporarily, a terminal window with important information displayed, such as weather, disk space (I'm always near the limits), swap usage (I have only 2GB of RAM), uptime, real-time football scores etc. Change of wallpapers was lumped in too, for good measure...

For football tables/scores use one of the following 1) livescore-cli 2) soccer-cli and 3) football-cli.

Sadly, the above CLI football scores' tools got 'stolen' by Microsoft and need to isolate themselves GitHub, in due cource/time. I use the first of the three as it suits my needs best and does not require an API key.

The output looks like this:

 ... Fetching information from ... 
Displaying Table for Barclay's Premier League
                                Barclay's Premier League TABLE
 LP     Team Name               GP      W       D       L       GF      GA      GD      Pts
 1      Liverpool               24      19      4       1       55      14      41      61
 2      Tottenham Hotspur       25      19      0       6       51      24      27      57
 3      Manchester City         24      18      2       4       63      19      44      56
 4      Chelsea                 25      15      5       5       45      23      22      50
 5      Arsenal                 24      14      5       5       50      33      17      47
 6      Manchester United       24      13      6       5       48      35      13      45
 7      Wolverhampton Wanderers 25      11      5       9       33      32      1       38
 8      Watford                 25      9       7       9       33      34      -1      34
 9      Everton                 25      9       6       10      36      36      0       33
 10     AFC Bournemouth         25      10      3       12      37      44      -7      33
 11     Leicester City          24      9       5       10      30      30      0       32
 12     West Ham United         24      9       4       11      30      37      -7      31
 13     Brighton & Hove Albion  25      7       6       12      27      36      -9      27
 14     Crystal Palace          25      7       5       13      26      33      -7      26
 15     Newcastle United        25      6       6       13      21      33      -12     24
 16     Southampton             25      5       9       11      27      42      -15     24
 17     Burnley                 25      6       6       13      26      46      -20     24
 18     Cardiff City            25      6       4       15      22      46      -24     22
 19     Fulham                  25      4       5       16      25      55      -30     17
 20     Huddersfield Town       25      2       5       18      13      46      -33     11
 LP = League Position   GP = Games Played       W = Wins        D = Draws       L = Lose 
 GF = Goals For         GA = Goal Against       GD = Goal Differences
 Champions League       Champions League qualification  Europa League
 Europa League qualification    Relegation

Real-time scores (when matches are on):

 ... Fetching information from ... 
Displaying Scores for Barclay's Premier League
                 Barclay's Premier League SCORES 
 January 29  FT     Arsenal                  2 - 1  Cardiff City           
 January 29  FT     Fulham                   4 - 2  Brighton & Hove Albion 
 January 29  FT     Huddersfield Town        0 - 1  Everton                
 January 29  FT     Wolverhampton Wanderers  3 - 0  West Ham United        
 January 29  FT     Manchester United        2 - 2  Burnley                
 January 29  FT     Newcastle United         2 - 1  Manchester City        
 January 30  FT     AFC Bournemouth          4 - 0  Chelsea                
 January 30  FT     Southampton              1 - 1  Crystal Palace         
 January 30  FT     Liverpool                1 - 1  Leicester City         
 January 30  FT     Tottenham Hotspur        2 - 1  Watford                
 February 2  FT     Tottenham Hotspur        1 - 0  Newcastle United       
 February 2  FT     Brighton & Hove Albion   0 - 0  Watford                
 February 2  FT     Burnley                  1 - 1  Southampton            
 February 2  FT     Chelsea                  5 - 0  Huddersfield Town      
 February 2  FT     Crystal Palace           2 - 0  Fulham                 
 February 2  FT     Everton                  1 - 3  Wolverhampton Wanderers
 February 2  FT     Cardiff City             2 - 0  AFC Bournemouth        
 February 3  15:05  Leicester City           ? - ?  Manchester United      
 February 3  17:30  Manchester City          ? - ?  Arsenal                
 February 4  21:00  West Ham United          ? - ?  Liverpool              

Now putting it all together:

feh --bg-fill --randomize /media/roy/c3fd5b6e-794f-4f24-b3e7-b4ead3722f11/home/roy/Main/Graphics/Wallpapers/Single\ Head/natgeo/* &

livescore -t bpl 

./ | sort -n -k 5
 curl -4
 swapon --summary | grep sda2
 df | grep sda1

sleep 10

livescore -s bpl 

sleep 40

The first line is feh choosing a wallpaper at random from a collection of award-winning National Geographic photographs. The options and the underlying parameters are self-explanatory.

The football league's table is then shown.

Next, after about 10 seconds of processing, a list of processes will show up based on swap usage (as described above)

The weather at home (Manchester) will then be shown, with colour. Right now I get:

Weather report: Manchester

     \   /     Sunny
      .-.      -5--2 °C       
   ― (   ) ―   ↑ 9 km/h       
      `-’      10 km          
     /   \     0.0 mm         
┌──────────────────────────────┬───────────────────────┤  Sun 03 Feb ├───────────────────────┬──────────────────────────────┐
│            Morning           │             Noon      └──────┬──────┘     Evening           │             Night            │
│    \  /       Partly cloudy  │      .-.      Light drizzle  │  _`/"".-.     Light rain sho…│               Mist           │
│  _ /"".-.     -4-0 °C        │     (   ).    -2-3 °C        │   ,\_(   ).   1-3 °C         │  _ - _ - _ -  0-3 °C         │
│    \_(   ).   ↑ 12-20 km/h   │    (___(__)   ↑ 17-26 km/h   │    /(___(__)  ↗ 7-14 km/h    │   _ - _ - _   ↑ 9-17 km/h    │
│    /(___(__)  20 km          │     ‘ ‘ ‘ ‘   20 km          │      ‘ ‘ ‘ ‘  16 km          │  _ - _ - _ -  13 km          │
│               0.0 mm | 0%    │    ‘ ‘ ‘ ‘    0.4 mm | 83%   │     ‘ ‘ ‘ ‘   0.4 mm | 65%   │               0.0 mm | 0%    │
┌──────────────────────────────┬───────────────────────┤  Mon 04 Feb ├───────────────────────┬──────────────────────────────┐
│            Morning           │             Noon      └──────┬──────┘     Evening           │             Night            │
│      .-.      Light drizzle  │  _`/"".-.     Patchy rain po…│               Cloudy         │               Cloudy         │
│     (   ).    2-6 °C         │   ,\_(   ).   3-7 °C         │      .--.     1-4 °C         │      .--.     -2 °C          │
│    (___(__)   → 16-26 km/h   │    /(___(__)  → 20-27 km/h   │   .-(    ).   → 13-23 km/h   │   .-(    ).   ↗ 9-16 km/h    │
│     ‘ ‘ ‘ ‘   14 km          │      ‘ ‘ ‘ ‘  18 km          │  (___.__)__)  20 km          │  (___.__)__)  20 km          │
│    ‘ ‘ ‘ ‘    0.3 mm | 88%   │     ‘ ‘ ‘ ‘   0.3 mm | 88%   │               0.0 mm | 0%    │               0.0 mm | 0%    │
┌──────────────────────────────┬───────────────────────┤  Tue 05 Feb ├───────────────────────┬──────────────────────────────┐
│            Morning           │             Noon      └──────┬──────┘     Evening           │             Night            │
│    \  /       Partly cloudy  │               Overcast       │               Overcast       │      .-.      Light drizzle  │
│  _ /"".-.     -1-3 °C        │      .--.     2-6 °C         │      .--.     6 °C           │     (   ).    1 °C           │
│    \_(   ).   ↖ 19-31 km/h   │   .-(    ).   ↑ 23-33 km/h   │   .-(    ).   ↑ 24-40 km/h   │    (___(__)   ↑ 24-40 km/h   │
│    /(___(__)  20 km          │  (___.__)__)  19 km          │  (___.__)__)  8 km           │     ‘ ‘ ‘ ‘   9 km           │
│               0.0 mm | 0%    │               0.0 mm | 0%    │               0.0 mm | 0%    │    ‘ ‘ ‘ ‘    0.3 mm | 0%    │

After this I am shown general memory usage and disk usage (for a particular partition) along with uptime thusly:

/dev/sda2                               partition       2097148 381128  -1
/dev/sda1        84035088   77299588   2443660  97% /
 08:03:28 up 116 days, 12:36,  7 users,  load average: 1.70, 1.40, 1.26

It will close on its own after I see what needs seeing, owing to the sleep command. It saves me the clicking (required to then close the window); it just fades away or 'expires', so to speak (until the next time the mouse button gets pressed).

How to rename files in bulk

Filed under

Consider this common scenario. A directory contains multiple files that are named using a common convention: for example, image-001.png, image-002.png, image-003.png, etc. You want to rename the files to, say, upload-001.png, upload-002.png, upload-003.png, etc.

The coders among us can write a bash script to automate the process. For expedience, this post shows how to use the built-in rename command to achieve the same goal.

Fixing OpenSuse’s Dog Awful default fonts…

Filed under

Lets not beat around the bush here, the default font rendering in OpenSuse and the default font do not an OS fit for reading make.. this can be fixed however..

Love or hate Ubuntu, out of the box it has one of the best font rendering setups of any distro and considering how much time we spend on our PC’s setting your fonts up correctly is one less headach, literally.

I’m not sure how much of these instructions I got right, however after a reboot the screen text does at least look better..

Read More

Stopping Screen Flickering on Ivy Bridge Laptops using Linux

Filed under

This is a solution to a problem which has been dogging me on every version of Linux I install on the Acer Aspire S3. I'm hoping it will help someone.

Read my solution

Forgot your Ubuntu Password? All is not lost.

Filed under

It’s always a pain when you forget your password, and i’ve often done it on an Ubuntu install. All however is not lost as a stock Ubuntu install its quite easy to reset your password

Read More

Creating an AD Server for Free using Ubuntu and Samba

Filed under

While being a huge fan of the GNU/Linux OS I do also live in the real world which means using Active Directory Domain Controllers and Windows networks. this week however I’ve had to build for a project a stand alone AD network. This got me thinking to a project I built for a school 6 uears ago which I did the same thing with Samba on Fedora.

Remote Application launching using X11 and SSH.. Oldie but a goodie..

Filed under

Using WordPress as my central blog platform I’m very happy with it, not much to complain about, some good features, it’s very social and some nice themes. However it’s got me thinking not so much my content i’m now having a “problem” to manage it’s dealing with the replies

Read More

Using the right tools to get your media..

Filed under

When it comes to getting what you want off the interent, its pretty fair to say, that there is an application and a set of instructions to do this. In this day and age its fair to say that getting media off the web should be the way that media companies distribute. Instead of trying to reinvent the wheel. Unfortunately they don't they bog you down with Websites, DRM, Magma and lots more.. Well This is how to get your media another way..

Standard Disclaimer: Your use of this software and configuration is at your own risk. Check the legality of downloading TV shows in your area. This post is purely for the sake of information.



Big Bear's Helpful Hints-Google Docs Spreadsheets

Filed under

I like to jot down things that I learn how to do on the spur of the moment so that I can find it later.

I admit, in the 80's there was quite of bit of "herbal remedy" usage and my short term memory isn't what it could be. That's my story and I'm sticking to it.

I've decided that I might as well potentially help some other folks who might want to know about some of the things I discover, so I thought why not here?

For my very first post, I wanted to figure out how to sum cells across multiple pages in Google Docs spreadsheets.

Syndicate content

More in Tux Machines

Android Leftovers

Get More of Everything With the "Get New" Button in KDE Plasma

KDE Plasma is a desktop tweaker’s dream come true. You can virtually change every aspect of the desktop, from adding widgets and changing fonts, to trying out over-the-top effects and transformative themes. With most interfaces, you need to know where to look online to find these sorts of tweaks, but KDE spares you the effort. There’s a handy little magic button that delivers the goods right to your desktop. Read more

today's leftovers

  • Dave Airlie: crocus misrendering of the week

    The bottom image is crocus vs 965 on top. This only happened on Gen4->5, so Ironlake and GM45 were my test machines. I burned a lot of time trying to work this out. I trimmed the traces down, dumped a stupendous amount of batchbuffers, turned off UBO push constants, dump all the index and vertex buffers, tried some RGBx changes, but nothing was rushing to hit me, except that the vertex shaders produced were different. However they were different for many reasons, due to the optimization pipelines the mesa state tracker runs vs the 965 driver. Inputs and UBO loads were in different places so there was a lot of noise in the shaders. I ported the trace to a piglit GL application so I could easier hack on the shaders and GL, with that I trimmed it down even further (even if I did burn some time on a misplace */+ typo). Using the ported app, I removed all uniform buffer loads and then split the vertex shader in half (it was quite large, but had two chunks). I finally then could spot the difference in the NIR shaders.

  • X.Org Server Adds "Fake Screen FPS" Option

    The X.Org Server has picked up a new "-fakescreenfps" option to help with VNC and other remote display scenarios. Currently when any main hardware screen is powered off, the X.Org Server initializes the fake screen to a one second update interval. The X.Org Server will keep to that one second update interval for fake screens even if VNC or other remote viewing software is running, until the physical display is powered on.

  • FluBot malware spreads to Australia

    The FluBot strain of Android banking malware, which was initially observed in Spain in late 2020 before spreading more widely across Europe over the following months, is now targeting Australian banks. Once installed, FluBot periodically sends a list of apps installed on the device to one of its command-and-control servers. The server responds with a list of apps the malware should overlay. Upon one of these apps being launched, FluBot immediately displays an overlay on top of the legitimate app. The overlays impersonate the legitimate apps and are designed to collect the victim’s online banking credentials, which are sent to the criminals operating FluBot via the command-and-control server.

  • Bits relating to Alpine security initiatives in July – Ariadne's Space

    Another month has passed, and we’ve gotten a lot of work done. No big announcements to make, but lots of incremental progress, bikeshedding and meetings. We have been laying the ground work for several initiatives in Alpine 3.15, as well as working with other groups to find a path forward on vulnerability information sharing.

  • Linux Plumbers Conference: Android Microconference Accepted into 2021 Linux Plumbers Conference

    We are pleased to announce that the Android Microconference has been accepted into the 2021 Linux Plumbers Conference. The past Android microconferences have been centered around the idea that it was primarily a synchronization point between the Android kernel team and the rest of the community to inform them on what they have been doing. With the help of last year’s focus on the Generic Kernel Image[1] (GKI), this year’s Android microconference will instead be an opportunity to foster a higher level of collaboration between the Android and Linux kernel communities. Discussions will be centered on the goal of ensuring that both the Android and Linux development moves in a lockstep fashion going forward.

  • Vaccines + Masks for Safe In-Person Events – Read About All On-Site Safety Protocols [Ed: Linux Foundation discriminates and is not inclusive. "A vaccine verification app will be used to confirm vaccination status" means that Linux Foundation now mandates surveillance devices with back doors for all attendees. This is antithetical to a lot of Free software; they do not accept paper proof. There are commercial interests in the mix]

    The Linux Foundation is ecstatic to return to in-person events next month; we know how important these face-to-face gatherings are to accelerating collaboration and innovation in the open source community. [...] As announced previously, in-person attendees will be required to be fully vaccinated against the COVID-19 virus. A vaccine verification app will be used to confirm vaccination status.

  • Petter Reinholdtsen: Mechanic's words in five languages, English, Norwegian and Northern Sámi editions

    Almost thirty years ago, some forward looking people interested in metal work and Northern Sámi, decided to create a list of words used in Northern Sámi metal work. After almost ten years this resulted in a dictionary database, published as the book "Mekanihkkársánit : Mekanikerord = Mekaanisen alan sanasto = Mechanic's words" in 1999. The story of this work is available from the pen of Svein Lund, one of the leading actors behind this effort. They even got the dictionary approved by the Sámi Parliament of Norway as the recommended metal work words to use. Fast forward twenty years, I came across this work when I recently became interested in metal work, and started watching educational and funny videos on the topic, like the ones from mrpete222 and This Old Tony. But they all talk English, but I wanted to know what the tools and techniques they used were called in Norwegian. Trying to track down a good dictionary from English to Norwegian, after much searching, I came across the database of words created almost thirty years ago, with translations into English, Norwegian, Northern Sámi, Swedish and Finnish. This gave me a lot of the Norwegian phrases I had been looking for. To make it easier for the next person trying to track down a good Norwegian dictionary for the metal worker, and because I knew the person behind the database from my Skolelinux / Debian Edu days, I decided to ask if the database could be released to the public without any usage limitations, in other words as a Creative Commons licensed data set. And happily, after consulting with the Sámi Parliament of Norway, the database is now available with the Creative Commons Attribution 4.0 International license from my gitlab repository.

  • Lang team August update

    This week the lang team held its August planning meeting. We normally hold these meetings on the first Wednesday of every month. We had a short meeting this month, just planning and scheduling the design meetings for the remainder of the month. After each meeting, we post an update (like this one!) with notes and meeting announcements.

  • Dirk Eddelbuettel: x13binary 1.1.57-1 on CRAN: New Upstream, New M1 Binary

    Christoph and I are please to share that a new release 1.1.57-1 of x13binary, of the X-13ARIMA-SEATS program by the US Census Bureau (with updated upstream release 1.1.57) is now on CRAN. The x13binary package takes the pain out of installing X-13ARIMA-SEATS by making it a fully resolved CRAN dependency. For example, when installing the excellent seasonal package by Christoph, then X-13ARIMA-SEATS will get pulled in via the x13binary package and things just work. Just depend on x13binary and on all major OSs supported by R you should have an X-13ARIMA-SEATS binary installed which will be called seamlessly by the higher-level packages such as seasonal or gunsales. With this the full power of the what is likely the world’s most sophisticated deseasonalization and forecasting package is now at your fingertips and the R prompt, just like any other of the 17960+ CRAN packages. You can read more about this (and the seasonal package) in the Journal of Statistical Software paper by Christoph and myself. This release brings a new upstream release as well as binaries. We continue to support two Linux flavours (theh standard x86_64 as well as armv7l), windows and for a first time two macOS flavour. In addition to the existing Intel binary we now have a native built using the arm64 “M1” chip (with thanks to Kirill for the assist).

  • [LibreOffice] Tender to implement support for editing and creation of a Dynamic Diagram feature (#202108-02)

    The Document Foundation (TDF) is the charitable entity behind the world’s leading free/libre open source (FLOSS) office suite LibreOffice. We are looking for an individual or company to implement support for editing and creation of Dynamic Diagrams. The work has to be developed on LibreOffice master, so that it will be released in the next major version. The task is to solve the following problem: Our existing “SmartArt” import uses the fallback stream in OOX files (and has some issues). It therefore gives us only the draw shapes that are imported, so we lose the original layout. Additionally, in older file versions we don’t have the cached shapes, and therefore can’t render anything. The solution we seek, and as such the scope of this tender, is to have a schema driven diagram layout as a core feature. This should be interoperable with OOX (at least MSO2016) and have suitable extensions for ODF. It should layout interoperability, and allow editing of the underlying data, and selection of a schema.

  • Cinelerra Enters Sparky Linux

    Cinelerra is one of the most advanced, open-source non-linear video editors and compositors for Linux. Turn your Linux box into a complete audio and video production environment.

  • The Brains Behind the Books – Part VIII: Julia Faltenbacher

    My name is Julia, I was born in Bremen. This beautiful old Hanseatic city is situated in the north of Germany, close to the North Sea. When I was six years old, my parents and I moved to Rosenheim in Bavaria, which is on the southern end of Germany. Rosenheim is a rather small city, close to the Alps. I consider this my first “experience abroad”, as Bavarian people are very different to the Northern German people. They have a very strong accent and a special dialect. It took me years to understand the Bavarian dialect, and I still can’t talk like them. And still, I am learning new Bavarian words I have never heard before.

IBM/Red Hat/Fedora Leftovers