Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
X Window System
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Limitations and criticism== ''[[The Unix-Haters Handbook]]'' (1994) devoted a full chapter to the problems of X.<ref name="The X-Windows Disaster">{{cite web|url=http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html |title=The X-Windows Disaster |publisher=Art.Net |first1=Don |last1=Hopkins |access-date=10 November 2009 |archive-url=https://web.archive.org/web/20091111071410/http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html |archive-date=11 November 2009}}</ref> ''Why X Is Not Our Ideal Window System'' (1990) by Gajewska, Manasse and McCormack detailed problems in the protocol with recommendations for improvement. ===User interface issues=== The lack of design guidelines in X has resulted in several vastly different interfaces, and in applications that have not always worked well together. The [[Inter-Client Communication Conventions Manual]] (ICCCM), a specification for client interoperability, has a reputation for being difficult to implement correctly. Further standards efforts such as [[Motif (software)|Motif]] and [[Common Desktop Environment|CDE]] did not alleviate problems. This has frustrated users and programmers.<ref>{{Cite web |last=Bumgarner |first=Bill |date=Nov 15, 1996 |title=Re: X is painful |url=https://lists.debian.org/debian-user/1996/11/msg00637.html |url-status=live |archive-url=https://web.archive.org/web/20221231141002/https://lists.debian.org/debian-user/1996/11/msg00637.html |archive-date=Dec 31, 2022 |website=Debian Mailing Lists}}</ref> Graphics programmers now generally address consistency of application [[look and feel]] and communication by coding to a specific desktop environment or to a specific widget toolkit, which also avoids having to deal directly with the ICCCM. X also lacks native support for user-defined stored procedures on the X server, in the manner of [[NeWS]]{{snd}}there is no [[Turing-complete]] scripting facility. Various desktop environments may thus offer their own (usually mutually incompatible) facilities. ===Computer accessibility related issues=== Systems built upon X may have [[computer accessibility|accessibility]] issues that make utilization of a computer difficult for disabled users, including [[right click]], [[double click]], [[middle click]], [[mouse-over]], and [[focus stealing]]. Some X11 clients deal with accessibility issues better than others, so persons with accessibility problems are not locked out of using X11. However, there is no accessibility standard or accessibility guidelines for X11. Within the X11 standards process there is no working group on accessibility; however, accessibility needs are being addressed by software projects to provide these features on top of X. The [[Orca (assistive technology)|Orca]] project adds accessibility support to the X Window System, including implementing an API ([[AT-SPI]]<ref>{{cite web|url=https://wiki.gnome.org/Projects/Orca |title=Orca |website=GNOME Wiki! |access-date=7 November 2012 |url-status=live |archive-url=https://web.archive.org/web/20131225193528/https://wiki.gnome.org/Projects/Orca/ |archive-date= Dec 25, 2013 }}</ref>). This is coupled with GNOME's [[Accessibility Toolkit|ATK]] to allow for accessibility features to be implemented in X programs using the GNOME/GTK APIs.<ref>{{cite web|url=http://developer.gnome.org/atk/unstable/ |title=ATK - Accessibility Toolkit |website=GNOME Developer Center |access-date=7 November 2012 |url-status=live |archive-url=https://web.archive.org/web/20130101162725/http://developer.gnome.org/atk/unstable/ |archive-date= Jan 1, 2013 }}</ref> KDE provides a different set of accessibility software, including a text-to-speech converter and a screen magnifier.<ref>{{cite web |url=https://www.kde.org/applications/utilities/ |title=Utilities - Accessibility |publisher= KDE |access-date=6 January 2013 |url-status=live |archive-url= https://web.archive.org/web/20130114101752/https://www.kde.org/applications/utilities/ |archive-date= Jan 14, 2013 }}</ref> The other major desktops (LXDE, Xfce and Enlightenment) attempt to be compatible with ATK. ===Network=== [[File:X11 ssh tunnelling.png|right|250px|thumb|Example of tunnelling an X11 application over SSH]] An X client cannot generally be detached from one server and reattached to another unless its code specifically provides for it ([[Emacs]] is one of the few common programs with this ability). As such, moving an entire session from one X server to another is generally not possible. However, approaches like [[Virtual Network Computing]] (VNC), [[NX technology|NX]] and [[Xpra]] allow a virtual session to be reached from different X servers (in a manner similar to [[GNU Screen]] in relation to terminals), and other applications and toolkits provide related facilities.<ref>{{cite web |url-status=dead |url=http://icie.cs.byu.edu/cs656/Papers/Gettys.pdf |title=SNAP Computing and the X Window System |archive-url=https://web.archive.org/web/20100626203344/http://icie.cs.byu.edu/cs656/Papers/Gettys.pdf |archive-date=26 June 2010 |first1=James |last1=Gettys |at=4.6 |website=Interactive Computing Everywhere }}</ref> Workarounds like [[x11vnc]] (''VNC :0 viewers''), Xpra's shadow mode and NX's nxagent shadow mode also exist to make the current X-server screen available. This ability allows the user interface (mouse, keyboard, monitor) of a running application to be switched from one location to another without stopping and restarting the application. Network traffic between an X server and remote X clients is not encrypted by default. An attacker with a [[packet sniffer]] can intercept it, making it possible to view anything displayed to or sent from the user's screen. The most common way to encrypt X traffic is to establish a [[Secure Shell]] (SSH) tunnel for communication. Like all [[thin client]]s, when using X across a network, [[Bandwidth (computing)|bandwidth]] limitations can impede the use of [[bitmap]]-intensive applications that require rapidly updating large portions of the screen with low latency, such as 3D animation or photo editing. Even a relatively small ''uncompressed'' 640×480×24 bit 30 fps video stream (~211 Mbit/s) can easily outstrip the bandwidth of a 100 Mbit/s network for a single client. In contrast, modern versions of X generally have extensions such as [[Mesa (computer graphics)|Mesa]] allowing local display of a local program's graphics to be optimized to bypass the network model and directly control the video card, for use with full-screen video, rendered 3D applications, and other such applications. ===Client–server separation=== X's design requires the clients and server to operate separately, and device independence and the separation of client and server incur overhead. Most of the overhead comes from network [[round-trip delay time]] between client and server ([[Network latency|latency]]) rather than from the protocol itself: the best solutions to performance issues depend on efficient application design.<ref>{{Cite web |last=Packard |first=Keith |title=An LBX Postmortem |url=https://keithp.com/~keithp/talks/lbxpost/paper.html |url-status=live |archive-url=https://web.archive.org/web/20231115105104/https://keithp.com/~keithp/talks/lbxpost/paper.html |archive-date=Nov 15, 2023 |website=keithp.com}}</ref> A common criticism of X is that its network features result in excessive complexity and decreased performance if only used locally. Modern X implementations use [[Unix domain socket]]s for efficient connections on the same host. Additionally [[shared memory]] (via the [[MIT-SHM]] extension) can be employed for faster client–server communication.<ref>{{Cite web |last=Corbet |first=Jonathan |date=1991 |title=MIT-SHM—The MIT Shared Memory Extension How the shared memory extension works |url=http://www.xfree86.org/current/mit-shm.html |url-status=live |archive-url=https://web.archive.org/web/20231222105026/http://www.xfree86.org/current/mit-shm.html |archive-date=Dec 22, 2023 |website=XFree86}}</ref> However, the programmer must still explicitly activate and use the shared memory extension. It is also necessary to provide fallback paths in order to stay compatible with older implementations, and in order to communicate with non-local X servers.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)