rwind

所属分类:系统编程
开发工具:Racket
文件大小:0KB
下载次数:0
上传日期:2021-03-28 13:01:14
上 传 者sh-1993
说明:  Racket编程语言中的窗口管理器,
(Window manager in the Racket programming language,)

文件列表:
LICENSE (7651, 2021-03-28)
base.rkt (1431, 2021-03-28)
client.rkt (1544, 2021-03-28)
client2.rkt (1679, 2021-03-28)
color.rkt (1551, 2021-03-28)
configure.rkt (4349, 2021-03-28)
display.rkt (2315, 2021-03-28)
doc-string.rkt (7933, 2021-03-28)
events.rkt (9431, 2021-03-28)
gpl-3.0.txt (35147, 2021-03-28)
info.rkt (177, 2021-03-28)
keymap.rkt (20672, 2021-03-28)
launcher-base.rkt (1161, 2021-03-28)
launcher.rkt (3994, 2021-03-28)
main.rkt (2370, 2021-03-28)
policy/ (0, 2021-03-28)
policy/base.rkt (4504, 2021-03-28)
policy/simple.rkt (6121, 2021-03-28)
policy/tiling.rkt (7441, 2021-03-28)
private/ (0, 2021-03-28)
private/try-layout.rkt (1450, 2021-03-28)
rwind.rkt (5876, 2021-03-28)
server-sync.rkt (3993, 2021-03-28)
server.rkt (3959, 2021-03-28)
themes/ (0, 2021-03-28)
themes/Simple/ (0, 2021-03-28)
themes/Simple/close.png (333, 2021-03-28)
themes/Simple/maximize.png (291, 2021-03-28)
themes/Simple/maximized.png (340, 2021-03-28)
themes/Simple/metacity-theme-1.xml (14647, 2021-03-28)
themes/Simple/minimize.png (199, 2021-03-28)
user-files/ (0, 2021-03-28)
user-files/.xinitrc-rwind (413, 2021-03-28)
user-files/.xinitrc-rwind-debug (491, 2021-03-28)
user-files/applications-rwind.desktop (212, 2021-03-28)
user-files/compile-rwind (679, 2021-03-28)
user-files/config-simple.rkt (2855, 2021-03-28)
user-files/run-debug (250, 2021-03-28)
... ...

# RWind - The Racket Window Manager An extensible window manager written in the [Racket programming language](http://www.racket-lang.org), meant to be highly customizable. There is an [RWind mailing list](https://groups.google.com/forum/?fromgroups#!forum/rwind). First some **warnings**: * Backward compatibility will not be ensured in the 0.x branch. * Due to a security issue in the server, the current version should not be used on multiple user computers, unless the server is disabled. Use at your own risk. ## Current features * Stacking _and_ [tiling](http://en.wikipedia.org/wiki/Tiling_window_manager) support * Client command line (repl) * Customization of key bindings and mouse bindings * Workspaces with two modes: - single mode: one workspace over all monitors - multi mode: one workspace per monitor * Xinerama and RandR support * Fullscreen * Currently little ICCCM/EWMH compliance All these features are in development stage. ## Installation & quick start ### 1) Install Racket Download and install Racket at https://download.racket-lang.org **Note**: Racket BC is currently recommended, as some FFI segfaults may occur with Racket CS. You may need to [set your PATH environment variable](https://github.com/racket/racket/wiki/Set-your-PATH-environment-variable). ### 2) Install RWind Type: ```shell raco pkg install --auto --update-deps rwind ``` (`raco` is provided with Racket, so it should be in your path) This will also install missing Racket dependencies such as the `x11` Racket package. You may also need to install `libedit` (installed by default on Ubuntu at least, but not on Gentoo). See [here](https://github.com/Metaxal/rwind/issues/16#issue-273254092) if installation fails due to this missing dependency. ### 3) Configure RWind **As a normal user** (not a super-user), type: ```shell racket -l rwind/configure ``` And follow the instructions. This creates a default RWind configuration file, then it asks you to choose between a session manager or a `xinit/startx` configuration. If you choose a session manager configuration, it will abort and you will need to re-type the above command preceded by `sudo`. These two steps are required because the first configuration files must be owned by the user. You can reconfigure RWind at any time. ### 4) Start RWind a) If you chose a session configuration, go back to the login screen. You should now see RWind in the login options. b) If you chose a xinit/startx configuration, in a virtual terminal (`Ctrl-Alt-F1` or `Ctrl-Alt-F2`, etc.), type the following: ```shell xinit .xinitrc-rwind -- :1 & ``` You may need to modify the display `:1` to `:2` for example if `:1` is not available. The default `.xinitrc-rwind` is a simple example file that you may want to edit to fit your needs. By default, you need to close the xterms to exit the session. ## Default configuration and customization Upon configuration, the file `config.rkt` was created. This is where all the RWind customization is done. By default, you can open this file within RWind by pressing `Alt-F11` (this can also be changed in the configuration file). Take a look at this file to know what keybindings are defined. You can also of course add your own keybindings. The default window policy is stacking (as for most traditional window managers), but you can easily change it to [tiling](http://en.wikipedia.org/wiki/Tiling_window_manager) in the configuration file. With the tiling policy, several layouts are possible (mainly `uniform` and `dwindle`). To choose a layout, specify so in the file: ```racket (current-policy (new policy-tiling% [layout 'dwindle])) ``` If you edit the configuration file, you will need to restart RWind to take the changes into account, probably by pressing the keybinding as defined in this very file. You don't need to recompile RWind, just restart it. ## The client The client is a console where you can evaluate Racket expressions and communicate with the window manager. It can be opened in a terminal with: ```shell racket -l rwind/client ``` For example, place the mouse pointer on a window and type in the console: ```racket > (window-name (pointer-window)) ``` Or: ```racket > (move-window (pointer-window) 10 40) ``` The list of available symbols provided by RWind is given by: ```racket > (known-identifiers) ``` All bindings of `#lang racket` are available too. You can get help on a known identifier with: ```racket > (describe 'focus-window) ``` You can search among the list of identifiers with: ```racket > (search-identifiers "window") ``` You can get the list of existing layouts for the tiling policy: ```racket > (policy. get-layouts) ``` The layout can be changed immediately: ```racket > (policy. set-layout 'dwindle) ``` Each workspace can have its own layout: ```racket > (policy. set-workspace-layout 'uniform) ``` To reset the layout of a workspace to the default one: ```racket > (policy. reset-workspace-layout) ``` ## Updating RWind RWind has some dependencies, in particular the [X11 FFI bindings](https://github.com/kazzmir/x11-racket), that will probably need to be updated with RWind. To do this automatically, specify the `--auto` option to `raco update`: ```shell raco update --auto rwind ``` **Your RWind configurations file will not be modified by the update.** This also means that any new feature that may appear in the new versions of these files will not be added to your files. You can reconfigure RWind, and you will be asked if you want to replace the existing `config.rkt` file. ## Debugging Because RWind heavily relies on the X11 collection, a large part of the debugging happens an the interface between the two. Create symbolic links to the scripts `user-files/.xinitrc-rwind-debug` and `user-files/rwind-debug` in your home directory, or copy these files. Compile rwind and x11 in debug mode with `$ user-files/compile-rwind debug`. Basically, it removes all previous compilations of the two collections and compiles it with some flags. Finally, start RWind from a non-X terminal (say, Ctrl-Alt-F2): ``` xinit .xinitrc-rwind-debug -- :2 & ``` Then all error messages are redirected to `~/rwind.log`. You should see lines starting with "RW:", and lines starting with " X:" (for the X11 lib). You can also track the error messages from within RWind with `tail -f ~/rwind.log`.

近期下载者

相关文件


收藏者