Skip to content

Send icons for legacy X11 Apps #231

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 10, 2025
Merged

Conversation

alimirjamali
Copy link
Contributor

Since very old X11 Apps (Xterm, Xcalc, Xlogo, Xclock, Xeyes, ...) do not have the _NET_WM_ICON Atom, revert to WM_HINT and extract icons and their transparency with that technology. This is mostly useful for Xterm

fixes: QubesOS/qubes-issues#9973

@qubesos-bot
Copy link

qubesos-bot commented May 30, 2025

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025060912-4.3&flavor=pull-requests

Test run included the following:

New failures, excluding unstable

Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025031804-4.3&flavor=update

  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Notepad-file-...
  • system_tests_whonix

    • whonixcheck: Failed (test died)
      # Test died: command 'curl --form upload=@whonixcheck-anon-whonix ....
  • system_tests_splitgpg

  • system_tests_extra

  • system_tests_dispvm

  • system_tests_kde_gui_interactive

    • gui_keyboard_layout: wait_serial (wait serial expected)
      # wait_serial expected: "echo -e '[Layout]\nLayoutList=us,de' | sud...

    • gui_keyboard_layout: Failed (test died)
      # Test died: command 'test "$(cd ~user;ls e1*)" = "$(qvm-run -p wor...

  • system_tests_audio

    • TC_20_AudioVM_Pulse_debian-12-xfce: test_223_audio_play_hvm (failure)
      AssertionError: only silence detected, no useful audio data
  • system_tests_basic_vm_qrexec_gui_xfs

    • TC_20_NonAudio_whonix-gateway-17-pool: test_400_long_window_title (error)
      subprocess.CalledProcessError: Command 'qubes.WaitForSession' retur...
  • system_tests_qwt_win11@hw13

    • windows_install: wait_serial (wait serial expected)
      # wait_serial expected: qr/dcWzE-\d+-/...

    • windows_install: Failed (test died + timed out)
      # Test died: command 'script -e -c 'bash -x /usr/bin/qvm-create-win...

Failed tests

38 failures
  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Notepad-file-...
  • system_tests_whonix

    • whonixcheck: Failed (test died)
      # Test died: command 'curl --form upload=@whonixcheck-anon-whonix ....
  • system_tests_splitgpg

  • system_tests_extra

  • system_tests_dispvm

  • system_tests_kde_gui_interactive

    • gui_keyboard_layout: wait_serial (wait serial expected)
      # wait_serial expected: "echo -e '[Layout]\nLayoutList=us,de' | sud...

    • gui_keyboard_layout: Failed (test died)
      # Test died: command 'test "$(cd ~user;ls e1*)" = "$(qvm-run -p wor...

  • system_tests_audio

    • TC_20_AudioVM_Pulse_debian-12-xfce: test_223_audio_play_hvm (failure)
      AssertionError: only silence detected, no useful audio data
  • system_tests_basic_vm_qrexec_gui_xfs

    • TC_20_NonAudio_whonix-gateway-17-pool: test_400_long_window_title (error)
      subprocess.CalledProcessError: Command 'qubes.WaitForSession' retur...
  • system_tests_qwt_win11@hw13

    • windows_install: wait_serial (wait serial expected)
      # wait_serial expected: qr/dcWzE-\d+-/...

    • windows_install: Failed (test died + timed out)
      # Test died: command 'script -e -c 'bash -x /usr/bin/qvm-create-win...

Fixed failures

Compared to: https://openqa.qubes-os.org/tests/132953#dependencies

14 fixed
  • system_tests_whonix@hw7

    • whonixcheck: fail (unknown)
      Whonixcheck for sys-whonix failed...

    • whonixcheck: unnamed test (unknown)

  • system_tests_whonix

    • whonixcheck: fail (unknown)
      Whonixcheck for sys-whonix failed...

    • whonixcheck: unnamed test (unknown)

  • system_tests_suspend

    • suspend: unnamed test (unknown)
    • suspend: Failed (test died)
      # Test died: no candidate needle with tag(s) 'SUSPEND-FAILED' match...
  • system_tests_basic_vm_qrexec_gui

  • system_tests_qrexec

  • system_tests_kde_gui_interactive

    • clipboard_and_web: unnamed test (unknown)

    • clipboard_and_web: Failed (test died)
      # Test died: no candidate needle with tag(s) 'qubes-website' matche...

    • clipboard_and_web: wait_serial (wait serial expected)
      # wait_serial expected: "lspci; echo 2E8vz-\$?-"...

  • system_tests_audio

  • system_tests_guivm_vnc_gui_interactive

    • gui_filecopy: unnamed test (unknown)
    • gui_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'files-work' matched...

Unstable tests

Performance Tests

Performance degradation:

14 performance degradations
  • whonix-gateway-17_exec: 8.28 🔺 ( previous job: 6.82, degradation: 121.42%)
  • whonix-workstation-17_exec: 8.47 🔺 ( previous job: 7.67, degradation: 110.39%)
  • dom0_root_seq1m_q1t1_read 3:read_bandwidth_kb: 187893.00 :small_red_triangle: ( previous job: 294295.00, degradation: 63.85%)
  • dom0_root_seq1m_q1t1_write 3:write_bandwidth_kb: 52948.00 :small_red_triangle: ( previous job: 95454.00, degradation: 55.47%)
  • dom0_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 22836.00 :small_red_triangle: ( previous job: 79803.00, degradation: 28.62%)
  • dom0_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 1006.00 :small_red_triangle: ( previous job: 4826.00, degradation: 20.85%)
  • dom0_varlibqubes_seq1m_q8t1_write 3:write_bandwidth_kb: 132187.00 :small_red_triangle: ( previous job: 250795.00, degradation: 52.71%)
  • dom0_varlibqubes_rnd4k_q1t1_write 3:write_bandwidth_kb: 3925.00 :small_red_triangle: ( previous job: 4903.00, degradation: 80.05%)
  • fedora-41-xfce_root_seq1m_q1t1_write 3:write_bandwidth_kb: 30951.00 :small_red_triangle: ( previous job: 87940.00, degradation: 35.20%)
  • fedora-41-xfce_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 2950.00 :small_red_triangle: ( previous job: 3599.00, degradation: 81.97%)
  • fedora-41-xfce_private_seq1m_q1t1_read 3:read_bandwidth_kb: 297890.00 :small_red_triangle: ( previous job: 334687.00, degradation: 89.01%)
  • fedora-41-xfce_volatile_seq1m_q8t1_write 3:write_bandwidth_kb: 125704.00 :small_red_triangle: ( previous job: 179949.00, degradation: 69.86%)
  • fedora-41-xfce_volatile_rnd4k_q32t1_write 3:write_bandwidth_kb: 2622.00 :small_red_triangle: ( previous job: 5672.00, degradation: 46.23%)
  • fedora-41-xfce_volatile_rnd4k_q1t1_write 3:write_bandwidth_kb: 1045.00 :small_red_triangle: ( previous job: 1953.00, degradation: 53.51%)

Remaining performance tests:

58 tests
  • debian-12-xfce_exec: 7.00 🟢 ( previous job: 7.12, improvement: 98.27%)
  • debian-12-xfce_exec-root: 29.19 🔺 ( previous job: 28.65, degradation: 101.86%)
  • debian-12-xfce_socket: 8.62 🔺 ( previous job: 8.60, degradation: 100.24%)
  • debian-12-xfce_socket-root: 8.79 🔺 ( previous job: 8.52, degradation: 103.10%)
  • debian-12-xfce_exec-data-simplex: 67.55 🟢 ( previous job: 71.62, improvement: 94.31%)
  • debian-12-xfce_exec-data-duplex: 73.78 🔺 ( previous job: 70.34, degradation: 104.89%)
  • debian-12-xfce_exec-data-duplex-root: 87.81 🔺 ( previous job: 82.72, degradation: 106.15%)
  • debian-12-xfce_socket-data-duplex: 167.18 🔺 ( previous job: 156.96, degradation: 106.51%)
  • fedora-41-xfce_exec: 9.20 🟢 ( previous job: 9.27, improvement: 99.26%)
  • fedora-41-xfce_exec-root: 61.00 🟢 ( previous job: 61.51, improvement: 99.17%)
  • fedora-41-xfce_socket: 8.61 🟢 ( previous job: 8.63, improvement: 99.81%)
  • fedora-41-xfce_socket-root: 8.25 🟢 ( previous job: 8.71, improvement: 94.74%)
  • fedora-41-xfce_exec-data-simplex: 80.69 🔺 ( previous job: 75.53, degradation: 106.83%)
  • fedora-41-xfce_exec-data-duplex: 68.54 🟢 ( previous job: 71.56, improvement: 95.79%)
  • fedora-41-xfce_exec-data-duplex-root: 94.88 🟢 ( previous job: 109.13, improvement: 86.95%)
  • fedora-41-xfce_socket-data-duplex: 153.70 🔺 ( previous job: 150.61, degradation: 102.05%)
  • whonix-gateway-17_exec-root: 38.02 🟢 ( previous job: 40.43, improvement: 94.02%)
  • whonix-gateway-17_socket: 6.24 🟢 ( previous job: 7.24, improvement: 86.21%)
  • whonix-gateway-17_socket-root: 7.28 🟢 ( previous job: 7.65, improvement: 95.17%)
  • whonix-gateway-17_exec-data-simplex: 74.90 🟢 ( previous job: 78.32, improvement: 95.63%)
  • whonix-gateway-17_exec-data-duplex: 77.73 🔺 ( previous job: 76.65, degradation: 101.41%)
  • whonix-gateway-17_exec-data-duplex-root: 87.61 🟢 ( previous job: 88.52, improvement: 98.97%)
  • whonix-gateway-17_socket-data-duplex: 149.28 🟢 ( previous job: 171.76, improvement: 86.91%)
  • whonix-workstation-17_exec-root: 54.88 🟢 ( previous job: 58.26, improvement: 94.19%)
  • whonix-workstation-17_socket: 8.90 🔺 ( previous job: 8.19, degradation: 108.65%)
  • whonix-workstation-17_socket-root: 8.30 🔺 ( previous job: 8.13, degradation: 102.11%)
  • whonix-workstation-17_exec-data-simplex: 61.07 🟢 ( previous job: 74.99, improvement: 81.44%)
  • whonix-workstation-17_exec-data-duplex: 72.54 🟢 ( previous job: 72.71, improvement: 99.77%)
  • whonix-workstation-17_exec-data-duplex-root: 94.60 🟢 ( previous job: 99.82, improvement: 94.77%)
  • whonix-workstation-17_socket-data-duplex: 144.13 🟢 ( previous job: 169.50, improvement: 85.03%)
  • dom0_root_seq1m_q8t1_read 3:read_bandwidth_kb: 417260.00 :small_red_triangle: ( previous job: 446963.00, degradation: 93.35%)
  • dom0_root_seq1m_q8t1_write 3:write_bandwidth_kb: 210769.00 :green_circle: ( previous job: 129298.00, improvement: 163.01%)
  • dom0_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 6978.00 :green_circle: ( previous job: 6149.00, improvement: 113.48%)
  • dom0_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 11316.00 :green_circle: ( previous job: 10795.00, improvement: 104.83%)
  • dom0_varlibqubes_seq1m_q8t1_read 3:read_bandwidth_kb: 466033.00 :green_circle: ( previous job: 382273.00, improvement: 121.91%)
  • dom0_varlibqubes_seq1m_q1t1_read 3:read_bandwidth_kb: 443747.00 :green_circle: ( previous job: 437636.00, improvement: 101.40%)
  • dom0_varlibqubes_seq1m_q1t1_write 3:write_bandwidth_kb: 171960.00 :small_red_triangle: ( previous job: 184752.00, degradation: 93.08%)
  • dom0_varlibqubes_rnd4k_q32t1_read 3:read_bandwidth_kb: 108183.00 :green_circle: ( previous job: 62195.00, improvement: 173.94%)
  • dom0_varlibqubes_rnd4k_q32t1_write 3:write_bandwidth_kb: 6707.00 :green_circle: ( previous job: 6479.00, improvement: 103.52%)
  • dom0_varlibqubes_rnd4k_q1t1_read 3:read_bandwidth_kb: 6918.00 :small_red_triangle: ( previous job: 7669.00, degradation: 90.21%)
  • fedora-41-xfce_root_seq1m_q8t1_read 3:read_bandwidth_kb: 375430.00 :green_circle: ( previous job: 368309.00, improvement: 101.93%)
  • fedora-41-xfce_root_seq1m_q8t1_write 3:write_bandwidth_kb: 247072.00 :green_circle: ( previous job: 162081.00, improvement: 152.44%)
  • fedora-41-xfce_root_seq1m_q1t1_read 3:read_bandwidth_kb: 330572.00 :green_circle: ( previous job: 318716.00, improvement: 103.72%)
  • fedora-41-xfce_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 83532.00 :green_circle: ( previous job: 82694.00, improvement: 101.01%)
  • fedora-41-xfce_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 8404.00 :small_red_triangle: ( previous job: 8485.00, degradation: 99.05%)
  • fedora-41-xfce_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 867.00 :green_circle: ( previous job: 542.00, improvement: 159.96%)
  • fedora-41-xfce_private_seq1m_q8t1_read 3:read_bandwidth_kb: 351164.00 :small_red_triangle: ( previous job: 373957.00, degradation: 93.90%)
  • fedora-41-xfce_private_seq1m_q8t1_write 3:write_bandwidth_kb: 172488.00 :green_circle: ( previous job: 170062.00, improvement: 101.43%)
  • fedora-41-xfce_private_seq1m_q1t1_write 3:write_bandwidth_kb: 143926.00 :green_circle: ( previous job: 61534.00, improvement: 233.90%)
  • fedora-41-xfce_private_rnd4k_q32t1_read 3:read_bandwidth_kb: 93262.00 :green_circle: ( previous job: 80283.00, improvement: 116.17%)
  • fedora-41-xfce_private_rnd4k_q32t1_write 3:write_bandwidth_kb: 4191.00 :green_circle: ( previous job: 2215.00, improvement: 189.21%)
  • fedora-41-xfce_private_rnd4k_q1t1_read 3:read_bandwidth_kb: 8282.00 :green_circle: ( previous job: 7540.00, improvement: 109.84%)
  • fedora-41-xfce_private_rnd4k_q1t1_write 3:write_bandwidth_kb: 1167.00 :green_circle: ( previous job: 1130.00, improvement: 103.27%)
  • fedora-41-xfce_volatile_seq1m_q8t1_read 3:read_bandwidth_kb: 342448.00 :small_red_triangle: ( previous job: 369868.00, degradation: 92.59%)
  • fedora-41-xfce_volatile_seq1m_q1t1_read 3:read_bandwidth_kb: 336513.00 :green_circle: ( previous job: 324737.00, improvement: 103.63%)
  • fedora-41-xfce_volatile_seq1m_q1t1_write 3:write_bandwidth_kb: 52598.00 :green_circle: ( previous job: 17567.00, improvement: 299.41%)
  • fedora-41-xfce_volatile_rnd4k_q32t1_read 3:read_bandwidth_kb: 77149.00 :small_red_triangle: ( previous job: 79021.00, degradation: 97.63%)
  • fedora-41-xfce_volatile_rnd4k_q1t1_read 3:read_bandwidth_kb: 7343.00 :small_red_triangle: ( previous job: 7867.00, degradation: 93.34%)

Since very old X11 Apps (Xterm, Xcalc, Xlogo, Xclock, Xeyes, ...) do not
have the `_NET_WM_ICON` Atom, revert to `WM_HINT` and extract icons and
their transparency with that technology. This is mostly useful for Xterm

fixes: QubesOS/qubes-issues#9973
@alimirjamali
Copy link
Contributor Author

Reason for amendment:

While I could not find any program which uses 8bit/pixel pixel_mask (on Qubes OS 4.3 & Xfwm), It would be better to write the code for the hypothetical scenario and be safe than sorry.

except (
xcffib.xproto.WindowError,
xcffib.xproto.AccessError,
NoIconError
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need to catch NoIconError if you're going to transform it into the same exception.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A changed this a little bit, catching another error (xproto.WindowError).

@alimirjamali
Copy link
Contributor Author

@marmarek The openQA test does not show the 2nd commit of this PR.

Since xcffib is preferred over Xlib and the method for `_NET_WM_ICON` is
already implemented via xcffib, rewrite the previous patch with xcffib

related: QubesOS/qubes-issues#9973
@marmarek marmarek merged commit 774ee8f into QubesOS:main Jun 10, 2025
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Show Xterm icon (as well as other legacy X11 Apps which do not support _NET_WM_ICON Atom)
3 participants