diff --git a/.gitignore b/.gitignore index 197070b..d5912b7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,2 @@ wmx-defaults-1.tar.gz wmx-7.tar.gz -/wmx-7.tar.gz -/wmx-defaults-1.tar.gz -/wmx-defaults-2.tar.gz -/wmx-8.tar.gz -/wmx-defaults-3.tar.gz diff --git a/Xclients.wmx.sh b/Xclients.wmx.sh old mode 100644 new mode 100755 diff --git a/sources b/sources index b43253b..decc05b 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -52a0e31b9a77e227eb6dc732f7941f15 wmx-8.tar.gz -d5d5e760039fce77133abff54ce97cc1 wmx-defaults-3.tar.gz +a5f221d36884276cbf331414d4f2a761 wmx-defaults-1.tar.gz +e8eda438f5dda09d11ba7de1dcf9e501 wmx-7.tar.gz diff --git a/wmx-8-cfg.patch b/wmx-7-cfg.patch similarity index 72% rename from wmx-8-cfg.patch rename to wmx-7-cfg.patch index 560bd60..b6ce74b 100644 --- a/wmx-8-cfg.patch +++ b/wmx-7-cfg.patch @@ -1,20 +1,7 @@ -diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h ---- wmx-8.orig/Config.h 2014-11-16 14:34:19.000000000 -0500 -+++ wmx-8/Config.h 2014-11-20 09:41:54.238623357 -0500 -@@ -77,11 +77,11 @@ - // Spawn a temporary new shell between the wm and each new process? - #define CONFIG_EXEC_USING_SHELL False - - // What to run to get a new window (from the "New" menu option) - #define CONFIG_NEW_WINDOW_LABEL "New" --#define CONFIG_NEW_WINDOW_COMMAND "x-terminal-emulator" -+#define CONFIG_NEW_WINDOW_COMMAND "/usr/bin/xterm" - #define CONFIG_NEW_WINDOW_COMMAND_OPTIONS 0 - // or, for example, - //#define CONFIG_NEW_WINDOW_COMMAND_OPTIONS "-ls","-sb","-sl","1024",0 - // alternatively, - #define CONFIG_DISABLE_NEW_WINDOW_COMMAND (DynamicConfig::config.disableNew()) -@@ -92,11 +92,11 @@ +diff -NarU5 wmx-7.orig/Config.h wmx-7/Config.h +--- wmx-7.orig/Config.h 2009-01-09 06:18:03.000000000 -0500 ++++ wmx-7/Config.h 2009-01-13 13:23:31.000000000 -0500 +@@ -93,11 +93,11 @@ // Directory under $HOME in which to look for commands for the // middle-button menu @@ -27,7 +14,7 @@ diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h #define CONFIG_ADD_SCREEN_TO_COMMAND_MENU False // Focus possibilities. -@@ -125,11 +125,11 @@ +@@ -126,11 +126,11 @@ // Number of pixels off the screen you have to push a window // before the manager notices the window is off-screen (the higher @@ -40,7 +27,7 @@ diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h // other window edges as well as the edges of the screen #define CONFIG_BUMP_EVERYWHERE True -@@ -192,11 +192,11 @@ +@@ -185,11 +185,11 @@ // This is the key for wm controls: e.g. Alt/Left and Alt/Right to // flip channels, and Alt/Tab to switch windows. (On my 105-key @@ -53,7 +40,7 @@ diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h // modifier is pressed; they're keysyms as defined in // and -@@ -335,11 +335,11 @@ +@@ -329,11 +329,11 @@ #define CONFIG_MENU_BORDERS "black" // Pixel width for the bit of frame to the left of the window and the @@ -66,7 +53,7 @@ diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h // ======================== // Section IV. Flashy stuff // ======================== -@@ -348,11 +348,11 @@ +@@ -342,11 +342,11 @@ // in ./background.xpm; if USE_PIXMAP_MENUS is also True, the menus // will be too. The latter screws up in palette-based visuals, but // should be okay in true-colour. diff --git a/wmx-7-composite.patch b/wmx-7-composite.patch new file mode 100644 index 0000000..fa9520f --- /dev/null +++ b/wmx-7-composite.patch @@ -0,0 +1,227 @@ +diff -NarU5 wmx-7.orig/Config.h wm2-wmx-trunk/wmx/Config.h +--- wmx-7.orig/Config.h 2009-01-09 06:18:03.000000000 -0500 ++++ wm2-wmx-trunk/wmx/Config.h 2009-01-19 13:49:50.000000000 -0500 +@@ -146,10 +146,18 @@ + // if False, behaviour will be as in wm2 (stretching the background + // image only). + + #define CONFIG_RESIZE_UPDATE True + ++// If USE_COMPOSITE is true, wmx will enable composite redirects for ++// all windows if the Composite extension is present. This should ++// make no difference at all to the appearance or behaviour of wmx, ++// but it may make it substantially faster with modern video cards ++// that optimise rendering more than old-fashioned window operations. ++ ++#define CONFIG_USE_COMPOSITE True ++ + // If RAISELOWER_ON_CLICK is True, clicking on the title of the + // topmost window will lower instead of raising it (patch due to + // Kazushi (Jam) Marukawa) + + #define CONFIG_RAISELOWER_ON_CLICK False +@@ -253,14 +261,12 @@ + // at all, define it to CONFIG_NO_BUTTON. + #define CONFIG_NO_BUTTON 999 + #define CONFIG_CLIENTMENU_BUTTON Button1 + #define CONFIG_COMMANDMENU_BUTTON Button2 + #define CONFIG_CIRCULATE_BUTTON Button3 // switch window, when over frame +-#define CONFIG_PREVCHANNEL_BUTTON CONFIG_NO_BUTTON // flip channel, when over frame +-#define CONFIG_NEXTCHANNEL_BUTTON CONFIG_NO_BUTTON +-//#define CONFIG_PREVCHANNEL_BUTTON CONFIG_NO_BUTTON +-//#define CONFIG_NEXTCHANNEL_BUTTON CONFIG_NO_BUTTON ++#define CONFIG_PREVCHANNEL_BUTTON Button5 // flip channel, when over frame ++#define CONFIG_NEXTCHANNEL_BUTTON Button4 // flip channel, when over frame + + + // ============================== + // Section III. Colours and fonts + // ============================== +diff -NarU5 wmx-7.orig/configure wm2-wmx-trunk/wmx/configure +--- wmx-7.orig/configure 2009-01-09 06:18:03.000000000 -0500 ++++ wm2-wmx-trunk/wmx/configure 2009-01-19 11:57:15.000000000 -0500 +@@ -3018,10 +3018,87 @@ + + fi + + + ++{ echo "$as_me:$LINENO: checking for XCompositeQueryExtension in -lXcomposite" >&5 ++echo $ECHO_N "checking for XCompositeQueryExtension in -lXcomposite... $ECHO_C" >&6; } ++if test "${ac_cv_lib_Xcomposite_XCompositeQueryExtension+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lXcomposite $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char XCompositeQueryExtension (); ++int ++main () ++{ ++return XCompositeQueryExtension (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_Xcomposite_XCompositeQueryExtension=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_Xcomposite_XCompositeQueryExtension=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xcomposite_XCompositeQueryExtension" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xcomposite_XCompositeQueryExtension" >&6; } ++if test $ac_cv_lib_Xcomposite_XCompositeQueryExtension = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBXCOMPOSITE 1 ++_ACEOF ++ ++ LIBS="-lXcomposite $LIBS" ++ ++else ++ ++ echo "Warning: Xcomposite library not found" ++ echo "Please either install the Xcomposite library and headers, or ensure you have CONFIG_USE_COMPOSITE set to False in Config.h" ++ ++fi ++ ++ ++ + { echo "$as_me:$LINENO: checking for SmcOpenConnection in -lSM" >&5 + echo $ECHO_N "checking for SmcOpenConnection in -lSM... $ECHO_C" >&6; } + if test "${ac_cv_lib_SM_SmcOpenConnection+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +diff -NarU5 wmx-7.orig/configure.in wm2-wmx-trunk/wmx/configure.in +--- wmx-7.orig/configure.in 2009-01-09 06:18:03.000000000 -0500 ++++ wm2-wmx-trunk/wmx/configure.in 2009-01-19 11:57:15.000000000 -0500 +@@ -37,10 +37,16 @@ + AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [], [ + echo "Warning: Xpm library not found" + echo "Please either install the Xpm library and headers, or ensure you have CONFIG_USE_PIXMAPS set to False in Config.h" + ]) + ++dnl Composite is necessary if CONFIG_USE_COMPOSITE ++AC_CHECK_LIB(Xcomposite, XCompositeQueryExtension, [], [ ++ echo "Warning: Xcomposite library not found" ++ echo "Please either install the Xcomposite library and headers, or ensure you have CONFIG_USE_COMPOSITE set to False in Config.h" ++ ]) ++ + dnl SM and ICE are necessary if CONFIG_USE_SESSION_MANAGER + AC_CHECK_LIB(SM, SmcOpenConnection) + AC_CHECK_LIB(ICE, IceConnectionNumber) + + dnl Freetype: actually only needed if CONFIG_USE_XFT +diff -NarU5 wmx-7.orig/Makefile.in wm2-wmx-trunk/wmx/Makefile.in +--- wmx-7.orig/Makefile.in 2009-01-09 06:18:03.000000000 -0500 ++++ wm2-wmx-trunk/wmx/Makefile.in 2009-01-19 14:12:30.000000000 -0500 +@@ -43,10 +43,15 @@ + cp wmx @bindir@/wmx + -chmod 0755 @bindir@/wmx + -chown root:wheel @bindir@/wmx + -rm -f @bindir@/wmx.old + ++install-rpm: ++ mkdir -p $(DESTDIR)/usr/bin/ ++ cp wmx $(DESTDIR)/usr/bin/wmx ++ ++ + # DO NOT DELETE -- make depend depends on it + Border.o: Border.C Border.h General.h Config.h Rotated.h Client.h \ + Manager.h listmacro.h background.xpm + Buttons.o: Buttons.C Manager.h General.h Config.h listmacro.h Client.h \ + Border.h Rotated.h Menu.h +diff -NarU5 wmx-7.orig/Manager.C wm2-wmx-trunk/wmx/Manager.C +--- wmx-7.orig/Manager.C 2009-01-09 06:18:03.000000000 -0500 ++++ wm2-wmx-trunk/wmx/Manager.C 2009-01-19 13:49:50.000000000 -0500 +@@ -13,10 +13,14 @@ + #include + + #include "Cursors.h" + #include + ++#ifdef CONFIG_USE_COMPOSITE ++#include ++#endif ++ + Atom Atoms::wm_state; + Atom Atoms::wm_changeState; + Atom Atoms::wm_protocols; + Atom Atoms::wm_delete; + Atom Atoms::wm_takeFocus; +@@ -242,10 +246,21 @@ + if (!m_display) fatal("can't open display"); + + m_shell = (char *)getenv("SHELL"); + if (!m_shell) m_shell = NewString("/bin/sh"); + ++#ifdef CONFIG_USE_COMPOSITE ++ int ev, er; ++ if (XCompositeQueryExtension(m_display, &ev, &er)) { ++ fprintf(stderr, "\n Enabling composite extension.\n"); ++ for (int i = 0; i < m_screensTotal; ++i) { ++ XCompositeRedirectSubwindows(m_display, RootWindow(m_display, i), ++ CompositeRedirectAutomatic); ++ } ++ } ++#endif ++ + // find out what the Alt keycode and thus modifier mask are + int kpk = 0; + int kmin = 0; + int kmax = 0; + XDisplayKeycodes(m_display, &kmin, &kmax); +diff -NarU5 wmx-7.orig/Menu.C wm2-wmx-trunk/wmx/Menu.C +--- wmx-7.orig/Menu.C 2009-01-09 06:18:03.000000000 -0500 ++++ wm2-wmx-trunk/wmx/Menu.C 2009-01-19 14:12:30.000000000 -0500 +@@ -54,10 +54,14 @@ + tokstr = 0; + + FcPattern *pattern = FcPatternCreate(); + FcPatternAddString(pattern, FC_FAMILY, (FcChar8 *)fi); + FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ROMAN); ++ ++#ifndef FC_WEIGHT_REGULAR ++#define FC_WEIGHT_REGULAR FC_WEIGHT_MEDIUM ++#endif + FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_REGULAR); + FcPatternAddInteger(pattern, FC_PIXEL_SIZE, CONFIG_MENU_FONT_SIZE); + FcConfigSubstitute(FcConfigGetCurrent(), pattern, FcMatchPattern); + + FcResult result = FcResultMatch; diff --git a/wmx.spec b/wmx.spec index 3ea685b..f8a7420 100644 --- a/wmx.spec +++ b/wmx.spec @@ -1,20 +1,20 @@ Name: wmx -Version: 8 -Release: 28%{?dist} +Version: 7 +Release: 4%{?dist} Summary: A really simple window manager for X -# Automatically converted from old format: BSD - review is highly recommended. -License: LicenseRef-Callaway-BSD +License: BSD +Group: User Interface/X URL: http://www.all-day-breakfast.com/wmx/ Source0: http://www.all-day-breakfast.com/wmx/%{name}-%{version}.tar.gz -Source1: wmx-defaults-3.tar.gz +Source1: wmx-defaults-1.tar.gz Source2: background.xpm Source3: wmx.desktop Source4: Xclients.wmx.sh -Patch0: wmx-8-cfg.patch -#wmx's 'New' button is hardcoded to start an xterm, better make sure we have it: -Requires: xterm -BuildRequires: make -BuildRequires: gcc-c++ xorg-x11-proto-devel libX11-devel libXpm-devel libXext-devel libXaw-devel libXt-devel libXcomposite-devel freetype-devel libXft-devel +Source5: xnodecor.c +Patch0: wmx-7-composite.patch +Patch1: wmx-7-cfg.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: xorg-x11-proto-devel libX11-devel libXpm-devel libXext-devel libXaw-devel libXt-devel libXcomposite-devel freetype-devel libXft-devel %description A really simple window manager for X, based on wm2, with a minimal set of @@ -24,145 +24,35 @@ configurable options. %setup -q %setup -q -a 1 %{__install} -p -m 0644 %{SOURCE2} . -%patch -P0 -p1 +%patch0 -p1 +%patch1 -p1 %build -%configure --x-libraries=%{_libdir} --x-includes=%{_includedir}/X11 LIBS=-lfontconfig +%configure --x-libraries=%{_libdir} --x-includes=%{_includedir}/X11 %{__make} %{?_smp_mflags} +%{__cc} -o xnodecor %{SOURCE5} -Werror -lX11 %install %{__rm} -rf %{buildroot} %{__install} -D -m 0755 wmx %{buildroot}%{_bindir}/wmx +%{__install} -D -m 0755 xnodecor %{buildroot}%{_bindir}/xnodecor %{__install} -d -m 0755 %{buildroot}%{_datadir}/%{name} -%{__install} -m 0755 wmx-defaults-3/* %{buildroot}%{_datadir}/%{name} +%{__install} -m 0755 wmx-defaults-1/* %{buildroot}%{_datadir}/%{name} %{__chmod} 0644 %{buildroot}%{_datadir}/%{name}/startup %{__install} -D -m 0644 %{SOURCE3} %{buildroot}%{_datadir}/xsessions/wmx.desktop %{__install} -D -m 0755 %{SOURCE4} %{buildroot}%{_sysconfdir}/X11/xinit/Xclients.d/Xclients.wmx.sh +%clean +%{__rm} -rf %{buildroot} + %files +%defattr(-,root,root) %doc README* UPDATES TODO.netwm rsharman-patch/ %{_bindir}/* -%{_datadir}/%{name} -%{_datadir}/xsessions/* +%{_datadir}/* %{_sysconfdir}/X11/xinit/Xclients.d/* %changelog -* Fri Jul 17 2026 Fedora Release Engineering - 8-28 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Sat Jan 17 2026 Fedora Release Engineering - 8-27 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Fri Jul 25 2025 Fedora Release Engineering - 8-26 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Sun Jan 19 2025 Fedora Release Engineering - 8-25 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Sep 04 2024 Miroslav Suchý - 8-24 -- convert license to SPDX - -* Sat Jul 20 2024 Fedora Release Engineering - 8-23 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Mon Jan 29 2024 Fedora Release Engineering - 8-22 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jan 27 2024 Fedora Release Engineering - 8-21 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jul 22 2023 Fedora Release Engineering - 8-20 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sat Jan 21 2023 Fedora Release Engineering - 8-19 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Jul 23 2022 Fedora Release Engineering - 8-18 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sat Jan 22 2022 Fedora Release Engineering - 8-17 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Fri Jul 23 2021 Fedora Release Engineering - 8-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Wed Jan 27 2021 Fedora Release Engineering - 8-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 8-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Fri Jan 31 2020 Fedora Release Engineering - 8-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Sat Jul 27 2019 Fedora Release Engineering - 8-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sun Feb 03 2019 Fedora Release Engineering - 8-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Mon Jul 23 2018 Gabriel Somlo 8-10 -- add "BuildRequires: gcc-c++" (#1606700) - -* Sat Jul 14 2018 Fedora Release Engineering - 8-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Fri Feb 09 2018 Fedora Release Engineering - 8-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Thu Aug 03 2017 Fedora Release Engineering - 8-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 8-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 8-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Fri Feb 05 2016 Fedora Release Engineering - 8-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Jun 19 2015 Fedora Release Engineering - 8-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Sat May 02 2015 Kalev Lember - 8-2 -- Rebuilt for GCC 5 C++11 ABI change - -* Thu Nov 20 2014 Gabriel Somlo 8-1 -- update to 8 - -* Mon Aug 18 2014 Fedora Release Engineering - 7-14.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sun Jun 08 2014 Fedora Release Engineering - 7-13.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sun Aug 04 2013 Fedora Release Engineering - 7-12.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Fri Feb 15 2013 Fedora Release Engineering - 7-11.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Sun Jul 22 2012 Fedora Release Engineering - 7-10.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Mon Jan 09 2012 Gabriel Somlo 7-9.20120109svn -- upgrade to latest svn checkout -- updated defaults -- dropped xnodecor - -* Mon Feb 07 2011 Fedora Release Engineering - 7-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Tue Dec 07 2010 Gabriel Somlo 7-7 -- explicitly link against libfontconfig (BZ 660741) - -* Mon Mar 01 2010 Gabriel Somlo 7-6 -- fixed directory ownership (BZ 569408) - -* Mon Jul 27 2009 Fedora Release Engineering - 7-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - * Wed Feb 25 2009 Fedora Release Engineering - 7-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild @@ -193,10 +83,10 @@ configurable options. * Fri Sep 08 2006 Gabriel Somlo 6pl1-14 - rebuilt for FC6MassRebuild -* Thu Jun 08 2006 Gabriel Somlo 6pl1-13 +* Wed Jun 08 2006 Gabriel Somlo 6pl1-13 - rebuild -* Thu Jun 08 2006 Gabriel Somlo 6pl1-12 +* Wed Jun 08 2006 Gabriel Somlo 6pl1-12 - more X11 buildrequires (thanks tibbs@math.uh.edu and Jarod Wilson) * Wed Jun 07 2006 Gabriel Somlo 6pl1-11 @@ -251,5 +141,5 @@ configurable options. * Tue Aug 09 2005 Gabriel Somlo 6pl1-0 - rebuilt for Fedora Core 4 -* Sun May 23 2004 Gabriel Somlo +* Wed May 23 2004 Gabriel Somlo - initial spec and packages. diff --git a/xnodecor.c b/xnodecor.c new file mode 100644 index 0000000..91ed79c --- /dev/null +++ b/xnodecor.c @@ -0,0 +1,141 @@ +/* Copyright 1998 by Vadim Kolontsov + * All rights reserved + * + * Distribute freely, except: don't remove my name from the source or + * documentation (don't take credit for my work), mark your changes (don't + * get me blamed for your possible bugs), don't alter or remove this + * notice. May be sold if buildable source is provided to buyer. No + * warrantee of any kind, express or implied, is included with this + * software; use at your own risk, responsibility for damages (if any) to + * anyone resulting from the use of this software rests entirely with the + * user. + * + * Send bug reports, bug fixes, enhancements, requests, flames, etc., and + * I'll try to keep a version up to date. I can be reached as follows: + * + * Vadim Kolontsov + *----------------------------------------------------------------------- + * This program sets attribute "override_redirect" to True for any window + * you've specified (using window name). Window Managers should ignore + * such windows; it's useful, for example, if you're using wmx Window Manager, + * and want to have a clock on every virtual screen and without any + * borders. Just add the following string to your X-startfile (after + * starting watch app): + * + * xnodecor -w watch + * + * (assuming that your watch application has a window named "watch") + * + * For details see http://sb.123.org/xnodecor.html + * + * Tested on FreeBSD 2.2.2, XFree86 3.2, wmx-4 + * + * Compilation: + * + * gcc -o xnodecor xnodecor.c -L/usr/X11R6/lib -I/usr/X11R6/include -lX11 */ + +#include +#include +#include +#include +#include +#include + +#define WAIT_DEFAULT 0 +#define WAIT_TIMEOUT 15 +#define VERBOSE_DEFAULT 0 + +int main(int argc, char *argv[]) +{ + Display *d; + Window w1, w2, *wins; + int c; + XSetWindowAttributes a; + char *name, *program_name, *display_name = NULL; + unsigned int i, n, found = 0, + f_wait = WAIT_DEFAULT, + f_verbose = VERBOSE_DEFAULT, + delay = WAIT_TIMEOUT; + + if (argv && argv[0] && *argv[0]) + program_name = (program_name = rindex(argv[0], '/')) ? + (*++program_name ? program_name : "xnodecor") : argv[0]; + + while ((c = getopt(argc, argv, "vd:wt:h")) != EOF) + switch (c) + { + case 'd': + display_name = strdup(optarg); + break; + + case 'w': + f_wait = f_wait ? 0 : 1; + break; + + case 'v': + f_verbose = f_verbose ? 0 : 1; + break; + + case 't': + delay = atoi(optarg); + break; + + case 'h': + default: + fprintf(stderr, "Usage: %s [options] window-name\n\n" + " -d display specify alternative display\n" + " -w wait for specified window (default: %swait)\n" + " -t n timeout for waiting (default: %d sec)\n" + " -v verbose mode (default: %s)\n" + " -h this help\n\n", program_name, + f_wait ? "" : "no ", delay, + f_verbose ? "on" : "off"); + exit(0); + } + + argc -= optind; + argv += optind; + + if (argc != 1) + { + fprintf(stderr, "%s: Window name not specified\n", program_name); + exit(1); + } + + d = XOpenDisplay(display_name); + if (!d) + { + fprintf(stderr, "%s: Can't open display\n", program_name); + exit(1); + } + + do + { + if (XQueryTree(d, RootWindow(d, 0), &w1, &w2, &wins, &n) == 0) + { + fprintf(stderr, "%s: XQueryTree failed\n", program_name); + exit(1); + } + + found = 0; + for (i = 0; i < n; i++) + if (XFetchName(d, wins[i], &name)) + { + if (f_verbose) printf("%s\n", name); + if (!strcmp(name, argv[0])) + { + if (f_verbose) printf("(found!)\n"); + + a.override_redirect = 1; + XChangeWindowAttributes(d, wins[i], CWOverrideRedirect, &a); + found = 1; + } + } + + if (f_wait) + sleep(1); + } while (f_wait && delay-- && !found); + + XCloseDisplay(d); +} +