Difference between revisions of "Package:Qtile"

From Funtoo
Jump to navigation Jump to search
m (Most links are dead. Would Python3 still cause errors?)
(Wiped off outdated doc and created "About Qtile" section.)
Line 1: Line 1:
{{Ebuild
{{Ebuild
|Summary=A full-featured, hackable tiling window manager written in Python
|Summary=A pure-Python tiling window manager.
|CatPkg=x11-wm/qtile
|CatPkg=x11-wm/qtile
|Maintainer=radhermit@gentoo.org (Tim Harder)
|Maintainer=pytony
|Homepage=http://www.qtile.org/
|Homepage=http://www.qtile.org/
}}
}}


{{PageNeedsUpdates}}
== About Qtile ==


= Introduction =
Qtile is a highly configurable tiling window manager distributed under MIT license. It handles both '''tiling and floating''' layouts. It is especially a good alternative to [[Package:Awesome (Window Manager)|Awesome]] for those who are more used to [[Python]] than [[Package:Lua|Lua]]. Indeed, Qtile is written and configured entirely in Python. So whether you are Python guru or whether you are learning Python for a few time, Qtile is an ideal choice to get your environment fit ''your'' needs and feel. If you don't know Python, you can still stuck to the default configuration or pick out one of the [https://github.com/qtile/qtile-examples configuration examples] but a basic understanding of Python language is recommended though.
This wiki is a work in progress.
 
Python3 will cause errors. Use '''Python2''' as default or '''at the very least''', pass PYTHON=python2.7 to py2cairo and xpyb before configuring them.
 
"Qtile is a full-featured, hackable tiling window manager written in Python.
 
Qtile is simple, small, and extensible. It's easy to write your own layouts, widgets, and built-in commands.
 
Qtile is written and configured entirely in Python, which means you can leverage the full power and flexibility of the language to make it fit your needs.
 
The Qtile community is active and growing, so there's always someone to lend a hand when you need help.
 
Qtile is free and open-source software, distributed under the permissive MIT license"<ref>[http://qtile.org Qtile]</ref><ref>[http://docs.qtile.org/en/latest/manual/license.html License]</ref>
 
== The Qtile Community ==
 
=== IRC ===
[irc://irc.oftc.net:6667/qtile irc://irc.oftc.net:6667/qtile]
 
=== Mailing List ===
qtile-dev on Google Groups
 
=== Twitter ===
@qtile on Twitter
 
===Forum ===
[kobraz.org.ua/qforum]
 
After on people begin used this forum, we move it to qtile.org
 
== Troubleshooting ==
[https://github.com/qtile/qtile/issues Issues]
 
== Documentation ==
[http://docs.qtile.org/en/latest/index.html# Qtile Documentation]
 
= Installation =
 
== Portage ==
<pre style="color:green"># emerge qtile</pre>
 
== Manual (Github) ==
This section is taken from the documents from Qtile.<ref>[http://docs.qtile.org/en/latest/manual/install/gentoo.html Installation on Gentoo]</ref>
 
=== Dependencies ===
USE flags and keyword changes may have to be made for the packages taken from portage.
 
==== libxcb ====
libxcb can be emerged from portage.
 
<pre style="color:green"># emerge libxcb</pre>
 
==== xpyb ====
xpyb can be emerge from portage. Make sure that you are emerging xpyb-1.3.1
 
<pre style="color:green"># emerge xpyb</pre>
 
==== cairo ====
cairo can be emerged from portage.
 
Have USE flags set to <pre style="color:purple">X glib opengl svg xcb</pre>
 
and then:
 
<pre style="color:green"># emerge cairo</pre>
 
==== pygtk ====
pygtk can be emerge from portage.
 
<pre style="color:green"># emerge pygtk</pre>
 
==== py2cairo ====
<pre style="color:green"># git clone git://git.cairographics.org/git/py2cairo
# cd py2cairo
# ./autogen.sh --enable-xcb
# ./configure --prefix=/path/to/virtualenv
# make
# sudo make install</pre>
 
As an alternative to virtualenv, you can
<pre style="color:green"># ./configure --prefix=/usr</pre>
But the virtualenv is the recommended option in installation.
 
==== qtile ====
<pre style="color:green"># git clone git://github.com/qtile/qtile
# cd qtile
# sudo python setup.py install --record files_uninstall.txt</pre>
 
= Setup =
'''Copy''' either a config from the examples directory in the cloned qtile '''(including a default config)''', a config you have found elsewhere, or create your own config.
<pre style="color:green"># cp /path/to/cloned-qtile/examples/config/cortesi-config.py ~/.config/qtile/config.py
# cp /path/to/cloned-qtile/examples/config/dgroups.py ~/.config/qtile/config.py
# cp /path/to/cloned-qtile/examples/config/roger-config.py ~/.config/qtile/config.py
# cp /path/to/cloned-qtile/examples/config/tailhook-config.py ~/.config/qtile/config.py</pre>
 
My config is [https://github.com/akiress/dotfiles/blob/master/qtile/config.py config.py]
 
The config I have based mine off of is [https://github.com/dmpayton/dotfiles/blob/master/qtile/config.py dmpayton's config.py]
 
= Testing Qtile Installation =
You can test your installation of Qtile while within another WM instance using Xephyr.
 
Examples:
<pre style="color:green"># Xephyr :1 -screen 800x600 -a -v -noreset
# DISPLAY=:1
# /path/to/qtile/qtile</pre>
or using built in code:<ref>[[ https: // groups.google.com/group/qtile-dev/browse_thread/thread/26191253a8190568 qtile-dev Google Group ]]</ref>
<pre style="color:green"># echo "exec qtile" > .start_qtile ; xinit .start_qtile -- :1</pre>
 
For further information, see the Documentation section.
 
== dmenu ==
Qtile uses dmenu as the application launcher.
<pre style="color:green"># emerge dmenu</pre>
You can run dmenu from a keybind in the config.py.
 
== xinitrc ==
An example of preparing Qtile to start with a startup-session script for autostarting apps.
My ~/.xinitrc
<pre style="color:purple">#!/bin/zsh
xrdb -merge ~/.Xresources
xcompmgr &
 
if [[ $1 == "i3" ]]; then
    exec ck-launch-session dbus-launch --sh-syntax --exit-with-session i3 -V -d all > ~/.i3/i3log-$(date +'%F-%k-%M-%S') 2>&1
elif [[ $1 == "razor" ]]; then
    exec ck-launch-session dbus-launch startrazor
elif [[ $1 == "awesome" ]]; then
    exec ck-launch-session dbus-launch awesome
elif [[ $1 == "qtile" ]]; then
    exec ck-launch-session dbus-launch ~/.qtile-session
else
    echo "Choose a window manager"
fi</pre>
My ~/.qtile-session
<pre style="color:purple">conky -c ~/.conky/conkyrc_grey &
sh ~/.fehbg &
dropbox &</pre>
 
== X and RandR ==
'''NOTE: RandR and Xinerama do not play together.  Use one or the other.'''
 
I use an AMD HD 6870 with 3 monitors (2 DVI and 1 with an AMD validated Mini DisplayPort™ to DVI dongle).
 
Install xrandr:
<pre style="color:green"># emerge x11-apps/xrandr</pre>
and if you want a GUI with xrandr:
<pre style="color:green"># emerge x11-misc/arandr</pre>
 
If you do not have X configured yet, follow the link on the [http://en.gentoo-wiki.com/wiki/X.Org Gentoo Wiki]
 
My xorg.conf.d folder for example: [https://github.com/akiress/dotfiles/blob/master/etc/X11/xorg.conf.d/30-screen.conf 30-screen.conf]
 
Since the names of the monitors are already known in xrandr, I just use those names in my 30-screen.conf configuration. It doesn't matter what you use in your X configuration however.
 
Once you have X configured however you like, start qtile with either:
<pre style="color:green"># startx</pre>
or, in a case similar to mine,
<pre style="color:green"># xinit qtile</pre>
 
== Starting with CDM ==
Another good tool for starting qtile is '''CDM''' (short for Console Display Manager). To make it work, just merge cdm
<pre style="color:green"># emerge -avt cdm</pre>
and add it to autostart with
<pre style="color:green"># cp /usr/share/cdm/zzz-cdm-profile.sh /etc/profile.d/zzz-cdm-profile.sh</pre>
Now add to /etc/X11/cdm/cdmrc the following lines:
<pre style="color:purple">binlist=(
    "/usr/bin/xinit ${HOME}/.start_qtile --:0"
    "/bin/bash --login"
    "/bin/zsh"
)
namelist=(qtile "Console bash" "Console zsh")
flaglist=(C C C)
consolekit=no</pre>
and check that ${HOME}/.start_qtile contains just the following
<pre style="color:purple">exec qtile</pre>
 
= Notes =
<references/>
 
= Resources =
[https://github.com/qtile/qtile Qtile on Github]
 
[https://github.com/qtile/qtile/tree/master/examples/config Sample Configurations]
 
[http://docs.qtile.org/en/latest/manual/hacking.html Hacking Qtile]


{{EbuildFooter}}
{{EbuildFooter}}


[[Category:Desktop]]
[[Category:Desktop]]

Revision as of 18:11, May 21, 2015

Qtile

   Tip

We welcome improvements to this page. To edit this page, Create a Funtoo account. Then log in and then click here to edit this page. See our editing guidelines to becoming a wiki-editing pro.


About Qtile

Qtile is a highly configurable tiling window manager distributed under MIT license. It handles both tiling and floating layouts. It is especially a good alternative to Awesome for those who are more used to Python than Lua. Indeed, Qtile is written and configured entirely in Python. So whether you are Python guru or whether you are learning Python for a few time, Qtile is an ideal choice to get your environment fit your needs and feel. If you don't know Python, you can still stuck to the default configuration or pick out one of the configuration examples but a basic understanding of Python language is recommended though.