Ein Moderner Tiling Window Manager Mit Flacher Lernkurve

Total Page:16

File Type:pdf, Size:1020Kb

Ein Moderner Tiling Window Manager Mit Flacher Lernkurve BlueTile { ein moderner Tiling Window Manager mit flacher Lernkurve Individuelles Projekt Abstract: Tiling Window Manager (TWMs) ordnen Fenster so an, dass sie sich nicht uberlappen¨ und die gesamte Bildschirmfl¨ache genutzt wird. Unter bestehenden TWMs sind jedoch zwei Einstiegshurden¨ ver- breitet: Die Notwendigkeit, viel Konfiguration vorzunehmen, und die ausschließliche Bedienung durch Tastaturkurzel.¨ Diese Arbeit beschreibt das Design und die Implementierung von BlueTile, einem Windowmana- ger, der versucht, das TWM-Paradigma leichter erschließbar zu machen, indem auf Konventionen aus klassischen, meist Maus-basierten Window- managern zuruckgegriffen¨ wird und der ohne Konfiguration verwendbar ist. Betreuerin: Dr. Elke Wilkeit Zweitgutachter: Martin Hilscher Vorgelegt von: Jan Vornberger Campus-Appartments 1-306 Artillerieweg 27 26129 Oldenburg [email protected] Inhaltsverzeichnis 1 Motivation hinter BlueTile 3 2 Ubersicht¨ von Tiling Window Managern 4 3 Zielgruppe 7 4 XMonad { Basis fur¨ BlueTile 8 5 Entwicklungsumgebung 11 6 Konfiguration 13 7 Erstes Starten 14 8 Hilfesystem 14 9 Funktionalit¨aten 16 9.1 SWM-Modus . 17 9.2 Fensterdekoration . 22 9.3 Fenster verschieben . 23 9.4 Fenstergr¨oße ¨andern . 25 9.5 Minimieren . 26 9.6 Maximieren . 30 9.7 Dock-Applikation . 32 10 Installation von BlueTile 35 11 Fazit 36 2 1 Motivation hinter BlueTile In diesem einleitenden Abschnitt m¨ochte ich kurz den Begriff des Tiling Window Managers (TWM) umreißen und ausfuhren,¨ welche Motivation hinter der Erstellung von BlueTile steht und welche Ziele im Einzelnen von mir angestrebt wurden. Klassische Windowmanager (als Stacking Window Manager bezeichnet) gehen recht unbedarft bei der Positionierung von Fenstern vor, was das geschickte Aus- nutzen von vorhandener Bildschirmfl¨ache angeht. Fenster uberlappen¨ sich und die Benutzerin ist viel damit besch¨aftigt, Applikationen von Interesse in den Vorder- grund zu holen und neu anzuordnen. Tiling Window Manager verfolgen stattdessen den Ansatz, dass sich Fenster in der Regel nicht uberlappen¨ und die gesamte Bildschirmfl¨ache unter ihnen aufgeteilt wird. Verschiedene Ans¨atze wurden entwickelt, wie diese Aufteilung erfolgen kann und die Benutzerin kann sie jeweils den Gegebenheiten anpassen. Wie im Abschnitt 2 noch ausgefuhrt¨ wird, existiert eine Vielzahl von TWMs, welche auf teilweise ganz verschiedene Arten und Weisen an die Umsetzung des Tiling Window Paradigmas herangehen. Es herrscht somit kein Mangel an TWMs. Warum also die Entscheidung, einen weiteren TWM zu schreiben? Was meiner Beobachtung nach viele TWMs gemein haben, sind zwei große Ein- stiegshurden:¨ Zum Einen sind sie in der Regel bewusst minimal gehalten. Es wird oft mehr eine Art Baukastensystem angeboten und man geht davon aus, dass die Benutzerin sich eine gewunschte¨ Konfiguration selbst zusammenstellt. XMonad ist dafur¨ ein Extrembeispiel (siehe auch Abschnitt 4) { beim Starten mit der Standard- konfiguration bekommt die Benutzerin nichts als einen leeren Bildschirm zu sehen. Die zweite Einstiegshurde¨ besteht darin, dass die meisten TWMs darauf ausgelegt sind, mit einer Vielzahl an Tastenkurzeln¨ bedient zu werden. Da sich das Tiling Win- dow Paradigma im Vergleich zum Stacking Window Paradigma wesentlich besser fur¨ ein Tastatur-basiertes Arbeiten eignet, stellt dies naturlich¨ auch einen wesentlichen Vorteil von TWMs dar. Es fuhrt¨ aber auch dazu, dass die Bedienung erst m¨oglich wird, nachdem eine erhebliche Einarbeitungszeit geleistet worden ist. Insbesondere fur¨ eine Benutzerin, die nur einmal in die Welt von TWMs hinein- schauen m¨ochte, ergibt sich somit ein erheblicher Zeitaufwand. Zum Einen muss sie eine Konfiguration zusammenstellen { zus¨atzlich erschwert dadurch, dass sie schließ- lich zu diesem Zeitpunkt noch gar nicht weiß, worauf es bei einer Konfiguration fur¨ TWMs ankommt { und zum Anderen so viele Tastenkurzel¨ gut genug lernen, um absch¨atzen zu k¨onnen, ob TWMs fur¨ ihren Arbeitsstil nutzlich¨ sein k¨onnen. Diese Einstiegshurde¨ m¨ochte BlueTile abbauen und daraus ergeben sich die fol- genden drei Ziele: • BlueTile m¨ochte ohne Konfiguration { 'out of the box' { verwendbar sein. 3 Die Standardkonfiguration von BlueTile soll derart gestaltet sein, dass sie fur¨ die meisten Situationen v¨ollig ausreichend ist und { zumindest zu Beginn { in der Regel keine Anpassung erfordert. Der Abschnitt 6 fuhrt¨ weitere Gedanken zu diesem Punkt aus. • BlueTile soll mit wenig Aufwand zu bedienen sein. Dies bedeutet, Funktionalit¨at auf leicht erschließbare Art und Weise verfugbar¨ zu machen und Konventionen, die die Benutzerin aus klassischen, meist Maus- basierten, Windowmanagern gew¨ohnt ist, auf das TWM-Paradigma anzupas- sen. Die Designentscheidungen, die aus dieser Grundlage resultieren, wirken sich auf alle Funktionen von BlueTile aus (siehe Abschnitt 9). • BlueTile bietet Tastenkurzel¨ fur¨ s¨amtliche Funktionalit¨at. Da { wie bereits erw¨ahnt { Tastenkurzel¨ ein wichtiger Bestandteil vieler TWMs sind, m¨ochte BlueTile diese Tradition weiterfuhren¨ und dafur¨ sorgen, dass fur¨ fortgeschrittene Benutzer und Benutzerinnen s¨amtliche Funktionalit¨at weiter- hin auch durch Tastenkurzel¨ aufrufbar ist. 2 Ubersicht¨ von Tiling Window Managern Abbildung 1: TwoUp Tiling Window Manager sind haupts¨achlich in freien Betriebsystemen wie z.B. Linux vertreten. Microsoft Windows und Mac OS bieten keine einfache M¨oglichkeit, die Komponente, die die Verwaltung von Fenstern ausfuhrt,¨ durch Alternativen zu 4 ersetzen. Dementsprechend kann Software, die solche Funktionalit¨at unter diesen Betriebsystemen bereitstellen m¨ochte, nur eine aufgesetzte Umsetzung bieten. Diese beschr¨ankt sich meistens darauf, Fenster nur auf Anfrage der Benutzerin gekachelt anzuordnen, dann diese Anordnung jedoch nicht weiter aufrecht zu erhalten. Das Offnen¨ neuer Fenster oder das Verschieben und Andern¨ der Gr¨oße von Fenstern fuhrt¨ dann wieder zu Uberlappung,¨ bis die Benutzerin erneut Kommandos zum Kacheln der Fenster ausfuhrt.¨ Beispiele fur¨ solche Software sind WinSplit Revolution1 fur¨ Microsoft Windows und TwoUp2 fur¨ Mac OS (siehe Abbildung 1). Unter Linux hingegen ist es kein Problem, verschiedene Windowmanager zu nut- zen und eine komplette Integration zu erzielen. Daher ist es keine Uberraschung,¨ dass fur¨ Linux und andere freie Betriebsysteme die Auswahl an TWMs besonders umfangreich ist. Es lag daher nahe, sich bei der Entwicklung eines neuen TWMs auf Linux zu konzentrieren und auf einer bestehenden Software aus diesem Bereich aufzubauen. Tiling Window Manager unter Linux lassen sich grob in zwei Kategorien unter- teilen: Statische und dynamische TWMs. Die statischen TWMs arbeiten nach dem Konzept, dass die Benutzerin eine Aufteilung des Bildschirms in verschiedene Teil- bereiche manuell vornimmt und diese unabh¨angig von tats¨achlich offenen Fenstern bestehen bleiben. Ein neues Fenster wird dann einem der bestehenden Teilberei- che zugeordnet und nimmt die entsprechende Gr¨oße an. In TWMs dieser Art wird also nicht zwangsl¨aufig die gesamte Bildschirmfl¨ache genutzt, da Teilbereiche auch unbelegt bleiben k¨onnen (siehe Abbildung 2). Vertreter dieser Kategorie sind bei- spielsweise Ion3, Ratpoison4 und StumpWM5. Demgegenuber¨ passen dynamische TWMs das Layout der aktuellen Anzahl of- fener Fenster an. Ein manuelles Einteilen der Bildschirmfl¨ache ist nicht n¨otig, das Offnen¨ eines neuen Fensters fuhrt¨ automatisch zu einer Neuanordnung aller Fenster. Wie diese Anordnung erfolgt, entscheidet der aktuell aktive Layout-Algorithmus. Die Benutzerin kann jedoch die automatisch erzeugte Anordnung nachtr¨aglich an- passen oder komplett zu einem anderen Layout-Algorithmus wechseln. Wenn der Windowmanager virtuelle Desktops unterstutzt¨ { wie es unter Linux die Regel ist { kann der Layout-Algorithmus in vielen F¨allen fur¨ jeden virtuellen Desktop separat festgelegt werden. Um die automatische Anordnung von Fenstern zu erleichtern, gibt es in vielen dynamischen TWMs das Konzept des Master-Fensters. Dieses Fenster gilt als das Hauptfenster und der aktive Layout-Algorithmus w¨ahlt die Anordnung so, dass dieses Fenster die meiste Fl¨ache zugewiesen bekommt (siehe Abbildung 3). 1http://www.winsplit-revolution.com/ (16. August 2009) 2http://www.irradiatedsoftware.com/twoup/ (Quelle des Screenshots, 16. August 2009) 3http://modeemi.fi/~tuomov/ion/ (16. August 2009) 4http://www.nongnu.org/ratpoison/ (16. August 2009) 5http://www.nongnu.org/stumpwm/ (16. August 2009) 5 Abbildung 2: StumpWM mit ungenutztem Bereich Die TWMs wmii6, XMonad7 und awesome8 sind Beispiele fur¨ dynamische TWMs. Was alle der genannten Beispiele fur¨ TWMs gemein haben, ist ein grunds¨atzliches Bestreben nach Minimalit¨at und Konfiguration durch die Benutzerin. So beschreibt z.B. die Webseite von StumpWM ein Ziel des Windowmanagers mit den Worten: Stumpwm attempts to be customizable yet visually minimal. There are " no window decorations, no icons, and no buttons. It does have various hooks to attach your personal customizations, and variables to tweak.\9 Awesome geht so weit, sich als ein Framework zur Erstellung eines pers¨onlichen Windowmanagers zu beschreiben, anstatt einer fertig verwendbaren Software: \[. ] awesome has been designed as a framework window manager. It's extremely fast, small, dynamic and heavily extensible using the Lua pro- gramming language. [. ] We provide an easily usable and very-well do- cumented API to configure and define the behaviour of your window manager.\10 6http://wmii.suckless.org/ (17. August 2009) 7http://xmonad.org/ (17. August
Recommended publications
  • Web Vmstat Any Distros, Especially Here’S Where Web Vmstat Comes Those Targeted at In
    FOSSPICKS Sparkling gems and new releases from the world of FOSSpicks Free and Open Source Software Mike Saunders has spent a decade mining the internet for free software treasures. Here’s the result of his latest haul… Shiny statistics in a browser Web VMStat any distros, especially Here’s where Web VMStat comes those targeted at in. It’s a system monitor that runs Madvanced users, ship an HTTP server, so you can connect with shiny system monitoring tools to it via a web browser and see on the desktop. Conky is one such fancy CSS-driven charts. Before you tool, while GKrellM was all the rage install it, you’ll need to get the in the last decade, and they are websocketd utility, which you can genuinely useful for keeping tabs find at https://github.com/ on your boxes, especially when joewalnes/websocketd. Helpfully, you’re an admin in charge of the developer has made pre- various servers. compiled executables available, so Now, pretty much all major you can just grab the 32-bit or distros include a useful command 64-bit tarball, extract it and there line tool for monitoring system you have it: websocketd. (Of course, Here’s the standard output for vmstat – not very interesting, right? resource usage: vmstat. Enter if you’re especially security vmstat 1 in a terminal window and conscious, you can compile it from copy the aforementioned you’ll see a regularly updating (once its source code.) websocketd into the same place. per second) bunch of statistics, Next, clone the Web VMStat Git Then just enter: showing CPU usage, free RAM, repository (or grab the Zip file and ./run swap usage and so forth.
    [Show full text]
  • The Gnome Bazaar How Gnome Gets Built and How We Can Improve
    the gnome bazaar how gnome gets built and how we can improve daniel g. siegel 1. some serious stuff about my thesis 2. awesome gnome stuff how do foss projects work, which structures do they have and which workflows have they established. to accomplish this, several foss will be analyzed in order to identify concertedly models. in addition they will be compared to traditional software engineering models in order to see whether they are similar or oppose differences. good selection of projects with which the analysis is able to produce reliable and reasonable results • popularity • community • age ◦ communication • category ◦ number of developers • activity ◦ conferences ◦ releases ◦ foundations ◦ downloads ◦ ongoing projects ◦ commits project origin category Debian 1993 operating system Drupal 2001 content management system Fedora 2002 operating system GNOME 1997 desktop environment KDE 1996 desktop environment MySQL/MariaDB 1997 database management system PHP 1994 interpreted programming language Plone 1999 content management system PostgreSQL 1986 database management system Python 1989 interpreted programming language results 1 • history & origin 2 • community structure 3 • release process 4 • development model "[...] rather, the community seemed to resemble a great babbling bazaar of differing agendas and approaches" eric s. raymond what? comparison 1 • history & origin 2 • community structure 3 • release process 4 • development model history & origin • diverse origin • small group of founders • big burst of growth after first release • more big bursts before big releases community structure • very hierarchical • lead by leader or team • differences in hierachical structure • though easy to step up the ladder community structure: remarks • missing visionary • role of rt • unfruitful discussions release process • mostly fixed release cycles • lead by release manager/team • similar phases in all projects release process: remarks • cycle often too long for small projects • api/abi compatibility • jhbuild etc.
    [Show full text]
  • Resurrect Your Old PC
    Resurrect your old PCs Resurrect your old PC Nostalgic for your old beige boxes? Don’t let them gather dust! Proprietary OSes force users to upgrade hardware much sooner than necessary: Neil Bothwick highlights some great ways to make your pensioned-off PCs earn their keep. ardware performance is constantly improving, and it is only natural to want the best, so we upgrade our H system from time to time and leave the old ones behind, considering them obsolete. But you don’t usually need the latest and greatest, it was only a few years ago that people were running perfectly usable systems on 500MHz CPUs and drooling over the prospect that a 1GHz CPU might actually be available quite soon. I can imagine someone writing a similar article, ten years from now, about what to do with that slow, old 4GHz eight-core system that is now gathering dust. That’s what we aim to do here, show you how you can put that old hardware to good use instead of consigning it to the scrapheap. So what are we talking about when we say older computers? The sort of spec that was popular around the turn of the century. OK, while that may be true, it does make it seem like we are talking about really old hardware. A typical entry-level machine from six or seven years ago would have had something like an 800MHz processor, Pentium 3 or similar, 128MB of RAM and a 20- 30GB hard disk. The test rig used for testing most of the software we will discuss is actually slightly lower spec, it has a 700MHz Celeron processor, because that’s what I found in the pile of computer gear I never throw away in my loft, right next to my faithful old – but non-functioning – Amiga 4000.
    [Show full text]
  • 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]
  • The Types, Roles, and Practices of Documentation in Data Analytics Open Source Software Libraries
    Computer Supported Cooperative Work (CSCW) https://doi.org/10.1007/s10606-018-9333-1 © The Author(s) 2018 The Types, Roles, and Practices of Documentation in Data Analytics Open Source Software Libraries A Collaborative Ethnography of Documentation Work R. Stuart Geiger1 , Nelle Varoquaux1,2 , Charlotte Mazel-Cabasse1 & Chris Holdgraf1,3 1Berkeley Institute for Data Science, University of California, Berkeley, 190 Doe Library, Berkeley, CA, 94730, USA (E-mail: [email protected]); 2Department of Statistics, Berkeley Institute for Data Science, University of California, Berkeley, Berkeley, CA, USA; 3Berkeley Institute for Data Science, Helen Wills Neuroscience Institute, University of California, Berkeley, Berkeley, CA, USA Abstract. Computational research and data analytics increasingly relies on complex ecosystems of open source software (OSS) “libraries” – curated collections of reusable code that programmers import to perform a specific task. Software documentation for these libraries is crucial in helping programmers/analysts know what libraries are available and how to use them. Yet documentation for open source software libraries is widely considered low-quality. This article is a collaboration between CSCW researchers and contributors to data analytics OSS libraries, based on ethnographic fieldwork and qualitative interviews. We examine several issues around the formats, practices, and challenges around documentation in these largely volunteer-based projects. There are many dif- ferent kinds and formats of documentation that exist around such libraries, which play a variety of educational, promotional, and organizational roles. The work behind documentation is similarly multifaceted, including writing, reviewing, maintaining, and organizing documentation. Different aspects of documentation work require contributors to have different sets of skills and overcome various social and technical barriers.
    [Show full text]
  • GNU Guix Cookbook Tutorials and Examples for Using the GNU Guix Functional Package Manager
    GNU Guix Cookbook Tutorials and examples for using the GNU Guix Functional Package Manager The GNU Guix Developers Copyright c 2019 Ricardo Wurmus Copyright c 2019 Efraim Flashner Copyright c 2019 Pierre Neidhardt Copyright c 2020 Oleg Pykhalov Copyright c 2020 Matthew Brooks Copyright c 2020 Marcin Karpezo Copyright c 2020 Brice Waegeneire Copyright c 2020 Andr´eBatista Copyright c 2020 Christine Lemmer-Webber Copyright c 2021 Joshua Branson 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 published 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". i Table of Contents GNU Guix Cookbook ::::::::::::::::::::::::::::::: 1 1 Scheme tutorials ::::::::::::::::::::::::::::::::: 2 1.1 A Scheme Crash Course :::::::::::::::::::::::::::::::::::::::: 2 2 Packaging :::::::::::::::::::::::::::::::::::::::: 5 2.1 Packaging Tutorial:::::::::::::::::::::::::::::::::::::::::::::: 5 2.1.1 A \Hello World" package :::::::::::::::::::::::::::::::::: 5 2.1.2 Setup:::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 2.1.2.1 Local file ::::::::::::::::::::::::::::::::::::::::::::: 8 2.1.2.2 `GUIX_PACKAGE_PATH' ::::::::::::::::::::::::::::::::: 9 2.1.2.3 Guix channels ::::::::::::::::::::::::::::::::::::::: 10 2.1.2.4 Direct checkout hacking:::::::::::::::::::::::::::::: 10 2.1.3 Extended example ::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Pysal Documentation Release 1.14.3
    pysal Documentation Release 1.14.3 PySAL Developers Oct 04, 2019 Contents 1 User Guide 3 2 Developer Guide 73 3 Library Reference 97 Bibliography 109 i ii pysal Documentation, Release 1.14.3 Releases • Stable 1.14.3 (Released 2017-11-2) • Development PySAL is an open source library of spatial analysis functions written in Python intended to support the development of high level applications. PySAL is open source under the BSD License. Contents 1 pysal Documentation, Release 1.14.3 2 Contents CHAPTER 1 User Guide 1.1 Introduction Contents • Introduction – History – Scope – Research Papers and Presentations 1.1.1 History PySAL grew out of a collaborative effort between Luc Anselin’s group previously located at the University of Illinois, Champaign-Urbana, and Serge Rey who was at San Diego State University. It was born out of a recognition that the respective projects at the two institutions, PySpace (now GeoDaSpace) and STARS - Space Time Analysis of Regional Systems, could benefit from a shared analytical core, since this would limit code duplication and free up additional developer time to focus on enhancements of the respective applications. This recognition also came at a time when Python was starting to make major inroads in geographic information systems as represented by projects such as the Python Cartographic Library, Shapely and ESRI’s adoption of Python as a scripting language, among others. At the same time there was a dearth of Python modules for spatial statistics, spatial econometrics, location modeling and other areas of spatial analysis, and the role for PySAL was then expanded beyond its support of STARS and GeoDaSpace to provide a library of core spatial analytical functions that could support the next generation of spatial analysis applications.
    [Show full text]
  • What I Wish I Knew When Learning Haskell
    What I Wish I Knew When Learning Haskell Stephen Diehl 2 Version This is the fifth major draft of this document since 2009. All versions of this text are freely available onmywebsite: 1. HTML Version ­ http://dev.stephendiehl.com/hask/index.html 2. PDF Version ­ http://dev.stephendiehl.com/hask/tutorial.pdf 3. EPUB Version ­ http://dev.stephendiehl.com/hask/tutorial.epub 4. Kindle Version ­ http://dev.stephendiehl.com/hask/tutorial.mobi Pull requests are always accepted for fixes and additional content. The only way this document will stayupto date and accurate through the kindness of readers like you and community patches and pull requests on Github. https://github.com/sdiehl/wiwinwlh Publish Date: March 3, 2020 Git Commit: 77482103ff953a8f189a050c4271919846a56612 Author This text is authored by Stephen Diehl. 1. Web: www.stephendiehl.com 2. Twitter: https://twitter.com/smdiehl 3. Github: https://github.com/sdiehl Special thanks to Erik Aker for copyediting assistance. Copyright © 2009­2020 Stephen Diehl This code included in the text is dedicated to the public domain. You can copy, modify, distribute and perform thecode, even for commercial purposes, all without asking permission. You may distribute this text in its full form freely, but may not reauthor or sublicense this work. Any reproductions of major portions of the text must include attribution. The software is provided ”as is”, without warranty of any kind, express or implied, including But not limitedtothe warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authorsor copyright holders 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.
    [Show full text]
  • Development Version from Github
    Qtile Documentation Release 0.13.0 Aldo Cortesi Dec 24, 2018 Contents 1 Getting started 1 1.1 Installing Qtile..............................................1 1.2 Configuration...............................................4 2 Commands and scripting 21 2.1 Commands API............................................. 21 2.2 Scripting................................................. 24 2.3 qshell................................................... 24 2.4 iqshell.................................................. 26 2.5 qtile-top.................................................. 27 2.6 qtile-run................................................. 27 2.7 qtile-cmd................................................. 27 2.8 dqtile-cmd................................................ 30 3 Getting involved 33 3.1 Contributing............................................... 33 3.2 Hacking on Qtile............................................. 35 4 Miscellaneous 39 4.1 Reference................................................. 39 4.2 Frequently Asked Questions....................................... 98 4.3 License.................................................. 99 i ii CHAPTER 1 Getting started 1.1 Installing Qtile 1.1.1 Distro Guides Below are the preferred installation methods for specific distros. If you are running something else, please see In- stalling From Source. Installing on Arch Linux Stable versions of Qtile are currently packaged for Arch Linux. To install this package, run: pacman -S qtile Please see the ArchWiki for more information on Qtile. Installing
    [Show full text]
  • Not All Patterns, but Enough
    Not All Patterns, But Enough Neil Mitchell, Colin Runciman York University Catch An Example • Is the following code safe?* risers :: Ord α→[α] → [[α]] risers [] = [] risers [x] = [[x]] risers (x:y:etc) = if x ≤ y then (x:s) : ss else [x] : (s : ss) where s:ss = risers (y : etc) > risers “Haskell” = [“Has”,“k”,“ell”] * Only people who haven’t seen this example in the paper! Using Catch > catch risers.hs Incomplete pattern on line 6 Program is safe • Catch is the associated implementation • Catch has proven the program is safe • Without any annotations The Pattern-Matching problem • Will a program crash when run? • May call error directly: error “doh!” • May call error indirectly: head [] • Partial pattern match: case False of True → 1 • GHC can warn on partial patterns • Catch conservatively checks a program will not crash at runtime • Even in the presence of partial patterns How Catch works First convert Haskell to first-order Core, using Yhc and Firstify Checker Exact Operates on first-order (ignoring laziness) Core language 3 constraint operators Constraint Language Conservative Describes a (possibly infinite) set of values Can replace constraint language Checker Terms • A constraint describes a set of values • x is a (:)-constructed value • A precondition is a constraint on arguments • In head x, x must be (:)-constructed • An entailment is a constraint on arguments to ensure a constraint on the result • If x is (:)-constructed, null x is False Checker Types • Opaque constraint type • data Constraint = … • Does an expression satisfy
    [Show full text]
  • Suckless.Org Software That Sucks Less
    suckless.org software that sucks less markus schnalke <[email protected]> a website a couple of projects a community a philosophy . not a summary, but we’ll have one at the end what is suckless.org? something that Anselm R. Garbe started a couple of projects a community a philosophy . not a summary, but we’ll have one at the end what is suckless.org? something that Anselm R. Garbe started a website a community a philosophy . not a summary, but we’ll have one at the end what is suckless.org? something that Anselm R. Garbe started a website a couple of projects a philosophy . not a summary, but we’ll have one at the end what is suckless.org? something that Anselm R. Garbe started a website a couple of projects a community . not a summary, but we’ll have one at the end what is suckless.org? something that Anselm R. Garbe started a website a couple of projects a community a philosophy what is suckless.org? something that Anselm R. Garbe started a website a couple of projects a community a philosophy . not a summary, but we’ll have one at the end the website website www.suckless.org main page (links to everything else) lists.suckless.org the mailinglists archives code.suckless.org the source code repositories (Mercurial) the wiki the wiki software I hgiki (genosite) I self made by arg I shell script with 100 SLOC I uses markdown markup content I kept in Mercurial repo I write access to preview wiki (port 8000) I hg clone http://www.suckless.org:8000/hg/wiki I vi <some-file> I hg commit && hg push the couple of projects projects window managers I wmii I dwm IRC clients I sic I ii various tools I dmenu, slock, sselp, lsx, .
    [Show full text]
  • Editors Desk ...2
    The content of this magazine is released under the Creative Commons Attribution-Share Alike 3.0 Unported license. For more information visit user http://creativecommons.org/licenses/by-sa/3.0 TM Issue #1 - April 2009 EDITORS DESK ................................ 2 COMMUNITY NEWS ........................ 3 CHOOSING A DE/WM ...................... 4 HARDENING SSH IN 60 SECONDS .................................... 6 GAMERS CORNER .......................... 9 TIPS & TRICKS ............................... 10 PIMP MY ARCH .............................. 11 SOFTWARE REVIEW ......................12 Q&A ..................................................14 EEDDIITTOORRSS DDEESSKK Welcome to the first issue of Arch User Magazine! ARCH USER STAFF Daniel Griffiths (Ghost1227) ........... Editor ello, and thank you for picking up issue #1 of Arch User Magazine! While David Crouse (Crouse) .......... Contributor the vast majority of you probably know me (or have at least seen me H around the forums), I feel that I should take a moment to introduce myself. My name is Daniel Griffiths, and I am a 26-year-old independent contractor in Delaware, US. Throughout my life, I have wandered through various UNIX/Linux systems including (but not limited to) MINIX, RedHat, Mandrake, Slackware, Gentoo, Debian, and even two home made distributions based on Linux From Scratch. I finally found Arch in 2007 and instantly fell in love with its elegant simplicity. Some of our more attentive readers may note that Arch already has a monthly newsletter. With the existence of the aformentioned newsletter, what is the point of adding another news medium to the mix? Fear not, newsletter readers, I have no intention of letting Arch User Magazine take the place of the newsletter. In fact, Arch User Magazine and the newsletter are intended to fill two very different needs in the Arch community.
    [Show full text]