GithubHelp home page GithubHelp logo

happy-ferret / way-cooler Goto Github PK

View Code? Open in Web Editor NEW

This project forked from way-cooler/way-cooler

0.0 1.0 0.0 1.16 MB

Customizable Wayland compositor (window manager)

License: MIT License

Python 0.97% Lua 3.65% Rust 95.37%

way-cooler's Introduction

Way Cooler

Gitter Crates.io Build Status Coverage Status License

Way Cooler is a customizable tiling window manager written in Rust for Wayland.

Development

Way Cooler is currently in alpha. The core features have been added and it is in a usable state, but more work is needed to make it user friendly. Here's an example where we run Way Cooler within i3. Everything within the wlc-x11 window is Way Cooler:

way-cooler demonstration

Motivation

We wanted to get experience with Rust and we found current X11 window managers to not have all the features we wanted.

Currently there are very few fully-featured tiling window managers in the Wayland ecosystem, as most of the effort has been porting Gnome and KDE over. Although Wayland is still in early-stage development and is not backwards compatible with existing X11 tools, we wanted to put our stake in and provide for current tiling window manager users in the future.

We take a lot of inspiration from current window managers (namely i3 and awesome) but our goal is to exist as a unique alternative.

Current Features

  • i3-style tiling
    • Horizontal/vertical layouts
    • Nest containers with different layouts
    • Floating windows per workspace
  • Client application support via the D-Bus IPC
    • See an example application here. It displays the tree in a somewhat organized format, and is actually really helpful for both debugging the tree and understanding how subcontainers work.
    • Enables dynamic configuration at runtime, without having to reload a configuration file
    • Allows extensions of the window manager to exist as separate programs talking over the IPC
  • A Lua environment designed to make extending Way Cooler simple and easy
    • Lua is the configuration format, allowing the user to enhance their window manager in any way they want.
    • Utilities library included to aid communicating with Way Cooler
  • X programs supported through XWayland

Planned Features

  • i3 tabbed/stacked tiling
  • Tiling window through configurable Lua scripts (awesome-style)
  • Server-side borders around window clients
  • Swappable status bars/docs/menus
    • A status bar built with Conrod and Lua
  • More customization settings

Follow the development of these features in our issues section or checkout our contribution guidelines if you want to help out.

Trying out Way Cooler

If you would like to try out Way Cooler before properly installing it, then you can use the following docker command:

docker run --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" timidger/way-cooler

This allows you try out the window manager without having to install anything except Docker.

Installation

On the AUR

@vinipsmaker was kind enough to provide AUR packages:

way-cooler

way-cooler-git

Build from source

You will need the following dependencies installed on your machine to install Way Cooler:

  • Wayland
    • Including the server and client libraries
  • wlc
  • Weston (optional)
    • The init file defaults to using weston-terminal as the default terminal emulator
  • Cargo
    • The package manager / build system used by Rust

Finally, to install Way Cooler simply run the following cargo command:

cargo install way-cooler

You can try it out while running in an X environment, or switch to a TTY and run it as a standalone

Init File

All keyboard shortcuts (except the command to exit Way Cooler) are configurable through the init file. The recommended strategy is to copy config/init.lua to $HOME/.config/way-cooler/init.lua and edit from there. The default keybindings are:

  • Alt+Enter Launches a terminal defined by the way_cooler.terminal
  • Alt+d Opens dmenu to launch a program
  • Alt+p Sends expressions to be executed directly by the Lua thread
  • Alt+Shift+Esc Closes Way Cooler
  • Alt+v Makes a new sub-container with a vertical layout
  • Alt+h Makes a new sub-container with a horizontal layout
  • Alt+<arrow-key> Switches focus to a window in that direction
  • Alt+Shift+<arrow-key> Moves active container in that direction
  • Alt+<number-key> Switches the current workspace
  • Alt+shift+<number-key> Moves the focused container to another workspace
  • Alt+shift+space Make a window floating
  • Alt+space Change focus between tiled and floating windows

Contributors

Way Cooler was started by @Timidger and @SnirkImmington, but these fine people have helped us:

  • @vinipsmaker created (and maintains) AUR packages
  • @starfys created way-cooler desktop file
  • @toogley fixed a link
  • @paulmenzel fixed a typo

And of course, thanks to the Rust community and the developers of wlc.

Contributing

Check out Contributing for more information.

If you find bugs or have questions about the code, please submit an issue or ping us on gitter.

way-cooler's People

Contributors

gitter-badger avatar paulmenzel avatar snirkimmington avatar starfys avatar timidger avatar

Watchers

 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.