Awesome: Unterschied zwischen den Versionen
Boenki (Diskussion | Beiträge) |
Dirk (Diskussion | Beiträge) K Verschiebung community -> extra |
||
(5 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
<p align="right">[[Bild:Awesome.png|thumb|300px|Awesome]]</p> | <p align="right">[[Bild:Awesome.png|thumb|300px|Awesome]]</p> | ||
Awesome ist ein in hohem Maße | Awesome ist ein in hohem Maße konfigurierbarer Fenstermanager für [[X]]. Er ist sehr schnell, erweiterbar und steht unter der GPL Lizenz. | ||
In erster Linie ist er für Menschen gedacht welche die volle Kontrolle über ihren Fenstermanager haben wollen und ihn nach ihren Wünschen und Bedürfnissen konfigurieren können. | In erster Linie ist er für Menschen gedacht welche die volle Kontrolle über ihren Fenstermanager haben wollen und ihn nach ihren Wünschen und Bedürfnissen konfigurieren können. | ||
{{Installation|repo= | {{Installation|repo=extra|paket=awesome}} | ||
=== Entwickler Snapshots === | === Entwickler Snapshots === | ||
Zeile 51: | Zeile 51: | ||
=== Hintergrundbild === | === Hintergrundbild === | ||
Das Standardhintergrundbild ist im Theme definiert. Awesome liefert das Programm awsetbg zum Setzen des Hintergrundbilds mit. Dazu wird eines der folgenden Programme benötigt: | Das Standardhintergrundbild ist im Theme definiert. Awesome liefert das Programm awsetbg zum Setzen des Hintergrundbilds mit. Dazu wird eines der folgenden Programme benötigt: | ||
Esetroot habak wmsetbg feh hsetroot chbg display qiv xv xsri xli xsetbg xsetroot | Esetroot habak wmsetbg feh hsetroot chbg display qiv xv xsri xli xsetbg xsetroot | ||
== Tipps und Tricks == | == Tipps und Tricks == | ||
Zeile 60: | Zeile 60: | ||
pacman -S feh | pacman -S feh | ||
=== Zufälliges Hintergrundbild === | |||
Alternative kann man auch das folgene Lua-Script nehmen um Zufällig sein Hintergrundbild zu ändern. | |||
Dazu muss {{paket|lfs}} installiert sein. | |||
pacman -S lua-filesystem # Normales Paket | |||
pacman -S lua51-filesystem # Für Lua 5.1 | |||
Danach kann neben der rc.lua eine Datei wp_changer.lua mit folgendem Code angelegt werden. | |||
{{hc|1=wp_changer.lua|2= | |||
--[[ Wpchange is a script written in lua. | |||
Usage: Initialize this script with it's init() function. | |||
After that you can change the wallpaper everytime you call | |||
change_wp().]] | |||
local math = math | |||
local os = os | |||
local string = string | |||
local coroutine = require("coroutine") | |||
local table = require("table") | |||
local lfs = require("lfs") | |||
-- awesome utils | |||
local screen = screen | |||
local gears = require("gears") | |||
local beautiful = require("beautiful") | |||
local awfule = require("awful") | |||
module("wp_changer") | |||
local files = {} | |||
-- changes the background theme with gears | |||
function change_wp() | |||
math.randomseed( os.time() ) | |||
local state = math.random(#files) | |||
for s = 1, screen.count() do | |||
gears.wallpaper.maximized(files[state], s, true) | |||
end | |||
end | |||
-- Search for wallpapers and store them in a set | |||
-- We do it recursive or plane. | |||
function init(path, recursive) | |||
-- if recursive flag is set we go recursive down the folder path or not if not set | |||
for filename in (recursive and dirtree(path) or lfs.dir(path)) do | |||
if string.match(filename, "%.jpg$") or string.match(filename, "%.png$") then | |||
table.insert(files, filename) | |||
end | |||
end | |||
end | |||
-- recursive iterator | |||
function dirtree(dir) | |||
if string.sub(dir, -1) == "/" then | |||
dir=string.sub(dir, 1, -2) | |||
end | |||
local function yieldtree(dir) | |||
for entry in lfs.dir(dir) do | |||
if entry ~= "." and entry ~= ".." then | |||
entry=dir.."/"..entry | |||
local attr=lfs.attributes(entry) | |||
coroutine.yield(entry,attr) | |||
if attr.mode == "directory" then | |||
yieldtree(entry) | |||
end | |||
end | |||
end | |||
end | |||
return coroutine.wrap(function() yieldtree(dir) end) | |||
end}} | |||
In der rc.lua wird nun folgender Code unter den Library Bindings hinzugefügt. | |||
-- loading wallpaper | |||
local wp = require("wp_changer") | |||
Und an einer beliebigen Stelle kann nun der Timer für den wp_changer aktiviert werden. | |||
--[[ wallpaper changer | |||
Changes the desktop wallpaper after n seconds. | |||
You have to change the wp_path to your wallpaper folder | |||
and choose if seek files recursivly or not. | |||
Set the timeout to your needs. | |||
]] | |||
local wp_path = os.getenv("HOME").."/path/to/your/wallpapers" | |||
wp.init(wp_path, true) | |||
-- get the frist wp on start up | |||
wp.change_wp() | |||
-- startup timer and set it to 20 minutes | |||
local timer = timer({ timeout = (20 * 60) }) | |||
timer:connect_signal("timeout", function() wp.change_wp() end) | |||
timer:start() | |||
=== Expose-Effekt wie in Compiz === | === Expose-Effekt wie in Compiz === | ||
Zeile 128: | Zeile 226: | ||
Die Ausgabe enthält als ersten String die Instance und als zweiten die Class. | Die Ausgabe enthält als ersten String die Instance und als zweiten die Class. | ||
=== Autostart in Awesome === | |||
Da man Lua Dateien sehr einfach laden kann, bietet es sich hier an eine neue Datei | |||
'''autostart.lua''' neben der rc.lua anzulegen. | |||
--autostart.lua | |||
local awful = require("awful") | |||
-- urxvt daemon starten | |||
awful.util.spawn_with_shell("if [ -z `pgrep urxvtd` ]; then urxvtd -f; fi") | |||
-- NetworkManager starten | |||
awful.util.spawn_with_shell("if [ -z `pgrep nm-applet` ]; then nm-applet; fi") | |||
Diese Datei wird nun einfach mit folgenden Zeilen in der rc.lua geladen | |||
local autostart = require("autostart") | |||
require("autostart") | |||
=== Fn-Buttons Lautstärke === | |||
Bei wem die Fn-Buttons für die Lautstärke nicht funktionieren, kann bei dem | |||
Abschnitt Key bindings folgendes hinzufügen. | |||
--{{{ Key bindings | |||
globalkeys = awful.util.table.join( | |||
... | |||
-- Fn Buttons | |||
awful.key({ }, "XF86AudioRaiseVolume", | |||
function () | |||
awful.util.spawn( | |||
"/usr/bin/amixer -q set Master 5\\%+", false) | |||
end), | |||
awful.key({ }, "XF86AudioLowerVolume", | |||
function () | |||
awful.util.spawn( | |||
"/usr/bin/amixer -q set Master 5\\%-", false) | |||
end), | |||
awful.key({ }, "XF86AudioMute", | |||
function () | |||
awful.util.spawn( | |||
"/usr/bin/amixer -q set Master toogle", false) | |||
end), | |||
... | |||
) | |||
Wer die Zeilen am Ende hinzufügt muss das letzte Komma weglassen. | |||
== Weblinks == | == Weblinks == |
Aktuelle Version vom 24. Mai 2023, 18:23 Uhr
Awesome ist ein in hohem Maße konfigurierbarer Fenstermanager für X. Er ist sehr schnell, erweiterbar und steht unter der GPL Lizenz. In erster Linie ist er für Menschen gedacht welche die volle Kontrolle über ihren Fenstermanager haben wollen und ihn nach ihren Wünschen und Bedürfnissen konfigurieren können.
Installation
Das Programm ist als
awesome
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
Entwickler Snapshots
Git-basierte Entwicklungsversionen sind auch im AUR verfügbar.[1]
Erweiterungen
Es befinden sich auch einige nützliche Erweiterungen in den Repositories/im AUR:
vicious - Widgets zum Anzeigen von verschiedener Informationen, vergleichbar mit conky [2]
Die stabile Version von Vicious befindet sich in den Repositories als Paket "vicious", der Entwickler-Snapshot vicious-git im AUR.
shifty-git - dynamische Zuweisen von Programmen zu Tags nach einfachen Regeln [3], nur im AUR
bashets - erlaubt es beliebige Shellskripte in awesome widgets einzubinden. [4], nur im AUR
Starten
Awesome kann mit Hilfe eines Login-Manager gestartet werden oder man trägt folgendes in ein Startskript deiner Wahl ein (z.B. ~/.xinitrc).
exec awesome
Konfiguration
Awesome enthält einige gute Standard-Einstellungen direkt nach der Installation, aber früher oder später wirst du etwas ändern wollen. Awesome wird über folgende Datei konfiguriert:
~/.config/awesome/rc.lua
Falls die Datei nicht vorhanden ist kann man sie mit folgen Befehl erstellen:
mkdir -p ~/.config/awesome/ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
Viele gute Beispiele für eine Konfiguration findet man hier:
Da sich die Syntax der Konfigurationsdatei bei großen Versionssprüngen ändert, muss man diese Datei gegebenenfalls abändern.
Themen
Die Standard-Theme ist unter /usr/share/awesome/themes/default auffindbar .
Kopiere es nach ~/.awesome/themes/default und ändere den theme_path in der rc.lua.
Desweiteren gibt es in der Standardinstallation: sky (helle Farben) und zenburn (kontrastarm - für längere Sitzungen)
Mehr Informationen findest du hier. [5]
Weitere Themen gibt es hier.[6]
Hintergrundbild
Das Standardhintergrundbild ist im Theme definiert. Awesome liefert das Programm awsetbg zum Setzen des Hintergrundbilds mit. Dazu wird eines der folgenden Programme benötigt:
Esetroot habak wmsetbg feh hsetroot chbg display qiv xv xsri xli xsetbg xsetroot
Tipps und Tricks
Diese Sektion kann von jedem erweitert werden der einen guten Tipp oder einen Kniff für Awesome kennt.
feh
Dieses Programm muss installiert sein, damit Awesome das Hintergrundbild in der Theme.rc erkennt, installiere es mit:
pacman -S feh
Zufälliges Hintergrundbild
Alternative kann man auch das folgene Lua-Script nehmen um Zufällig sein Hintergrundbild zu ändern. Dazu muss lfs installiert sein.
pacman -S lua-filesystem # Normales Paket pacman -S lua51-filesystem # Für Lua 5.1
Danach kann neben der rc.lua eine Datei wp_changer.lua mit folgendem Code angelegt werden.
wp_changer.lua
--[[ Wpchange is a script written in lua. Usage: Initialize this script with it's init() function. After that you can change the wallpaper everytime you call change_wp().]] local math = math local os = os local string = string local coroutine = require("coroutine") local table = require("table") local lfs = require("lfs") -- awesome utils local screen = screen local gears = require("gears") local beautiful = require("beautiful") local awfule = require("awful") module("wp_changer") local files = {} -- changes the background theme with gears function change_wp() math.randomseed( os.time() ) local state = math.random(#files) for s = 1, screen.count() do gears.wallpaper.maximized(files[state], s, true) end end -- Search for wallpapers and store them in a set -- We do it recursive or plane. function init(path, recursive) -- if recursive flag is set we go recursive down the folder path or not if not set for filename in (recursive and dirtree(path) or lfs.dir(path)) do if string.match(filename, "%.jpg$") or string.match(filename, "%.png$") then table.insert(files, filename) end end end -- recursive iterator function dirtree(dir) if string.sub(dir, -1) == "/" then dir=string.sub(dir, 1, -2) end local function yieldtree(dir) for entry in lfs.dir(dir) do if entry ~= "." and entry ~= ".." then entry=dir.."/"..entry local attr=lfs.attributes(entry) coroutine.yield(entry,attr) if attr.mode == "directory" then yieldtree(entry) end end end end return coroutine.wrap(function() yieldtree(dir) end) end
In der rc.lua wird nun folgender Code unter den Library Bindings hinzugefügt.
-- loading wallpaper local wp = require("wp_changer")
Und an einer beliebigen Stelle kann nun der Timer für den wp_changer aktiviert werden.
--[[ wallpaper changer Changes the desktop wallpaper after n seconds. You have to change the wp_path to your wallpaper folder and choose if seek files recursivly or not. Set the timeout to your needs. ]] local wp_path = os.getenv("HOME").."/path/to/your/wallpapers" wp.init(wp_path, true) -- get the frist wp on start up wp.change_wp() -- startup timer and set it to 20 minutes local timer = timer({ timeout = (20 * 60) }) timer:connect_signal("timeout", function() wp.change_wp() end) timer:start()
Expose-Effekt wie in Compiz
Aus und Einblenden der Statusbar
Lua code:
mystatusbar.screen = nil
Anschließend fügst du folgendes zu deiner rc.lua in der Tabelle globalkeys hinzu:
awful.key({ modkey, }, "b", function () if mystatusbar[mouse.screen].screen == nil then mystatusbar[mouse.screen].screen = mouse.screen else mystatusbar[mouse.screen].screen = nil end end),
Vergiss nicht mystatusbar (standardmäßig: mywibox) durch den Namen deiner Statusbar zu ersetzten. Bei mehreren Statusbars müssen auch alle berücksichtigt werden.
Transparenz
Awesome unterstütz Transparenz durch xcompmgr. Die neueste git Version von xcompmr gibt es im AUR. Füge das deiner ~/.Xinitrc hinzu:
xcompmgr &
In der rc.lua kann man dann unter signals zum Beispiel die Transparenz für unfokussierte Fenster festlegen:
client.add_signal("focus", function(c) c.border_color = beautiful.border_focus c.opacity = 1 end) client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal c.opacity = 0.7 end)
Alt-Tab ähnliche Funktion (cycle clients)
Diese Funktion rotiert alle sichtbaren Programme durch drücken von Mod-Tab. Das Programm in der Hauptarbeitsfläche bekommt den Focus. Füge Folgendes der rc.lua hinzu:
awful.key({ modkey, }, "Tab", function () local allclients = awful.client.visible(client.focus.screen) for i,v in ipairs(allclients) do allclients[1]:swap(allclients[i]) end client.focus = awful.client.getmaster() awful.client.getmaster():raise() end),
Ausgewählte Programme immer mit einem vordefinierten Tag öffnen
In der rc.lua gibt es eine Sektion, wo man Attribute wie Tag, Floating usw. vordefinieren kann:
-- {{{ Rules awful.rules.rules = { ... ... { rule = { instance = "Navigator" }, properties = { tag = tags[1][2] } }, { rule = { class = "Pidgin" }, properties = { tag = tags[1][3] } }, ...
Instance und Class kann man so herausfinden:
xprop |grep "WM_CLASS(STRING)"
Die Ausgabe enthält als ersten String die Instance und als zweiten die Class.
Autostart in Awesome
Da man Lua Dateien sehr einfach laden kann, bietet es sich hier an eine neue Datei autostart.lua neben der rc.lua anzulegen.
--autostart.lua local awful = require("awful") -- urxvt daemon starten awful.util.spawn_with_shell("if [ -z `pgrep urxvtd` ]; then urxvtd -f; fi") -- NetworkManager starten awful.util.spawn_with_shell("if [ -z `pgrep nm-applet` ]; then nm-applet; fi")
Diese Datei wird nun einfach mit folgenden Zeilen in der rc.lua geladen
local autostart = require("autostart") require("autostart")
Fn-Buttons Lautstärke
Bei wem die Fn-Buttons für die Lautstärke nicht funktionieren, kann bei dem Abschnitt Key bindings folgendes hinzufügen.
--{{{ Key bindings globalkeys = awful.util.table.join( ... -- Fn Buttons awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn( "/usr/bin/amixer -q set Master 5\\%+", false) end), awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn( "/usr/bin/amixer -q set Master 5\\%-", false) end), awful.key({ }, "XF86AudioMute", function () awful.util.spawn( "/usr/bin/amixer -q set Master toogle", false) end), ... )
Wer die Zeilen am Ende hinzufügt muss das letzte Komma weglassen.
Weblinks
- http://wiki.archlinux.org/index.php/Awesome
- http://awesome.naquadah.org/
- http://www.penguinsightings.org/desktop/awesome/
Dieser Artikel (oder Teile davon) steht unter GNU FDL (GNU Freie Dokumentationslizenz) und ist eine Übersetzung aus dem ArchLinux.org Wiki. Am Original-Artikel kann jeder Korrekturen und Ergänzungen vornehmen. Im ArchLinux.org Wiki ist eine Liste der Autoren verfügbar. |