[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [PATCH] Introduces metacity window manager (needed for #520146)



Hi,

1 comment inline.

On 02/15/2010 05:58 PM, Ales Kozumplik wrote:
We need a solid window manager to be able to open and close the
nm-connection-editor window.
---
  anaconda             |   41 ++++++++++++++++------
  scripts/upd-instroot |   92 +++++++++++++++++++++++++++++++++++++++++++++----
  2 files changed, 114 insertions(+), 19 deletions(-)

diff --git a/anaconda b/anaconda
index 6b33988..f4bceca 100755
--- a/anaconda
+++ b/anaconda
@@ -36,7 +36,7 @@ from tempfile import mkstemp

  # keep up with process ID of miniwm if we start it

-miniwm_pid = None
+wm_pid = None

  # Make sure messages sent through python's warnings module get logged.
  def AnacondaShowWarning(message, category, filename, lineno, file=sys.stderr, line=None):
@@ -67,22 +67,41 @@ def startMiniWM(root='/'):

      return childpid

+def startMetacityWM():
+    childpid = os.fork()
+    if not childpid:
+        cmd = '/usr/bin/metacity'
+        if not os.access(cmd, os.X_OK):
+            log.error("Unable to find the window manager binary.")
+            sys.exit(1)
+        args = ['--display', ':1',
+                '--sm-disable']
+        rc = iutil.execWithRedirect(cmd, args,
+                               stdout='/dev/null', stderr='/dev/null')
+        if rc:
+            log.error("Error running window manager.")
+            sys.exit (rc)
+        else:
+            log.info("The window manager has terminated.")
+            sys.exit(0)
+    return childpid
+

Why the exec with redirect, why not simple exec metacity ?

Other then that, ack.

  # function to handle X startup special issues for anaconda
  def doStartupX11Actions(runres="800x600"):
-    global miniwm_pid
+    global wm_pid

      setupGraphicalLinks()

      # now start up mini-wm
      try:
-        miniwm_pid = startMiniWM()
-        log.info("Started mini-wm")
+        wm_pid = startMetacityWM()
+        log.info("Started metacity, pid %s." % (wm_pid,))

      except:
-        miniwm_pid = None
-        log.error("Unable to start mini-wm")
+        wm_pid = None
+        log.error("Unable to start the window manager.")

-    if miniwm_pid is not None:
+    if wm_pid is not None:
          import xutils
          import gtk

@@ -103,12 +122,12 @@ def doStartupX11Actions(runres="800x600"):
              raise RuntimeError, "X server failed to start"

  def doShutdownX11Actions():
-    global miniwm_pid
+    global wm_pid

-    if miniwm_pid is not None:
+    if wm_pid is not None:
          try:
-            os.kill(miniwm_pid, 15)
-            os.waitpid(miniwm_pid, 0)
+            os.kill(wm_pid, 15)
+            os.waitpid(wm_pid, 0)
          except:
              pass

diff --git a/scripts/upd-instroot b/scripts/upd-instroot
index 217f997..bd7760a 100755
--- a/scripts/upd-instroot
+++ b/scripts/upd-instroot
@@ -159,7 +159,7 @@ PACKAGES="GConf2 NetworkManager ORBit2 acl anaconda
      anaconda-yum-plugins at-spi atk attr audit-libs bash bitmap-fonts-cjk
      btrfs-progs bzip2 bzip2-libs ca-certificates cairo cjkuni-uming-fonts
      comps-extras coreutils cpio cracklib cracklib-dicts cracklib-python
-    cryptsetup-luks cyrus-sasl-lib db4 dbus dbus-python dejavu-sans-fonts
+    cryptsetup-luks cyrus-sasl-lib db4 dbus dbus-python dbus-x11 dejavu-sans-fonts
      dcbd dejavu-sans-mono-fonts device-mapper device-mapper-libs
      device-mapper-multipath device-mapper-multipath-libs
      dhclient dmraid dmraid-libs
@@ -173,16 +173,17 @@ PACKAGES="GConf2 NetworkManager ORBit2 acl anaconda
      libXaw libXcursor libXdmcp libXevie libXext libXfixes libXfont libXft
      libXi libXinerama libXmu libXpm libXrandr libXrender libXt libXtst
      libXxf86misc libacl libaio libart_lgpl libattr libbdevid libbdevid-python
-    libbonobo libcurl libfontenc libidn libgcc
-    libglade2 libgnomecanvas libgcrypt libgpg-error libjpeg libnl
+    libbonobo libcanberra libcanberra-gtk2 libcurl libfontenc libidn libgcc
+    libglade2 libgnomecanvas libgcrypt libgpg-error libjpeg libnl libogg
      libpng libselinux libselinux-python libsemanage
-    libsemanage-python libsepol libssh2 libstdc++ libthai libtirpc libuser
-    libuser-python libvolume_id libxcb libxkbfile libxml2 lklug-fonts
+    libsemanage-python libsepol libssh2 libstdc++ libtdb libthai libtirpc
+    libtool-ltdl libuser
+    libuser-python libvolume_id libvorbis libxcb libxkbfile libxml2 lklug-fonts
      lohit-assamese-fonts lohit-bengali-fonts lohit-gujarati-fonts lohit-hindi-fonts
      lohit-kashmiri-fonts lohit-kannada-fonts lohit-maithili-fonts lohit-marathi-fonts
      lohit-oriya-fonts lohit-punjabi-fonts lohit-sindhi-fonts lohit-tamil-fonts
      lohit-telugu-fonts lvm2 madan-fonts mdadm
-    mesa-dri-drivers mkinitrd module-init-tools nash ncurses neon net-tools
+    mesa-dri-drivers metacity mkinitrd module-init-tools nash ncurses neon net-tools
      newt newt-python nfs-utils nspr nss nss-softokn ntfs-3g
      openldap openssh openssh-server
      pam pango parted pciutils pcre psmisc
@@ -190,12 +191,13 @@ PACKAGES="GConf2 NetworkManager ORBit2 acl anaconda
      python-libs python-nss python-pyblock python-sqlite python-epdb
      python-urlgrabber python-volume_key pyxf86config readline redhat-artwork
      reiserfs-utils rpm rpm-libs rpm-python sed selinux-policy-targeted
-    setup slang smc-meera-fonts specspo sqlite synaptics system-config-date
+    setup slang smc-meera-fonts specspo sqlite startup-notification
+    synaptics system-config-date
      system-config-keyboard ${brandpkgname}-logos ${brandpkgname}-release
      sysvinit-tools taipeifonts tcp_wrappers tcp_wrappers-libs telnet
      tzdata udev un-core-dotum-fonts urw-fonts util-linux-ng tigervnc-server
      tigervnc-server-module vlgothic-fonts vim-minimal
-    wget wpa_supplicant xkeyboard-config xfsprogs xorg-x11-xauth
+    wget wpa_supplicant xcb-util xkeyboard-config xfsprogs xorg-x11-xauth
      xorg-x11-drivers xorg-x11-font-utils xorg-x11-fonts-ethiopic
      xorg-x11-fonts-misc xorg-x11-server-utils
      xorg-x11-server-Xorg xorg-x11-xkb-utils xorg-x11-xfs yum
@@ -499,10 +501,22 @@ usr/$LIBDIR/libuser/*
  usr/$LIBDIR/pango
  usr/$LIBDIR/python?.?
  usr/$LIBDIR/rpm/rpmpopt
+usr/$LIBDIR/libcanberra.so*
+usr/$LIBDIR/libcanberra-gtk.so*
  usr/$LIBDIR/libiscsi.so*
  usr/$LIBDIR/libfreebl3.so
+usr/$LIBDIR/libmetacity-private.so*
+usr/$LIBDIR/libogg.so*
  usr/$LIBDIR/libsoftokn3.so
  usr/$LIBDIR/libsqlite3.so*
+usr/$LIBDIR/libtdb.so*
+usr/$LIBDIR/libtdl.so*
+usr/$LIBDIR/libstartup-notification-1.so*
+usr/$LIBDIR/libvorbisfile.so*
+usr/$LIBDIR/libvorbis.so*
+usr/$LIBDIR/libxcb-atom.so*
+usr/$LIBDIR/libxcb-aux.so*
+usr/$LIBDIR/libxcb-event.so*
  usr/$LIBDIR/xorg/modules
  usr/$LIBDIR/libnssdbm3.so
  usr/$LIBDIR/xserver/SecurityPolicy
@@ -510,6 +524,7 @@ usr/bin/[
  usr/bin/Xorg
  usr/bin/Xvnc
  usr/bin/chattr*
+usr/bin/dbus-launch
  usr/bin/du
  usr/bin/expr
  usr/bin/gdb-gdbserver
@@ -529,6 +544,7 @@ usr/bin/lsattr*
  usr/bin/lshal
  usr/bin/maketilo
  usr/bin/md5sum
+usr/bin/metacity
  usr/bin/mini-wm
  usr/bin/mkzimage
  usr/bin/pango*
@@ -984,6 +1000,66 @@ directory = /mnt/sysimage/etc
  directory = /mnt/sysimage/etc
  EOF

+echo "Creating default metacity theme"
+mkdir -p $DEST/usr/share/themes/Atlanta/metacity-1
+cat>  $DEST/usr/share/themes/Atlanta/metacity-1/metacity-theme-1.xml<<EOF
+<?xml version="1.0"?>
+<metacity_theme>
+<info>
+<name>Anaconda</name>
+<author>Ales Kozumplik&lt;akozumpl redhat com&gt;</author>
+<description>Absolutely minimalist theme for the graphical installer.</description>
+</info>
+
+<frame_geometry name="minimal_geometry" has_title="false" hide_buttons="true">
+<distance name="left_width" value="0"/>
+<distance name="right_width" value="0"/>
+<distance name="bottom_height" value="0"/>
+<distance name="left_titlebar_edge" value="0"/>
+<distance name="right_titlebar_edge" value="0"/>
+<distance name="button_width" value="0"/>
+<distance name="button_height" value="0"/>
+<distance name="title_vertical_pad" value="0"/>
+<border name="title_border" left="0" right="0" top="0" bottom="0"/>
+<border name="button_border" left="0" right="0" top="0" bottom="0"/>
+</frame_geometry>
+
+<draw_ops name="blank">
+</draw_ops>
+
+<frame_style name="blank_frame_style" geometry="minimal_geometry">
+<button function="close" state="normal" draw_ops="blank"/>
+<button function="close" state="pressed" draw_ops="blank"/>
+<button function="minimize" state="normal" draw_ops="blank"/>
+<button function="minimize" state="pressed" draw_ops="blank"/>
+<button function="maximize" state="normal" draw_ops="blank"/>
+<button function="maximize" state="pressed" draw_ops="blank"/>
+<button function="menu" state="normal" draw_ops="blank"/>
+<button function="menu" state="pressed" draw_ops="blank"/>
+<piece position="title" draw_ops="blank"/>
+</frame_style>
+
+<frame_style_set name="blank_style_set">
+<frame focus="yes" state="normal" resize="both" style="blank_frame_style"/>
+<frame focus="no" state="normal" resize="both" style="blank_frame_style"/>
+<frame focus="yes" state="maximized" style="blank_frame_style"/>
+<frame focus="no" state="maximized" style="blank_frame_style"/>
+<frame focus="yes" state="shaded" style="blank_frame_style"/>
+<frame focus="no" state="shaded" style="blank_frame_style"/>
+<frame focus="yes" state="maximized_and_shaded" style="blank_frame_style"/>
+<frame focus="no" state="maximized_and_shaded" style="blank_frame_style"/>
+</frame_style_set>
+
+<window type="normal" style_set="blank_style_set"/>
+<window type="dialog" style_set="blank_style_set"/>
+<window type="modal_dialog" style_set="blank_style_set"/>
+<window type="menu" style_set="blank_style_set"/>
+<window type="utility" style_set="blank_style_set"/>
+<window type="border" style_set="blank_style_set"/>
+
+</metacity_theme>
+EOF
+
  sed -i 's|\(installforallkernels\) = 0|\1 = 1|' $DEST/etc/yum/pluginconf.d/fedorakmod.conf

  #


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]