René's URL Explorer Experiment


Title: Matplotlib picks a headless backend on Linux if Wayland is available but X11 isn't · Issue #18377 · matplotlib/matplotlib · GitHub

Open Graph Title: Matplotlib picks a headless backend on Linux if Wayland is available but X11 isn't · Issue #18377 · matplotlib/matplotlib

X Title: Matplotlib picks a headless backend on Linux if Wayland is available but X11 isn't · Issue #18377 · matplotlib/matplotlib

Description: Bug report Bug summary I've been running code using Matplotlib on a Linux computer using a Wayland compositor with X11 disabled. The environment variable DISPLAY is thus not present, although WAYLAND_DISPLAY (or WAYLAND_SOCKET) are. Matp...

Open Graph Description: Bug report Bug summary I've been running code using Matplotlib on a Linux computer using a Wayland compositor with X11 disabled. The environment variable DISPLAY is thus not present, although WAYLA...

X Description: Bug report Bug summary I've been running code using Matplotlib on a Linux computer using a Wayland compositor with X11 disabled. The environment variable DISPLAY is thus not present, although W...

Opengraph URL: https://github.com/matplotlib/matplotlib/issues/18377

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Matplotlib picks a headless backend on Linux if Wayland is available but X11 isn't","articleBody":"\u003c!--To help us understand and resolve your issue, please fill out the form to the best of your ability.--\u003e\r\n\u003c!--You can feel free to delete the sections that do not apply.--\u003e\r\n\r\n### Bug report\r\n\r\n**Bug summary**\r\n\r\nI've been running code using Matplotlib on a Linux computer using a Wayland compositor with X11 disabled. The environment variable DISPLAY is thus not present, although WAYLAND_DISPLAY (or WAYLAND_SOCKET) are. Matplotlib falls back to a headless backend (agg), even though a working display system (Qt5Agg) is available.\r\n\r\n\u003c!--A short 1-2 sentences that succinctly describes the bug--\u003e\r\n\r\n**Code for reproduction**\r\n\r\nAny simple code that uses plt.show() should exhibit this behavior.\r\n\r\n```python\r\nimport matplotlib.pyplot as plt\r\nimport matplotlib\r\nprint(matplotlib.get_backend())\r\nplt.plot([1,2],[3,4])\r\nplt.show()\r\n```\r\n\r\n**Actual outcome**\r\n\r\nNo window appears, code prints \"agg\".\r\n\r\n**Expected outcome**\r\n\r\nExpect a window with the plot to appear, code prints \"Qt5Agg\"\r\n\r\n\u003c!--A description of the expected outcome from the code snippet--\u003e\r\n\u003c!--If this used to work in an earlier version of Matplotlib, please note the version it used to work on--\u003e\r\n\r\n**Matplotlib version**\r\n\r\n\u003c!--Please specify your platform and versions of the relevant libraries you are using:--\u003e\r\n  * Operating system: Linux\r\n  * Matplotlib version:  3.3.1\r\n  * Python version: 3.8.5\r\n  * Wayland compositor: tested with Sway, or Weston\r\n  * Installed via package manager\r\n\r\n**Current workaround:**\r\n\r\nTo ensure that a GUI backend is selected, instead of a headless one:\r\n```diff\r\ndiff -r /usr/lib/python3.8/site-packages/matplotlib/cbook/__init__.py ./cbook/__init__.py\r\n74c74\r\n\u003c     if sys.platform.startswith(\"linux\") and not os.environ.get(\"DISPLAY\"):\r\n---\r\n\u003e     if sys.platform.startswith(\"linux\") and not os.environ.get(\"DISPLAY\") and not os.environ.get(\"WAYLAND_DISPLAY\") and not os.environ.get(\"WAYLAND_SOCKET\"):\r\n```\r\nWhy do I check for WAYAND_DISPLAY or WAYLAND_SOCKET to be set, instead of removing this line? It turns out that if these are unset, libwayland (and thus toolkits using it) will by default try to connect to the display \"wayland-0\". This behavior is horrible when one uses computers with multiple sessions, graphical and not, running, because a script run from an ssh connection might (or might not) lock up and accidentally display something on a monitor in another building.\r\n\r\nTo ensure that the Qt5Agg backend loads, remove the extra check for DISPLAY's presence. (The code dates back to https://github.com/matplotlib/matplotlib/commit/9bed01614814b2bc76d32110e1c6a3f9aa773971 and https://github.com/matplotlib/matplotlib/commit/5c222dfe49dbb9e760e09150fef3d4c01783e3bb, where apparently trying and failing to open a Qt4 window was fatal; maybe newer Qt versions let us use the standard try-except approach?)\r\n\r\n```diff\r\ndiff -r /usr/lib/python3.8/site-packages/matplotlib/backends/backend_qt5.py backend_qt5.py\r\n105,120d104\r\n\u003c             # check for DISPLAY env variable on X11 build of Qt\r\n\u003c             if QtCore.qVersion() \u003e= \"5.\":\r\n\u003c                 try:\r\n\u003c                     importlib.import_module(\r\n\u003c                         # i.e. PyQt5.QtX11Extras or PySide2.QtX11Extras.\r\n\u003c                         f\"{QtWidgets.__package__}.QtX11Extras\")\r\n\u003c                     is_x11_build = True\r\n\u003c                 except ImportError:\r\n\u003c                     is_x11_build = False\r\n\u003c             else:\r\n\u003c                 is_x11_build = hasattr(QtGui, \"QX11Info\")\r\n\u003c             if is_x11_build:\r\n\u003c                 display = os.environ.get('DISPLAY')\r\n\u003c                 if display is None or not re.search(r':\\d', display):\r\n\u003c                     raise RuntimeError('Invalid DISPLAY variable')\r\n\u003c \r\n```\r\n\r\n\r\n","author":{"url":"https://github.com/mstoeckl","@type":"Person","name":"mstoeckl"},"datePublished":"2020-08-30T03:50:28.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/18377/matplotlib/issues/18377"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:a2f3b19e-f108-7a74-0246-494fb15b7272
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id82D4:323BC4:471F8D:5D94C6:6A52FEDD
html-safe-nonce54fca39945a1e8c394970353551c87860e23ab16dbcbb7c267dc3612657f4b4f
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4MkQ0OjMyM0JDNDo0NzFGOEQ6NUQ5NEM2OjZBNTJGRUREIiwidmlzaXRvcl9pZCI6IjM0MDM2NTgyMTI1OTA5NDM5NjUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmacccbb2e2a32c84c623751e28646a71f8e5863f03d6a9a656506c86b7bdfad1e60
hovercard-subject-tagissue:688647342
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/18377/issue_layout
twitter:imagehttps://opengraph.githubassets.com/1dbb459adff1ab25eb216b1dd20a4af62099ea8e3595cd43cbe12a67e22899e6/matplotlib/matplotlib/issues/18377
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/1dbb459adff1ab25eb216b1dd20a4af62099ea8e3595cd43cbe12a67e22899e6/matplotlib/matplotlib/issues/18377
og:image:altBug report Bug summary I've been running code using Matplotlib on a Linux computer using a Wayland compositor with X11 disabled. The environment variable DISPLAY is thus not present, although WAYLA...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamemstoeckl
hostnamegithub.com
expected-hostnamegithub.com
Noneb9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb
turbo-cache-controlno-preview
go-importgithub.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git
octolytics-dimension-user_id215947
octolytics-dimension-user_loginmatplotlib
octolytics-dimension-repository_id1385122
octolytics-dimension-repository_nwomatplotlib/matplotlib
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1385122
octolytics-dimension-repository_network_root_nwomatplotlib/matplotlib
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release07a982c1d40157c619b364352b704c3ce66bb332
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/matplotlib/matplotlib/issues/18377#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmatplotlib%2Fmatplotlib%2Fissues%2F18377
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmatplotlib%2Fmatplotlib%2Fissues%2F18377
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=matplotlib%2Fmatplotlib
Reloadhttps://github.com/matplotlib/matplotlib/issues/18377
Reloadhttps://github.com/matplotlib/matplotlib/issues/18377
Reloadhttps://github.com/matplotlib/matplotlib/issues/18377
Please reload this pagehttps://github.com/matplotlib/matplotlib/issues/18377
matplotlib https://github.com/matplotlib
matplotlibhttps://github.com/matplotlib/matplotlib
Please reload this pagehttps://github.com/matplotlib/matplotlib/issues/18377
Notifications https://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib
Fork 8.4k https://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib
Star 23k https://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib
Code https://github.com/matplotlib/matplotlib
Issues 1.1k https://github.com/matplotlib/matplotlib/issues
Pull requests 408 https://github.com/matplotlib/matplotlib/pulls
Actions https://github.com/matplotlib/matplotlib/actions
Projects https://github.com/matplotlib/matplotlib/projects
Wiki https://github.com/matplotlib/matplotlib/wiki
Security and quality 0 https://github.com/matplotlib/matplotlib/security
Insights https://github.com/matplotlib/matplotlib/pulse
Code https://github.com/matplotlib/matplotlib
Issues https://github.com/matplotlib/matplotlib/issues
Pull requests https://github.com/matplotlib/matplotlib/pulls
Actions https://github.com/matplotlib/matplotlib/actions
Projects https://github.com/matplotlib/matplotlib/projects
Wiki https://github.com/matplotlib/matplotlib/wiki
Security and quality https://github.com/matplotlib/matplotlib/security
Insights https://github.com/matplotlib/matplotlib/pulse
#17396https://github.com/matplotlib/matplotlib/pull/17396
Matplotlib picks a headless backend on Linux if Wayland is available but X11 isn'thttps://github.com/matplotlib/matplotlib/issues/18377#top
#17396https://github.com/matplotlib/matplotlib/pull/17396
v3.4.0https://github.com/matplotlib/matplotlib/milestone/53
https://github.com/mstoeckl
mstoecklhttps://github.com/mstoeckl
on Aug 30, 2020https://github.com/matplotlib/matplotlib/issues/18377#issue-688647342
9bed016https://github.com/matplotlib/matplotlib/commit/9bed01614814b2bc76d32110e1c6a3f9aa773971
5c222dfhttps://github.com/matplotlib/matplotlib/commit/5c222dfe49dbb9e760e09150fef3d4c01783e3bb
v3.4.0https://github.com/matplotlib/matplotlib/milestone/53
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.