Argos Is Like BitBar For Gnome Shell: It Shows Scripts Output On The Panel (Top Bar)

Searching for a way to show a script output on the Gnome Shell panel (top bar), I came across Argos. This Gnome Shell extension does only one thing: it adds a new item with a dropdown menu to the panel, showing the output from a script and exposing functionality.

The extension is inspired by BitBar, a popular program to put the output from any script on the macOS menu bar, and it's even compatible with most BitBar scripts.

Argos Gnome Shell

Using it, you can essentially write your own custom Gnome Shell extension using a language you're already familiar with, like Bash, Python, and many others. Since an Argos plugin is just an executable script that writes to stdout, any language can be used to create plugins for it.

Don't know Bash, Python, etc.? No problem, you'll find already existing Argos / BitBar plugins compatible with Argos for a wide range of tasks.

Argos features:

  • 100% API compatible with BitBar 1.9.2. All plugins that don't contain macOS-specific code will work with Argos
  • Asynchronous execution engine: Argos prevents blocking by scheduling scripts intelligently
  • Unicode support
  • Optimized for minimum resource consumption; the developer claims that even with multiple scripts refreshing every second, Argos uses less than 1% of the CPU

Besides installing Argos and some basic usage, this article also includes some extra Argos plugins/scripts, and a few places to find plugins for Argos. Continue reading!

Argos installation and quick usage guide


You have multiple ways of installing Argos:


Argos plugin usage basics to get you started:

  • Argos monitors the ~/.config/argos/ folder for new scripts. Any executable script placed in this folder is considered a plugin, and its output is displayed on the Gnome Shell panel (top bar) as soon as it's placed in this folder. Names starting with a dot (.) are ignored
  • The plugin filename has a special form: NAME.POSITION.INTERVAL[+].EXTENSION:
    • POSITION: is optional and you can use it to specify the button position on the panel. The position is an integer + l (left), c (center) or r (right)
    • INTERVAL: is optional and you can use it to tell the plugin after which amount of time it should refresh. The interval is an integer + s (seconds), m (minutes), h (hours) or d (days)
    • +: if + follows INTERVAL, it tells the script to also update every time the dropdown menu is open.
    • Example Argos plugin (script) filename: plugin.1r.10m+.sh. This plugin will positioned just right of the Gnome Shell clock (if you didn't move it from the center of the panel), it will run the script to update the info every 10 minutes, and it will also run every time the dropdown menu is open.
  • The buttons showed by Argos on the panel are arranged from left to right in alphabetical order, unless the POSITION is specified in the filename, as mentioned above

It's time to "install" your first Argos plugin. Start by downloading a simple example, say this Ping plugin (to download the script click on the View source link, then press Ctrl + s to save it), copy the script to ~/.config/argos/, and make it executable (you can make it executable from the Files app: right click the script, select Properties, then go to the Permissions tab and enable Allow executing file as program).

Once Argos finds your new executable script in ~/.config/argos/, it will show its output on the panel and drop-down menu:

Argos BitBar ping plugin


You can delete the argos.sh script that already exists in the ~/.config/argos/ as it's only a bookmark to the Argos configuration folder, and to the Argos GitHub project page.

If you want to write your own Argos plugin, I recommend starting with an already existing example, and checking out the Argos rendering and line attributes documentation.

Argos plugin examples


Argos already has a few functional plugin examples on its GitHub page, like an application launcher or top viewer. You'll also find a few BitBar plugin examples that work with Argos, like a Ping plugin, Stock Ticker, or World Clock.

Besides these, I found a few extra plugin examples for Argos that I wanted to share with you.

1. argosWeather plugin


Argos weather plugin

This is a complex Argos plugin that shows the current weather and a 7-day weather forecast, with icons and various extra information like the wind speed, humidity, and much more. It supports automatically detecting your current location, as well as manually specifying a location.

To use it, you'll have to open the script with a text editor and modify:

  • api_key: change the api_key value to your darksky.net API key. You can get your free DarkSky API key at https://darksky.net/dev
  • optional:
    • if you want to use a custom location:
      • change the man_loc value to the latitude and longitude coordinates for your location. You can find this using Google Maps. For example, searching for Berlin on Google Maps, you get this URL: https://www.google.com/maps/place/Berlin,+Germany/@52.5175012,13.1539869,10.25z.... Copy the latitude and longitude (52.5175012,13.1539869) part of the URL, and paste it as the man_loc value (.e.g: man_loc = '52.5065116,13.1438652')
      • change the man_name value to the name of your location. For example man_name = 'Berlin, Germany'
    • the color and font appearance can also be customized, and this is already explained in the weather script


2. VPN Checker plugin for BitBar (Argos compatible)

Argos BitBar VPN checker plugin

This is a very simple, yet useful plugin that checks if you're currently using a VPN (it checks the availability of tun0 or ipsec0). It also allows to kill a program when you're disconnected from the VPN.

If you want the plugin to kill a program when disconnected from VPN, uncomment the #killall Firefox... line, and replace Firefox with the program you want to kill when disconnected from VPN.


3. Cryptocurrency rates BitBar plugin that's compatible with Argos

Argos BitBar cryptocurrency plugin

This is a plugin that shows cryptocurrency rates on the panel. By default it shows the rates in GBP (British Pound), but you can change it to say USD, by changing the URL from https://cryptomate.co.uk/api/all/GBP/ to https://cryptomate.co.uk/api/all/USD/, and and a simple search and replace for £ with $ so it shows the correct currency symbol. As you can see I changed it to USD for the screenshot.

This also works with EUR and other currencies.


4. GetNews for Argos (download the getnews.py script)

Argos News RSS Feed plugin

GetNews is simple Python3 plugin for Argos that pulls the latest stories (headlines only) from a configurable RSS feed, showing them in a menu. By default it uses the Google News RSS feed, but I changed it to Linux Uprising for the screenshot.

You can refresh the feed directly from the plugin menu shown on the Gnome Shell panel. Clicking any news item opens the article in your default web browser.

Change the feed_url value to a valid RSS feed to pull the news from. This can be a single website RSS feed, or a feed aggregator. You can also use some subreddit RSS feed (e.g. https://old.reddit.com/r/linux/.rss). Change the stories value to the number of stories to be shown in the plugin menu.


5. SimpleWattage-Argos


SimpleWattage-Argos is an Argos plugin for showing power and battery info, like voltage and ampere used, battery charge %, battery capacity and more.

I don't have access to a laptop right now, that's why I didn't try this Argos plugin, and the screenshot is from its project page.


6. Airly.sh air quality for Argos (script download link)

Argos air quality checker

Airly.sh reads the Air Quality Index from airly.eu sensors, showing it on the panel. This only works if airly.eu has air quality sensors for your city.

To use it, make sure jq and curl are installed on your system. You'll also need to get your airly.eu API key.

Once you get your API key, use it as the API_KEY value in the script. You need to get a sensor ID as well - this can be obtained by visiting https://airapi.airly.eu/v2/installations/nearest?lat=YOUR_LAT&lng=YOUR_LNG&maxDistanceKM=5&maxResults=3&apikey=YOUR_API_KEY, replacing YOUR_LAT with the latitude of your location, and YOUR_LNG with the longitude of your location. I already explain how to obtain your latitude and longitude using Google Maps in the instructions for the weather Argos plugin. Once you visit the URL with those parameters, you should get something that begins with id followed by some numbers. Copy those numbers in the script, replacing the SENSOR_ID value.


Where to find more Argos plugins: