aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: fbab807e8a742df1d092cf1560f45681140f0c13 (plain)
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

<pre>
                 _                          _     _                _        _ 
  _____  ___   _| |__   ___ _ __ __ _ _ __ | |_  | |__   __ _  ___| | _____| |
 / _ \ \/ / | | | '_ \ / _ \ '__/ _` | '_ \| __| | '_ \ / _` |/ __| |/ / __| |
|  __/>  <| |_| | |_) |  __/ | | (_| | | | | |_  | | | | (_| | (__|   <\__ \_|
 \___/_/\_\\__,_|_.__/ \___|_|  \__,_|_| |_|\__| |_| |_|\__,_|\___|_|\_\___(_) </pre>

### Build Dependencies and Installation

It should be possible to build this project for most platforms using cargo
directly. Installation and XScreensaver integration probably only works on UNIX
machines (Linux, \*BSD, etc). It's only been developed and tested on Debian
jessie, using the stable Rust toolchain (version 1.9).

A patched version of the `glutin` OpenGL window generation library is required;
see below.

The `pandoc` tool is required for building manpages.

To just build (`--debug`) and run an indivual "hack", eg `exuberantbovines`:

    cargo run --bin exuberantbovines

To build everything (`--release`) and install, first run:

    make install

Then follow the directions about adding lines like the following to you
`~/.xscreensaver` to have hacks actually show up in, eg, `xscreensaver-demo`:

    GL:               exuberantbovines --root             \n\

### Installing Patched glutin Library

Circa June 2016, this project requires a patched version of the `glutin` window
creation library to allow re-using an existing X Window. This is only necessary
for integration with X Windows, but the project won't build without it.

As a workaround until there is a solution in upstream `glutin`, use the 
["dependency override"](http://doc.crates.io/specifying-dependencies.html#overriding-dependencies)
feature of the cargo build tool.

Checkout the `feature-existing` branch from
`https://github.com/bnewbold/glutin`, then, under this directory
(exuberant-hacks), create a `.cargo/config` file with a path like:

```
  paths = ["/home/bnewbold/src/glutin"]
```

### Creating Your Own Hacks

You'll need to create at least three files with the same base name (`$HACK`):

- the rust sourcecode (`src/bin/$HACK.rs`)
- an XML config file (`configs/$HACK.xml`)
- a manpage in Markdown format (`doc/$HACK.6.md`)

Then just add your HACK to the list in Makefile.

See also XScreensaver's 
["Writing new XScreenSaver modules"](https://github.com/Zygo/xscreensaver/blob/master2/README.hacking)