Description: Autogenerated patch header for a single-debian-patch file.
 The delta against upstream is either kept as a single patch, or maintained
 in some VCS, and exported as a single patch instead of more manageable
 atomic patches.
Forwarded: not-needed

---
--- icewm-3.9.0.orig/lib/keys.in
+++ icewm-3.9.0/lib/keys.in
@@ -26,8 +26,8 @@ key "Super+KP_Add"          amixer sset
 key "XF86AudioLowerVolume"  amixer sset Master 5%-
 key "XF86AudioRaiseVolume"  amixer sset Master 5%+
 key "XF86AudioMute"         amixer sset Master toggle
-key "XF86HomePage"          xdg-open about:blank
-key "XF86Search"            xdg-open https://www.google.com
+key "XF86HomePage"         sensible-browser about:blank
+key "XF86Search"            sensible-browser https://www.duckduckgo.com
 key "XF86Eject"             eject
 key "XF86Calculator"        /bin/sh -c "gnome-calculator || xcalc || ( type bc >/dev/null 2>&1 && @XTERMCMD@ -e bc -l)"
 
--- icewm-3.9.0.orig/lib/themes/CrystalBlue/default.theme
+++ icewm-3.9.0/lib/themes/CrystalBlue/default.theme
@@ -157,3 +157,6 @@ ClockFontNameXft=
 #Desktop
 DesktopBackgroundColor=                 "rgb:25/33/79"
 DesktopTransparencyColor=               "rgb:25/33/79"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/Helix/default.theme
+++ icewm-3.9.0/lib/themes/Helix/default.theme
@@ -50,3 +50,6 @@ ShowMenuButtonIcon=0
 
 
 
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/Infadel2/Ergonomic.theme
+++ icewm-3.9.0/lib/themes/Infadel2/Ergonomic.theme
@@ -128,3 +128,6 @@ ApmFontName		=	"-b&h-lucida-bold-r-norma
 
 ShowMenuButtonIcon=0
 TaskBarClockLeds=0
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/Infadel2/Overloaded.theme
+++ icewm-3.9.0/lib/themes/Infadel2/Overloaded.theme
@@ -128,3 +128,6 @@ ApmFontName		=	"-b&h-lucida-bold-r-norma
 
 ShowMenuButtonIcon=0
 TaskBarClockLeds=0
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/Infadel2/default.theme
+++ icewm-3.9.0/lib/themes/Infadel2/default.theme
@@ -124,3 +124,6 @@ ApmFontName		=	"-b&h-lucida-bold-r-norma
 
 ShowMenuButtonIcon=0
 TaskBarClockLeds=0
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/default/default.theme
+++ icewm-3.9.0/lib/themes/default/default.theme
@@ -49,4 +49,4 @@ ColorScrollBarButtonArrow="rgb:C0/C0/C0"
 DesktopBackgroundCenter=1
 DesktopBackgroundScaled=1
 #DesktopBackgroundColor="#3a6ea5"
-DesktopBackgroundImage="default.png"
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
--- icewm-3.9.0.orig/lib/themes/gtk2/default.theme
+++ icewm-3.9.0/lib/themes/gtk2/default.theme
@@ -39,3 +39,6 @@ ColorListBoxSelectionText="rgb:00/00/00"
 ColorScrollBar="rgb:C0/C0/C0"
 ColorScrollBarSlider="rgb:C0/C0/C0"
 ColorScrollBarButtonArrow="rgb:C0/C0/C0"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/icedesert/default.theme
+++ icewm-3.9.0/lib/themes/icedesert/default.theme
@@ -50,3 +50,6 @@ ColorApmText="rgb:ef/d0/97"
 ColorCPUStatusIdle="rgb:18/18/38"
 ColorNetIdle="rgb:18/18/38"
 ColorMEMStatusFree="rgb:18/18/38"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/metal2/default.theme
+++ icewm-3.9.0/lib/themes/metal2/default.theme
@@ -41,3 +41,6 @@ ColorScrollBar="rgb:CC/CC/CC"
 ColorScrollBarSlider="rgb:CC/CC/FF"
 ColorScrollBarButton="rgb:CC/CC/CC"
 ColorScrollBarButtonArrow="rgb:00/00/00"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/motif/default.theme
+++ icewm-3.9.0/lib/themes/motif/default.theme
@@ -24,3 +24,6 @@ ColorActiveTaskBarAppText="rgb:00/00/00"
 ColorScrollBar="rgb:C0/C0/C0"
 ColorScrollBarSlider="rgb:C0/C0/C0"
 ColorScrollBarButtonArrow="rgb:C0/C0/C0"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/nice/blue.theme
+++ icewm-3.9.0/lib/themes/nice/blue.theme
@@ -20,3 +20,6 @@ ColorNormalTaskBarApp="rgb:C0/C0/C0"
 ColorNormalTaskBarAppText="rgb:00/00/00"
 ColorActiveTaskBarApp="rgb:E0/E0/E0"
 ColorActiveTaskBarAppText="rgb:00/00/00"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/nice/default.theme
+++ icewm-3.9.0/lib/themes/nice/default.theme
@@ -23,3 +23,6 @@ ColorNormalTaskBarApp="rgb:C0/C0/C0"
 ColorNormalTaskBarAppText="rgb:00/00/00"
 ColorActiveTaskBarApp="rgb:E0/E0/E0"
 ColorActiveTaskBarAppText="rgb:00/00/00"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/nice2/default.theme
+++ icewm-3.9.0/lib/themes/nice2/default.theme
@@ -30,3 +30,6 @@ ColorActiveTaskBarAppText="rgb:00/00/00"
 ColorMinimizedTaskBarApp="rgb:00/80/C0"
 ColorMinimizedTaskBarAppText="rgb:00/00/00"
 ColorListBox="rgb:FF/FF/FF"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/warp3/default.theme
+++ icewm-3.9.0/lib/themes/warp3/default.theme
@@ -28,3 +28,6 @@ ColorNormalTaskBarApp="rgb:C0/C0/C0"
 ColorNormalTaskBarAppText="rgb:00/00/00"
 ColorActiveTaskBarApp="rgb:E0/E0/E0"
 ColorActiveTaskBarAppText="rgb:00/00/00"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/warp4/default.theme
+++ icewm-3.9.0/lib/themes/warp4/default.theme
@@ -24,3 +24,6 @@ ColorNormalTaskBarApp="rgb:C0/C0/C0"
 ColorNormalTaskBarAppText="rgb:00/00/00"
 ColorActiveTaskBarApp="rgb:E0/E0/E0"
 ColorActiveTaskBarAppText="rgb:00/00/00"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/win95/default.theme
+++ icewm-3.9.0/lib/themes/win95/default.theme
@@ -28,3 +28,6 @@ ColorScrollBar="rgb:E0/E0/E0"
 ColorScrollBarSlider="rgb:C0/C0/C0"
 ColorScrollBarButton="rgb:C0/C0/C0"
 ColorScrollBarButtonArrow="rgb:00/00/00"
+
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
+
--- icewm-3.9.0.orig/lib/themes/yellowmotif/default.theme
+++ icewm-3.9.0/lib/themes/yellowmotif/default.theme
@@ -13,7 +13,7 @@ CornerSizeY=22
 DlgBorderSizeX=2
 DlgBorderSizeY=2
 
-DesktopBackgroundImage=""
+DesktopBackgroundImage="/usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg"
 DesktopBackgroundColor="rgb:40/a0/c0"
 
 ColorNormalBorder="rgb:C0/C0/C0"
--- icewm-3.9.0.orig/lib/winoptions.in
+++ icewm-3.9.0/lib/winoptions.in
@@ -5,6 +5,8 @@
 
 xterm.XTerm.icon: xterm
 rxvt.icon: xterm
+urxvtc.icon: urxvt
+urxvt.icon: urxvt
 nxterm.icon: xterm
 emacs.Emacs.icon: emacs
 
--- icewm-3.9.0.orig/rebuild.sh
+++ icewm-3.9.0/rebuild.sh
@@ -100,7 +100,6 @@ if [[ -v DBGCM ]]; then
         -DCONFIG_LIBRSVG=$RSV \
         -DCONFIG_NANOSVG=$NSV \
         -DCONFIG_XRANDR=ON \
-        -DCONFIG_XPM=ON \
         -DCMAKE_INSTALL_PREFIX="$prefix" \
         -DCMAKE_BUILD_TYPE=RelWithDebInfo \
         -DICEHELPIDX="$prefix/share/doc/icewm-common/html/icewm.html" \
@@ -125,7 +124,6 @@ if [[ -v RELCM ]]; then
         -DCONFIG_IMLIB2=$IM2 \
         -DCONFIG_LIBRSVG=$RSV \
         -DCONFIG_NANOSVG=$NSV \
-        -DCONFIG_XPM=ON \
         -DCMAKE_VERBOSE_MAKEFILE=ON \
         -DCONFIG_XRANDR=ON \
         -DENABLE_LTO=ON \
@@ -145,7 +143,7 @@ if [[ -v DEPEN ]]; then
         sndfile alsa ao \
         gio-2.0 gio-unix-2.0 \
         gdk-pixbuf-xlib-2.0 librsvg-2.0 \
-        imlib2 xpm libpng libjpeg
+        imlib2 libpng libjpeg
     do
         printf "%-20s: " "$p"
         pkg-config --modversion --print-errors --errors-to-stdout $p
--- icewm-3.9.0.orig/src/apppstatus.cc
+++ icewm-3.9.0/src/apppstatus.cc
@@ -761,7 +761,8 @@ bool NetStatusControl::readNetDev(char*
     if (fNetDev < 0) {
         fNetDev = open(path, O_RDONLY | O_CLOEXEC);
         if (fNetDev < 0) {
-            fail("open %s", path);
+            if (testOnce(path, errno))
+                fail("open %s", path);
             return false;
         }
     }
--- icewm-3.9.0.orig/src/ascii.h
+++ icewm-3.9.0/src/ascii.h
@@ -104,25 +104,71 @@ namespace ASCII {
         return i;
     }
 
-    inline bool utf0(char c) { return (c & 0xC0) == 0x80; }
+    template<class T>
+    bool utf0(T c) { return (c & 0xC0) == 0x80; }
 
-    inline bool utf1(char c) { return (c & 0xE0) == 0xC0; }
+    template<class T>
+    bool utf1(T c) { return (c & 0xE0) == 0xC0; }
 
-    inline bool utf2(char c) { return (c & 0xF0) == 0xE0; }
+    template<class T>
+    bool utf2(T c) { return (c & 0xF0) == 0xE0; }
 
-    inline bool utf3(char c) { return (c & 0xF8) == 0xF0; }
+    template<class T>
+    bool utf3(T c) { return (c & 0xF8) == 0xF0; }
 
-    inline bool utf1(char c, char d) {
+    template<class T>
+    bool utf1(T c, T d) {
         return utf1(c) && utf0(d);
     }
 
-    inline bool utf2(char c, char d, char e) {
+    template<class T>
+    bool utf2(T c, T d, T e) {
         return utf2(c) && utf0(d) && utf0(e);
     }
 
-    inline bool utf3(char c, char d, char e, char f) {
+    template<class T>
+    bool utf3(T c, T d, T e, T f) {
         return utf3(c) && utf0(d) && utf0(e) && utf0(f);
     }
+
+    template<class T>
+    int codepoint_size(T c) {
+        return utf1(c) ? 2 : utf2(c) ? 3 : utf3(c) ? 4 : 1;
+    }
+
+    template<class T>
+    unsigned codepoint(T* s) {
+        if (utf1(s[0])) {
+            if (utf0(s[1])) {
+               return ((s[0] & 0x1F) << 6) | (s[1] & 0x3F);
+            }
+        }
+        else if (utf2(s[0])) {
+            if (utf0(s[1]) && utf0(s[2])) {
+                return ((s[0] & 0x0F) << 12)
+                     | ((s[1] & 0x3F) << 6)
+                     | (s[2] & 0x3F);
+            }
+        }
+        else if (utf3(s[0])) {
+            if (utf0(s[1]) && utf0(s[2]) && utf0(s[3])) {
+                return ((s[0] & 0x07) << 18)
+                     | ((s[1] & 0x3F) << 12)
+                     | ((s[2] & 0x3F) << 6)
+                     | (s[3] & 0x3F);
+            }
+        }
+        return (s[0] & 0xFF);
+    }
+
+    template<class T>
+    bool is_combining_mark(T cp) {
+        return (cp >= 0x0300 && cp <= 0x036F) ||
+               (cp >= 0x1AB0 && cp <= 0x1AFF) ||
+               (cp >= 0x1DC0 && cp <= 0x1DFF) ||
+               (cp >= 0x20D0 && cp <= 0x20FF) ||
+               (cp >= 0xFE20 && cp <= 0xFE2F);
+    }
 }
 
 #endif
--- icewm-3.9.0.orig/src/default.h
+++ icewm-3.9.0/src/default.h
@@ -127,7 +127,7 @@ XIV(bool, win95keys,
 XIV(bool, autoReloadMenus,                      true)
 XIV(bool, arrangeWindowsOnScreenSizeChange,     true)
 XIV(bool, clientMouseActions,                   true)
-XIV(bool, showPrograms,                         false)
+XIV(bool, showPrograms,                         true)
 XIV(bool, showSettingsMenu,                     true)
 XIV(bool, showFocusModeMenu,                    true)
 XIV(bool, showThemesMenu,                       true)
@@ -180,7 +180,7 @@ XSV(const char *, mailBoxPath,
 XSV(const char *, mailCommand,                  TERM " -name mutt -e mutt")
 XSV(const char *, mailClassHint,                "mutt.XTerm")
 XSV(const char *, newMailCommand,               0)
-XSV(const char *, lockCommand,                  0)
+XSV(const char *, lockCommand,                  "xscreensaver-command -lock")
 XSV(const char *, clockCommand,                 "xclock -name icewm -title Clock")
 XSV(const char *, clockClassHint,               "icewm.XClock")
 XSV(const char *, runDlgCommand,                0)
@@ -189,10 +189,10 @@ XSV(const char *, terminalCommand,
 XSV(const char *, logoutCommand,                0)
 XSV(const char *, logoutCancelCommand,          0)
 #if __linux__
-XSV(const char *, shutdownCommand,              "test -e /run/systemd/system && systemctl poweroff || loginctl poweroff")
-XSV(const char *, rebootCommand,                "test -e /run/systemd/system && systemctl reboot || loginctl reboot")
-XSV(const char *, suspendCommand,               "test -e /run/systemd/system && systemctl suspend || loginctl suspend")
-XSV(const char *, hibernateCommand,             "test -e /run/systemd/system && systemctl hibernate || loginctl hibernate")
+XSV(const char *, shutdownCommand,              "test -e /run/systemd/system && systemctl poweroff || sudo -n /sbin/poweroff")
+XSV(const char *, rebootCommand,                "test -e /run/systemd/system && systemctl reboot || sudo -n /sbin/reboot")
+XSV(const char *, suspendCommand,               "test -e /run/systemd/system && systemctl suspend || sudo -n /usr/sbin/pm-suspend")
+XSV(const char *, hibernateCommand,             "test -e /run/systemd/system && systemctl hibernate || sudo -n /usr/sbin/pm-hibernate")
 #elif __OpenBSD__ || __NetBSD__ || __FreeBSD__
 XSV(const char *, shutdownCommand,              "shutdown -p now")
 XSV(const char *, rebootCommand,                "shutdown -r now")
@@ -208,18 +208,11 @@ XIV(int, taskBarCPUDelay,
 XIV(int, taskBarMEMDelay,                       500)
 XIV(int, taskBarNetSamples,                     20)
 XIV(int, taskBarNetDelay,                       500)
-XSV(const char *, cpuCommand,                   TERM " -name top -title Process\\ Status -e top")
+XSV(const char *, cpuCommand,                   TERM " -T 'Process Status' -e top")
 XSV(const char *, cpuClassHint,                 "top.XTerm")
 XIV(bool, cpuCombine,                           true)
-
-#if __linux__
-XSV(const char *, netCommand,                   TERM " -name 'ss' -title 'Socket Statistics' -hold -e sh -c 'which ss > /dev/null && watch -t ss -putswl || netstat -c'")
+XSV(const char *, netCommand,                   TERM " -T 'Network Status' -e /bin/sh /usr/share/icewm/netstat.sh")
 XSV(const char *, netClassHint,                 "ss.XTerm")
-#else
-XSV(const char *, netCommand,                   TERM " -name netstat -title 'Network Status' -hold -e netstat -c")
-XSV(const char *, netClassHint,                 "netstat.XTerm")
-#endif
-
 #if __OpenBSD__
 #define NET_DEVICES                             "[ew]* vio*"
 #else
--- icewm-3.9.0.orig/src/icesh.cc
+++ icewm-3.9.0/src/icesh.cc
@@ -2273,14 +2273,11 @@ void IceSh::details(Window w)
     if (len > size - 4) {
         len = size - 4;
         int cp = 0;
-        while (cp > -3 && utf0(name[len + cp])) {
+        while (len + cp > 0 && (utf0(name[len + cp]) ||
+               is_combining_mark(codepoint(&name[len + cp])))) {
             cp--;
         }
-        if (utf1(name[len + cp]) ||
-            utf2(name[len + cp]) ||
-            utf3(name[len + cp])) {
-            len += cp;
-        }
+        len += cp;
         name[len] = '\0';
     }
     char title[size] = "";
--- icewm-3.9.0.orig/src/wmapp.cc
+++ icewm-3.9.0/src/wmapp.cc
@@ -44,6 +44,7 @@
 char const *ApplicationName("IceWM");
 RebootShutdown rebootOrShutdown = Logout;
 static bool initializing(true);
+void SetLiteDefaults();
 
 YWMApp *wmapp;
 YWindowManager *manager;
@@ -1397,6 +1398,9 @@ YWMApp::YWMApp(int *argc, char ***argv,
     focusMode(loadFocusMode()),
     managerWindow(None)
 {
+    if(argc && *argc>0 && argv && *argv && **argv && mstring(**argv).endsWith("-lite"))
+            SetLiteDefaults();
+
     wmapp = this;
     YIcon::iconResourceLocator = this;
 
@@ -2165,6 +2169,14 @@ public:
     }
 };
 
+void SetLiteDefaults()
+{
+    showTaskBar = false;
+    fontPreferFreetype = false;
+    showWindowList = false;
+    quickSwitchAllIcons = false;
+    //addWorkspace(0, "1", false);
+}
 YWindow* YWMApp::splash(const char* splashFile) {
     YWindow* window(nullptr);
     if (splashFile && 4 < strlen(splashFile) && !post_preferences) {
--- icewm-3.9.0.orig/src/wmframe.cc
+++ icewm-3.9.0/src/wmframe.cc
@@ -3191,6 +3191,8 @@ bool YFrameWindow::affectsWorkArea() con
 }
 
 bool YFrameWindow::inWorkArea() const {
+    if (client() == nullptr)
+        return false;
     if (doNotCover())
         return false;
     if (isFullscreen())
@@ -3203,11 +3205,14 @@ bool YFrameWindow::inWorkArea() const {
 }
 
 void YFrameWindow::getNormalGeometryInner(int *x, int *y, int *w, int *h) const {
-    XSizeHints *sh = client()->sizeHints();
-    *x = normalX;
-    *y = normalY;
-    *w = sh ? normalW * max(1, sh->width_inc) + sh->base_width : normalW;
-    *h = sh ? normalH * max(1, sh->height_inc) + sh->base_height : normalH;
+    *x = normalX; *y = normalY; *w = normalW; *h = normalH;
+    if (client()) {
+        XSizeHints* sh = client()->sizeHints();
+        if (sh) {
+            *w = normalW * max(1, sh->width_inc) + sh->base_width;
+            *h = normalH * max(1, sh->height_inc) + sh->base_height;
+        }
+    }
 }
 
 void YFrameWindow::setNormalGeometryOuter(int ox, int oy, int ow, int oh) {
