README.org
author agaric <agaric@protonmail.com>
Tue, 09 Mar 2021 07:18:07 +0000
changeset 0 5f04caa7212d
permissions -rw-r--r--
git import
0
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
     1
* goose
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
     2
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
     3
*Status:* pre-alpha
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
     4
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
     5
Goose is a wayland compositor written in c and tcl/tk.
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
     6
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
     7
Aspired features include:
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
     8
- good use of wlroots (device detection, multi-monitor, screensharing, etc.)
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
     9
- control, configuration, hackability via tcl, json
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    10
- gui hackability via tk
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    11
- stacked windows by default
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    12
- grouping (tabs, piles, concats)
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    13
- tagging (workspace-like behavior)
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    14
- marking (for quick focusing)
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    15
- overview (mac's exposé, spaces, mosaic, etc.; an extended alt-tab; a graphical configuration tool)
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    16
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    17
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    18
Terms:
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    19
- input: mouse, keyboard, etc.
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    20
- output: monitor, etc.
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    21
- root: structure of all frames
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    22
- view: visible space, contains subset of root
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    23
- frame: contains windows
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    24
  - tab: laid out in tabs, front window totally visible, the rest totally hidden
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    25
  - pile: laid out in piles, front window totally visible, the rest partially/totally hidden
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    26
  - concat: laid out flat and adjoined, all windows totally visible
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    27
- window: an application's immediate graphical representation
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    28
- tag: an index on frames for visibility-toggling
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    29
- mark: an index on frames for focus-toggling
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    30
- get: state query (by a client)
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    31
- set: state modification request (by a client)
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    32
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    33
** Build
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    34
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    35
1. ~cd goose/~
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    36
1. ~$EDITOR config.mk~ and ~make~
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    37
1. ~./build/goose~
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    38
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    39
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    40
** Why
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    41
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    42
- want some practice with c + tcl and shipping a complete program
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    43
- tcl and tk are awesome
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    44
- wayland seems to hold a bright future
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    45
- 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
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    46
- want to experiment with seemingly cool ui, layout, ipc ideas
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    47
- called "goose" because when you get tcl'd, you get goose-bumps
5f04caa7212d git import
agaric <agaric@protonmail.com>
parents:
diff changeset
    48