mirror of
https://github.com/QubesOS/qubes-doc.git
synced 2024-12-26 07:49:34 -05:00
a18174dc5e
Thank you to @unman for the initial sentence case pass.
109 lines
3.6 KiB
Markdown
109 lines
3.6 KiB
Markdown
---
|
|
lang: en
|
|
layout: doc
|
|
permalink: /doc/i3/
|
|
redirect_from:
|
|
- /en/doc/i3/
|
|
- /doc/UserDoc/i3/
|
|
- /wiki/UserDoc/i3/
|
|
ref: 183
|
|
title: i3 (window manager)
|
|
---
|
|
|
|
i3 is part of the stable repository (as of Qubes R3.1) and can be installed by
|
|
using the [dom0 update mechanism](/doc/how-to-install-software-in-dom0/). To install the i3
|
|
window manager and the its Qubes specific configuration:
|
|
|
|
```shell_session
|
|
$ sudo qubes-dom0-update i3 i3-settings-qubes
|
|
```
|
|
|
|
The Qubes-specific configuration (package `i3-settings-qubes`) can be installed
|
|
optionally in case you would prefer writing your own configuration (see
|
|
[customization](#customization) section for scripts and configuration).
|
|
|
|
That's it. After logging out, you can select i3 in the login manager.
|
|
|
|
### Customization
|
|
|
|
**Caution:** The following external resources may not have been reviewed by the Qubes team.
|
|
|
|
* [xdg_autostart_script](https://gist.github.com/SietsevanderMolen/7b4cc32ce7b4884513b0a639540e454f)
|
|
* [i3bar_script](https://gist.github.com/SietsevanderMolen/e7f594f209dfaa3596907e427b657e30)
|
|
* [terminal_start_script](https://gist.github.com/SietsevanderMolen/7c6f2b5773dbc0c08e1509e49abd1e96)
|
|
* [i3 config with dmenu-i3-window-jumper](https://github.com/anadahz/qubes-i3-config/blob/master/config)
|
|
* [dmenu script to open a terminal in a chosen VM](https://gist.github.com/dmoerner/65528941dd20b05c98ee79e92d7e0183)
|
|
|
|
## Compilation and installation from source
|
|
|
|
Note that the compilation from source is done in a Fedora based domU (could
|
|
be dispvm). The end result is always an `.rpm` that is copied to dom0 and then
|
|
installed through the package manager.
|
|
|
|
### Getting the code
|
|
|
|
Clone the i3-qubes repository here:
|
|
|
|
```shell_session
|
|
$ git clone https://github.com/QubesOS/qubes-desktop-linux-i3
|
|
```
|
|
|
|
In this case, the most interesting file is probably
|
|
`i3/0001-Show-qubes-domain-in-non-optional-colored-borders.patch` It's the patch
|
|
with changes that are necessary to make i3 work nicely with Qubes OS. The code
|
|
should not need much explanation, it just gets the vmname and label from Qubes
|
|
OS and changes some defaults so the user can't override decisions.
|
|
|
|
If you want to make any changes to the package, this is the time and place to do
|
|
it.
|
|
|
|
### Building
|
|
|
|
You'll need to install the build dependencies, which are listed in
|
|
build-deps.list. You can verify them and then install them with:
|
|
|
|
```shell_session
|
|
$ sudo dnf install -y $(cat build-deps.list)
|
|
```
|
|
|
|
This used to be more complicated, but I finally redid this and use the same
|
|
buildsystem that's used by Qubes OS for XFCE. It's just a Makefile that helps
|
|
you get the sources and start off the build:
|
|
|
|
```shell_session
|
|
$ make get-sources
|
|
$ make verify-sources
|
|
$ make rpms
|
|
```
|
|
|
|
### Installing
|
|
|
|
**Warning**: Manually installing software in dom0 is inherently risky, and the method described here circumvents the usual security mechanisms of qubes-dom0-update.
|
|
|
|
You should now have your i3 rpm in `./rpm/x86_64/i3-4.8-3.fc20.x86_64.rpm`.
|
|
Protip: copying this file to `~/i3.rpm` now will save you some typing in the
|
|
next step.
|
|
|
|
Now in dom0, copy in the rpm:
|
|
|
|
```shell_session
|
|
$ qvm-run --pass-io <src_domain> 'cat </path/to/rpm_in_src_domain>' > i3.rpm
|
|
```
|
|
|
|
Now that the rpm is in dom0 we can proceed with installing it. i3 has some
|
|
dependencies that we can easily install with:
|
|
|
|
```shell_session
|
|
$ sudo qubes-dom0-update perl-AnyEvent-I3 xorg-x11-apps \\
|
|
rxvt-unicode xcb-util-wm perl-JSON-XS xcb-util-cursor \\
|
|
dzen2 dmenu xorg-x11-fonts-misc libev
|
|
```
|
|
|
|
After that you can just install the generated rpm like any other local package:
|
|
|
|
```shell_session
|
|
$ sudo yum localinstall i3.rpm
|
|
```
|
|
|
|
Log out, select i3, then log in again.
|