An Extensible Constraint-Enabled Window Manager

Total Page:16

File Type:pdf, Size:1020Kb

An Extensible Constraint-Enabled Window Manager Scwm: An Extensible Constraint-Enabled Window Manager Greg J. Badros Jeffrey Nichols Alan Borning gjb,jwnichls,borning @cs.washington.edu f Dept. of Computer Scienceg and Engineering University of Washington, Box 352350 Seattle, WA 98195-2350, USA Abstract powerful, and satisfying. We desired a platform for researching advanced Using C to implement a highly-interactive applica- window layout paradigms including the use of con- tion also complicates extensibility and customiz- straints. Typical window management systems ability. To add a new feature, the user likely must are written entirely in C or C++, complicating write C code, recompile, relink, and restart the extensibility and programmability. Because no ex- application before changes are finally available for isting window manager was well-suited to our goal, testing and use. This development cycle is es- we developed the Scwm window manager. In pecially problematic for software such as a win- Scwm, only the core window-management primi- dow manager that generally is expected to run for tives are written in C while the rest of the pack- weeks at a time. Additionally, maintaining all the age is implemented in its Guile/Scheme exten- features that any user desires would result in ter- sion language. This architecture, first seen in rible code bloat. Emacs, enables programming substantial new fea- tures in Scheme and provides a solid infrastructure An increasingly popular solution to these prob- for constraint-based window layout research and lems is the use of a scripting language on top of other advanced capabilities such as voice recogni- a core system that defines new domain-specific tion. We have used Scwm to implement an inter- primitives. A prime example of this architecture is face to the Cassowary constraint solving toolkit to Richard Stallman’s GNU Emacs text editor [39]. permit end users to declaratively specify relation- In the twenty years since the introduction of ships among window positions and sizes. The win- Emacs, numerous extensible scripting languages dow manager dynamically maintains those con- have evolved including Tcl [34], Python [22], straints and lets users view and modify them. Perl [41], and Guile [11, 36]. Each of the first Scwm succeeds in providing an excellent imple- three languages was designed from scratch with mentation framework for our research and is prac- scripting in mind. In contrast, Guile—the GNU tical enough that we rely on it everyday. Ubiquitous Intelligent Language for Extension— takes a pre-existing language, Scheme, and adapts it for use as an extension language. 1 Introduction We are exploring constraint-based window layout paradigms and their user interfaces. Because we We desired a platform for researching advanced are most interested in practical use of constraints, window layout paradigms including the use of con- we decided to target the X windows system and straints. Typical window management applica- build a complete window manager for X/11. We tions for the X windows system are written en- chose to use Guile/Scheme as the extension lan- tirely in a low-level systems language such as C guage for our project that we named Scwm—the or C++. Because the X windows libraries have Scheme Constraints Window Manager. The most a native C interface, using C is justified. How- notable feature of Scwm is constraint-based lay- ever, a low-level language is far from ideal when out. Whereas typical window management sys- prototyping implementations of sophisticated win- tems use only direct manipulation [37] of win- dow manager functionality. For our purposes, a dows, Scwm also supports a user-interface for higher-level language is much more appropriate, specifying constraints among windows that it then deal with innumerable quirks of applications. By maintains using our Cassowary Constraint solving basing Scwm on fvwm2, we leveraged those capa- toolkit [1]. Much of the advanced functionality of bilities to ensure that Scwm was at least as well- Scwm is implemented in Scheme, thus exploiting behaved as fvwm2. Our fundamental change to the embedded-extension-language architecture. fvwm2 was to replace its ad-hoc configuration lan- guage with Guile/Scheme [11]. The next section discusses some background is- sues. Section 3 describes the Scwm system in 2.2 Scheme for Extensibility detail and discusses some of the benefits and dif- ficulties that arise in using Guile/Scheme. Sec- Guile [11] is the GNU project’s R4RS-compliant tion 4 describes the constraint-based capabilities Scheme [8] system designed specifically for use as of Scwm. Section 5 mentions related work, and an embedded interpreter. Scheme is a very simple, section 6 discusses future work and concludes. elegant dialect of the long-popular Lisp program- ming language. It is easy to learn and provides exceptionally powerful abstraction capabilities 2 Background including higher-order functions, lexically-scoped closures and a hygienic macro system. Guile Scwm leverages numerous existing technologies extends the standard Scheme language with a to provide its infrastructure and support its ad- module system and numerous system libraries vanced capabilities. wrappers (e.g., POSIX file operations). 2.1 X Windows and fvwm2 2.3 Embedded Constraint Solver A fundamental design decision for the X window- ing system [32] was to permit an arbitrary user- Cassowary is a constraint solving toolkit that in- level application to manage the various applica- cludes support for both arbitrary linear arith- tion windows. This open architecture permits metic equalities and inequalities [1]. We imple- great flexibility in the way windows look and be- mented the Cassowary toolkit in C++, Java, and have. Smalltalk, and created a wrapper of the C++ implementation for Guile/Scheme. Thus, it is X window managers are complex applications. straightforward to use the constraint solver in a Many Xlib library functions wrapping the X broad range of target applications. protocol are specific to the extraordinary needs of window managers. Because our goal is to do in- In addition, the Cassowary toolkit permits numer- teresting research beyond that of modern window ous hooks for extension. Each constraint vari- managers, we used an existing popular window able has an optional attached object, and the con- straint solver can be instructed to invoke a call- manager, fvwm2, as our starting point [12]. In 1997 when the first author began the Scwm back upon changing the value assigned to any variable and also upon completion of the re-solve project with Maciej Stachowiak, fvwm2 was arguably the most used window manager in the phase (i.e., after all variable assignments are com- Scwm X windows community. It supports reasonably pleted). exploits these facilities to isolate sophisticated configuration capabilities via a the impact of the constraint solver on existing code. per-user .fvwm2rc file that is loaded once when fvwm2 starts. To tweak a parameter, end users edit their .fvwm2rc files using an ordinary text editor, save the changes, then restart the window 3 The System manager to activate the change. The fvwm2 configuration language supports a very restricted Scwm is a complex software system that empha- form of functional abstraction, but lacks loops sizes extensibility and customizability to enable and conditionals. sophisticated capabilities to be developed and tested quickly and easily. The window man- Despite these shortcomings, fvwm2 does provide ager embraces the embedded-scripting language a good amount of control over the look of win- architecture first introduced by Emacs (sec- dows and has evolved over the years to meet com- tion 3.1) and it further exploits Guile/Scheme’s plex specifications (e.g., the Interclient Communi- support for dynamically-loadable binary modules cation Conventions Manual, or ICCCM [35]) and (section 3.2). SCWM_PROC( X_property_get, (define*-public (window-class "X-property-get", #&optional (win (get-window))) 2, 1, 0, "Return the class of window WIN." (SCM win, SCM name, SCM consume_p)) (X-property-get win "WM_CLASS")) /** Get X property NAME of window WIN. */ #define FUNC_NAME s_X_property_get { Figure 2: The “window-class” procedure. SCM answer; VALIDARG_WIN_ROOTSYM_OR_NUM_COPY(1,win,w); VALIDARG_STRING_COPY(2,name,aprop); uration language replaced by Guile/Scheme. Like VALIDARG_BOOL_COPY_USE_F(3,consume_p,del); fvwm2, Scwm reads a startup file containing all of ... the commands to initialize the settings of various XGetWindowProperty(...); options. Most fvwm2 commands have reasonably ... answer = ...; straightforward translations to Scwm sentential return answer; expressions. For example, these fvwm2 configura- } tion lines: #undef FUNC_NAME Style "*" ForeColor black Scwm Figure 1: An example primitive. Style "*" BackColor grey76 This extra power and incredible extensibility can HilightColor white navyblue complicate using the window manager. To sim- plify configuration, Scwm permits developers an AddToFunc Raise-and-Stick easy way to declaratively define various options. + "I" Raise Scwm then automatically builds a graphical user- + "I" Stick interface that enables end users to easily manipu- lating those parameters (section 3.3). Key s WT CSM Function Raise-and-Stick Additionally, the use of a scripting language re- are rewritten for Scwm in Guile/Scheme as:1 quires the developer to maintain various software- engineering invariants to avoid hard-to-find bugs. We developed a technique to verify and warn de- (window-style "*" #:fg "black" velopers when the Guile-required coding conven- #:bg "grey76") tions are violated (section 3.4). (set-highlight-foreground! "white") Another challenge was embedding Cassowary in (set-highlight-background! "navyblue") Scwm reasonably non-invasively. To avoid alter- ing all of the functions that access or mutate fields (define* (raise-and-stick of the window structure required exploiting some #&optional (win (get-window))) of the extensibility features built into the con- (raise-window win) straint solving toolkit (section 3.5). (stick win)) The current implementation of Scwm contains (bind-key '(window title) "C-S-M-s" roughly 32,500 non-comment, non-blank lines of raise-and-stick) C code, 800 lines of C++ code, and 25,000 lines of Scheme code.
Recommended publications
  • Part II, Window Managers and Desktop Environments
    Part II Window Managers and Desktop Environments The window manager is responsible for managing application windows and application- independent behavior, such as pop-up menus appearing in the background. The window manager manages the placement, borders, and decorations of all windows, and is responsible for the look and feel of your particular X session. Desktop environments typically include an integrated window manager, some sort of control panel, applications, and a consistent look and feel across applications. The chapters in Part II, Window Managers and Desktop Environments, are: Overview This chapter provides a conceptual introduction to window managers and desktop environments and briefly surveys some of the many window managers and desktop environments available for Linux. FVWM FVWM is a traditional window manager for Linux systems. It is now into its second major version, FVWM2. Window Maker Window Maker is an elegant X11 window manager designed to give integration support to GNUstep-based applications. It emulates the look and feel of OpenStep, the NeXTSTEP GUI. Enlightenment Enlightenment, often shortened to just E, may be the most elaborate and bizarre window manager available. Enlightenment’s motto, “time to rethink everything,” provides a good indication of the uniqueness and flashiness behind Enlightenment. Using GNOME GNOME, which stands for GNU Network Object Model Environment, is a freely available desktop environment that can be used with any of several window managers, including Enlightenment and Sawfish. Using KDE KDE, the K Desktop Environment, is another freely available desktop environment. KDE includes an assortment of games and utilities, as well as an integrated suite of office productivity applications..
    [Show full text]
  • Easy Slackware
    1 Создание легкой системы на базе Slackware I - Введение Slackware пользуется заслуженной популярностью как классический linux дистрибутив, и поговорка "кто знает Red Hat тот знает только Red Hat, кто знает Slackware тот знает linux" несмотря на явный снобизм поклонников "бога Патре­ га" все же имеет под собой основания. Одним из преимуществ Slackware является возможность простого создания на ее основе практически любой системы, в том числе быстрой и легкой десктопной, о чем далее и пойдет речь. Есть дис­ трибутивы, клоны Slackware, созданные именно с этой целью, типа Аbsolute, но все же лучше создавать систему под себя, с максимальным учетом именно своих потребностей, и Slackware пожалуй как никакой другой дистрибутив подходит именно для этой цели. Легкость и быстрота системы определяется выбором WM (DM) , набором программ и оптимизацией программ и системы в целом. Первое исключает KDE, Gnome, даже новые версии XFCЕ, остается разве что LXDE, но набор программ в нем совершенно не устраивает. Оптимизация наиболее часто используемых про­ грамм и нескольких базовых системных пакетов осуществляется их сборкой из сорцов компилятором, оптимизированным именно под Ваш комп, причем каж­ дая программа конфигурируется исходя из Ваших потребностей к ее возможно­ стям. Оптимизация системы в целом осуществляется ее настройкой согласно спе­ цифическим требованиям к десктопу. Такой подход был выбран по банальной причине, возиться с gentoo нет ни­ какого желания, комп все таки создан для того чтобы им пользоваться, а не для компиляции программ, в тоже время у каждого есть минимальный набор из не­ большого количества наиболее часто используемых программ, на которые стоит потратить некоторое, не такое уж большое, время, чтобы довести их до ума. Кро­ ме того, такой подход позволяет иметь самые свежие версии наиболее часто ис­ пользуемых программ.
    [Show full text]
  • Introduction to the Enlightenment Foundation Libraries
    Introduction to the Enlightenment foundation libraries. An overview of EFL Kostis Kapelonis Introduction to the Enlightenment foundation libraries.: An overview of EFL Kostis Kapelonis Abstract The target audience of this document are UNIX programmers who are interested in the Enlightenment Foundation Libraries (EFL). You must already know C programming. You will not however learn how to program using the EFL. Instead, you will learn why you should program with the EFL. If you ever wanted to evaluate the EFL but did not see any advantages over previous graphic libraries then this document is for you! Table of Contents 1. Introduction ............................................................................................................................1 A little History ...................................................................................................................1 Related documentation ......................................................................................................... 2 Obtaining the EFL libraries ................................................................................................... 2 2. The EFL structure .................................................................................................................... 4 Organization of the Libraries ................................................................................................. 4 Brief description of each EFL library ...................................................................................... 5 3.
    [Show full text]
  • Bringing GNU Emacs to Native Code
    Bringing GNU Emacs to Native Code Andrea Corallo Luca Nassi Nicola Manca [email protected] [email protected] [email protected] CNR-SPIN Genoa, Italy ABSTRACT such a long-standing project. Although this makes it didactic, some Emacs Lisp (Elisp) is the Lisp dialect used by the Emacs text editor limitations prevent the current implementation of Emacs Lisp to family. GNU Emacs can currently execute Elisp code either inter- be appealing for broader use. In this context, performance issues preted or byte-interpreted after it has been compiled to byte-code. represent the main bottleneck, which can be broken down in three In this work we discuss the implementation of an optimizing com- main sub-problems: piler approach for Elisp targeting native code. The native compiler • lack of true multi-threading support, employs the byte-compiler’s internal representation as input and • garbage collection speed, exploits libgccjit to achieve code generation using the GNU Com- • code execution speed. piler Collection (GCC) infrastructure. Generated executables are From now on we will focus on the last of these issues, which con- stored as binary files and can be loaded and unloaded dynamically. stitutes the topic of this work. Most of the functionality of the compiler is written in Elisp itself, The current implementation traditionally approaches the prob- including several optimization passes, paired with a C back-end lem of code execution speed in two ways: to interface with the GNU Emacs core and libgccjit. Though still a work in progress, our implementation is able to bootstrap a func- • Implementing a large number of performance-sensitive prim- tional Emacs and compile all lexically scoped Elisp files, including itive functions (also known as subr) in C.
    [Show full text]
  • An Introduction to the X Window System Introduction to X's Anatomy
    An Introduction to the X Window System Robert Lupton This is a limited and partisan introduction to ‘The X Window System’, which is widely but improperly known as X-windows, specifically to version 11 (‘X11’). The intention of the X-project has been to provide ‘tools not rules’, which allows their basic system to appear in a very large number of confusing guises. This document assumes that you are using the configuration that I set up at Peyton Hall † There are helpful manual entries under X and Xserver, as well as for individual utilities such as xterm. You may need to add /usr/princeton/X11/man to your MANPATH to read the X manpages. This is the first draft of this document, so I’d be very grateful for any comments or criticisms. Introduction to X’s Anatomy X consists of three parts: The server The part that knows about the hardware and how to draw lines and write characters. The Clients Such things as terminal emulators, dvi previewers, and clocks and The Window Manager A programme which handles negotiations between the different clients as they fight for screen space, colours, and sunlight. Another fundamental X-concept is that of resources, which is how X describes any- thing that a client might want to specify; common examples would be fonts, colours (both foreground and background), and position on the screen. Keys X can, and usually does, use a number of special keys. You are familiar with the way that <shift>a and <ctrl>a are different from a; in X this sensitivity extends to things like mouse buttons that you might not normally think of as case-sensitive.
    [Show full text]
  • An Evaluation of Go and Clojure
    An evaluation of Go and Clojure A thesis submitted in partial satisfaction of the requirements for the degree Bachelors of Science in Computer Science Fall 2010 Robert Stimpfling Department of Computer Science University of Colorado, Boulder Advisor: Kenneth M. Anderson, PhD Department of Computer Science University of Colorado, Boulder 1. Introduction Concurrent programming languages are not new, but they have been getting a lot of attention more recently due to their potential with multiple processors. Processors have gone from growing exponentially in terms of speed, to growing in terms of quantity. This means processes that are completely serial in execution will soon be seeing a plateau in performance gains since they can only rely on one processor. A popular approach to using these extra processors is to make programs multi-threaded. The threads can execute in parallel and use shared memory to speed up execution times. These multithreaded processes can significantly speed up performance, as long as the number of dependencies remains low. Amdahl‘s law states that these performance gains can only be relative to the amount of processing that can be parallelized [1]. However, the performance gains are significant enough to be looked into. These gains not only come from the processing being divvied up into sections that run in parallel, but from the inherent gains from sharing memory and data structures. Passing new threads a copy of a data structure can be demanding on the processor because it requires the processor to delve into memory and make an exact copy in a new location in memory. Indeed some studies have shown that the problem with optimizing concurrent threads is not in utilizing the processors optimally, but in the need for technical improvements in memory performance [2].
    [Show full text]
  • Programming with GNU Emacs Lisp
    Programming with GNU Emacs Lisp William H. Mitchell (whm) Mitchell Software Engineering (.com) GNU Emacs Lisp Programming Slide 1 Copyright © 2001-2008 by William H. Mitchell GNU Emacs Lisp Programming Slide 2 Copyright © 2001-2008 by William H. Mitchell Emacs Lisp Introduction A little history GNU Emacs Lisp Programming Slide 3 Copyright © 2001-2008 by William H. Mitchell Introduction GNU Emacs is a full-featured text editor that contains a complete Lisp system. Emacs Lisp is used for a variety of things: • Complete applications such as mail and news readers, IM clients, calendars, games, and browsers of various sorts. • Improved interfaces for applications such as make, diff, FTP, shells, and debuggers. • Language-specific editing support. • Management of interaction with version control systems such as CVS, Perforce, SourceSafe, and StarTeam. • Implementation of Emacs itself—a substantial amount of Emacs is written in Emacs Lisp. And more... GNU Emacs Lisp Programming Slide 4 Copyright © 2001-2008 by William H. Mitchell A little history1 Lisp: John McCarthy is the father of Lisp. The name Lisp comes from LISt Processing Language. Initial ideas for Lisp were formulated in 1956-1958; some were implemented in FLPL (FORTRAN-based List Processing Language). The first Lisp implementation, for application to AI problems, took place 1958-1962 at MIT. There are many dialects of Lisp. Perhaps the most commonly used dialect is Common Lisp, which includes CLOS, the Common Lisp Object System. See http://www-formal.stanford.edu/jmc/history/lisp/lisp.html for some interesting details on the early history of Lisp. 1 Don't quote me! GNU Emacs Lisp Programming Slide 5 Copyright © 2001-2008 by William H.
    [Show full text]
  • A Successor to the X Window System
    Y: A Successor to the X Window System Mark Thomas <[email protected]> Project Supervisor: D. R¨uckert <[email protected]> Second Marker: E. Lupu <[email protected]> June 18, 2003 ii Abstract UNIX desktop environments are a mess. The proliferation of incompatible and inconsistent user interface toolkits is now the primary factor in the failure of enterprises to adopt UNIX as a desktop solution. This report documents the creation of a comprehensive, elegant framework for a complete windowing system, including a standardised graphical user interface toolkit. ‘Y’ addresses many of the problems associated with current systems, whilst keeping and improving on their best features. An initial implementation, which supports simple applications like a terminal emulator, a clock and a calculator, is provided. iii iv Acknowledgements Thanks to Daniel R¨uckert for supervising the project and for his help and advice regarding it. Thanks to David McBride for his assistance with setting up my project machine and providing me with an ATI Radeon for it. Thanks to Philip Willoughby for his knowledge of the POSIX standard and help with the GNU Autotools and some of the more obscure libc functions. Thanks to Andrew Suffield for his help with the GNU Autotools and Arch. Thanks to Nick Maynard and Karl O’Keeffe for discussions on window system and GUI design. Thanks to Tim Southerwood for discussions about possible features of Y. Thanks to Duncan White for discussions about the virtues of X. All company and product names are trademarks and/or registered trademarks of their respective owners.
    [Show full text]
  • Allegro CL User Guide
    Allegro CL User Guide Volume 1 (of 2) version 4.3 March, 1996 Copyright and other notices: This is revision 6 of this manual. This manual has Franz Inc. document number D-U-00-000-01-60320-1-6. Copyright 1985-1996 by Franz Inc. All rights reserved. No part of this pub- lication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means electronic, mechanical, by photocopying or recording, or otherwise, without the prior and explicit written permission of Franz incorpo- rated. Restricted rights legend: Use, duplication, and disclosure by the United States Government are subject to Restricted Rights for Commercial Software devel- oped at private expense as specified in DOD FAR 52.227-7013 (c) (1) (ii). Allegro CL and Allegro Composer are registered trademarks of Franz Inc. Allegro Common Windows, Allegro Presto, Allegro Runtime, and Allegro Matrix are trademarks of Franz inc. Unix is a trademark of AT&T. The Allegro CL software as provided may contain material copyright Xerox Corp. and the Open Systems Foundation. All such material is used and distrib- uted with permission. Other, uncopyrighted material originally developed at MIT and at CMU is also included. Appendix B is a reproduction of chapters 5 and 6 of The Art of the Metaobject Protocol by G. Kiczales, J. des Rivieres, and D. Bobrow. All this material is used with permission and we thank the authors and their publishers for letting us reproduce their material. Contents Volume 1 Preface 1 Introduction 1.1 The language 1-1 1.2 History 1-1 1.3 Format
    [Show full text]
  • Security Assessment Login History by Computer
    Security Assessment Login History by Computer CONFIDENTIALITY NOTE: The information contained in this report document is for the exclusive use of the client specified above and may contain Prepared for: confidential, privileged and non-disclosable information. If the recipient of this report is not the client or addressee, such recipient is strictly prohibited from Your Customer / Prospect reading, photocopying, distributing or otherwise using this report or its contents in any way. Prepared by: Your Company Name Scan Date: 10/25/2016 10/27/2016 Login History by Computer SECURITY ASSESSMENT Table of Contents 1 - Domain: Corp.myco.com 1.1 - b2b-GW 1.2 - betty-INSPIRON 1.3 - Boppenheimer-PC 1.4 - buildbox 1.5 - CERTEXAM 1.6 - CONFERENCE-ROOM 1.7 - darkhorse 1.8 - darren-PC 1.9 - DC03 1.10 - Ddouglas-WIN10 1.11 - DESKTOP-N6S4H9A 1.12 - DESKTOP-UAE29E6 1.13 - FILE2012-1 1.14 - gordon-LT2 1.15 - HPDT-8CC5260NXY 1.16 - HPLT-5CD4411D8Z 1.17 - HV00 1.18 - HV02 1.19 - HV04 1.20 - IRIDIUM 1.21 - ISTCORP-PC 1.22 - JIM-WIN8 1.23 - Lalexander-PC 1.24 - Mmichaels-HP 1.25 - Mwest-WIN864 1.26 - PANOPTICON 1.27 - PITWDS12 1.28 - PKWIN8-VM 1.29 - PS01 1.30 - Psolidad-PC 1.31 - Psolidad-WIN764 PROPRIETARY & CONFIDENTIAL PAGE 2 of 88 Login History by Computer SECURITY ASSESSMENT 1.32 - QB01 1.33 - REX 1.34 - ROWBOT 1.35 - SARLACC 1.36 - sourcesvr 1.37 - sourcesvrBUILD 1.38 - STORAGE01 1.39 - STORAGE12 1.40 - tarsis 1.41 - tywin-PC 1.42 - UTIL12 1.43 - VPNGW 1.44 - WAMPA 1.45 - WILLARD PROPRIETARY & CONFIDENTIAL PAGE 3 of 88 Login History by Computer SECURITY
    [Show full text]
  • Towards a New Enlightenment? a Transcendent Decade
    Towards a New Enlightenment? A Transcendent Decade Preface This book, Towards a New Enlightenment? A Transcendent Decade, is the eleventh in an annual series that BBVA’s OpenMind project dedicates to disseminating greater knowledge on the key questions of our time. We began this series in 2008, with the first book, Frontiers of Knowledge, that celebrated the launching of the prizes of the same name awarded annually by the BBVA Foundation. Since then, these awards have achieved worldwide renown. In that first book, over twenty major scientists and experts used language accessible to the general public to rigorously review the most relevant recent advances and perspectives in the different scientific and artistic fields recognized by those prizes. Since then, we have published a new book each year, always following the same model: collections of articles by key figures in their respective fields that address different aspects or perspectives on the fundamental questions that affect our lives and determine our futu- re: from globalization to the impact of exponential technologies, and on to include today’s major ethical problems, the evolution of business in the digital era, and the future of Europe. The excellent reaction to the first books in this series led us, in 2011, to create OpenMind (www.bbvaopenmind.com), an online community for debate and the dissemination of knowle- dge. Since then, OpenMind has thrived, and today it addresses a broad spectrum of scientific, technological, social, and humanistic subjects in different formats, including our books, as well as articles, posts, reportage, infographics, videos, and podcasts, with a growing focus on audiovisual materials.
    [Show full text]
  • Xfce: the Missing Manual Documentation Release 0.1
    Xfce: The Missing Manual Documentation Release 0.1 Joji Antony Jun 18, 2017 Contents 1 What is Xfce? 3 2 Why not use other lightweight environments ?5 3 What is your point? 7 4 Caveats of this document 9 5 How to install Xfce? 11 5.1 Linux................................................... 11 5.2 Installing Xfce on FreeBSD....................................... 21 5.3 Installing Xfce 4.12 on NetBSD..................................... 21 6 Components of Xfce 23 6.1 Xfce4 Settings Manager......................................... 23 6.2 Xfce Panel................................................ 23 6.3 Xfdesktop................................................ 24 6.4 Xfwm4.................................................. 24 6.5 Thunar.................................................. 24 7 Some goodies available with Xfce 25 7.1 Xfce Terminal Emulator......................................... 25 7.2 Mousepad................................................ 25 8 Using your keyboard shortcuts wisely 27 9 Scrolling 29 10 Indices and tables 31 i ii Xfce: The Missing Manual Documentation, Release 0.1 This is an unofficial user manual for Xfce, the lightweight desktop environment. This document is not meant to be comprehensive, and only attempts to cover the basics to get you up and running. Contents Contents 1 Xfce: The Missing Manual Documentation, Release 0.1 2 Contents CHAPTER 1 What is Xfce? Xfce is a lightweight desktop environment built for simplicity and efficiency. Xfce takes up far less space than other desktop environments such as KDE, GNOME, Unity etc and is very responsive. Xfce philosophy is to get out of your way and let you complete your work efficiently and easily. Xfce project has a high emphasis on stability meaning that core functionality does not change frequently causing you to re-learn your workflow. 3 Xfce: The Missing Manual Documentation, Release 0.1 4 Chapter 1.
    [Show full text]