[konsole] [Bug 477800] New: konsole does not use background images if opacity is not supported

R Tapia bugzilla_noreply at kde.org
Thu Nov 30 21:10:11 GMT 2023


https://bugs.kde.org/show_bug.cgi?id=477800

            Bug ID: 477800
           Summary: konsole does not use background images if opacity is
                    not supported
    Classification: Applications
           Product: konsole
           Version: 24.01.80
          Platform: Other
                OS: Linux
            Status: REPORTED
          Keywords: reproducible
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: konsole-devel at kde.org
          Reporter: rdt12+kde at psu.edu
  Target Milestone: ---

SUMMARY
***
I'm running Rocky Linux 9. My window manager is FVWM3. I have background images
configured, but konsole displays a blank (black) background.
***

STEPS TO REPRODUCE
1. Under Rocky Linux 9 with FVWM3 as a window manager, run konsole. 
2. Configure a background in a profile.
3. Run konsole using that profile.

OBSERVED RESULT

Konsole's background is blank (black).

EXPECTED RESULT

Konsole's background is the image that was configured.

SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: Rocky 9 - 9.3 (Blue Onyx) - Linux 5.14.0-362.8.1.el9_3.x86_64
(available in About System)
KDE Plasma Version: 5.27.6
KDE Frameworks Version: 5.108.0
Qt Version: 5.15.9

ADDITIONAL INFORMATION

I can make konsole behave normally (the way that I expect) by reverting the
following change:

```
git diff 57c9a6856439926972f217f61ad4a4e23ebbe0cc
1e611bd45870c0f094a480610633ec85f1f330a2
diff --git a/src/Part.cpp b/src/Part.cpp
index 4a7cb601b..88ddfa3d1 100644
--- a/src/Part.cpp
+++ b/src/Part.cpp
@@ -60,8 +60,10 @@ Part::Part(QWidget *parentWidget, QObject *parent, const
QVariantList &)
         action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
     }

-    // Enable translucency support.
-    _viewManager->widget()->setAttribute(Qt::WA_TranslucentBackground, true);
+    // Enable translucency support if supported by the app.
+    if (_viewManager->widget()->window() &&
_viewManager->widget()->window()->testAttribute(Qt::WA_TranslucentBackground))
{
+        _viewManager->widget()->setAttribute(Qt::WA_TranslucentBackground,
true);
+    }

     // create basic session
     createSession();
diff --git a/src/terminalDisplay/TerminalDisplay.cpp
b/src/terminalDisplay/TerminalDisplay.cpp
index a685e9d68..794e4ff68 100644
--- a/src/terminalDisplay/TerminalDisplay.cpp
+++ b/src/terminalDisplay/TerminalDisplay.cpp
@@ -697,7 +697,11 @@ void TerminalDisplay::paintEvent(QPaintEvent *pe)

     for (const QRect &rect : region) {
         dirtyImageRegion += widgetToImage(rect);
-        _terminalPainter->drawBackground(paint, rect,
_terminalColor->backgroundColor(), true /* use opacity setting */);
+        // We can use the opacity settings only if we are in a top level
window which actually supports opacity.
+        // Many apps that use a konsole part such as kate or dolphin don't for
performance reasons.
+        // This will result in repaint glitches iin wayland due to missing
damage information
+        const bool useOpacity = window() &&
window()->testAttribute(Qt::WA_TranslucentBackground);
+        _terminalPainter->drawBackground(paint, rect,
_terminalColor->backgroundColor(), useOpacity);
     }

     if (_displayVerticalLine) {
```
I have no interest in transparency. I think that this two line "fix" needs to
be reverted and replaced with something a little more nuanced. It seems that
whether or not background images are displayed is orthogonal to whether or not
an application supports transparency.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the konsole-devel mailing list