This repository has been archived by the owner on Mar 27, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 38
/
shellshape.xml.template
173 lines (125 loc) · 8.48 KB
/
shellshape.xml.template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='interface.xsl'?>
<interface xmlns="http://zero-install.sourceforge.net/2004/injector/interface">
<name>shellshape</name>
<summary>tiling window manager extension for gnome-shell</summary>
<publish xmlns="http://gfxmonk.net/dist/0install" mode="featured"/>
<feed-for interface="http://gfxmonk.net/dist/0install/shellshape.xml"/>
<description>
# shellshape
A tiling window manager extension for gnome-shell. Many tiling window managers are an all-or-nothing affair, shellshape allows you to tile your windows when it makes sense, and still provides powerful direct manipulation when you need it. You don't have to give up any of the gnome features you like, so it makes for a very smooth learning curve.
This software is in-development. I use it daily, but it might break stuff. Use at your own risk. Multiple monitor support is not really present, and doing fancy things like "always on top" windows may or may not break it.
I must thank [bluetile][bluetile], for it was the inspiration for this extension and many features are lifted directly from it (although not code, JS and haskell are vastly different beasts).
## Running it
Briefly, `0install run http://gfxmonk.net/dist/0install/shellshape.xml`. If you don't have `0install`, you should install the `zeroinstall-injector` package first.
For more details, please see instructions on <http://gfxmonk.net/shellshape/>
You can also install it from [the official gnome shell extensions site](https://extensions.gnome.org/extension/294/shellshape/).
This may lag (sometimes months) behind the development release, as they perform manual approval of all updates.
### Running a local version
To build the latest version, you'll need to install `npm` (the node.js package manager). You'll also need python. Then:
1. clone this repo
2. run `tools/gup compile`
3. If you have 0install, you can then just run:
0install run shellshape-local.xml
Otherwise, you can install the extension to a symlink in ~/.local/share/gnome-shell/extensions using:
tools/gup dev-install
To compile stuff (after changing some source code), run `tools/gup compile`. You can add e.g `-j3` to compile stuff in parallel.
## running on arch linux
You may want to try [this user-maintained package](https://aur.archlinux.org/packages.php?ID=50257) if the normal method doesn't work for you, but I have no idea what it will do to your system.
## Hacking
The source code is all TypeScript. This is mostly like JavaScript, but it has optional type annotations, a module system, and (sometimes) it yells at you when you do something that makes no sense. Which is a nicer experience than gnome-shell yelling at you, crashing, and disabling all of your extensions.
- `interactive/`: run the core tiling code in the browser (_without_ killing gnome shell when you break something ;))
- `src/tiling.ts`: core tiling & layout stuff
- `src/gjs`: gnome-shell specific stuff (mutter integration, extension system, indicator, etc)
- `src/node`: nodejs shim, used for running tests
- `src/xbrowser`: browser shim, used for `interactive/index.html`
- `src/stub`: nodejs shim, used for running tests
- `shellshape/`: third party libs, metadata.json, translations, gschemas, etc
Build targets with `tools/gup`. Targets exist wherever there is a corresponding `*.gup` file. You can find those with:
$ git ls-files | fgrep '.gup' | sed -e 's!/gup/!/!;s!\.gup$!!'
Not all of them will work, as some might depend on tools only I happen to have installed. Patches welcome if you find + fix that sort of thing.
## Debugging
If you export `SHELLSHAPE_DEBUG=all`, you will get a debug log written to `/tmp/shellshape.log`. You can set values other than `all` if you want to debug on specific topics (available topics include `extension`, `indicator`, `tiling`, `workspace` and `window`) - they should be set as a comma-delimited string, e.g `SHELLSHAPE_DEBUG=workspace,tiling`.
## "It doesn't work"
If you don't know why, here's some things to check:
- Check the extension is enabled (you can see this in the "Shell Extensions" section of `gnome-tweak-tool`)
- See if there are any errors in looking glass that mention shellshape (press alt-F2, type "`lg`" and then click the "Errors" tab)
- Check the console output (if running in a console) for any messages that mention shellshape
- Check /tmp/shellshape.log after launching with $SHELLSHAPE_DEBUG=all
To report a bug or crash, please see the [github issues page](https://github.com/gfxmonk/shellshape/issues).
## Replace gnome-shell
If you symlink the provided `gnome-shell.desktop` file to `~/.local/share/applications/`, gnome-session will use that to launch gnome-shell instead of the system's gnome-shell. Uninstalling is as simple as removing that file.
## Keyboard shortcuts
Are listed at [http://gfxmonk.net/shellshape/](http://gfxmonk.net/shellshape/)
Some helpful folk have created graphical (SVG) versions of the keyboard shortcuts, to serve as a handy reference:
**Note:** These are for versions prior to 0.12. Anyone want to update them?
- [Keyboard overlay image](https://github.com/downloads/gfxmonk/shellshape/keyboardshortcuts.svg) - Jordan Klassen
- [Desktop wallpaper](http://dl.dropbox.com/u/1879450/shellshape.svg) - Andreas Wallberg ([source](https://github.com/gfxmonk/shellshape/issues/95))
## Licence
GPLv3
## Changelog
### version 0.12
- gnome-shell 3.16 compatibility
- Changes to keyboard shortcuts
- Next/Previous layout shortcuts (not bound by default)
### version 0.10
- Fairly large overhaul to codebase:
- Removed coffeescript, now using typescript instead. This is a JavaScript superset (so for the most part it's _just JavaScript_), but with optional static typing.
This has improved the quality of the code in a number of places (it uncovered a number of dumb type-related bugs), and removes the need for contributors to know CoffeeScript.
- Lots of cleanup of state management. This improves a number of circumstances where shellshape and gnome-shell disagree about the state of windows / workspaces, etc.
- Made "default layout" setting apply instantly, rather then require a restart.
- Additional misc bugs fixed while going through the codebase.
### version 0.9
- Support for gnome-shell 3.12
### version 0.8
- Preliminary support for multiple monitors
- Update screen bounds every time we do a layout
### version 0.7
- API changes for gnome-shell 3.10.
This makes 0.7 incompatible with anything before 3.10.
### version 0.6.1
- Fixed "Shellshape settings" indicator menu in gnome-shell 3.8
### version 0.6
- Support for gnome-shell 3.8
- Support for localisation (plus german translation) thanks to @jonnius
### version 0.5.4
- Support for gnome-shell 3.6
### version 0.5.3
- Fix error launching dconf-editor from the preferences panel
### version 0.5.2
- Updated manifest.json to declare compatibility with gnome-shell 3.4.2
- Include LICENCE and README.md files in tarball
### version 0.5.1
- Added blacklist to prevent "Conky" windows from being tiled.
- Fixed a number of bugs to do with tracking window movement and sizes.
- Switched the "Horizontal" and "Vertical" layouts. You may need to adjust your keyboard shortcuts if you've set them to anything non-default, as the gsettings keys have swapped as well (if you haven't customised shortcuts, the defaults will still do the right thing)..
### version 0.5:
- Removed label from indicator icon.
- Rework icons to be simpler and look/act like other symbolic icons in the panel.
- Added a preferences panel (accessible from the gse website, or `gnome-shell-extension-prefs`).
- Added a "max autotile windows" option.
- Added the ability to customise keyboard shortcuts from the preferences panel.
### version 0.4:
- First release on extensions.gnome.org
[bluetile]: http://bluetile.org/
</description>
<homepage>http://gfxmonk.github.com/shellshape/</homepage>
<group>
<command name="run">
<runner interface="http://gfxmonk.net/dist/0install/zeroinstall-plugin-manager.xml">
<arg>http://gfxmonk.net/dist/0install/gnome-shell.xml</arg>
<arg>--plugin-command</arg>
<arg>run</arg>
</runner>
</command>
<requires interface="http://gfxmonk.net/dist/0install/gnome-shell.xml">
<version not-before="3.10"/>
</requires>
<environment insert="xdg/data" mode="prepend" name="XDG_DATA_DIRS"/>
<environment insert="shellshape/data" mode="prepend" name="XDG_DATA_DIRS"/>
<implementation version="{version}">
<manifest-digest/>
<archive href="{archive}"/>
</implementation>
</group>
</interface>