Skip to content

blobject/goose

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

goose

Status: pre-alpha

Goose is a wayland compositor written in c and tcl/tk.

Aspired features include:

  • good use of wlroots (device detection, multi-monitor, screensharing, etc.)
  • control, configuration, hackability via tcl, json
  • gui hackability via tk
  • stacked windows by default
  • grouping (tabs, piles, concats)
  • tagging (workspace-like behavior)
  • marking (for quick focusing)
  • overview (mac’s exposé, spaces, mosaic, etc.; an extended alt-tab; a graphical configuration tool)

Terms:

  • input: mouse, keyboard, etc.
  • output: monitor, etc.
  • root: structure of all frames
  • view: visible space, contains subset of root
  • frame: contains windows
    • tab: laid out in tabs, front window totally visible, the rest totally hidden
    • pile: laid out in piles, front window totally visible, the rest partially/totally hidden
    • concat: laid out flat and adjoined, all windows totally visible
  • window: an application’s immediate graphical representation
  • tag: an index on frames for visibility-toggling
  • mark: an index on frames for focus-toggling
  • get: state query (by a client)
  • set: state modification request (by a client)

Build

  1. cd goose/
  2. $EDITOR config.mk and make
  3. ./build/goose

Why

  • want some practice with c + tcl and shipping a complete program
  • tcl and tk are awesome
  • wayland seems to hold a bright future
  • yet to see a stacking wayland window manager (at least packaged for the distro that I use) that works intuitively, that works in a way that I like by default (cwm, openbox), and whose near-core behavior is easily customisable
  • want to experiment with seemingly cool ui, layout, ipc ideas
  • called “goose” because when you get tcl’d, you get goose-bumps