第492回ではGNOME Shellの拡張機能がJavaScriptとCSSで構成されていることを紹介しました。今回は拡張機能を
JavaScriptは人類には難しすぎる
GNOME Shellに搭載されている、
特にGNOME Shellの拡張機能はJavaScriptとCSSだけでなく、
ArgosはそんなJavaScript恐怖症の利用者に向けた、
ArgosはmacOSのメニューバーをカスタマイズするBitBarと完全に互換性があることを謳っています。つまりBitBar向けのスクリプトであれば、
まとめるとArgosを使えばシェルスクリプトを使って任意の情報をインジケーターに表示できるということです。
Argosのインストール
ArgosそのものはGNOME Shellの拡張機能です。よってまずはArgosをインストールしましょう。方法はいくつかありますが、
$ git clone https://github.com/p-e-w/argos.git $ mkdir -p ~/.local/share/gnome-shell/extensions/ $ cp -a argos/[email protected]/ ~/.local/share/gnome-shell/extensions/
あとは前回と同様にgnome-shell-extension-prefsを起動して、


インジケーターの
- Argosのサイトへのリンク
- インジケーターメニューのスクリプト用ディレクトリ
( ~/.config/
)argos/ へのリンク - インジケーターメニューのスクリプトファイル
( ~/.config/
)argos/ argos. sh へのリンク
これらはすべて~/.config/
」
インジケータースクリプトの追加方法
Argosは~/.config/
」~/.config/
」
まずは標準でインストールされる、argos.
の中身について見てみましょう
#!/usr/bin/env bash
URL="github.com/p-e-w/argos"
DIR=$(dirname "$0")
echo "Argos"
echo "---"
echo "$URL | iconName=help-faq-symbolic href='https://$URL'"
echo "$DIR | iconName=folder-symbolic href='file://$DIR'"
非常にシンプルなスクリプトですね。このスクリプトが実行されると以下のような出力が得られます。
Argos
---
github.com/p-e-w/argos | iconName=help-faq-symbolic href='https://github.com/p-e-w/argos'"
/home/shibata/.config/argos | iconName=folder-symbolic href='file:///home/shibata/.config/argos'"
この出力結果がArgos本体に渡されて、
インジケーターのタイトル部分(トップパネルに表示される部分)
---
ドロップダウンメニューの項目
ドロップダウンメニューの項目
ドロップダウンメニューの項目
ドロップダウンメニューの項目
各タイトルや項目をカスタマイズしたい場合は、|
)
echo "$URL | iconName=help-faq-symbolic href='https://$URL'"
たとえば上記の例の場合アイコン名がhelp-faq-symbolic
」/usr/
」href
プロパティにURIを指定することでクリックしたときにそのアドレスのコンテンツが表示されることになるのです。非常に簡単ですね。
インジケータースクリプトのファイル名
ファイル名にも意味があり、
NAME.POSITION.INTERVAL.EXTENSION
NAMEはスクリプト名です。NAMEの先頭が.
POSITIONはインジケーターを表示するトップパネル上の位置です。l
c
r
10r
」
INTERVALはスクリプトの実行周期です。数字とs
m
h
d
EXTENSIONはスクリプトの拡張子です。拡張子の付け方に制約はありませんが、
以下にいくつかの例をあげましょう。
foo.
:起動時に一度だけ実行され、sh トップパネルの右端に表示 foo.
:起動時に一度だけ実行され、c.sh トップパネルの中央に表示 foo.
:1秒ごとに実行され、1s. sh トップパネルの右端に表示 foo.
:10分ごとに実行され、10l. 10m. sh トップパネルの左端に表示 ( 9l
と11l
があればその間に表示される)foo.
:起動時に一度だけ実行され、2r.. sh トップパネルの右端に表示 ( 1r
と3r
があればその間に表示される)
POSITIONのみを省略することやPOSIITONとINTERVALの両方を省略することは可能です。INTERVALのみ省略したい場合は最後の例のようにピリオドを並べる必要があります。
トップパネルを流れる🍣
せっかくなので寿司をトップパネルに流してみましょう
Unicode上に絵文字がマップされているため、
残念ながらトップパネル上の任意の位置にインジケーターを置くことはできません。左・
具体的なコードは以下のとおりです。これを~/.config/
として保存します。また実行権限もつけておいてください。
#!/usr/bin/env bash
WIDTH=27
PAD="$(($(date +%s)%$WIDTH))"
echo -n ":sushi:"
if [ "$PAD" != "0" ]; then
printf ' %.0s' `eval echo {1..$PAD}`
fi
echo " | trim=false"
ポイントは4つです。
- インジケーターの最大幅の指定
- 時刻を利用した寿司の位置の指定
trim=false
による空白文字の扱い- emojilibを利用した
「🍣」 の表示
まずインジケーターの最大幅をWIDTH
で設定しています。要するにトップパネル右側の空き領域分の全角文字幅だと考えてください。当然環境によって異なりますdate
コマンドで現在の時刻を秒単位で取得し、WIDTH
の値で割った剰余で寿司の位置を決めます。といっても単に寿司文字の後ろに剰余の分だけ全角空白を入れているだけです。
Argosのインジケーターのラベルは、trim=false
」
さらにArgosはemojilibを取り込んでいます。よって
Argosは基本的に行頭・trim=false
」

デスクトップにもシェル芸を
ここまで紹介したように、
macOSのBitBarとも互換性が確保されているため、
もちろんすべてシェルスクリプトだけで構築することも可能でしょう。つまり読者の皆様のほとばしるシェル愛をGNOME Shellに全力でぶつけられるわけです。ちなみにArgosのインターフェースは標準出力なので、