]> git.draconx.ca Git - gentoo-fixes.git/commitdiff
x11-wm/fvwm: fixed prefix and man page installation.
authorNick Bowler <nbowler@draconx.ca>
Wed, 3 Feb 2021 04:54:34 +0000 (23:54 -0500)
committerNick Bowler <nbowler@draconx.ca>
Wed, 10 Mar 2021 06:55:09 +0000 (01:55 -0500)
x11-wm/fvwm/Manifest [new file with mode: 0644]
x11-wm/fvwm/files/README.translucency [new file with mode: 0644]
x11-wm/fvwm/files/fvwm-2.5.27-translucent-menus.diff [new file with mode: 0644]
x11-wm/fvwm/files/fvwm-2.6.5-ar.patch [new file with mode: 0644]
x11-wm/fvwm/files/fvwm-2.6.5-mouse-buttons.patch [new file with mode: 0644]
x11-wm/fvwm/files/fvwm-2.6.8-perl528.patch [new file with mode: 0644]
x11-wm/fvwm/files/fvwm-2.6.9-bundled-manpage.patch [new file with mode: 0644]
x11-wm/fvwm/files/fvwm-2.6.9-respect-docdir.patch [new file with mode: 0644]
x11-wm/fvwm/files/fvwm-2.6.9-respect-htmldir.patch [new file with mode: 0644]
x11-wm/fvwm/fvwm-2.6.9.ebuild [new file with mode: 0644]

diff --git a/x11-wm/fvwm/Manifest b/x11-wm/fvwm/Manifest
new file mode 100644 (file)
index 0000000..3606e76
--- /dev/null
@@ -0,0 +1,10 @@
+AUX README.translucency 3723 BLAKE2B aae37e9dbdf8f7b730b6947d55f0e286c1269d5cacc9ce6d2481562b054c2fa9010acf6ee0d6c994ea3cee64d3df99ef6d08dfa8c6b58706bc9bb8b477095e1b SHA512 a64ef5147e52e07d4cec8a2f3ebd1340827d0139031ef7ddaf27fc144fcc58858c3ec40eee854034423f853b2c7bdd813f66236c8a9679977084f4a2176a8ffa
+AUX fvwm-2.5.27-translucent-menus.diff 15765 BLAKE2B 85623d5d671d97842ffe819ddfa1045b91ef76101ccf8cc6fdf4854c1675b397715977efafb174e340c487bafed12677a1cacb83e201424a9fed43bdfa7f8475 SHA512 92f78b624ea2bfddb88f825f40930a0a7e4bb1d284276e62985f189cd5b72ee8a92131f7d2a91efdbf508fc8ef002f5b4168188b12b0e23e28fb1ebec471969d
+AUX fvwm-2.6.5-ar.patch 1077 BLAKE2B ebd3226a706087c7e7f7935a9862c59e628551e19be66d110441075839484b6bb26667104090258267b3e484c6fc0b0650349488902d216f3cf841c23e45b59e SHA512 fc66ee5c79b96860705d72b18aab3f8c8f8ad84fead47c4f8f944474a6bfbe0569ee08aa51e8a4d7982541eecd5c302499f99ebf8568f4b4fb1c9e2369233e45
+AUX fvwm-2.6.5-mouse-buttons.patch 519 BLAKE2B 23b31933e9dcc456d73be15573226017fc213da59156040136ff447b208b45691fca00b5d16cdaf57ab8411e2834d759b3bb7e53550b13ec72de4b7f70486abb SHA512 d28a9724697859ca7beac1cc2813c12413654e1c0749297c34fb0ef8bbf97369ac8039d2a82ec673d885b39e1544259b70cecf292639caa9ff99c1b42d34c196
+AUX fvwm-2.6.8-perl528.patch 515 BLAKE2B 44df7b8aef71d85c3aefefb40ab45b9e6227ef6a13aaab60cec8956db669013b4ee4dc869216972e1a443d1f69e6550e7f80dc81cdf8b7642d6c49ae46793b2a SHA512 ab35b8aef3c6d8a07f1e03290c209736ee892729d98fece3d0134fd9994f8c57bdd5703492b405a6eb52cfcd67cd9cd72c16bc25a729a46560eb6e21f2d7918f
+AUX fvwm-2.6.9-bundled-manpage.patch 340 BLAKE2B 5a63e18490342637ce1e692333db2faa19a175ab27516f02374cd29dff030b52e906e52d6eb0bd2914cd7105caf0c23ccc73a2cd0b743efec157e9db8bda5ad0 SHA512 de4cc81da91416f4183f61ec205b91650336d532194ea285298ea629610a1567bb1f6a6f95eda4003e247a110d3d2f2d5236cdfa795c636715f03813a0e1f9db
+AUX fvwm-2.6.9-respect-docdir.patch 455 BLAKE2B d4272d43e010a8a4456965033dff2c88a9965c6fa2c89040fa49855cd8fb7e84bf6a1fdb634359ac9f667501b29a23bf8dc052107119f53f5b9468eac2d43498 SHA512 ff17efd2f1c5e2e252ce78d6647617430582f5dad946ef6672f2893fbc383991d93725709631df671c9f10546d8f3d7fe7c634fadebfac70f1d63cc1c9f1df99
+AUX fvwm-2.6.9-respect-htmldir.patch 655 BLAKE2B 3199958847a2dee691fdecc3148f630ff4c13c74845053bf4e3d566712ef6791c34a02d091c8d2966458b19ef5f1ff16b25ed7eb93cbea2ab2ee026ae177a6e0 SHA512 a20b734342d2bd6dc3e1392852dc7fc20c0f1aaa0f7aa494f0da988c41b2f6f0d8cee8811de5d56afe67715d84fa72a072ffae1206f56425ab3c9763d9ce7fdc
+DIST fvwm-2.6.9.tar.gz 3942859 BLAKE2B 8faf2d420d96049ab0528a6c6a5dc6ed8ee9449f8e533b9ad9bb526faea86030684fc0aa8ed0d307cb64575457676611298adf582b1249c37a3db35a72b43bf1 SHA512 a9c2214ad19edd17da81446a6d4250284cc50b59b53c233212f2a9354c01143dbb870521392752f272f00af50bee2dd8f0b6bf6176b0d4b3075694d2a61a623e
+EBUILD fvwm-2.6.9.ebuild 4673 BLAKE2B 470385ab61dbadc9f7f2bea1f561e77e67ab4333912857f77f59f21d2ca38f4d7d447f686ddeece1576b7e5895fdce906ae55173ec87515e6a9e4891f2ce5f05 SHA512 c065d284de98f0521447804c88a0c1a88bdf731f72a5f6295e02c8e809675ae3ecd7aa0c7e4fd98b0766de66f40d455927d20a5f5477adafc23b4e8972f01ca7
diff --git a/x11-wm/fvwm/files/README.translucency b/x11-wm/fvwm/files/README.translucency
new file mode 100644 (file)
index 0000000..a60b5f6
--- /dev/null
@@ -0,0 +1,94 @@
+From owner-fvwm@hpc.uh.edu  Sun Aug 31 22:52:59 2003
+Received: from sina.hpc.uh.edu ([129.7.128.10] ident=lists)
+       by malifon.math.uh.edu with esmtp (Exim 3.20 #1)
+       id 19tb0F-0006NY-00; Sun, 31 Aug 2003 17:48:59 -0500
+Received: by sina.hpc.uh.edu (TLB v0.09a (1.20 tibbs 1996/10/09 22:03:07)); Sun, 31 Aug 2003 17:50:31 -0500 (CDT)
+Received: from epithumia.math.uh.edu (epithumia.math.uh.edu [129.7.128.2])
+       by sina.hpc.uh.edu (8.9.3/8.9.3) with ESMTP id RAA16575
+       for <fvwm@hpc.uh.edu>; Sun, 31 Aug 2003 17:50:24 -0500 (CDT)
+Received: from epithumia.math.uh.edu (epithumia.math.uh.edu [127.0.0.1])
+       by epithumia.math.uh.edu (8.12.8/8.12.5) with ESMTP id h7VMml6M025095
+       for <fvwm@hpc.uh.edu>; Sun, 31 Aug 2003 17:48:47 -0500
+Received: (from tibbs@localhost)
+       by epithumia.math.uh.edu (8.12.8/8.12.8/Submit) id h7VMmlVC025093
+       for fvwm@hpc.uh.edu; Sun, 31 Aug 2003 17:48:47 -0500
+Received: from util2.math.uh.edu (util2.math.uh.edu [129.7.128.23])
+       by sina.hpc.uh.edu (8.9.3/8.9.3) with ESMTP id QAA16418
+       for <fvwm@hpc.uh.edu>; Sun, 31 Aug 2003 16:02:07 -0500 (CDT)
+Received: from postfix4-2.free.fr ([213.228.0.176])
+       by util2.math.uh.edu with esmtp (Exim 4.20)
+       id 19tZIm-00079F-6t
+       for fvwm@fvwm.org; Sun, 31 Aug 2003 16:00:00 -0500
+Received: from snoopy.folie (nas-p19-3-62-147-221-172.dial.proxad.net [62.147.221.172])
+       by postfix4-2.free.fr (Postfix) with ESMTP id 59DE6C386
+       for <fvwm@fvwm.org>; Sun, 31 Aug 2003 22:59:34 +0200 (CEST)
+Received: by snoopy.folie (Postfix, from userid 501)
+       id A4D1D48784; Sun, 31 Aug 2003 22:39:19 +0200 (CEST)
+Date: Sun, 31 Aug 2003 22:39:19 +0200
+From: Olivier Chapuis <olivier.chapuis@free.fr>
+To: fvwm@fvwm.org
+Subject: Re: FVWM: Transparency/Translucency revisited...
+Message-ID: <20030831203919.GA6205@snoopy.folie>
+Mail-Followup-To: fvwm@fvwm.org
+References: <Pine.LNX.4.44.0308251817370.1980-100000@atlantis.ssw.krakow.pl>
+Mime-Version: 1.0
+Content-Type: multipart/mixed; boundary="Nq2Wo0NMKNjxTN9z"
+Content-Disposition: inline
+In-Reply-To: <Pine.LNX.4.44.0308251817370.1980-100000@atlantis.ssw.krakow.pl>
+User-Agent: Mutt/1.4i
+X-Spam-Score: -9.3 (---------)
+Sender: owner-fvwm@hpc.uh.edu
+Precedence: list
+X-Majordomo: 1.94.jlt7
+Status: RO
+Content-Length: 6519
+Lines: 122
+
+
+--Nq2Wo0NMKNjxTN9z
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+
+On Mon, Aug 25, 2003 at 09:00:32PM +0200, Dawid Kuroczko wrote:
+> Hello. :-)
+> 
+> I did manage to make pseudo-transparent menus, but now I'd like
+> to make something more "real".  What I'd like to do is to have
+> something like there is in KDE.
+> 
+> It should work like this:
+>  1. user clicks thus calling a Menu.
+>  2. current screen dump is taken (with all the windows, but
+>     without a menu just as yet).
+>  3. this screen dump is made available to Menu as
+>     root background pixmap.
+>  4. Menu is displayed with tinted real background.
+> 
+> This way it's pretty easy to make an illusion of real
+> transparency (and looks "l33t", as some may say).
+>
+
+Here a new version of the patch for current cvs/snapshot.
+This patch add a new options to Colorset: Translucent/NoTranslucent.
+These options has effects only with (non tear-off) menu.
+Also menu animation is "handled".
+
+For example with:
+
+  Colorset 5 fg yellow, bg blue, HGradient 200 lightblue darkblue, \
+         Translucent blue 60
+  Style * MenuColorset 5, PopupOffset 0 100, AnimationOff
+
+you get translucent menus (with a 60% blue tint) and if you tear-off
+a menu the menu use the gradient.
+
+Regards, Olivier
+
+<snip patch>
+
+--
+Visit the official FVWM web page at <URL: http://www.fvwm.org/>.
+To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
+message to majordomo@fvwm.org.
+To report problems, send mail to fvwm-owner@fvwm.org.
+
diff --git a/x11-wm/fvwm/files/fvwm-2.5.27-translucent-menus.diff b/x11-wm/fvwm/files/fvwm-2.5.27-translucent-menus.diff
new file mode 100644 (file)
index 0000000..1c49f69
--- /dev/null
@@ -0,0 +1,528 @@
+Index: fvwm/colorset.c
+===================================================================
+RCS file: /home/cvs/fvwm/fvwm/fvwm/colorset.c,v
+retrieving revision 1.52
+diff -u -r1.52 colorset.c
+--- fvwm/colorset.c    27 Jan 2007 11:33:15 -0000      1.52
++++ fvwm/colorset.c    5 Feb 2007 19:15:51 -0000
+@@ -164,6 +164,8 @@
+       "NoIconTint",
+       "IconAlpha",
++      "Translucent",
++      "NoTranslucent",
+       NULL
+ };
+@@ -625,6 +627,7 @@
+       char *fg_tint = NULL;
+       char *bg_tint = NULL;
+       char *icon_tint = NULL;
++      char *translucent_tint = NULL;
+       Bool have_pixels_changed = False;
+       Bool has_icon_pixels_changed = False;
+       Bool has_fg_changed = False;
+@@ -637,6 +640,7 @@
+       Bool has_fg_tint_changed = False;
+       Bool has_bg_tint_changed = False;
+       Bool has_icon_tint_changed = False;
++      Bool has_translucent_tint_changed = False;
+       Bool has_pixmap_changed = False;
+       Bool has_shape_changed = False;
+       Bool has_image_alpha_changed = False;
+@@ -763,6 +767,10 @@
+               case 21: /* Plain */
+                       has_pixmap_changed = True;
+                       free_colorset_background(cs, True);
++                      cs->is_translucent = False;
++                      cs->translucent_tint_percent = 0;
++                      cs->color_flags &= ~TRANSLUCENT_TINT_SUPPLIED;
++                      has_translucent_tint_changed = True;
+                       break;
+               case 22: /* NoShape */
+                       has_shape_changed = True;
+@@ -929,6 +937,24 @@
+                               cs->icon_alpha_percent = tmp;
+                       }
+                       break;
++              case 42: /* Translucent */
++                      cs->is_translucent = True;
++                      parse_simple_tint(
++                              cs, args, &translucent_tint,
++                              TRANSLUCENT_TINT_SUPPLIED,
++                              &has_translucent_tint_changed, &percent,
++                              "Translucent");
++                      if (has_translucent_tint_changed)
++                      {
++                              cs->translucent_tint_percent = percent;
++                      }
++                      break;
++              case 43: /* NoTranslucent */
++                      cs->is_translucent = False;
++                      cs->translucent_tint_percent = 0;
++                      cs->color_flags &= ~TRANSLUCENT_TINT_SUPPLIED;
++                      has_translucent_tint_changed = True;
++                      break;
+               default:
+                       /* test for ?Gradient */
+                       if (option[0] && StrEquals(&option[1], "Gradient"))
+@@ -1615,6 +1641,27 @@
+       }
+       /*
++       * ---------- change the translucent tint colour ----------
++       */
++      if (has_translucent_tint_changed)
++      {
++              /* user specified colour */
++              if (translucent_tint != NULL)
++              {
++                      PictureFreeColors(
++                              dpy, Pcmap, &cs->translucent_tint, 1, 0, True);
++                      cs->translucent_tint = GetColor(translucent_tint);
++              }
++              else
++              {
++                      /* default */
++                      PictureFreeColors(
++                              dpy, Pcmap, &cs->translucent_tint, 1, 0, True);
++                      cs->translucent_tint = GetColor(black);
++              }
++      }
++
++      /*
+        * ---------- send new colorset to fvwm and clean up ----------
+        */
+       /* make sure the server has this to avoid races */
+@@ -1710,6 +1757,7 @@
+                       ncs->fgsh = GetColor(white);
+                       ncs->tint = GetColor(black);
+                       ncs->icon_tint = GetColor(black);
++                      ncs->translucent_tint = GetColor(black);
+                       ncs->pixmap = XCreatePixmapFromBitmapData(
+                               dpy, Scr.NoFocusWin,
+                               &g_bits[4 * (nColorsets % 3)], 4, 4,
+@@ -1727,6 +1775,7 @@
+                       ncs->fgsh = GetForeShadow(ncs->fg, ncs->bg);
+                       ncs->tint = GetColor(black);
+                       ncs->icon_tint = GetColor(black);
++                      ncs->translucent_tint = GetColor(black);
+               }
+               ncs->fg_tint = ncs->bg_tint = GetColor(black);
+               /* set flags for fg contrast, bg average */
+@@ -1738,6 +1787,7 @@
+               ncs->icon_alpha_percent = 100;
+               ncs->tint_percent = 0;
+               ncs->icon_tint_percent = 0;
++              ncs->translucent_tint_percent = 0;
+               ncs->fg_tint_percent = ncs->bg_tint_percent = 0;
+               ncs->dither = (PictureDitherByDefault())? True:False;
+               nColorsets++;
+Index: fvwm/menuroot.h
+===================================================================
+RCS file: /home/cvs/fvwm/fvwm/fvwm/menuroot.h,v
+retrieving revision 1.3
+diff -u -r1.3 menuroot.h
+--- fvwm/menuroot.h    13 Jan 2007 15:07:14 -0000      1.3
++++ fvwm/menuroot.h    5 Feb 2007 19:17:37 -0000
+@@ -146,6 +146,9 @@
+               int d_npixels;
+       } stored_pixels;
+       /* alloc pixels when dithering is used for gradients */
++      /* x,y XMapRaise */
++      int x;
++      int y;
+ } MenuRootDynamic;
+ /* access macros to dynamic menu members */
+Index: fvwm/menus.c
+===================================================================
+RCS file: /home/cvs/fvwm/fvwm/fvwm/menus.c,v
+retrieving revision 1.409
+diff -u -r1.409 menus.c
+--- fvwm/menus.c       27 Jan 2007 11:51:15 -0000      1.409
++++ fvwm/menus.c       5 Feb 2007 19:17:50 -0000
+@@ -75,6 +75,19 @@
+ /* ---------------------------- local macros ------------------------------- */
++#define MENU_IS_TRANSLUCENT(mr,cs) \
++      (!MR_IS_TEAR_OFF_MENU(mr) && CSET_IS_TRANSLUCENT(cs))
++#define MENU_IS_TRANSPARENT(mr,cs) \
++      (MENU_IS_TRANSLUCENT(mr,cs) || CSET_IS_TRANSPARENT(cs))
++#define MR_IS_TRANSLUCENT_MENU(mr)  \
++      (!MR_IS_TEAR_OFF_MENU(mr) && MR_STYLE(mr) && \
++      ST_HAS_MENU_CSET(MR_STYLE(mr)) && CSET_IS_TRANSLUCENT( \
++                                              ST_CSET_MENU(MR_STYLE(mr))))
++#define MR_IS_TRANSPARENT_MENU(mr) \
++      (MR_IS_TRANSLUCENT_MENU(mr) || (MR_STYLE(mr) && \
++      ST_HAS_MENU_CSET(MR_STYLE(mr)) && CSET_IS_TRANSPARENT( \
++                                              ST_CSET_MENU(MR_STYLE(mr)))))
++
+ /* ---------------------------- imports ------------------------------------ */
+ /* This external is safe. It's written only during startup. */
+@@ -188,6 +201,8 @@
+ } mloop_static_info_t;
+ /* ---------------------------- forward declarations ----------------------- */
++static MenuRoot *seek_submenu_instance(
++      MenuRoot *parent_menu, MenuItem *parent_item);
+ /* ---------------------------- local variables ---------------------------- */
+@@ -353,12 +368,22 @@
+               Bool transparent_bg = False;
+               /* move it back */
+-              if (ST_HAS_MENU_CSET(MR_STYLE(mr)) &&
+-                  CSET_IS_TRANSPARENT(ST_CSET_MENU(MR_STYLE(mr))))
++              if (MR_IS_TRANSPARENT_MENU(mr))
+               {
+                       transparent_bg = True;
+                       get_menu_repaint_transparent_parameters(
+                               &mrtp, mr, fw);
++                      if (MR_IS_TRANSLUCENT_MENU(mr) && MR_SUBMENU_ITEM(mr))
++                      {
++                              MenuRoot *smr;
++                              smr = seek_submenu_instance(
++                                      mr, MR_SUBMENU_ITEM(mr));
++                              if (smr)
++                              {
++                                      /* just unmap it here, popdown later */
++                                      XUnmapWindow(dpy, MR_WINDOW(smr));
++                              }
++                      }
+               }
+               AnimatedMoveOfWindow(
+                       MR_WINDOW(mr), act_x, act_y, act_x - MR_XANIMATION(mr),
+@@ -1779,6 +1804,7 @@
+                               /* Doh.  Use the standard display instead. */
+                               MR_CREATE_DPY(mr) = dpy;
+                       }
++                      MR_IS_TEAR_OFF_MENU(mr) = 1;
+               }
+               else
+               {
+@@ -2594,7 +2620,37 @@
+       }
+       MR_IS_PAINTED(mr) = 1;
+       /* paint the menu background */
+-      if (ms && ST_HAS_MENU_CSET(ms))
++      if (MR_IS_TRANSLUCENT_MENU(mr))
++      {
++              Pixmap trans = None;
++              FvwmRenderAttributes fra;
++              colorset_t *colorset = &Colorset[ST_CSET_MENU(ms)];
++      
++              fra.mask = 0;
++              if (colorset->translucent_tint_percent > 0)
++              {
++                      fra.mask = FRAM_HAVE_TINT;
++                      fra.tint = colorset->translucent_tint;
++                      fra.tint_percent = colorset->translucent_tint_percent;
++              }
++              if (MR_IS_BACKGROUND_SET(mr) == False)
++              {
++                      trans = PGraphicsCreateTranslucent(
++                              dpy, MR_WINDOW(mr), &fra,
++                              BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
++                              MR_X(mr), MR_Y(mr), MR_WIDTH(mr), MR_HEIGHT(mr));
++                      XMapRaised(dpy, MR_WINDOW(mr));
++                      if (trans != None)
++                      {
++                              XSetWindowBackgroundPixmap(
++                                      dpy, MR_WINDOW(mr), trans);
++                              MR_IS_BACKGROUND_SET(mr) = True;
++                              clear_expose_menu_area(MR_WINDOW(mr), pevent);
++                              XFreePixmap(dpy, trans);
++                      }
++              }
++      }
++      else if (ms && ST_HAS_MENU_CSET(ms))
+       {
+               if (MR_IS_BACKGROUND_SET(mr) == False)
+               {
+@@ -3401,10 +3457,7 @@
+                                       MR_HAS_POPPED_UP_RIGHT(mr) = 0;
+                               }
+                               MR_XANIMATION(parent_menu) += end_x - prev_x;
+-                              if (ST_HAS_MENU_CSET(MR_STYLE(parent_menu)) &&
+-                                  CSET_IS_TRANSPARENT(
+-                                          ST_CSET_MENU(
+-                                                  MR_STYLE(parent_menu))))
++                              if (MR_IS_TRANSPARENT_MENU(parent_menu))
+                               {
+                                       transparent_bg = True;
+                                       get_menu_repaint_transparent_parameters(
+@@ -3583,10 +3636,21 @@
+        */
+       XMoveWindow(dpy, MR_WINDOW(mr), x, y);
++      MR_X(mr) = x;
++      MR_Y(mr) = y;
+       XSelectInput(dpy, MR_WINDOW(mr), event_mask);
+-      XMapRaised(dpy, MR_WINDOW(mr));
+-      if (popdown_window)
+-              XUnmapWindow(dpy, popdown_window);
++      if (MR_IS_TRANSLUCENT_MENU(mr))
++      {
++              if (popdown_window)
++                      XUnmapWindow(dpy, popdown_window);
++              paint_menu(mr, NULL, fw);
++      }
++      else
++      {
++              XMapRaised(dpy, MR_WINDOW(mr));
++              if (popdown_window)
++                      XUnmapWindow(dpy, popdown_window);
++      }
+       XFlush(dpy);
+       MR_MAPPED_COPIES(mr)++;
+       MST_USAGE_COUNT(mr)++;
+@@ -6123,16 +6187,122 @@
+       {
+               last = True;
+       }
+-      if (!last && CSET_IS_TRANSPARENT_PR_TINT(ST_CSET_MENU(ms)))
++      if (!last &&
++          (CSET_IS_TRANSPARENT_PR_TINT(ST_CSET_MENU(ms)) ||
++           MR_IS_TRANSLUCENT_MENU(mr)))
+       {
+               /* too slow ... */
+               return;
+       }
+-      SetWindowBackgroundWithOffset(
+-              dpy, MR_WINDOW(mr), step_x - current_x, step_y - current_y,
+-              MR_WIDTH(mr), MR_HEIGHT(mr),
+-              &Colorset[ST_CSET_MENU(ms)], Pdepth,
+-              FORE_GC(MST_MENU_INACTIVE_GCS(mr)), False);
++      if (MR_IS_TRANSLUCENT_MENU(mr))
++      {
++              Pixmap trans, tmp;
++              FvwmRenderAttributes fra;
++              colorset_t *colorset = &Colorset[ST_CSET_MENU(ms)];
++
++              fra.mask = 0;
++              if (colorset->translucent_tint_percent > 0)
++              {
++                      fra.mask = FRAM_HAVE_TINT;
++                      fra.tint = colorset->translucent_tint;
++                      fra.tint_percent = colorset->translucent_tint_percent;
++              }
++              if (current_x == step_x) 
++              {
++                      /* Reuse the old pixmap for the part of the menu 
++                       * that has not moved. (This can be extended to get
++                       * two new rectangles, one in each direction)
++                       * 
++                       * It saves the unmapping of the window and makes 
++                       * Things less flickering.
++                       */
++                      GC my_gc;
++                      unsigned long valuemask = GCSubwindowMode;
++                      XGCValues values;
++                      int out_y=0;
++                      values.subwindow_mode = IncludeInferiors;
++                      if (step_y < 0)
++                      {
++                              out_y = -step_y;
++                      }
++                      trans = XCreatePixmap(dpy, MR_WINDOW(mr), MR_WIDTH(mr),
++                                            MR_HEIGHT(mr), Pdepth);
++                      my_gc = fvwmlib_XCreateGC(dpy,  MR_WINDOW(mr), 0, NULL);
++                      XChangeGC(dpy, my_gc, valuemask, &values);
++
++                      XClearWindow(dpy, MR_WINDOW(mr));
++
++                      if (current_y < step_y)
++                      {
++                              XCopyArea(dpy, MR_WINDOW(mr), trans, my_gc, 0, 
++                                        step_y-current_y, MR_WIDTH(mr), 
++                                        MR_HEIGHT(mr)-(step_y-current_y),
++                                        0,0);
++                              tmp = PGraphicsCreateTranslucent(
++                                      dpy, MR_WINDOW(mr), &fra,
++                                      BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
++                                      current_x, current_y+MR_HEIGHT(mr), 
++                                      MR_WIDTH(mr), step_y-current_y);
++
++                              XCopyArea(dpy, tmp, trans, my_gc, 0, 0,
++                                        MR_WIDTH(mr), step_y-current_y,0,
++                                        MR_HEIGHT(mr)-(step_y-current_y));
++                      }
++                      else 
++                      {
++                              XCopyArea(dpy, MR_WINDOW(mr), trans, my_gc, 0, 
++                                        0, MR_WIDTH(mr), 
++                                        MR_HEIGHT(mr)-(current_y-step_y), 0,
++                                        current_y-step_y);
++                              tmp = PGraphicsCreateTranslucent(
++                                      dpy, MR_WINDOW(mr), &fra,
++                                      BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
++                                      current_x,step_y, MR_WIDTH(mr),
++                                      current_y-step_y);
++                              XCopyArea(dpy, tmp, trans, my_gc, 0, 0,
++                                        MR_WIDTH(mr), current_y-step_y,0,
++                                        out_y);
++                      }
++                      MR_X(mr) = step_x;
++                      MR_Y(mr) = step_y;
++                      XFreePixmap(dpy, tmp);
++                      XFreeGC(dpy,my_gc);
++              }               
++              else
++              {
++                      XUnmapWindow(dpy, MR_WINDOW(mr));
++                      MR_X(mr) = step_x;
++                      MR_Y(mr) = step_y;
++                      trans = PGraphicsCreateTranslucent(
++                              dpy, MR_WINDOW(mr), &fra,
++                              BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
++                              step_x, step_y, MR_WIDTH(mr), 
++                              MR_HEIGHT(mr));
++                      XMapRaised(dpy, MR_WINDOW(mr));
++              }
++              XSetWindowBackgroundPixmap(
++                      dpy, MR_WINDOW(mr), trans);
++              XFreePixmap(dpy, trans);
++              if (current_x == step_x)
++              {
++                      /* Redraw the border */
++                      RelieveRectangle(
++                              dpy, MR_WINDOW(mr), 0, 0, MR_WIDTH(mr) - 1,
++                              MR_HEIGHT(mr) - 1, (Pdepth < 2) ?
++                              SHADOW_GC(MST_MENU_INACTIVE_GCS(mr)) :
++                              HILIGHT_GC(MST_MENU_INACTIVE_GCS(mr)),
++                              SHADOW_GC(MST_MENU_INACTIVE_GCS(mr)), 
++                              MST_BORDER_WIDTH(mr));
++              }
++      }
++      else
++      {
++              SetWindowBackgroundWithOffset(
++                      dpy, MR_WINDOW(mr), step_x - current_x,
++                      step_y - current_y, MR_WIDTH(mr), MR_HEIGHT(mr),
++                      &Colorset[ST_CSET_MENU(ms)], Pdepth,
++                      FORE_GC(MST_MENU_INACTIVE_GCS(mr)), False);
++      }
+ }
+@@ -6173,10 +6343,7 @@
+       }
+       if (!is_bg_set)
+       {
+-              SetWindowBackground(
+-                      dpy, MR_WINDOW(mr), MR_WIDTH(mr), MR_HEIGHT(mr),
+-                      &Colorset[ST_CSET_MENU(ms)], Pdepth,
+-                      FORE_GC(MST_MENU_INACTIVE_GCS(mr)), False);
++              update_transparent_menu_bg(prtm, x, y, x, y, end_x, end_y);
+       }
+       /* redraw the background of non active item */
+       for (mi = MR_FIRST_ITEM(mr); mi != NULL; mi = MI_NEXT_ITEM(mi))
+@@ -6813,10 +6980,12 @@
+                               SetWindowBackground(
+                                       dpy, MR_WINDOW(mr), MR_WIDTH(mr),
+                                       MR_HEIGHT(mr),
+-                                      &Colorset[ST_CSET_MENU(ms)],
+-                                      Pdepth,
++                                      &Colorset[ST_CSET_MENU(ms)], Pdepth,
+                                       FORE_GC(MST_MENU_INACTIVE_GCS(mr)),
+-                                      True);
++                                      False);
++                              XClearArea(
++                                      dpy, MR_WINDOW(mr), 0, 0, MR_WIDTH(mr),
++                                      MR_HEIGHT(mr), True);
+                       }
+                       else if ((ST_HAS_ACTIVE_CSET(ms) &&
+                                 ST_CSET_ACTIVE(ms) == cset) ||
+Index: fvwm/menus.h
+===================================================================
+RCS file: /home/cvs/fvwm/fvwm/fvwm/menus.h,v
+retrieving revision 1.111
+diff -u -r1.111 menus.h
+--- fvwm/menus.h       27 Jan 2007 11:51:15 -0000      1.111
++++ fvwm/menus.h       5 Feb 2007 19:17:50 -0000
+@@ -15,6 +15,9 @@
+ #define IS_MENU_RETURN(x) \
+   ((x)==MENU_DONE || (x)==MENU_ABORTED || (x)==MENU_SUBMENU_TORN_OFF)
++#define MR_X(m)                     ((m)->d->x)
++#define MR_Y(m)                     ((m)->d->y)
++
+ struct MenuRoot;
+ struct MenuStyle;
+ struct MenuReturn;
+Index: libs/Colorset.h
+===================================================================
+RCS file: /home/cvs/fvwm/fvwm/libs/Colorset.h,v
+retrieving revision 1.38
+diff -u -r1.38 Colorset.h
+--- libs/Colorset.h    10 Jan 2007 00:34:27 -0000      1.38
++++ libs/Colorset.h    5 Feb 2007 19:19:00 -0000
+@@ -51,6 +51,10 @@
+       Bool dither;
+       Bool allows_buffered_transparency;
+       Bool is_maybe_root_transparent;
++      /* only use by fvwm menu (non tear-off) */
++      Bool is_translucent;
++      Pixel translucent_tint;
++      unsigned int translucent_tint_percent : 7;
+ #endif
+ } colorset_t;
+@@ -78,6 +82,7 @@
+ #define FG_TINT_SUPPLIED  0x100
+ #define BG_TINT_SUPPLIED  0x200
+ #define ICON_TINT_SUPPLIED 0x400
++#define TRANSLUCENT_TINT_SUPPLIED 0x800
+ #endif
+ /* colorsets are stored as an array of structs to permit fast dereferencing */
+@@ -153,6 +158,11 @@
+     (cset != NULL && cset->pixmap == ParentRelative && \
+      cset->tint_percent > 0)
++#define CSET_IS_TRANSLUCENT(cset) \
++    (cset >= 0 && Colorset[cset].is_translucent)
++#define CSETS_IS_TRANSLUCENT(cset) \
++    (cset && cset->is_translucent)
++
+ #ifndef FVWM_COLORSET_PRIVATE
+ /* Create n new colorsets, fvwm/colorset.c does its own thing (different size)
+  */
+Index: libs/PictureGraphics.c
+===================================================================
+RCS file: /home/cvs/fvwm/fvwm/libs/PictureGraphics.c,v
+retrieving revision 1.29
+diff -u -r1.29 PictureGraphics.c
+--- libs/PictureGraphics.c     27 Jan 2007 11:33:16 -0000      1.29
++++ libs/PictureGraphics.c     5 Feb 2007 19:19:49 -0000
+@@ -1340,7 +1340,7 @@
+       }
+ }
+-#if 0 /* humm... maybe useful one day with menus */
++#if 1 /* humm... maybe useful one day with menus */
+ Pixmap PGraphicsCreateTranslucent(
+       Display *dpy, Window win, FvwmRenderAttributes *fra, GC gc,
+       int x, int y, int width, int height)
+Index: libs/PictureGraphics.h
+===================================================================
+RCS file: /home/cvs/fvwm/fvwm/libs/PictureGraphics.h,v
+retrieving revision 1.13
+diff -u -r1.13 PictureGraphics.h
+--- libs/PictureGraphics.h     9 May 2006 20:46:29 -0000       1.13
++++ libs/PictureGraphics.h     5 Feb 2007 19:19:49 -0000
+@@ -122,7 +122,9 @@
+       Display *dpy, Window win, Pixel tint, int tint_percent,
+       Drawable dest, Bool dest_is_a_window, GC gc, GC mono_gc, GC alpha_gc,
+       int dest_x, int dest_y, int dest_w, int dest_h);
+-
++Pixmap PGraphicsCreateTranslucent(
++      Display *dpy, Window win, FvwmRenderAttributes *fra, GC gc,
++      int x, int y, int width, int height);
+ /* never used ! */
+ Pixmap PGraphicsCreateDitherPixmap(
+       Display *dpy, Window win, Drawable src, Pixmap mask, int depth, GC gc,
diff --git a/x11-wm/fvwm/files/fvwm-2.6.5-ar.patch b/x11-wm/fvwm/files/fvwm-2.6.5-ar.patch
new file mode 100644 (file)
index 0000000..b1d6200
--- /dev/null
@@ -0,0 +1,35 @@
+--- configure.ac       2012-04-20 12:58:29.000000000 +0200
++++ configure_new.ac   2013-07-21 18:26:17.513904607 +0200
+@@ -209,6 +209,10 @@
+ # optional libraries.
+ AC_PROG_CC
+ AC_PROG_CPP
++AN_MAKEVAR([AR], [AC_PROG_AR])
++AN_PROGRAM([ar], [AC_PROG_AR])
++AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL(AR, ar, :)])
++AC_PROG_AR
+ # added -Wall for gcc, what about for others?
+ if test "x$GCC" = "xyes"; then
+--- libs/Makefile.in   2012-04-20 13:03:55.000000000 +0200
++++ libs/Makefile_new.in       2013-07-21 18:27:17.443992505 +0200
+@@ -48,7 +48,7 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ LIBRARIES = $(noinst_LIBRARIES)
+-AR = ar
++AR = @AR@
+ ARFLAGS = cru
+ libfvwm_a_AR = $(AR) $(ARFLAGS)
+ libfvwm_a_DEPENDENCIES = @LIBOBJS@ @ALLOCA@
+--- modules/FvwmScript/Widgets/Makefile.in     2012-04-20 13:03:56.000000000 +0200
++++ modules/FvwmScript/Widgets/Makefile_new.in 2013-07-21 18:27:23.844001892 +0200
+@@ -46,7 +46,7 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ LIBRARIES = $(noinst_LIBRARIES)
+-AR = ar
++AR = @AR@
+ ARFLAGS = cru
+ libWidgets_a_AR = $(AR) $(ARFLAGS)
+ libWidgets_a_LIBADD =
diff --git a/x11-wm/fvwm/files/fvwm-2.6.5-mouse-buttons.patch b/x11-wm/fvwm/files/fvwm-2.6.5-mouse-buttons.patch
new file mode 100644 (file)
index 0000000..7eaa3e2
--- /dev/null
@@ -0,0 +1,11 @@
+--- libs/defaults.h    2011-08-15 18:25:40.000000000 +0200
++++ libs/defaults.h    2012-04-12 21:13:47.000000000 +0200
+@@ -25,7 +25,7 @@
+ /* The "extended" buttons do not provide the full functionality because X has
+  * no bit mask value for them.  Things like dragging windows don't work with
+  * them. */
+-#define NUMBER_OF_EXTENDED_MOUSE_BUTTONS   9
++#define NUMBER_OF_EXTENDED_MOUSE_BUTTONS   15
+ #if NUMBER_OF_EXTENDED_MOUSE_BUTTONS > 31
+ #error No more than 31 mouse buttons can be supported on 32 bit platforms
+ #endif
diff --git a/x11-wm/fvwm/files/fvwm-2.6.8-perl528.patch b/x11-wm/fvwm/files/fvwm-2.6.8-perl528.patch
new file mode 100644 (file)
index 0000000..5735fb1
--- /dev/null
@@ -0,0 +1,15 @@
+--- modules/FvwmPerl/FvwmPerl.in       2018-04-28 07:46:28.000000000 -0400
++++ modules/FvwmPerl/FvwmPerl.in       2019-01-06 20:44:59.035950968 -0500
+@@ -319,11 +319,11 @@
+               $FVWM_DATADIR = $FVWM_DATADIR || $module->site_data_dir;
+               $FVWM_USERDIR = $FVWM_USERDIR || $module->user_data_dir;
+       }
+       # perl code substitution first
+-      $$text_ref =~ s/\Q$quote1\E { ( .*? ) } \Q$quote2\E/
++      $$text_ref =~ s/\Q$quote1\E \{ ( .*? ) \} \Q$quote2\E/
+               my $result = eval "
+                       no strict;
+                       package PreprocessNamespace;
+                       $1
+               ";
diff --git a/x11-wm/fvwm/files/fvwm-2.6.9-bundled-manpage.patch b/x11-wm/fvwm/files/fvwm-2.6.9-bundled-manpage.patch
new file mode 100644 (file)
index 0000000..524a61c
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index 94766de..f6fb084 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -12,10 +12,6 @@ html_DATA = \
+       $(HTML_FILES)
+ endif
+-if FVWM_BUILD_MANDOC
+ SUBDIRS = commands images docbook-xml docbook-xsl fvwm
+-else
+-SUBDIRS = commands images docbook-xml docbook-xsl
+-endif
+ all: $(doc_DATA)
diff --git a/x11-wm/fvwm/files/fvwm-2.6.9-respect-docdir.patch b/x11-wm/fvwm/files/fvwm-2.6.9-respect-docdir.patch
new file mode 100644 (file)
index 0000000..c8c8a7a
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/configure.ac b/configure.ac
+index 6ed1846..ee44727 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -113,7 +113,7 @@ AC_ARG_ENABLE(package-subdirs,
+ FVWM_MODULEDIR='${libexecdir}'"$FVWM_MODULESUBDIR"
+ FVWM_DATADIR='${datadir}'"$FVWM_DATASUBDIR"
+-FVWM_DOCDIR='${datadir}'"$FVWM_DOCSUBDIR"
++FVWM_DOCDIR=$docdir
+ FVWM_PERLLIBDIR='${datadir}'"$FVWM_DATASUBDIR/perllib"
+ FVWM_CONFDIR='${sysconfdir}'dnl used _only_ to search for system.fvwm2rc
diff --git a/x11-wm/fvwm/files/fvwm-2.6.9-respect-htmldir.patch b/x11-wm/fvwm/files/fvwm-2.6.9-respect-htmldir.patch
new file mode 100644 (file)
index 0000000..b9601d7
--- /dev/null
@@ -0,0 +1,26 @@
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index 2ba8c08..94766de 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -8,7 +8,7 @@ EXTRA_DIST = \
+        fvwm.xsl fvwm-man.xsl header.html $(HTML_FILES)
+ if FVWM_BUILD_HTMLDOC
+-doc_DATA = \
++html_DATA = \
+       $(HTML_FILES)
+ endif
+diff --git a/doc/fvwm/Makefile.am b/doc/fvwm/Makefile.am
+index a0f71c6..374d7ef 100755
+--- a/doc/fvwm/Makefile.am
++++ b/doc/fvwm/Makefile.am
+@@ -13,7 +13,7 @@ EXTRA_DIST = @DOC_SECTIONS_XML@ $(man_MANS) sections
+ man_MANS = fvwm.1
+ if FVWM_BUILD_HTMLDOC
+-doc_DATA = $(HTML_FILES)
++html_DATA = $(HTML_FILES)
+ BUILD_HTML_FILES = $(HTML_FILES)
+ else
+ BUILD_HTML_FILES =
diff --git a/x11-wm/fvwm/fvwm-2.6.9.ebuild b/x11-wm/fvwm/fvwm-2.6.9.ebuild
new file mode 100644 (file)
index 0000000..2f03c11
--- /dev/null
@@ -0,0 +1,172 @@
+# Copyright © 2021 Nick Bowler
+# License GPLv2+: GNU General Public License version 2 or any later version.
+# This is free software: you are free to change and redistribute it.
+# There is NO WARRANTY, to the extent permitted by law.
+#
+# This is a modified version of the original ebuild from Gentoo GNU/Linux,
+# covered by the following copyright and permission notice:
+#
+#   Copyright 1999-2020 Gentoo Authors
+#   Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit autotools flag-o-matic desktop
+
+DESCRIPTION="An extremely powerful ICCCM-compliant multiple virtual desktop window manager"
+HOMEPAGE="http://www.fvwm.org/"
+SRC_URI="https://github.com/fvwmorg/fvwm/releases/download/${PV}/${P}.tar.gz"
+
+LICENSE="GPL-2 FVWM"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~ia64 ppc ~ppc64 ~sparc x86"
+IUSE="bidi debug doc netpbm nls perl png readline rplay stroke svg tk truetype +vanilla xinerama lock"
+
+COMMON_DEPEND="
+       sys-libs/zlib
+       x11-libs/libICE
+       x11-libs/libSM
+       x11-libs/libX11
+       x11-libs/libXau
+       x11-libs/libxcb
+       x11-libs/libXcursor
+       x11-libs/libXdmcp
+       x11-libs/libXext
+       x11-libs/libXfixes
+       x11-libs/libXpm
+       x11-libs/libXrandr
+       x11-libs/libXrender
+       virtual/libiconv
+       bidi? ( dev-libs/fribidi )
+       nls? ( virtual/libintl )
+       png? ( media-libs/libpng:0= )
+       readline? (
+               sys-libs/ncurses:0=
+               sys-libs/readline:0=
+       )
+       stroke? ( dev-libs/libstroke )
+       svg? ( gnome-base/librsvg )
+       truetype? (
+               media-libs/fontconfig
+               x11-libs/libXft
+       )
+       xinerama? ( x11-libs/libXinerama )
+"
+RDEPEND="${COMMON_DEPEND}
+       dev-lang/perl
+       perl? ( tk? (
+                       dev-lang/tk
+                       dev-perl/Tk
+                       >=dev-perl/X11-Protocol-0.56
+               )
+       )
+       rplay? ( media-sound/rplay )
+       lock? ( x11-misc/xlockmore )
+       userland_GNU? ( sys-apps/debianutils )
+       !x86-fbsd? ( netpbm? ( media-libs/netpbm ) )
+"
+DEPEND="${COMMON_DEPEND}
+       virtual/pkgconfig
+       x11-base/xorg-proto
+       doc? ( dev-libs/libxslt )
+"
+
+PATCHES=(      
+       "$FILESDIR/$PN-2.6.9-respect-docdir.patch"
+       "$FILESDIR/$PN-2.6.9-respect-htmldir.patch"
+       "$FILESDIR/$PN-2.6.9-bundled-manpage.patch"
+)
+
+src_prepare() {
+       if ! use vanilla; then
+               # Enables fast translucent menus; patch from fvwm-user mailing list.
+               eapply -p0 "${FILESDIR}/${PN}-2.5.27-translucent-menus.diff"
+
+               # Allow more mouse buttons, bug #411811
+               eapply -p0 "${FILESDIR}/${PN}-2.6.5-mouse-buttons.patch"
+       fi
+
+       eapply -p0 "${FILESDIR}/${PN}-2.6.5-ar.patch" #474528
+
+       # Fix for Perl 5.28
+       eapply -p0 "${FILESDIR}/${PN}-2.6.8-perl528.patch"
+
+       default
+       eautoreconf
+}
+
+src_configure() {
+       local myeconfargs=(
+               --libexecdir="${EPREFIX}"/usr/$(get_libdir)
+               --with-imagepath=/usr/include/X11/bitmaps:/usr/include/X11/pixmaps:/usr/share/icons/fvwm
+               --enable-iconv
+               --enable-package-subdirs
+               $(use_enable bidi)
+               $(use_enable debug debug-msgs)
+               $(use_enable debug command-log)
+               $(use_enable doc htmldoc)
+               $(use_enable doc mandoc)
+               $(use_enable nls)
+               $(use_enable perl perllib)
+               $(use_enable png)
+               $(use_with readline readline-library)
+               $(use_with rplay rplay-library)
+               $(use_with stroke stroke-library)
+               $(use_enable svg rsvg)
+               $(use_enable truetype xft)
+               $(use_enable xinerama)
+       )
+
+       # Non-upstream email where bugs should be sent; used in fvwm-bug.
+       export FVWM_BUGADDR="maintainer-needed@gentoo.org"
+
+       # Recommended by upstream, reference ????
+       append-flags -fno-strict-aliasing
+
+       # Signed chars are required.
+       use ppc && append-flags -fsigned-char
+
+       use readline && myeconfargs+=( --without-termcap-library )
+
+       econf "${myeconfargs[@]}"
+}
+
+src_install() {
+       default
+       make_session_desktop fvwm /usr/bin/fvwm
+
+       if ! use lock; then
+               find "${ED}" -name '*fvwm-menu-xlock' -exec rm -f '{}' \; 2>/dev/null
+       fi
+
+       if use perl; then
+               if ! use tk; then
+                       rm "${ED}"/usr/share/fvwm/perllib/FVWM/Module/Tk.pm || die
+                       rm "${ED}"/usr/share/fvwm/perllib/FVWM/Module/Toolkit.pm || die
+                       find "${ED}"/usr/share/fvwm/perllib -depth -type d -exec rmdir '{}' \; 2>/dev/null
+               fi
+       else
+               # Completely wipe it if ! use perl
+               rm -r "${ED}"/usr/bin/fvwm-perllib "${ED}"/usr/share/man/man1/fvwm-perllib.1
+       fi
+
+       # Utility for testing FVWM behaviour by creating a simple window with
+       # configurable hints.
+       if use debug; then
+               dobin "${S}"/tests/hints/hints_test
+               newdoc "${S}"/tests/hints/README README.hints
+       fi
+
+       dodir /etc/X11/Sessions
+       echo "${EPREFIX%/}/usr/bin/fvwm" > "${ED}"/etc/X11/Sessions/${PN} || die
+       fperms a+x /etc/X11/Sessions/${PN}
+
+       dodoc docs/{COMMANDS,DEVELOPERS.md}
+
+       # README file for translucent menus patch.
+       if ! use vanilla; then
+               dodoc "${FILESDIR}"/README.translucency
+               ewarn "You are using a patched build, so, please, don't"
+               ewarn "report bugs at the fvwm-workers list unless you are"
+               ewarn "also able to reproduce them with a vanilla build (USE=vanilla)."
+       fi
+}