summaryrefslogtreecommitdiff
path: root/x11-misc
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-05-10 00:01:14 +0100
committerV3n3RiX <venerix@koprulu.sector>2024-05-10 00:01:14 +0100
commit17e5f1ea4a2e1c5664f96480ca46348d008e8711 (patch)
tree7166d1b58a582290a4ad23ff5882cca911b8035c /x11-misc
parenta0ce545d52f231499bf9f3644493113d8af58ec9 (diff)
gentoo auto-resync : 10:05:2024 - 00:01:13
Diffstat (limited to 'x11-misc')
-rw-r--r--x11-misc/Manifest.gzbin46558 -> 46559 bytes
-rw-r--r--x11-misc/rss-glx/Manifest6
-rw-r--r--x11-misc/rss-glx/files/rss-glx-0.9.1-macro-if-scope.patch29
-rw-r--r--x11-misc/rss-glx/files/rss-glx-0.9.1-param-bound-mismatch.patch14
-rw-r--r--x11-misc/rss-glx/files/rss-glx-0.9.1-strict-aliasing.patch36
-rw-r--r--x11-misc/rss-glx/files/rss-glx-0.9.1-variable-mismatch.patch192
-rw-r--r--x11-misc/rss-glx/rss-glx-0.9.1-r4.ebuild147
-rw-r--r--x11-misc/shutter/Manifest2
-rw-r--r--x11-misc/shutter/shutter-0.99.5.ebuild92
9 files changed, 518 insertions, 0 deletions
diff --git a/x11-misc/Manifest.gz b/x11-misc/Manifest.gz
index 274a539ccf7a..f1c0405276fd 100644
--- a/x11-misc/Manifest.gz
+++ b/x11-misc/Manifest.gz
Binary files differ
diff --git a/x11-misc/rss-glx/Manifest b/x11-misc/rss-glx/Manifest
index 31fbedc4f6c2..a089678ddc7a 100644
--- a/x11-misc/rss-glx/Manifest
+++ b/x11-misc/rss-glx/Manifest
@@ -3,9 +3,15 @@ AUX rss-glx-0.9.1-bashism.patch 234 BLAKE2B 6470a46c9824cefc0c0aeb4fa0a31ce2fa94
AUX rss-glx-0.9.1-c++11-narrowing.patch 1207 BLAKE2B 1b23dafe33b43f559859da3c4ad4395fab9bab556dd09261c5764257a7992b0cb29453646ae02c4791a378cb18671c3233fa1351bd60d7c5ae970309d3cfee3a SHA512 8c262ca79cd9bfd263576868b35dc0ad6444d15a10c6d550439d1dc87dd7eb7f8058291193479de45461b2610bc068be6b6a9e140c329383a3792ad15d73e060
AUX rss-glx-0.9.1-hang.patch 299 BLAKE2B 2ce93ea94ee9d53d5eb5e9669799bd6423e0fe6de328e014403c9f315eddd7155e5fddd19145e380d0d163ebbcdb6c1509d265f528d150350d6487e951a04690 SHA512 9c8eb930360e39b53bd2d8878f5e9f35bf3015734164bb786f1d808bbcd4c0d0c91828daa154d545e7cc99fa51d1f12f15a0c6e06203e7793de37582ef76cfbf
AUX rss-glx-0.9.1-imagemagick-7.patch 5238 BLAKE2B fd3c02f9433d7d77dee0e4f6ec71afed34bcb09243ef0f8a60d46ea63fb2286e3b467e27165d2f7bbff7d2eb04849cbe10c889351f428b882b1e6d828fb45195 SHA512 706bc00bd5904c78bfc2858e7b6718b7288b401837ef9abf092ec7669eaf7f81def42e0684f28f3d9195abf00c5ec1ef0df617d2bcb0f55987f79e1914284b5d
+AUX rss-glx-0.9.1-macro-if-scope.patch 774 BLAKE2B a169d894fd51a1e4d858490fc74e050762f470891daefb0d489a402835546fda428de9fcccdffc77b3d5d9058c9e4ec79f305cbb87273dbcd19e690a12da95b6 SHA512 cecdd0161a828fdc2fbf345a8107448593ea1644c4667a5475c074f24afe4d07be23ae9ee8d98b915b0eee67e56a696277e16d591143ef11820a5101935ea926
AUX rss-glx-0.9.1-matrixview-copy-font.patch 518 BLAKE2B 39ca9c83c71f88cf967731115fd8df28feca7d63cc1f462a8cacedcb332c1105445354f262f49a428a0f393b6217cfb3b1e5b9c35b61cfe29434f33b8649f554 SHA512 da60ea89d341a951f2880c86b0c624ea7f2e1f04350387db23229496a06b3bd6392ee1a4b723b69eeadcfd538eda01ca8dba6afe33e92ef4c88ecded05615fea
AUX rss-glx-0.9.1-missing-include.patch 188 BLAKE2B ef9c6ae3e4ad4ad3ca4f28897516784efc650f341ba7e5e6ce3c76b04752bedeca0eefae481cdb52aade1b2801db81eb2249b108218d07410a5def4fae0f0ecb SHA512 608d19114f8cd2fd9a443df8c8f7ace26f304c94c00fe1789a79dad659963978bb51765a6541ad19ed39ee7dce6ee5b7a686c619a0a6f32ed3ba603facabaff7
+AUX rss-glx-0.9.1-param-bound-mismatch.patch 432 BLAKE2B 2dc96bbd4fb57d6d49b4c9b3dd48d70bac6cd3b7117331af557061ea8cd1a389cd3b160faf28295ad71226b824d776cc977ffdad7ada6e4f80ae057f16450fcb SHA512 e74b85425b9a5632f5b5a186c4a1b24d08442e29b0282864788ad0482252f20f45673d763784d4e1cf2ebf902bd3d5e1868e462758dcf4b1aff805738975e9c3
AUX rss-glx-0.9.1-quesoglc.patch 736 BLAKE2B 62ec14f17ee76b04f4589d71a646fc77d3521ba512d0888612cae701fedfbcb2d81fd1717210fb663c322b0088555fa0783faba91b68991f422e4962a3dd0b02 SHA512 9e71e5f15017593a15d72f005cd365a7bde5974fc0e7555b6d4a61c5ab019d92597952af7afef0cef8cc32782a1ac66ab74d11df3fcd4dcdb716d04d1bcb1b4a
+AUX rss-glx-0.9.1-strict-aliasing.patch 823 BLAKE2B a37f58801a344f9979bbf62ed5a3c06fa85ef3c5747ef3e05cfdd9b62875f4fe7aa2e348385f3f8a57fcce5ef7fd5684713379f8347a2bf5a738b565d3e67c98 SHA512 c187d8637e1f3fd7fcc2d32a984c96f542b25ed18d4ed80640e5aaeb370ed78355186e2bda0a8a77a1053991a0be4e0c8b5ad3ddcfc365becff88e93f5d3c4fa
+AUX rss-glx-0.9.1-variable-mismatch.patch 5297 BLAKE2B 2567d50832085fbf7d540807b8facc633c278d52763ad38f4f76b0eaea9011189768f8577a4d63b9a3973689f75b1fee277aa957700f90b066c0df607a553f50 SHA512 f1afa532748e4eca8da143f1d5444cf4d36fc85278e126b6fad3cbcb9da1a8f3a61e5a9748dc7410d8418d51df2473e53192e961264ce471b76a0ffa4884fd48
+DIST rss-glx-0.9.1.tar.bz 5435799 BLAKE2B d8161f06469f1160a6e80bb47a333746fac82df4d92eb9d007c7d6fe3a32e1a54a30d4675f64b100fd5509977dfbda7e8821daa462f00cbf748cc7c4bb8afa72 SHA512 3293e6446d6f85e895f1ba8fa982a1ab1873f60714e0b351458ac12117af2427b7cc931185b9485a2af6dd86ea9ea5f2fca92eaae9c0dd5290b5108bc2360961
DIST rss-glx_0.9.1.tar.bz2 5435799 BLAKE2B d8161f06469f1160a6e80bb47a333746fac82df4d92eb9d007c7d6fe3a32e1a54a30d4675f64b100fd5509977dfbda7e8821daa462f00cbf748cc7c4bb8afa72 SHA512 3293e6446d6f85e895f1ba8fa982a1ab1873f60714e0b351458ac12117af2427b7cc931185b9485a2af6dd86ea9ea5f2fca92eaae9c0dd5290b5108bc2360961
EBUILD rss-glx-0.9.1-r3.ebuild 4052 BLAKE2B 2b9406924ac4ce126f7bc00f6efb09cf26c42225a35f93ed512b4bbc1a0296fb4f7c96318b3adcbcc031313e5599c602d7de2a9417af0167f624e5fac73cf733 SHA512 726ec226abd352f1ba2a41d1cdf803e0610348aa76825d477832ae6f9334f1cf675d001d2be35a69f99d396f801b83fe7b003543185ff6f08c59491069bb6fe3
+EBUILD rss-glx-0.9.1-r4.ebuild 4283 BLAKE2B 350e9724da4115c7af5fa519f50ad373e8d8f2c3a841e6d06e53f4c17e9a62e6e51ed7f8298e4e3195805a179a15f06a68b51b66c5b42a43ce2b37b79b26fd37 SHA512 e1c52f33e6b9c4abcd82a1558154f63adff7be5e344cd43eed2b200d2a2892eab5460d31cd6c668a3d792437d7b64b49f800ead587d08b1d41345065420db293
MISC metadata.xml 566 BLAKE2B 80d4fe47508e61979af5edd605fdbfc1ded40be7bd7141f0ae5f3ac03f7834278dfb548dd8a8e5b606a8f1df025c853e7648e8f404852209ad4df602266db3b7 SHA512 c060dee409a6c2816e7548b2ba1ebaa0d055088babb89ffa8ecdacf5e9ca69e382b7eac5feaa373eb3c981817f27cc13421084bc02e5c592c2d8c44b16bdb02e
diff --git a/x11-misc/rss-glx/files/rss-glx-0.9.1-macro-if-scope.patch b/x11-misc/rss-glx/files/rss-glx-0.9.1-macro-if-scope.patch
new file mode 100644
index 000000000000..5044aae31918
--- /dev/null
+++ b/x11-misc/rss-glx/files/rss-glx-0.9.1-macro-if-scope.patch
@@ -0,0 +1,29 @@
+Fix multistatement macro partially guarded by if
+
+The code still works correctly by chance, but it performs redundant
+calls to BZ2_bzBuffToBuffDecompress() and it's a horrible mess.
+
+--- a/src/matrixview.c
++++ b/src/matrixview.c
+@@ -248,8 +248,9 @@ void loadNextImage ()
+ GetExceptionInfo (&exception);
+ #endif
+
+- if (!pics)
++ if (!pics) {
+ LOAD_TEXTURE (pics, cpics, cpics_compressedsize, cpics_size)
++ }
+
+ if ((text_x != 90) || (text_y != 70)) {
+ if (!pic)
+@@ -279,8 +280,9 @@ void loadNextImage ()
+ DestroyImage (image);
+ DestroyImage (scaled_image);
+ } else {
+- if (!pics)
++ if (!pics) {
+ LOAD_TEXTURE (pics, cpics, cpics_compressedsize, cpics_size)
++ }
+
+ pic = (unsigned char *)(pics + ((random () & 15) * (text_x * text_y)));
+ }
diff --git a/x11-misc/rss-glx/files/rss-glx-0.9.1-param-bound-mismatch.patch b/x11-misc/rss-glx/files/rss-glx-0.9.1-param-bound-mismatch.patch
new file mode 100644
index 000000000000..883dede1c8d4
--- /dev/null
+++ b/x11-misc/rss-glx/files/rss-glx-0.9.1-param-bound-mismatch.patch
@@ -0,0 +1,14 @@
+Fix mismatched array bounds for the parameters of function
+rsVec_cross()'s declaration and definition.
+
+--- a/src/rsMath.c
++++ b/src/rsMath.c
+@@ -43,7 +43,7 @@ float rsVec_normalize (float *v)
+ return length;
+ }
+
+-void rsVec_cross (float *v, float vec1[4], float vec2[4])
++void rsVec_cross (float *v, float vec1[3], float vec2[3])
+ {
+ v[0] = vec1[1] * vec2[2] - vec2[1] * vec1[2];
+ v[1] = vec1[2] * vec2[0] - vec2[2] * vec1[0];
diff --git a/x11-misc/rss-glx/files/rss-glx-0.9.1-strict-aliasing.patch b/x11-misc/rss-glx/files/rss-glx-0.9.1-strict-aliasing.patch
new file mode 100644
index 000000000000..e95b1f6a1a7d
--- /dev/null
+++ b/x11-misc/rss-glx/files/rss-glx-0.9.1-strict-aliasing.patch
@@ -0,0 +1,36 @@
+Fix strict aliasing violation in FMotion.cpp
+
+Bug: https://bugs.gentoo.org/928251
+
+--- a/src/FMotion.cpp
++++ b/src/FMotion.cpp
+@@ -22,6 +22,7 @@
+ */
+
+ #include <stdio.h>
++#include <string.h>
+ #include <cmath>
+
+ // In case cmath doesn't pull in all the usual suspects from math.h
+@@ -54,15 +55,19 @@
+ #define FLOATTOINTCONST2 (((65536.0*16)))
+ inline int f2int2 (float f)
+ {
++ int i;
+ f += FLOATTOINTCONST2;
+- return ((*((int *)(void *)&f)) & 0x007fffff) - 0x00400000;
++ memcpy(&i, &f, sizeof(i));
++ return (i & 0x007fffff) - 0x00400000;
+ }
+
+ #define FLOATTOINTCONST (((1.5*65536*256)))
+ inline int f2int (float f)
+ {
++ int i;
+ f += FLOATTOINTCONST;
+- return ((*((int *)(void *)&f)) & 0x007fffff) - 0x00400000;
++ memcpy(&i, &f, sizeof(i));
++ return (i & 0x007fffff) - 0x00400000;
+ }
+
+ #define Float2Int(f) (f2int(f))
diff --git a/x11-misc/rss-glx/files/rss-glx-0.9.1-variable-mismatch.patch b/x11-misc/rss-glx/files/rss-glx-0.9.1-variable-mismatch.patch
new file mode 100644
index 000000000000..19da515feff9
--- /dev/null
+++ b/x11-misc/rss-glx/files/rss-glx-0.9.1-variable-mismatch.patch
@@ -0,0 +1,192 @@
+Subject: [PATCH] Fix variable type mismatch in hyperspace
+From: Alexander Miller <alex.miller@gmx.de>
+Date: Sun, 31 Mar 2024 2024-03-31 03:08:04 +0200
+
+Some source files of hyperspace (flare.cpp, goo.cpp, starBurst.cpp)
+were referring to a variable "extern float frameTime" which doesn't
+exist in hyperspace (it's only a parameter of hack_draw() nowadays).
+
+It got mixed up with the driver.c variable "int frameTime".
+
+Remove the mismatched declaration from the 3 files and pass the value
+from hack_draw() to the functions using it by adding a new parameter.
+Also make frameTime (and most other variables) in driver.c static.
+
+Bug: https://bugs.gentoo.org/928251
+Signed-off-by: Alexander Miller <alex.miller@gmx.de>
+--- a/src/driver.c
++++ b/src/driver.c
+@@ -49,24 +49,24 @@
+
+ #include "vroot.h"
+
+-xstuff_t *XStuff;
++static xstuff_t *XStuff;
+
+ extern const char *hack_name;
+
+ /*
+ * display parameters
+ */
+-int rootWindow = False;
++static int rootWindow = False;
+ int glewInitialized = False;
+ #ifdef HAVE_GLEW
+-int frameTime = 10000;
+-int vsync = 1;
++static int frameTime = 10000;
++static int vsync = 1;
+ #else
+-int frameTime = 33333;
+-int vsync = 0;
++static int frameTime = 33333;
++static int vsync = 0;
+ #endif
+-int idleOnDPMS = 1;
+-int signalled = 0;
++static int idleOnDPMS = 1;
++static volatile int signalled = 0;
+
+ void createWindow (int argc, char **argv)
+ {
+--- a/src/flare.cpp
++++ b/src/flare.cpp
+@@ -45,7 +45,6 @@ extern double modelMat[16];
+ extern double projMat[16];
+ extern int viewport[4];
+ // Calculated in main draw routine each frame
+-extern float frameTime;
+ extern float camPos[3];
+
+
+@@ -182,7 +181,7 @@ void initFlares(){
+ // Draw a flare at a specified (x,y) location on the screen
+ // Screen corners are at (0,0) and (1,1)
+ // alpha = 0.0 for lowest intensity; alpha = 1.0 for highest intensity
+-void flare(double *pos, float red, float green, float blue, float alpha){
++void flare(double *pos, float red, float green, float blue, float alpha, float frameTime){
+ double winx, winy, winz; // in screen coordinates
+ float x, y, dx, dy;
+ float fadewidth, temp;
+--- a/src/flare.h
++++ b/src/flare.h
+@@ -36,7 +36,7 @@ void initFlares();
+ // Draw a flare at a specified (x,y) location on the screen
+ // Screen corners are at (0,0) and (1,1)
+ // alpha = 0.0 for lowest intensity; alpha = 1.0 for highest intensity
+-void flare(double *pos, float red, float green, float blue, float alpha);
++void flare(double *pos, float red, float green, float blue, float alpha, float frameTime);
+
+
+ #endif // FLARE_H
+--- a/src/goo.cpp
++++ b/src/goo.cpp
+@@ -25,9 +25,7 @@
+ #include "goo.h"
+
+
+-extern float frameTime, simulationTime;
+ extern float shiftx, shiftz;
+-extern float dFov;
+
+
+ goo::goo(int res, float rad, float (*func)(float* position)){
+--- a/src/hyperspace.cpp
++++ b/src/hyperspace.cpp
+@@ -340,10 +340,10 @@ void hack_draw (xstuff_t * XStuff, doubl
+ }
+ #ifdef HAVE_GLEW
+ if (dShaders)
+- theStarBurst->draw(lerp);
++ theStarBurst->draw(frameTime, lerp);
+ else
+ #endif
+- theStarBurst->draw();
++ theStarBurst->draw(frameTime);
+
+ // draw tunnel
+ theTunnel->make(frameTime);
+@@ -379,7 +379,7 @@ void hack_draw (xstuff_t * XStuff, doubl
+ float diff[3] = {(float)flarepos[0] - camPos[0], (float)flarepos[1] - camPos[1], (float)flarepos[2] - camPos[2]};
+ float alpha = 0.5f - 0.005f * sqrtf(diff[0] * diff[0] + diff[1] * diff[1] + diff[2] * diff[2]);
+ if(alpha > 0.0f)
+- flare(flarepos, 1.0f, 1.0f, 1.0f, alpha);
++ flare(flarepos, 1.0f, 1.0f, 1.0f, alpha, frameTime);
+ glEnable(GL_FOG);
+ }
+
+--- a/src/starBurst.cpp
++++ b/src/starBurst.cpp
+@@ -38,7 +38,6 @@
+
+ extern int xsize, ysize;
+ extern float aspectRatio;
+-extern float frameTime;
+ extern float camPos[3];
+ extern int numAnimTexFrames;
+ extern wavyNormalCubeMaps* theWNCM;
+@@ -136,7 +135,7 @@ void starBurst::restart(float* position)
+ }
+
+
+-void starBurst::drawStars(){
++void starBurst::drawStars(float frameTime){
+ int i;
+ float distance;
+
+@@ -158,8 +157,8 @@ void starBurst::drawStars(){
+ }
+
+
+-void starBurst::draw(){
+- drawStars();
++void starBurst::draw(float frameTime){
++ drawStars(frameTime);
+
+ size += frameTime * 0.5f;
+ if(size >= 3.0f)
+@@ -172,7 +171,7 @@ void starBurst::draw(float frameTime){
+ p[0] = pos[0];
+ p[1] = pos[1];
+ p[2] = pos[2];
+- flare(p, 1.0f, 1.0f, 1.0f, brightness);
++ flare(p, 1.0f, 1.0f, 1.0f, brightness, frameTime);
+ }
+
+ glMatrixMode(GL_MODELVIEW);
+@@ -201,8 +200,8 @@ void starBurst::draw(){
+
+
+ #ifdef HAVE_GLEW
+-void starBurst::draw(float lerp){
+- drawStars();
++void starBurst::draw(float frameTime, float lerp){
++ drawStars(frameTime);
+
+ size += frameTime * 0.5f;
+ if(size >= 3.0f)
+@@ -215,7 +214,7 @@ void starBurst::draw(float frameTime, fl
+ p[0] = pos[0];
+ p[1] = pos[1];
+ p[2] = pos[2];
+- flare(p, 1.0f, 1.0f, 1.0f, brightness);
++ flare(p, 1.0f, 1.0f, 1.0f, brightness, frameTime);
+ }
+
+ glMatrixMode(GL_MODELVIEW);
+--- a/src/starBurst.h
++++ b/src/starBurst.h
+@@ -43,10 +43,10 @@ public:
+ starBurst();
+ ~starBurst();
+ void restart(float* position);
+- void drawStars();
+- void draw(); // draw regular
++ void drawStars(float frameTime);
++ void draw(float frameTime); // draw regular
+ #ifdef HAVE_GLEW
+- void draw(float lerp); // draw with shaders
++ void draw(float frameTime, float lerp); // draw with shaders
+ #endif
+ };
+
diff --git a/x11-misc/rss-glx/rss-glx-0.9.1-r4.ebuild b/x11-misc/rss-glx/rss-glx-0.9.1-r4.ebuild
new file mode 100644
index 000000000000..9a1c206551e8
--- /dev/null
+++ b/x11-misc/rss-glx/rss-glx-0.9.1-r4.ebuild
@@ -0,0 +1,147 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+MY_P=${PN}_${PV}
+
+DESCRIPTION="Really Slick OpenGL Screensavers for XScreenSaver"
+HOMEPAGE="https://rss-glx.sourceforge.net"
+SRC_URI="https://sourceforge.net/projects/rss-glx/files/rss-glx/${PV}/${PN}_${PV}.tar.bz2/download -> ${P}.tar.bz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="+bzip2 openal quesoglc"
+
+RDEPEND="
+ x11-libs/libX11
+ x11-libs/libXext
+ >=media-libs/glew-1.5.1:=
+ media-libs/mesa[X(+)]
+ >=media-gfx/imagemagick-6.4:=
+ >=x11-misc/xscreensaver-5.08-r2
+ bzip2? ( app-arch/bzip2 )
+ openal? ( >=media-libs/freealut-1.1.0-r1 )
+ quesoglc? ( media-libs/quesoglc )
+"
+DEPEND="
+ ${RDEPEND}
+ x11-base/xorg-proto
+"
+BDEPEND="
+ virtual/pkgconfig
+ bzip2? ( app-arch/bzip2 )
+"
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-quesoglc.patch
+ "${FILESDIR}"/${P}-asneeded.patch
+ "${FILESDIR}"/${P}-imagemagick-7.patch
+ "${FILESDIR}"/${P}-c++11-narrowing.patch
+ "${FILESDIR}"/${P}-hang.patch
+ "${FILESDIR}"/${P}-matrixview-copy-font.patch
+ "${FILESDIR}"/${P}-missing-include.patch
+ "${FILESDIR}"/${P}-bashism.patch
+ "${FILESDIR}"/${P}-strict-aliasing.patch
+ "${FILESDIR}"/${P}-variable-mismatch.patch
+ "${FILESDIR}"/${P}-macro-if-scope.patch
+ "${FILESDIR}"/${P}-param-bound-mismatch.patch
+)
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e '/CFLAGS=/s:-O2:${CFLAGS}:' \
+ -e '/CXXFLAGS=/s:-O2:${CXXFLAGS}:' \
+ -e 's|AM_CONFIG_HEADER|AC_CONFIG_HEADERS|g' \
+ configure.in || die
+ mv configure.{in,ac} || die
+
+ eautoreconf
+}
+
+src_configure() {
+ econf \
+ --disable-static \
+ --enable-shared \
+ $(use_enable bzip2) \
+ $(use_enable openal sound) \
+ $(use_with quesoglc) \
+ --bindir="${EPREFIX}"/usr/$(get_libdir)/misc/xscreensaver \
+ --with-configdir="${EPREFIX}"/usr/share/xscreensaver/config
+}
+
+src_install() {
+ default
+ find "${ED}" -name '*.la' -delete || die
+}
+
+pkg_postinst() {
+ local xssconf="${EROOT}"/usr/share/X11/app-defaults/XScreenSaver
+
+ if [[ -f ${xssconf} ]]; then
+ sed -e '/*programs:/a\
+ GL: \"Cyclone\" cyclone --root \\n\\\
+ GL: \"Euphoria\" euphoria --root \\n\\\
+ GL: \"Fieldlines\" fieldlines --root \\n\\\
+ GL: \"Flocks\" flocks --root \\n\\\
+ GL: \"Flux\" flux --root \\n\\\
+ GL: \"Helios\" helios --root \\n\\\
+ GL: \"Hyperspace\" hyperspace --root \\n\\\
+ GL: \"Lattice\" lattice --root \\n\\\
+ GL: \"Plasma\" plasma --root \\n\\\
+ GL: \"Pixelcity\" pixelcity --root \\n\\\
+ GL: \"Skyrocket\" skyrocket --root \\n\\\
+ GL: \"Solarwinds\" solarwinds --root \\n\\\
+ GL: \"Colorfire\" colorfire --root \\n\\\
+ GL: \"Hufo\x27s Smoke\" hufo_smoke --root \\n\\\
+ GL: \"Hufo\x27s Tunnel\" hufo_tunnel --root \\n\\\
+ GL: \"Sundancer2\" sundancer2 --root \\n\\\
+ GL: \"BioF\" biof --root \\n\\\
+ GL: \"BusySpheres\" busyspheres --root \\n\\\
+ GL: \"SpirographX\" spirographx --root \\n\\\
+ GL: \"MatrixView\" matrixview --root \\n\\\
+ GL: \"Lorenz\" lorenz --root \\n\\\
+ GL: \"Drempels\" drempels --root \\n\\\
+ GL: \"Feedback\" feedback --root \\n\\' \
+ -i "${xssconf}" || die
+ fi
+}
+
+pkg_postrm() {
+ local xssconf="${EROOT}"/usr/share/X11/app-defaults/XScreenSaver
+
+ if [[ -f ${xssconf} ]]; then
+ sed \
+ -e '/\"Cyclone\" cyclone/d' \
+ -e '/\"Euphoria\" euphoria/d' \
+ -e '/\"Fieldlines\" fieldlines/d' \
+ -e '/\"Flocks\" flocks/d' \
+ -e '/\"Flux\" flux/d' \
+ -e '/\"Helios\" helios/d' \
+ -e '/\"Hyperspace\" hyperspace/d' \
+ -e '/\"Lattice\" lattice/d' \
+ -e '/\"Plasma\" plasma/d' \
+ -e '/\"Pixelcity\" pixelcity/d' \
+ -e '/\"Skyrocket\" skyrocket/d' \
+ -e '/\"Solarwinds\" solarwinds/d' \
+ -e '/\"Colorfire\" colorfire/d' \
+ -e '/\"Hufo.*Smoke\" hufo_smoke/d' \
+ -e '/\"Hufo.*Tunnel\" hufo_tunnel/d' \
+ -e '/\"Sundancer2\" sundancer2/d' \
+ -e '/\"BioF\" biof/d' \
+ -e '/\"BusySpheres\" busyspheres/d' \
+ -e '/\"SpirographX\" spirographx/d' \
+ -e '/\"MatrixView\" matrixview/d' \
+ -e '/\"Lorenz\" lorenz/d' \
+ -e '/\"Drempels\" drempels/d' \
+ -e '/\"Feedback\" feedback/d' \
+ -i "${xssconf}" || die
+ fi
+}
diff --git a/x11-misc/shutter/Manifest b/x11-misc/shutter/Manifest
index 80e3eceafc6d..bc122c01898e 100644
--- a/x11-misc/shutter/Manifest
+++ b/x11-misc/shutter/Manifest
@@ -1,3 +1,5 @@
DIST shutter-0.99.4.tar.gz 1734992 BLAKE2B 410e73f784f0d83638867132669a00fe89c06af622f3024e52b5b5700c1a431b4ad50f9066c267cd76f9be48ce6ff88eab4348d2d4dff28b4ae7e0267eb7bc41 SHA512 57f7fdc1066375942bd1a9db381a8ba6f24fafbd5e0853a4dd19016438ec2f3cb039ebe90038d282bc07f6e45af9cdbb6f180f55e43357231b41818b8555347b
+DIST shutter-0.99.5.tar.gz 1736757 BLAKE2B b861d4c71295ceb1e8a2d268e57babccb8a832245ffb18410c19b20bb5aca56358e00cb4e578f3b8dfcd15e4c318beb7ed873a86094de522deed7f4b2e33b58c SHA512 524e135191a324f7da890922c98646c7cd83a714a3b1dc14f2ba9910f8a90f5c6c527a5c857888c2be93120a7b242e435664c8af45792d36b66d7642fda50371
EBUILD shutter-0.99.4-r1.ebuild 2302 BLAKE2B 9bd01a4036778fb79aa8c6ca7f0700b434cd5f602d0339e56ee9561bb49fd227c3f7e86d6cc82708ecc906e73e0dc70157f3ba60503c1d2a8bbeb4caaf0e8a14 SHA512 3b7d219e6a929fded3fba4d87c7ed44dd0a7bb4c1f59e3bf3cb6a4d7ae67cd1c6efd73f5f27a741dd57662e8c8cb6939bc42ed5e501800a48fd9736c78de7b3f
+EBUILD shutter-0.99.5.ebuild 2363 BLAKE2B 6b79fe9b5b6d937588549271aa78a1e9279e947e27a50a4aabef07c4a9c0052f09572da66d3932bace89efed81676f4e118e7018a5f21058789f860360e2c9c4 SHA512 251b1af3dd4f07d99f8e1bc64a89fd0103e7c2fb87c5229a005865e35941e171a3ca5a4921867e8231883228decca2d5e7a6c42ec86c80f32b78ccaadb1b0ad8
MISC metadata.xml 492 BLAKE2B 3e3bf1dc04748435e212469e84d12040db18041c65e432a4ca994fef361bc100bfb7e5f284067ae7ff63cc090ce10b2e05d38a7c4bfbdd0e8fe673f77f3fae4e SHA512 bba85636de4594323daf1be7648c76ad3323b03ce8d093842ff61e95e1f2023094d0d707985d14d99dae6f346d9624eb4e9fb17b72c0e2507f93e61bb26fec7b
diff --git a/x11-misc/shutter/shutter-0.99.5.ebuild b/x11-misc/shutter/shutter-0.99.5.ebuild
new file mode 100644
index 000000000000..1bc51eaa128f
--- /dev/null
+++ b/x11-misc/shutter/shutter-0.99.5.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop optfeature prefix xdg
+
+DESCRIPTION="Feature-rich screenshot program"
+HOMEPAGE="https://shutter-project.org/"
+SRC_URI="https://github.com/shutter-project/shutter/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-lang/perl
+ dev-libs/libayatana-appindicator
+ dev-perl/Carp-Always
+ dev-perl/libxml-perl
+ dev-perl/Glib-Object-Introspection
+ dev-perl/GooCanvas2
+ dev-perl/GooCanvas2-CairoTypes
+ dev-perl/Gtk3
+ dev-perl/Gtk3-ImageView
+ dev-perl/File-DesktopEntry
+ dev-perl/File-HomeDir
+ dev-perl/File-Which
+ dev-perl/JSON
+ dev-perl/File-Copy-Recursive
+ dev-perl/File-MimeInfo
+ dev-perl/Locale-gettext
+ dev-perl/Moo
+ dev-perl/Net-DBus
+ dev-perl/Number-Bytes-Human
+ dev-perl/Pango
+ dev-perl/Proc-Simple
+ dev-perl/Proc-ProcessTable
+ dev-perl/Sort-Naturally
+ dev-perl/X11-Protocol
+ dev-perl/XML-Simple
+ virtual/imagemagick-tools[perl]
+ x11-libs/libwnck:3[introspection]
+"
+BDEPEND="
+ sys-devel/gettext
+ test? ( dev-perl/Test-MockModule )
+"
+
+src_prepare() {
+ hprefixify bin/shutter
+ default
+}
+
+src_test() {
+ prove -I share/shutter/resources/modules/ -I t/lib t -r || die
+}
+
+src_install() {
+ dobin bin/shutter
+ dodoc README
+ domenu share/applications/shutter.desktop
+ doicon share/pixmaps/shutter.png
+ doman share/man/man1/shutter.1
+
+ insinto /usr/share
+ doins -r share/shutter
+ doins -r share/locale
+ doins -r share/icons
+
+ insinto /usr/share/metainfo
+ doins share/metainfo/shutter.metainfo.xml
+
+ # .po doesn't belong to installed system, only .mo
+ rm -r "${ED}"/usr/share/shutter/resources/po || die
+
+ # shutter executes perl scripts as standalone scripts, and after that "require"s them.
+ find "${ED}"/usr/share/shutter/resources/system/plugins/ -type f ! -name '*.*' -exec chmod +x {} + \
+ || die "failed to make plugins executables"
+ find "${ED}"/usr/share/shutter/resources/system/upload_plugins/upload -type f \
+ -name "*.pm" -exec chmod +x {} + || die "failed to make upload plugins executables"
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ optfeature "writing Exif information" media-libs/exiftool
+ optfeature "image hostings uploading" "dev-perl/JSON-MaybeXS dev-perl/Path-Class"
+ optfeature "WebP support" gui-libs/gdk-pixbuf-loader-webp
+}