Giter Club home page Giter Club logo

consolation's Introduction

Consolation

Consolation is a Wayland compositor based on Smithay, forked from the reference commpositor Anvil.

Consolation is intended to fill the feature gaps for fullscreen gaming compositors.

Installation

From Sources

git clone https://github.com/trigg/Consolation.git
cd Consolation
cargo build --release

and the binary will be in ./target/release/consolation

Running

consolation

Consolation is designed to run directly from TTY or from a login manager, it cannot be used nested inside another compositor

Debug

cargo run

Features

Currently this is not as feature complete as hoped. More to come soon!

  • One window focused at a time
    • Pop ups kept to parent scale
  • Window aspect-scaled to fit display
  • 'Menu' key or 'Alt Gr' used to open menu.
    • Arrow keys navigate options, Enter to select, Backspace to go back
    • Switch between active windows
    • More settings & controls to come
  • wlroots layer shell to allow overlays, popups, and panels
    • Due to choices in the way the input is handled, currently panels & popups cannot be interacted with (click, touch, type).

consolation's People

Contributors

trigg avatar

Stargazers

 avatar

Watchers

 avatar

consolation's Issues

Font issues

To get results sooner I've opted for a texture-font.
This is awful for many reasons:

  • Stuck to a limited subset of characters, namely Latin based.
  • Stuck to one font
  • Stuck to one rendering of said font, which may not scale nicely
  • It's monospaced. I'm happy with this but most people probably won't be

For all these reasons we need to look into a real font rendering library that we can hook into.

Decision: Multiple outputs

As this is not originally intended to be used on machines with more than one output we need to work out what (and how!) we should be doing with extra outputs.

Theme/Colour scheme/Background system

While not a major selling point, the ability to set colours in the menu and a background image would probably be well received.

Worst case scenario allow a colour selection and base BG/Menu etc off only that.

Strip the unused sections

Anvil was considerably more feature-full than needed. Quite a bit of the code base could be made more lean

Some X11 windows get "Untitled window" label

Due to not checking titles thoroughly, and not completing a callback & update system X11 windows often go without a title.

Also any window that changes it after initial setting will not be seen in the compositor yet

Interaction with layershell is non-functional

Currently the rule enforcing all pointer/keyboard/touch goes only to the active window ensures no interactions with layershells are possible.

Idea 1:
Increase pointer clamp to output size & reimplement layershell pointer/keyboard/touch code.

Pros: No pros beyond fixing

Cons: Which output? Currently mouse is only relative to main window and shows on each output equally. Layer shells show individually on each output the mouse shows on all outputs. Clicks on a panel/notification could be clicks in-window on a different output depending on resolutions

Idea 2:
Return to a global-space mouse that only appears on one output at a time, but might be over the game window in any output.

Pros: Interaction with layershell windows per-output is possible

Cons: Probably need a tool to lay-out the outputs, as the anvil default of appending them to the right of previous outputs will be simply confusing to most users. Mouse DPI will change per-output if the game doesn't hide mouse & use relative.

Idea 3:
Document that this is the case and simply don't fix. Layershell will be a suitable HUD standard but devs setting up environments using Consolation will need to choose elements that will auto-hide or function without user input.

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.