TopBarにオリジナルのインジケータを作る Argos

ubuntu GNOMEのEstensionsにArgosという面白いものを発見したので,それで遊んでみた.
Argosとは,TopBarにオリジナルのインジケータ(例えば…今日の株価を表示する,CPUの使用率を表示する,通信速度を表示する等)を作成できるツール.
アイデアによっては面白いものができそうなので,使い方をまとめてみました.

 

Argosとは

TobBarにオリジナルのインジケータを作成できるツール.
GNOME Shell Extensionsから導入できる.

例えばこんな感じのことができます.
CPUの使用率を監視して,TopBarに表示しています.
インジケータをクリックすると,使用率の内訳が表示されUserとSystemそれぞれのCPU使用率が表示されます.

ArgosのGitHubページ https://github.com/p-e-w/argos

macユーザのかたはBitBarというアプリがあるのをご存知かもしれません.
ArgosとBitBarは互換性がありArgosの為に書いたスクリプトはBitBarでも動くそうです.

ArgosはシェルスクリプトやPythonなと,様々な言語で記述することができるのですが,ここではシェルスクリプトを用いて説明します.

 

実行ファイルの配置

実行ファイルを以下のディレクトリに配置することで,Argosが勝手にそのスクリプトを実行してくれます.

~/.config/argos/

ファイル名に実行間隔を指定してあげることで,Argosはその周期でスクリプトを呼び出してくれる.
命名規則は FILENAME.POSITION.INTERVAL.EXTENSION となる.

FILENAME任意のファイル名
POSITION表示位置を指定できる.l(left), c(center), r(right)の三種類.
POSITIONは省略できる.省略するとleftになる.
INTERVALスクリプトを呼び出す周期の指定.
単位はd(day),h(hour),m(minutes),s(second)の4種類.
0sと指定すると,最初に1度だけ呼び出される?
EXTENSION拡張子の指定.

例えばファイル名を
sample.c.10s.sh
とすると,表示位置が中央で,10秒に1度このスクリプトが呼び出される.

実行権限を付与するのを忘れずに

$ sudo chmod +x <file_name>

 

スクリプト

表示したい情報はechoを使って出力する.
サンプルコードを見ていただければ大体把握できると思います.

#!/bin/bash

echo "hogehoge"
echo "---"
echo "Line1"
echo "Line2"
echo "--Line2Sub1"
echo "--Line2Sub2"
echo "--Line2Sub3"
echo "Line3"
echo "Line4"
echo "---"
echo "Line5"
echo "Line6"
echo "--Line6Sub1"
echo "--Line6Sub2"

最初の出力がTobBar上での表示となり,一度 “—” で区切ります.
以降の出力がドロップダウンメニューの内容となります.

“–name” とすると,その行は上の出力のサブメニューという形になります.

“—” で出力を区切ることができます.

 

時計のサンプルコード

サンプルとして簡単ですが,時計を載せておきます.

#!/bin/bash

clock=$(date +"%H:%M:%S")
date=$(date +"%Y/%m/%d")

echo "${clock}"
echo "---"
echo "${date}"

 

CPUチェッカーのサンプルコード

cpu使用率を表示するスクリプトのサンプルコードです.

#!/bin/bash

icon_pc=""
font="Ubuntu\ Mono"

vmstat_result=$(vmstat 1 2 | tail -n 1)

usr_cpu=$(echo ${vmstat_result} | awk '{print $13}')
sys_cpu=$(echo ${vmstat_result} | awk '{print $14}')
total_cpu=$(( ${usr_cpu} + ${sys_cpu} ))
if [ ${total_cpu} -gt 100 ]; then
	${total_cpu}=100
fi

echo "${icon_pc}  ${total_cpu} %"
echo "---"
echo "${icon_pc}     User     <span weight='bold'>${usr_cpu}</span> % | font=${font}"
echo "${icon_pc}     System   <span weight='bold'>${sys_cpu}</span> % | font=${font}"