「Conky/ヒントとテクニック」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (二段階認証に用語を統一) |
|||
(他の1人の利用者による、間の4版が非表示) | |||
101行目: | 101行目: | ||
[https://bbs.archlinux.org/viewtopic.php?id=67304 このスレッド] を参照。 |
[https://bbs.archlinux.org/viewtopic.php?id=67304 このスレッド] を参照。 |
||
− | == |
+ | == WordPress ブログの統計を表示 == |
− | + | python で書かれた [http://evilshit.wordpress.com/2013/04/20/conkypress-a-wordpress-stats-visualization-tool-for-your-desktop/ ConkyPress] という名前の拡張を使うことで表示できます。 |
|
+ | == 新着メールの数を表示する == |
||
− | == Display number of new emails == |
||
− | Conky |
+ | Conky には IMAP と POP3 のサポートが組み込まれていますが、SSL 経由のアクセスはサポートされていません。Conky の FAQ では、これに {{Pkg|stunnel}} を使用することを推奨しており、設定例が示されています [https://conky.sourceforge.net/faq.html#Conky's-built-in-IMAP-and-POP3-doesn't-support-SSL-or-TLS/ こちら] |
− | + | {{ic|/etc/stunnel/stunnel.conf}} を次のように変更し、{{ic|stunnel.service}} を [[起動]] します: |
|
# Service-level configuration for TLS server |
# Service-level configuration for TLS server |
||
136行目: | 136行目: | ||
=== Gmail === |
=== Gmail === |
||
− | + | 二段階認証を使用する場合は、[https://myaccount.google.com/apppasswords アプリパスワード] を使用する必要があります。 |
|
+ | 方法 1、2、および 3 の場合: |
||
− | For method 1, 2 and 3: |
||
+ | 次のファイルのいずれかを便利な場所 (たとえば、{{ic|~/.scripts/}}) に作成します。 |
||
− | Create one of the following files in a convenient location (for example in {{ic|~/.scripts/}}). |
||
+ | 次に、次の文字列を {{ic|conky.conf}} に追加して、Gmail アカウントの新しいメールを 5 分 (300 秒) ごとにチェックして表示します: |
||
− | Then add the following string to your {{ic|conky.conf}} in order the check your Gmail account for new email every five minutes (300 seconds) and display: |
||
${execi 300 python ~/.scripts/gmail.py} |
${execi 300 python ~/.scripts/gmail.py} |
||
− | ==== |
+ | ==== 方法 1 ==== |
+ | このスクリプトは、Gmail の Atom API を介して新規メールの数を取得します。 |
||
− | This script uses retrieves the number of new email via Gmail's Atom API. |
||
{{hc|gmail.py|<nowiki> |
{{hc|gmail.py|<nowiki> |
||
#!/usr/bin/env python3 |
#!/usr/bin/env python3 |
||
179行目: | 179行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | ==== |
+ | ==== 方法 2 ==== |
+ | 方法 1 と同じですが、適切な XML 解析が行われます。 |
||
− | Same as method 1, but does proper XML parsing. |
||
{{hc|gmail.py|<nowiki> |
{{hc|gmail.py|<nowiki> |
||
211行目: | 211行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | ==== |
+ | ==== 方法 3 ==== |
− | + | 同じ方法ですが、{{ic|curl}}、{{ic|grep}}、および {{ic|sed}} を使用します: |
|
{{hc|gmail.sh| |
{{hc|gmail.sh| |
||
221行目: | 221行目: | ||
}} |
}} |
||
+ | ''メールアドレス'' と ''パスワード'' を自分のデータに置き換えてください。 |
||
− | replace ''email'' and ''password'' with your data. |
||
− | ==== IMAP + SSL |
+ | ==== IMAP + SSL と Perl を使う ==== |
+ | ''Conky'' には IMAP アカウントのサポートが組み込まれていますが SSL はサポートしていません。[http://www.unix.com/shell-programming-scripting/115322-perl-conky-gmail-imap-unread-message-count.html このフォーラムへの投稿] にあるスクリプトを使うことで利用することができます。{{Pkg|perl-mail-imapclient}} と {{Pkg|perl-io-socket-ssl}} パッケージの Perl/CPAN Modules Mail::IMAPClient と IO::Socket::SSL が必要です。 |
||
+ | Conky に読み込ませる場所に {{ic|imap.pl}} という名前のファイルを作成してください。このファイルには、以下の内容を記述します (必要なところは書き換えて下さい): |
||
− | ''Conky'' has built in support for IMAP accounts but does not support SSL. This can be provided using this script from [https://www.unix.com/shell-programming-scripting/115322-perl-conky-gmail-imap-unread-message-count.html this forum post]. This requires the Perl/CPAN Modules Mail::IMAPClient and IO::Socket::SSL which are in the {{Pkg|perl-mail-imapclient}} and {{Pkg|perl-io-socket-ssl}} packages |
||
+ | #!/usr/bin/perl |
||
− | |||
− | Create a file named {{ic|imap.pl}} in a location to be read by ''conky'' (for example in {{ic|~/.scripts/}}). In this file, add (with the appropriate changes): |
||
− | {{hc|imap.pl|<nowiki> |
||
− | #!/usr/bin/perl |
||
− | # by gxmsgx |
+ | # gimap.pl by gxmsgx |
− | # description: get the count of unread messages on imap |
+ | # description: get the count of unread messages on imap |
+ | |||
− | |||
− | use strict; |
+ | use strict; |
− | use Mail::IMAPClient; |
+ | use Mail::IMAPClient; |
− | use IO::Socket::SSL; |
+ | use IO::Socket::SSL; |
+ | |||
− | |||
− | my $username = 'example.username'; |
+ | my $username = 'example.username'; |
− | my $password = 'password123'; |
+ | my $password = 'password123'; |
+ | |||
− | |||
− | my $socket = IO::Socket::SSL->new( |
+ | my $socket = IO::Socket::SSL->new( |
− | PeerAddr => 'imap.server', |
+ | PeerAddr => 'imap.server', |
− | PeerPort => 993 |
+ | PeerPort => 993 |
− | + | ) |
|
− | + | or die "socket(): $@"; |
|
+ | |||
+ | my $client = Mail::IMAPClient->new( |
||
+ | Socket => $socket, |
||
+ | User => $username, |
||
+ | Password => $password, |
||
+ | ) |
||
+ | or die "new(): $@"; |
||
− | + | if ($client->IsAuthenticated()) { |
|
− | + | my $msgct; |
|
− | User => $username, |
||
− | Password => $password, |
||
− | ) |
||
− | or die "new(): $@"; |
||
− | + | $client->select("INBOX"); |
|
− | + | $msgct = $client->unseen_count||'0'; |
|
+ | print "$msgct\n"; |
||
+ | } |
||
+ | |||
+ | $client->logout(); |
||
+ | {{ic|conky.conf}} に次を追加: |
||
− | $client->select("INBOX"); |
||
+ | ${execpi 300 ~/.conky/imap.pl} |
||
− | $msgct = $client->unseen_count||'0'; |
||
+ | ファイルの位置は適宜変更してください。 |
||
− | print "$msgct\n"; |
||
− | } |
||
+ | Gmail を使う場合、アプリパスワードを [https://www.google.com/accounts/IssuedAuthSubTokens?hide_authsub=1 生成] する必要があります。 |
||
− | $client->logout(); |
||
− | </nowiki>}} |
||
+ | もしくは、上に書かれているように stunnel を使うこともできます: [[#Gmail]] |
||
− | Add to {{ic|conky.conf}}: |
||
− | ${execi 300 ~/.scripts/imap.pl} |
||
− | or wherever you saved the file. |
||
+ | ==== IMAP と PHP を使う ==== |
||
− | If you use Gmail you might need to [https://www.google.com/accounts/IssuedAuthSubTokens?hide_authsub=1 generate] an application specific password. |
||
+ | PHP を使用する別の方法。PHP をインストールし、{{ic|/etc/php/php.ini}} で {{ic|1=extension=imap}} のコメントを解除する必要があります。 |
||
− | Alternatively, you can use stunnel as shown above: [[#Gmail]] |
||
+ | 次に、''conky'' が読み取る場所 (たとえば、{{ic|~/.scripts/}}) に {{ic|imap.php}} という名前のファイルを作成します。ファイルを [[ヘルプ:読み方#実行可能属性の付与|実行可能ファイル]] にします。 |
||
− | ==== IMAP using PHP ==== |
||
+ | このファイルに、次の内容を追加します (適切な変更を加えてください。) |
||
− | Another alternative using PHP. PHP needs to be installed and {{ic|1=extension=imap}} must be uncommented in {{ic|/etc/php/php.ini}}. |
||
− | |||
− | Then create a file named {{ic|imap.php}} in a location to be read by ''conky'' (for example in {{ic|~/.scripts/}}). Make the file [[executable]]. |
||
− | |||
− | In this file, add (with the appropriate changes): |
||
{{hc|imap.php|<nowiki> |
{{hc|imap.php|<nowiki> |
||
307行目: | 304行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | + | {{ic|conky.conf}} に追加します: |
|
${execi 300 ~/.scripts/imap.php} |
${execi 300 ~/.scripts/imap.php} |
||
+ | またはファイルを保存した場所。 |
||
− | or wherever you saved the file. |
||
− | + | 上記のスクリプトは A/B と表示します。A は未読メールの数で B はメールボックスに存在するメールの合計数です。imap_Status などの PHP 関数を使うことで他の情報も表示できます (http://php.net/manual/function.imap-status.php) IMAP に関する PHP ドキュメントを見てください: http://php.net/manual/ref.imap.php |
|
+ | == 有効なネットワークインターフェイスを表示 == |
||
− | == Show graphic of active network interface == |
||
+ | ネットワークインターフェイスが有効化どうかテストするために、conky の {{ic|if_existing}} 変数を使ってインターフェイスの {{ic|operstate}} を確認できます。以下はインターフェイスが {{ic|wlo1}} の場合の例です: |
||
− | To test if a network inferface is currently active, you can use the test conky variable {{ic | if_existing}} on the {{ic | operstate}} of the interface. Here is an example for wlo1 : |
||
{{bc |draw_graph_borders yes |
{{bc |draw_graph_borders yes |
||
326行目: | 323行目: | ||
}} |
}} |
||
+ | 次の画像のように表示されます: https://i.imgur.com/pQQbsP6.png |
||
− | This is the expected result : |
||
− | |||
− | https://i.imgur.com/pQQbsP6.png |
||
+ | == ユーザー提供の設定例 == |
||
− | == User-contributed configuration examples == |
||
− | * |
+ | * nvidia をサポートするサンプル呼び出しスクリプト - [https://gist.github.com/anonymous/85d052c0c23e58bc3666 gist] |
2024年9月5日 (木) 20:58時点における最新版
関連記事
目次
パッケージのアップデート情報を表示する
pacman-contrib は、公式リポジトリからのパッケージの更新を表示する checkupdates
というスクリプトを提供します。${execi 3600 checkupdates | wc -l}
を実行すると、パッケージの総数が表示されます。
テキストファイルの末尾を表示
conky は、conky(1) § tail ファイルをデスクトップにすることができます。これは主にテキストファイルに役立ちます。たとえば、/var/log/
ファイルを読み取り、あらゆる種類のログメッセージを表示します。これらのファイルのほとんどは root
によってのみ読み取ることができますが、conky を root
として実行することは推奨されないため、に自分自身を log
ユーザーグループ に追加する必要があります。さらに、systemd ログファイルはバイナリファイルであるため、この機能は以前よりも役に立ちません。 ただし、lua スクリプトを使用して実現できます。
天気予報を表示する
これは、外部 Web ページ (通常は天気予報専用のページ) を読み取ることで実現されます。このスレッド を参照してください。lua の別の天気スクリプト: ここ
カウントダウンタイマーを表示する
ConkyTimer は作業の残り時間を表示するシンプルなカウントダウンタイマーです。
conkytimer "<task description>" <min>
でタイマーを開始できます。
RSS フィードを表示
外部のスクリプトを実行したり Conky に出力したりすることなく、RSS フィードをネイティブに表示する機能が Conky には備わっています。例えば、Planet Arch の最新の記事のタイトル10件を表示して毎分ごとにフィードを更新したい場合、以下を conky.conf
の TEXT
セクションに挿入します:
${rss https://planet.archlinux.org/rss20.xml 300 item_titles 10 }
Arch フォーラムの rss フィードを表示したい場合、次の行を追加します:
${rss https://bbs.archlinux.org/extern.php?action=feed&type=rss 300 item_titles 4}
300 は更新間隔で (15分がデフォルト)、4 は表示するアイテムの数です。
当月のカレンダーを表示します
次の lua スクリプトを使用してカレンダーを表示できます。color1
と設定のデフォルトの色が使用されます。等幅フォントを使用するのが最適です。
#!/usr/bin/env lua conky_color = "${color1}%2d${color}" t = os.date('*t', os.time()) year, month, currentday = t.year, t.month, t.day daystart = os.date("*t",os.time{year=year,month=month,day=01}).wday month_name = os.date("%B") days_in_month = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } -- check for leap year -- Any year that is evenly divisible by 4 is a leap year -- Any year that is evenly divisible by 100 is a leap year if -- it is also evenly divisible by 400. LeapYear = function (year) return year % 4 == 0 and (year % 100 ~= 0 or year % 400 == 0) end if LeapYear(year) then days_in_month[2] = 29 end title_start = (20 - (string.len(month_name) + 5)) / 2 title = string.rep(" ", math.floor(title_start+0.5)) .. -- add padding to center the title (" %s %s\n Su Mo Tu We Th Fr Sa\n"):format(month_name, year) io.write(title) function seq(a,b) if a > b then return else return a, seq(a+1,b) end end days = days_in_month[month] io.write( string.format( string.rep(" ", daystart-1) .. string.rep(" %2d", days), seq(1,days) ):gsub(string.rep(".",21),"%0\n") :gsub(("%2d"):format(currentday), (conky_color):format(currentday) ) .. "\n" )
conky.conf
内に以下を配置し、パスがスクリプトを保存した場所と一致することを確認します。
conky.text = [[ ${execpi 3600 ~/.config/conky/cal.lua} ]]
rTorrent の統計を表示
このスレッド を参照。
WordPress ブログの統計を表示
python で書かれた ConkyPress という名前の拡張を使うことで表示できます。
新着メールの数を表示する
Conky には IMAP と POP3 のサポートが組み込まれていますが、SSL 経由のアクセスはサポートされていません。Conky の FAQ では、これに stunnel を使用することを推奨しており、設定例が示されています こちら
/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
Then add the following to conky.conf
:
conky.config = { imap = "localhost username password [-i 120] [-f 'inbox'] [-p 993]", }
conky.text { Inbox: ${imap_unseen}/${imap_messages} }
Gmail
二段階認証を使用する場合は、アプリパスワード を使用する必要があります。
方法 1、2、および 3 の場合:
次のファイルのいずれかを便利な場所 (たとえば、~/.scripts/
) に作成します。
次に、次の文字列を conky.conf
に追加して、Gmail アカウントの新しいメールを 5 分 (300 秒) ごとにチェックして表示します:
${execi 300 python ~/.scripts/gmail.py}
方法 1
このスクリプトは、Gmail の Atom API を介して新規メールの数を取得します。
gmail.py
#!/usr/bin/env python3 import urllib.request email = 'your email' password = 'your password' # Set up authentication for gmail auth_handler = urllib.request.HTTPBasicAuthHandler() auth_handler.add_password(realm='mail.google.com', uri='https://mail.google.com/', user=email, passwd=password) opener = urllib.request.build_opener(auth_handler) # ...and install it globally so it can be used with urlopen. urllib.request.install_opener(opener) gmailurl = 'https://mail.google.com/gmail/feed/atom' with urllib.request.urlopen(gmailurl) as page: contents = page.read().decode('utf-8') ifrom = contents.index('<fullcount>') + 11 ito = contents.index('</fullcount>') fullcount = contents[ifrom:ito] print('{} new emails'.format(fullcount))
方法 2
方法 1 と同じですが、適切な XML 解析が行われます。
gmail.py
#!/usr/bin/env python3 import urllib.request from xml.etree import ElementTree as etree email = 'your email' password = 'your password' # Set up authentication for gmail auth_handler = urllib.request.HTTPBasicAuthHandler() auth_handler.add_password(realm='mail.google.com', uri='https://mail.google.com/', user=email, passwd=password) opener = urllib.request.build_opener(auth_handler) # ...and install it globally so it can be used with urlopen. urllib.request.install_opener(opener) gmailurl = 'https://mail.google.com/gmail/feed/atom' NS = '{http://purl.org/atom/ns#}' with urllib.request.urlopen(gmailurl) as source: tree = etree.parse(source) fullcount = tree.find(NS + 'fullcount').text print('{} new emails'.format(fullcount))
方法 3
同じ方法ですが、curl
、grep
、および sed
を使用します:
gmail.sh
#!/usr/bin/sh curl -s -u email:password https://mail.google.com/mail/feed/atom | grep fullcount | sed 's/<[^0-9]*>//g'
メールアドレス と パスワード を自分のデータに置き換えてください。
IMAP + SSL と Perl を使う
Conky には IMAP アカウントのサポートが組み込まれていますが SSL はサポートしていません。このフォーラムへの投稿 にあるスクリプトを使うことで利用することができます。perl-mail-imapclient と 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
のコメントを解除する必要があります。
次に、conky が読み取る場所 (たとえば、~/.scripts/
) に imap.php
という名前のファイルを作成します。ファイルを 実行可能ファイル にします。
このファイルに、次の内容を追加します (適切な変更を加えてください。)
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
に追加します:
${execi 300 ~/.scripts/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
ユーザー提供の設定例
- nvidia をサポートするサンプル呼び出しスクリプト - gist