diff --git a/icewm-configure.patch b/icewm-configure.patch new file mode 100644 index 0000000..2d166b0 --- /dev/null +++ b/icewm-configure.patch @@ -0,0 +1,22 @@ +--- icewm-1.2.30/configure.in.old 2007-01-16 16:12:51.000000000 +0200 ++++ icewm-1.2.30/configure.in 2007-01-16 16:13:31.000000000 +0200 +@@ -814,7 +814,7 @@ + APPLICATIONS="${APPLICATIONS} icewm-menu-gnome2" + GNOME2_PREFIX=`pkg-config --variable=prefix gnome-desktop-2.0` + GWMDIR="${GNOME2_PREFIX}/share/gnome/wm-properties/" +- CONFIG_GNOME2_MENU_DIR="${GNOME2_PREFIX}/share/gnome/vfolders/" ++ CONFIG_GNOME2_MENU_DIR="${GNOME2_PREFIX}/share/desktop-directories/ + fi + + if test "${GNOME2_CFLAGS}" = ""; then +--- icewm-1.2.30/configure.old 2007-01-16 17:44:10.000000000 +0200 ++++ icewm-1.2.30/configure 2007-01-16 17:44:31.000000000 +0200 +@@ -12000,7 +12000,7 @@ + APPLICATIONS="${APPLICATIONS} icewm-menu-gnome2" + GNOME2_PREFIX=`pkg-config --variable=prefix gnome-desktop-2.0` + GWMDIR="${GNOME2_PREFIX}/share/gnome/wm-properties/" +- CONFIG_GNOME2_MENU_DIR="${GNOME2_PREFIX}/share/gnome/vfolders/" ++ CONFIG_GNOME2_MENU_DIR="${GNOME2_PREFIX}/share/desktop-directories/" + fi + + if test "${GNOME2_CFLAGS}" = ""; then diff --git a/icewm-keys.patch b/icewm-keys.patch new file mode 100644 index 0000000..e79d2d3 --- /dev/null +++ b/icewm-keys.patch @@ -0,0 +1,43 @@ +--- icewm-1.2.30/lib/keys.in.old 2007-01-18 13:55:20.000000000 +0200 ++++ icewm-1.2.30/lib/keys.in 2007-01-18 16:07:07.000000000 +0200 +@@ -9,28 +9,21 @@ + # You'll have to omit XK_ prefixs and to replace XF86XK_ prefixes by + # XF86. Valid modifiers are Alt, Ctrl, Shift, Meta, Super and Hyper. + # +-key "Alt+Ctrl+t" xterm +-key "Alt+Ctrl+f" fte +-key "Alt+Ctrl+e" nedit +-key "Alt+Ctrl+g" gimp +-key "Alt+Ctrl+n" netscape -noraise -remote openBrowser +-key "Alt+Ctrl+b" netscape -noraise -remote openBookmarks +-key "Alt+Ctrl+m" netscape -noraise -remote openURL(mailto:,new-window) ++key "Alt+Ctrl+t" xterm ++key "Alt+Ctrl+b" htmlview ++key "Alt+Ctrl+s" htmlview http://www.google.com + +-key "Alt+Ctrl+KP_Divide" aumix -v -5 # lower volume +-key "Alt+Ctrl+KP_Multiply" aumix -v +5 # raise volume ++key "Super+KP_Subtract" amixer sset PCM 5%- ++key "Super+KP_Add" amixer sset PCM 5%+ + + # "Multimedia key" bindings for XFree86. Gather the keycodes of your + # advanced function keys by watching the output of the xev command whilest + # pressing those keys and map those symbols by using xmodmap. + +-key "XF86Standby" killall -QUIT icewm +-key "XF86AudioLowerVolume" aumix -v -5 +-key "XF86AudioRaiseVolume" aumix -v +5 +-key "XF86AudioMute" aumix -v 0 +-key "XF86AudioPlay" cdplay play 1 +-key "XF86AudioStop" cdplay stop +-key "XF86HomePage" netscape -noraise -remote openHomepage +-key "XF86Mail" netscape -noraise -remote openURL(mailto:,new-window) +-key "XF86Search" netscape -noraise -remote openURL(http://www.google.com/) +-key "XF86Eject" eject ++key "XF86Standby" killall -QUIT icewm ++key "XF86AudioLowerVolume" amixer sset PCM 5%- ++key "XF86AudioRaiseVolume" amixer sset PCM 5%+ ++key "XF86AudioMute" amixer sset PCM 0% ++key "XF86HomePage" htmlview ++key "XF86Search" htmlview http://www.google.com ++key "XF86Eject" eject diff --git a/icewm-menu.patch b/icewm-menu.patch new file mode 100644 index 0000000..f81e10e --- /dev/null +++ b/icewm-menu.patch @@ -0,0 +1,22 @@ +--- icewm-1.2.30/lib/menu.in.old 2007-01-28 15:14:30.000000000 +0200 ++++ icewm-1.2.30/lib/menu.in 2007-01-28 15:17:12.000000000 +0200 +@@ -4,16 +4,7 @@ + # since modifications to this file will be discarded when you + # (re)install icewm. + # +-prog xterm xterm xterm +-prog rxvt xterm rxvt -bg black -cr green -fg white -C -fn 9x15 -sl 500 +-prog fte fte fte +-prog NEdit nedit nedit +-prog Mozilla mozilla mozilla +-prog XChat xchat xchat +-prog Gimp gimp gimp ++prog xterm /usr/share/icons/Bluecurve/32x32/apps/gnome-terminal.png xterm ++prog "Web browser" /usr/share/icons/Bluecurve/32x32/apps/mozilla-icon.png htmlview + separator +-menuprog Gnome folder icewm-menu-gnome1 --list @CONFIG_GNOME1_MENU_DIR@ +-menuprog Gnome folder icewm-menu-gnome2 --list @CONFIG_GNOME2_MENU_DIR@ +-menuprog KDE folder icewm-menu-gnome@GNOME_VER@ --list @CONFIG_KDE_MENU_DIR@ +-menufile Programs folder programs +-menufile Tool_bar folder toolbar ++menufile Programs folder programs.autogen diff --git a/icewm-startup b/icewm-startup new file mode 100644 index 0000000..dd5b592 --- /dev/null +++ b/icewm-startup @@ -0,0 +1,4 @@ +#!/bin/sh +[ ! -d ~/.icewm ] && mkdir ~/.icewm +icewm-xdg-menu --entire-menu --with-theme-paths --icon-size 16 --theme Bluecurve > ~/.icewm/programs.autogen + diff --git a/icewm-toolbar.patch b/icewm-toolbar.patch new file mode 100644 index 0000000..bce9c29 --- /dev/null +++ b/icewm-toolbar.patch @@ -0,0 +1,12 @@ +--- icewm-1.2.30/lib/toolbar.in.old 2007-01-18 18:51:55.000000000 +0200 ++++ icewm-1.2.30/lib/toolbar.in 2007-01-18 18:55:50.000000000 +0200 +@@ -4,6 +4,6 @@ + # since modifications to this file will be discarded when you + # (re)install icewm. + # +-prog XTerm xterm xterm +-prog FTE fte fte +-prog Netscape netscape netscape ++prog xterm /usr/share/icons/Bluecurve/32x32/apps/gnome-terminal.png xterm ++prog "Web browser" /usr/share/icons/Bluecurve/32x32/apps/mozilla-icon.png htmlview ++ diff --git a/icewm-xdg-menu b/icewm-xdg-menu new file mode 100644 index 0000000..103df3c --- /dev/null +++ b/icewm-xdg-menu @@ -0,0 +1,128 @@ +#!/usr/bin/python +""" +This script generates FreeDesktop application menu for IceWM window manager. + +Written by Konstantin Korikov , put in the public domain + +Requires pyxdg http://cvs.freedesktop.org/cgi-bin/viewcvs.cgi/pyxdg/ + +USAGE EXAMPLE + +Add to $HOME/.icewm/menu this line: + + menuprog Applications - icewm-xdg-menu + +and restart IceWM. +""" + +import sys +import locale +import getopt +import re +import xdg.Menu +import xdg.DesktopEntry +import xdg.IconTheme +import xdg.Config + +version = "0.3" + +def print_usage(exit_code = 1): + print """Usage: %s [options] +Options: + --locale=locale set output languege and encoding + --root-folder folder folder to generate (for example: /Games) + --terminal command set terminal emulator command (default: xterm -e %%s) + --default-folder-icon icon icon for folders that not provide Icon option + --default-entry-icon icon icon for entries that not provide Icon option + --with-theme-paths convert icon base names to icon absolute paths + using icon theme + --entire-menu print entire menu + --icon-size set default icon size + --theme theme set icon theme + --help print this help and exit + --version print version and exit +""" % sys.argv[0] + sys.exit(exit_code) + +def print_version(): + print "%s version %s" % ( + os.path.basename(sys.argv[0]), version) + sys.exit(0) + +root_folder = "" +terminal = "xterm -e %s" +default_folder_icon = "folder" +default_entry_icon = "-" +entire_menu = False +with_theme_paths = False +icon_size = 16 + +exec_clean1_re = re.compile(r'%[a-zA-Z]') +exec_clean2_re = re.compile(r'%%') +encoding = None +locale_str = None + +def find_icon(entry): + icon = entry.getIcon() + if icon and with_theme_paths: + icon = xdg.IconTheme.getIconPath(icon, icon_size) or icon + return icon + +def process_menu(menu): + for entry in menu.getEntries(): + if isinstance(entry, xdg.Menu.Menu): + name = entry.getName() or entry.DesktopFileID + icon = find_icon(entry) or default_folder_icon + + if entire_menu: + print ("menu \"%s\" \"%s\" {" % (name, icon)).encode(encoding) + process_menu(entry) + print "}".encode(encoding) + else: + print (("menuprog \"%s\" \"%s\" %s" % (name, icon, sys.argv[0])) + + (" --root-folder \"%s\"" % entry.getPath(org=True)) + + (" --terminal \"%s\"" % terminal) + + (" --default-folder-icon \"%s\"" % default_folder_icon) + + (" --default-entry-icon \"%s\"" % default_entry_icon) + + (" --theme \"%s\"" % xdg.Config.icon_theme) + + (" --icon-size \"%d\"" % icon_size) + + (with_theme_paths and " --with-theme-paths" or "")).encode(encoding), + if locale_str: + print (" --locale \"%s\"" % locale_str).encode(encoding), + print + elif isinstance(entry, xdg.Menu.MenuEntry): + de = entry.DesktopEntry + name = de.getName() or entry.DesktopFileID + icon = find_icon(de) or default_entry_icon + execute = exec_clean2_re.sub('%', exec_clean1_re.sub('', de.getExec())) + if de.getTerminal(): execute = terminal % execute + print ("prog \"%s\" \"%s\" %s" % (name, icon, execute)).encode(encoding) + +try: opts, args = getopt.getopt(sys.argv[1:], "", + ("help", "version", "locale=", + "root-folder=", "terminal=", "default-folder-icon=", + "default-entry-icon=", "entire-menu", "theme=", "with-theme-paths", + "icon-size=")) +except getopt.GetoptError: print_usage() + +locale.setlocale(locale.LC_ALL, "") + +for o, v in opts: + if o == "--locale": + locale_str = v + locale.setlocale(locale.LC_ALL, locale_str) + if o == "--root-folder": root_folder = v + elif o == "--terminal": terminal = v + elif o == "--default-folder-icon": default_folder_icon = v + elif o == "--default-entry-icon": default_entry_icon = v + elif o == "--entire-menu" : entire_menu = True + elif o == "--with-theme-paths" : with_theme_paths = True + elif o == "--icon-size": icon_size = int(v) + elif o == "--theme" : xdg.Config.setIconTheme(v) + elif o in ("-h", "-?", "--help"): print_usage(0) + elif o in ("-v", "--version"): print_version() + +encoding = locale.getlocale()[1] or 'UTF-8' +menu = xdg.Menu.parse() +if root_folder: menu = menu.getMenu(root_folder) +process_menu(menu) diff --git a/icewm.desktop b/icewm.desktop new file mode 100644 index 0000000..8cde392 --- /dev/null +++ b/icewm.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Icewm +Comment=Simple and fast window manger +Exec=icewm-session +Terminal=False +TryExec=icewm + +[Window Manager] +SessionManaged=true +# vi: encoding=utf-8 diff --git a/icewm.spec b/icewm.spec new file mode 100644 index 0000000..11910f7 --- /dev/null +++ b/icewm.spec @@ -0,0 +1,214 @@ +Name: icewm +Version: 1.2.30 +Release: 12%{?dist} +Summary: Light and configurable window manager + +Group: User Interface/Desktops +License: LGPL +URL: http://www.icewm.org +Source0: http://heanet.dl.sourceforge.net/sourceforge/%{name}/%{name}-%{version}.tar.gz +Source1: http://lostclus.linux.kiev.ua/scripts/icewm-xdg-menu +Source2: icewm.desktop +Source4: icewm-startup +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +BuildRequires: imlib-devel +BuildRequires: xorg-x11-proto-devel +BuildRequires: libXinerama-devel +BuildRequires: libXft-devel +BuildRequires: libICE-devel +BuildRequires: gettext +BuildRequires: gnome-desktop-devel +Requires: redhat-artwork +Requires: alsa-utils +Requires: htmlview +Requires: xterm + +Patch0: icewm-configure.patch +Patch1: icewm-menu.patch +Patch2: icewm-toolbar.patch +Patch3: icewm-keys.patch + + +%description +IceWM is a window manager for the X Window System (freedesktop, XFree86). +The goal of IceWM is speed, simplicity, and not getting in the user's way. + + +%package gnome +Summary: GNOME menu support for IceWM window manager +Group: User Interface/Desktops +Requires: gnome-menus +Requires: icewm = %{version}-%{release} + + + + +%description gnome +IceWM-gnome adds gnome-menu support for the IceWM window manager. + + +%package xdgmenu +Summary: Automatically generate the main IceWM menu +Group: User Interface/Desktops +Requires: pyxdg +Requires: icewm = %{version}-%{release} + + +%description xdgmenu +IceWM-xdgmenu generates static IceWM menu files from the existing +freedesktop.org .desktop files. Files are re-generated each time the +user logs-in. + + +%prep +%setup -q +%patch0 -p1 -b .configure +%patch1 -p1 -b .menu +%patch2 -p1 -b .toolbar +%patch3 -p1 -b .keys + + +%build +# Configure sets the CXXFLAGS to: -fpermissive -fno-exceptions -fno-rtti -Wxxx... +# In general it doesn't seem to break anything. BZ# if you hit something bad. +%configure --enable-gradients \ + --enable-antialiasing \ + --enable-menus-gnome2 \ + --disable-menus-gnome1 \ + --with-cfgdir=%{_sysconfdir}/icewm +make %{?_smp_mflags} + + +%install +rm -rf $RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="%{__install} -p" + +mkdir -p $RPM_BUILD_ROOT/%{_mandir}/man1 +%{__install} -p -m 644 doc/icewm.1.man $RPM_BUILD_ROOT/%{_mandir}/man1/icewm.1 + +%{__install} -p -m 755 %{SOURCE1} $RPM_BUILD_ROOT/%{_bindir} + +%{__install} -p -m 755 %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/icewm/startup + +mkdir -p $RPM_BUILD_ROOT/%{_datadir}/xsessions/ +%{__install} -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/xsessions/ + +%find_lang %{name} + + +%clean +rm -rf $RPM_BUILD_ROOT + + +%files -f %{name}.lang +%defattr(-,root,root,-) +%doc AUTHORS BUGS CHANGES COPYING README README.wm-session TODO doc/*.html +%exclude %{_datadir}/icewm/startup +%{_datadir}/icewm/ +%{_datadir}/xsessions/icewm.desktop +%{_mandir}/man1/icewm.1* +%{_bindir}/icewmbg +%{_bindir}/icehelp +%{_bindir}/icesh +%{_bindir}/icewm +%{_bindir}/icewm-session +%{_bindir}/icewmhint +%{_bindir}/icewmtray + + +%files gnome +%defattr(-,root,root,-) +%{_bindir}/icewm-menu-gnome2 + + +%files xdgmenu +%defattr(-,root,root,-) +%{_bindir}/icewm-xdg-menu* +%{_datadir}/icewm/startup + + +%changelog +* Sat Feb 10 2007 - 1.2.30-12 +- Add missing dot in the -gnome sub-package description. +- Replace REQ icewm (in both -gnome and -xdgmenu) with icewm-x.x.x. +- Fix -xdgmenu file list and %%install section. +- Preserve the source time-stamp. + +* Sun Feb 04 2007 - 1.2.30-11 +- Remove .Xdefaults fix from startup. (reported upstream). +- Replace buildroot with RPM_BUILD_ROOT. + +* Sun Jan 28 2007 - 1.2.30-10 +- Missing REQ: icewm (both -gnome and -xdgmenu) +- Updated menu.in patch. +- Updated startup script. (-xdgmenu) +- Updated icewm-xdg-menu script. (-xdgmenu) + +* Thu Jan 25 2007 - 1.2.30-9 +- Remove redundant icewm-xdg-menu* %%file entry. +- Change sub-package name to xdgmenu. +- Move icewm-xdg-menu to xdgmenu sub-package. +- Removed the icewm-generate-menu script. + +* Sat Jan 20 2007 - 1.2.30-8 +- Fix source1 URL. (2nd is a winner) +- Fix -gnome summery. +- New sub-package: icewm-xdg-menu +- ALPHA: icewm-generate-menu script added to use icewm-xdg-menu to generate static menus. + +* Sat Jan 20 2007 - 1.2.30-7 +- Fix source1 URL. +- Fix xdg-menu* owner. +- Replace default terminal icon to reduce dep-chain. +- Fix icewm-gnome description. +- Replace install with %%{_install} +- Push -gnome's BR to main package. +- Change hard-coded sysconf path. + +* Tue Jan 18 2007 - 1.2.30-6 +- Change license back to LGPL. +- Change summery. +- New sub-package: -gnome. (GNOME menu support.) +- Missing REQ: xterm. +- Missing REQ: htmlview. +- Remove redundant %%_sysconf section. +- Remove redundant redhat-xxx icons. +- New REQ: redhat-artwork. (icons) +- Better man pages handling. +- Customize keys to better match fedora. +- New REQ: eject. (keys) +- New REQ: alsautils. (keys) + +* Wed Jan 17 2007 - 1.2.30-5 +- Fix Source0 URL. +- Replace cp with install. +- Do not gzip the man page, just copy it. +- Use htmlview instead of firefox. +- Use BlueCurve icons instead of the mozilla ones. +- Re-fix lang support. +- Return the default configuration files to %%_datadir +- Add gdm session support. +- Remove gnome-menus from default menu - replace it with pyxdg/icewm-xdg-menu. + +* Tue Jan 16 2007 - 1.2.30-4 +- Fix man page name. +- Remove missing menu items. +- Convert GNOME-menu patch to configure.in patch. +- Push default configuration into /etc/icewm +- Remove the default KDE support. (At least for now) +- Require firefox (default browser in Fedora). +- Add missing firefox icon. (No source - manual convert) +- Add missing gnome-menus. (required for GNOME2 menus) +- Fix missing gettext BR. +- Fix missing lang support. + +* Sat Jan 13 2007 - 1.2.30-3 +- Fix wrong license. (Was LGPL, should be GPL.) + +* Tue Jan 11 2007 - 1.2.30-2 +- Manually add missing man page. + +* Tue Jan 11 2007 - 1.2.30-1 +- Initial release. +