diff --git a/config/awesome/autostart.sh b/config/awesome/autostart.sh new file mode 100755 index 0000000..d46f390 --- /dev/null +++ b/config/awesome/autostart.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash +# --- +# Use "run program" to run it only if it is not already running +# Use "program &" to run it regardless +# --- +# NOTE: This script runs with every restart of AwesomeWM +# TODO: run_once + +function run { + if ! pgrep $1 ; + then + $@& + fi +} + +# Load terminal colorscheme and settings +#xrdb ~/.Xresources + +# Urxvt daemon +#run urxvtd -q -o -f + +# Mpv input file +mkfifo /tmp/mpv.fifo + +# Volume notification daemon +#run volume-daemon + +# For desktop effects +run compton --config ~/.config/compton/compton.conf + +# Enable numlock on login +run numlockx + +# For battery notifications +run xfce4-power-manager + +# Network manager tray icon +run nm-applet + +# Keyboard +setxkbmap -layout "us,gr" -option "grp:alt_shift_toggle" +#setxkbmap -layout "us,gr,ru" -option "grp:alt_shift_toggle" + +# Kill redshift processes +#pkill redshift + +# Music +run mpd ~/.config/mpd/mpd.conf + +# Scratchpad +#scratchpad diff --git a/config/awesome/bars.lua b/config/awesome/bars.lua new file mode 100644 index 0000000..55a8a72 --- /dev/null +++ b/config/awesome/bars.lua @@ -0,0 +1,240 @@ +local awful = require("awful") +local gears = require("gears") +local wibox = require("wibox") +local beautiful = require("beautiful") +--local xresources = require("beautiful.xresources") +--local xrdb = xresources.get_current_theme() + +local helpers = require("helpers") +local keys = require("keys") + +-- {{{ Widgets +local desktop_mode_widget = require("noodle.desktop_mode_widget") +local minimal_tasklist = require("noodle.minimal_tasklist") + +-- Volume widget prefix +volumebar_prefix = wibox.widget.textbox(" ") +volumebar_prefix.markup = helpers.colorize_text(volumebar_prefix.text, beautiful.prefix_fg) + +-- Keyboard map indicator and switcher +keyboardlayout_prefix = wibox.widget.textbox(" ") +keyboardlayout_prefix.markup = helpers.colorize_text(keyboardlayout_prefix.text, beautiful.prefix_fg) +mykeyboardlayout = awful.widget.keyboardlayout() + +-- Create a textclock widget that shows date +date_prefix = wibox.widget.textbox(" ") +date_prefix.markup = helpers.colorize_text(date_prefix.text, beautiful.prefix_fg) +--mytextdate = wibox.widget.textclock("%a %d %B") +mytextdate = wibox.widget.textclock("%j days around the sun") --HAHA very useful +-- Create a textclock widget +clock_prefix = wibox.widget.textbox(" ") +clock_prefix.markup = helpers.colorize_text(clock_prefix.text, beautiful.prefix_fg) +mytextclock = wibox.widget.textclock("%H:%M") + +-- Create item separator +textseparator = wibox.widget.textbox() +textseparator.text = beautiful.separator_text +textseparator.markup = helpers.colorize_text(textseparator.text, beautiful.separator_fg) + +-- Create padding +pad = wibox.widget.textbox(" ") + +-- 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), + awful.button({ }, 4, function(t) awful.tag.viewprev(t.screen) end), + awful.button({ }, 5, function(t) awful.tag.viewnext(t.screen) end) + ) + +local tasklist_buttons = gears.table.join( + awful.button({ }, 1, + function (c) + if c == client.focus then + c.minimized = true + else + -- Without this, the following + -- :isvisible() makes no sense + c.minimized = false + if not c:isvisible() and c.first_tag then + c.first_tag:view_only() + end + -- This will also un-minimize + -- the client, if needed + client.focus = c + c:raise() + end + end), + -- Middle mouse button closes the window + awful.button({ }, 2, function (c) c:kill() end), + awful.button({ }, 3, helpers.client_menu_toggle()), + awful.button({ }, 4, function () + awful.client.focus.byidx(-1) + end), + awful.button({ }, 5, function () + awful.client.focus.byidx(1) + end) +) +-- }}} + +awful.screen.connect_for_each_screen(function(s) + -- Create a promptbox for each screen + s.mypromptbox = awful.widget.prompt({prompt = " Run: ", fg = beautiful.prompt_fg}) + -- 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(s, awful.widget.taglist.filter.all, taglist_buttons) + s.mytaglist.font = beautiful.font + + -- Create a tasklist widget + -- Show all clients + --s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, tasklist_buttons) + -- Show only focused client + --s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.focused, tasklist_buttons) + -- Show only minimized clients + --s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.minimizedcurrenttags, tasklist_buttons) + + -- Outer gaps + --awful.screen.padding(awful.screen.focused(),{left = 28, right = 28, top = 28, bottom = 28}) + + -- Create a system tray widget + s.systray = wibox.widget.systray() + s.systray.visible = false -- can be toggled by a keybind + + -- Wibar detached - Method: Transparent useless bar + -- Requires compositor + if beautiful.wibar_detached then + s.useless_wibar = awful.wibar({ position = beautiful.wibar_position, screen = s, height = beautiful.screen_margin * 2, opacity = 0 }) + --TODO + --s.useless_wibar:buttons(keys.desktopbuttons) + end + -- Create the wibox + s.mywibox = awful.wibar({ position = beautiful.wibar_position, screen = s, width = beautiful.wibar_width, height = beautiful.wibar_height, shape = helpers.rrect(beautiful.wibar_border_radius)}) + -- Wibar items + -- Add or remove widgets here + s.mywibox:setup { + layout = wibox.layout.align.horizontal, + { -- Left widgets + layout = wibox.layout.fixed.horizontal, + --s.mylayoutbox, + --mylauncher, + s.mytaglist, + textseparator, + minimal_tasklist + }, + { -- Middle widgets + layout = wibox.layout.fixed.horizontal, + --s.mypromptbox, + --textseparator, + --s.mytasklist, + --minimal_tasklist + }, + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + --mpdarc_widget, + --textseparator, + --volumebar_prefix, + --volumebar_widget, + --textseparator, + --keyboardlayout_prefix, + --mykeyboardlayout, + --textseparator, + s.systray, + --minimal_tasklist, + textseparator, + --date_prefix, + mytextdate, + textseparator, + --clock_prefix, + mytextclock, + textseparator, + desktop_mode_widget, + pad, + pad + }, + } + + -- Second (alternate panel) + if beautiful.wibar_alt_enabled then + if beautiful.wibar_alt_detached then + s.useless_wibar_alt = awful.wibar({ position = beautiful.wibar_alt_position, screen = s, height = beautiful.screen_margin * 2, opacity = 0 }) + s.useless_wibar_alt:buttons(gears.table.join( + --TODO + --keys.desktopbuttons + )) + end + s.mywibox_alt = awful.wibox({ position = beautiful.wibar_alt_position, screen = s, width = beautiful.wibar_alt_width, height = beautiful.wibar_alt_height, shape = helpers.rrect(beautiful.wibar_alt_border_radius)}) + -- Only set them if they exist, else they overwrite the position variable + if beautiful.wibar_alt_x then + s.mywibox_alt.x = beautiful.wibar_alt_x + end + if beautiful.wibar_alt_y then + s.mywibox_alt.y = beautiful.wibar_alt_y + end + -- Second wibar items + -- Add or remove widgets here + s.mywibox_alt:setup { + layout = wibox.layout.align.horizontal, + { -- Left widgets + layout = wibox.layout.fixed.horizontal, + --pad, + --s.mylayoutbox, + --mylauncher, + }, + { -- Middle widgets + layout = wibox.layout.fixed.horizontal, + --s.mypromptbox, + --s.mytasklist, + --textseparator, + }, + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + --mpdarc_widget, + --textseparator, + --volumebar_prefix, + --volumebar_widget, + --textseparator, + --keyboardlayout_prefix, + --mykeyboardlayout, + --textseparator, + s.systray, + minimal_tasklist, + textseparator, + date_prefix, + mytextdate, + textseparator, + clock_prefix, + mytextclock, + textseparator, + desktop_mode_widget, + pad + }, + } + end + + -- Only set them if they exist, else they overwrite the position variable + if beautiful.wibar_x then + s.mywibox.x = beautiful.wibar_x + end + if beautiful.wibar_y then + s.mywibox.y = beautiful.wibar_y + end + +end) + diff --git a/config/awesome/helpers.lua b/config/awesome/helpers.lua new file mode 100644 index 0000000..106d9de --- /dev/null +++ b/config/awesome/helpers.lua @@ -0,0 +1,91 @@ +local awful = require("awful") +local gears = require("gears") +local beautiful = require("beautiful") +local wibox = require("wibox") + +local helpers = {} + +-- Create rounded rectangle shape +helpers.rrect = function(radius) + return function(cr, width, height) + --gears.shape.partially_rounded_rect(cr, width, height, true, true, false, false, 12) + gears.shape.rounded_rect(cr, width, height, radius) + --gears.shape.octogon(cr, width, height, radius) + --gears.shape.rounded_bar(cr, width, height) + end +end + +-- Create info bubble shape +-- TODO +helpers.infobubble = function(radius) + return function(cr, width, height) + gears.shape.infobubble(cr, width, height, radius) + end +end + +-- Create rectangle shape +helpers.rect = function() + return function(cr, width, height) + gears.shape.rectangle(cr, width, height) + end +end + +function helpers.colorize_text(txt, fg) + return "" .. txt .. "" +end + +function helpers.client_menu_toggle() + local instance = nil + + return function () + if instance and instance.wibox.visible then + instance:hide() + instance = nil + else + instance = awful.menu.clients({ theme = { width = 250 } }) + end + end +end + +function helpers.pad(size) + local str = "" + for i = 1, size do + str = str .. " " + end + local pad = wibox.widget.textbox(str) + return pad +end + +function helpers.move_to_edge(c, direction) + local workarea = awful.screen.focused().workarea + local client_geometry = c:geometry() + if direction == "up" then + c:geometry({ nil, y = workarea.y + beautiful.screen_margin * 2, nil, nil }) + elseif direction == "down" then + c:geometry({ nil, y = workarea.height + workarea.y - client_geometry.height - beautiful.screen_margin * 2 - beautiful.border_width * 2, nil, nil }) + elseif direction == "left" then + c:geometry({ x = workarea.x + beautiful.screen_margin * 2, nil, nil, nil }) + elseif direction == "right" then + c:geometry({ x = workarea.width + workarea.x - client_geometry.width - beautiful.screen_margin * 2 - beautiful.border_width * 2, nil, nil, nil }) + end +end + +function helpers.create_titlebar(c, titlebar_buttons, titlebar_position, titlebar_size) + awful.titlebar(c, {font = beautiful.titlebar_font, position = titlebar_position, size = titlebar_size}) : setup { + { + buttons = titlebar_buttons, + layout = wibox.layout.fixed.horizontal + }, + { + buttons = titlebar_buttons, + layout = wibox.layout.fixed.horizontal + }, + { + buttons = titlebar_buttons, + layout = wibox.layout.fixed.horizontal + }, + layout = wibox.layout.align.horizontal + } +end + +return helpers diff --git a/config/awesome/keys.lua b/config/awesome/keys.lua new file mode 100644 index 0000000..defb914 --- /dev/null +++ b/config/awesome/keys.lua @@ -0,0 +1,727 @@ +local awful = require("awful") +local naughty = require("naughty") +local gears = require("gears") +local beautiful = require("beautiful") +local wibox = require("wibox") + +local helpers = require("helpers") + +local keys = {} + +-- Mod keys +modkey = "Mod4" +altkey = "Mod1" +ctrlkey = "Control" +shiftkey = "Shift" + +-- {{{ Mouse bindings +keys.desktopbuttons = gears.table.join( + awful.button({ }, 1, function () + mymainmenu:hide() + uc = awful.client.urgent.get() + -- If there is no urgent client, go back to last tag + if uc == nil then + awful.tag.history.restore() + else + awful.client.urgent.jumpto() + end + end), + awful.button({ }, 3, function () mymainmenu:toggle() end), + + -- Side buttons - Minimize and restore minimized client + awful.button({ }, 8, function() + if client.focus ~= nil then + client.focus.minimized = true + end + end), + awful.button({ }, 9, function() + local c = awful.client.restore() + -- Focus restored client + if c then + client.focus = c + c:raise() + end + end), + + -- Middle click and scrolling - Control volume + awful.button({ }, 2, function () awful.spawn.with_shell("volume-control.sh toggle") end), + awful.button({ }, 4, function () awful.spawn.with_shell("volume-control.sh up") end), + awful.button({ }, 5, function () awful.spawn.with_shell("volume-control.sh down") end) + + -- Switch tags with sidebuttons + --awful.button({ }, 8, awful.tag.viewprev), + --awful.button({ }, 9, awful.tag.viewnext) +) +-- }}} + +-- {{{ Key bindings +keys.globalkeys = gears.table.join( + --awful.key({ modkey, }, "s", hotkeys_popup.show_help, + --{description="show help", group="awesome"}), + --awful.key({ modkey, }, "comma", awful.tag.viewprev, + --{description = "view previous", group = "tag"}), + --awful.key({ modkey, }, "period", awful.tag.viewnext, + --{description = "view next", group = "tag"}), + + -- Focus client by direction + awful.key({ modkey }, "Down", + function() + awful.client.focus.bydirection("down") + if client.focus then client.focus:raise() end + end, + {description = "focus down", group = "client"}), + awful.key({ modkey }, "Up", + function() + awful.client.focus.bydirection("up") + if client.focus then client.focus:raise() end + end, + {description = "focus up", group = "client"}), + awful.key({ modkey }, "Left", + function() + awful.client.focus.bydirection("left") + if client.focus then client.focus:raise() end + end, + {description = "focus left", group = "client"}), + awful.key({ modkey }, "Right", + function() + awful.client.focus.bydirection("right") + if client.focus then client.focus:raise() end + end, + {description = "focus right", group = "client"}), + awful.key({ modkey, altkey }, "j", + function() + awful.client.focus.bydirection("down") + if client.focus then client.focus:raise() end + end, + {description = "focus down", group = "client"}), + awful.key({ modkey, altkey }, "k", + function() + awful.client.focus.bydirection("up") + if client.focus then client.focus:raise() end + end, + {description = "focus up", group = "client"}), + awful.key({ modkey, altkey }, "h", + function() + awful.client.focus.bydirection("left") + if client.focus then client.focus:raise() end + end, + {description = "focus left", group = "client"}), + awful.key({ modkey, altkey }, "l", + function() + awful.client.focus.bydirection("right") + if client.focus then client.focus:raise() end + end, + {description = "focus right", group = "client"}), + -- Focus client by index (cycle through clients) + awful.key({ modkey }, "j", + function () + awful.client.focus.byidx( 1) + end, + {description = "focus next by index", group = "client"} + ), + awful.key({ modkey }, "k", + function () + awful.client.focus.byidx(-1) + end, + {description = "focus previous by index", group = "client"} + ), + awful.key({ modkey, }, "g", + function () + awful.tag.incgap(5, nil) + end, + {description = "increment gaps size for the current tag", group = "gaps"} + ), + awful.key({ modkey, shiftkey }, "g", + function () + awful.tag.incgap(-5, nil) + end, + {description = "decrement gap size for the current tag", group = "gaps"} + ), + -- Kill all visible clients + awful.key({ modkey, altkey }, "q", + function () + local clients = awful.screen.focused().clients + for _, c in pairs(clients) do + c:kill() + end + end, + {description = "kill all visible clients for the current tag", group = "gaps"} + ), + -- Main menu + --awful.key({ modkey, }, "w", function () mymainmenu:show() end, + --{description = "show main menu", group = "awesome"}), + awful.key({ modkey, }, "Escape", awful.tag.history.restore, + {description = "go back", group = "tag"}), + + -- Layout manipulation + awful.key({ modkey, shiftkey }, "j", function () + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + local c = client.focus + -- Floating: move client to edge + if c ~= nil and (current_layout == "floating" or c.floating) then + --c:relative_move( 0, 40, 0, 0) + helpers.move_to_edge(c, "down") + else + --awful.client.swap.byidx( 1) + awful.client.swap.bydirection("down", c, nil) + + end + end, + --{description = "swap with next client by index", group = "client"}), + {description = "swap with direction down", group = "client"}), + awful.key({ modkey, shiftkey }, "k", function () + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + local c = client.focus + -- Floating: move client to edge + if c ~= nil and (current_layout == "floating" or c.floating) then + --c:relative_move( 0, -40, 0, 0) + helpers.move_to_edge(c, "up") + else + --awful.client.swap.byidx( -1) + awful.client.swap.bydirection("up", c, nil) + end + end, + {description = "swap with direction up", group = "client"}), + -- No need for these (single screen setup) + --awful.key({ modkey, ctrlkey }, "j", function () awful.screen.focus_relative( 1) end, + --{description = "focus the next screen", group = "screen"}), + --awful.key({ modkey, ctrlkey }, "k", function () awful.screen.focus_relative(-1) end, + --{description = "focus the previous screen", group = "screen"}), + awful.key({ modkey, }, "u", + function () + uc = awful.client.urgent.get() + -- If there is no urgent client, go back to last tag + if uc == nil then + awful.tag.history.restore() + else + awful.client.urgent.jumpto() + end + end, + {description = "jump to urgent client", group = "client"}), + awful.key({ modkey }, "Tab", function() awful.spawn.with_shell("~/scr/Rofi/rofi_combi") end, + {description = "window switcher", group = "launcher"}), + --awful.key({ modkey, }, "Tab", + --function () + --awful.client.focus.history.previous() + --if client.focus then + --client.focus:raise() + --end + --end, + --{description = "go back", group = "client"}), + + -- Standard program + awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end, + {description = "open a terminal", group = "launcher"}), + awful.key({ modkey, }, "t", function () awful.spawn(tmux) end, + {description = "open a terminal with tmux", group = "launcher"}), + -- Spawn floating terminal (see awful.rules below) + awful.key({ modkey, shiftkey }, "Return", function() + awful.spawn(floating_terminal) + end, + {description = "spawn floating terminal", group = "launcher"}), + awful.key({ modkey, shiftkey }, "t", function() awful.spawn(floating_tmux) end, + {description = "spawn floating terminal with tmux", group = "launcher"}), + awful.key({ modkey, shiftkey }, "r", awesome.restart, + {description = "reload awesome", group = "awesome"}), + awful.key({ modkey, shiftkey }, "x", awesome.quit, + {description = "quit awesome", group = "awesome"}), + awful.key({ modkey, ctrlkey }, "h", function () + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + local c = client.focus + -- Floating: resize client + if current_layout == "floating" or c.floating == true then + c:relative_move( 0, 0, -20, 0) + else + awful.tag.incmwfact(-0.05) + end + end, + {description = "decrease master width factor", group = "layout"}), + awful.key({ modkey, ctrlkey }, "l", function () + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + local c = client.focus + -- Floating: resize client + if current_layout == "floating" or c.floating == true then + c:relative_move( 0, 0, 20, 0) + else + awful.tag.incmwfact( 0.05) + end + end, + {description = "increase master width factor", group = "layout"}), + awful.key({ modkey, shiftkey }, "h", + function () + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + local c = client.focus + -- Floating: move client to edge + if c ~= nil and (current_layout == "floating" or c.floating) then + --c:relative_move( -40, 0, 0, 0) + helpers.move_to_edge(c, "left") + else + awful.client.swap.bydirection("left", c, nil) + end + end, + {description = "swap with direction left", group = "client"}), + awful.key({ modkey, shiftkey }, "l", + function () + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + local c = client.focus + -- Floating: move client to edge + if c ~= nil and (current_layout == "floating" or c.floating) then + --c:relative_move( 40, 0, 0, 0) + helpers.move_to_edge(c, "right") + else + awful.client.swap.bydirection("right", c, nil) + end + end, + {description = "swap with direction right", group = "client"}), + awful.key({ modkey }, "h", + function () + awful.tag.incnmaster( 1, nil, true) + end, + {description = "increase the number of master clients", group = "layout"}), + awful.key({ modkey }, "l", + function () + awful.tag.incnmaster(-1, nil, true) + end, + {description = "decrease the number of master clients", group = "layout"}), + awful.key({ modkey, shiftkey, ctrlkey }, "h", function () + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + local c = client.focus + -- Floating: move client + if c ~= nil and (current_layout == "floating" or c.floating) then + c:relative_move( -20, 0, 0, 0) + else + awful.tag.incncol( 1, nil, true) + end + end, + {description = "increase the number of columns", group = "layout"}), + awful.key({ modkey, shiftkey, ctrlkey }, "l", function () + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + local c = client.focus + -- Floating: move client + if c ~= nil and (current_layout == "floating" or c.floating) then + c:relative_move( 20, 0, 0, 0) + else + awful.tag.incncol(-1, nil, true) + end + end), + --awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end, + --{description = "select next", group = "layout"}), + --awful.key({ modkey, shiftkey }, "space", function () awful.layout.inc(-1) end, + --{description = "select previous", group = "layout"}), + + awful.key({ modkey, shiftkey }, "n", + function () + local c = awful.client.restore() + -- Focus restored client + if c then + client.focus = c + c:raise() + end + end, + {description = "restore minimized", group = "client"}), + + -- Prompt + -- Run program (d for dmenu ;) + --awful.key({ modkey }, "d", function () awful.screen.focused().mypromptbox:run() end, + --{description = "run prompt", group = "launcher"}), + awful.key({ modkey }, "d", function() awful.spawn.with_shell("~/scr/Rofi/rofi_launch") end, + {description = "rofi launcher", group = "launcher"}), + + -- Run lua code + --awful.key({ modkey }, "r", + --function () + --awful.prompt.run { + --prompt = " Lua: ", + --textbox = awful.screen.focused().mypromptbox.widget, + --exe_callback = awful.util.eval, + --history_path = awful.util.get_cache_dir() .. "/history_eval" + --} + --end, + --{description = "lua execute prompt", group = "awesome"}), + + -- Dismiss notifications + awful.key( { ctrlkey }, "space", function() + naughty.destroy_all_notifications() + end, + {description = "dismiss notification", group = "notifications"}), + + -- Menubar + --awful.key({ modkey, ctrlkey }, "b", function() menubar.show() end, + --{description = "show the menubar", group = "launcher"}), + -- Volume Control + awful.key( { }, "XF86AudioMute", function() + awful.spawn.with_shell("volume-control.sh toggle") + end, + {description = "(un)mute volume", group = "volume"}), + awful.key( { }, "XF86AudioLowerVolume", function() + awful.spawn.with_shell("volume-control.sh down") + end, + {description = "lower volume", group = "volume"}), + awful.key( { }, "XF86AudioRaiseVolume", function() + awful.spawn.with_shell("volume-control.sh up") + end, + {description = "raise volume", group = "volume"}), + -- Screenshots + awful.key( { }, "Print", function() awful.spawn.with_shell("screenshot.sh") end, + {description = "take full screenshot", group = "screenshots"}), + awful.key( { modkey, shiftkey }, "c", function() awful.spawn.with_shell("screenshot.sh -s") end, + {description = "select area to capture", group = "screenshots"}), + awful.key( { modkey, ctrlkey }, "c", function() awful.spawn.with_shell("screenshot.sh -c") end, + {description = "select area to copy to clipboard", group = "screenshots"}), + awful.key( { modkey }, "Print", function() awful.spawn.with_shell("screenshot.sh -b") end, + {description = "browse screenshots", group = "screenshots"}), + awful.key( { modkey, shiftkey }, "Print", function() awful.spawn.with_shell("screenshot.sh -e") end, + {description = "edit most recent screenshot with gimp", group = "screenshots"}), + -- Toggle tray visibility + awful.key({ modkey }, "=", function () + awful.screen.focused().systray.visible = not awful.screen.focused().systray.visible + end, + {description = "toggle systray visibility", group = "custom"}), + -- Toggle night light + awful.key({ modkey }, "x", function() awful.spawn.with_shell("flux") end, + {description = "toggle night light", group = "launcher"}), + -- Toggle compositor + awful.key({ modkey }, "z", function() awful.spawn.with_shell("compositor") end, + {description = "toggle compositor", group = "launcher"}), + -- Media keys + awful.key({ modkey }, "period", function() awful.spawn.with_shell("mpc next") end, + {description = "next song", group = "media"}), + awful.key({ modkey }, "comma", function() awful.spawn.with_shell("mpc prev") end, + {description = "previous song", group = "media"}), + awful.key({ modkey }, "space", function() awful.spawn.with_shell("mpc toggle") end, + {description = "toggle pause/play", group = "media"}), + awful.key({ modkey, shiftkey }, "period", function() awful.spawn.with_shell("mpvc next") end, + {description = "mpv next song", group = "media"}), + awful.key({ modkey, shiftkey }, "comma", function() awful.spawn.with_shell("mpvc prev") end, + {description = "mpv previous song", group = "media"}), + awful.key({ modkey, shiftkey}, "space", function() awful.spawn.with_shell("mpvc toggle") end, + {description = "mpv toggle pause/play", group = "media"}), + awful.key({ modkey, shiftkey}, "F8", function() awful.spawn.with_shell("mpvc quit") end, + {description = "mpv quit", group = "media"}), + awful.key({ modkey }, "q", function() + if client.focus ~= nil and client.focus.class == "scratchpad" then + client.focus.minimized = true + return + end + local matcher = function (c) + return awful.rules.match(c, {class = 'scratchpad'}) + end + awful.client.run_or_raise( "scratchpad" , matcher) + end, + {description = "scratchpad", group = "launcher"}), + -- Set max layout + awful.key({ modkey }, "w", function() + awful.layout.set(awful.layout.suit.max) + end, + {description = "set max layout", group = "tag"}), + -- Set tiled layout + awful.key({ modkey }, "s", function() + awful.layout.set(awful.layout.suit.tile) + end, + {description = "set tiled layout", group = "tag"}), + -- Set floating layout + awful.key({ modkey, shiftkey }, "s", function() + awful.layout.set(awful.layout.suit.floating) + end, + {description = "set floating layout", group = "tag"}), + -- Run or raise or minimize calcurse + awful.key({ modkey }, "F1", function() + if client.focus ~= nil and client.focus.class == "calendar" then + client.focus.minimized = true + return + end + local matcher = function (c) + return awful.rules.match(c, {class = 'calendar'}) + end + awful.client.run_or_raise( terminal .. " --class calendar -e calcurse", matcher) + end, + {description = "calcurse", group = "launcher"}), + -- Spawn ranger in a terminal + awful.key({ modkey }, "F2", function() awful.spawn(terminal .. " -e ranger") end, + {description = "ranger", group = "launcher"}), + -- Spawn ncmpcpp in a terminal + awful.key({ modkey }, "F3", function() awful.spawn(terminal .. " -e ncmpcpp") end, + {description = "ncmpcpp", group = "launcher"}), + -- Spawn cava in a terminal + awful.key({ modkey }, "F4", function() awful.spawn(terminal .. " -e cava") end, + {description = "cava", group = "launcher"}), + -- Show system info (cpu, ram, battery, temp) + awful.key({ modkey }, "grave", function() awful.spawn.with_shell("~/scr/info/stats") end, + {description = "current system info", group = "launcher"}), + -- Quick edit config file + awful.key({ modkey }, "e", function() awful.spawn.with_shell("~/scr/Rofi/rofi_quickedit") end, + {description = "quick edit", group = "launcher"}), + -- mpvtube + awful.key({ modkey }, "y", function() awful.spawn.with_shell("~/scr/Rofi/rofi_mpvtube") end, + {description = "mpvtube", group = "launcher"}), + -- mpvtube song + awful.key({ modkey, shiftkey }, "y", function() awful.spawn.with_shell("~/scr/info/mpv-query.sh") end, + {description = "show mpv media title", group = "launcher"}), + -- Spawn htop in a terminal + awful.key({ modkey }, "p", function() awful.spawn(terminal .. " -e htop") end, + {description = "htop", group = "launcher"}) +) + +keys.clientkeys = gears.table.join( + -- Move floating client (relative) + awful.key({ modkey, shiftkey }, "Down", function (c) c:relative_move( 0, 40, 0, 0) end), + awful.key({ modkey, shiftkey }, "Up", function (c) c:relative_move( 0, -40, 0, 0) end), + awful.key({ modkey, shiftkey }, "Left", function (c) c:relative_move(-40, 0, 0, 0) end), + awful.key({ modkey, shiftkey }, "Right", function (c) c:relative_move( 40, 0, 0, 0) end), + -- Center client + awful.key({ modkey }, "c", function (c) + awful.placement.centered(c,{honor_workarea=true}) + --awful.placement.centered(c,nil) + end), + -- Resize client + awful.key({ modkey, ctrlkey }, "j", function (c) + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + if current_layout == "floating" or c.floating == true then + c:relative_move( 0, 0, 0, 20) + else + awful.client.incwfact(0.15) + end + end), + awful.key({ modkey, ctrlkey }, "k", function (c) + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + if current_layout == "floating" or c.floating == true then + c:relative_move( 0, 0, 0, -20) + else + awful.client.incwfact(-0.15) + end + end), + awful.key({ modkey, shiftkey, ctrlkey }, "j", function (c) + -- Relative move + c:relative_move(0, 20, 0, 0) + end), + awful.key({ modkey, shiftkey, ctrlkey }, "k", function (c) + -- Relative move + c:relative_move(0, -20, 0, 0) + end), + -- Toggle titlebar (for focused client only) + awful.key({ modkey, }, "b", + function (c) + -- Don't toggle if titlebars are used as borders + if not beautiful.titlebars_imitate_borders then + awful.titlebar.toggle(c, beautiful.titlebar_position) + end + end, + {description = "toggle titlebar", group = "client"}), + -- Toggle titlebar (for all visible clients in selected tag) + awful.key({ modkey, shiftkey }, "b", + function (c) + --local s = awful.screen.focused() + local clients = awful.screen.focused().clients + for _, c in pairs(clients) do + -- Don't toggle if titlebars are used as borders + if not beautiful.titlebars_imitate_borders then + awful.titlebar.toggle(c, beautiful.titlebar_position) + end + end + end, + {description = "toggle titlebar", group = "client"}), + -- Toggle fullscreen + awful.key({ modkey, }, "f", + function (c) + c.fullscreen = not c.fullscreen + c:raise() + end, + {description = "toggle fullscreen", group = "client"}), + -- Resize and set floating + -- F for focused view + awful.key({ modkey, shiftkey }, "f", + function (c) + c.width = 950 + c.height = 600 + --c.width = 750 + --c.height = 500 + c.floating = true + awful.placement.centered(c,{honor_workarea=true}) + c:raise() + end, + {description = "focus mode", group = "client"}), + -- Resize and set floating 2: Electric Boogaloo + -- F for focused view + awful.key({ modkey, ctrlkey }, "f", + function (c) + c.width = 600 + c.height = 600 + --c.width = 750 + --c.height = 500 + c.floating = true + awful.placement.centered(c,{honor_workarea=true}) + c:raise() + end, + {description = "focus mode", group = "client"}), + -- T for tiny window + awful.key({ modkey, ctrlkey }, "t", + function (c) + c.width = 400 + c.height = 260 + c.floating = true + awful.placement.centered(c,{honor_workarea=true}) + c:raise() + end, + {description = "tiny mode", group = "client"}), + -- N for normal window + awful.key({ modkey, ctrlkey }, "n", + function (c) + c.width = 640 + c.height = 400 + c.floating = true + awful.placement.centered(c,{honor_workarea=true}) + c:raise() + end, + {description = "normal mode", group = "client"}), + awful.key({ modkey, shiftkey }, "q", function (c) c:kill() end, + {description = "close", group = "client"}), + --awful.key({ modkey, ctrlkey }, "space", awful.client.floating.toggle , + -- Toggle floating + awful.key({ modkey, ctrlkey }, "space", + function(c) + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + if current_layout ~= "floating" then + awful.client.floating.toggle() + end + --c:raise() + end, + {description = "toggle floating", group = "client"}), + awful.key({ modkey, ctrlkey }, "Return", function (c) c:swap(awful.client.getmaster()) end, + {description = "move to master", group = "client"}), + awful.key({ modkey, }, "o", function (c) c:move_to_screen() end, + {description = "move to screen", group = "client"}), + -- P for pin: keep on top OR sticky + -- On top + awful.key({ modkey, shiftkey }, "p", function (c) c.ontop = not c.ontop end, + {description = "toggle keep on top", group = "client"}), + -- Sticky + awful.key({ modkey, ctrlkey }, "p", function (c) c.sticky = not c.sticky end, + {description = "toggle sticky", group = "client"}), + -- Minimize + 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 = "minimize", group = "client"}), + awful.key({ modkey, }, "m", + function (c) + c.maximized = not c.maximized + c:raise() + end , + {description = "(un)maximize", group = "client"}), + awful.key({ modkey, ctrlkey }, "m", + function (c) + c.maximized_vertical = not c.maximized_vertical + c:raise() + end , + {description = "(un)maximize vertically", group = "client"}), + awful.key({ modkey, shiftkey }, "m", + function (c) + c.maximized_horizontal = not c.maximized_horizontal + c:raise() + end , + {description = "(un)maximize horizontally", 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. +local ntags = 10 +for i = 1, ntags do + keys.globalkeys = gears.table.join(keys.globalkeys, + -- View tag only. + awful.key({ modkey }, "#" .. i + 9, + function () + local screen = awful.screen.focused() + local tag = screen.tags[i] + local current_tag = screen.selected_tag + -- Tag back and forth: + -- If you try to focus the same tag you are at, + -- go back to the previous tag. + -- Useful for quick switching after for example + -- checking an incoming chat message at tag 2 + -- and coming back to your work at tag 1 + if tag then + if tag == current_tag then + awful.tag.history.restore() + else + tag:view_only() + end + end + -- Simple tag view + --if tag then + --tag:view_only() + --end + end, + {description = "view tag #"..i, group = "tag"}), + -- Toggle tag display. + awful.key({ modkey, ctrlkey }, "#" .. i + 9, + function () + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + awful.tag.viewtoggle(tag) + end + end, + {description = "toggle tag #" .. i, group = "tag"}), + -- Move client to tag. + awful.key({ modkey, shiftkey }, "#" .. 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 = "move focused client to tag #"..i, group = "tag"}), + -- Move all visible clients to tag and focus that tag + awful.key({ modkey, altkey }, "#" .. i + 9, + function () + local tag = client.focus.screen.tags[i] + local clients = awful.screen.focused().clients + if tag then + for _, c in pairs(clients) do + c:move_to_tag(tag) + end + tag:view_only() + end + end, + {description = "move all visible clients to tag #"..i, group = "tag"}), + -- Toggle tag on focused client. + awful.key({ modkey, ctrlkey, shiftkey }, "#" .. 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 = "toggle focused client on tag #" .. i, group = "tag"}) + ) +end + +-- Mouse buttons on the client (whole window, not just titlebar) +keys.clientbuttons = gears.table.join( + awful.button({ }, 1, function (c) client.focus = c; c:raise() end), + awful.button({ modkey }, 1, awful.mouse.client.move), + awful.button({ modkey }, 3, function(c) + awful.mouse.resize(c, nil, {jump_to_corner=true}) + end) +) +-- }}} + +-- Set keys +root.keys(keys.globalkeys) +root.buttons(keys.desktopbuttons) + + + + + + + +return keys diff --git a/config/awesome/noodle/desktop_mode_widget.lua b/config/awesome/noodle/desktop_mode_widget.lua new file mode 100644 index 0000000..5a1e437 --- /dev/null +++ b/config/awesome/noodle/desktop_mode_widget.lua @@ -0,0 +1,120 @@ +local awful = require("awful") +local gears = require("gears") +local beautiful = require("beautiful") +local wibox = require("wibox") + +-- Get theme variables +local floating_color = beautiful.desktop_mode_color_floating or "#1D8CD2" +local tile_color = beautiful.desktop_mode_color_tile or "#2DD283" +local max_color = beautiful.desktop_mode_color_max or "#D21D43" +local floating_text = beautiful.desktop_mode_text_floating or "(fl)" +local tile_text = beautiful.desktop_mode_text_tile or "(ti)" +local max_text = beautiful.desktop_mode_text_max or "(ma)" + +--local desktop_mode_widget = wibox.widget.textbox("") +--desktop_mode_widget.font = beautiful.font +--desktop_mode_widget.align = "center" +local desktop_mode_widget = wibox.widget{ + font = beautiful.font, + markup = '  ', + align = 'center', + valign = 'center', + widget = wibox.widget.textbox +} + +-- Mouse control +desktop_mode_widget:buttons(gears.table.join( + -- Old Left click: toggle between tile and floating + toggle titlebars + -- Left click: toggle titlebar for focused client + awful.button({ }, 1, function () + --switch_modes() + if client.focus ~= nil then + awful.titlebar.toggle(client.focus, beautiful.titlebar_position) + end + end), + -- Right click: Toggle titlebars in all visible clients + awful.button({ }, 3, function () + local clients = awful.screen.focused().clients + for _, c in pairs(clients) do + -- Don't toggle if titlebars are used as borders + if not beautiful.titlebars_imitate_borders then + awful.titlebar.toggle(c, beautiful.titlebar_position) + end + end + end), + -- TODO + awful.button({ }, 4, function () + awful.layout.inc(-1) + --local clients = awful.screen.focused().clients + --for _, c in pairs(clients) do + --awful.titlebar.show(c, beautiful.titlebar_position) + --end + end), + awful.button({ }, 5, function () + awful.layout.inc(1) + --local clients = awful.screen.focused().clients + --for _, c in pairs(clients) do + ---- Don't hide if titlebars are used as borders + --if not beautiful.titlebars_imitate_borders then + --awful.titlebar.hide(c, beautiful.titlebar_position) + --end + --end + end) +)) + +function switch_modes() + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + if current_layout == "floating" then + local clients = awful.screen.focused().clients + for _, c in pairs(clients) do + -- Don't hide if titlebars are used as borders + if not beautiful.titlebars_imitate_borders then + awful.titlebar.hide(c, beautiful.titlebar_position) + end + end + awful.layout.set(awful.layout.suit.tile) + else + --elseif current_layout == "tile" then + local clients = awful.screen.focused().clients + for _, c in pairs(clients) do + awful.titlebar.show(c, beautiful.titlebar_position) + end + -- Delay so that the windows will first be resized properly + -- by the tiling layout + gears.timer.delayed_call(function() + awful.layout.set(awful.layout.suit.floating) + end) + end +end + +local function update_widget() + local current_layout = awful.layout.getname(awful.layout.get(awful.screen.focused())) + local color + local txt + if current_layout == "max" then + color = max_color + txt = max_text + elseif current_layout == "tile" then + color = tile_color + txt = tile_text + elseif current_layout == "floating" then + color = floating_color + txt = floating_text + else + --default + color = tile_color + txt = tile_text + end + + desktop_mode_widget.markup = "" .. txt .. "" +end + +-- Signals +awful.tag.attached_connect_signal(s, "property::selected", function () + update_widget() +end) +awful.tag.attached_connect_signal(s, "property::layout", function () + update_widget() +end) + +return desktop_mode_widget diff --git a/config/awesome/noodle/minimal_tasklist.lua b/config/awesome/noodle/minimal_tasklist.lua new file mode 100644 index 0000000..8eb67d7 --- /dev/null +++ b/config/awesome/noodle/minimal_tasklist.lua @@ -0,0 +1,119 @@ +local awful = require("awful") +local gears = require("gears") +local beautiful = require("beautiful") +local wibox = require("wibox") +local capi = { screen = screen, client = client } + +-- Get theme variables +local visible_clients_color = beautiful.minimal_tasklist_visible_clients_color or "#1D8CD2" +local visible_clients_text = beautiful.minimal_tasklist_visible_clients_text or "v: " +local hidden_clients_color = beautiful.minimal_tasklist_hidden_clients_color or "#2DD283" +local hidden_clients_text = beautiful.minimal_tasklist_hidden_clients_text or "h: " + +local minimal_tasklist = wibox.widget{ + font = beautiful.font, + text = "placeholder", + align = 'center', + valign = 'center', + widget = wibox.widget.textbox +} + --TODO forced_width = ? + +-- Mouse control +minimal_tasklist:buttons(gears.table.join( + -- Restore minimized + awful.button({ }, 1, function () + local c = awful.client.restore() + if c then + client.focus = c + c:raise() + end + end), + -- Close + awful.button({ }, 2, function () + if client.focus ~= nil then + client.focus:kill() + end + end), + -- Minimize + awful.button({ }, 3, function () + if client.focus ~= nil then + client.focus.minimized = true + end + end), + -- Cycle clients + awful.button({ }, 4, function () + awful.client.focus.byidx(-1) + end), + awful.button({ }, 5, function () + awful.client.focus.byidx(1) + end) +)) + +-- Returns the minimized clients in the current tag(s) +local function get_minimized_clients() + local clients = {} + for _, c in ipairs(capi.client.get()) do + if not (c.skip_taskbar or c.hidden + or c.type == "splash" or c.type == "dock" + or c.type == "desktop") and c.minimized + and awful.widget.tasklist.filter.currenttags(c, awful.screen.focused()) then + table.insert(clients,c) + end + end + + return clients +end + +local function update_widget() + local s = awful.screen.focused() + local hidden_clients = get_minimized_clients() + --local hidden_clients = s.hidden_clients + local clients = s.clients + --local color = "#493999" + local txt = hidden_clients_text .. #hidden_clients .. visible_clients_text .. #clients + + -- Padding for single digit numbers + local vpad = "" + local hpad = "" + if #clients < 10 then + vpad = " " + --vpad = "0" + --vpad = "_" + end + if #hidden_clients < 10 then + hpad = " " + --hpad = "0" + --hpad = "_" + end + + minimal_tasklist.text = txt + minimal_tasklist.markup = + "" + .. visible_clients_text .. "" .. vpad .. #clients .. " ·~" + .. "" + .. hidden_clients_text .. "" .. hpad .. #hidden_clients +end + +-- Signals +--minimal_tasklist:connect_signal("mouse::enter", function () + --awful.spawn.with_shell("notify-send hello") +--end) +--minimal_tasklist:connect_signal("mouse::leave", function () + --awful.spawn.with_shell("notify-send bye") +--end) + +client.connect_signal("unmanage", function(c) + update_widget() +end) +client.connect_signal("manage", function(c) + update_widget() +end) +client.connect_signal("property::minimized", function(c) + update_widget() +end) +awful.tag.attached_connect_signal(s, "property::selected", function () + update_widget() +end) + +return minimal_tasklist diff --git a/config/awesome/rc.lua b/config/awesome/rc.lua new file mode 100644 index 0000000..cd9f2c9 --- /dev/null +++ b/config/awesome/rc.lua @@ -0,0 +1,684 @@ +-- ████ +-- ▒▒███ +-- ████████ ██████ ▒███ █████ ████ ██████ +-- ▒▒███▒▒███ ███▒▒███ ▒███ ▒▒███ ▒███ ▒▒▒▒▒███ +-- ▒███ ▒▒▒ ▒███ ▒▒▒ ▒███ ▒███ ▒███ ███████ +-- ▒███ ▒███ ███ ▒███ ▒███ ▒███ ███▒▒███ +-- █████ ▒▒██████ ██ █████ ▒▒████████▒▒████████ +-- ▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ +-- +-------------------------------------------------------------------------------- + +local theme_collection = { + "manta", -- 1 -- + --"whatever", -- 2 -- + -- Add more themes here +} + +-- Change this number to use a different theme +local theme_name = theme_collection[1] + +-------------------------------------------------------------------------------- + +-- Jit +--pcall(function() jit.on() end) + +-- Theme handling library +local beautiful = require("beautiful") +-- Themes define colours, icons, font and wallpapers. +local theme_dir = os.getenv("HOME") .. "/.config/awesome/themes/" +beautiful.init( theme_dir .. theme_name .. "/theme.lua" ) +--beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua") + +-- Standard awesome library +local gears = require("gears") +local awful = require("awful") +require("awful.autofocus") +-- Widget and layout library +local wibox = require("wibox") +-- Default notification library +local naughty = require("naughty") +local menubar = require("menubar") +local hotkeys_popup = require("awful.hotkeys_popup").widget +-- Enable hotkeys help widget for VIM and other apps +-- when client with a matching name is opened: +require("awful.hotkeys_popup.keys") + +-- {{{ Initialize stuff +local helpers = require("helpers") +local bars = require("bars") +local keys = require("keys") +local titlebars = require("titlebars") +-- }}} + +-- {{{ Third party stuff +--local volumebar_widget = require("third_party.awesome-wm-widgets.volumebar-widget.volumebar") +--local mpdarc_widget = require("third_party.awesome-wm-widgets.mpdarc-widget.mpdarc") +-- }}} + +-- {{{ 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 +-- This is used later as the default terminal and editor to run. +terminal = "termite" +floating_terminal = "termite --class Diptera" +tmux = terminal .. " -e tmux new " +floating_tmux = terminal .. " --class Diptera -e tmux new " +editor = "vim" +--editor = os.getenv("EDITOR") or "nano" +editor_cmd = terminal .. " -e " .. editor .. " " + +-- Table of layouts to cover with awful.layout.inc, order matters. +awful.layout.layouts = { + -- I only ever use these + awful.layout.suit.tile, + awful.layout.suit.floating, + awful.layout.suit.max, + --awful.layout.suit.spiral, + --awful.layout.suit.spiral.dwindle, + --awful.layout.suit.tile.top, + --awful.layout.suit.fair, + --awful.layout.suit.fair.horizontal, + --awful.layout.suit.tile.left, + --awful.layout.suit.tile.bottom, + --awful.layout.suit.max.fullscreen, + --awful.layout.suit.corner.nw, + --awful.layout.suit.magnifier, + --awful.layout.suit.corner.ne, + --awful.layout.suit.corner.sw, + --awful.layout.suit.corner.se, +} +-- }}} + +-- {{{ Notifications +-- TODO: some options are not respected when the notification is created +-- through lib-notify. Naughty works as expected. + +-- Icon size +naughty.config.defaults['icon_size'] = beautiful.notification_icon_size + +-- Timeouts +naughty.config.defaults.timeout = 5 +naughty.config.presets.low.timeout = 2 +naughty.config.presets.critical.timeout = 12 + +-- Apply theme variables +naughty.config.padding = beautiful.notification_padding +naughty.config.spacing = beautiful.notification_spacing +naughty.config.defaults.margin = beautiful.notification_margin +naughty.config.defaults.border_width = beautiful.notification_border_width + +naughty.config.presets.normal = { + font = beautiful.font, + fg = beautiful.notification_fg, + bg = beautiful.notification_bg, + border_width = beautiful.notification_border_width, + margin = beautiful.notification_margin, + position = beautiful.notification_position +} + +naughty.config.presets.low = { + font = beautiful.font, + fg = beautiful.notification_fg, + bg = beautiful.notification_bg, + border_width = beautiful.notification_border_width, + margin = beautiful.notification_margin, + position = beautiful.notification_position +} + +naughty.config.presets.ok = naughty.config.presets.low +naughty.config.presets.info = naughty.config.presets.low +naughty.config.presets.warn = naughty.config.presets.normal + +naughty.config.presets.critical = { + font = beautiful.font, + fg = beautiful.notification_crit_fg, + bg = beautiful.notification_crit_bg, + border_width = beautiful.notification_border_width, + margin = beautiful.notification_margin, + position = beautiful.notification_position +} + +-- }}} + +-- {{{ Menu +-- Create a launcher widget and a main menu +myawesomemenu = { + { "hotkeys", function() return false, hotkeys_popup.show_help end}, + { "manual", terminal .. " -e \"man awesome\"" }, + { "restart", awesome.restart }, + { "quit", function() awesome.quit() end} +} +mymusicmenu = { + { "mpd toggle", function() awful.spawn.with_shell("mpc toggle") end}, + { "mpd next", function() awful.spawn.with_shell("mpc next") end}, + { "mpd previous", function() awful.spawn.with_shell("mpc prev") end}, + { "ncmpcpp", function() awful.spawn.with_shell(terminal .. " -e ncmpcpp") end}, + { "--------------", nil}, + { "mpv toggle", function() awful.spawn.with_shell("mpvc toggle") end}, + { "mpv next", function() awful.spawn.with_shell("mpvc next") end}, + { "mpv previous", function() awful.spawn.with_shell("mpvc prev") end}, + { "mpvtube", function() awful.spawn.with_shell("~/scr/Rofi/rofi_mpvtube") end} +} + + + +-- Need to allow these commands to be run without password +-- Or if you are using systemd: systemctl [suspend|hibernate] +mypowermenu = { + { "reboot", "reboot" }, + { "suspend", "sudo pm-suspend" }, + { "hibernate", "sudo pm-hibernate" }, + { "poweroff", "poweroff" } +} + +--mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, + --{ "music", mymusicmenu, beautiful.awesome_icon }, + --{ "power", mypowermenu, beautiful.awesome_icon }, +mymainmenu = awful.menu({ items = { + { "awesome", myawesomemenu }, + { "music", mymusicmenu }, + { "firefox", "firefox" }, + { "files", "nemo" }, + { "discord", "discord" }, + { "gimp", "gimp" }, + { "appearance", "lxappearance" }, + { "volume", "pavucontrol" }, + { "games", "lutris" }, + { "steam", "steam" }, + { "terminal", terminal }, + { "power", mypowermenu } + } + }) + +mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, + menu = mymainmenu }) + +-- Menubar configuration +menubar.utils.terminal = terminal -- Set the terminal for applications that require it +-- }}} + +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 + + -- Method 1: Built in function + --gears.wallpaper.maximized(wallpaper, s, true) + + -- Method 2: Set theme's wallpaper with feh + --awful.spawn.with_shell("feh --bg-fill " .. wallpaper) + + -- Method 3: Set last wallpaper with feh + awful.spawn.with_shell(os.getenv("HOME") .. "/.fehbg") + end +end + +-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) +screen.connect_signal("property::geometry", set_wallpaper) + +-- Tag Names +local tagnames = beautiful.tagnames or { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" } + +awful.screen.connect_for_each_screen(function(s) + -- Wallpaper + set_wallpaper(s) + + -- Layouts + -- Each screen has its own tag table. + local l = awful.layout.suit -- Alias to save time :) + local layouts = { l.max, l.floating, l.max, l.tile , l.tile, + l.max, l.floating, l.max, l.floating, l.floating} + awful.tag(tagnames, s, layouts) +end) + +-- {{{ 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 = keys.clientkeys, + buttons = keys.clientbuttons, + screen = awful.screen.preferred, + size_hints_honor = false, + honor_workarea = true, + honor_padding = true, + placement = awful.placement.no_overlap+awful.placement.no_offscreen + } + }, + + -- Floating clients + { rule_any = { + instance = { + "DTA", -- Firefox addon DownThemAll. + "copyq", -- Includes session name in class. + }, + class = { + "Galculator", + "feh", + "Gpick", + "Diptera", -- Floating Termite + }, + + name = { + "Event Tester", -- xev + }, + role = { + "AlarmWindow", -- Thunderbird's calendar. + "pop-up", -- e.g. Google Chrome's (detached) Developer Tools. + } + }, properties = { floating = true, ontop = false }}, + + -- Add titlebars to normal clients and dialogs + -- Not needed anymore -- + { rule_any = {type = { "normal", "dialog" } + }, properties = { titlebars_enabled = true }--, + --callback = function (c) + --end + }, + + -- Centered clients + { rule_any = { + type = { + "dialog", + }, + class = { + "feh", + }, + name = { + "Save As", + }, + role = { + "GtkFileChooserDialog", + } + }, properties = {}, + callback = function (c) + awful.placement.centered(c,{honor_workarea=true}) + end + }, + + -- Titlebars OFF (explicitly) + -- Titlebars of these clients will be hidden regardless of the theme setting + { rule_any = { + class = { + "qutebrowser", + "feh", + "Gimp", + "Sublime_text", + --"discord", + --"TelegramDesktop", + "Firefox", + "Chromium-browser", + "Rofi", + }, + }, properties = {}, + callback = function (c) + if not beautiful.titlebars_imitate_borders then + awful.titlebar.hide(c, beautiful.titlebar_position) + end + end + }, + + + -- Titlebars ON (explicitly) + -- Titlebars of these clients will be shown regardless of the theme setting + { rule_any = { + class = { + --"feh", + --"qutebrowser", + --"Firefox", + --"Rofi" + }, + }, properties = {}, + callback = function (c) + awful.titlebar.show(c, beautiful.titlebar_position) + end + }, + + -- Skip taskbar + { rule_any = { + class = { + --"feh", + }, + + }, properties = {}, + callback = function (c) + c.skip_taskbar = true + end + }, + + -- Fixed terminal geometry + { rule_any = { + class = { + "Termite", + "Diptera", + "mpvtube", + "kitty", + "st-256color", + "st", + "URxvt", + "XTerm", + }, + }, properties = { width = 640, height = 400 } + }, + + -- File managers + { rule_any = { + class = { + "Nemo", + "Thunar" + }, + }, properties = { floating = true, width = 580, height = 440 } + }, + + -- Rofi configuration + -- Needed only if option "-normal-window" is used + { rule_any = { + class = { + "Rofi", + }, + }, properties = { floating = true, ontop = true, sticky = true }, + callback = function (c) + c.skip_taskbar = true + awful.placement.centered(c,{honor_workarea=true}) + end + }, + + -- Screenruler + { rule_any = { + class = { + "Screenruler", + }, + }, properties = { floating = true, ontop = true }, + callback = function (c) + c.border_width = 0 + awful.titlebar.hide(c, beautiful.titlebar_position) + awful.placement.centered(c,{honor_workarea=true}) + end + }, + + -- On screen keyboard + --{ rule_any = { + --class = { + --"Onboard", + --}, + --}, properties = { floating = true, ontop = false, sticky = false, focusable = false }, + --callback = function (c) + ----c.skip_taskbar = true + ----awful.placement.centered(c,{honor_workarea=true}) + --end + --}, + + -- Scratchpad and calendar (calcurse) + { rule_any = { + class = { + "scratchpad", + "calendar", + }, + }, properties = { tag = awful.screen.focused().tags[10], floating = true, ontop = false, sticky = true }, + callback = function (c) + c.skip_taskbar = true + c.minimized = true + awful.placement.centered(c,{honor_workarea=true}) + end + }, + + --------------------------------------------- + -- Start application on specific workspace -- + --------------------------------------------- + -- Example: + -- Set Firefox to always map on the tag named "2" on screen 1. + --{ rule = { class = "Firefox" }, + --properties = { screen = 1, tag = "2" } }, + -- Browsing + { rule_any = { + class = { + "Firefox", + "Chromium-browser", + "qutebrowser", + }, + --local clients = + }, properties = { screen = 1, tag = awful.screen.focused().tags[1] } }, + + -- Chatting + { rule_any = { + class = { + "discord", + "TelegramDesktop", + "TeamSpeak 3", + }, + --local clients = + }, properties = { screen = 1, tag = awful.screen.focused().tags[3] } }, + + -- Photo editing + { rule_any = { + class = { + "Gimp", + "Inkscape", + }, + }, properties = { screen = 1, tag = awful.screen.focused().tags[6] } }, + + -- Gaming + { rule_any = { + class = { + "Steam", + "battle.net.exe", + "Lutris", + }, + }, properties = { screen = 1, tag = awful.screen.focused().tags[8] } }, + + -- Music + { rule_any = { + class = { + "mpvtube", + }, + --name = { + --"mpvtube", + --}, + + }, properties = { screen = 1, tag = awful.screen.focused().tags[10] }, + callback = function (c) + awful.placement.centered(c,{honor_workarea=true}) + gears.timer.delayed_call(function() + c.urgent = false + end) + end + }, +} +-- }}} + +-- {{{ Signals +-- Signal function to execute when a new client appears. +client.connect_signal("manage", function (c) + -- Set every new window as a 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 + + -- Hide titlebars if required by the theme + if not beautiful.titlebars_enabled then + awful.titlebar.hide(c, beautiful.titlebar_position) + end + + -- If the layout is not floating, every floating client that appears is centered + if awful.layout.get(mouse.screen) ~= awful.layout.suit.floating then + awful.placement.centered(c,{honor_workarea=true}) + else + -- If the layout is floating, and there is no other client visible, center it + if #mouse.screen.clients == 1 then + awful.placement.centered(c,{honor_workarea=true}) + end + end +end) + +-- Enable sloppy focus, so that focus follows mouse. +--client.connect_signal("mouse::enter", function(c) +-- if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier +-- and awful.client.focus.filter(c) then +-- client.focus = c +-- end +--end) + +-- Rounded corners +if beautiful.border_radius ~= 0 then + client.connect_signal("manage", function (c, startup) + if not c.fullscreen then + c.shape = helpers.rrect(beautiful.border_radius) + end + end) + + -- Make sure fullscreen clients do not have rounded corners + client.connect_signal("property::fullscreen", function (c) + if c.fullscreen then + -- Use delayed_call in order to avoid flickering when corners + -- change shape + gears.timer.delayed_call(function() + c.shape = helpers.rect() + end) + else + c.shape = helpers.rrect(beautiful.border_radius) + end + end) +end + +-- When a client starts up in fullscreen, resize it to cover the fullscreen a short moment later +-- Fixes wrong geometry when titlebars are enabled +client.connect_signal("property::fullscreen", function(c) + if c.fullscreen then + gears.timer.delayed_call(function() + if c.valid then + c:geometry(c.screen.geometry) + end + end) + end +end) + +-- Center client when floating property changes +--client.connect_signal("property::floating", function(c) + --awful.placement.centered(c,{honor_workarea=true}) +--end) + +-- Apply shapes +-- beautiful.notification_shape = helpers.infobubble(beautiful.notification_border_radius) +beautiful.notification_shape = helpers.rrect(beautiful.notification_border_radius) +beautiful.snap_shape = helpers.rrect(beautiful.border_radius * 2) +beautiful.taglist_shape = helpers.rrect(beautiful.taglist_item_roundness) + +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) + +-- Scratchpad gets minimized when it loses focus +--client.connect_signal("unfocus", function(c) + --if c.class == "scratchpad" or c.class == "calendar" then + --c.minimized = true + --end +--end) + +-- Scratchpad gets minimized if it is focused and tag changes +awful.tag.attached_connect_signal(s, "property::selected", function () + local c = client.focus + if c ~= nil then + if c.class == "scratchpad" or c.class == "calendar" then + c.minimized = true + end + end +end) + +-- Test signal +-- Use the following line to trigger it: +-- awesome.emit_signal("dummy") +--awesome.connect_signal("dummy", function(c) + --naughty.notify({ preset = naughty.config.presets.normal, + --title = "bitch", + --text = "dummy" }) +--end) + +-- Floating: restore geometry +tag.connect_signal('property::layout', + function(t) + for k, c in ipairs(t:clients()) do + if awful.layout.get(mouse.screen) == awful.layout.suit.floating then + -- Geometry x = 0 and y = 0 most probably means that the + -- clients have been spawned in a non floating layout, and thus + -- they don't have their floating_geometry set properly. + -- If that is the case, don't change their geometry + local cgeo = awful.client.property.get(c, 'floating_geometry') + if cgeo ~= nil then + if not (cgeo.x == 0 and cgeo.y == 0) then + c:geometry(awful.client.property.get(c, 'floating_geometry')) + end + end + --c:geometry(awful.client.property.get(c, 'floating_geometry')) + end + end + end +) + +client.connect_signal('manage', + function(c) + if awful.layout.get(mouse.screen) == awful.layout.suit.floating then + awful.client.property.set(c, 'floating_geometry', c:geometry()) + end + end +) + +client.connect_signal('property::geometry', + function(c) + if awful.layout.get(mouse.screen) == awful.layout.suit.floating then + awful.client.property.set(c, 'floating_geometry', c:geometry()) + end + end +) + +-- Make rofi possible to raise minimized clients +-- Note: causes clients to unminimize after restarting awesome +client.connect_signal("request::activate", + function(c, context, hints) + if c.minimized then + c.minimized = false + end + awful.ewmh.activate(c, context, hints) + end +) + +-- Startup applications +awful.spawn.with_shell( os.getenv("HOME") .. "/.config/awesome/autostart.sh") + +-- }}} diff --git a/config/awesome/themes/manta/icons/submenu.svg b/config/awesome/themes/manta/icons/submenu.svg new file mode 100644 index 0000000..54052a6 --- /dev/null +++ b/config/awesome/themes/manta/icons/submenu.svg @@ -0,0 +1,11 @@ + + + diff --git a/config/awesome/themes/manta/theme.lua b/config/awesome/themes/manta/theme.lua new file mode 100644 index 0000000..b90e289 --- /dev/null +++ b/config/awesome/themes/manta/theme.lua @@ -0,0 +1,333 @@ +-- _ _ _ _ +-- | |__ _____ _| (_) | _____ +-- | '_ \ / _ \ \/ / | | |/ / _ \ +-- | |_) | (_) > <| | | < __/ +-- |_.__/ \___/_/\_\_|_|_|\_\___| +-- +-- A *box lookalike + +local theme_assets = require("beautiful.theme_assets") +local xresources = require("beautiful.xresources") +local dpi = xresources.apply_dpi +local gfs = require("gears.filesystem") +local themes_path = gfs.get_themes_dir() +local theme_name = "manta" +local icon_path = os.getenv("HOME") .. "/.config/awesome/themes/" .. theme_name .. "/icons/" +local titlebar_icon_path = os.getenv("HOME") .. "/.config/awesome/themes/" .. theme_name .. "/titlebar/" +local tip = titlebar_icon_path --alias to save time +local xrdb = xresources.get_current_theme() +local theme = dofile(themes_path.."default/theme.lua") +--local theme = {} + +theme.tip = titlebar_icon_path -- So a script can access it + +local awful = require("awful") +-- Used to make it easier to align the panels in specific monitor positions +local screen_width = awful.screen.focused().geometry.width +local screen_height = awful.screen.focused().geometry.height + +theme.wallpaper = os.getenv("HOME") .. "/.config/awesome/themes/" .. theme_name .. "/wall.png" +theme.font = "monospace 12" +--theme.font = "sans-serif 12" + +local accent_color = xrdb.color14 +local focused_color = xrdb.color14 +local unfocused_color = xrdb.color7 +local urgent_color = xrdb.color1 +local backdrop_color = awesome.xrdb_get_value("", "color16") + +theme.bg_dark = xrdb.background +theme.bg_normal = xrdb.background +theme.bg_focus = xrdb.background +theme.bg_urgent = xrdb.background +theme.bg_minimize = xrdb.color8 +theme.bg_systray = bg_dark + +theme.fg_normal = xrdb.color7 +theme.fg_focus = focused_color +theme.fg_urgent = urgent_color +theme.fg_minimize = xrdb.color8 + +-- Gaps +theme.useless_gap = dpi(5) +-- This is used to manually determine how far away from the +-- screen edge the bars should be (if they are detached) +theme.screen_margin = dpi(5) + +-- Borders +theme.border_width = dpi(0) +theme.border_normal = xrdb.color0 +theme.border_focus = xrdb.color0 +-- Rounded corners +theme.border_radius = dpi(6) + +-- Titlebars +theme.titlebars_enabled = true +theme.titlebar_size = dpi(32) +theme.titlebar_title_enabled = false +theme.titlebar_font = theme.font -- BUG: Uses theme.font regardless +-- Window title alignment: left, right, center +theme.titlebar_title_align = "center" +-- Titlebar position: top, bottom, left, right +theme.titlebar_position = "top" +-- Use 4 titlebars around the window to imitate borders +theme.titlebars_imitate_borders = false +theme.titlebar_bg = xrdb.color7 +-- theme.titlebar_bg_focus = xrdb.color5 +-- theme.titlebar_bg_normal = xrdb.color13 +theme.titlebar_fg_focus = xrdb.color7 +theme.titlebar_fg_normal = xrdb.color15 +--theme.titlebar_fg = xrdb.color7 + +-- Variables set for theming notifications: +-- notification_font +-- notification_[bg|fg] +-- notification_[width|height|margin] +-- notification_[border_color|border_width|shape|opacity] + +-- Values: bottom_left, bottom_right, bottom_middle, +-- top_left, top_right, top_middle +theme.notification_position = "top_right" +theme.notification_border_width = 0 +theme.notification_border_radius = theme.border_radius +theme.notification_border_color = xrdb.color10 +theme.notification_bg = xrdb.color7 +theme.notification_fg = xrdb.color0 +theme.notification_crit_bg = urgent_color +theme.notification_crit_fg = xrdb.color0 +theme.notification_margin = dpi(15) +theme.notification_icon_size = dpi(50) +--theme.notification_height = dpi(80) +--theme.notification_width = dpi(300) +--theme.notification_opacity = 0.7 +theme.notification_font = theme.font +theme.notification_padding = theme.screen_margin * 2 +theme.notification_spacing = theme.screen_margin * 2 + +-- Edge snap +theme.snap_bg = theme.bg_focus +if theme.border_width == 0 then + theme.snap_border_width = dpi(8) +else + theme.snap_border_width = theme.border_width * 2 +end + +-- Tag names +-- Symbols:       +local symb = "  " +theme.tagnames = { symb, symb, symb, symb, symb, symb, symb, symb, symb, symb } +-- Substitutes:    +-- Nature:         +--theme.tagnames = { "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  " } +--theme.tagnames = { " i ", " ii ", " iii ", " iv ", " v ", " vi ", " vii ", " viii ", " ix ", " x " } + +-- Widget separator +--theme.separator_text = " / " +--theme.separator_text = " / " +--theme.separator_text = " ) ( " +--theme.separator_text = "  " +--theme.separator_text = " | " +--theme.separator_text = " " +--theme.separator_text = " :: " +--theme.separator_text = " ⠐ " +--theme.separator_text = " • " +--theme.separator_text = " •• " +--theme.separator_text = "  " +theme.separator_text = "  " +theme.separator_fg = xrdb.color8 + +-- Wibar +-- (The panel items can be customized in rc.lua) +theme.wibar_position = "bottom" +theme.wibar_detached = true +theme.wibar_height = dpi(40) +theme.wibar_fg = xrdb.color0 +theme.wibar_bg = xrdb.color7 +--theme.wibar_opacity = 0.7 +theme.wibar_border_color = xrdb.color0 +theme.wibar_border_width = 0 +theme.wibar_border_radius = theme.border_radius +--theme.wibar_width = screen_width - theme.screen_margin * 4 -theme.wibar_border_width * 2 +theme.wibar_width = 885 +--theme.wibar_x = screen_width / 2 - theme.wibar_width - theme.screen_margin * 2 +--theme.wibar_x = theme.screen_margin * 2 +--theme.wibar_x = screen_width - theme.wibar_width - theme.wibar_border_width * 2 - theme.screen_margin * 2 +--theme.wibar_y = theme.screen_margin * 2 + +-- Another wibar (optional) +theme.wibar_alt_enabled = false +--theme.wibar_alt_position = "bottom" +theme.wibar_alt_position = "left" --fake position so it does not increase screen margin +theme.wibar_alt_detached = false +theme.wibar_alt_height = dpi(40) +theme.wibar_alt_fg = xrdb.color7 +theme.wibar_alt_bg = xrdb.color0 +--theme.wibar_alt_opacity = 0.7 +theme.wibar_alt_border_color = xrdb.color0 +theme.wibar_alt_border_width = 0 +theme.wibar_alt_border_radius = theme.border_radius +theme.wibar_alt_width = 420 +theme.wibar_alt_x = screen_width / 2 + theme.screen_margin +--theme.wibar_alt_x = screen_width - theme.wibar_alt_width - theme.wibar_alt_border_width * 2 - theme.screen_margin * 2 +theme.wibar_alt_y = theme.screen_margin * 2 +--theme.wibar_alt_y = screen_height - theme.screen_margin * 2 - theme.wibar_alt_height - theme.wibar_alt_border_width * 2 + +-- Widgets +theme.prefix_fg = xrdb.color8 + + --There are other variable sets + --overriding the default one when + --defined, the sets are: + --taglist_[bg|fg]_[focus|urgent|occupied|empty|volatile] + --tasklist_[bg|fg]_[focus|urgent] + --titlebar_[bg|fg]_[normal|focus] + --tooltip_[font|opacity|fg_color|bg_color|border_width|border_color] + --mouse_finder_[color|timeout|animate_timeout|radius|factor] + --prompt_[fg|bg|fg_cursor|bg_cursor|font] + --hotkeys_[bg|fg|border_width|border_color|shape|opacity|modifiers_fg|label_bg|label_fg|group_margin|font|description_font] + --Example: +--theme.taglist_bg_focus = "#ff0000" + + --Tasklist +theme.tasklist_disable_icon = true +theme.tasklist_plain_task_name = true +theme.tasklist_bg_focus = xrdb.color0 .. "00" +theme.tasklist_fg_focus = focused_color +theme.tasklist_bg_normal = xrdb.color0 .. "00" +theme.tasklist_fg_normal = unfocused_color +theme.tasklist_bg_minimize = xrdb.color0 .. "00" +theme.tasklist_fg_minimize = theme.fg_minimize +theme.tasklist_bg_urgent = xrdb.color0 .. "00" +theme.tasklist_fg_urgent = urgent_color +theme.tasklist_spacing = 5 +theme.tasklist_align = "center" + +-- Prompt +theme.prompt_fg = accent_color + +-- Taglist +theme.taglist_font = theme.font +theme.taglist_bg_focus = xrdb.color0 .. "00" +theme.taglist_fg_focus = xrdb.color9 +theme.taglist_bg_occupied = xrdb.color0 .. "00" +theme.taglist_fg_occupied = xrdb.color1 +theme.taglist_bg_empty = xrdb.color0 .. "00" +theme.taglist_fg_empty = xrdb.color15 +theme.taglist_bg_urgent = xrdb.color0 .. "00" +theme.taglist_fg_urgent = urgent_color +theme.taglist_disable_icon = true +theme.taglist_spacing = dpi(0) +--theme.taglist_item_roundness = 0 +theme.taglist_item_roundness = theme.border_radius +-- Generate taglist squares: +local taglist_square_size = dpi(0) +theme.taglist_squares_sel = theme_assets.taglist_squares_sel( + taglist_square_size, theme.fg_focus +) +theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel( + taglist_square_size, theme.fg_normal +) + +-- Variables set for theming the menu: +-- menu_[bg|fg]_[normal|focus] +-- menu_[border_color|border_width] +theme.menu_submenu_icon = icon_path.."submenu.svg" +theme.menu_height = dpi(25) +theme.menu_width = dpi(200) + +-- You can add as many variables as +-- you wish and access them by using +-- beautiful.variable in your rc.lua +--theme.bg_widget = "#cc0000" + +-- Define the images to load +theme.titlebar_close_button_normal = tip .. "/close_normal.svg" +theme.titlebar_close_button_focus = tip .. "/close_focus.svg" +theme.titlebar_minimize_button_normal = tip .. "/minimize_normal.svg" +theme.titlebar_minimize_button_focus = tip .. "/minimize_focus.svg" +theme.titlebar_ontop_button_normal_inactive = tip .. "/ontop_normal_inactive.svg" +theme.titlebar_ontop_button_focus_inactive = tip .. "/ontop_focus_inactive.svg" +theme.titlebar_ontop_button_normal_active = tip .. "/ontop_normal_active.svg" +theme.titlebar_ontop_button_focus_active = tip .. "/ontop_focus_active.svg" +theme.titlebar_sticky_button_normal_inactive = tip .. "/sticky_normal_inactive.svg" +theme.titlebar_sticky_button_focus_inactive = tip .. "/sticky_focus_inactive.svg" +theme.titlebar_sticky_button_normal_active = tip .. "/sticky_normal_active.svg" +theme.titlebar_sticky_button_focus_active = tip .. "/sticky_focus_active.svg" +theme.titlebar_floating_button_normal_inactive = tip .. "/floating_normal_inactive.svg" +theme.titlebar_floating_button_focus_inactive = tip .. "/floating_focus_inactive.svg" +theme.titlebar_floating_button_normal_active = tip .. "/floating_normal_active.svg" +theme.titlebar_floating_button_focus_active = tip .. "/floating_focus_active.svg" +theme.titlebar_maximized_button_normal_inactive = tip .. "/maximized_normal_inactive.svg" +theme.titlebar_maximized_button_focus_inactive = tip .. "/maximized_focus_inactive.svg" +theme.titlebar_maximized_button_normal_active = tip .. "/maximized_normal_active.svg" +theme.titlebar_maximized_button_focus_active = tip .. "/maximized_focus_active.svg" +-- (hover) +theme.titlebar_close_button_normal_hover = tip .. "/close_normal_hover.svg" +theme.titlebar_close_button_focus_hover = tip .. "/close_focus_hover.svg" +theme.titlebar_minimize_button_normal_hover = tip .. "/minimize_normal_hover.svg" +theme.titlebar_minimize_button_focus_hover = tip .. "/minimize_focus_hover.svg" +theme.titlebar_ontop_button_normal_inactive_hover = tip .. "/ontop_normal_inactive_hover.svg" +theme.titlebar_ontop_button_focus_inactive_hover = tip .. "/ontop_focus_inactive_hover.svg" +theme.titlebar_ontop_button_normal_active_hover = tip .. "/ontop_normal_active_hover.svg" +theme.titlebar_ontop_button_focus_active_hover = tip .. "/ontop_focus_active_hover.svg" +theme.titlebar_sticky_button_normal_inactive_hover = tip .. "/sticky_normal_inactive_hover.svg" +theme.titlebar_sticky_button_focus_inactive_hover = tip .. "/sticky_focus_inactive_hover.svg" +theme.titlebar_sticky_button_normal_active_hover = tip .. "/sticky_normal_active_hover.svg" +theme.titlebar_sticky_button_focus_active_hover = tip .. "/sticky_focus_active_hover.svg" +theme.titlebar_floating_button_normal_inactive_hover = tip .. "/floating_normal_inactive_hover.svg" +theme.titlebar_floating_button_focus_inactive_hover = tip .. "/floating_focus_inactive_hover.svg" +theme.titlebar_floating_button_normal_active_hover = tip .. "/floating_normal_active_hover.svg" +theme.titlebar_floating_button_focus_active_hover = tip .. "/floating_focus_active_hover.svg" +theme.titlebar_maximized_button_normal_inactive_hover = tip .. "/maximized_normal_inactive_hover.svg" +theme.titlebar_maximized_button_focus_inactive_hover = tip .. "/maximized_focus_inactive_hover.svg" +theme.titlebar_maximized_button_normal_active_hover = tip .. "/maximized_normal_active_hover.svg" +theme.titlebar_maximized_button_focus_active_hover = tip .. "/maximized_focus_active_hover.svg" + +-- You can use your own layout icons like this: +theme.layout_fairh = icon_path .. "fairh.png" +theme.layout_fairv = icon_path .. "fairv.png" +theme.layout_floating = icon_path .. "floating.png" +theme.layout_magnifier = icon_path .. "magnifier.png" +theme.layout_max = icon_path .. "max.png" +theme.layout_fullscreen = icon_path .. "fullscreen.png" +theme.layout_tilebottom = icon_path .. "tilebottom.png" +theme.layout_tileleft = icon_path .. "tileleft.png" +theme.layout_tile = icon_path .. "tile.png" +theme.layout_tiletop = icon_path .. "tiletop.png" +theme.layout_spiral = icon_path .. "spiral.png" +theme.layout_dwindle = icon_path .. "dwindle.png" +theme.layout_cornernw = icon_path .. "cornernw.png" +theme.layout_cornerne = icon_path .. "cornerne.png" +theme.layout_cornersw = icon_path .. "cornersw.png" +theme.layout_cornerse = icon_path .. "cornerse.png" + +-- Recolor layout icons +--theme = theme_assets.recolor_layout(theme, xrdb.color1) + +-- Desktop mode widget variables +-- Symbols    +theme.desktop_mode_color_floating = xrdb.color4 +theme.desktop_mode_color_tile = xrdb.color4 +theme.desktop_mode_color_max = xrdb.color3 +theme.desktop_mode_text_floating = "" +theme.desktop_mode_text_tile = "" +theme.desktop_mode_text_max = "" +-- Minimal tasklist widget variables +theme.minimal_tasklist_visible_clients_color = focused_color +theme.minimal_tasklist_visible_clients_text = "  " +theme.minimal_tasklist_hidden_clients_color = xrdb.color8 +theme.minimal_tasklist_hidden_clients_text = "  " + + +-- Generate Awesome icon: +theme.awesome_icon = theme_assets.awesome_icon( + theme.menu_height, theme.bg_focus, theme.fg_focus +) + +-- Define the icon theme for application icons. If not set then the icons +-- from /usr/share/icons and /usr/share/icons/hicolor will be used. +theme.icon_theme = "/usr/share/icons/Numix" + +return theme + +-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/config/awesome/themes/manta/titlebar/button_focus.svg b/config/awesome/themes/manta/titlebar/button_focus.svg new file mode 100644 index 0000000..54052a6 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/button_focus.svg @@ -0,0 +1,11 @@ + + + diff --git a/config/awesome/themes/manta/titlebar/button_hover.svg b/config/awesome/themes/manta/titlebar/button_hover.svg new file mode 100644 index 0000000..7b6005a --- /dev/null +++ b/config/awesome/themes/manta/titlebar/button_hover.svg @@ -0,0 +1,11 @@ + + + diff --git a/config/awesome/themes/manta/titlebar/button_normal.svg b/config/awesome/themes/manta/titlebar/button_normal.svg new file mode 100644 index 0000000..9d9c73a --- /dev/null +++ b/config/awesome/themes/manta/titlebar/button_normal.svg @@ -0,0 +1,11 @@ + + + diff --git a/config/awesome/themes/manta/titlebar/close_focus.svg b/config/awesome/themes/manta/titlebar/close_focus.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/close_focus.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/close_focus_hover.svg b/config/awesome/themes/manta/titlebar/close_focus_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/close_focus_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/close_normal.svg b/config/awesome/themes/manta/titlebar/close_normal.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/close_normal.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/close_normal_hover.svg b/config/awesome/themes/manta/titlebar/close_normal_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/close_normal_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/floating_focus_active.svg b/config/awesome/themes/manta/titlebar/floating_focus_active.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/floating_focus_active.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/floating_focus_active_hover.svg b/config/awesome/themes/manta/titlebar/floating_focus_active_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/floating_focus_active_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/floating_focus_inactive.svg b/config/awesome/themes/manta/titlebar/floating_focus_inactive.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/floating_focus_inactive.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/floating_focus_inactive_hover.svg b/config/awesome/themes/manta/titlebar/floating_focus_inactive_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/floating_focus_inactive_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/floating_normal_active.svg b/config/awesome/themes/manta/titlebar/floating_normal_active.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/floating_normal_active.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/floating_normal_active_hover.svg b/config/awesome/themes/manta/titlebar/floating_normal_active_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/floating_normal_active_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/floating_normal_inactive.svg b/config/awesome/themes/manta/titlebar/floating_normal_inactive.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/floating_normal_inactive.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/floating_normal_inactive_hover.svg b/config/awesome/themes/manta/titlebar/floating_normal_inactive_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/floating_normal_inactive_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/maximized_focus_active.svg b/config/awesome/themes/manta/titlebar/maximized_focus_active.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/maximized_focus_active.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/maximized_focus_active_hover.svg b/config/awesome/themes/manta/titlebar/maximized_focus_active_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/maximized_focus_active_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/maximized_focus_inactive.svg b/config/awesome/themes/manta/titlebar/maximized_focus_inactive.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/maximized_focus_inactive.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/maximized_focus_inactive_hover.svg b/config/awesome/themes/manta/titlebar/maximized_focus_inactive_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/maximized_focus_inactive_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/maximized_normal_active.svg b/config/awesome/themes/manta/titlebar/maximized_normal_active.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/maximized_normal_active.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/maximized_normal_active_hover.svg b/config/awesome/themes/manta/titlebar/maximized_normal_active_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/maximized_normal_active_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/maximized_normal_inactive.svg b/config/awesome/themes/manta/titlebar/maximized_normal_inactive.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/maximized_normal_inactive.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/maximized_normal_inactive_hover.svg b/config/awesome/themes/manta/titlebar/maximized_normal_inactive_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/maximized_normal_inactive_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/minimize_focus.svg b/config/awesome/themes/manta/titlebar/minimize_focus.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/minimize_focus.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/minimize_focus_hover.svg b/config/awesome/themes/manta/titlebar/minimize_focus_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/minimize_focus_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/minimize_normal.svg b/config/awesome/themes/manta/titlebar/minimize_normal.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/minimize_normal.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/minimize_normal_hover.svg b/config/awesome/themes/manta/titlebar/minimize_normal_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/minimize_normal_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/ontop_focus_active.svg b/config/awesome/themes/manta/titlebar/ontop_focus_active.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/ontop_focus_active.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/ontop_focus_active_hover.svg b/config/awesome/themes/manta/titlebar/ontop_focus_active_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/ontop_focus_active_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/ontop_focus_inactive.svg b/config/awesome/themes/manta/titlebar/ontop_focus_inactive.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/ontop_focus_inactive.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/ontop_focus_inactive_hover.svg b/config/awesome/themes/manta/titlebar/ontop_focus_inactive_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/ontop_focus_inactive_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/ontop_normal_active.svg b/config/awesome/themes/manta/titlebar/ontop_normal_active.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/ontop_normal_active.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/ontop_normal_active_hover.svg b/config/awesome/themes/manta/titlebar/ontop_normal_active_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/ontop_normal_active_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/ontop_normal_inactive.svg b/config/awesome/themes/manta/titlebar/ontop_normal_inactive.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/ontop_normal_inactive.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/ontop_normal_inactive_hover.svg b/config/awesome/themes/manta/titlebar/ontop_normal_inactive_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/ontop_normal_inactive_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/sticky_focus_active.svg b/config/awesome/themes/manta/titlebar/sticky_focus_active.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/sticky_focus_active.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/sticky_focus_active_hover.svg b/config/awesome/themes/manta/titlebar/sticky_focus_active_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/sticky_focus_active_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/sticky_focus_inactive.svg b/config/awesome/themes/manta/titlebar/sticky_focus_inactive.svg new file mode 120000 index 0000000..f5c599e --- /dev/null +++ b/config/awesome/themes/manta/titlebar/sticky_focus_inactive.svg @@ -0,0 +1 @@ +./button_focus.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/sticky_focus_inactive_hover.svg b/config/awesome/themes/manta/titlebar/sticky_focus_inactive_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/sticky_focus_inactive_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/sticky_normal_active.svg b/config/awesome/themes/manta/titlebar/sticky_normal_active.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/sticky_normal_active.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/sticky_normal_active_hover.svg b/config/awesome/themes/manta/titlebar/sticky_normal_active_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/sticky_normal_active_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/sticky_normal_inactive.svg b/config/awesome/themes/manta/titlebar/sticky_normal_inactive.svg new file mode 120000 index 0000000..a72934b --- /dev/null +++ b/config/awesome/themes/manta/titlebar/sticky_normal_inactive.svg @@ -0,0 +1 @@ +./button_normal.svg \ No newline at end of file diff --git a/config/awesome/themes/manta/titlebar/sticky_normal_inactive_hover.svg b/config/awesome/themes/manta/titlebar/sticky_normal_inactive_hover.svg new file mode 120000 index 0000000..fb79269 --- /dev/null +++ b/config/awesome/themes/manta/titlebar/sticky_normal_inactive_hover.svg @@ -0,0 +1 @@ +./button_hover.svg \ No newline at end of file diff --git a/config/awesome/titlebars.lua b/config/awesome/titlebars.lua new file mode 100644 index 0000000..6b197a1 --- /dev/null +++ b/config/awesome/titlebars.lua @@ -0,0 +1,137 @@ +local awful = require("awful") +local gears = require("gears") +local beautiful = require("beautiful") +local wibox = require("wibox") + +local helpers = require("helpers") +local titlebars = {} +local pad = helpers.pad + +-- Mouse buttons +titlebars.buttons = gears.table.join( + -- Left button - move + awful.button({ }, 1, function() + c = mouse.object_under_pointer() + client.focus = c + c:raise() + awful.mouse.client.move(c) + end), + -- Middle button - close + awful.button({ }, 2, function () + window_to_kill = mouse.object_under_pointer() + window_to_kill:kill() + end), + -- Right button - resize + awful.button({ }, 3, function() + c = mouse.object_under_pointer() + client.focus = c + c:raise() + awful.mouse.client.resize(c) + end), + -- Scroll up - toggle ontop + awful.button({ }, 4, function() + c = mouse.object_under_pointer() + --c.maximized = not c.maximized + c.ontop = not c.ontop + c:raise() + end), + -- Scroll down - minimize + awful.button({ }, 5, function() + c = mouse.object_under_pointer() + c.minimized = true + end), + -- Side button up - toggle floating + awful.button({ }, 9, function() + c = mouse.object_under_pointer() + --client.focus = c + --awful.placement.centered(c,{honor_workarea=true}) + c.floating = not c.floating + c:raise() + end), + -- Side button down - toggle sticky + awful.button({ }, 8, function() + c = mouse.object_under_pointer() + c.sticky = not c.sticky + end) +) + +-- Disable popup tooltip on titlebar button hover +awful.titlebar.enable_tooltip = false + +-- Add a titlebar +client.connect_signal("request::titlebars", function(c) + local buttons = titlebars.buttons + + local title_widget + if beautiful.titlebar_title_enabled then + title_widget = awful.titlebar.widget.titlewidget(c) + title_widget:set_align(beautiful.titlebar_title_align) + else + title_widget = wibox.widget.textbox("") + end + + local titlebar_item_layout + local titlebar_layout + if beautiful.titlebar_position == "left" or beautiful.titlebar_position == "right" then + titlebar_item_layout = wibox.layout.fixed.vertical + titlebar_layout = wibox.layout.align.vertical + else + titlebar_item_layout = wibox.layout.fixed.horizontal + titlebar_layout = wibox.layout.align.horizontal + end + + -- Create 4 dummy titlebars around the window to imitate borders + if beautiful.titlebars_imitate_borders then + helpers.create_titlebar(c, buttons, "top", beautiful.titlebar_size) + helpers.create_titlebar(c, buttons, "bottom", beautiful.titlebar_size) + helpers.create_titlebar(c, buttons, "left", beautiful.titlebar_size) + helpers.create_titlebar(c, buttons, "right", beautiful.titlebar_size) + else -- Normal, single titlebar + awful.titlebar(c, {font = beautiful.titlebar_font, position = beautiful.titlebar_position, size = beautiful.titlebar_size}) : setup { + -- Titlebar items + { -- Left + -- In the presence of buttons, use padding to center the title if needed. + --pad(10), + -- Clickable buttons + --awful.titlebar.widget.closebutton (c), + --awful.titlebar.widget.maximizedbutton(c), + --awful.titlebar.widget.minimizebutton (c), + --awful.titlebar.widget.ontopbutton (c), + --awful.titlebar.widget.stickybutton (c), + --awful.titlebar.widget.floatingbutton (c), + + buttons = buttons, + --awful.titlebar.widget.iconwidget(c), + + layout = titlebar_item_layout + }, + { -- Middle + --{ -- Title + --align = beautiful.titlebar_title_align, + --widget = title_widget + --}, + title_widget, + buttons = buttons, + layout = wibox.layout.flex.horizontal + }, + { -- Right + -- Clickable buttons + --awful.titlebar.widget.floatingbutton (c), + --awful.titlebar.widget.stickybutton (c), + --awful.titlebar.widget.ontopbutton (c), + awful.titlebar.widget.minimizebutton(c), + awful.titlebar.widget.maximizedbutton(c), + awful.titlebar.widget.closebutton (c), + --buttons = buttons, + -- In the presence of buttons, use padding to center the title if needed. + --pad(10), + layout = titlebar_item_layout + --layout = wibox.layout.fixed.horizontal() + }, + layout = titlebar_layout + --layout = wibox.layout.align.horizontal + } + end +end) + +return titlebars diff --git a/config/compton/compton.conf b/config/compton/compton.conf new file mode 100644 index 0000000..207fabc --- /dev/null +++ b/config/compton/compton.conf @@ -0,0 +1,135 @@ +# Performance related +# Use OpenGL +backend = "glx"; + +# These might or might NOT help with performance +#glx-no-stencil = true; +#glx-copy-from-front = false; # When enbled on intel GPU: screen broken until compton is killed. +#glx-use-copysubbuffermesa = true +#glx-no-rebind-pixmap = false +#glx-swap-method = 1 + +# === Rules === +shadow-exclude = [ + "class_g ?= 'slop'", + "class_g ?= 'Polybar'", + #"class_g ?= 'slop'", + # i3wm titlebar shadows (tabbed/stacked) + "class_g ?= 'i3-frame'", + # i3wm hidden window shadows (tabbed/stacked) + "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", + "window_type *= 'menu'", + "window_type = 'utility'", + "window_type = 'dropdown_menu'", + "window_type = 'popup_menu'" +]; + +opacity-rule = [ + #"60:class_g ?= 'rofi'", + # i3 titlebar transparency + #"60:class_g = 'i3-frame'" + # For i3wm tabbed/stacked layout transparency + #"0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", + # herbstluftwm frame + #"60:class_g = '_HERBST_FRAME'" +]; + + +focus-exclude = [ + #"class_g ?= 'rofi'" + #'_NET_WM_NAME@:s = "rofi"' + "class_g ?= 'slop'", + "name = 'rofi'", + "class_g ?= 'Steam'", + "_NET_WM_WINDOW_TYPE@:a *= 'MENU'", + "window_type *= 'menu'", + "window_type = 'utility'", + "window_type = 'dropdown_menu'", + "window_type = 'popup_menu'" +]; + +blur-background-exclude = [ + "class_g ?= 'slop'" +]; + +# === Shadows === +# Enabled client-side shadows on windows. +shadow = true; +# Don't draw shadows on DND windows. +no-dnd-shadow = true; +# Avoid drawing shadows on dock/panel windows. +no-dock-shadow = false; +# Zero the part of the shadow's mask behind the window. Fix some weirdness with ARGB windows. +clear-shadow = false; +# Detect rounded corners +# (it doesn't really do anything for shadows) +detect-rounded-corners = false; + +# shadow-radius: The blur radius for shadows. (default 12) +# shadow-offset-x: The left offset for shadows. (default -15) +# shadow-offset-y: The top offset for shadows. (default -15) +# shadow-opacity: The translucency for shadows. (default .75) + +shadow-radius = 6; +shadow-offset-x = -8; +shadow-offset-y = -8; +shadow-opacity = 0.3; + +# === Transparency === +#active-opacity = 0.95 +#inactive-opacity = 0.95 +#inactive-dim = 0.30 +# Border and titlebar opacity +#frame-opacity = 0.4; + +# === Fading === +# Fade windows during opacity changes. +fading = true; +# The time between steps in a fade in milliseconds. (default 10). +fade-delta = 3; +# Opacity change between steps while fading in. (default 0.028). +#fade-in-step = 0.03; +# Opacity change between steps while fading out. (default 0.03). +#fade-out-step = 0.03; +# Fade windows in/out when opening/closing + no-fading-openclose = false; + +# Specify a list of conditions of windows that should not be faded. +#fade-exclude = [ +# "name = '???'" +#]; + +# === Blurring === +blur-background = false; +#blur-method = "convolution"; +#blur-strength = 20; +#blur-background-fixed = true; +# Blur background of opaque windows with transparent frames as well. +#blur-background-frame = true; +# Predefined +#blur-kern = "3x3box" +#blur-kern = "3x3gaussian" +#blur-kern = "5x5box" +#blur-kern = "5x5gaussian" +#blur-kern = "7x7box" +#blur-kern = "7x7gaussian" +#blur-kern = "9x9gaussian" +#blur-kern = "11x11gaussian" +# Strong-ish blur +blur-kern = "7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +# Medium blur +#blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +# Weak blur +#blur-kern = "3,3,1,1,1,1,1,1,1,1" + + +#Window type settings +# TODO +#wintypes: +#{ + #tooltip = { fade = true; shadow = false; }; + #menu = { shadow = false; }; + #dropdown_menu = { shadow = false; }; + #popup_menu = { shadow = false; }; + #utility = { shadow = false; }; +#}; diff --git a/config/ncmpcpp/bindings b/config/ncmpcpp/bindings new file mode 100644 index 0000000..ecdd09f --- /dev/null +++ b/config/ncmpcpp/bindings @@ -0,0 +1,571 @@ +########################################################## +## this is example bindings configuration file, copy it ## +## to ~/.ncmpcpp/bindings and set up your preferences ## +########################################################## + +### elena ### +def_key "9" + show_help + +# Delete +def_key "D" + delete_playlist_items +def_key "D" + delete_browser_items +def_key "D" + delete_stored_playlist + +# Scrolling +def_key "k" + scroll_up +def_key "K" + select_item + scroll_up +def_key "j" + scroll_down +def_key "J" + select_item + scroll_down + +# Search +def_key "n" + next_found_item +def_key "N" + previous_found_item + +### elena ### + +##### General rules ##### +## +## 1) Because each action has runtime checks whether it's +## ok to run it, a few actions can be bound to one key. +## Actions will be bound in order given in configuration +## file. When a key is pressed, first action in order +## will test itself whether it's possible to run it. If +## test succeeds, action is executed and other actions +## bound to this key are ignored. If it doesn't, next +## action in order tests itself etc. +## +## 2) It's possible to bind more that one action at once +## to a key. It can be done using the following syntax: +## +## def_key "key" +## action1 +## action2 +## ... +## +## This creates a chain of actions. When such chain is +## executed, each action in chain is run until the end of +## chain is reached or one of its actions fails to execute +## due to its requirements not being met. If multiple actions +## and/or chains are bound to the same key, they will be +## consecutively run until one of them gets fully executed. +## +## 3) When ncmpcpp starts, bindings configuration file is +## parsed and then ncmpcpp provides "missing pieces" +## of default keybindings. If you want to disable some +## bindings, there is a special action called 'dummy' +## for that purpose. Eg. if you want to disable ability +## to crop playlists, you need to put the following +## into configuration file: +## +## def_key "C" +## dummy +## +## After that ncmpcpp will not bind any default action +## to this key. +## +## 4) To let you write simple macros, the following special +## actions are provided: +## +## - push_character "character" - pushes given special +## character into input queue, so it will be immediately +## picked by ncmpcpp upon next call to readKey function. +## Accepted values: mouse, up, down, page_up, page_down, +## home, end, space, enter, insert, delete, left, right, +## tab, ctrl-a, ctrl-b, ..., ctrl-z, ctrl-[, ctrl-\\, +## ctrl-], ctrl-^, ctrl-_, f1, f2, ..., f12, backspace. +## In addition, most of these names can be prefixed with +## alt-/ctrl-/shift- to be recognized with the appropriate +## modifier key(s). +## +## - push_characters "string" - pushes given string into +## input queue. +## +## - require_runnable "action" - checks whether given action +## is runnable and fails if it isn't. This is especially +## useful when mixed with previous two functions. Consider +## the following macro definition: +## +## def_key "key" +## push_characters "custom_filter" +## apply_filter +## +## If apply_filter can't be currently run, we end up with +## sequence of characters in input queue which will be +## treated just as we typed them. This may lead to unexpected +## results (in this case 'c' will most likely clear current +## playlist, 'u' will trigger database update, 's' will stop +## playback etc.). To prevent such thing from happening, we +## need to change above definition to this one: +## +## def_key "key" +## require_runnable "apply_filter" +## push_characters "custom_filter" +## apply_filter +## +## Here, first we test whether apply_filter can be actually run +## before we stuff characters into input queue, so if condition +## is not met, whole chain is aborted and we're fine. +## +## - require_screen "screen" - checks whether given screen is +## currently active. accepted values: browser, clock, help, +## media_library, outputs, playlist, playlist_editor, +## search_engine, tag_editor, visualizer, last_fm, lyrics, +## selected_items_adder, server_info, song_info, +## sort_playlist_dialog, tiny_tag_editor. +## +## - run_external_command "command" - runs given command using +## system() function. +## +## 5) In addition to binding to a key, you can also bind actions +## or chains of actions to a command. If it comes to commands, +## syntax is very similar to defining keys. Here goes example +## definition of a command: +## +## def_command "quit" [deferred] +## stop +## quit +## +## If you execute the above command (which can be done by +## invoking action execute_command, typing 'quit' and pressing +## enter), ncmpcpp will stop the player and then quit. Note the +## presence of word 'deferred' enclosed in square brackets. It +## tells ncmpcpp to wait for confirmation (ie. pressing enter) +## after you typed quit. Instead of 'deferred', 'immediate' +## could be used. Then ncmpcpp will not wait for confirmation +## (enter) and will execute the command the moment it sees it. +## +## Note: while command chains are executed, internal environment +## update (which includes current window refresh and mpd status +## update) is not performed for performance reasons. However, it +## may be desirable to do so in some situration. Therefore it's +## possible to invoke by hand by performing 'update enviroment' +## action. +## +## Note: There is a difference between: +## +## def_key "key" +## action1 +## +## def_key "key" +## action2 +## +## and +## +## def_key "key" +## action1 +## action2 +## +## First one binds two single actions to the same key whilst +## second one defines a chain of actions. The behavior of +## these two is different and is described in (1) and (2). +## +## Note: Function def_key accepts non-ascii characters. +## +##### List of unbound actions ##### +## +## The following actions are not bound to any key/command: +## +## - set_volume +## +# +#def_key "mouse" +# mouse_event +# +#def_key "up" +# scroll_up +# +#def_key "shift-up" +# select_item +# scroll_up +# +#def_key "down" +# scroll_down +# +#def_key "shift-down" +# select_item +# scroll_down +# +#def_key "[" +# scroll_up_album +# +#def_key "]" +# scroll_down_album +# +#def_key "{" +# scroll_up_artist +# +#def_key "}" +# scroll_down_artist +# +#def_key "page_up" +# page_up +# +#def_key "page_down" +# page_down +# +#def_key "home" +# move_home +# +#def_key "end" +# move_end +# +#def_key "insert" +# select_item +# +#def_key "enter" +# enter_directory +# +#def_key "enter" +# toggle_output +# +#def_key "enter" +# run_action +# +#def_key "enter" +# play_item +# +#def_key "space" +# add_item_to_playlist +# +#def_key "space" +# toggle_lyrics_update_on_song_change +# +#def_key "space" +# toggle_visualization_type +# +#def_key "delete" +# delete_playlist_items +# +#def_key "delete" +# delete_browser_items +# +#def_key "delete" +# delete_stored_playlist +# +#def_key "right" +# next_column +# +#def_key "right" +# slave_screen +# +#def_key "right" +# volume_up +# +#def_key "+" +# volume_up +# +#def_key "left" +# previous_column +# +#def_key "left" +# master_screen +# +#def_key "left" +# volume_down +# +#def_key "-" +# volume_down +# +#def_key ":" +# execute_command +# +#def_key "tab" +# next_screen +# +#def_key "shift-tab" +# previous_screen +# +#def_key "f1" +# show_help +# +#def_key "1" +# show_playlist +# +#def_key "2" +# show_browser +# +#def_key "2" +# change_browse_mode +# +#def_key "3" +# show_search_engine +# +#def_key "3" +# reset_search_engine +# +#def_key "4" +# show_media_library +# +#def_key "4" +# toggle_media_library_columns_mode +# +#def_key "5" +# show_playlist_editor +# +#def_key "6" +# show_tag_editor +# +#def_key "7" +# show_outputs +# +#def_key "8" +# show_visualizer +# +#def_key "=" +# show_clock +# +#def_key "@" +# show_server_info +# +#def_key "s" +# stop +# +#def_key "p" +# pause +# +#def_key ">" +# next +# +#def_key "<" +# previous +# +#def_key "ctrl-h" +# jump_to_parent_directory +# +#def_key "ctrl-h" +# replay_song +# +#def_key "backspace" +# jump_to_parent_directory +# +#def_key "backspace" +# replay_song +# +#def_key "f" +# seek_forward +# +#def_key "b" +# seek_backward +# +#def_key "r" +# toggle_repeat +# +#def_key "z" +# toggle_random +# +#def_key "y" +# save_tag_changes +# +#def_key "y" +# start_searching +# +#def_key "y" +# toggle_single +# +#def_key "R" +# toggle_consume +# +#def_key "Y" +# toggle_replay_gain_mode +# +#def_key "T" +# toggle_add_mode +# +#def_key "|" +# toggle_mouse +# +#def_key "#" +# toggle_bitrate_visibility +# +#def_key "Z" +# shuffle +# +#def_key "x" +# toggle_crossfade +# +#def_key "X" +# set_crossfade +# +#def_key "u" +# update_database +# +#def_key "ctrl-s" +# sort_playlist +# +#def_key "ctrl-s" +# toggle_browser_sort_mode +# +#def_key "ctrl-s" +# toggle_media_library_sort_mode +# +#def_key "ctrl-r" +# reverse_playlist +# +#def_key "ctrl-_" +# select_found_items +# +#def_key "/" +# find +# +#def_key "/" +# find_item_forward +# +#def_key "?" +# find +# +#def_key "?" +# find_item_backward +# +#def_key "." +# next_found_item +# +#def_key "," +# previous_found_item +# +#def_key "w" +# toggle_find_mode +# +#def_key "e" +# edit_song +# +#def_key "e" +# edit_library_tag +# +#def_key "e" +# edit_library_album +# +#def_key "e" +# edit_directory_name +# +#def_key "e" +# edit_playlist_name +# +#def_key "e" +# edit_lyrics +# +#def_key "i" +# show_song_info +# +#def_key "I" +# show_artist_info +# +#def_key "g" +# jump_to_position_in_song +# +#def_key "l" +# show_lyrics +# +#def_key "ctrl-v" +# select_range +# +#def_key "v" +# reverse_selection +# +#def_key "V" +# remove_selection +# +#def_key "B" +# select_album +# +#def_key "a" +# add_selected_items +# +#def_key "c" +# clear_playlist +# +#def_key "c" +# clear_main_playlist +# +#def_key "C" +# crop_playlist +# +#def_key "C" +# crop_main_playlist +# +#def_key "m" +# move_sort_order_up +# +#def_key "m" +# move_selected_items_up +# +#def_key "m" +# set_visualizer_sample_multiplier +# +#def_key "n" +# move_sort_order_down +# +#def_key "n" +# move_selected_items_down +# +#def_key "M" +# move_selected_items_to +# +#def_key "A" +# add +# +#def_key "S" +# save_playlist +# +#def_key "o" +# jump_to_playing_song +# +#def_key "G" +# jump_to_browser +# +#def_key "G" +# jump_to_playlist_editor +# +#def_key "~" +# jump_to_media_library +# +#def_key "E" +# jump_to_tag_editor +# +#def_key "U" +# toggle_playing_song_centering +# +#def_key "P" +# toggle_display_mode +# +#def_key "\\" +# toggle_interface +# +#def_key "!" +# toggle_separators_between_albums +# +#def_key "L" +# toggle_lyrics_fetcher +# +#def_key "F" +# toggle_fetching_lyrics_in_background +# +#def_key "ctrl-l" +# toggle_screen_lock +# +#def_key "`" +# toggle_library_tag_type +# +#def_key "`" +# refetch_lyrics +# +#def_key "`" +# add_random_items +# +#def_key "ctrl-p" +# set_selected_items_priority +# +#def_key "q" +# quit +# diff --git a/config/ncmpcpp/config b/config/ncmpcpp/config new file mode 100644 index 0000000..a539ec0 --- /dev/null +++ b/config/ncmpcpp/config @@ -0,0 +1,570 @@ +### Directories ### +ncmpcpp_directory = ~/.config/ncmpcpp +lyrics_directory = ~/.config/ncmpcpp/lyrics +mpd_music_dir = ~/mus + +### Behaviour ### +execute_on_song_change = "bash ~/.config/ncmpcpp/mpd-notification" +message_delay_time = 1 +autocenter_mode = "yes" +centered_cursor = "yes" +ignore_leading_the = "yes" +allow_for_physical_item_deletion = "no" + +### Visualizer ### +visualizer_fifo_path = /tmp/mpd.fifo +visualizer_output_name = "mpd_visualizer" +visualizer_in_stereo = "yes" +visualizer_sample_multiplier = 2 +visualizer_sync_interval = 30 + +### Appearance ### +colors_enabled = "yes" +playlist_display_mode = "columns" + +# Window # +song_window_title_format = "mpd » {%a - }{%t}|{%f}" +statusbar_visibility = "yes" +header_visibility = "no" +titles_visibility = "no" + +# Progress bar # +#progressbar_look = "⠒⠒⠐" +#progressbar_look = "•••" +#progressbar_look = "---" +#progressbar_look = "▀▀ " +#progressbar_look = "╼·" +progressbar_look = "━━━" +#progressbar_look = "━━─" +#progressbar_look = "◾◾◽" +#progressbar_look = "─╼─" +progressbar_color = "black" +progressbar_elapsed_color = "white" +progressbar_boldness = "yes" +# Song status # +#now_playing_prefix = "$b" +#now_playing_suffix = "$/b" +song_status_format = "$b$6%t$/b {$8by} $b$6%a$8$/b" +#song_status_format = " $2%a $4⟫$3⟫ $7%t $4⟫$3⟫ $5%b " +#song_status_format = "$8%t $9• $2%a $9•{ $5%b $9• }$7%y$9" +# Song list # +song_list_format = "{$8%a ⠂ }{%t}$R{%l}" +#song_list_format = "{ $8%a $1» $2}{%t} $R$1%b" +# Playlist # +#song_columns_list_format = "$L(9)[white]{l} (20)[red]{a} (30)[green]{b}$R(20)[cyan]{t}" +#song_columns_list_format = "(25)[white]{a} (25)[blue]{brE} (47)[white]{t|f} (6f)[blue]{l}" +#song_columns_list_format = "(15)[white]{lr} (1)[black]{} (40)[red]{a} (40)[green]{t}" +#song_columns_list_format = "(40)[magenta]{ar} (40)[green]{t}" +song_columns_list_format = "(50)[magenta]{ar} (50)[green]{t}" +# Colors # +main_window_highlight_color = "green" +main_window_color = "blue" +#state_line_color = "yellow" +#state_flags_color = "green" +color1 = "white" +color2 = "red" + +##### connection settings ##### +# +#mpd_host = localhost +# +#mpd_port = 6600 +# +#mpd_connection_timeout = 5 +# +## Needed for tag editor and file operations to work. +## +#mpd_music_dir = ~/music +# +#mpd_crossfade_time = 5 +# +##### music visualizer ##### +## +## Note: In order to make music visualizer work you'll +## need to use mpd fifo output, whose format parameter +## has to be set to 44100:16:1 for mono visualization +## or 44100:16:2 for stereo visualization. Example +## configuration (it has to be put into mpd.conf): +## +## audio_output { +## type "fifo" +## name "Visualizer feed" +## path "/tmp/mpd.fifo" +## format "44100:16:2" +## } +## +# +#visualizer_fifo_path = /tmp/mpd.fifo +# +## +## Note: Below parameter is needed for ncmpcpp +## to determine which output provides data for +## visualizer and thus allow syncing between +## visualization and sound as currently there +## are some problems with it. +## +# +#visualizer_output_name = Visualizer feed +# +## +## If you set format to 44100:16:2, make it 'yes'. +## +#visualizer_in_stereo = yes +# +## +## Multiply received samples by given value. Very +## useful for proper visualization of quiet music. +## +#visualizer_sample_multiplier = 1 +# +## +## Note: Below parameter defines how often ncmpcpp +## has to "synchronize" visualizer and audio outputs. +## 30 seconds is optimal value, but if you experience +## synchronization problems, set it to lower value. +## Keep in mind that sane values start with >=10. +## +# +#visualizer_sync_interval = 30 +# +## +## Note: To enable spectrum frequency visualization +## you need to compile ncmpcpp with fftw3 support. +## +# +## Available values: spectrum, wave, wave_filled, ellipse. +## +#visualizer_type = wave +# +#visualizer_look = ●▮ +# +#visualizer_color = blue, cyan, green, yellow, magenta, red +# +## Alternative subset of 256 colors for terminals that support it. +## +#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161 +# +##### system encoding ##### +## +## ncmpcpp should detect your charset encoding +## but if it failed to do so, you can specify +## charset encoding you are using here. +## +## Note: You can see whether your ncmpcpp build +## supports charset detection by checking output +## of `ncmpcpp --version`. +## +## Note: Since MPD uses UTF-8 by default, setting +## this option makes sense only if your encoding +## is different. +## +# +#system_encoding = "" +# +##### delays ##### +# +## Time of inactivity (in seconds) after playlist +## highlighting will be disabled (0 = always on). +## +#playlist_disable_highlight_delay = 5 +# +## Defines how long messages are supposed to be visible. +## +#message_delay_time = 5 +# +##### song format ##### +## +## For a song format you can use: +## +## %l - length +## %f - filename +## %D - directory +## %a - artist +## %A - album artist +## %t - title +## %b - album +## %y - date +## %n - track number (01/12 -> 01) +## %N - full track info (01/12 -> 01/12) +## %g - genre +## %c - composer +## %p - performer +## %d - disc +## %C - comment +## %P - priority +## $R - begin right alignment +## +## If you want to make sure that a part of the format is displayed +## only when certain tags are present, you can archieve it by +## grouping them with brackets, e.g. '{%a - %t}' will be evaluated +## to 'ARTIST - TITLE' if both tags are present or '' otherwise. +## It is also possible to define a list of alternatives by providing +## several groups and separating them with '|', e.g. '{%t}|{%f}' +## will be evaluated to 'TITLE' or 'FILENAME' if the former is not +## present. +## +## Note: If you want to set limit on maximal length of a tag, just +## put the appropriate number between % and character that defines +## tag type, e.g. to make album take max. 20 terminal cells, use '%20b'. +## +## In addition, formats support markers used for text attributes. +## They are followed by character '$'. After that you can put: +## +## - 0 - default window color (discards all other colors) +## - 1 - black +## - 2 - red +## - 3 - green +## - 4 - yellow +## - 5 - blue +## - 6 - magenta +## - 7 - cyan +## - 8 - white +## - 9 - end of current color +## - b - bold text +## - u - underline text +## - r - reverse colors +## - a - use alternative character set +## +## If you don't want to use a non-color attribute anymore, just put it +## again, but this time insert character '/' between '$' and attribute +## character, e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag +## or filename with reversed colors. +## +## If you want to use 256 colors and/or background colors in formats +## (the naming scheme is described below in section about color +## definitions), it can be done with the syntax $(COLOR), e.g. to set +## the artist tag to one of the non-standard colors and make it have +## yellow background, you need to write $(197_yellow)%a$(end). Note +## that for standard colors this is interchangable with attributes +## listed above. +## +## Note: colors can be nested. +## +# +#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9} +# +#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f} +# +#song_library_format = {%n - }{%t}|{%f} +# +# +#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b +# +#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D} +# +#now_playing_prefix = $b +# +#now_playing_suffix = $/b +# +#browser_playlist_prefix = "$2playlist$9 " +# +#selected_item_prefix = $6 +# +#selected_item_suffix = $9 +# +#modified_item_prefix = $3> $9 +# +## +## Note: attributes are not supported for the following variables. +## +#song_window_title_format = {%a - }{%t}|{%f} +## +## Note: Below variables are used for sorting songs in browser. +## The sort mode determines how songs are sorted, and can be used +## in combination with a sort format to specify a custom sorting format. +## Available values for browser_sort_mode are "name", "mtime", "format" +## and "noop". +## +# +#browser_sort_mode = name +# +#browser_sort_format = {%a - }{%t}|{%f} {(%l)} +# +##### columns settings ##### +## +## syntax of song columns list format is "column column etc." +## +## - syntax for each column is: +## +## (width of the column)[color of the column]{displayed tag} +## +## Note: Width is by default in %, if you want a column to +## have fixed size, add 'f' after the value, e.g. (10)[white]{a} +## will be the column that take 10% of screen (so the real width +## will depend on actual screen size), whereas (10f)[white]{a} +## will take 10 terminal cells, no matter how wide the screen is. +## +## - color is optional (if you want the default one, +## leave the field empty). +## +## Note: You can give a column additional attributes by putting appropriate +## character after displayed tag character. Available attributes are: +## +## - r - column will be right aligned +## - E - if tag is empty, empty tag marker won't be displayed +## +## You can also: +## +## - give a column custom name by putting it after attributes, +## separated with character ':', e.g. {lr:Length} gives you +## right aligned column of lengths named "Length". +## +## - define sequence of tags, that have to be displayed in case +## predecessor is empty in a way similar to the one in classic +## song format, i.e. using '|' character, e.g. {a|c|p:Owner} +## creates column named "Owner" that tries to display artist +## tag and then composer and performer if previous ones are +## not available. +## +# +#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l} +# +##### various settings ##### +# +## +## Note: Custom command that will be executed each +## time song changes. Useful for notifications etc. +## +#execute_on_song_change = "" +# +#playlist_show_mpd_host = no +# +#playlist_show_remaining_time = no +# +#playlist_shorten_total_times = no +# +#playlist_separate_albums = no +# +## +## Note: Possible display modes: classic, columns. +## +#playlist_display_mode = columns +# +#browser_display_mode = classic +# +#search_engine_display_mode = classic +# +#playlist_editor_display_mode = classic +# +#discard_colors_if_item_is_selected = yes +# +#incremental_seeking = yes +# +#seek_time = 1 +# +#volume_change_step = 2 +# +#autocenter_mode = no +# +#centered_cursor = no +# +## +## Note: You can specify third character which will +## be used to build 'empty' part of progressbar. +## +#progressbar_look = => +# +#progressbar_boldness = yes +# +## Available values: database, playlist. +## +#default_place_to_search_in = database +# +## Available values: classic, alternative. +## +#user_interface = classic +# +#data_fetching_delay = yes +# +## Available values: artist, album_artist, date, genre, composer, performer. +## +#media_library_primary_tag = artist +# +## Available values: wrapped, normal. +## +#default_find_mode = wrapped +# +#default_tag_editor_pattern = %n - %t +# +#header_visibility = yes +# +#statusbar_visibility = yes +# +#titles_visibility = yes +# +#header_text_scrolling = yes +# +#cyclic_scrolling = no +# +#lines_scrolled = 2 +# +#follow_now_playing_lyrics = no +# +#fetch_lyrics_for_current_song_in_background = no +# +#store_lyrics_in_song_dir = no +# +#generate_win32_compatible_filenames = yes +# +#allow_for_physical_item_deletion = no +# +## +## Note: If you set this variable, ncmpcpp will try to +## get info from last.fm in language you set and if it +## fails, it will fall back to english. Otherwise it will +## use english the first time. +## +## Note: Language has to be expressed as an ISO 639 alpha-2 code. +## +#lastfm_preferred_language = en +# +#show_hidden_files_in_local_browser = no +# +## +## How shall screen switcher work? +## +## - "previous" - switch between the current and previous screen. +## - "screen1,...,screenN" - switch between given sequence of screens. +## +## Screens available for use: help, playlist, browser, search_engine, +## media_library, playlist_editor, tag_editor, outputs, visualizer, clock. +## +#screen_switcher_mode = playlist, browser +# +## +## Note: You can define startup screen +## by choosing screen from the list above. +## +#startup_screen = playlist +# +## +## Note: You can define startup slave screen +## by choosing screen from the list above or +## an empty value for no slave screen. +## +#startup_slave_screen = "" +# +#startup_slave_screen_focus = no +# +## +## Default width of locked screen (in %). +## Acceptable values are from 20 to 80. +## +# +#locked_screen_width_part = 50 +# +#ask_for_locked_screen_width_part = yes +# +#jump_to_now_playing_song_at_start = yes +# +#ask_before_clearing_playlists = yes +# +#clock_display_seconds = no +# +#display_volume_level = yes +# +#display_bitrate = no +# +#display_remaining_time = no +# +## Available values: none, basic, extended, perl. +## +#regular_expressions = perl +# +## +## Note: If below is enabled, ncmpcpp will ignore leading +## "The" word while sorting items in browser, tags in +## media library, etc. +## +#ignore_leading_the = no +# +#block_search_constraints_change_if_items_found = yes +# +#mouse_support = yes +# +#mouse_list_scroll_whole_page = yes +# +#empty_tag_marker = +# +#tags_separator = " | " +# +#tag_editor_extended_numeration = no +# +#media_library_sort_by_mtime = no +# +#enable_window_title = yes +# +## +## Note: You can choose default search mode for search +## engine. Available modes are: +## +## - 1 - use mpd built-in searching (no regexes, pattern matching) +## - 2 - use ncmpcpp searching (pattern matching with support for regexes, +## but if your mpd is on a remote machine, downloading big database +## to process it can take a while +## - 3 - match only exact values (this mode uses mpd function for searching +## in database and local one for searching in current playlist) +## +# +#search_engine_default_search_mode = 1 +# +#external_editor = nano +# +## Note: set to yes if external editor is a console application. +## +#use_console_editor = yes +# +##### colors definitions ##### +## +## It is possible to set a background color by setting a color +## value "_", e.g. red_black will set +## foregound color to red and background color to black. +## +## In addition, for terminals that support 256 colors it +## is possible to set one of them by using a number in range +## [1, 256] instead of color name, e.g. numerical value +## corresponding to red_black is 2_1. To find out if the +## terminal supports 256 colors, run ncmpcpp and check out +## the bottom of the help screen for list of available colors +## and their numerical values. +## +## Note: due to technical limitations of ncurses, if 256 colors +## are used, it is possible to either use only the colors with +## default background color, or all pairs from 1_1 up to 254_127, +## depending on the ncurses version used. +## +# +#colors_enabled = yes +# +#empty_tag_color = cyan +# +#header_window_color = default +# +#volume_color = default +# +#state_line_color = default +# +#state_flags_color = default +# +#main_window_color = blue +# +#color1 = white +# +#color2 = green +# +#main_window_highlight_color = blue +# +#progressbar_color = black +# +#progressbar_elapsed_color = green +# +#statusbar_color = default +# +#alternative_ui_separator_color = black +# +#active_column_color = red +# +#window_border_color = green +# +#active_window_border = red +# diff --git a/config/ncmpcpp/mpd-notification b/config/ncmpcpp/mpd-notification new file mode 100755 index 0000000..deb6627 --- /dev/null +++ b/config/ncmpcpp/mpd-notification @@ -0,0 +1,3 @@ +#!/bin/bash +SONG="$(mpc current)" +notify-send "Now playing:" "$SONG" diff --git a/firefox/MaterialFox/chrome/alert.css b/firefox/MaterialFox/chrome/alert.css new file mode 100644 index 0000000..508872a --- /dev/null +++ b/firefox/MaterialFox/chrome/alert.css @@ -0,0 +1,100 @@ +@keyframes scale-in { + 0% { + transform: scaleY(0); + } + 100% { + transform: scaleY(1); + } +} + +.browserContainer { + position: relative; +} + +tabmodalprompt { + animation: 0.2s scale-in; + transform-origin: top center; + background-color: transparent !important; +} + + +.mainContainer{ + position: relative !important; + transform: translateY(20px); + width: 450px !important; + height: 175px !important; + border-radius: 10px !important; + border: none !important; + box-shadow: 0px 0px 6px 0 rgba(0,0,0,0.5) !important; +} + + + + +tabmodalprompt > spacer[flex='1'] { + display: none; +} + + +.buttonContainer{ + background-color: transparent !important; + border: none !important; +} + + +.buttonContainer > button{ + height: 33px !important; + width: 65px !important; + -moz-appearance: none !important; + box-shadow: 0px 0px 1px 0px rgba(0,0,0,0.75) !important; + border-radius: 5px !important; + transition: background-color 0.3s linear, box-shadow 0.1s linear !important; +} + + +.buttonContainer > button[label="Leave Page"], +.buttonContainer > button[label="OK"], +.buttonContainer > button[label="Resend"]{ + background-color: rgb(67,133,242) !important; + color: white !important; + box-shadow: none !important; +} + +.buttonContainer > button[label="Leave Page"] .button-text, +.buttonContainer > button[label="OK"] .button-text, +.buttonContainer > button[label="Resend"] .button-text{ + color: white !important; +} + + +.buttonContainer > button:hover{ + box-shadow: 0px 0px 3px 0px rgba(0,0,0,0.75) !important; +} + + +.buttonContainer > button[label="OK"]:hover{ + background-color: rgb(77, 100, 255) !important; +} + +.topContainer vbox { + text-align: left !important; +} + + +.buttonContainer > button:not([label="OK"]){ + color: gray !important; +} + +.checkbox-label-box, .checkbox-check{ + display: none !important; +} + + +.topContainer textbox{ + -moz-appearance: none !important; + border-radius: 3px !important; + border: 1px solid #B0B0B0 !important; + height: 35px !important; + +} + diff --git a/firefox/MaterialFox/chrome/context.css b/firefox/MaterialFox/chrome/context.css new file mode 100644 index 0000000..66723c2 --- /dev/null +++ b/firefox/MaterialFox/chrome/context.css @@ -0,0 +1,43 @@ +/* List context items from https://redd.it/8j9t5n */ + +#context-back image, +#context-forward image, +#context-reload image, +#context-stop image, +#context-bookmarkpage image { +display: none !important; +} + +#context-navigation .menu-iconic-left { +-moz-margin-start: 15px !important; +/*adjust this for your OS/theme*/ +} + +#context-back:after, +#context-forward:after, +#context-reload:after, +#context-stop:after, +#context-bookmarkpage:after { +content: attr(aria-label) !important; +} + +#context-navigation { +-moz-box-orient: vertical !important; +} + +#context-navigation>.menuitem-iconic { +-moz-box-pack: start !important; +} + +/* End list context items */ + + + +menupopup { + -moz-appearance: none !important;; + background-color: var(--menu-bg) !important; +} + +#context-navigation{ + background-color: var(--menu-bg) !important; +} diff --git a/firefox/MaterialFox/chrome/custom.css b/firefox/MaterialFox/chrome/custom.css new file mode 100644 index 0000000..9c0196b --- /dev/null +++ b/firefox/MaterialFox/chrome/custom.css @@ -0,0 +1,179 @@ +/* Global font */ +/** {*/ + /*font-size: 12pt !important;*/ + /*font-family: sans-serif !important;*/ + /*font-weight: normal !important;*/ +/*}*/ + +#navigator-toolbox:after, +.scrollbutton-down, +.scrollbutton-up { + display: none !important; +} + +#toolbar-menubar { + height: 30px !important; + background-color: var(--secondary) !important; +} + +/*#main-menubar * {*/ + /*color: var(--menu-fg) !important;*/ + /*background: var(--menu-bg) !important;*/ +/*}*/ + +#urlbar { + border-radius: 20px !important; + height: 28px !important; + border: none !important; + background-color: var(--urlbar-bg) !important; + color: var(--urlbar-fg) !important; + box-shadow: none !important; +} + +/* No 'i' icon in urlbar */ +#identity-icon { + display: none !important; +} +/* No lock icon in urlbar */ +#identity-box { + display: none !important; +} + +/* Center URL */ +#urlbar .urlbar-input-box { + text-align: center; + margin-bottom: 1px; +} + +/* Remove Three Dots */ +#pageActionButton { + display: none !important; +} + +#nav-bar { + background-image: none !important; + background-color: var(--main) !important; + height: 37px !important; + box-shadow: none !important; +} + +/*#navigator-toolbox > toolbar:not(#toolbar-menubar):not(#TabsToolbar):not(#nav-bar) {*/ + /*background-image: none;*/ +/*}*/ + +#main-window[sizemode='normal'] #TabsToolbar { + height: 54px !important; +} + +#main-window[sizemode='normal'] #titlebar-buttonbox { + height: 29px !important; + margin-bottom: 14px !important; +} + +#main-window[sizemode='normal'] .private-browsing-indicator { + margin-top: 0px !important; +} + +#PersonalToolbar { + height: 30px !important; + background-color: var(--main) !important; +} + +.toolbarbutton-badge-stack, +toolbarbutton:not(.bookmark-item):not(.titlebar-button):not(.subviewbutton) + > .toolbarbutton-icon, +.tab-close-button, +.bookmark-item { + background: unset !important; + border-radius: 20px !important; + transition: background 0.25s ease-in-out !important; +} + +toolbarbutton:hover .toolbarbutton-badge-stack, +toolbarbutton:not([disabled]):not(.bookmark-item):not(.titlebar-button):not(.subviewbutton):hover + > .toolbarbutton-icon, +.bookmark-item:hover { + background: var(--hover) !important; /*darken on hover*/ +} + +.browserContainer { + background-color: var(--main) !important; +} + + + +#reload-button > .toolbarbutton-icon{ + border-radius: 8px !important; +} + +#PanelUI-menu-button { + list-style-image: url('chrome://browser/skin/page-action.svg') !important; + transform: rotate(90deg); +} + + +/*#downloads-button[attention="success"] #downloads-indicator-icon {*/ + /*display: visible !important;*/ +/*}*/ + +/* During a download, force display of progress bar */ +#downloads-button[attention="success"] #downloads-indicator-progress-area +{ + display: -moz-box !important; + visibility: visible !important; +} + +/* After something have successfully completed downloading, set the color of the download icon*/ +#downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-icon, +#downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-progress-outer +{ + fill: var(--download-button-finished) !important; +} + +/* Sets the color of the animated arrow that appears when a download is starting*/ +#downloads-button[notification="start"] > #downloads-indicator-anchor > #downloads-indicator-icon, +#downloads-notification-anchor[notification="start"] > #downloads-indicator-notification { + fill: var(--download-button-progress) !important; +} + +/*Set the color of the download icon as something is downloading*/ +#downloads-button[progress] > #downloads-indicator-anchor > #downloads-indicator-icon, +#downloads-button[progress] > #downloads-indicator-anchor > #downloads-indicator-progress-outer { + fill: var(--download-button-progress) !important; +} + +/* Set the color for the progress bar as something is downloading */ +#downloads-button > #downloads-indicator-anchor > #downloads-indicator-progress-outer > #downloads-indicator-progress-inner { + fill: var(--download-button-progress) !important; +} + +/* The default color of the download button */ +#downloads-button, +#downloads-button[indicator="true"]:not([attention="success"]) #downloads-indicator-icon +{ + display: -moz-box !important; + /*visibility: visible !important;*/ + fill: var(--download-button-default) !important; +} + +/*#downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-icon,*/ +/*#downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-progress-outer {*/ + /*-moz-context-properties: fill, fill-opacity;*/ + /*fill: var(--toolbarbutton-icon-fill-attention);*/ + /*fill-opacity: 1;*/ +/*}*/ + +/*No zoom button*/ +#urlbar-zoom-button {display:none!important} + +/*Tab loading animation*/ +.tab-throbber::before { + fill: var(--tab-loading-dots) !important; + opacity: 1 !important; +} + + +/*No "saved to library" animation*/ +#confirmation-hint { + display: none !important; +} diff --git a/firefox/MaterialFox/chrome/find.css b/firefox/MaterialFox/chrome/find.css new file mode 100644 index 0000000..906a418 --- /dev/null +++ b/firefox/MaterialFox/chrome/find.css @@ -0,0 +1,77 @@ +/* Based off of https://redd.it/7fxtdm*/ + +@keyframes scale-out { + 0% { + transform: scaleY(1); + } + 100% { + transform: scaleY(0); + } +} + +@keyframes scale-in { + 0% { + transform: scaleY(0); + } + 100% { + transform: scaleY(1); + } +} + +.browserContainer { + position: relative; +} + +findbar { + animation: 0.2s scale-in; + transform-origin: top center; + padding: 4px 6px 6px 6px; + height: 55px !important; + line-height: 30px !important; + background: var(--findbar-bg) !important; + color: var(--findbar-fg) !important; + position: absolute; + top: 5px; + right: 35px; + border-radius: 3px !important; + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.75); + min-width: 300px !important; +} + +findbar[hidden='true'] { + animation: 0.2s scale-out; +} + +.findbar-closebutton .toolbarbutton-icon { + transform: scale(1.35); + padding: 2px !important; +} +.findbar-closebutton { + background: none !important; +} + +.close-icon:hover { + fill-opacity: 0 !important; +} + +.findbar-container > hbox > * { + border: none !important; + background: var(--findbar-bg) !important; + color: var(--findbar-fg) !important; +} + +.findbar-container > hbox > toolbarbutton{ + outline: 0 !important; +} + +.findbar-container > hbox > toolbarbutton:hover:active { + box-shadow: none !important; +} + +.findbar-container > hbox > toolbarbutton > .toolbarbutton-icon { + padding: 5px !important; +} + +.findbar-find-status { + display: none !important; +} diff --git a/firefox/MaterialFox/chrome/tabs.css b/firefox/MaterialFox/chrome/tabs.css new file mode 100644 index 0000000..9b34f1d --- /dev/null +++ b/firefox/MaterialFox/chrome/tabs.css @@ -0,0 +1,150 @@ +.tab-line, +.titlebar-placeholder[type='pre-tabs'], +#alltabs-button { + display: none !important; +} + +.tabbrowser-tab[beforehovered]:after, +.tabbrowser-tab:hover:after, +.tabbrowser-tab[beforeselected-visible]:after, +last-visible-tab, +.tabbrowser-tab[last-visible-tab]:after, +.tabbrowser-tab[selected]:after, +.tabbrowser-tab[selected]:before { + border-color: var(--secondary) !important; +} + +.tabbrowser-tab:after { + transform: scaleY(0.6) !important; +} + +#main-window[sizemode='normal'] #new-tab-button { + margin-top: 0px !important; +} + +#main-window[sizemode='normal'] #tabbrowser-tabs { + margin-top: 0px !important; +} + +#new-tab-button { + margin: 0px -2px 0 8px !important; +} + +/* Background behind tabs */ +#TabsToolbar +{ + -moz-appearance: none !important; + background: var(--secondary) !important; + color: inherit !important; + padding-inline-end: 2px !important; +} + +.tabbrowser-tab[selected='true'] .tab-background { + background: var(--main) !important; + color: var(--selected-fg) !important; + min-height: 36px !important; + z-index: 100 !important; +} + +#tabbrowser-tabs { + min-height: 36px !important; + max-height: 36px !important; + margin-bottom: 0 !important; + padding-bottom: 0 !important; + background: var(--secondary) !important; + color: var(--unselected-fg) !important; +} + +.arrowscrollbox-scrollbox { + padding: 0 8px 0 8px !important; + overflow: visible !important; +} + +/* Tab curves */ +.tabbrowser-tab .tab-background { + height: 36px !important; + border-radius: 8px 8px 0 0 !important; + background: var(--secondary) !important; + position: relative !important; + -moz-transition: 10.25s filter ease-in-out; +} + +.tab-background:before, +.tab-background:after { + content: ''; + position: absolute; + height: 8px; + width: 20px; + bottom: 0; + z-index: 50 !important; +} + +.tab-background:after { + right: -20px; + border-radius: 0 0 0 8px; + box-shadow: -8px 0 0 0 var(--secondary); +} + +.tab-background:before { + left: -20px; + border-radius: 0 0 8px 0; + box-shadow: 8px 0 0 0 var(--secondary); +} + +.tab-background[selected]:after { + box-shadow: -8px 0 0 0 var(--main); +} + +.tab-background[selected]:before { + box-shadow: 8px 0 0 0 var(--main); +} + +.tabbrowser-tab:not([selected]):hover .tab-background { + filter: brightness(1.10) !important; + /*background: var(--hover) !important;*/ + z-index: 100 !important; +} + +.tabbrowser-tab:not(:hover):not([selected]) .tab-close-button { + display: none !important; +} +/* no close button */ +.tabbrowser-tab .tab-close-button { + display: none !important; +} + +/*no scrolling*/ + +.tabbrowser-tab { + min-width: initial !important; +} +.tab-content { + overflow: hidden !important; +} + +/* No flash on load */ + +.tab-loading-burst { + display: none !important; +} + +/* greyscale icons in toolbar, not tabs*/ +toolbar#PersonalToolbar > toolbaritem#personal-bookmarks toolbarbutton.bookmark-item .toolbarbutton-icon { + filter: grayscale(100%); +} + +/* favicons */ +.tab-icon-image { + /*Disable*/ + display: none !important; + + /*filter: grayscale(100%);*/ + /*filter: contrast(10%);*/ + /*filter: brightness(76%);*/ + + /*Add backdrop*/ + /*With big enough padding, the favicon can be hidden*/ + /*background-color: var(--favicon-backdrop) !important;*/ + /*border-radius: 25%;*/ + /*padding: 8px;*/ +} diff --git a/firefox/MaterialFox/chrome/theme/manta.css b/firefox/MaterialFox/chrome/theme/manta.css new file mode 100644 index 0000000..0728558 --- /dev/null +++ b/firefox/MaterialFox/chrome/theme/manta.css @@ -0,0 +1,42 @@ +/* Manta Theme */ +:root { + /* .Xresources colors */ + --color0: #1E2541; + --color1: #F0719B; + --color2: #5AF7B0; + --color3: #FFA56B; + --color4: #57C7FF; + --color5: #C792EA; + --color6: #89DDFF; + --color7: #EEFFFF; + --color8: #354274; + --color9: #F02E6E; + --color10: #2CE592; + --color11: #FF8537; + --color12: #1DA0E2; + --color13: #A742EA; + --color14: #47BAE8; + --color15: #DEE6E7; + + --color16: #2A335A; + + --main: var(--color0); /*selected tab and rest of navbar*/ + --secondary: var(--color16); /* top background and all non-selected tabs*/ + /*--secondary: hsla(0, 0%, 0%, 0%);*/ + --selected-fg: var(--color7); + --unselected-fg: var(--color7); + --search: var(--color4); + --tab-loading-dots: var(--color7); + --findbar-bg: var(--color8); + --findbar-fg: var(--color7); + --urlbar-bg: var(--main); + --urlbar-fg: var(--color7); + --menu-bg: var(--color7); + --menu-fg: var(--color0); + --favicon-backdrop: var(--color4); + /*TODO: Download button needs work*/ + --download-button-default: var(--color0); + --download-button-progress: var(--color3); + --download-button-finished: var(--color4); + --hover: hsla(0, 0%, 80%, 0.2); +} diff --git a/firefox/MaterialFox/chrome/userChrome.css b/firefox/MaterialFox/chrome/userChrome.css new file mode 100644 index 0000000..cc46068 --- /dev/null +++ b/firefox/MaterialFox/chrome/userChrome.css @@ -0,0 +1,8 @@ +@import url('theme/manta.css'); +@import url('alert.css'); +@import url('context.css'); +@import url('find.css'); +@import url('custom.css'); +@import url('tabs.css'); + +@namespace url('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'); diff --git a/firefox/MaterialFox/chrome/userContent.css b/firefox/MaterialFox/chrome/userContent.css new file mode 100644 index 0000000..3c3749d --- /dev/null +++ b/firefox/MaterialFox/chrome/userContent.css @@ -0,0 +1,21 @@ +/*@-moz-document url("about:newtab") { */ + /*body {*/ + /*background-color: #08070C !important;*/ + /*}*/ +/*}*/ + +/*@-moz-document url(about:blank) {*/ + /*html,body { background: #08070C !important; }*/ +/*}*/ + + +/*fix dark text on dark inputbox*/ +input:not(.urlbar-input):not(.textbox-input):not(.form-control):not([type='checkbox']):not([type='radio']), textarea, select { + -moz-appearance: none !important; + background-color: white; + color: black; +} + +#downloads-indicator-counter { + color: white; +}