読者です 読者をやめる 読者になる 読者になる

Ubuntu 13.10でConkyの背景を透過させた

Ubuntu バグ・不具合 Linux用ソフト

関連:Ubuntu 12.10でConkyを設定する
長いこと.conkyrcを使い回してきたが、Ubuntu 12.10ではConky起動後にF5キーを押してデスクトップを更新しないと透過せず、Ubuntu 13.04ではアイコンをドラッグしないと透過しないようになるなど、微妙な不具合に遭遇し、ついにUbuntu 13.10でどうやっても背景が透過しなくなってしまったので、仕方なく設定を見直すことにした。
今までの透過は疑似透過だったので、

own_window_type normal
own_window_argb_visual yes

という設定に変更して真の透過機能を利用することにした(疑似透過との違いはConkyの背後にアイコンを置いた時に見えるかどうか)。
ただ own_window_type を normal にしてしまうと、全てのウィンドウを閉じた時にフォーカスが失われて一部のキーボードショートカット(ワークスペースの移動など)が利かなくなる(Superキーを押すなどすれば直るが)、というバグがあるので、設定を、

# own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager ↓に変更
own_window_hints below,sticky,skip_taskbar,skip_pager

に変更し、CompizConfig 設定マネージャでウィンドウの装飾装飾適用ウィンドウの欄を、

any & !(class=Conky)

に変更した。

Ubuntu 14.04では↑のウィンドウの装飾の設定を変更しても効果がない。仕様が変更されたためと思われる。

さらに、この設定にするとF4キーでConkyのウィンドウを閉じることが出来てしまうため、間違って閉じてしまった時のために、自動でConkyを起動し直すスクリプトを用意した。

#!/bin/sh

# http://www.yukun.info/blog/2008/01/shell-script-kill-process.html
# http://www.yukun.info/blog/2008/01/shell-script-kill-process-2.html

firstRun=`ps -e | grep "conky" | grep -v grep | wc -l`

if [ $firstRun = 0 ]; then
    conky -p 15 &
    echo "conky15秒後に起動します"
fi

checkRun=`ps -e | grep "CONKY_RUNNER" | grep -v grep | wc -l`

if [ $checkRun = 1 ]; then
    echo "CONKY_RUNNERを起動します"
elif [ $checkRun = 2 ]; then
    #何かcheckRunの値が2になる
    echo "CONKY_RUNNERを起動します"
else
    echo "既にCONKY_RUNNERが起動中です"
    exit
fi

while true
do
    isAlive=`ps -e | grep "conky" | \
    grep -v grep | wc -l`

    if [ $isAlive = 0 ]; then
        echo "conkyは死んでいます"
        conky &
    else
        echo "conkyは生きています"
    fi

    sleep 1
done

このスクリプト自動起動するアプリケーションに登録しておけばOK。
以下は設定を見直した後の.conkyrc。ほぼ丸パクリ。

# http://1204lts.blogspot.jp/2012/12/ubuntuconky-conky-gray.html

use_xft yes
xftfont Ricty:size=12
alignment bottom_right
background no
border_width 1
default_color white
default_outline_color grey
default_shade_color grey
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
gap_x 5
gap_y 5
minimum_size 900 40
double_buffer yes
out_to_console no
own_window yes
own_window_class Conky
own_window_type normal
own_window_transparent no
own_window_argb_visual yes
own_window_argb_value 155
own_window_colour 1B0D18
own_window_hints below,sticky,skip_taskbar,skip_pager
stippled_borders no
update_interval 1.0
uppercase no
use_spacer none
show_graph_scale no
show_graph_range no

TEXT
以下略