Ooxcb Documentation Release 1.2

Total Page:16

File Type:pdf, Size:1020Kb

Ooxcb Documentation Release 1.2 ooxcb Documentation Release 1.2 samurai-x.org February 12, 2014 Contents i ii ooxcb Documentation, Release 1.2 Contents: Contents 1 ooxcb Documentation, Release 1.2 2 Contents CHAPTER 1 Introduction 1.1 What is ooxcb? ooxcb (the object oriented X C binding, yes, the C doesn’t fit here) is a new Python binding to the X server, developed for the samurai-x window manager. xpyb uses a wrapper generator to create python modules out of the XML X protocol descriptions of the xcb project. It aims to provide with an easy-to-use object-oriented interface to the X server. 1.2 Why? There already is a similar project called xpyb which is able to create an usable Python module for every X extension supported by xcb-proto. However, the most important parts of xpyb are in a C extension, and we wanted samurai-x to be pure-python. So we ported the whole C code of xpyb to Python, just using some functions of the libxcb API invoked by the ctypes module (you can get it here, but beware: it’s a bit unstable). Apart from that, xpyb-generated bindings are very close to the X protocol. For every extension, you have one class that has some methods for each request. On the one hand, xpyb is able to cover all the extensions supported by xcb-proto this way; on the other hand, the binding is not very comfortable to use. Because of that, we decided to write our own binding, based on the xpyb-ctypes code (so, big thanks to xpyb!). The ooxcb wrapper generator uses so-called interface files that describe the desired Python API of a specific extension - so we can create an API that is more comfortable and easy-to-use. However, someone has to write these interface files, and depending on the size and complexity of the extension, that’s a time-intensive job. At the moment, everything of the xproto extension (the core extension) is wrapped, but some parts need testing. The xtest extension is already usable, too. Additionally, ooxcb comes with a simple and powerful event dispatching system (stolen from pyglet) - you don’t have to use it necessarily, but it can make life much easier. 1.3 How does it look? Here’s a minimal example that displays a white window and exits if a mouse button is pressed: import sys import ooxcb from ooxcb.protocol.xproto import * conn= ooxcb.connect() 3 ooxcb Documentation, Release 1.2 screen= conn.setup.roots[conn.pref_screen] win= Window.create_toplevel_on_screen(conn, screen, back_pixel=screen.white_pixel, event_mask=EventMask.Exposure| EventMask.ButtonPress ) with conn.bunch(): win.configure(width=100) win.map() @win.event def on_button_press(evt): print ’Button pressed, exiting!’ conn.disconnect() sys.exit() while True: try: conn.wait_for_event().dispatch() except ooxcb.ProtocolException, error: print "Protocol error %s received!"% error.__class__.__name__ break conn.disconnect() 1.4 Is it usable? As said above, the xproto extension is already wrapped, and ooxcb is relatively stable, so it should be possible to use it (we are already using it for samurai-x). If you stumble upon bugs, please report them on the bug tracker. 4 Chapter 1. Introduction CHAPTER 2 Getting Started The following tries to be something like a tutorial for ooxcb programming. It requires a bit of knowledge of the X concept, but I tried to keep it simple. Please contact us if you have any suggestions. You can find the final version of this application in your source distribution in examples/gettingstarted.py or online here. Please don’t forget the api documentation! So, let’s start: If you want to use ooxcb in your application, you first have to import it. You also need to import a module that provides with a core protocol implementation. That’s most likely the ooxcb.protocol.xproto module: import sys import ooxcb from ooxcb.protocol import xproto The second import registers the xproto module as core module, so that import is necessary. Then, you will want to establish a connection to the X server. That is done using the ooxcb.connect() method: conn= ooxcb.connect() That connects to the default X display, specified by the DISPLAY environment variable. You could also connect to another display: conn= ooxcb.connect(’:1’) See the api documentation on ooxcb.connect() for more details. At the end of the script, we do disconnect cleanly: conn.disconnect() That’s not really required, but recommended. So, after you have established a connection, you will most likely want to get some information about the available screens. You can get the connection setup information by accessing the setup property of the connection: setup= conn.setup # That’s equivalent to setup= conn.get_setup() There’s exactly no difference between the two calls, the setup information are cached in any case. You can see all attributes of the setup here: ooxcb.Setup (not really documented, however). You can access the screens (there is often only one) by the attribute roots. And there is a pref_screen attribute on the connection that is the preferred screen index: 5 ooxcb Documentation, Release 1.2 screen= conn.setup.roots[conn.pref_screen] Yay. We have a screen. Now, if we want to create a window on this screen, that looks complicated, but it isn’t (really!). window= xproto.Window.create(conn, screen.root, screen.root_depth, screen.root_visual ) That’s the easiest call possible. It will create a window with the screen’s root window as parent, its root depth as depth and its root visual as visual. Fortunately, there is a shortcut for this boilerplate code: window= xproto.Window.create_toplevel_on_screen(conn, screen) Woah! So easy! These two calls will create a new (unmapped: invisible) window with the root window as parent: a top-level window. It will be 640x480 pixels huge, have no border and be located at the top left edge of the screen (x=0, y=0). Now ... window.map() print conn.wait_for_event() Shouldn’t this display a window? Why doesn’t it do? It just does nothing and doesn’t even stop! killall python helps, but ... how to fix it? As Christophe Tronche explains in his awesome “Short Xlib Tutorial” (worth reading!), we need to flush after we have done a bunch of requests. They are cached until you check a request or call flush, then all cached requests will be delivered. So, change the lines above to: window.map() conn.flush() print conn.wait_for_event() As a convenience function, you can also use ooxcb.conn.Connection.bunch() in a with stament. After the execution of the with block, the connection gets flushed. with conn.bunch(): window.map() print conn.wait_for_event() Of course, that makes more sense if you have more requests at a time. And - the window appears, but with ‘nothing in it’. We actually want to see something, and so we’ll set the background color of the window to plain white. That is done by modifying the window creation line: window= xproto.Window.create_toplevel_on_screen(conn, screen, back_pixel=screen.white_pixel) And - it has a white background. Awesome! Now, before we can start to draw anything here, we have to talk about events. We are communiating with the X server, and the X server is communicating with us. We send requests, he sends responses. And sometimes, he sends events. It is possible to handle events in an Xlib style here: while 1: evt = conn.wait_for_event() if isinstance(evt, xproto.ExposeEvent): print ’Got an expose event!’ elif ... 6 Chapter 2. Getting Started ooxcb Documentation, Release 1.2 But ooxcb also comes with an event dispatching framework, and it is very convenient to use because you don’t have to figure out who has to handle the event yourself. @window.event def on_expose(evt): print ’Got an expose event for %s!’% repr(window) while 1: conn.wait_for_event().dispatch() So, on_expose is called only if window is exposed. To draw in the window at the right time, we will register for the expose event and draw if we receive one. We first have to register for the expose events to receive any. Don’t forget to register for events! We can do that in the window creation line, too: window= xproto.Window.create_toplevel_on_screen(conn, screen, back_pixel=screen.white_pixel, event_mask=xproto.EventMask.Exposure ) Now, let’s listen to expose events. We have a new mainloop now: @window.event def on_expose(evt): " drawing here ..." # Our mainloop. while 1: conn.wait_for_event().dispatch() Now, if we want to draw something in the window now, we need a graphics context first. A graphics context is required for drawing anything on a drawable. Fortunately, a window is a drawable, so it is rather easy to start. Put the following in the beginning of the script: gc= xproto.GContext.create(conn, window) We will draw a line from (0, 0) to (640, 480) now. A diagonal line through the whole window. Put it in on_expose: @window.event def on_expose(evt): gc.poly_line(window, [(0,0), (640, 480)]) conn.flush() You see, we are giving poly_line a list of tuples of (x, y) here. That’s useful if we want to draw multiple lines at once, e.g. a triangle: gc.poly_line(window, [(10, 10), (600, 400), (10, 400), (10, 10)]) conn.flush() Also note that we have to pass window to each drawing function again. Don’t forget that. And don’t forget to flush. Well, we have a very cool triangle now. But if we click on the tiny X to close the window, we get a very bad “IOError: I/O error on X server connection.” exception.
Recommended publications
  • Porting a Window Manager from Xlib to XCB
    Porting a Window Manager from Xlib to XCB Arnaud Fontaine (08090091) 16 May 2008 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version pub- lished by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Contents List of figures i List of listings ii Introduction 1 1 Backgrounds and Motivations 2 2 X Window System (X11) 6 2.1 Introduction . .6 2.2 History . .6 2.3 X Window Protocol . .7 2.3.1 Introduction . .7 2.3.2 Protocol overview . .8 2.3.3 Identifiers of resources . 10 2.3.4 Atoms . 10 2.3.5 Windows . 12 2.3.6 Pixmaps . 14 2.3.7 Events . 14 2.3.8 Keyboard and pointer . 15 2.3.9 Extensions . 17 2.4 X protocol client libraries . 18 2.4.1 Xlib . 18 2.4.1.1 Introduction . 18 2.4.1.2 Data types and functions . 18 2.4.1.3 Pros . 19 2.4.1.4 Cons . 19 2.4.1.5 Example . 20 2.4.2 XCB . 20 2.4.2.1 Introduction . 20 2.4.2.2 Data types and functions . 21 2.4.2.3 xcb-util library . 22 2.4.2.4 Pros . 22 2.4.2.5 Cons . 23 2.4.2.6 Example . 23 2.4.3 Xlib/XCB round-trip performance comparison .
    [Show full text]
  • X Meets Z: Verifying Correctness in the Presence of POSIX Threads
    X Meets Z: Verifying Correctness In The Presence Of POSIX Threads Bart Massey Robert Bauer Computer Science Department Rational Software Corporation Portland State University 1920 Amberglen Pkwy, Suite 200 Portland, Oregon USA 97207–0751 Beaverton, Oregon USA 97006 [email protected] [email protected] Abstract and guide the development of resulting code. While this approach is not a panacea, it typically does dramatically The engineering of freely-available UNIX software nor- reduce the likelihood of defects and increase confidence mally utilizes an informal analysis and design process in the developed system. A more surprising finding of coupled with extensive user testing. While this approach most of these case studies, confirmed by the authors’ ex- is often appropriate, there are situations for which it pro- perience in teaching formal methods to industrial prac- duces less-than-stellar results. titioners, is that Z-like lightweight formal methods are quite accessible to reasonably experienced software en- A case study is given of such a situation that arose dur- gineers. In fact, in many studies, the savings in time and ing the design and implementation of a thread-safe li- effort due to reduced defect rates has exceeded the extra brary for interaction with the X Window System. XCB cost of judiciously-applied formal analysis. is a C binding library for the X protocol designed to work transparently with either single-threaded or multi- Thus, using the Z notation to construct a lightweight threaded clients. Managing XCB client thread access to problem model can enable the construction of an algo- the X server while honoring the constraints of both XCB rithm for controlling client thread access to the server and the X server is thus a delicate matter.
    [Show full text]
  • Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference
    USENIX Association Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference Monterey, California, USA June 10-15, 2002 THE ADVANCED COMPUTING SYSTEMS ASSOCIATION © 2002 by The USENIX Association All Rights Reserved For more information about the USENIX Association: Phone: 1 510 528 8649 FAX: 1 510 548 5738 Email: [email protected] WWW: http://www.usenix.org Rights to individual papers remain with the author or the author's employer. Permission is granted for noncommercial reproduction of the work for educational or research purposes. This copyright notice must be included in the reproduced paper. USENIX acknowledges all trademarks herein. XCL : An Xlib Compatibility Layer For XCB Jamey Sharp Bart Massey Computer Science Department Portland State University Portland, Oregon USA 97207–0751 fjamey,[email protected] Abstract 1 The X Window System The X Window System [SG86] is the de facto standard technology for UNIX applications wishing to provide a graphical user interface. The power and success of the X model is due in no small measure to its separation of The X Window System has provided the standard graph- hardware control from application logic with a stable, ical user interface for UNIX systems for more than 15 published client-server network protocol. In this model, years. One result is a large installed base of X applica- the hardware controller is considered the server, and in- tions written in C and C++. In almost all cases, these dividual applications and other components of a com- programs rely on the Xlib library to manage their inter- plete desktop environment are clients.
    [Show full text]
  • Upgrading and Performance Analysis of Thin Clients in Server Based Scientific Computing
    Institutionen för Systemteknik Department of Electrical Engineering Examensarbete Upgrading and Performance Analysis of Thin Clients in Server Based Scientific Computing Master Thesis in ISY Communication System By Rizwan Azhar LiTH-ISY-EX - - 11/4388 - - SE Linköping 2011 Department of Electrical Engineering Linköpings Tekniska Högskola Linköpings universitet Linköpings universitet SE-581 83 Linköping, Sweden 581 83 Linköping, Sweden Upgrading and Performance Analysis of Thin Clients in Server Based Scientific Computing Master Thesis in ISY Communication System at Linköping Institute of Technology By Rizwan Azhar LiTH-ISY-EX - - 11/4388 - - SE Examiner: Dr. Lasse Alfredsson Advisor: Dr. Alexandr Malusek Supervisor: Dr. Peter Lundberg Presentation Date Department and Division 04-02-2011 Department of Electrical Engineering Publishing Date (Electronic version) Language Type of Publication ISBN (Licentiate thesis) X English Licentiate thesis ISRN: Other (specify below) X Degree thesis LiTH-ISY-EX - - 11/4388 - - SE Thesis C-level Thesis D-level Title of series (Licentiate thesis) 55 Report Number of Pages Other (specify below) Series number/ISSN (Licentiate thesis) URL, Electronic Version http://www.ep.liu.se Publication Title Upgrading and Performance Analysis of Thin Clients in Server Based Scientific Computing Author Rizwan Azhar Abstract Server Based Computing (SBC) technology allows applications to be deployed, managed, supported and executed on the server and not on the client; only the screen information is transmitted between the server and client. This architecture solves many fundamental problems with application deployment, technical support, data storage, hardware and software upgrades. This thesis is targeted at upgrading and evaluating performance of thin clients in scientific Server Based Computing (SBC). Performance of Linux based SBC was assessed via methods of both quantitative and qualitative research.
    [Show full text]
  • Spack a flexible Package Manager for HPC
    Spack A flexible package manager for HPC Overview & Introduc0on to Basic Spack Concepts Todd Gamblin Center for Applied Scien0fic Compu0ng LLNL-PRES-806064 This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory github.com/LLNL/spack under contract DE-AC52-07NA27344. Lawrence Livermore National Security, LLC Spack is a flexible package manager for HPC § How to install Spack: $ git clone https://github.com/scalability-llnl/spack.git § How to install a package: $ cd spack/bin $ ./spack install hdf5 § HDF5 and its dependencies are installed Get Spack! within the Spack directory. hp://github.com/LLNL/spack § No addi0onal setup required! 2 LLNL-PRES-806064 github.com/LLNL/spack What is the proDucon environment for HPC? § Someone’s home directory? § LLNL? LANL? Sandia? ANL? LBL? TACC? — Environments at large-scale sites are very different. § Which MPI implementaon? § Which compiler? § Which dependencies? § Which versions of dependencies? — Many applicaons require specific dependency versions. Real answer: there isn’t a single production environment or a standard way to build. 3 LLNL-PRES-806064 github.com/LLNL/spack HPC soware is becoming increasingly complex § Not much standardizaon in HPC — every machine/applicaon has a different so[ware stack § Sites share unique hardware among teams with very different requirements — Users want to experiment with many exo0c architectures, compilers, MPI versions — All of this is necessary to get the best performance § Example environment for some LLNL codes: 48 third party packages x 3 MPI versions x 3-ish Platforms mvapich mvapich2 OpenMPI Linux BlueGene Cray Up to 7 compilers Oh, and 2-3 versions of x Intel GCC XLC Clang x each package = ~7,500 combinations PGI Cray Pathscale We want an easy way to quickly sample the space, to build configurations on demand! 4 LLNL-PRES-806064 github.com/LLNL/spack Most exisEng tools Do not support combinatorial versioning § Tradi0onal binary package managers — RPM, yum, APT, yast, etc.
    [Show full text]
  • Migrating from Qt 4 to Qt 5
    Migrating from Qt 4 to Qt 5 Nils Christian Roscher-Nielsen Product Manager, The Qt Company David Faure Managing Director and migration expert, KDAB France 2 © 2015 Moving to Qt 5 Motivation • New user interface requirements • Embedded devices • New technologies available • 7 years of Qt 4 • Time to fix many smaller and larger issues with a new major release 3 © 2015 QML / Qt Quick Age of the new User Interfaces • New industry standards • More devices than ever • 60 frames per seconds • Multi modal interaction • Enter the SceneGraph • Powerful QML User Interfaces • Full utilization of OpenGL hardware • Full control of your User Interface on all devices 4 © 2015 Embedded Devices Qt powers the world • Qt Platform Abstraction • Enables easy porting to any platform or operating system • Modular architecture • Easier to tailor for embedded HW • Boot to Qt • Premade embedded Linux based stack for device creation • Device deployment • Greatly improved tooling • On device debugging and profiling 5 © 2015 Wide Platform support • Seamless experiences across all major platforms • Windows, Mac, Linux • Windows Phone, iOS and Android • Jolla, Tizen, Ubuntu Touch, BB10, and more • VxWorks and QNX • High DPI Support • Dynamic GL switching • Simplified deployment process • Charts and 3D Visualization • Location and positioning 6 © 2015 Increased speed of development For your own applications and for Qt itself • Qt Creator 3 • Stable Plugin API • Qt Quick Designer • QML Profiler • Modularization • More stable and reliable Qt code base • Faster module development • Easier to create and maintain new modules • Qt Open Governance model 7 © 2015 Qt UI Offering – Choose the Best of All Worlds Qt Quick Qt Widgets Web / Hybrid C++ on the back, declarative UI Customizable C++ UI controls for Use HTML5 for dynamic web design (QML) in the front for traditional desktop look-and-feel.
    [Show full text]
  • Yocto Project Qtday 2019
    Run Qt on Linux embedded systems using Yocto Marco Cavallini, KOAN [ License : CC BY-SA 4.0 ] 1 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http://KoanSoftware.com Rights to copy © Copyright 2019, Marco Cavallini - KOAN sas - m.cavallini <AT> koansoftware.com ftp://ftp.koansoftware.com/public/talks/QtDay-2019/QtDay2019-Koan.pdf Attribution – ShareAlike 4.0 You are free to copy, distribute, display, and perform the work to make derivative works to make commercial use of the work Under the following conditions Attribution. You must give the original author credit. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. License text: https://creativecommons.org/licenses/by-sa/4.0/legalcode 2 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http://KoanSoftware.com Abstract This talk will give you all the information to run Qt applications on a real Linux embedded system using Yocto Project. Will be discussed how to prepare the target system with all the needed Qt5 libraries, setup the ARM cross-compiler and finally run your beautiful Qt application on it. The purpose of this talk is to show how to use Qt5 with Yocto Project on a real embedded hardware like Raspberry PI3 or similar like iMX6. 3 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http://KoanSoftware.com Agenda ➢What is an embedded system ➢Differences between a normal distro
    [Show full text]
  • 1. Why POCS.Key
    Symptoms of Complexity Prof. George Candea School of Computer & Communication Sciences Building Bridges A RTlClES A COMPUTER SCIENCE PERSPECTIVE OF BRIDGE DESIGN What kinds of lessonsdoes a classical engineering discipline like bridge design have for an emerging engineering discipline like computer systems Observation design?Case-study editors Alfred Spector and David Gifford consider the • insight and experienceof bridge designer Gerard Fox to find out how strong the parallels are. • bridges are normally on-time, on-budget, and don’t fall ALFRED SPECTORand DAVID GIFFORD • software projects rarely ship on-time, are often over- AS Gerry, let’s begin with an overview of THE DESIGN PROCESS bridges. AS What is the procedure for designing and con- GF In the United States, most highway bridges are budget, and rarely work exactly as specified structing a bridge? mandated by a government agency. The great major- GF It breaks down into three phases: the prelimi- ity are small bridges (with spans of less than 150 nay design phase, the main design phase, and the feet) and are part of the public highway system. construction phase. For larger bridges, several alter- There are fewer large bridges, having spans of 600 native designs are usually considered during the Blueprints for bridges must be approved... feet or more, that carry roads over bodies of water, preliminary design phase, whereas simple calcula- • gorges, or other large obstacles. There are also a tions or experience usually suffices in determining small number of superlarge bridges with spans ap- the appropriate design for small bridges. There are a proaching a mile, like the Verrazzano Narrows lot more factors to take into account with a large Bridge in New Yor:k.
    [Show full text]
  • Reproducible and Customizable Deployments with GNU Guix
    Reproducible and Customizable Deployments with GNU Guix Ludovic Courtes` FOSDEM 2016 The difficulty of keeping software environments under control. #1. Upgrades are hard. #2. Stateful system management is intractable. $DISTRO $DISTRO $DISTRO $DISTRO apt-get update apt-get update state 1a state 1b $DISTRO $DISTRO apt-get update apt-get update state 1a state 1b apt-get install foo apt-get remove bar state 2a state 2b $DISTRO $DISTRO apt-get update apt-get update state 1a state 1b apt-get install foo apt-get remove bar state 2a state 2b apt-get remove bar apt-get install foo state 3a state 3b $DISTRO $DISTRO apt-get update apt-get update state 1a state 1b apt-get install foo apt-get remove bar = ? state 2a state 2b apt-get remove bar apt-get install foo state 3a state 3b #3. It’s worse than this. ! “app bundles” (Docker images) Giving up? Giving up? ! “app bundles” (Docker images) “Debian and other distributions are going to be that thing you run docker on, little more.” — Jos Poortvliet, ownCloud developer http://lwn.net/Articles/670566/ It’s also that thing you run inside Docker! https://imagelayers.io/ Functional package management. gtk+ = g(glib; gcc; make; coreutils) gcc = h(make; coreutils; gcc0) ... gimp = f (gtk+; gcc; make; coreutils) where f = ./configure && make && make install gcc = h(make; coreutils; gcc0) ... where f = ./configure && make && make install gimp = f (gtk+; gcc; make; coreutils) gtk+ = g(glib; gcc; make; coreutils) where f = ./configure && make && make install gimp = f (gtk+; gcc; make; coreutils) gtk+ = g(glib; gcc; make; coreutils) gcc = h(make; coreutils; gcc0) ..
    [Show full text]
  • Release Notes for X11R7.6 the X.Org Foundation [ November 2010
    Release Notes for X11R7.6 The X.Org Foundation [http://www.x.org/wiki/XorgFoundation] November 2010 Abstract These release notes contains information about features and their status in the X.Org Foundation X11R7.6 release. Table of Contents Introduction to the X11R7.6 Release ...................................................................................... 1 Summary of new features in X11R7.6 .................................................................................... 2 Overview of X11R7.6 ......................................................................................................... 3 Details of X11R7.6 components ............................................................................................ 3 Video Drivers ............................................................................................................ 3 Input Drivers ............................................................................................................. 5 Xorg server ............................................................................................................... 5 Font support .............................................................................................................. 8 Build changes and issues ..................................................................................................... 8 Silent build rules ........................................................................................................ 8 New configure options for font modules ........................................................................
    [Show full text]
  • CONFLEX 8 Revision B Installation Manual and Quick Start for Linux
    CONFLEX 8 Revision B Installation Manual and Quick Start For Linux 0. Download the installer When you receive e-mail from us including download site, you can download CONFLEX 8.B installers for Linux from the links. In this document, the installer “CONFLEX8B_eng_gui_flex” is downloaded and used as example. 1. Install and copy sample files If the file “CONFLEX8B_eng_gui_flex” does not have execution authority, please execute chmod +x CONFLEX8B_eng_gui_flex before installation. i) Execute below command as root: sudo ./CONFLEX8B_eng_gui_flex ii) Click “Next”. iii) Select “I accept the license” and click “Next”. iv) Click “Install”. v) Click “Finish” after finished installation. CONFLEX Corporation http://www.conflex.net/ TEL: +81-3-6380-8290 FAX: +81-3-6380-8299 After installation is completed, CONFLEX8.B is installed in /usr/local/conflex. Please set the environment variable as below: export LD_LIBRARY_PATH=/usr/local/conflex/lib:$LD_LIBRARY_PATH *When CONFLEX Interface cannot run with below messages, This application failed to start because it could not find or load the Qt platform plugin “xcb” or qt.qpa.plugin: Could not load the Qt platform plugin “xcb” in “” even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. please run command below to install the necessary libraries: yum install libxcb xcb-util-renderutil xcb-util-keysyms xcb-util-wm xcb- util-image compat-libxcb xcb-util 2. Send Information and Activation To activate your authorized license for CONFLEX, you need to send information of your machine to us. When you run CONFLEX and click [Request License] in “Send MAC address” window, the E-mail software starts automatically and below message is appeared: Your Name : Affiliation : Address : ZIP code : Phone No.
    [Show full text]
  • XCB: an X Protocol C Binding
    XCB: An X Protocol C Binding Bart Massey Jamey Sharp Computer Science Department Portland State University fbart,[email protected] October 6, 2001 Abstract protocol requests and responses to an API for the C programming language [KR78]; as the repository The standard X Window System binding for the C of a number of performance optimizations of the C programming language, Xlib, is a very successful API, such as caching and grouping of requests; as piece of software across a wide range of applica- a base for GUI toolkit implementations; and as a tions. However, for many modern uses, Xlib is not focal point for convenience routines and extensions an ideal fit: its size, complexity, difficulty of ex- necessary to build functional, internationalized and tension and synchronous interface are particularly standards-conforming standalone programs without problematic. toolkit support. The XCB “X Protocol C Binding”, currently under Unfortunately, these roles have been somewhat development, is a response to these and other con- contradictory, and the long history of Xlib has not cerns. XCB is intended to be a simpler and more generally worked in its favor. The current Xlib suf- direct binding of protocol objects to C functions; fers from a number of outright defects. careful design of the XCB API and internal data structures and thorough modularization provides a 1.1 Xlib Features solution that is size and time efficient, maintain- able, easy to use both by single-threaded and multi- Xlib has a number of notable features, resulting threaded applications and easily extensible. Some both from an excellent initial design and the ma- features of Xlib have been sacrificed in achieving turity attained through 15 years of large-scale use.
    [Show full text]