Conky
Conky は X Windows System 向けのシステム監視ソフトウェアです。GNU/Linux と FreeBSD で利用することができます。GPL ライセンスでリリースされているフリーソフトウェアになります。CPU, メモリー, スワップ, ディスク容量, 温度, top, アップロード, ダウンロード, システムメッセージなど、様々なシステムの情報を Conky はモニターすることが可能です。色々と設定することができますが、設定は少々わかりにくいかもしれません。Conky は torsmo のフォークです。
目次
- 1 インストールと設定
- 2 ヒントとテクニック
- 2.1 設定ファイルの構文の変更
- 2.2 KDE4 や Xfce4 で完全透過を有効にする
- 2.3 Xfce4 で自動起動
- 2.4 ちらつきを防止する
- 2.5 カスタムカラー
- 2.6 デュアルスクリーン
- 2.7 デスクトップの表示で最小化させない
- 2.8 GNOME との統合
- 2.9 Razor-qt との統合
- 2.10 パッケージの更新情報を表示
- 2.11 天気予報を表示
- 2.12 カウントダウンタイマーを表示
- 2.13 RSS フィードを表示
- 2.14 rTorrent の統計を表示
- 2.15 WordPress ブログの統計を表示
- 2.16 新規メールの数を表示
- 2.17 有効なネットワークインターフェイスを表示
- 2.18 UTF-8 マルチバイト文字のスクロールの修正
- 2.19 nvidia サポートのサンプルリングスクリプト
- 2.20 記号フォントに関する注意
- 2.21 本来よりフォントが小さく表示される
- 2.22 完全透過を有効にする万能の方法
- 3 参照
インストールと設定
conky パッケージをインストールしてください。機能が追加された他のパッケージについては #AUR パッケージを見てください。
ローカルの設定ファイルを作成してください:
$ mkdir -p ~/.config/conky $ conky -C > ~/.config/conky/conky.conf
~/.config/conky/conky.conf
を編集することで好きに conky をカスタマイズできます。こちらのページ には設定ファイルのサンプルが載っています。
設定ファイルを編集すると、保存した瞬間に変更が適用されます。X セッションをログアウト・ログインする必要はありません。設定を何かテストしたいときは、設定ファイルを保存してみて conky のウィンドウがどうなったか確認するのが良いでしょう。
conky の素晴らしい機能として /var/log/
ファイルからログメッセージを読み込んでデスクトップに表示させることができます。ほとんどのログファイルは root
しか読めないようになっていますが、conky を root
で動作させることは推奨されません。代わりに使用しているユーザーを log
グループに追加してください:
# usermod -aG log username
AUR パッケージ
基本の conky パッケージに加えて、追加のコンパイルオプションを有効にした AUR のパッケージがいくつか存在します:
- conky-cli — X11 依存を取り除いた Conky
- || conky-cliAUR
- conky-lua — Lua サポートが付いた Conky
- || conky-luaAUR
- conky-lua-nv — Lua と Nvidia サポートが付いた Conky
- || conky-lua-nvAUR
- conky-nvidia — Nvidia サポートが付いた Conky
- || conky-nvidiaAUR
ヒントとテクニック
設定ファイルの構文の変更
Conky 1.10 から、設定ファイルは以下のように Lua の構文で書き直されました:
conky.config = { -- Comments start with a double dash bool_value = true, string_value = 'foo', int_value = 42, } conky.text = [[ $variable ${evaluated variable} ]]
下で紹介しているサンプルは以下のような古い構文を使用している場合があります:
bool_value yes string_value 'foo' int_value 42
古い構文を新しい Lua 構文に変換する Lua スクリプトが こちら にあります。
何かがおかしかったり、スクリプトを信用できない場合、デフォルトの設定ファイルから設定をやり直してください:
$ conky -C > conky.conf.default
KDE4 や Xfce4 で完全透過を有効にする
バージョン 1.8.0 から、Conky は完全透過をサポートしています。有効にするには以下の行を conky.conf
に追加して下さい:
own_window_transparent = true,
上のオプションは OWN_WINDOW_ARGB_VISUAL yes
オプションと一緒に使うのは望ましくありません。下で説明している feh の方法を置き換えます。
Xfce4 で自動起動
conky.conf
ファイルに以下を追加:
background = true,
この変数は Conky をバックグラウンドにフォークします。ウィンドウをデスクトップ上に常に表示させ、全てのワークスペースに張り付かせてタスクバーには表示したくない場合、以下の引数を追加してください:
own_window = true, own_window_type = 'override',
override オプションは conky のウィンドウがウィンドウマネージャの制御下から外れるようにします。
~/.config/autostart/conky.desktop
を追加:
[Desktop Entry] Encoding=UTF-8 Version=0.9.4 Type=Application Name=conky Comment= Exec=conky -d StartupNotify=false Terminal=false Hidden=false
ちらつきを防止する
Conky はちらつきを防止するために X サーバーの Double Buffer Extension (DBE) サポートを必要とします。これがないとウィンドウを高速に更新することができません。/etc/X11/xorg.conf
で "Module"
セクションに Load "dbe"
行を追加することで有効にできます。(1.8.x パッチ以上では) xorg.conf
ファイルは個別の設定ファイルが入っている /etc/X11/xorg.conf.d
で置き換えられています。DBE は自動でロードされます。
ダブルバッファリングを有効にするには conky.conf
に以下を追加してください:
double_buffer = true,
カスタムカラー
クラシックなプリセットカラーの他に (white, black, yellow...)、カラーネームコードを使ってカスタムカラーを設定することができます。色のコードを確認するには、色選択アプリを使って下さい。公式リポジトリに入っている gcolor2 パッケージが色の名前を教えてくれます。カラーコードは6桁の16進数からなります (0-9, A-F)。カスタムカラーを使うには設定ファイルに以下の行を追加してください:
color0 = 'white', --convention for standard named colors color1 = '00CC00', --convention for hex colors: no pound sign
そして、TEXT
セクションを編集するときに、事前に定義したカスタムカラー番号を使って下さい。
デュアルスクリーン
デュアルスクリーン設定を使う場合は、conky のウィンドウを配置するための2つのオプションをいじる必要があります。例えば 1680X1050 ピクセルの解像度を使っていて、左モニターの中央上にウィンドウを置きたい場合、以下を使います:
alignment = 'top_left', gap_X = 840,
alignment
オプションはそのままの意味で、gap_X
オプションは画面の左端からの距離をピクセルで表します。
xinerama_head
オプションも設定する必要があるかもしれません。
デスクトップの表示で最小化させない
Compiz を使っている場合: 'デスクトップを表示' ボタンやキーバインドで、他のウィンドウと一緒に Conky も最小化されてしまう場合、Compiz の設定マネージャを起動して、"General Options" を開いて "Hide Skip Taskbar Windows" オプションのチェックを外して下さい。
Compiz を使っていない場合は、conky.conf
を編集して以下の行を追加または修正してください:
own_window_type = 'override',
もしくは:
own_window_type = 'desktop',
詳しい違いについては conky の man ページを参照。ただし後者のオプションでは Openbox などでリサイズのキーバインドを使ってウィンドウを conky の縁に調整することができます。前者は出来ません。
GNOME との統合
GNOME で Conky を表示したときに問題が生じる場合、以下の行を conky.conf
に追加:
own_window yes own_window_type conky own_window_transparent yes own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
透過に問題が起こる場合、以下の行を追加してみてください:
own_window_argb_visual yes own_window_argb_value 255
Razor-qt との統合
Conky のデフォルト設定では、後ろをクリックするとデスクトップからウィンドウが消えることがあります。以下の行を追加してください:
conky.conf
own_window yes own_window_class Conky own_window_type normal own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_transparent yes
パッケージの更新情報を表示
- Pacman には
checkupdates
という公式リポジトリのパッケージアップデートを表示する自前のスクリプトが入っています。${execpi 3600 checkupdates | wc -l}
でパッケージの合計が表示されます。 - Paconky - ユーザー定義形式でパッケージのアップデート情報を表示します。
${execpi}
コマンドを使うことでこのプログラムの出力は conky に含めることができます。 - Scrolling Notifications - スクロールするアップデート通知を表示。Paconky と作者が同じ。
- Perl Script - Paconky の作者によるシンプルで簡単なスクリプト。アップデートが必要なパッケージの数だけを表示。
- Python Script - Python で書かれたアップデート通知プログラム。
- Bash Script - ShowSize を有効にしたユーザーのための Bash スクリプト。
天気予報を表示
このスレッド を参照。
カウントダウンタイマーを表示
ConkyTimer は作業の残り時間を表示するシンプルなカウントダウンタイマーです。
conkytimer "<task description>" <min>
でタイマーを開始できます。
RSS フィードを表示
外部のスクリプトを実行したり Conky に出力したりすることなく、RSS フィードをネイティブに表示する機能が Conky には備わっています。例えば、Planet Arch の最新の記事のタイトル10件を表示して一分ごとにフィードを更新したい場合、以下を conky.conf
の TEXT
セクションに挿入します:
${rss https://planet.archlinux.org/rss20.xml 1 item_titles 10 }
Arch フォーラムの rss フィードを表示したい場合、次の行を追加します:
${rss https://bbs.archlinux.org/extern.php?action=feed&type=rss 1 item_titles 4}
1 は更新間隔で (15分がデフォルト)、4 は表示するアイテムの数です。
rTorrent の統計を表示
このスレッドを参照。
WordPress ブログの統計を表示
python で書かれた ConkyPress という名前の拡張を使うことで表示できます。
新規メールの数を表示
Gmail
方法 1
どこかに gmail.py
という名前のファイルを作って (ここでは ~/.scripts/
を使用) 以下の Python コードを入力してください:
gmail.py
#!/usr/bin/env python from urllib.request import FancyURLopener email = 'your email' # @gmail.com can be left out password = 'your password' url = 'https://%s:%s@mail.google.com/mail/feed/atom' % (email, password) opener = FancyURLopener() page = opener.open(url) contents = page.read().decode('utf-8') ifrom = contents.index('<fullcount>') + 11 ito = contents.index('</fullcount>') fullcount = contents[ifrom:ito] print(fullcount + ' new')
方法 2
以下のスクリプトは Python の機能を活用しています:
gmail.py
#! /usr/bin/env python import urllib.request from xml.etree import ElementTree as etree # Enter your username and password below within quotes below, in place of ****. # Set up authentication for gmail auth_handler = urllib.request.HTTPBasicAuthHandler() auth_handler.add_password(realm='mail.google.com', uri='https://mail.google.com/', user= '****', passwd= '****') opener = urllib.request.build_opener(auth_handler) # ...and install it globally so it can be used with urlopen. urllib.request.install_opener(opener) gmail = 'https://mail.google.com/gmail/feed/atom' NS = '{http://purl.org/atom/ns#}' with urllib.request.urlopen(gmail) as source: tree = etree.parse(source) fullcount = tree.find(NS + 'fullcount').text print(fullcount + ' new')
次の行を conky.conf
に追加すれば、5分 (300秒) ごとに新しいメールがないか Gmail アカウントをチェックして表示するようになります:
${execpi 300 python ~/.scripts/gmail.py}
方法 3
同じやり方で curl
, grep
, sed
を使う方法:
$ curl -s -u email:password https://mail.google.com/mail/feed/atom | grep fullcount | sed 's/<[^0-9]*>//g'
email と password はあなたのデータに置き換えて下さい。
方法 4
また、stunnel パッケージの stunnel を使うこともできます。
以下の設定は Conky の FAQ から引用しています。
以下のように /etc/stunnel/stunnel.conf
を編集して、stunnel.service
を起動:
# Service-level configuration for TLS server [imap] client = yes accept = 143 connect = imap.gmail.com:143 protocol = imap sslVersion = TLSv1 # Service-level configuration for SSL server [imaps] client = yes accept = 993 connect = imap.gmail.com:993
後は conky.conf
だけです:
imap localhost username * -i 120 -p 993 TEXT Inbox: ${imap_unseen}/${imap_messages}
Here I used *
as the password for conky to ask for it at start, but you do not have to do it.
IMAP + SSL と Perl を使う
Conky には IMAP アカウントのサポートが組み込まれていますが SSL はサポートしていません。このフォーラムへの投稿 にあるスクリプトを使うことで利用することができます。perl-mail-imapclientAUR と perl-io-socket-ssl パッケージの Perl/CPAN Modules Mail::IMAPClient と IO::Socket::SSL が必要です。
Conky に読み込ませる場所に imap.pl
という名前のファイルを作成してください。このファイルには、以下の内容を記述します (必要なところは書き換えて下さい):
#!/usr/bin/perl # gimap.pl by gxmsgx # description: get the count of unread messages on imap use strict; use Mail::IMAPClient; use IO::Socket::SSL; my $username = 'example.username'; my $password = 'password123'; my $socket = IO::Socket::SSL->new( PeerAddr => 'imap.server', PeerPort => 993 ) or die "socket(): $@"; my $client = Mail::IMAPClient->new( Socket => $socket, User => $username, Password => $password, ) or die "new(): $@"; if ($client->IsAuthenticated()) { my $msgct; $client->select("INBOX"); $msgct = $client->unseen_count||'0'; print "$msgct\n"; } $client->logout();
conky.conf
に次を追加:
${execpi 300 ~/.conky/imap.pl}
ファイルの位置は適宜変更してください。
Gmail を使う場合、アプリパスワードを 生成 する必要があります。
もしくは、上に書かれているように stunnel を使うこともできます: #Gmail。
IMAP と PHP を使う
PHP を使う方法もあります。PHP をインストールして /etc/php/php.ini
の extension=imap.so
をアンコメントしてください。
それから imap.php
という名前のファイルを作成して実行可能属性を付与してください:
$ chmod +x imap.php
ファイルの中身は以下のようにします (適宜変更を加えてください):
#!/usr/bin/php <?php // See http://php.net/manual/function.imap-open.php for more information about // the mailbox string in the first parameter of imap_open. // This example is ready to use with Office 365 Exchange Mails, // just replace your username (=email address) and the password. $mbox = imap_open("{outlook.office365.com:993/imap/ssl/novalidate-cert}", "username", "password"); // Total number of emails $nrTotal = imap_num_msg($mbox); // Number of unseen emails. There are other ways using imap_status to count // unseen messages, but they don't work with Office 365 Exchange. This one does. $unseen = imap_search($mbox, 'UNSEEN'); $nrUnseen = $unseen ? count($unseen) : 0; // Display the result, format as you like. echo $nrUnseen.'/'.$nrTotal; // Not needed, because the connection is closed after the script end. // For the sake of clean public available scripts, we are nice to // the imap server and close the connection manually. imap_close($mbox);
conky.conf
に以下を追加:
${execpi 300 ~/.conky/imap.php}
上記のスクリプトは A/B と表示します。A は未読メールの数で B はメールボックスに存在するメールの合計数です。imap_Status などの PHP 関数を使うことで他の情報も表示できます (http://php.net/manual/function.imap-status.php)。IMAP に関する PHP ドキュメントを見てください: http://php.net/manual/ref.imap.php 。
有効なネットワークインターフェイスを表示
ネットワークインターフェイスが有効化どうかテストするために、conky の if_existing
変数を使ってインターフェイスの operstate
を確認できます。以下はインターフェイスが wlo1
の場合の例です:
draw_graph_borders yes ${if_existing /sys/class/net/wlo1/operstate up} ${color #0077ff}Net Down:$color ${downspeed wlo1} ${color #0077ff}Net Up:$color ${upspeed wlo1} ${color #0077ff}${downspeedgraph wlo1 32,155 104E8B 0077ff} $alignr${color #0077ff}${upspeedgraph wlo1 32,155 104E8B 0077ff} ${endif}
次の画像のように表示されます: https://i.imgur.com/pQQbsP6.png
UTF-8 マルチバイト文字のスクロールの修正
現在のバージョンの conky (1.9.0) には文字列ではなくバイト数によってスクロールするテキストが増えるというバグが存在し [2]、結果としてマルチバイト文字を含むテキストでスクロールが消えたり現れたりするということが起こります。このバグを修正するパッチをあてたパッケージが AUR に存在します: conky-utfscrollAUR。
nvidia サポートのサンプルリングスクリプト
[3] を参照。
記号フォントに関する注意
装飾がある conky.conf
では大抵 PizzaDude Bullets と Pie Charts for Maps フォントを使っています。これらのフォントはそれぞれ ttf-pizzadude-bulletsAUR と ttf-piechartsformapsAUR[リンク切れ: アーカイブ: aur-mirror] として AUR からインストールすることができ、もしくはフォントの記事に書かれている方法を使って手動でインストールすることもできます。
本来よりフォントが小さく表示される
conky のフォントがやけに小さく表示されたり、ちゃんと並ばない場合、infinality の freetype2 パッチのデフォルト設定が原因かもしれません。この設定は 96 DPI ではなく 72 DPI でフォントを表示するプログラムに問題を生じさせます。たとえシステムを 96 DPI に設定していても関係ありません。この問題を修正するには /etc/fonts/infinality/infinality.conf
を開いて DPI のセクションを探して 72 から 96 に変更してください。
完全透過を有効にする万能の方法
透過は conky における KAIJU ですが、xcompmgr と transset-df を使ってどんな環境やウィンドウマネージャでも完全透過を適用する方法が存在します。xcompmgr と transset-df をインストールしてください。
xcompmgr のドキュメントを確認してどのコンポジットオプションを有効にすべきか決めて下さい。以下は標準的なコマンドになります。
$ xcompmgr -c -t-5 -l-5 -r4.2 -o.55 &
conky &
で conky が実行中か確認してください。transset-df を使って Conky ウィンドウの透過を有効にします。'.5' は 0 - 1 の好きな値に設定してください。
$ transset-df .5 -n Conky
これで conky のウィンドウが完全透過します。No Window matching Conky exists!
のようなエラーが表示される場合、conky が動作しているか確認してから、xprop を使って conky のウィンドウをクリックして、transset-df
に指定するべき名前を確認してください。
$ xprop | grep WM_NAME
WM_NAME(STRING) = "Conky (ArchitectLinux)"
上記の場合、conky で合っていますが、別の文字列が出力された場合は、それに合わせて指定するようにしてください。conky.conf
で own_window_type
オプションを panel
に設定していた場合、xprop を実行しても何も出力されないことがあります。その場合は dock
, normal
, override
, desktop
などを使うようにしてみてください。
~/.xinitrc
に以下を記述することで X の起動後に conky に透過を適用することができます:
xcompmgr -c -t-5 -l-5 -r4.2 -o.55 & conky -d; sleep 1 && transset-df .5 -n Conky
参照
- 公式ウェブサイト
- 設定に使用する Conky 変数
- Conky オブジェクト
- Arch フォーラムの Conky 設定スレッド
- Conky on Freecode
- #conky IRC chat channel on freenode
- FAQ