試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Compiz Fusionの覚え書き(2008/9/29現在)

http://lists.compiz-fusion.org/pipermail/dev/2008-September/001045.html
にあるように、Compiz Fusionのバージョン0.7.8が出ている。

変更点

今回の変更点は不具合修正などが多いが、

  • 透明度の変更を行う部分が、「アクセシビリティ」内のプラグイン「明度と彩度」と一緒になって「Opacity,Brightness and Saturation」にまとめられた
  • 最大化/最小化/閉じるなどのアニメーションを行うプラグインが分割され、設定と基本的なアニメーションの種類のみをこれまでの「アニメーション」が担当し、幾つかのアニメーションの種類は追加扱いで別プラグイン「Animations Add-On」を有効にする必要が出た。分離されたほうのアニメーションの詳細は「Animations Add-On」プラグインの設定で行う

といったプラグインの整理もある。

Gentooのdesktop-effectsでバージョン0.7.8が利用可能に

laymanで追加できるOverlay「desktop-effects」のebuildが0.7.8対応になったが、「EAPI="2"」でebuildが書かれるようになったため、Portageのバージョンが2.2系でないと処理できない。2008/9/29現在は2.2_rc11が最新(リリース候補段階)。
(2008/11/2)2008年11月現在、公式のPortageツリーに0.7.8が入っているようだ。また、乗り換えた先のMandriva Linux 2009.0でも0.7.8はディストリのパッケージとして利用可能となっている。

compizコアからxcb依存を外すパッチが消えたので貼り付け

compizのコア部分のパッケージ(x11-wm/compiz)でxcbを外せないように書かれていたため、x11-xcb(libxcbサポートの付いたlibX11)を不要にするパッチとともに、それを適用できるようにするebuild*1を下に貼り付ける(libxcbなしで動作することを確認)。
ファイル名: compiz-0.7.8-drop-xcb.patch

diff -ur compiz-0.7.8.orig/configure.ac compiz-0.7.8/configure.ac
--- compiz-0.7.8.orig/configure.ac
+++ compiz-0.7.8/configure.ac
@@ -118,8 +118,7 @@
 metadatadir=$datadir/compiz
 AC_SUBST(metadatadir)
 
-COMPIZ_REQUIRES="x11-xcb    \
-		 xcomposite \
+COMPIZ_REQUIRES="xcomposite \
 		 xfixes	    \
 		 xdamage    \
 		 xrandr	    \
diff -ur compiz-0.7.8.orig/include/compiz-core.h compiz-0.7.8/include/compiz-core.h
--- compiz-0.7.8.orig/include/compiz-core.h
+++ compiz-0.7.8/include/compiz-core.h
@@ -33,7 +33,7 @@
 #include <stdio.h>
 #include <sys/time.h>
 
-#include <X11/Xlib-xcb.h>
+#include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <X11/extensions/Xdamage.h>
 #include <X11/extensions/Xcomposite.h>
@@ -896,8 +896,6 @@
 
     CompDisplay *next;
 
-    xcb_connection_t *connection;
-
     Display    *display;
     CompScreen *screens;
 
diff -ur compiz-0.7.8.orig/src/display.c compiz-0.7.8/src/display.c
--- compiz-0.7.8.orig/src/display.c
+++ compiz-0.7.8/src/display.c
@@ -1998,8 +1998,6 @@
 	return FALSE;
     }
 
-    d->connection = XGetXCBConnection (dpy);
-
     if (!compInitDisplayOptionsFromMetadata (d,
 					     &coreMetadata,
 					     coreDisplayOptionInfo,

ebuildとパッチは、別のローカル用Overlayへ配置し、下のようにebuildのリビジョン番号を高めにして(desktop-effectsのものより)優先させる。
[任意]ファイル名: compiz-0.7.8-r9999.ebuild

# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI="2"

inherit autotools eutils gnome2-utils multilib

DESCRIPTION="3D composite and windowmanager"
HOMEPAGE="http://www.compiz.org/"
SRC_URI="http://xorg.freedesktop.org/archive/individual/app/${P}.tar.gz"

LICENSE="GPL-2 LGPL-2.1 MIT"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="annotate dbus fuse gnome gtk kde kde4 svg xcb"
RESTRICT="mirror"

DEPEND="
	dev-libs/glib:2
	dev-libs/libxml2
	dev-libs/libxslt
	>=media-libs/glitz-0.5.6
	media-libs/libpng
	>=media-libs/mesa-6.5.1-r1
	>=x11-base/xorg-server-1.1.1-r1
	xcb? ( x11-libs/libX11[xcb] x11-libs/libxcb )
	x11-libs/libXcomposite
	x11-libs/libXdamage
	x11-libs/libXinerama
	x11-libs/libXrandr
	x11-libs/libICE
	x11-libs/libSM
	>=x11-libs/libXrender-0.9.2
	>=x11-libs/startup-notification-0.7
	annotate? (
			x11-libs/cairo[X]
	)
	dbus? ( >=sys-apps/dbus-1.0 )
	fuse? ( sys-fs/fuse )
	gnome? (
		>=gnome-base/gnome-control-center-2.16.1:2
		gnome-base/gnome-desktop
		gnome-base/gconf:2
	)
	gtk? (
		>=x11-libs/gtk+-2.8.0:2
		>=x11-libs/libwnck-2.18.3
		x11-libs/pango
	)
	kde? (
		|| ( kde-base/kwin:3.5
			kde-base/kdebase:3.5
		)
		dev-libs/dbus-qt3-old
	)
	kde4? (
		|| (
			kde-base/kwin:4.1
			kde-base/kwin:4
			kde-base/kwin:kde-svn
		)
	)
	svg? (
		>=gnome-base/librsvg-2.14.0:2
		>=x11-libs/cairo-1.0
	)
"

RDEPEND="${DEPEND}
	x11-apps/mesa-progs
	x11-apps/xvinfo"

DEPEND="${DEPEND}
	dev-util/pkgconfig
	x11-proto/damageproto
	x11-proto/xineramaproto"

src_prepare() {
	if ! use xcb; then
		epatch ${FILESDIR}/${P}-drop-xcb.patch || die "epatch failed"
	fi
	use gnome || {
		epatch "${FILESDIR}"/${PN}-no-gconf.patch
		ln -s "${ROOT}"/usr/share/aclocal/gconf-2.m4 acinclude.m4

		# required to apply the above patch
		intltoolize --copy --force || die "intltoolize failed"
		glib-gettextize --copy --force || die "glib-gettextize failed"
	}
	if ! use xcb || ! use gnome; then
		eautoreconf || die "eautoreconf failed"
	fi
}

src_configure() {
	econf \
		--disable-gnome-keybindings \
		--enable-librsvg \
		--with-default-plugins \
		$(use_enable annotate) \
		$(use_enable dbus) \
		$(use_enable dbus dbus-glib) \
		$(use_enable fuse) \
		$(use_enable gnome) \
		$(use_enable gnome gconf) \
		$(use_enable gnome metacity) \
		$(use_enable gtk) \
		$(use_enable kde) \
		$(use_enable kde4) \
		|| die "econf failed"
}

src_install() {
	emake DESTDIR="${D}" install || die "emake install failed"

	# Install compiz-manager
	dobin "${FILESDIR}/compiz-manager" || die "dobin failed"

	# Add the full-path to lspci
	sed -i "s#lspci#/usr/sbin/lspci#" "${D}/usr/bin/compiz-manager"

	# Create gentoo's config file
	dodir /etc/xdg/compiz

	cat <<- EOF > "${D}/etc/xdg/compiz/compiz-manager"
	COMPIZ_BIN_PATH="/usr/bin/"
	PLUGIN_PATH="/usr/$(get_libdir)/compiz/"
	LIBGL_NVIDIA="/usr/$(get_libdir)/opengl/xorg-x11/libGL.so.1.2"
	LIBGL_FGLRX="/usr/$(get_libdir)/opengl/xorg-x11/libGL.so.1.2"
	KWIN="$(type -p kwin)"
	METACITY="$(type -p metacity)"
	SKIP_CHECKS="yes"
	EOF

	dodoc AUTHORS ChangeLog NEWS README TODO || die "dodoc failed"
}

pkg_postinst() {
	use gnome && gnome2_gconf_install
}

pkg_prerm() {
	use gnome && gnome2_gconf_uninstall
}

*1:これに加え、libXrenderのバージョンに関しても、バージョン0.9.2で動作したので、依存バージョンを書き換えた