XSESSION(1)
π¦ XSESSION π
(that's XSESSION(1) bestie β General Commands Manual, we're in the big leagues)
β¨ NAME β¨
xsession β session manager for the X Window System πͺπ
π SYNOPSIS π
xsession [-toolkitoption ...] [-console] [-cpp] [-defaultWM ...] [-D...]
[-m4] [-keep] [-notify] [-remote] [-sounds] [-split] [-startup]
[-version] [-help]
πΈ DESCRIPTION πΈ
Okay so picture this: xsession is a session manager. That's the whole vibe. It's normally executed by your ~/.xinitrc (or ~/.xsession) script, and it controls your entire X Window session. The second it starts up, it launches a window manager plus whatever applications you picked, like a little entourage. πββοΈ And the best part? At any time during your session you can switch to a different window manager or run other applications straight from the xsession menus. You can also lock your screen with an independent locker application, and redirect the messages that usually go to /dev/console over to the xsession window. Iconic behavior honestly.
One genuinely useful feature of xsession is the preprocessing of window managers' configuration files. When a window manager gets launched, its startup file can be filtered through m4(1) or cpp(1). Some macros are defined (like the host name, screen size, and so on) that help you customize your menus and screen layout. The big win here: several window managers can share the same startup file. For example, you can (and they do) use the same file for mwm(1) (Motif), twm(1), ctwm(1) and vtwm(1). Some lines are protected by a test on the WM_NAME macro, but the other lines are common. This saves a lot of time if you want to maintain the same menu structure for all four of them. You can also use include statements in your file. π§
The best way to execute xsession? Put it in your ~/.xinitrc (or ~/.xsession) file, as the last client. The xinit(1) manual page says that the last long-lived program started [...] should be left in the foreground so that the script won't exit. You'll find a similar statement in the xdm(1) manual page. That last program should be xsession. And honestly? It might even be the only program executed in your startup file, because xsession itself provides a way to launch other applications. When it starts, xsession looks in your home directory and executes a file named .X11Startup, if found. That shell script is what starts your client programs. Slay. β¨
π OPTIONS π
XSession accepts all of the standard X Toolkit command line options (like -iconic, -geometry and so on; see X(1)). The following additional arguments are supported too. Quick heads up though: because the standard X Toolkit method is used to retrieve X resources, most of these command line options are really just another way to set the value of some resources. These options always take precedence over their corresponding resources. Periodt. π
-consoleβ When-consoleis set,xsessiontries to redirect the console output messages to its window. This feature should work on most systems, but it may be necessary thatxsessionissetuidto root. π-defaultWMwindow-manager's-short-name β Specifies the (short) name of the default window manager to launch. See theMenu customizationsection below for details. The easiest way to choose your default window manager is by using X resources in your~/.Xdefaultsfile (or the file you read withxrdb(1)). The default value isTWM.-keepβ Sets thekeepTmpFileresource totrue. This one is used mainly for debugging purposes. π-notify,-nonotifyβ When a message is printed in thexsessionwindow and-notifyis set, the icon name of the application has*appended to it, so it's obvious even when the application is iconified. When the application is de-iconified, the icon name gets restored to its initial value. The-notifyoption is set by default. π-preprocessorm4|cpp β Specifies which preprocessor must be used. Only two values may be used: eitherm4orcpp, according as you want to usem4(1)orcpp(1). The default value ism4.-quietβ If you use this option,xsessionwill not print any messages when an application or window manager is started. The warning messages (e.g.configuration file not found) will not be displayed either. π€«-remoteβ You should set this option if you runxsessionon a remote host (e.g. if your~/.xinitrcor~/.xsessionfile tests if you're on an oldish machine and, if so, executesxsessionon a more powerful host in a remote shell).XSessionmust then execute a special exit code to work around an unwanted feature inrsh(1)that prevents it from exiting if there's one or more children ofxsessionalive. This exit code shuts down the socket associated with the remote connection. π°οΈ-sounds,-nosoundsβ Activates (or disables) the sounds. The sounds will only be available ifxsessionwas compiled withSOUNDSdefined. The sounds are activated by default ifSOUNDSwas defined, and they're disabled otherwise. π-split,-nosplitβ When-splitand-consoleare set, the output messages of the programs and the ones related to the console are shown in separate windows. The-splitoption is set by default, but it will be silently ignored if theconsoleoption is not used. πͺπͺ-startup,-nostartupβ If-startupis set, then the user's.X11Startupfile is executed byxsessionat startup. You might want to turn this option off for debugging purposes, or if you don't have a.X11Startupfile. The-startupoption is set by default. π
β οΈ Note: if you use a+instead of a-in the boolean options above, then the effect will be reversed (e.g.+startupis the same as-nostartup). Don't say I didn't warn you bestie π
There is no X resource equivalent for the following command line options:
-Dsymbolβ This defines a symbol for the preprocessor that's run on the window managers' configuration files. All instances of symbol in the configuration files will be replaced by the NULL string (ifxsessionwas compiled withUSE_M4defined) or 1 (ifxsessionwas compiled withUSE_CPP).-Dsymbol=valueβ This defines a symbol for the preprocessor that's run on the window managers' configuration files. All instances of symbol in the configuration files will be replaced by value.-cpp,-m4β These options are equivalent to-preprocessor cppand-preprocessor m4, respectively.-helpβ Guess what? π-versionβ Prints the current version number and exits. π
π X DEFAULTS π
This program uses mainly the Text, Paned, Box, MenuButton and SimpleMenu Athena widgets. Look in the Athena Widget Set documentation for controlling them. See also the Application resources section in this manual page. π
π WIDGETS π
In order to specify resources, it's useful to know the hierarchy of the widgets which compose xsession. In the notation below, indentation indicates hierarchical structure. The widget class name is given first, followed by the widget instance name. π§¬
XSession xsession
Paned top_pane
Box menu_box
MenuButton session_button
SimpleMenu menu
SmeBSB lock_menu_item
SmeBSB quit_menu_item
MenuButton wm_button
SimpleMenu menu
SmeBSB <window manager's short name>_menu_item
.
. (one for each window manager)
.
MenuButton app_button
SimpleMenu menu
SmeBSB <application's short name>_menu_item
.
. (one for each application)
.
MenuButton misc_button
SimpleMenu menu
SmeBSB clear_menu_item
SmeBSB clear2_menu_item
Text ascii_text
Text ascii_text2
The <window manager's short name> and <application's short name> represent the short name of the program (a window manager or another application). For example, if you have TWM in your Window Managers menu, you'll have a SmeBSB instance named TWM_menu_item. π―
π APPLICATION RESOURCES π
Okay bestie, xSession has its own little stash of application-specific resources so you can customize stuff just for xsession. Some of these have command-line equivalents that can override them β iconic override behavior, no cap.
You can also pass any of these on the command line using the X Toolkit Intrinsics resource specification mechanism. For example, to run xsession using xlock(1) to lock the screen:
% xsession -xrm '*lockCommand:xlock -mode random'
allowBell(classAllowBell) β set it totrueorfalse. When itβstrue,xsessionrings the bell if a message printed in its window contains one or more bell character(s). This can happen if the output from an application launched from the menu contains those characters β like in an error message, fr fr. Default:false.appNames(classAppNames) β a comma-separated list of the short names of the applications shown in theApplicationsmenu. Peep theMenu customizationsection below for the whole deal on names and short names. The default should have been customized for your site duringxsessioninstallation. The names inside this resource are used as<application_name>to build the resource names right below this one.app_<application_name>(classApp_<application_name>) β each one is a string with the full application name, then a comma, then the command to execute that application. SeeMenu customizationbelow for how to build these. Itβs giving βcustom menu, but make it exact.βconsole(classConsole) β set it totrueorfalse. Iftrue,xsessiontries to redirect console output messages to its window. This feature should work on most systems, but it may be necessary forxsessionto besetuidto root. Default:false.defaultWM(classDefaultWM) β the short name of the default window manager to launch. SeeMenu customizationbelow for the details. Default:TWM.keepTmpFile(classKeepTmpFile) β set it totrueorfalse. Iftrue,xsessionwill not delete the temporary files created for the preprocessor and the window manager. This only makes sense if you use a preprocessor β likem4(1)orcpp(1)β to filter the window managerβs configuration file. This option is mainly for debugging purposes. Default:false.lockCommand(classLockCommand) β the command to execute when the user selects theLockentry in theSessionmenu. The string can contain space characters so you can add arguments to the command. Default:xscreensaver-command -lock.motd(classMotd) β set it totrueorfalse. Whentrue, the content of the/etc/motdfile is printed in thexsessionwindow at startup. Default:true.notify(classNotify) β set it totrueorfalse. When a message is printed in thexsessionwindow and this resource istrue, the icon name of the application has*appended, so itβs evident even when the application is iconified. When the application is de-iconified, the icon name is restored to its initial value. Default:true.preprocessor(classPreprocessor) β specifies which preprocessor must be used. Only two values may be used:m4orcpp, depending on whether you want to usem4(1)orcpp(1). Default:m4.quiet(classQuiet) β set it totrueorfalse. Iftrue,xsessionwill not print any messages when an application or window manager is started. The warning messages β e.g.configuration file not foundβ will not be displayed either. Default:false.remote(classRemote) β set it totrueorfalse. The usual way to change this value is by using a command line option, not an X resource. Default:false.ringBell(classRingBell) β set it totrueorfalse. When a message is printed in thexsessionwindow and this resource istrue, the bell is rung so the user is warned even if the window is not visible. Default:false.sounds(classSounds) β set it totrueorfalse. If this resource isfalse, then the sounds are disabled. The sounds will only be available ifxsessionwas compiled withSOUNDSdefined. Default:trueifSOUNDSwas defined, elsefalse.splitWindow(classSplitWindow) β set it totrueorfalse. If both this resource and theconsoleresource aretrue, the normal output messages of the programs and the ones related to the console are shown in separate windows. Default:true.startup(classStartup) β set it totrueorfalse. Iftrue, then the userβs.X11Startupfile is executed byxsessionat startup. You may want to turn this off for debugging purposes or if you donβt have a.X11Startupfile. Default:true.wmNames(classWMNames) β a comma-separated list of the short names of the window managers shown in theWindow Managersmenu. SeeMenu customizationbelow for details about names and short names. The default should have been customized for your site duringxsessioninstallation. The names inside this resource are used as<window_manager_name>to build the resource name below.wm_<window_manager_name>(classWM_<window_manager_name>) β each one is a comma-separated list that defines the properties of a window manager. First field: the full name of the window manager. Second field: the command to execute to run this window manager. Third field (optional): the name of the configuration file that should be filtered throughm4(1)orcpp(1)to produce the actual window managerβs startup file. Fourth and fifth fields (optional): these explain toxsessionhow the window manager can read an arbitrary file as a configuration file β this can be done using command line arguments or an environment string. SeeMenu customizationbelow for how to build these resources.
If xsession was compiled with the SOUNDS symbol defined, the following extra X resources are available. See the Sounds section below for more info about using sounds in xsession. π§β¨
soundStart(classSoundStart) β name of the sound file to play whenxsessionstarts. Default:none.soundEnd(classSoundEnd) β name of the sound file to play whenxsessionends. Default:none.soundStartWM(classSoundStartWM) β name of the sound file to play when a window manager starts. Default:none.soundEndWM(classSoundEndWM) β name of the sound file to play when a window manager ends. Default:none.soundStartApp(classSoundStartApp) β name of the sound file to play when an application starts. Default:none.soundEndApp(classSoundEndApp) β name of the sound file to play when an application ends. Default:none.soundLock(classSoundLock) β name of the sound file to play when the screen locker starts. Default:none.soundNotify(classSoundNotify) β name of the sound file to play when a message is printed in the main window. Default:none.
β¨ PREPROCESSING OF WINDOW MANAGERS FILES β¨
Okay so one of the most powerful features of xsession? It can filter the window managers' setup files through a preprocessor, and honestly it's giving main character energy. This is useful if you work on several machines which don't necessarily have the same characteristics, or if you wish to share a common configuration file between several window managers. You can use m4(1) or cpp(1) directives (e.g. file inclusion directives) and pre-defined symbols to customize your environment at runtime. XSession uses either m4(1) or cpp(1) to pre-process the setup files, according to the value of the preprocessor resource.
When xsession starts a new window manager, it creates a temporary file for the preprocessor. This file contains all symbols that will be defined and then includes the original window manager's configuration file. The preprocessor will parse that file and send its output to another temporary file. This latter file will be the actual window manager's configuration file. In order to achieve this, xsession should have a way to force the window manager into using another input file. This is usually done with a command line parameter for the window manager (such a -f name) or with an environment variable. If a window manager provides no way for doing this, you won't be able to use the preprocessing features for it. See βMenu Customizationβ below for details.
The following symbols are defined (most of these definitions were borrowed from the ctwm(1) manual page):
XSESSION_VERSIONβ The version number ofxsession.XSESSION_PIDβ The process number ofxsession. You may use this pid to send aSIGHUPsignal and terminate the session from one of the window manager's menus.SERVERHOSTβ This variable is set to the name of the machine that is running the X server.CLIENTHOSTβ The machine that is running the clients (i.e. the window manager and all other applications).HOSTNAMEβ The canonical hostname running the clients (i.e. a fully-qualified version ofCLIENTHOST).MACHINEβ The machine type ofCLIENTHOST(e.g.sun4m,mips,i486, ...).USERβ The name of the user running the program. Gotten from the environment.HOMEβ The user's home directory. Gotten from the environment.VERSIONβ The X major protocol version. As seen byProtocolVersion(3).REVISIONβ The X minor protocol revision. As seen byProtocolRevision(3).VENDORβ The vendor of your X server. For example:MIT X Consortium.RELEASEβ The release number of your X server. For MIT X11R5, this is5.WIDTHβ The width of your display in pixels.HEIGHTβ The height of your display in pixels.X_RESOLUTIONβ The X resolution of your display in pixels per meter.Y_RESOLUTIONβ The Y resolution of your display in pixels per meter.PLANESβ The number of bit planes your display supports in the default root window.BITS_PER_RGBβ The number of significant bits in an RGB color. (log base 2 of the number of distinct colors that can be created. This is often different from the number of colors that can be displayed at once.)CLASSβ The visual class of your display. It returns one ofStaticGray,GrayScale,StaticColor,PseudoColor,TrueColor,DirectColor, or, if it cannot determine what you have,NonStandard.COLORβ This variable is just a wrapper around theCLASSdefinition. It returnsYesonStaticColor,PseudoColor,TrueColorandDirectColordisplays. On the other displays, it is undefined if you usecpp(1), and it returnsNoif you usem4(1).WM_NAMEβ The name of the current window manager. This is useful for protecting parts of one shared setup file: you may use the same file for several window managers and protect some lines if they are understood by only one of them.TWM_TYPEβ Same asWM_NAME. For compatibility withctwm(1)configuration files.
Here is a short summary of the useful directives of m4(1) and cpp(1). Please refer to their own manual pages for any additional information.
Warning: when usingm4,xsessionautomatically inserts the followingm4directive in the temporary file:
changequote([,])
This will use the square brackets as string delimiters, instead of the default quote and backquote characters, which are probably already used in your file. Don't duplicate this directive in your file, because m4 doesn't like that...
Assigning a value to a symbol π
With m4, use define(symbol, value). With cpp, use #define symbol value.
Including a file π¦
With m4, use include(file) or sinclude(file). The sinclude directive is similar to include, except that it does not complain if the file is inaccessible. With cpp, use #include "file".
Evaluating a mathematical expression πΈ
With m4, use eval(expression). There is no equivalent for cpp.
Testing if a symbol if defined π
With m4, use ifdef([symbol], result1, result2), where the third argument is optional. Note that the square brackets are used to quote the symbol. If the symbol is defined, this expression returns result1, else it returns result2. With cpp, use #ifdef symbol ... #else ... #endif, where the #else ... part is optional. Each directive should be on a line by itself. If symbol is defined, then the lines between #ifdef and #else will be output. If not, then the lines between #else and #endif will be output.
Testing an expression π§
With m4, ifelse(expr1, expr2, result1, ...) does the following: if expr1 and expr2 are the same string, then the result of the ifelse is result1. If not, and if there are more than four arguments, the process is repeated with arguments 4, 5, 6 and so on. Otherwise, the value is either the last string not used by the above process, or NULL if it is not present. Some versions of cpp allow a similar structure with #if, but most versions do not have any equivalent.
Although m4 is less intuitive than cpp, it has more features. This is why our preferences go to m4 for preprocessing the window managers' files. See also the βExamplesβ section below, it shows some parts of configuration files to be preprocessed by m4.
πΈ MENU CUSTOMIZATION πΈ
Okay bestie, this is the fun part β the part where you make it yours. The Window Managers and Applications menus may (and honestly, should) be customized for your site using X resources. These menus get built with a whole two-stage process: first, the list of items is read from a resource, then the definition of each item gets looked up in the resource database. Two steps, no skipping π
The wmNames resource string is a comma-separated list that gives the (short) names of the window managers that will be listed in the menu. Keep these names short, and keep every character inside the set {A'-Z', a'-z', 0'-9', _', -'} β and no space character, bestie, I'm serious. Each of these names then gets used to create a new resource name with the prefix wm_, and that resource holds the complete description of the window manager.
Same energy applies to the applications, with the appNames and app_... resources. π«Ά
For a given window manager, the wm_<window_manager's_short_name> resource must be built like this. It's a comma-separated string made of five fields (and obviously none of them are allowed to contain any comma characters β that's the whole delimiter, babes):
- The first field is mandatory and denotes the full name of the window manager. This one may contain space characters. β¨
- The second field is mandatory and denotes the command to execute in order to run this window manager. This field may contain space characters so you can add some arguments to the command.
- The third field is optional and specifies the name of the configuration file which must be preprocessed by
xsessionfor this window manager. This field must contain one and only one occurence of%s, which will be replaced bym4orcppaccording to the preprocessor that is used. And remember, bestie: only the preprocessed file is used by the window manager, not the original and usual one (seePreprocessing of window managers filesabove). π - The fourth and fifth fields are optional. Their whole purpose in life is to explain to
xsessionhow this window manager can read an arbitrary file instead of its default configuration file. All well-behaved window managers should be able to do that! Some of them use an environment variable, while others need a command line option. If a command line option is needed, it should be placed in the fourth field of the string; this field must contain one and only one occurence of%sto specify where the filename should be inserted in the arguments list. If an environment variable is needed, the fifth field should be defined asVARIABLE=VALUE, whereVARIABLEdenotes the name of the environment variable to be used, andVALUEdenotes the value to be assigned to the variable;VALUEmust contain one and only one occurence of%sto specify where the filename should be inserted into the variable.
For most window managers, it should be possible to use one of these two fields. If both are undefined, or if there isn't any occurence of %s in them, then the preprocessed file cannot be given to the window manager by xsession β and in that case, you will lose the preprocessing feature for this window manager, because it will always take its default configuration file, without any preprocessing applied on it. π Tragic, I know.
For a given application, the app_<application's_short_name> must be built like this. It's a comma-separated string made of two fields, and the two fields are mandatory:
- The first field denotes the full name of the application. It may contain space characters.
- The second field specifies the command to execute in order to run this application. This field may contain space characters so you can add some arguments to the command.
So in order to add a new window manager (respectively a new application) into the xsession menus, you have to insert its short name in the wmNames (respectively appNames) resource, and create a new resource named wm_<window_manager's_short_name> (respectively app_<application's_short_name>) built according to the rules above. Both steps. No shortcuts. π
π₯ EXAMPLES π₯
π Adding a new application to the menu
If you want to add a new application to the Applications menu (e.g. xmosaic), you need to do two things. First, add the name of this application in the appNames list (this is the name that will be shown in the menu π). The appNames resource in your ~/.Xdefaults file should now look like this:
XSession*appNames: XTerm, Emacs, XEdit, XMan, XMosaic
Then, add a new resource to define the application. This string contains the application's full name followed by the command that xsession will execute:
XSession*app_XMosaic: XMosaic (WWW browser), xmosaic -dil
The next time you run xsession, your Applications menu will have a new entry for xmosaic. Slay. β¨
π¦ Window manager's configuration file
You can use the same file for several window managers. For example, you can have a common file called .wmrc.m4 that is used by ctwm(1), twm(1) and vtwm(1). If some lines in this file are specific to one of these window managers, you can perform a test on WM_NAME to prevent other window managers from seeing them. For instance, here is an excerpt from the Colors section of our .wmrc.m4 file:
Color
{
DefaultBackground "blue"
DefaultForeground "yellow"
ifelse(WM_NAME, ctwm, [
MapWindowBackground "white"
MapWindowForeground "black"
], WM_NAME, vtwm, [
DoorBackground "orange"
DoorForeground "blue"
VirtualBackground "LightSteelBlue"
])
}
π§ Other preprocessor features
You can also use the preprocessor (m4, here) to define a symbol that will be used later. For example, you can define a FULLSCREEN variable that will give the correct geometry for a window that should cover the whole screen. Here is another excerpt from a .wmrc.m4 file:
define(FULLSCREEN, translit(WIDTH*eval(HEIGHT - 30)+0+0, *, x))
define(SHOWIMAGE, [xv -quit -rmode 1])
menu "Applications"
{
"Applications" f.title
"XMan" f.exec "xman -notopbox -bothshown -pagesize FULLSCREEN &"
"Backgrounds" f.title
"Stupid logo" f.exec "SHOWIMAGE winlogo.gif &"
}
See also the examples directory in the xsession distribution for longer examples. π
πΆ SOUNDS πΆ
XSession can use the rplay library if it is installed on your system. If xsession was compiled with SOUNDS defined, then it will play a sound when some event occurs. For example, you may configure xsession to play Creaky-1.au when you start it, and goodbye.au when you quit. You only need to add the following lines to your ~/.Xdefaults file (or the file you read with xrdb(1)):
XSession*soundStart: Creaky-1.au
XSession*soundEnd: goodbye.au
Here's how this works: when the selected event occurs, xsession will send a request to the rplayd server running on CLIENTHOST, asking it to play a sound. The rplayd server will take care of what is needed to find the sound file and play it. π§
You will find the rplay library and lots of sound files on the following FTP site: sounds.sdsu.edu (130.191.224.4). You will also find the library on ftp2.montefiore.ulg.ac.be and ftp.x.org. π«Ά
π COLORS π
Like some other X applications, xsession provides another set of resources if you want to use it on a color display. You only need to include the following lines in your ~/.Xdefaults file (or the file you read with xrdb(1)):
#ifdef COLOR
*customization: -color
#endif
This will cause xsession to pick up the colors in the application-defaults color customization file (XSession-color) instead of the standard applications-defaults customization file (XSession). It's giving glow-up, fr fr. π
β¨ ENVIRONMENT β¨
DISPLAYβ To get the default host and display number. If this variable is not defined in the environment and the-displaycommand line option is used instead,xsessionadds this variable to its environment.HOMEβ To get the name of the user's home directory. If this variable is defined,xsessionchanges the current directory to the one specified in this variable.TMPDIRβ If set, temporary files will be created in this directory. Otherwise, temporary files will be created in/usr/tmp.XENVIRONMENTβ To get the name of a resource file that overrides the global resources stored in theRESOURCE_MANAGERproperty.
π FILES π
/usr/lib/X11/app-defaults/XSessionβ specifies required resources for standard displays/usr/lib/X11/app-defaults/XSession-colorβ specifies resources for color displays~/.xinitrcβ the best way to launchxsession~/.xsessionβ another good way to launchxsession~/.X11Startupβ startup file executed byxsession/etc/motdβ message-of-the-day/usr/tmp/xs_WM<...>β preprocessed startup files created byxsession
π SEE ALSO π
X(1), xinit(1), xdm(1), xrdb(1), m4(1), cpp(1), twm(1), ctwm(1), mwm(1), xscreensaver(1), xlock(1), xconsole(1), Athena Widget Set, X Toolkit Intrinsics.
π BUGS π
The program may crash if you put more than one %s in the third, fourth or fifth field of a wm_<window_manager's_short_name> resource, or if you give another incorrect format string. Like, don't do that. π
All symbols defined for the preprocessor are blindly replaced in the window managers' startup files, and this may cause some problems. For instance, if you use the variable $HOME in one file, the preprocessor will replace the symbol HOME by its actual value, and your window manager will see a lost $ before the path name. Solution: remove the $ sign. π
If used from xsession, mwm(1) (Motif) must be customized in such a way that it does not prompt the user if it receives a KILL signal. Indeed, when you decide to switch to another window manager, xsession sends a KILL signal to the current window manager, waits until it ends, and starts the new one. If, thanks to the prompt, the user cancels the order sent by xsession, the window manager will not end and xsession will wait forever. β³ For mwm(1), the showFeedback (class ShowFeedback) resource must be changed from its default value (all) to something that does not include kill. For example, you can use behavior move placement quit resize restart as the value of this resource.
Please report other bugs to the authors at the following E-mail addresses. Thanks. We would rather get criticisms than no comments at all! π
π AUTHORS
The whole thing was built by these two, bestie β full credit, no cap:
- Raphael Quinet
<quinet@montefiore.ulg.ac.be>/<quinet@stud.montefiore.ulg.ac.be> - Alain Nissen
<nissen@montefiore.ulg.ac.be>/<nissen@stud.montefiore.ulg.ac.be>
Literally two emails each, so you know they were reachable. Iconic.
π COPYRIGHT
So this is the part where we get all official. π
Copyright Β© 1993, 1994, Alain Nissen & Raphael Quinet, University of Liege, Belgium.
Okay so here's the deal, and yes you have to read it, it's giving legal:
The X Consortium, and literally any party that gets a copy of these files from the X Consortium β directly or indirectly β is granted, free of charge, a full and unrestricted, irrevocable, world-wide, paid up, royalty-free, nonexclusive right and license to deal in this software and documentation files (the "Software"). And that includes, without limitation, the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons who receive copies from any such party to do the same. Yes, all of that. π«Ά
And that license includes, without limitation, a license to do all of the above actions under any patents of the party supplying this software to the X Consortium. Slay, patents included.
Now for the scary part, buckle up π¨
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. So like, no promises. None. π
IN NO EVENT SHALL THE X CONSORTIUM, THE AUTHORS OR THE UNIVERSITY OF LIEGE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Translation: if it goes sideways, it's not on them. π
And one last thing β the above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. So don't be that person who strips the notice, bestie. Keep it. π
π AVAILABILITY
Wanna get your hands on it? Facts:
- The most recent released version of
xsessionis available for anonymous FTP fromftp.x.org(198.112.44.100) in the directory/contrib/applications. - The latest version under development is available for anonymous FTP from
ftp2.montefiore.ulg.ac.be(139.165.8.25) in the directory/pub/xsession.
Two servers, two vibes: one stable, one chaotic-in-a-fun-way. Pick your fighter. β
And that's the whole page, bestie β you made it to the end. π¦ This was XSESSION(1), Version 1.1, dated 6 June 1994 (yes, the manual is older than most of the internet, and it still ate). Go forth and configure your X session like the main character you are. πβ¨π
π¦ where this page comes from
- opensuse-leap 16.0: xsession 1.1-bp160.1.12 Β· MIT
- opensuse-leap 16.0: xsession 1.1-bp160.1.12 Β· MIT
- opensuse-leap 16.0: xsession 1.1-bp160.1.12 Β· MIT
- opensuse-leap 16.0: xsession 1.1-bp160.1.12 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms