2015-02-20 15:24:26 +01:00
# Readme
2017-08-16 20:07:08 +02:00
## About Awesome
2014-05-24 22:14:06 +02:00
2017-08-16 20:07:08 +02:00
Awesome is a highly configurable, next generation framework window manager for X.
2007-09-05 20:15:00 +02:00
2014-05-26 21:26:52 +02:00
## Building and installation
2014-05-24 22:14:06 +02:00
2008-06-23 18:57:49 +02:00
After extracting the dist tarball, run:
2007-09-05 20:15:00 +02:00
2021-03-10 22:50:24 +01:00
```sh
make
```
2007-09-05 20:15:00 +02:00
2019-06-09 19:47:31 +02:00
This will create a build directory, run `cmake` in it and build Awesome.
2008-07-01 08:25:40 +02:00
2015-01-19 01:20:33 +01:00
After building is finished, you can either install via `make install` :
2008-07-01 08:25:40 +02:00
2021-03-10 22:50:24 +01:00
```sh
make install # you might need root permissions
```
2008-01-09 14:26:27 +01:00
2015-01-19 01:20:33 +01:00
or by auto-generating a .deb or .rpm package, for easy removal later on:
2021-03-10 22:50:24 +01:00
```sh
make package
2016-12-28 12:39:03 +01:00
2021-03-10 22:50:24 +01:00
sudo dpkg -i awesome-x.y.z.deb
# or
sudo rpm -Uvh awesome-x.y.z.rpm
```
2015-01-19 01:20:33 +01:00
2017-08-16 20:07:08 +02:00
NOTE: Awesome uses [`cmake` ](https://cmake.org ) to build. In case you want to
2019-06-09 19:47:31 +02:00
pass arguments to `cmake` , please use the `CMAKE_ARGS` environment variable. For
2016-12-28 12:39:03 +01:00
instance:
2021-03-10 22:50:24 +01:00
```sh
CMAKE_ARGS="-DCMAKE_INSTALL_PREFIX=/opt/awesome" make
```
2016-12-28 12:39:03 +01:00
2019-01-01 18:43:43 +01:00
### Installing current git master as a package receipts
#### Arch Linux AUR
2021-03-10 22:50:24 +01:00
```sh
2019-01-01 18:43:43 +01:00
sudo pacman -S --needed base-devel git
git clone https://aur.archlinux.org/awesome-git.git
cd awesome-git
makepkg -fsri
```
#### Debian-based
2021-03-10 22:50:24 +01:00
```sh
2019-01-01 18:43:43 +01:00
sudo apt build-dep awesome
git clone https://github.com/awesomewm/awesome
cd awesome
make package
sudo apt install *.deb
```
2016-09-12 23:46:47 +02:00
### Build dependencies
Awesome has the following dependencies (besides a more-or-less standard POSIX
environment):
- [CMake >= 3.0.0 ](https://cmake.org )
- [Lua >= 5.1.0 ](https://www.lua.org ) or [LuaJIT ](http://luajit.org )
2017-01-02 19:53:02 +01:00
- [LGI >= 0.8.0 ](https://github.com/pavouk/lgi )
2016-09-12 23:46:47 +02:00
- [xproto >= 7.0.15 ](https://www.x.org/archive//individual/proto/ )
- [libxcb >= 1.6 ](https://xcb.freedesktop.org/ ) with support for the RandR, XTest, Xinerama, SHAPE and
XKB extensions
- [libxcb-cursor ](https://xcb.freedesktop.org/ )
- [libxcb-util >= 0.3.8 ](https://xcb.freedesktop.org/ )
- [libxcb-keysyms >= 0.3.4 ](https://xcb.freedesktop.org/ )
- [libxcb-icccm >= 0.3.8 ](https://xcb.freedesktop.org/ )
2019-02-06 09:21:26 +01:00
- [libxcb-xfixes ](https://xcb.freedesktop.org/ )
2016-11-14 13:31:59 +01:00
- [xcb-util-xrm >= 1.0 ](https://github.com/Airblader/xcb-util-xrm )
2016-09-12 23:46:47 +02:00
- [libxkbcommon ](http://xkbcommon.org/ ) with X11 support enabled
- [libstartup-notification >=
0.10](https://www.freedesktop.org/wiki/Software/startup-notification/)
- [cairo ](https://www.cairographics.org/ ) with support for XCB and GObject
introspection
- [Pango ](http://www.pango.org/ ) with support for Cairo and GObject
introspection
2017-06-02 10:13:26 +02:00
- [GLib >= 2.40 ](https://wiki.gnome.org/Projects/GLib ) with support for GObject
2016-09-12 23:46:47 +02:00
introspection
- [GIO ](https://developer.gnome.org/gio/stable/ ) with support for GObject
introspection
- [GdkPixbuf ](https://wiki.gnome.org/Projects/GdkPixbuf )
- libX11 with xcb support
- [Imagemagick's convert utility ](http://www.imagemagick.org/script/index.php )
- [libxdg-basedir >= 1.0.0 ](https://github.com/devnev/libxdg-basedir )
Additionally, the following optional dependencies exist:
- [DBus ](https://www.freedesktop.org/wiki/Software/dbus/ ) for DBus integration
and the `awesome-client` utility
2018-04-04 11:28:50 +02:00
- [asciidoctor ](https://asciidoctor.org/ ) for generating man pages
2016-09-12 23:46:47 +02:00
- [gzip ](http://www.gzip.org/ ) for compressing man pages
2017-09-09 05:14:41 +02:00
- [ldoc >= 1.4.5 ](https://stevedonovan.github.io/ldoc/ ) for generating the
documentation
2016-09-12 23:46:47 +02:00
- [busted ](https://olivinelabs.com/busted/ ) for running unit tests
- [luacheck ](https://github.com/mpeterv/luacheck ) for static code analysis
- [LuaCov ](https://keplerproject.github.io/luacov/ ) for collecting code coverage
information
- libexecinfo on systems where libc does not provide `backtrace_symbols()` to
generate slightly better backtraces on crashes
- `Xephyr` or `Xvfb` for running integration tests
2018-06-26 16:43:20 +02:00
- [GTK+ >= 3.10 ](https://www.gtk.org/ ) for `./themes/gtk/`
Use xcb-errors library if it is available
This library allows to get a human-readable string describing X11
requests, events, and errors. We now use this library to pretty-print
X11 errors if we get any.
To test this code, I added the following two lines to AwesomeWM so that
X11 errors are generated:
xcb_set_input_focus(globalconf.connection, 42, 42, 42);
xcb_randr_set_output_primary(globalconf.connection,
globalconf.screen->root, 42);
Output without xcb-errors:
X error: request=SetInputFocus (major 42, minor 0), error=BadValue (2)
X error: request=(null) (major 140, minor 30), error=(null) (147)
Output with xcb-errors:
X error: request=SetInputFocus (major 42, minor 0), error=Value (2)
X error: request=RandR-SetOutputPrimary (major 140, minor 30), error=RandR-BadOutput (147)
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-17 15:09:21 +01:00
- [xcb-errors ](https://gitlab.freedesktop.org/xorg/lib/libxcb-errors ) for
pretty-printing of X11 errors
2019-07-28 23:23:44 +02:00
- [libRSVG ](https://wiki.gnome.org/action/show/Projects/LibRsvg ) for displaying
SVG files without scaling artifacts
2019-10-17 04:24:32 +02:00
- [wmctrl ](http://tripie.sweb.cz/utils/wmctrl ) for testing WM interactions
2019-10-18 18:52:44 +02:00
with external actions
- [xterm ](https://invisible-island.net/xterm/ ) for various test cases
2016-09-12 23:46:47 +02:00
2017-08-16 20:07:08 +02:00
## Running Awesome
2014-05-24 22:14:06 +02:00
2017-08-16 20:07:08 +02:00
You can directly select Awesome from your display manager. If not, you can
2019-06-09 19:47:31 +02:00
add the following line to your `.xinitrc` to start Awesome using `startx`
2017-08-16 20:07:08 +02:00
or to `.xsession` to start Awesome using your display manager:
2007-09-05 20:15:00 +02:00
2021-03-10 22:50:24 +01:00
```sh
exec awesome
```
2007-09-05 20:15:00 +02:00
2017-08-16 20:07:08 +02:00
In order to connect Awesome to a specific display, make sure that
2014-05-24 22:14:06 +02:00
the `DISPLAY` environment variable is set correctly, e.g.:
2007-09-05 20:15:00 +02:00
2021-03-10 22:50:24 +01:00
```sh
DISPLAY=foo.bar:1 exec awesome
```
2007-09-05 20:15:00 +02:00
2017-08-16 20:07:08 +02:00
(This will start Awesome on display `:1` of the host foo.bar.)
2007-09-05 20:15:00 +02:00
2014-05-26 21:26:52 +02:00
## Configuration
2014-05-24 22:14:06 +02:00
2017-08-16 20:07:08 +02:00
The configuration of Awesome is done by creating a
2015-07-24 02:25:39 +02:00
`$XDG_CONFIG_HOME/awesome/rc.lua` file, typically `~/.config/awesome/rc.lua` .
2014-04-07 23:21:25 +02:00
2017-02-05 18:16:27 +01:00
An example configuration named `awesomerc.lua` is provided in the source.
2008-08-29 02:21:58 +02:00
2014-05-26 21:26:52 +02:00
## Troubleshooting
2014-05-24 22:14:06 +02:00
2017-08-16 20:07:08 +02:00
On most systems any message printed by Awesome (including warnings and errors)
2015-07-24 02:25:39 +02:00
is written to `~/.xsession-errors` .
2014-04-07 23:21:25 +02:00
2017-08-16 20:07:08 +02:00
If Awesome does not start or the configuration file is not producing the
2014-04-07 23:21:25 +02:00
desired results the user should examine this file to gain insight into the
problem.
2008-08-29 02:21:58 +02:00
2016-04-04 22:44:49 +02:00
### Debugging tips
You can call `awesome` with `gdb` like this:
2021-03-10 22:50:24 +01:00
```sh
DISPLAY=:2 gdb awesome
```
2016-04-04 22:44:49 +02:00
2019-06-09 19:47:31 +02:00
Then in `gdb` set any arguments and run it:
2016-04-04 22:44:49 +02:00
2021-03-10 22:50:24 +01:00
```
(gdb) set args --replace
(gdb) run
```
2019-01-01 18:43:43 +01:00
2018-11-19 22:01:37 +01:00
## Asking questions
2018-11-19 22:09:46 +01:00
#### IRC
You can join us in the `#awesome` channel on the [OFTC ](http://www.oftc.net/ ) IRC network.
[IRC Webchat ](https://webchat.oftc.net/?channels=awesome )
2018-11-19 22:01:37 +01:00
#### Stack Overflow
You can ask questions on [Stack Overflow ](http://stackoverflow.com/questions/tagged/awesome-wm ).
#### Reddit
We also have a [awesome subreddit ](https://www.reddit.com/r/awesomewm/ ) where you can share your work and ask questions.
2016-04-04 22:44:49 +02:00
2014-05-26 21:26:52 +02:00
## Reporting issues
2014-05-24 22:14:06 +02:00
Please report any issues you may find on [our bugtracker ](https://github.com/awesomeWM/awesome/issues ).
2018-11-19 22:01:37 +01:00
## Contributing code
2014-05-24 22:14:06 +02:00
You can submit pull requests on the [github repository ](https://github.com/awesomeWM/awesome ).
2018-11-19 22:01:37 +01:00
Please read the [contributing guide ](https://github.com/awesomeWM/awesome/blob/master/docs/02-contributing.md ) for any coding, documentation or patch guidelines.
2014-05-26 21:26:52 +02:00
2015-04-26 04:00:50 +02:00
## Status
2019-01-29 11:24:31 +01:00
[![Build Status ](https://travis-ci.com/awesomeWM/awesome.svg?branch=master )](https://travis-ci.com/awesomeWM/awesome)
2015-04-26 04:00:50 +02:00
2015-07-24 02:25:39 +02:00
## Documentation
2018-11-19 22:01:37 +01:00
Online documentation is available [here ](https://awesomewm.org/apidoc/ ).
2015-07-24 02:25:39 +02:00
2014-05-26 21:26:52 +02:00
## License
2019-06-09 22:11:11 +02:00
The project is licensed under GNU General Public License v2 or later.
2014-05-26 21:26:52 +02:00
You can read it online at ([v2](http://www.gnu.org/licenses/gpl-2.0.html)
or [v3 ](http://www.gnu.org/licenses/gpl.html )).