Awesome

Je zde nastavení a konfigurace dlaždicového správce oken Awesome, je možné stáhnout mnou vytvořené motivy a témata pro AwesomeWM, nahlédnout do osobitých konfigurací a nastavení prvků vzhledu.

Popis Awesome

Awesome je správce oken pro X Server. Spravuje okna v rozdílných rozloženích jako dlaždice a plovoucí obsah. Každé rozložení může být dynamicky změněno a může se tak optimalizovat prostředí pro aplikace k zahájení okamžité činnosti.

V dlaždicovém rozložení jsou okna organizována v hlavním a stohovatelném prostoru. Hlavní prostor obsahuje okna, která vyžadují nejvíce pozornosti, zatímco stohovatelný prostor chytá všechna ostatní okna. V plovoucím rozložení lze libovolně zvětšovat, roztahovat a rozmisťovat okna. Dialogová okna jsou vždy organizována jako plovoucí. Spirálové a ubývající rozložení jsou speciální případy dlaždicového rozložení.

Okna jsou seskupena podle cedulek, každé okno může být označeno s jednou nebo více cedulkami. Vybráním některých cedulek se zobrazí pouze okna s těmito cedulkami.

Je velmi rychlý a je založen na Lua kódu. Dovede automaticky organizovat okna na ploše podle předvoleb a uživatelem definovaných kritérií. Funguje na principu hlavního okna, které vyžaduje nejvíce pozornosti a stohování ostatních oken. Nastavení se provádí editací textového souboru, je přizpůsobitelný ze všech směrů. Více informací najdete na oficiálních stránkách Awesome.

Screenshot plochy

Instalace

Alpine Linux apk add awesome
Arch Linux pacman -S awesome
CentOS yum install awesome
Debian/Ubuntu apt get install awesome
FreeBSD pkg install awesome
OpenSUSE zypper in awesome

Možnosti příkazu awesome

Konfigurační soubory

Nastavení Awesome se provádí změnou konfiguračního souboru rc.lua, který se pro uživatele nachází ve složce .config/awesome v domovském adresáři. Systémové nastavení se nachází v /etc/xdg/awesome/.

~/.config/awesome/rc.lua
/etc/xdg/awesome/rc.lua

Témata

Témata se nachází v adresáři ~/.config/awesome/themes, v konfiguračním souboru jej například volám pomocí:

beautiful.init("~/.config/awesome/themes/mv/theme.lua")

Dekorace okna

Líbí se mi horní lišta okna obsahující název a základní ovládací prvky. Pro její aktivaci musí konfigurační soubor obsahovat v části „Rules“ následující kód:

{ rule_any = {type = { "normal", "dialog" }
  }, properties = { titlebars_enabled = true } 
},

Jestliže nastavíme hodnotu z true na false, budou okna bez dekorace.

Zaoblené okraje klientů

Pro zaoblené rohy oken je potřeba trochu upravit konfigurační soubor. Okna jsou takto hezčí(modernější).

client.connect_signal("manage", function (c)
    c.shape = function(cr,w,h)
        gears.shape.rounded_rect(cr,w,h,10)
    end
end)
Zaoblené okraje klienta okna

Tagy

Příklad vytvoření tagů "1" a "2" s ikonami a definováním několika vlastností.

icon Ikona tagu
layout Výchozí layout pro daný tag
master_fill_policy politika vyplnění tagu
master_width_factor velikost master klienta
master_count počet master klientů
column_count počet sloupců
gap okraje všude
gap_single_client okraje samotného klienta
selected zda je tag vybraný či nikoli
awful.tag.add("1", {
    icon               = "/opt/grafika/ikony/terminal.png",
    layout             = awful.layout.suit.tile,
    master_fill_policy = "master_width_factor",
    master_width_factor = 0.55,
    master_count	   = 1,
    column_count	   = 1,
    gap                = 10,
    gap_single_client  = true,
    screen             = s,
    -- selected           = true,
})
awful.tag.add("2", {
    icon               = "/opt/grafika/ikony/soubory.png",
    layout             = awful.layout.suit.tile,
    master_fill_policy = "master_width_factor",
    master_width_factor = 0.55,
    gap_single_client  = true,
    screen             = s,
})
Tagy a jejich seznam

Úprava taglistu

Seznam tagů lze upravit, je možné udělat nastavení pro zaoblené tlačítka tagů a nebo také hexagonové(šestihranné).

Hexagonový styl tagů:

Hexagonový styl
-- Create a taglist widget
s.mytaglist = awful.widget.taglist {
		screen  = s,
		filter  = awful.widget.taglist.filter.all, 
		buttons = taglist_buttons,
		style    = {
		shape  = gears.shape.hexagon,
	},
		layout   = {
		spacing = 10,
		layout  = wibox.layout.flex.horizontal
	},
	-- Notice that there is *NO* wibox.wibox prefix, it is a template,
	-- not a widget instance.
	widget_template = {
		{
			{
				{
					{
						id     = 'icon_role',
						widget = wibox.widget.imagebox,
					},
					widget  = wibox.container.margin,
					left  = 5,
					right = 5,
				},
				{
					id     = 'text_role',
					widget = wibox.widget.textbox 
				},
				layout = wibox.layout.fixed.horizontal,
			},
			left  = 10,
			right = 10,
			widget = wibox.container.margin
		},
		id     = 'background_role',
		widget = wibox.container.background,
	},
}

Hexagonový bez ikon:

s.mytaglist = awful.widget.taglist {
		screen  = s,
		filter  = awful.widget.taglist.filter.all, 
		buttons = taglist_buttons,
		style    = {
		shape  = gears.shape.hexagon,
	},
	-- Notice that there is *NO* wibox.wibox prefix, it is a template,
	-- not a widget instance.
	widget_template = {
		{
			{
				{
					widget  = wibox.container.margin,
					left  = 5,
					right = 5,
				},
				{
					id     = 'text_role',
					widget = wibox.widget.textbox 
				},
				layout = wibox.layout.fixed.horizontal,
			},
			left  = 10,
			right = 10,
			widget = wibox.container.margin
		},
		id     = 'background_role',
		widget = wibox.container.background,
	},
}

Kulatý styl tagů:

Kulatý styl tagů
-- Create a taglist widget
s.mytaglist = awful.widget.taglist {
		screen  = s,
		filter  = awful.widget.taglist.filter.all,
		buttons = taglist_buttons,
	style    = {
		shape  = gears.shape.rounded_bar,
	},
	layout   = {
		spacing = 10,
		layout  = wibox.layout.flex.horizontal
	},
	-- Notice that there is *NO* wibox.wibox prefix, it is a template,
	-- not a widget instance.
	widget_template = {
		{
			{
				{
					{
						id     = 'icon_role',
						widget = wibox.widget.imagebox,
					},
					widget  = wibox.container.margin,
					left  = 5,
					right = 5,
				},
				{
					id     = 'text_role',
					widget = wibox.widget.textbox,
				},
				layout = wibox.layout.fixed.horizontal,
			},
			left  = 10,
			right = 10,
			widget = wibox.container.margin
		},
		id     = 'background_role',
		widget = wibox.container.background,
	},
}

Powerline

Powerline styl
s.mytaglist = awful.widget.taglist {
		screen  = s,
		filter  = awful.widget.taglist.filter.all, 
		buttons = taglist_buttons,
		style    = {
		shape  = gears.shape.powerline,
	},
	-- Notice that there is *NO* wibox.wibox prefix, it is a template,
	-- not a widget instance.
	widget_template = {
		{
			{
				{
					widget  = wibox.container.margin,
					left  = 5,
					right = 5,
				},
				{
					id     = 'text_role',
					widget = wibox.widget.textbox 
				},
				layout = wibox.layout.fixed.horizontal,
			},
			left  = 10,
			right = 10,
			widget = wibox.container.margin
		},
		id     = 'background_role',
		widget = wibox.container.background,
	},
}

Úprava tasklistu

Zde platí to samé, jako pro tagy, můžeme upravit vzhled tlačítek otevřených oken. Můžeme změnit jejich podobu, formu atd.

Nastavení pro hexagonový styl v tasklistu:

Hexagonový styl tasklistu
-- Create a tasklist widget
s.mytasklist = awful.widget.tasklist {
	screen   = s,
	filter   = awful.widget.tasklist.filter.currenttags,
	buttons  = tasklist_buttons,
	style    = {
		shape = gears.shape.hexagon,
		shape_border_width = 2,
		shape_border_color = beautiful.bg_focus,
	},
	layout   = {
		spacing = 20,
		spacing_widget = {
			{
				forced_width = 5,
				shape        = gears.shape.circle,
				widget       = wibox.widget.separator
			},
			valign = 'center',
			halign = 'center',
			widget = wibox.container.place,
		},
		layout  = wibox.layout.flex.horizontal
	},
	-- Notice that there is *NO* wibox.wibox prefix, it is a template,
	-- not a widget instance.
	widget_template = {
		{
			{
				{
					{
						id     = 'icon_role',
						widget = wibox.widget.imagebox,
					},
					margins = 2,
					widget  = wibox.container.margin,
				},
				{
					id     = 'text_role',
					widget = wibox.widget.textbox,
				},
				layout = wibox.layout.fixed.horizontal,
			},
			left  = 10,
			right = 10,
			widget = wibox.container.margin
		},
		id     = 'background_role',
		widget = wibox.container.background,
	},
}

Kulatý styl tasklistu:

Kulatý styl tasklistu
-- Create a tasklist widget
s.mytasklist = awful.widget.tasklist {
	screen   = s,
	filter   = awful.widget.tasklist.filter.currenttags,
	buttons  = tasklist_buttons,
	style    = {
		shape_border_width = 1,
		shape_border_color = '#777777',
		shape  = gears.shape.rounded_bar,
	},
	layout   = {
		spacing = 20,
		spacing_widget = {
			{
				forced_width = 5,
				shape        = gears.shape.circle,
				widget       = wibox.widget.separator
			},
			valign = 'center',
			halign = 'center',
			widget = wibox.container.place,
		},
		layout  = wibox.layout.flex.horizontal
	},
	-- Notice that there is *NO* wibox.wibox prefix, it is a template,
	-- not a widget instance.
	widget_template = {
		{
			{
				{
					{
						id     = 'icon_role',
						widget = wibox.widget.imagebox,
					},
					margins = 2,
					widget  = wibox.container.margin,
				},
				{
					id     = 'text_role',
					widget = wibox.widget.textbox,
				},
				layout = wibox.layout.fixed.horizontal,
			},
			left  = 10,
			right = 10,
			widget = wibox.container.margin
		},
		id     = 'background_role',
		widget = wibox.container.background,
	},
}

Layouty

Zakomentované layouty pomocí znaku -- nebudou použity. Pokud tomu není dáno jinak, tak první layout je defaultní a řádky odpovídají skutečnému řazení.

awful.layout.suit.spiral.dwindle,
awful.layout.suit.floating,
-- awful.layout.suit.fair,    
-- awful.layout.suit.tile.bottom,
awful.layout.suit.tile,
--awful.layout.suit.tile.left,
--awful.layout.suit.tile.top,
--awful.layout.suit.fair.horizontal,
--awful.layout.suit.spiral,
awful.layout.suit.max,
-- awful.layout.suit.max.fullscreen,
--awful.layout.suit.magnifier,
-- awful.layout.suit.corner.nw,
-- awful.layout.suit.corner.ne,
-- awful.layout.suit.corner.sw,
-- awful.layout.suit.corner.se,

Pravidla programů

Chování oken lze nastavit v hlavním konfiguračním souboru a nachází se ke konci v sekci „Rules“. Lze nastavit parametry okna, chování, tag, obrazovku a další vlastnosti.

Pro nastavení chování okna programu Firefox používám níže uvedené pravidlo, znamená otevření programu na monitoru 2 a záložce WEB.

{ rule = { class = "Firefox" }, 
  properties = { screen = 2, tag = "WEB" } },

Další příklad zobrazení klientů, automatického přepnutí na daný tag, pokud se klient spustí:

-- TAG 1
 { rule_any = { class = { "URxvt", "Xfce4-terminal", "XTerm" } },
   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
   properties = { tag = "1", switchtotag = true }
 },
-- TAG 2
 { rule_any = { class = { "Pcmanfm", "Thunar", "Xarchiver" } },
   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
   properties = { tag = "2", switchtotag = true }
 },
-- TAG 3
 { rule_any = { class = { "Dillo", "firefox", "Firefox-esr", "Chromium", "Links", 
 "navigator", "Netsurf-gtk3", "Surf", "transmission-gtk", "Transmission-gtk", "Opera", 
 "Putty", "Uzbl" } },
   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
   properties = { tag = "3", switchtotag = true }
 },
-- TAG 4
 { rule_any = { class = { "Claws-mail", "libreoffice", "Orage", "Thunderbird" } },
   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
   properties = { tag = "4", switchtotag = true }
 },
-- TAG 5
 { rule_any = { class = { "Audacious", "Audacity", "Ciano", "ClipGrab", "MPlayer", 
 "Soundkonverter", "Soundconverter", "Vlc", "vlc", "Xfburn" } },
   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
   properties = { tag = "5", switchtotag = true }
 },
-- TAG 6
 { rule_any = { class = { "Electron", "Geany", "Leafpad", "Mousepad" } },
   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
   properties = { tag = "6", switchtotag = true }
 },
-- TAG 7
 { rule_any = { class = { "Birdfont", "Blender", "Gimp", "Gpicview", 
  "Inkscape" } },
   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
   properties = { tag = "7", switchtotag = true }
 },
-- TAG 8
 { rule_any = { class = { "balena-etcher", "Gucharmap", "Gnome-calculator", "GParted", "hp-toolbox", "Imager", "Lxtask", "Libfm-pref-apps", "Lxappearance", 
 "Xfce4-taskmanager", "Nvidia-settings", "Org.gnome.Characters", "VirtualBox Manager" } },
   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
   properties = { tag = "8", switchtotag = true }
 },
-- TAG 9
 { rule_any = { class = { "dosbox", "RetroArch", "Steam", "Wine" } },
   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
   properties = { tag = "9", switchtotag = true }
 },

Plovoucí okna vždy navrchu

Při mé práci s okny je důležité nastavit plovoucí okna vždy navrch. Zabráním tak ztrátě povědomí o oknu, které se zobrazuje pod dlaždicově seřazenými okny.

client.connect_signal("property::floating", function(c)
    if c.floating then
        c.ontop = true
    else
        c.ontop = false
    end
end)

Vycentrování nových plovoucích oken

Pro všechny plovoucí okna, která se otevřou je příhodné umístění uprostřed obrazovky. Toho docílím přídáním property placement = awful.placement.centered.

properties = { floating = true,  placement = awful.placement.centered }

Oddělovače pro widgety

Může být užitečné pro přehlednost widgetů je oddělit různými oddělovači v podobě mezer a znaků.

spacer = wibox.widget.textbox()
separator = wibox.widget.textbox()
spacer:set_text(" ")
separator:set_text(" | ")

Stačí pak jen volat požadované v nastavení wiboxu např:

s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ -- Left widgets
	layout = wibox.layout.fixed.horizontal,
	mylauncher,
	separator,
	s.mytaglist,
	separator,
	s.mypromptbox,
},
Oddělovač

Autostart aplikací po startu

Pro start aplikací xterm a pcmanfm s režimem správy plochy do souboru rc.lua stačí na konec zadat:

do 
   local cmds = 
   { 
      "pcmanfm --desktop", 
      "xterm" 
   } 
   for _,i in pairs(cmds) do 
      awful.util.spawn(i) 
   end 
end

A nebo:

-- AUTOMATICKY SPUSTENE
awful.spawn.with_shell("volumeicon")

Freedesktop menu - počeštění/lokalizace

Řešení je přepis jednotlivých definovaných názvů k zobrazení, soubor obsahující texty jak pojmenovat jednotlivé kategorie je:

/usr/share/awesome/lib/menubar/menu_gen.lua

Po editaci může vypadat obsah následovně:

menu_gen.all_categories = {
    multimedia = { app_type = "AudioVideo", name = "Multimédia",
                     icon_name = "applications-multimedia", use = true },
    development = { app_type = "Development", name = "Vývoj",
                    icon_name = "applications-development", use = true },
    education = { app_type = "Education", name = "Výuka",
                  icon_name = "applications-science", use = true },
    games = { app_type = "Game", name = "Hry",
              icon_name = "applications-games", use = true },
    graphics = { app_type = "Graphics", name = "Grafika",
                 icon_name = "applications-graphics", use = true },
    office = { app_type = "Office", name = "Kancelář",
               icon_name = "applications-office", use = true },
    internet = { app_type = "Network", name = "Internet",
                icon_name = "applications-internet", use = true },
    science = { app_type = "Science", name="Věda",
                icon_name = "applications-science", use = true },
    settings = { app_type = "Settings", name = "Nastavení",
                 icon_name = "applications-utilities", use = true },
    tools = { app_type = "System", name = "Systémové nástroje",
               icon_name = "applications-system", use = true },
    utility = { app_type = "Utility", name = "Nástroje",
                icon_name = "applications-accessories", use = true }
}

Awesome MV-cyan

Téma a nastavení pro Awesome s hlavní barvou cyan - #00faff.

Verze Awesome 4.3
OS Arch Linux a jiné
Popis Kompletní konfigurace s tématem
Použitý SW
  • amixer
  • conky
  • nano
  • rxvt-unicode
  • xcompmgr
addons Freedesktop, calendar, volumebar
Soubory

Pozadí:

rc.lua
-- If LuaRocks is installed, make sure that packages installed through it are
-- found (e.g. lgi). If LuaRocks is not installed, do nothing.
pcall(require, "luarocks.loader")

-- Standard awesome library
local gears = require("gears")
local awful = require("awful")
require("awful.autofocus")
-- Widget and layout library
local wibox = require("wibox")
-- Theme handling library
local beautiful = require("beautiful")
local vicious = require("vicious")
-- Notification library
local naughty = require("naughty")
local menubar = require("menubar")
local hotkeys_popup = require("awful.hotkeys_popup")
-- Menu
local freedesktop = require("freedesktop")
-- Extra widgets
local volumebar_widget = require("widgety.volumebar")
local calendar = require("widgety.calendar")

-- Enable hotkeys help widget for VIM and other apps
-- when client with a matching name is opened:
require("awful.hotkeys_popup.keys")

-- {{{ Error handling
-- Check if awesome encountered an error during startup and fell back to
-- another config (This code will only ever execute for the fallback config)
if awesome.startup_errors then
    naughty.notify({ preset = naughty.config.presets.critical,
                     title = "Oops, there were errors during startup!",
                     text = awesome.startup_errors })
end

-- Handle runtime errors after startup
do
    local in_error = false
    awesome.connect_signal("debug::error", function (err)
        -- Make sure we don't go into an endless error loop
        if in_error then return end
        in_error = true

        naughty.notify({ preset = naughty.config.presets.critical,
                         title = "Oops, an error happened!",
                         text = tostring(err) })
        in_error = false
    end)
end
-- }}}

-- {{{ Variable definitions
-- Themes define colours, icons, font and wallpapers.
beautiful.init("~/.config/awesome/themes/mv-cyan/theme.lua")
os.setlocale(os.getenv("LANG"))

-- This is used later as the default terminal and editor to run.
terminal = "urxvt"
editor = os.getenv("EDITOR") or "nano"
editor_cmd = terminal .. " -e " .. editor

-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"

-- Table of layouts to cover with awful.layout.inc, order matters.
awful.layout.layouts = {
    awful.layout.suit.spiral.dwindle,
    awful.layout.suit.floating,
    -- awful.layout.suit.fair,    
    -- awful.layout.suit.tile.bottom,
    awful.layout.suit.tile,
    --awful.layout.suit.tile.left,
    --awful.layout.suit.tile.top,
    --awful.layout.suit.fair.horizontal,
    --awful.layout.suit.spiral,
    awful.layout.suit.max,
    -- awful.layout.suit.max.fullscreen,
    --awful.layout.suit.magnifier,
    -- awful.layout.suit.corner.nw,
    -- awful.layout.suit.corner.ne,
    -- awful.layout.suit.corner.sw,
    -- awful.layout.suit.corner.se,
}
-- }}}

-- {{{ Menu
-- Create a launcher widget and a main menu
myawesomemenu = {
    { "hotkeys", function() return false, hotkeys_popup.show_help end },
    { "manual", terminal .. " -e man awesome" },
    { "úprava nastavení", editor_cmd .. " ~/.config/awesome/rc.lua", },
    { "úprava tématu", editor_cmd .. " ~/.config/awesome/themes/mv-cyan/theme.lua", },
    { "restart", awesome.restart },
    { "quit", function() awesome.quit() end }
}

pcmenu = {
    { "Restart za 1h", "shutdown -r +60", },
    { "Restart PC", "reboot", },
    { " ", },
    { "Vypnout za 1h", "sudo shutdown -h +60", },    
    { "Vypnout PC", "poweroff", },
}

bsdgames = {
   { "adventure", terminal .. " -e adventure", },
   { "atc", terminal .. " -e atc", },
   { "battlestar", terminal .. " -e battlestar", },
   { "caesar", terminal .. " -e caesar", },
   { "cribbage", terminal .. " -e cribbage", },
   { "dab", terminal .. " -e dab", },
   { "drop4", terminal .. " -e drop4", },
   { "gofish", terminal .. " -e gofish", },
   { "gomoku", terminal .. " -e gomoku", },
   { "hangman", terminal .. " -e hangman", },
   { "klondike", terminal .. " -e klondike", },
   { "robots", terminal .. " -e robots", },
   { "sail", terminal .. " -e sail", },
   { "snake", terminal .. " -e snake", },
   { "spirhunt", terminal .. " -e spirhunt", },
   { "worm", terminal .. " -e worm /", },
   { "wump", terminal .. " -e wump /", },
}

terminalopen = {
   { "bsd-games", bsdgames },
   { "Alsamixer", terminal .. " -e alsamixer", },
   { "Calcurse-online", terminal .. " -e calcurse-online", },
   { "CMatrix", terminal .. " -e cmatrix", },
   { "Cmus", terminal .. " -e cmus", },
   { "gtop", terminal .. " -e gtop", },
   { "Htop", terminal .. " -e htop", },
   { "Links", terminal .. " -e links", },
   { "MC", terminal .. " -e mc", },
   { "NCDU", terminal .. " -e ncdu /", },
   { "pcurses", terminal .. " -e pcurses", },
   { "screenfetch", terminal .. " -hold -e screenfetch", },
   { "xev - event test", terminal .. " -e xev", },
   { "xkill - zabití okna", "xkill", },
   { "xprop - info o okně", terminal .. " -hold -e xprop", },
   { "xwininfo - info o okně", terminal .. " -hold -e xwininfo", },
}

terminalcommands = {
   { "e4defrag - defragmentace", terminal .. " -e sudo e4defrag /", },
   { "journalctl -xb", terminal .. " -e journalctl -xb", },
   { "Pacman -Q", terminal .. " -hold -e pacman -Q", },
   { "Pacman -Syyu", terminal .. " -hold -e sudo pacman -Syyu", },
   { "Přenos skriptů", terminal .. " -e skripty-prenos_do_bin", },
   { "Sync", terminal .. " -e sync", },
   { "Záloha nastavení", terminal .. " -hold -e zaloha-config", },
   { "Záloha kompletní", terminal .. " -hold -e zaloha-komplet", },
}

mymainmenu = freedesktop.menu.build({
    before = {
        { "Terminál", terminal, },
		{ "Soubory", "pcmanfm", },
		{ "Web", "firefox", },
        { "  ",  },
    },
    after = {
		{ "   ", },
		{ "CLI", terminalopen },
		{ "Příkazy", terminalcommands },
		{ " ",  },
        { "Awesome", myawesomemenu, beautiful.awesome_icon },
        { "PC", pcmenu, "/opt/grafika/ikony/pc.xpm" }
    }
})

mylauncher = awful.widget.launcher({ image = beautiful.menu_icon,
                                     menu = mymainmenu })

-- Menubar configuration
menubar.utils.terminal = terminal -- Set the terminal for applications that require it
-- }}}

-- Keyboard map indicator and switcher
mykeyboardlayout = awful.widget.keyboardlayout()

-- {{{ Wibar
-- Create a textclock widget
mytextclock = wibox.widget.textclock()

-- prida widget calendar
	calendar({}):attach(mytextclock)

-- Oddelovac
spacer = wibox.widget.textbox()
separator = wibox.widget.textbox()
spacer:set_text(" ")
separator:set_text(" | ")

-- Texty
vol = wibox.widget.textbox()
vol:set_text("Vol ")
ram = wibox.widget.textbox()
ram:set_text("RAM ")
fs = wibox.widget.textbox()
fs:set_text("FS ")

-- Create a wibox for each screen and add it
local taglist_buttons = gears.table.join(
                    awful.button({ }, 1, function(t) t:view_only() end),
                    awful.button({ modkey }, 1, function(t)
                                              if client.focus then
                                                  client.focus:move_to_tag(t)
                                              end
                                          end),
                    awful.button({ }, 3, awful.tag.viewtoggle),
                    awful.button({ modkey }, 3, function(t)
                                              if client.focus then
                                                  client.focus:toggle_tag(t)
                                              end
                                          end),
					-- Select all tags
                    awful.button({ }, 2,                     function ()
						local tags = awful.screen.focused().tags
							for i = 1, 9 do
                            tags[i].selected = true
                            end
                        end),
                    awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end),
                    awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end)
                )

local tasklist_buttons = gears.table.join(
                     awful.button({ }, 1, function (c)
                                              if c == client.focus then
                                                  c.minimized = true
                                              else
                                                  c:emit_signal(
                                                      "request::activate",
                                                      "tasklist",
                                                      {raise = true}
                                                  )
                                              end
                                          end),
                     awful.button({ }, 3, function()
                                              awful.menu.client_list({ theme = { width = 250 } })
                                          end),
                     awful.button({ }, 4, function ()
                                              awful.client.focus.byidx(1)
                                          end),
                     awful.button({ }, 5, function ()
                                              awful.client.focus.byidx(-1)
                                          end))

local function set_wallpaper(s)
    -- Wallpaper
    if beautiful.wallpaper then
        local wallpaper = beautiful.wallpaper
        -- If wallpaper is a function, call it with the screen
        if type(wallpaper) == "function" then
            wallpaper = wallpaper(s)
        end
        gears.wallpaper.maximized(wallpaper, s, true)
    end
end

-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
screen.connect_signal("property::geometry", set_wallpaper)

awful.screen.connect_for_each_screen(function(s)
    -- Wallpaper
    set_wallpaper(s)


-- TAGY ============
awful.tag.add("1", {
    icon               = "/opt/grafika/ikony/terminal.png",
    layout             = awful.layout.suit.tile,
    master_fill_policy = "master_width_factor",
    master_width_factor = 0.55,
    master_count	   = 1,
    column_count	   = 1,
    gap                = 10,
    gap_single_client  = true,
    screen             = s,
    -- selected           = true,
})
awful.tag.add("2", {
    icon               = "/opt/grafika/ikony/soubory.png",
    layout             = awful.layout.suit.tile,
    master_fill_policy = "master_width_factor",
    master_width_factor = 0.55,
    gap_single_client  = true,
    screen             = s,
})
awful.tag.add("3", {
    icon               = "/opt/grafika/ikony/internet.png",
    layout             = awful.layout.suit.tile,
    master_fill_policy = "master_width_factor",
    master_width_factor = 0.55,
    gap_single_client  = true,
    screen             = s,
})
awful.tag.add("4", {
    icon               = "/opt/grafika/ikony/clip.xpm",
    layout             = awful.layout.suit.tile,
    master_fill_policy = "master_width_factor",
    master_width_factor = 0.55,
    gap_single_client  = true,
    screen             = s,
})
awful.tag.add("5", {
    icon               = "/opt/grafika/ikony/media.png",
    layout             = awful.layout.suit.tile,
    master_fill_policy = "master_width_factor",
    master_width_factor = 0.55,
    gap_single_client  = true,
    screen             = s,
})
awful.tag.add("6", {
    icon               = "/opt/grafika/ikony/dev.png",
    layout             = awful.layout.suit.tile,
    master_fill_policy = "master_width_factor",
    master_width_factor = 0.55,
    gap_single_client  = true,
    screen             = s,
})
awful.tag.add("7", {
    icon               = "/opt/grafika/ikony/grafika.png",
    layout             = awful.layout.suit.floating,
    gap_single_client  = true,
    screen             = s,
})
awful.tag.add("8", {
    icon               = "/opt/grafika/ikony/utility.png",
    layout             = awful.layout.suit.tile,
    master_fill_policy = "master_width_factor",
    master_width_factor = 0.55,
    gap_single_client  = true,
    screen             = s,
})
awful.tag.add("9", {
    icon               = "/opt/grafika/ikony/hry.png",
    layout             = awful.layout.suit.floating,
    gap_single_client  = true,
    screen             = s,
})

    -- Create a promptbox for each screen
    s.mypromptbox = awful.widget.prompt()
    -- Create an imagebox widget which will contain an icon indicating which layout we're using.
    -- We need one layoutbox per screen.
    s.mylayoutbox = awful.widget.layoutbox(s)
    s.mylayoutbox:buttons(gears.table.join(
                           awful.button({ }, 1, function () awful.layout.inc( 1) end),
                           awful.button({ }, 3, function () awful.layout.inc(-1) end),
                           awful.button({ }, 4, function () awful.layout.inc( 1) end),
                           awful.button({ }, 5, function () awful.layout.inc(-1) end)))
    -- Create a taglist widget
	s.mytaglist = awful.widget.taglist {
			screen  = s,
			filter  = awful.widget.taglist.filter.all, 
			buttons = taglist_buttons,
		style    = {
			shape  = gears.shape.hexagon,
		},
		layout   = {
			spacing = 10,
			layout  = wibox.layout.flex.horizontal
		},
		-- Notice that there is *NO* wibox.wibox prefix, it is a template,
		-- not a widget instance.
		widget_template = {
			{
				{
					{
						{
							id     = 'icon_role',
							widget = wibox.widget.imagebox,
						},
						widget  = wibox.container.margin,
						left  = 5,
						right = 5,
					},
					{
						id     = 'text_role',
						widget = wibox.widget.textbox 
					},
					layout = wibox.layout.fixed.horizontal,
				},
				left  = 10,
				right = 10,
				widget = wibox.container.margin
			},
			id     = 'background_role',
			widget = wibox.container.background,
		},
	}
    -- Create a tasklist widget
	s.mytasklist = awful.widget.tasklist {
		screen   = s,
		filter   = awful.widget.tasklist.filter.currenttags,
		buttons  = tasklist_buttons,
		style    = {
			shape = gears.shape.hexagon,
			shape_border_width = 2,
			shape_border_color = beautiful.bg_focus,
		},
		layout   = {
			spacing = 20,
			spacing_widget = {
				{
					forced_width = 5,
					shape        = gears.shape.circle,
					widget       = wibox.widget.separator
				},
				valign = 'center',
				halign = 'center',
				widget = wibox.container.place,
			},
			layout  = wibox.layout.flex.horizontal
		},
		-- Notice that there is *NO* wibox.wibox prefix, it is a template,
		-- not a widget instance.
		widget_template = {
			{
				{
					{
						{
							id     = 'icon_role',
							widget = wibox.widget.imagebox,
						},
						margins = 2,
						widget  = wibox.container.margin,
					},
					{
						id     = 'text_role',
						widget = wibox.widget.textbox,
					},
					layout = wibox.layout.fixed.horizontal,
				},
				left  = 10,
				right = 10,
				widget = wibox.container.margin
			},
			id     = 'background_role',
			widget = wibox.container.background,
		},
	}

    -- Create the wibox
    s.mywibox = awful.wibar({ position = "top", screen = s })

    -- Add widgets to the wibox
    s.mywibox:setup {
        layout = wibox.layout.align.horizontal,
        { -- Left widgets
            layout = wibox.layout.fixed.horizontal,
            mylauncher,
            separator,
            s.mytaglist,
            separator,
            s.mypromptbox,
        },
        s.mytasklist, -- Middle widget
        { -- Right widgets
            layout = wibox.layout.fixed.horizontal,
            spacing = 1,
            separator,
            vol,
            volumebar_widget,
            separator,
            mykeyboardlayout,
            separator,
            wibox.widget.systray(),
            separator,
            mytextclock,
            separator,
            s.mylayoutbox,
        },
    }
end)
-- }}}

-- {{{ Mouse bindings
root.buttons(gears.table.join(
    awful.button({ }, 1, function () mymainmenu:toggle() end),
    awful.button({ }, 2, function () mymainmenu:toggle() end),
    awful.button({ }, 3, function () mymainmenu:toggle() end),
    awful.button({ }, 4, awful.tag.viewnext),
    awful.button({ }, 5, awful.tag.viewprev)
))
-- }}}

-- {{{ Key bindings
globalkeys = gears.table.join(
    awful.key({ modkey,           }, "F1",      hotkeys_popup.show_help,
              {description="Ukáže nápovědu", group="awesome"}),
    awful.key({ modkey,           }, "Left",   awful.tag.viewprev,
              {description = "Ukáže předchozí", group = "tag"}),
    awful.key({ modkey,           }, "Right",  awful.tag.viewnext,
              {description = "Ukáže další", group = "tag"}),
    awful.key({ modkey,           }, "Escape", awful.tag.history.restore,
              {description = "go back", group = "tag"}),

    awful.key({ modkey,           }, "j",
        function ()
            awful.client.focus.byidx( 1)
        end,
        {description = "Zobrazí dalšího klienta", group = "client"}
    ),
    awful.key({ modkey,           }, "k",
        function ()
            awful.client.focus.byidx(-1)
        end,
        {description = "Zaměří předešlého klienta", group = "client"}
    ),
    awful.key({ modkey,           }, "w", function () mymainmenu:show() end,
              {description = "Ukáže hlavní menu", group = "awesome"}),

    -- Layout manipulation
    awful.key({ modkey, "Shift"   }, "j", function () awful.client.swap.byidx(  1)    end,
              {description = "Prohodí s dalším klientem", group = "client"}),
    awful.key({ modkey, "Shift"   }, "k", function () awful.client.swap.byidx( -1)    end,
              {description = "Prohodí s předchozím klientem", group = "client"}),
    awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
              {description = "Zaměří další obrazovku", group = "screen"}),
    awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
              {description = "Zaměří předešlou obrazovku", group = "screen"}),
    awful.key({ modkey,           }, "u", awful.client.urgent.jumpto,
              {description = "Skočí na urgentního klienta", group = "client"}),
    awful.key({ modkey,           }, "Tab",
        function ()
            awful.client.focus.history.previous()
            if client.focus then
                client.focus:raise()
            end
        end,
        {description = "Jdi zpět", group = "client"}),

    -- Standard program
    awful.key({ modkey,           }, "Return", function () awful.spawn(terminal) end,
              {description = "Otevře terminál", group = "launcher"}),
    awful.key({ modkey, "Control" }, "r", awesome.restart,
              {description = "Znovu nahraje Awesome", group = "awesome"}),
    awful.key({ modkey, "Shift"   }, "q", awesome.quit,
              {description = "Ukončí Awesome", group = "awesome"}),

    awful.key({ modkey,           }, "l",     function () awful.tag.incmwfact( 0.05)          end,
              {description = "Zvětší velikost hlavního klienta", group = "layout"}),
    awful.key({ modkey,           }, "h",     function () awful.tag.incmwfact(-0.05)          end,
              {description = "Zmenší velikost hlavního klienta", group = "layout"}),
    awful.key({ modkey, "Shift"   }, "h",     function () awful.tag.incnmaster( 1, nil, true) end,
              {description = "Zvýší počet hlavních klientů", group = "layout"}),
    awful.key({ modkey, "Shift"   }, "l",     function () awful.tag.incnmaster(-1, nil, true) end,
              {description = "Sníží počet hlavních klientů", group = "layout"}),
    awful.key({ modkey, "Control" }, "h",     function () awful.tag.incncol( 1, nil, true)    end,
              {description = "Zvýší počet řádků", group = "layout"}),
    awful.key({ modkey, "Control" }, "l",     function () awful.tag.incncol(-1, nil, true)    end,
              {description = "Sníží počet řádků", group = "layout"}),
    awful.key({ modkey,           }, "space", function () awful.layout.inc( 1)                end,
              {description = "Vybere další", group = "layout"}),
    awful.key({ modkey, "Shift"   }, "space", function () awful.layout.inc(-1)                end,
              {description = "Vybere předchozí", group = "layout"}),

    awful.key({ modkey, "Control" }, "n",
              function ()
                  local c = awful.client.restore()
                  -- Focus restored client
                  if c then
                    c:emit_signal(
                        "request::activate", "key.unminimize", {raise = true}
                    )
                  end
              end,
              {description = "Obnoví minimalizované", group = "client"}),

    -- Prompt
    awful.key({ modkey },            "r",     function () awful.screen.focused().mypromptbox:run() end,
              {description = "Spustit", group = "launcher"}),

    awful.key({ modkey }, "x",
              function ()
                  awful.prompt.run {
                    prompt       = "Spustí Lua kód: ",
                    textbox      = awful.screen.focused().mypromptbox.widget,
                    exe_callback = awful.util.eval,
                    history_path = awful.util.get_cache_dir() .. "/history_eval"
                  }
              end,
              {description = "Spustí Lua kód", group = "awesome"}),
    -- Menubar
    awful.key({ modkey }, "p", function() menubar.show() end,
              {description = "Ukáže menubar", group = "launcher"})
)

clientkeys = gears.table.join(
    awful.key({ modkey,           }, "f",
        function (c)
            c.fullscreen = not c.fullscreen
            c:raise()
        end,
        {description = "Přepne celou obrazovku", group = "client"}),
    awful.key({ modkey, 		  }, "q",      function (c) c:kill()                         end,
              {description = "Zavže", group = "client"}),
    awful.key({ modkey, "Control" }, "space",  awful.client.floating.toggle                     ,
              {description = "Přepne plovoucí", group = "client"}),
    awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end,
              {description = "Přesune do mastra", group = "client"}),
    awful.key({ modkey,           }, "o",      function (c) c:move_to_screen()               end,
              {description = "Přesune na obrazovku", group = "client"}),
    awful.key({ modkey,           }, "t",      function (c) c.ontop = not c.ontop            end,
              {description = "Přepne vždy na vrchu", group = "client"}),
    awful.key({ modkey,           }, "n",

        function (c)
            -- The client currently has the input focus, so it cannot be
            -- minimized, since minimized clients can't have the focus.
            c.minimized = true
        end ,
        {description = "Minimalizuje", group = "client"}),
    awful.key({ modkey,           }, "m",
        function (c)
            c.maximized = not c.maximized
            c:raise()
        end ,
        {description = "Odmaximalizuje", group = "client"}),
    awful.key({ modkey, "Control" }, "m",
        function (c)
            c.maximized_vertical = not c.maximized_vertical
            c:raise()
        end ,
        {description = "Odmaximalizuje vertikálně", group = "client"}),
    awful.key({ modkey, "Shift"   }, "m",
        function (c)
            c.maximized_horizontal = not c.maximized_horizontal
            c:raise()
        end ,
        {description = "Odmaximalizuje horizontálně", group = "client"})
)

-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it work on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, 9 do
    globalkeys = gears.table.join(globalkeys,
        -- View tag only.
        awful.key({ modkey }, "#" .. i + 9,
                  function ()
                        local screen = awful.screen.focused()
                        local tag = screen.tags[i]
                        if tag then
                           tag:view_only()
                        end
                  end,
                  {description = "Zobrazí tag #"..i, group = "tag"}),
        -- Toggle tag display.
        awful.key({ modkey, "Control" }, "#" .. i + 9,
                  function ()
                      local screen = awful.screen.focused()
                      local tag = screen.tags[i]
                      if tag then
                         awful.tag.viewtoggle(tag)
                      end
                  end,
                  {description = "Zobrazí tag #" .. i, group = "tag"}),
		-- Toogle all tags
		awful.key({ modkey }, ";",      function ()
						local tags = awful.screen.focused().tags
							for i = 1, 9 do
                            tags[i].selected = true
                            end
                        end,
          {description="Zobrazí všechny tagy", group="tag"}), 
 
        -- Move client to tag.
        awful.key({ modkey, "Shift" }, "#" .. i + 9,
                  function ()
                      if client.focus then
                          local tag = client.focus.screen.tags[i]
                          if tag then
                              client.focus:move_to_tag(tag)
                          end
                     end
                  end,
                  {description = "Přesune klienta do tagu #"..i, group = "tag"}),
        -- Toggle tag on focused client.
        awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
                  function ()
                      if client.focus then
                          local tag = client.focus.screen.tags[i]
                          if tag then
                              client.focus:toggle_tag(tag)
                          end
                      end
                  end,
                  {description = "Přepne zaměřeného klienta na tag #" .. i, group = "tag"})
    )
end
-- Myš na klientovi
clientbuttons = gears.table.join(
    awful.button({ }, 1, function (c)
        c:emit_signal("request::activate", "mouse_click", {raise = true})
    end),
    awful.button({ modkey }, 1, function (c)
        c:emit_signal("request::activate", "mouse_click", {raise = true})
        awful.mouse.client.move(c)
    end),
    awful.button({ modkey }, 3, function (c)
        c:emit_signal("request::activate", "mouse_click", {raise = true})
        awful.mouse.client.resize(c)
    end),
    awful.button({ modkey }, 4, function (c)
        c:emit_signal("request::activate", "mouse_click", {raise = true})
        awful.tag.incmwfact(0.05)
    end),
    awful.button({ modkey }, 5, function (c)
        c:emit_signal("request::activate", "mouse_click", {raise = true})
        awful.tag.incmwfact(-0.05)
    end),
    awful.button({ modkey, "Shift" }, 4, function (c)
        c:emit_signal("request::activate", "mouse_click", {raise = true})
        awful.tag.incnmaster(1, nil, true)
    end),
    awful.button({ modkey, "Shift" }, 5, function (c)
        c:emit_signal("request::activate", "mouse_click", {raise = true})
        awful.tag.incnmaster(-1, nil, true)
    end),
    awful.button({ modkey, "Ctrl" }, 4, function (c)
        c:emit_signal("request::activate", "mouse_click", {raise = true})
        awful.tag.incncol(1, nil, true)
    end),
    awful.button({ modkey, "Ctrl" }, 5, function (c)
        c:emit_signal("request::activate", "mouse_click", {raise = true})
        awful.tag.incncol(-1, nil, true)
    end)
)

-- Set keys
root.keys(globalkeys)
-- }}}

-- {{{ Rules
-- Rules to apply to new clients (through the "manage" signal).
awful.rules.rules = {
    -- All clients will match this rule.
    { rule = { },
      properties = { border_width = beautiful.border_width,
                     border_color = beautiful.border_normal,
                     focus = awful.client.focus.filter,
                     raise = true,
                     keys = clientkeys,
                     buttons = clientbuttons,
                     screen = awful.screen.preferred,
                     placement = awful.placement.no_overlap+awful.placement.no_offscreen
     }
    },

    -- Add titlebars to normal clients and dialogs
    { rule_any = {type = { "normal", "dialog" }
      }, properties = { titlebars_enabled = true }
    },

    -- Set Firefox to always map on the tag named "2" on screen 1.
	-- TAG 1
	 { rule_any = { class = { "URxvt", "XTerm" } },
	   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
	   properties = { tag = "1", switchtotag = true }
	 },
	-- TAG 2
	 { rule_any = { class = { "Pcmanfm", "Thunar", "Xarchiver" } },
	   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
	   properties = { tag = "2", switchtotag = true }
	 },
	-- TAG 3
	 { rule_any = { class = { "Dillo", "firefox", "Chromium", "Links", 
	 "navigator", "Netsurf-gtk3", "Surf", "transmission-gtk", "Opera", 
	 "Putty", "Uzbl" } },
	   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
	   properties = { tag = "3", switchtotag = true }
	 },
	-- TAG 4
	 { rule_any = { class = { "Claws-mail", "libreoffice", "Orage", "Thunderbird" } },
	   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
	   properties = { tag = "4", switchtotag = true }
	 },
	-- TAG 5
	 { rule_any = { class = { "Audacious", "Audacity", "Ciano", "ClipGrab", "MPlayer", 
	 "Soundkonverter", "Soundconverter", "Vlc", "vlc", "Xfburn" } },
	   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
	   properties = { tag = "5", switchtotag = true }
	 },
	-- TAG 6
	 { rule_any = { class = { "Geany", "Leafpad", "Mousepad" } },
	   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
	   properties = { tag = "6", switchtotag = true }
	 },
	-- TAG 7
	 { rule_any = { class = { "Birdfont", "Blender", "Gimp", "Gpicview", 
	  "Inkscape" } },
	   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
	   properties = { tag = "7", switchtotag = true }
	 },
	-- TAG 8
	 { rule_any = { class = { "Gucharmap", "Libfm-pref-apps", "Lxappearance", 
	 "Xfce4-taskmanager" } },
	   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
	   properties = { tag = "8", switchtotag = true }
	 },
	-- TAG 9
	 { rule_any = { class = { "dosbox", "RetroArch", "Steam", "Wine" } },
	   except_any = { role = { "GtkFileChooserDialog" }, type = {"dialog"}, },
	   properties = { tag = "9", switchtotag = true }
	 },

	-- PLOVOUCÍ
    { rule_any = {
        instance = {
          "DTA",  -- Firefox addon DownThemAll.
          "copyq",  -- Includes session name in class.
          "pinentry",
        },
        class = {
		  "Audacious", 
          "Arandr",
          "Blueman-manager",
          "Gpick",
          "Kruler",
          "MessageWin",  -- kalarm.
          "Sxiv",
          "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
          "Wpa_gui",
          "veromix",
          "xtightvncviewer"},

        -- Note that the name property shown in xprop might be set slightly after creation of the client
        -- and the name shown there might not match defined rules here.
        name = {
          "Event Tester",  -- xev.
        },
        role = {
          "AlarmWindow",  -- Thunderbird's calendar.
          "ConfigManager",  -- Thunderbird's about:config.
          "pop-up",       -- e.g. Google Chrome's (detached) Developer Tools.
          "_NET_WM_STATE_FULLSCREEN",
          "GtkFileChooserDialog", 
        }
      }, properties = { floating = true }},
}
-- }}}

-- {{{ Signals
-- Signal function to execute when a new client appears.
client.connect_signal("manage", function (c)
    -- Set the windows at the slave,
    -- i.e. put it at the end of others instead of setting it master.
    -- if not awesome.startup then awful.client.setslave(c) end

    if awesome.startup
      and not c.size_hints.user_position
      and not c.size_hints.program_position then
        -- Prevent clients from being unreachable after screen count changes.
        awful.placement.no_offscreen(c)
    end
end)

-- Add a titlebar if titlebars_enabled is set to true in the rules.
client.connect_signal("request::titlebars", function(c)
    -- buttons for the titlebar
    local buttons = gears.table.join(
        awful.button({ }, 1, function()
            c:emit_signal("request::activate", "titlebar", {raise = true})
            awful.mouse.client.move(c)
        end),
        awful.button({ }, 3, function()
            c:emit_signal("request::activate", "titlebar", {raise = true})
            awful.mouse.client.resize(c)
        end)
    )

    awful.titlebar(c) : setup {
        { -- Left
            awful.titlebar.widget.iconwidget(c),
            buttons = buttons,
            layout  = wibox.layout.fixed.horizontal
        },
        { -- Middle
            { -- Title
                align  = "center",
                widget = awful.titlebar.widget.titlewidget(c)
            },
            buttons = buttons,
            layout  = wibox.layout.flex.horizontal
        },
        { -- Right
            awful.titlebar.widget.floatingbutton (c),
            awful.titlebar.widget.stickybutton   (c),
            awful.titlebar.widget.ontopbutton    (c),
            awful.titlebar.widget.maximizedbutton(c),
            awful.titlebar.widget.closebutton    (c),
            layout = wibox.layout.fixed.horizontal()
        },
        layout = wibox.layout.align.horizontal
    }
end)

-- Enable sloppy focus, so that focus follows mouse.
client.connect_signal("mouse::enter", function(c)
    c:emit_signal("request::activate", "mouse_enter", {raise = false})
end)

client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- }}}

-- Zaoblene
client.connect_signal("manage", function (c)
    c.shape = function(cr,w,h)
        gears.shape.rounded_rect(cr,w,h,10)
    end
end)

-- AUTOMATICKY SPUSTENE
-- awful.spawn.with_shell("volumeicon")
		    
theme.lua
-------------------------------------
--   "mv-cyan" awesome theme   --
--          By Martin V.           --
--                                 --
-- Pridano theme.menu_icon         --
-- -> Upravit ikonu menu v rc.lua  --
-------------------------------------

local themes_path = require("gears.filesystem").get_themes_dir()
local dpi = require("beautiful.xresources").apply_dpi

-- {{{ Main
local theme = {}
theme.wallpaper = "~/.config/awesome/themes/mv-cyan/mv-cyan.png"
-- }}}

-- {{{ Styles
theme.font      = "terminus 9"

-- {{{ Colors
theme.fg_normal  = "#00faff"
theme.fg_focus   = "#FFFFFF"
theme.fg_urgent  = "#CC9393"
theme.bg_normal  = "#00000075"
theme.bg_focus   = "#4d7676A0"
theme.bg_urgent  = "#512325C5"
theme.wibar_bg  = "#00000000"
theme.tasklist_fg_minimize  = "#c8c8c8"
theme.tasklist_bg_minimize  = "#7e7e7eEE"
theme.tasklist_bg_normal  = "#ffffff00"
theme.prompt_bg  = theme.tasklist_bg_normal
theme.bg_systray = theme.bg_normal
theme.widget_red = theme.bg_urgent
theme.widget_main_color = theme.fg_focus
-- }}}

-- {{{ Borders
theme.useless_gap   = dpi(10)
theme.border_width  = dpi(1)
theme.border_normal = theme.bg_normal
theme.border_focus  = theme.fg_focus
theme.border_marked = "#CC9393A5"
-- }}}

-- {{{ Titlebars
theme.titlebar_bg_focus  = theme.bg_focus
theme.titlebar_bg_normal = theme.bg_normal
-- }}}


-- }}}

-- {{{ Mouse finder
theme.mouse_finder_color = "#CC9393"
-- }}}

-- {{{ Menu
theme.menu_height = dpi(15)
theme.menu_width  = dpi(150)
-- }}}

-- {{{ Taglist
theme.taglist_squares_sel   = "~/.config/awesome/themes/mv-cyan/taglist/squarefz.png"
theme.taglist_squares_unsel = "~/.config/awesome/themes/mv-cyan/taglist/squarez.png"
theme.taglist_spacing     = 2
-- }}}

-- {{{ Misc
theme.awesome_icon           = "~/.config/awesome/themes/mv-cyan/awesome-icon.png"
theme.menu_icon           = "~/.config/awesome/themes/mv-cyan/menu.png"
theme.menu_submenu_icon      = "~/.config/awesome/themes/mv-cyan/submenu.png"
-- }}}

-- {{{ Layout
theme.layout_tile       = "~/.config/awesome/themes/mv-cyan/layouts/tile.png"
theme.layout_tileleft   = "~/.config/awesome/themes/mv-cyan/layouts/tileleft.png"
theme.layout_tilebottom = "~/.config/awesome/themes/mv-cyan/layouts/tilebottom.png"
theme.layout_tiletop    = "~/.config/awesome/themes/mv-cyan/layouts/tiletop.png"
theme.layout_fairv      = "~/.config/awesome/themes/mv-cyan/layouts/fairv.png"
theme.layout_fairh      = "~/.config/awesome/themes/mv-cyan/layouts/fairh.png"
theme.layout_spiral     = "~/.config/awesome/themes/mv-cyan/layouts/spiral.png"
theme.layout_dwindle    = "~/.config/awesome/themes/mv-cyan/layouts/dwindle.png"
theme.layout_max        = "~/.config/awesome/themes/mv-cyan/layouts/max.png"
theme.layout_fullscreen = "~/.config/awesome/themes/mv-cyan/layouts/fullscreen.png"
theme.layout_magnifier  = "~/.config/awesome/themes/mv-cyan/layouts/magnifier.png"
theme.layout_floating   = "~/.config/awesome/themes/mv-cyan/layouts/floating.png"
theme.layout_cornernw   = "~/.config/awesome/themes/mv-cyan/layouts/cornernw.png"
theme.layout_cornerne   = "~/.config/awesome/themes/mv-cyan/layouts/cornerne.png"
theme.layout_cornersw   = "~/.config/awesome/themes/mv-cyan/layouts/cornersw.png"
theme.layout_cornerse   = "~/.config/awesome/themes/mv-cyan/layouts/cornerse.png"
-- }}}

-- {{{ Titlebar
theme.titlebar_close_button_focus  = "~/.config/awesome/themes/mv-cyan/titlebar/close_focus.png"
theme.titlebar_close_button_normal = "~/.config/awesome/themes/mv-cyan/titlebar/close_normal.png"

theme.titlebar_minimize_button_normal = "~/.config/awesome/themes/mv-cyan/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus  = "~/.config/awesome/themes/mv-cyan/titlebar/minimize_focus.png"

theme.titlebar_ontop_button_focus_active  = "~/.config/awesome/themes/mv-cyan/titlebar/ontop_focus_active.png"
theme.titlebar_ontop_button_normal_active = "~/.config/awesome/themes/mv-cyan/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_inactive  = "~/.config/awesome/themes/mv-cyan/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_inactive = "~/.config/awesome/themes/mv-cyan/titlebar/ontop_normal_inactive.png"

theme.titlebar_sticky_button_focus_active  = "~/.config/awesome/themes/mv-cyan/titlebar/sticky_focus_active.png"
theme.titlebar_sticky_button_normal_active = "~/.config/awesome/themes/mv-cyan/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_inactive  = "~/.config/awesome/themes/mv-cyan/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_inactive = "~/.config/awesome/themes/mv-cyan/titlebar/sticky_normal_inactive.png"

theme.titlebar_floating_button_focus_active  = "~/.config/awesome/themes/mv-cyan/titlebar/floating_focus_active.png"
theme.titlebar_floating_button_normal_active = "~/.config/awesome/themes/mv-cyan/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_inactive  = "~/.config/awesome/themes/mv-cyan/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_inactive = "~/.config/awesome/themes/mv-cyan/titlebar/floating_normal_inactive.png"

theme.titlebar_maximized_button_focus_active  = "~/.config/awesome/themes/mv-cyan/titlebar/maximized_focus_active.png"
theme.titlebar_maximized_button_normal_active = "~/.config/awesome/themes/mv-cyan/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_inactive  = "~/.config/awesome/themes/mv-cyan/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_inactive = "~/.config/awesome/themes/mv-cyan/titlebar/maximized_normal_inactive.png"
-- }}}

return theme
		    
.Xresources
XTerm*termName: xterm-256color
XTerm*vt100.colorBDMode: true
XTerm*vt100.colorBD: rgb:82/a4/d3
XTerm*vt100.colorULMode: true
XTerm*vt100.colorUL: rgb:e4/e4/e4
XTerm*scaleHeight: 1.01

XTerm*renderFont: true 
XTerm*faceName: DejaVu Sans Mono 
XTerm*faceSize: 9 
XTerm*foreground: white 
XTerm*background: black 
XTerm*saveLines: 2000 

UXTerm*renderFont: true 
UXTerm*faceName: DejaVu Sans Mono 
UXTerm*faceSize: 9 UXTerm*foreground: white 
UXTerm*background: black 
UXTerm*saveLines: 2000

URxvt.font: xft:terminus:size=9
URxvt*inheritPixmap: true
URxvt.depth: 32
URxvt.background: [60]#000000
URxvt.foreground: #00faff
URxvt.scrollBar:	false
URxvt.saveLines:	65535

Xft*dpi:       96
Xft*antialias: True
Xft*hinting:   Full
		    
.xsession
setxkbmap cz &
xrdb -merge ~/.Xresources &
xcompmgr &
conky -c ~/.conkyrc-cpu &
conky -c ~/.conkyrc-info &
conky -c ~/.conkyrc-time &
awesome
.conkyrc-cpu
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated below sticky skip_taskbar skip_pager
own_window_argb_visual yes
own_window_argb_130
maximum_width 1350
minimum_size 1350
double_buffer yes
update_interval 2
draw_outline no
draw_borders no
draw_graph_borders no
alignment bottom_right
gap_y -9
gap_x 0
default_color 009396
draw_shades yes
cpu_avg_samples 8
TEXT
${alignr}${cpugraph 100,1350 009396 a87dff -t}
.conkyrc-info
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated below sticky skip_taskbar skip_pager
own_window_argb_visual yes
own_window_argb_130
maximum_width 300
minimum_size 300
double_buffer yes
use_xft yes
update_interval 60
draw_outline no
default_color white
alignment bottom_left
gap_y 10
gap_x 10
use_spacer right
uppercase no
default_color 009396
draw_shades no
xftfont Terminus:size=14:style=bold

TEXT
$nodename
$kernel
${addr enp3s0}
RAM       $membar
SWAP      $swapbar
/         ${fs_bar /}
/home     ${fs_bar /home}
/mnt/DATA ${fs_bar /mnt/DATA} 
/mnt/NASKA-DATA ${fs_bar /mnt/NASKA-DATA} 
		    
.conkyrc-time
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated sticky skip_taskbar skip_pager
own_window_argb_visual yes
own_window_argb_130
double_buffer yes
use_xft yes
update_interval 60
draw_outline no
default_color white
alignment bottom_right
gap_y 0
use_spacer right
uppercase no
default_color 009396
draw_shades yes
xftfont Terminus:size=10

TEXT
${font :size= 104}${alignc}${time %H:%M} ${font :size= 10}
${font :size= 14}${alignr}${time %A, %d %B %Y}
		    

Awesome MV-80s-blue

Téma a nastavení pro Awesome s hlavní barvou blue - #0066ff.

Verze Awesome 4.3
OS Arch Linux a jiné
Popis Kompletní konfigurace s tématem
Použitý SW
  • amixer
  • nano
  • rxvt-unicode
  • xcompmgr
addons Freedesktop, calendar, volumebar
Soubory

Pozadí:

Soubor rc.lua je stejný jako v předchozím případě.

theme.lua
-------------------------------------
--   "MV-80s-blue" awesome theme   --
--          By Martin V.           --
--                                 --
-- Pridano theme.menu_icon         --
-- -> Upravit ikonu menu v rc.lua  --
-------------------------------------

local themes_path = require("gears.filesystem").get_themes_dir()
local dpi = require("beautiful.xresources").apply_dpi

-- {{{ Main
local theme = {}
theme.wallpaper = "~/.config/awesome/themes/mv-80s-blue/mv-80s-blue.png"
-- }}}

-- {{{ Styles
theme.font      = "terminus 9"

-- {{{ Colors
theme.fg_normal  = "#FFFFFF"
theme.fg_focus   = "#FFFFFF"
theme.fg_urgent  = "#CC9393"
theme.bg_normal  = "#001432A5"
theme.bg_focus   = "#0066ffA5"
theme.bg_urgent  = "#3F3F3FA5"
theme.bg_systray = theme.bg_normal
theme.widget_red = "#ff6b6b"
theme.widget_main_color = theme.bg_focus
-- }}}

-- {{{ Borders
theme.useless_gap   = dpi(3)
theme.border_width  = dpi(1)
theme.border_normal = "#3F3F3F"
theme.border_focus  = "#6bb5ff"
theme.border_marked = "#CC9393"
-- }}}

-- {{{ Titlebars
theme.titlebar_bg_focus  = theme.bg_focus
theme.titlebar_bg_normal = theme.bg_normal
-- }}}

-- }}}

-- {{{ Mouse finder
theme.mouse_finder_color = "#CC9393"
-- }}}

-- {{{ Menu
theme.menu_height = dpi(15)
theme.menu_width  = dpi(150)
-- }}}

-- {{{ Taglist
theme.taglist_squares_sel   = "~/.config/awesome/themes/mv-80s-blue/taglist/squarefz.png"
theme.taglist_squares_unsel = "~/.config/awesome/themes/mv-80s-blue/taglist/squarez.png"
-- }}}

-- {{{ Misc
theme.awesome_icon           = "~/.config/awesome/themes/mv-80s-blue/awesome-icon.png"
theme.menu_icon           = "~/.config/awesome/themes/mv-80s-blue/menu.png"
theme.menu_submenu_icon      = "~/.config/awesome/themes/mv-80s-blue/submenu.png"
-- }}}

-- {{{ Layout
theme.layout_tile       = "~/.config/awesome/themes/mv-80s-blue/layouts/tile.png"
theme.layout_tileleft   = "~/.config/awesome/themes/mv-80s-blue/layouts/tileleft.png"
theme.layout_tilebottom = "~/.config/awesome/themes/mv-80s-blue/layouts/tilebottom.png"
theme.layout_tiletop    = "~/.config/awesome/themes/mv-80s-blue/layouts/tiletop.png"
theme.layout_fairv      = "~/.config/awesome/themes/mv-80s-blue/layouts/fairv.png"
theme.layout_fairh      = "~/.config/awesome/themes/mv-80s-blue/layouts/fairh.png"
theme.layout_spiral     = "~/.config/awesome/themes/mv-80s-blue/layouts/spiral.png"
theme.layout_dwindle    = "~/.config/awesome/themes/mv-80s-blue/layouts/dwindle.png"
theme.layout_max        = "~/.config/awesome/themes/mv-80s-blue/layouts/max.png"
theme.layout_fullscreen = "~/.config/awesome/themes/mv-80s-blue/layouts/fullscreen.png"
theme.layout_magnifier  = "~/.config/awesome/themes/mv-80s-blue/layouts/magnifier.png"
theme.layout_floating   = "~/.config/awesome/themes/mv-80s-blue/layouts/floating.png"
theme.layout_cornernw   = "~/.config/awesome/themes/mv-80s-blue/layouts/cornernw.png"
theme.layout_cornerne   = "~/.config/awesome/themes/mv-80s-blue/layouts/cornerne.png"
theme.layout_cornersw   = "~/.config/awesome/themes/mv-80s-blue/layouts/cornersw.png"
theme.layout_cornerse   = "~/.config/awesome/themes/mv-80s-blue/layouts/cornerse.png"
-- }}}

-- {{{ Titlebar
theme.titlebar_close_button_focus  = "~/.config/awesome/themes/mv-80s-blue/titlebar/close_focus.png"
theme.titlebar_close_button_normal = "~/.config/awesome/themes/mv-80s-blue/titlebar/close_normal.png"

theme.titlebar_minimize_button_normal = "~/.config/awesome/themes/mv-80s-blue/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus  = "~/.config/awesome/themes/mv-80s-blue/titlebar/minimize_focus.png"

theme.titlebar_ontop_button_focus_active  = "~/.config/awesome/themes/mv-80s-blue/titlebar/ontop_focus_active.png"
theme.titlebar_ontop_button_normal_active = "~/.config/awesome/themes/mv-80s-blue/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_inactive  = "~/.config/awesome/themes/mv-80s-blue/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_inactive = "~/.config/awesome/themes/mv-80s-blue/titlebar/ontop_normal_inactive.png"

theme.titlebar_sticky_button_focus_active  = "~/.config/awesome/themes/mv-80s-blue/titlebar/sticky_focus_active.png"
theme.titlebar_sticky_button_normal_active = "~/.config/awesome/themes/mv-80s-blue/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_inactive  = "~/.config/awesome/themes/mv-80s-blue/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_inactive = "~/.config/awesome/themes/mv-80s-blue/titlebar/sticky_normal_inactive.png"

theme.titlebar_floating_button_focus_active  = "~/.config/awesome/themes/mv-80s-blue/titlebar/floating_focus_active.png"
theme.titlebar_floating_button_normal_active = "~/.config/awesome/themes/mv-80s-blue/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_inactive  = "~/.config/awesome/themes/mv-80s-blue/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_inactive = "~/.config/awesome/themes/mv-80s-blue/titlebar/floating_normal_inactive.png"

theme.titlebar_maximized_button_focus_active  = "~/.config/awesome/themes/mv-80s-blue/titlebar/maximized_focus_active.png"
theme.titlebar_maximized_button_normal_active = "~/.config/awesome/themes/mv-80s-blue/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_inactive  = "~/.config/awesome/themes/mv-80s-blue/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_inactive = "~/.config/awesome/themes/mv-80s-blue/titlebar/maximized_normal_inactive.png"
-- }}}

return theme
		    

Awesome MV-80s-orange

Téma a nastavení pro Awesome s hlavní barvou orange - #ff7f2a.

Verze Awesome 4.3
OS Arch Linux a jiné
Popis Kompletní konfigurace s tématem
Použitý SW
  • amixer
  • nano
  • rxvt-unicode
  • xcompmgr
addons Freedesktop, calendar, volumebar
Soubory

Pozadí:

Soubor rc.lua je stejný jako v případě tématu MV-80s-blue.

theme.lua
-------------------------------------
--  "MV-80s-orange" awesome theme  --
--          By Martin V.           --
--                                 --
-- Pridano theme.menu_icon         --
-- -> Upravit ikonu menu v rc.lua  --
-------------------------------------

local themes_path = require("gears.filesystem").get_themes_dir()
local dpi = require("beautiful.xresources").apply_dpi

-- {{{ Main
local theme = {}
theme.wallpaper = "~/.config/awesome/themes/mv-80s-orange/mv-80s-orange.png"
-- }}}

-- {{{ Styles
theme.font      = "terminus 9"

-- {{{ Colors
theme.fg_normal  = "#FFFFFF"
theme.fg_focus   = "#FFFFFF"
theme.fg_urgent  = "#CC9393"
theme.bg_normal  = "#7b3d14A5"
theme.bg_focus   = "#ff7f2aA5"
theme.bg_urgent  = "#3F3F3F"
theme.bg_systray = theme.bg_normal
theme.widget_red = "#ff6b6b"
theme.widget_main_color = theme.bg_focus
-- }}}

-- {{{ Borders
theme.useless_gap   = dpi(3)
theme.border_width  = dpi(1)
theme.border_normal = "#3F3F3F"
theme.border_focus  = "#b4c6da"
theme.border_marked = "#CC9393"
-- }}}

-- {{{ Titlebars
theme.titlebar_bg_focus  = theme.bg_focus
theme.titlebar_bg_normal = theme.bg_normal
-- }}}

-- }}}

-- {{{ Mouse finder
theme.mouse_finder_color = "#CC9393"
-- }}}

-- {{{ Menu
theme.menu_height = dpi(15)
theme.menu_width  = dpi(150)
-- }}}

-- {{{ Taglist
theme.taglist_squares_sel   = "~/.config/awesome/themes/mv-80s-orange/taglist/squarefz.png"
theme.taglist_squares_unsel = "~/.config/awesome/themes/mv-80s-orange/taglist/squarez.png"
-- }}}

-- {{{ Misc
theme.awesome_icon           = "~/.config/awesome/themes/mv-80s-orange/awesome-icon.png"
theme.menu_icon           = "~/.config/awesome/themes/mv-80s-orange/menu.png"
theme.menu_submenu_icon      = "~/.config/awesome/themes/mv-80s-orange/submenu.png"
-- }}}

-- {{{ Layout
theme.layout_tile       = "~/.config/awesome/themes/mv-80s-orange/layouts/tile.png"
theme.layout_tileleft   = "~/.config/awesome/themes/mv-80s-orange/layouts/tileleft.png"
theme.layout_tilebottom = "~/.config/awesome/themes/mv-80s-orange/layouts/tilebottom.png"
theme.layout_tiletop    = "~/.config/awesome/themes/mv-80s-orange/layouts/tiletop.png"
theme.layout_fairv      = "~/.config/awesome/themes/mv-80s-orange/layouts/fairv.png"
theme.layout_fairh      = "~/.config/awesome/themes/mv-80s-orange/layouts/fairh.png"
theme.layout_spiral     = "~/.config/awesome/themes/mv-80s-orange/layouts/spiral.png"
theme.layout_dwindle    = "~/.config/awesome/themes/mv-80s-orange/layouts/dwindle.png"
theme.layout_max        = "~/.config/awesome/themes/mv-80s-orange/layouts/max.png"
theme.layout_fullscreen = "~/.config/awesome/themes/mv-80s-orange/layouts/fullscreen.png"
theme.layout_magnifier  = "~/.config/awesome/themes/mv-80s-orange/layouts/magnifier.png"
theme.layout_floating   = "~/.config/awesome/themes/mv-80s-orange/layouts/floating.png"
theme.layout_cornernw   = "~/.config/awesome/themes/mv-80s-orange/layouts/cornernw.png"
theme.layout_cornerne   = "~/.config/awesome/themes/mv-80s-orange/layouts/cornerne.png"
theme.layout_cornersw   = "~/.config/awesome/themes/mv-80s-orange/layouts/cornersw.png"
theme.layout_cornerse   = "~/.config/awesome/themes/mv-80s-orange/layouts/cornerse.png"
-- }}}

-- {{{ Titlebar
theme.titlebar_close_button_focus  = "~/.config/awesome/themes/mv-80s-orange/titlebar/close_focus.png"
theme.titlebar_close_button_normal = "~/.config/awesome/themes/mv-80s-orange/titlebar/close_normal.png"

theme.titlebar_minimize_button_normal = "~/.config/awesome/themes/mv-80s-orange/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus  = "~/.config/awesome/themes/mv-80s-orange/titlebar/minimize_focus.png"

theme.titlebar_ontop_button_focus_active  = "~/.config/awesome/themes/mv-80s-orange/titlebar/ontop_focus_active.png"
theme.titlebar_ontop_button_normal_active = "~/.config/awesome/themes/mv-80s-orange/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_inactive  = "~/.config/awesome/themes/mv-80s-orange/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_inactive = "~/.config/awesome/themes/mv-80s-orange/titlebar/ontop_normal_inactive.png"

theme.titlebar_sticky_button_focus_active  = "~/.config/awesome/themes/mv-80s-orange/titlebar/sticky_focus_active.png"
theme.titlebar_sticky_button_normal_active = "~/.config/awesome/themes/mv-80s-orange/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_inactive  = "~/.config/awesome/themes/mv-80s-orange/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_inactive = "~/.config/awesome/themes/mv-80s-orange/titlebar/sticky_normal_inactive.png"

theme.titlebar_floating_button_focus_active  = "~/.config/awesome/themes/mv-80s-orange/titlebar/floating_focus_active.png"
theme.titlebar_floating_button_normal_active = "~/.config/awesome/themes/mv-80s-orange/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_inactive  = "~/.config/awesome/themes/mv-80s-orange/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_inactive = "~/.config/awesome/themes/mv-80s-orange/titlebar/floating_normal_inactive.png"

theme.titlebar_maximized_button_focus_active  = "~/.config/awesome/themes/mv-80s-orange/titlebar/maximized_focus_active.png"
theme.titlebar_maximized_button_normal_active = "~/.config/awesome/themes/mv-80s-orange/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_inactive  = "~/.config/awesome/themes/mv-80s-orange/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_inactive = "~/.config/awesome/themes/mv-80s-orange/titlebar/maximized_normal_inactive.png"
-- }}}

return theme
		    

Awesome MV

Téma a nastavení pro Awesome s hlavní barvou blue - #6bb5ff.

Verze Awesome 4.3
OS Arch Linux a jiné
Popis Kompletní konfigurace s tématem
Použitý SW
  • amixer
  • nano
  • rxvt-unicode
  • xcompmgr
addons Freedesktop, calendar, volumebar
Soubory

Pozadí:

Soubor rc.lua je stejný jako v případě tématu MV-80s-blue.

theme.lua
-------------------------------
--  "MV" awesome theme       --
--    By Martin V.           --
-------------------------------

local themes_path = require("gears.filesystem").get_themes_dir()
local dpi = require("beautiful.xresources").apply_dpi

-- {{{ Main
local theme = {}
theme.wallpaper = "~/.config/awesome/themes/mv/mv.png"
-- }}}

-- {{{ Styles
theme.font      = "monospace 9"

-- {{{ Colors
theme.fg_normal  = "#FFFFFF"
theme.fg_focus   = "#b9d9ff"
theme.fg_urgent  = "#CC9393"
theme.bg_normal  = "#3F3F3FA5"
theme.bg_focus   = "#090c0e"
theme.bg_urgent  = "#3F3F3F"
theme.bg_systray = theme.bg_normal
theme.widget_red = "#ff6b6b"
theme.widget_main_color = theme.bg_focus
-- }}}

-- {{{ Borders
theme.useless_gap   = dpi(5)
theme.border_width  = dpi(1)
theme.border_normal = "#3F3F3F"
theme.border_focus  = "#b4c6da"
theme.border_marked = "#CC9393"
-- }}}

-- {{{ Titlebars
theme.titlebar_bg_focus  = "#3F3F3F"
theme.titlebar_bg_normal = "#3F3F3FA5"
-- }}}

-- }}}

-- {{{ Mouse finder
theme.mouse_finder_color = "#CC9393"
-- }}}

-- {{{ Menu
theme.menu_height = dpi(15)
theme.menu_width  = dpi(150)
-- }}}

-- {{{ Taglist
theme.taglist_squares_sel   = "~/.config/awesome/themes/mv/taglist/squarefz.png"
theme.taglist_squares_unsel = "~/.config/awesome/themes/mv/taglist/squarez.png"
theme.taglist_bg_occupied = "#3F3F3F"
theme.taglist_bg_empty = "#3F3F3F"
-- }}}

-- {{{ Misc
theme.awesome_icon           = "~/.config/awesome/themes/mv/awesome-icon.png"
theme.menu_icon           = "~/.config/awesome/themes/mv/menu.png"
theme.menu_submenu_icon      = "~/.config/awesome/themes/mv/submenu.png"
-- }}}

-- {{{ Layout
theme.layout_tile       = "~/.config/awesome/themes/mv/layouts/tile.png"
theme.layout_tileleft   = "~/.config/awesome/themes/mv/layouts/tileleft.png"
theme.layout_tilebottom = "~/.config/awesome/themes/mv/layouts/tilebottom.png"
theme.layout_tiletop    = "~/.config/awesome/themes/mv/layouts/tiletop.png"
theme.layout_fairv      = "~/.config/awesome/themes/mv/layouts/fairv.png"
theme.layout_fairh      = "~/.config/awesome/themes/mv/layouts/fairh.png"
theme.layout_spiral     = "~/.config/awesome/themes/mv/layouts/spiral.png"
theme.layout_dwindle    = "~/.config/awesome/themes/mv/layouts/dwindle.png"
theme.layout_max        = "~/.config/awesome/themes/mv/layouts/max.png"
theme.layout_fullscreen = "~/.config/awesome/themes/mv/layouts/fullscreen.png"
theme.layout_magnifier  = "~/.config/awesome/themes/mv/layouts/magnifier.png"
theme.layout_floating   = "~/.config/awesome/themes/mv/layouts/floating.png"
theme.layout_cornernw   = "~/.config/awesome/themes/mv/layouts/cornernw.png"
theme.layout_cornerne   = "~/.config/awesome/themes/mv/layouts/cornerne.png"
theme.layout_cornersw   = "~/.config/awesome/themes/mv/layouts/cornersw.png"
theme.layout_cornerse   = "~/.config/awesome/themes/mv/layouts/cornerse.png"
-- }}}

-- {{{ Titlebar
theme.titlebar_close_button_focus  = "~/.config/awesome/themes/mv/titlebar/close_focus.png"
theme.titlebar_close_button_normal = "~/.config/awesome/themes/mv/titlebar/close_normal.png"

theme.titlebar_minimize_button_normal = "~/.config/awesome/themes/mv/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus  = "~/.config/awesome/themes/mv/titlebar/minimize_focus.png"

theme.titlebar_ontop_button_focus_active  = "~/.config/awesome/themes/mv/titlebar/ontop_focus_active.png"
theme.titlebar_ontop_button_normal_active = "~/.config/awesome/themes/mv/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_inactive  = "~/.config/awesome/themes/mv/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_inactive = "~/.config/awesome/themes/mv/titlebar/ontop_normal_inactive.png"

theme.titlebar_sticky_button_focus_active  = "~/.config/awesome/themes/mv/titlebar/sticky_focus_active.png"
theme.titlebar_sticky_button_normal_active = "~/.config/awesome/themes/mv/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_inactive  = "~/.config/awesome/themes/mv/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_inactive = "~/.config/awesome/themes/mv/titlebar/sticky_normal_inactive.png"

theme.titlebar_floating_button_focus_active  = "~/.config/awesome/themes/mv/titlebar/floating_focus_active.png"
theme.titlebar_floating_button_normal_active = "~/.config/awesome/themes/mv/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_inactive  = "~/.config/awesome/themes/mv/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_inactive = "~/.config/awesome/themes/mv/titlebar/floating_normal_inactive.png"

theme.titlebar_maximized_button_focus_active  = "~/.config/awesome/themes/mv/titlebar/maximized_focus_active.png"
theme.titlebar_maximized_button_normal_active = "~/.config/awesome/themes/mv/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_inactive  = "~/.config/awesome/themes/mv/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_inactive = "~/.config/awesome/themes/mv/titlebar/maximized_normal_inactive.png"
-- }}}

return theme