Coder Social home page Coder Social logo

rwind's Introduction

                                ==== RWind ====
 
                           The Racket Window Manager

An extensible window manager aiming to be similar to Sawfish 
(http://sawfish.wikia.com), but written in the Racket programming language 
(http://www.racket-lang.org).


Warnings:
---------

- This package is under current development and is in no way stable, and
  is intended for testing purposes only. 
- No backward compatibility will be ensured in the 0.x branch
- Due to a security issue, the current version should not be used on multiple 
  user computers. Use at your own risk!


Current features:
-----------------

  - Client command line (repl)
  - Customization of key bindings and mouse bindings
  - Workspaces with several modes:
    - single mode: one workspace over all monitors
    - multi mode: one workspace per monitor
  - xinerama support (currently only through repl)
  - Very simple frames (currently only through repl, and buggy)
  - Very little ICCCM/EWMH compliance 
    - _NET_VIRTUAL_ROOTS

All these features are in development stage.

Installation:
-------------
1) Install Racket: http://www.racket-lang.org

2) Create a directory where to place Racket projects (e.g., 
/home/me/Programming/Racket), then do, in this directory:

  git clone http://github.com/kazzmir/x11-racket.git
  git clone http://github.com/Metaxal/RWind.git
  raco link x11-racket
  raco link --name rwind RWind
  raco setup x11-racket rwind

3) Copy the provided .xinitrc-rwind file in your home directory, and modify its
contents according to your installation.

4) Optional, but recommended:

Copy (or link) and rename one of the files in the user-script-examples directory
to $XDG_CONFIG_HOME/rwind/config.rkt (or to $HOME/.config/rwind/config.rkt if
the xdg environment variable is not set).

Take a look at the file to know what key and mouse bindings are defined. You can
modify it as you want.

The file simple.rkt defines a number of default key and mouse bindings.
 - Control-left-button to move a window around
 - Control-right-button to resize the window
 - Control-Alt-t to open xterm
 - Alt-F4 to close a window
 - Alt-F12 opens the client 
 - Super-F1-3 switches between workspaces
 - Shift-Super-F1-3 moves the current window to another workspace

5a) In a login shell, in RWind's directory, type the following:

  xinit .xinitrc-rwind -- :1 &

You may need to modify the display ":1" to ":2" for example if ":1" is not 
available.

Press Alt-Escape to quit the session.

5b) You can also test with Xephyr (from the xserver-xephyr package), that 
creates a nested X session (thanks to Asumu), in RWind's directory:
 
  Xephyr -ac -noreset -screen 800x600 :1 &
  DISPLAY=:1.0 ./run.sh &
  
However it may not support RWind properly.

Installation for use in lightdm/gdm:
------------------------------------

Do steps 1-4) of the installation above.

1) In rwind directory, compile and install the executable with:

  raco exe rwind.rkt && sudo cp rwind /usr/bin

2) Copy the provided file rwind.desktop to /usr/share/xsessions/rwind.desktop

3) Close your session, choose RWind in the session menu and open your session.


The client:
-----------

The client is a console where you can evaluate expressions. 
In RWind's directory, it can be opened in a terminal with:

  racket client.rkt

Try for example:
> (map window-name (window-list))

The list of available symbols provided by RWind is given by:
> (known-identifiers)

All bindings of '#lang racket' are available too.

You can get help on a known identifier with:
> (describe 'window-list)

Debugging:
----------

An easy way to enable debugging is to type in a login shell (in RWind's
directory):

  ./compile-debug.sh
  xinit .xinit-rwind-debug -- :1

rwind's People

Contributors

metaxal avatar takikawa avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.