From 3b94b429286c50eb98e31b9f153c9082373f4328 Mon Sep 17 00:00:00 2001 From: Erik Sandström Date: Sat, 15 Aug 2015 21:04:16 +0200 Subject: Updated mpv conf and changed some structure --- awesome/rc.lua | 572 ------------------ awesome/theme.lua | 115 ---- firefox/userChrome.css | 312 ++++++++++ firefox/userContent.css | 1 + mpv/config | 48 +- mpv/input.conf | 1 + mpv/scripts.other/fpsadjust.lua | 50 ++ mpv/scripts.other/mpv-progressbar.lua | 1052 +++++++++++++++++++++++++++++++++ mpv/scripts/autoload.lua | 121 ++++ mpv/scripts/autosub.lua | 24 + mpv/scripts/stats.lua | 263 +++++++++ penis | 0 tmux.conf | 179 ------ tmux/tmux.conf | 179 ++++++ weechat.conf | 832 -------------------------- weechat/weechat.conf | 832 ++++++++++++++++++++++++++ 16 files changed, 2864 insertions(+), 1717 deletions(-) delete mode 100644 awesome/rc.lua delete mode 100644 awesome/theme.lua create mode 100755 firefox/userChrome.css create mode 100755 firefox/userContent.css create mode 100644 mpv/scripts.other/fpsadjust.lua create mode 100644 mpv/scripts.other/mpv-progressbar.lua create mode 100644 mpv/scripts/autoload.lua create mode 100644 mpv/scripts/autosub.lua create mode 100644 mpv/scripts/stats.lua delete mode 100644 penis delete mode 100644 tmux.conf create mode 100644 tmux/tmux.conf delete mode 100644 weechat.conf create mode 100644 weechat/weechat.conf diff --git a/awesome/rc.lua b/awesome/rc.lua deleted file mode 100644 index df7f57a..0000000 --- a/awesome/rc.lua +++ /dev/null @@ -1,572 +0,0 @@ --- Standard awesome library -local gears = require("gears") -local awful = require("awful") -awful.rules = require("awful.rules") -require("awful.autofocus") --- Widget and layout library -local wibox = require("wibox") --- Theme handling library -local beautiful = require("beautiful") --- Notification library -local naughty = require("naughty") -local menubar = require("menubar") -local vicious = require("vicious") --- awful.util.spawn_with_shell("compton -cGf") --- {{{ 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 = err }) - in_error = false - end) -end --- }}} - --- {{{ Variable definitions --- Themes define colours, icons, and wallpapers -beautiful.init("/home/zephcom/.config/awesome/themes/darkappa/theme.lua") --- }}} --- {{{ wallpaper rotate -function scandir(directory, filter) - local i, t, popen = 0, {}, io.popen - if not filter then - filter = function(s) return true end - end - print(filter) - for filename in popen('ls -a "'..directory..'"'):lines() do - if filter(filename) then - i = i + 1 - t[i] = filename - end - end - return t -end --- }}} --- {{{ configure wallpaper rotate -wp_index = 1 -wp_timeout = 60 -wp_path = "/home/zephcom/Pictures/Wallpaper/Awesome/" -wp_filter = function(s) return string.match(s,"%.png$") or string.match(s,"%.jpg$") end -wp_files = scandir(wp_path, wp_filter) --- wallpaper timer -wp_timer = timer { timeout = wp_timeout } -wp_timer:connect_signal("timeout", function() - -- set wallpaper - for s = 1, screen.count() do - gears.wallpaper.maximized(wp_path .. wp_files[wp_index], s, true) - end - -- stop the timer - wp_timer:stop() - -- random index - wp_index = math.random( 1, #wp_files) - -- restart timer - wp_timer.timeout = wp_timeout - wp_timer:start() -end) --- initial start -wp_timer:start() --- This is used later as the default terminal and editor to run. -terminal = "urxvt" -editor = os.getenv("EDITOR") or "nano" -editor_cmd = terminal .. " -e " .. editor - --- Default modkey. --- Usually, Mod4 is the key with a logo between Control and Alt. --- If you do not like this or do not have such a key, --- I suggest you to remap Mod4 to another key using xmodmap or other tools. --- However, you can use another modifier like Mod1, but it may interact with others. -modkey = "Mod4" - --- Table of layouts to cover with awful.layout.inc, order matters. -local layouts = -{ - awful.layout.suit.floating, - awful.layout.suit.tile, - awful.layout.suit.tile.left, - awful.layout.suit.tile.bottom, - awful.layout.suit.tile.top, - awful.layout.suit.fair, - awful.layout.suit.fair.horizontal, - awful.layout.suit.spiral, - awful.layout.suit.spiral.dwindle, - awful.layout.suit.max, - awful.layout.suit.max.fullscreen, - awful.layout.suit.magnifier -} --- }}} - --- {{{ Wallpaper -if beautiful.wallpaper then - for s = 1, screen.count() do - gears.wallpaper.maximized(beautiful.wallpaper, s, true) - end -end --- }}} - --- {{{ Tags --- Define a tag table which hold all screen tags. -tags = {} -for s = 1, screen.count() do - -- Each screen has its own tag table. --- tags[s] = awful.tag({ "1", "2", "3", "4", "5", "6"}, s, layouts[1]) - tags[s] = awful.tag({ "一", "二", "三", "四", "五", "六", "七"}, s, layouts[1]) -end --- }}} - --- {{{ Menu --- Create a laucher widget and a main menu -myawesomemenu = { - { "manual", terminal .. " -e man awesome" }, - { "edit config", editor_cmd .. " " .. awesome.conffile }, - { "restart", awesome.restart }, - { "quit", awesome.quit } -} -mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, - { "tools", sysmenu, nil }, - { "games", gamesmenu, nil }, - { "terminal", terminal }, - { "file browser", terminal .. " -e ranger" }, - { "&firefox", "firefox" }, - { "&mail", "thunderbird"}, - { "&gimp", "gimp"}, - { "&ncmpcpp", terminal .. " -e ncmpcpp" } - } - }) - - -mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, - menu = mymainmenu }) - --- Menubar configuration -menubar.utils.terminal = terminal -- Set the terminal for applications that require it --- }}} -separator = wibox.widget.textbox(" |") --- {{{ Wibox --- Create a textclock widget -mytextclock = awful.widget.textclock() - --- Keyboard widget, changes between ansi and shitty iso swe layout -kbdcfg = {} -kbdcfg.cmd = "setxkbmap" -kbdcfg.layout = { { "us", "" }, { "se", "" } } -kbdcfg.current = 1 -- us is our default layout -kbdcfg.widget = wibox.widget.textbox() -kbdcfg.widget:set_text(" " .. kbdcfg.layout[kbdcfg.current][1] .. "") -kbdcfg.switch = function () - kbdcfg.current = kbdcfg.current % #(kbdcfg.layout) + 1 - local t = kbdcfg.layout[kbdcfg.current] - kbdcfg.widget:set_text(" " .. t[1] .. "") - os.execute( kbdcfg.cmd .. " " .. t[1] .. "" .. t[2] ) - end --- mouse bindings for keyboard widget -kbdcfg.widget:buttons( - awful.util.table.join(awful.button({ }, 1, function () kbdcfg.switch() end)) - ) --- icons and other stuffs -batimage = wibox.widget.imagebox() -batimage:set_image (beautiful.widget_battery) -batwidget = wibox.widget.textbox() --- Register widget -vicious.register(batwidget, vicious.widgets.bat, "$1$2% $3", 3, "BAT0") -clockimage = wibox.widget.imagebox() -clockimage:set_image (beautiful.widget_clock) - -thermalwidget = wibox.widget.textbox() -vicious.register(thermalwidget, vicious.widgets.thermal, "$1°С",4,"thermal_zone0") -thermalimage = wibox.widget.imagebox() -thermalimage:set_image (beautiful.widget_temp) - -volwidget = wibox.widget.textbox() -vicious.register(volwidget, vicious.widgets.volume, " $1%", 1, "Master") -volimage = wibox.widget.imagebox() -volimage:set_image (beautiful.widget_volume) - - -memimage = wibox.widget.imagebox() -memimage:set_image (beautiful.widget_mem) -memwidget = wibox.widget.textbox() -vicious.register(memwidget, vicious.widgets.mem, "$2MB") - - -mpdimage = wibox.widget.imagebox() -mpdimage:set_image (beautiful.widget_music) --- Initialize widget -mpdwidget = wibox.widget.textbox() --- Register widget -vicious.register(mpdwidget, vicious.widgets.mpd, - function (mpdwidget, args) - if args["{state}"] == "Stop" then - return " - " - else - return args["{Artist}"]..' - '.. args["{Title}"] - end - end, 2) - - --- Create a wibox for each screen and add it --- bottombox = {} -mywibox = {} -mypromptbox = {} -mylayoutbox = {} -mytaglist = {} -mytaglist.buttons = awful.util.table.join( - awful.button({ }, 1, awful.tag.viewonly), - awful.button({ modkey }, 1, awful.client.movetotag), - awful.button({ }, 3, awful.tag.viewtoggle), - awful.button({ modkey }, 3, awful.client.toggletag), - awful.button({ }, 4, function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end), - awful.button({ }, 5, function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end) - ) -mytasklist = {} -mytasklist.buttons = awful.util.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() then - awful.tag.viewonly(c:tags()[1]) - end - -- This will also un-minimize - -- the client, if needed - client.focus = c - c:raise() - end - end), - awful.button({ }, 3, function () - if instance then - instance:hide() - instance = nil - else - instance = awful.menu.clients({ width=250 }) - end - end), - awful.button({ }, 4, function () - awful.client.focus.byidx(1) - if client.focus then client.focus:raise() end - end), - awful.button({ }, 5, function () - awful.client.focus.byidx(-1) - if client.focus then client.focus:raise() end - end)) - -for s = 1, screen.count() do - -- Create a promptbox for each screen - mypromptbox[s] = awful.widget.prompt() - -- Create an imagebox widget which will contains an icon indicating which layout we're using. - -- We need one layoutbox per screen. - mylayoutbox[s] = awful.widget.layoutbox(s) - mylayoutbox[s]:buttons(awful.util.table.join( - awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end), - awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end), - awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end), - awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end))) - -- Create a taglist widget - mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.filter.all, mytaglist.buttons) - - -- Create a tasklist widget - mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons) - - -- Create the wibox - mywibox[s] = awful.wibox({ position = "top", screen = s }) - -- bottombox[s] = awful.wibox({ position = "bottom", screen = s }) - - -- Widgets that are aligned to the left - local left_layout = wibox.layout.fixed.horizontal() - left_layout:add(mytaglist[s]) - left_layout:add(mypromptbox[s]) - - -- Widgets that are aligned to the right - local right_layout = wibox.layout.fixed.horizontal() - if s == 1 then right_layout:add(wibox.widget.systray()) end - right_layout:add(separator) - right_layout:add(mpdimage) - right_layout:add(mpdwidget) - right_layout:add(separator) - right_layout:add(volimage) - right_layout:add(volwidget) - right_layout:add(separator) - right_layout:add(thermalimage) - right_layout:add(thermalwidget) - right_layout:add(separator) - right_layout:add(memimage) - right_layout:add(memwidget) - right_layout:add(separator) - right_layout:add(batimage) - right_layout:add(batwidget) - right_layout:add(separator) - right_layout:add(clockimage) - right_layout:add(mytextclock) - right_layout:add(separator) - right_layout:add(kbdcfg.widget) - right_layout:add(separator) - right_layout:add(mylayoutbox[s]) - -- Now bring it all together (with the tasklist in the middle) - local layout = wibox.layout.align.horizontal() - layout:set_left(left_layout) - layout:set_middle(mytasklist[s]) - layout:set_right(right_layout) - - mywibox[s]:set_widget(layout) -end --- local right_layout = wibox.layout.fixed.horizontal() --- if s == 1 then right_layout:add(wibox.widget.systray()) end --- right_layout:add(mytextclock) --- local layout = wibox.layout.align.horizontal() --- layout:set_right(right_layout) --- bottombox[s]:set_widget(layout) --- }}} - --- {{{ Mouse bindings -root.buttons(awful.util.table.join( - awful.button({ }, 3, function () mymainmenu:toggle() end))) --- }}} - --- {{{ Key bindings -globalkeys = awful.util.table.join( - awful.key({ modkey, }, "Left", awful.tag.viewprev ), - awful.key({ modkey, }, "Right", awful.tag.viewnext ), - awful.key({ modkey, }, "Escape", awful.tag.history.restore), - awful.key({ }, "Menu", function () kbdcfg.switch() end), - - awful.key({ modkey, }, "j", - function () - awful.client.focus.byidx( 1) - if client.focus then client.focus:raise() end - end), - awful.key({ modkey, }, "k", - function () - awful.client.focus.byidx(-1) - if client.focus then client.focus:raise() end - end), - awful.key({ modkey, }, "w", function () mymainmenu:show() end), - - -- Layout manipulation - awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end), - awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end), - awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end), - awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end), - awful.key({ modkey, }, "u", awful.client.urgent.jumpto), - awful.key({ modkey, }, "Tab", - function () - awful.client.focus.history.previous() - if client.focus then - client.focus:raise() - end - end), - - -- Standard program - awful.key({ modkey, }, "Return", function () awful.util.spawn(terminal) end), - awful.key({ modkey, "Control" }, "r", awesome.restart), - awful.key({ modkey, "Shift" }, "q", awesome.quit), - - awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end), - awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end), - awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1) end), - awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end), - awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1) end), - awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end), - awful.key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end), - awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end), - - awful.key({ modkey, "Control" }, "n", awful.client.restore), - - -- Prompt - awful.key({ modkey }, "r", function () mypromptbox[mouse.screen]:run() end), - - awful.key({ modkey }, "x", - function () - awful.prompt.run({ prompt = "Run Lua code: " }, - mypromptbox[mouse.screen].widget, - awful.util.eval, nil, - awful.util.getdir("cache") .. "/history_eval") - end), - -- Menubar - awful.key({ modkey }, "p", function() menubar.show() end) -) - -clientkeys = awful.util.table.join( - awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end), - awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end), - awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle ), - awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end), - awful.key({ modkey, }, "o", awful.client.movetoscreen ), - awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end), - 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), - awful.key({ modkey, }, "m", - function (c) - c.maximized_horizontal = not c.maximized_horizontal - c.maximized_vertical = not c.maximized_vertical - end) -) - --- Bind all key numbers to tags. --- Be careful: we use keycodes to make it works on any keyboard layout. --- This should map on the top row of your keyboard, usually 1 to 9. -for i = 1, 9 do - globalkeys = awful.util.table.join(globalkeys, - awful.key({ modkey }, "#" .. i + 9, - function () - local screen = mouse.screen - local tag = awful.tag.gettags(screen)[i] - if tag then - awful.tag.viewonly(tag) - end - end), - awful.key({ modkey, "Control" }, "#" .. i + 9, - function () - local screen = mouse.screen - local tag = awful.tag.gettags(screen)[i] - if tag then - awful.tag.viewtoggle(tag) - end - end), - awful.key({ modkey, "Shift" }, "#" .. i + 9, - function () - if client.focus then - local tag = awful.tag.gettags(client.focus.screen)[i] - if tag then - awful.client.movetotag(tag) - end - end - end), - awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, - function () - if client.focus then - local tag = awful.tag.gettags(client.focus.screen)[i] - if tag then - awful.client.toggletag(tag) - end - end - end)) -end - -clientbuttons = awful.util.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, awful.mouse.client.resize)) - --- Set keys -root.keys(globalkeys) --- }}} - --- {{{ Rules -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, - keys = clientkeys, - buttons = clientbuttons, - size_hints_honor = false } }, - { rule = { class = "feh" }, - properties = { floating = true } }, - { rule = { class = "pinentry" }, - properties = { floating = true } }, - { rule = { class = "mpv" }, - properties = { size_hints_honor = true } }, - { rule = { class = "Arandr" }, - properties = { floating = true } }, - { rule = { class = "Gifview" }, - properties = { floating = true } }, - -- Set Firefox to always map on tags number 2 of screen 1. - -- { rule = { class = "Firefox" }, - -- properties = { tag = tags[1][2] } }, -} --- }}} - --- {{{ Signals --- Signal function to execute when a new client appears. -client.connect_signal("manage", function (c, startup) - -- Enable sloppy focus - c: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) - - if not startup then - -- Set the windows at the slave, - -- i.e. put it at the end of others instead of setting it master. - -- awful.client.setslave(c) - - -- Put windows in a smart way, only if they does not set an initial position. - if not c.size_hints.user_position and not c.size_hints.program_position then - awful.placement.no_overlap(c) - awful.placement.no_offscreen(c) - end - end - - local titlebars_enabled = false - if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then - -- buttons for the titlebar - local buttons = awful.util.table.join( - awful.button({ }, 1, function() - client.focus = c - c:raise() - awful.mouse.client.move(c) - end), - awful.button({ }, 3, function() - client.focus = c - c:raise() - awful.mouse.client.resize(c) - end) - ) - - -- Widgets that are aligned to the left - local left_layout = wibox.layout.fixed.horizontal() - left_layout:add(awful.titlebar.widget.iconwidget(c)) - left_layout:buttons(buttons) - - -- Widgets that are aligned to the right - local right_layout = wibox.layout.fixed.horizontal() - right_layout:add(awful.titlebar.widget.floatingbutton(c)) - right_layout:add(awful.titlebar.widget.maximizedbutton(c)) - right_layout:add(awful.titlebar.widget.stickybutton(c)) - right_layout:add(awful.titlebar.widget.ontopbutton(c)) - right_layout:add(awful.titlebar.widget.closebutton(c)) - - -- The title goes in the middle - local middle_layout = wibox.layout.flex.horizontal() - local title = awful.titlebar.widget.titlewidget(c) - title:set_align("center") - middle_layout:add(title) - middle_layout:buttons(buttons) - - -- Now bring it all together - local layout = wibox.layout.align.horizontal() - layout:set_left(left_layout) - layout:set_right(right_layout) - layout:set_middle(middle_layout) - - awful.titlebar(c):set_widget(layout) - end -end) - -client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end) -client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end) --- }}} diff --git a/awesome/theme.lua b/awesome/theme.lua deleted file mode 100644 index 187cd2c..0000000 --- a/awesome/theme.lua +++ /dev/null @@ -1,115 +0,0 @@ ---------------------------- --- Default awesome theme -- ---------------------------- - -theme = {appasama} - -theme.font = "terminus 8" - -theme.bg_normal = "#252627" - ---theme.bg_focus = "#4b696d" -theme.bg_focus = "#803930" ---theme.bg_focus = "#35374e" -theme.bg_urgent = "#ff0000" -theme.bg_minimize = "#444444" - -theme.fg_normal = "#e1e3e6" -theme.fg_focus = "#ffffff" -theme.fg_urgent = "#d4d4d4" -theme.fg_minimize = "#d4d4d4" - -theme.border_width = "2" - --- theme.border_normal = "#4b696d" --- theme.border_focus = "#4b696d" --- theme.border_marked = "#4b696d" - --- Red theme (argus) -theme.border_normal = "#803930" -theme.border_focus = "#803930" -theme.border_marked = "#803930" - ---theme.border_normal = "#35374e" ---theme.border_focus = "#35374e" ---theme.border_marked = "#35374e" - -theme.tasklist_disable_icon = true --- There are other variable sets --- overriding the default one when --- defined, the sets are: --- [taglist|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] --- Example: ---theme.taglist_bg_focus = "#ff0000" - --- Display the taglist squares -theme.taglist_squares_sel = "/usr/share/awesome/themes/default/taglist/squarefw.png" -theme.taglist_squares_unsel = "/usr/share/awesome/themes/default/taglist/squarew.png" - -theme.tasklist_floating_icon = "/usr/share/awesome/themes/default/tasklist/floatingw.png" - --- Variables set for theming the menu: --- menu_[bg|fg]_[normal|focus] --- menu_[border_color|border_width] -theme.menu_submenu_icon = "/usr/share/awesome/themes/default/submenu.png" -theme.menu_height = "15" -theme.menu_width = "100" - --- 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 image to load -theme.titlebar_close_button_normal = "/usr/share/awesome/themes/default/titlebar/close_normal.png" -theme.titlebar_close_button_focus = "/usr/share/awesome/themes/default/titlebar/close_focus.png" - -theme.titlebar_ontop_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/ontop_normal_inactive.png" -theme.titlebar_ontop_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/ontop_focus_inactive.png" -theme.titlebar_ontop_button_normal_active = "/usr/share/awesome/themes/default/titlebar/ontop_normal_active.png" -theme.titlebar_ontop_button_focus_active = "/usr/share/awesome/themes/default/titlebar/ontop_focus_active.png" - -theme.titlebar_sticky_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/sticky_normal_inactive.png" -theme.titlebar_sticky_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/sticky_focus_inactive.png" -theme.titlebar_sticky_button_normal_active = "/usr/share/awesome/themes/default/titlebar/sticky_normal_active.png" -theme.titlebar_sticky_button_focus_active = "/usr/share/awesome/themes/default/titlebar/sticky_focus_active.png" - -theme.titlebar_floating_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/floating_normal_inactive.png" -theme.titlebar_floating_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/floating_focus_inactive.png" -theme.titlebar_floating_button_normal_active = "/usr/share/awesome/themes/default/titlebar/floating_normal_active.png" -theme.titlebar_floating_button_focus_active = "/usr/share/awesome/themes/default/titlebar/floating_focus_active.png" - -theme.titlebar_maximized_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/maximized_normal_inactive.png" -theme.titlebar_maximized_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/maximized_focus_inactive.png" -theme.titlebar_maximized_button_normal_active = "/usr/share/awesome/themes/default/titlebar/maximized_normal_active.png" -theme.titlebar_maximized_button_focus_active = "/usr/share/awesome/themes/default/titlebar/maximized_focus_active.png" - --- You can use your own command to set your wallpaper --- theme.wallpaper = "~/.config/awesome/themes/matoiwall.png" --- You can use your own layout icons like this: -theme.layout_fairh = "/usr/share/awesome/themes/default/layouts/fairhw.png" -theme.layout_fairv = "/usr/share/awesome/themes/default/layouts/fairvw.png" -theme.layout_floating = "/usr/share/awesome/themes/default/layouts/floatingw.png" -theme.layout_magnifier = "/usr/share/awesome/themes/default/layouts/magnifierw.png" -theme.layout_max = "/usr/share/awesome/themes/default/layouts/maxw.png" -theme.layout_fullscreen = "/usr/share/awesome/themes/default/layouts/fullscreenw.png" -theme.layout_tilebottom = "/usr/share/awesome/themes/default/layouts/tilebottomw.png" -theme.layout_tileleft = "/usr/share/awesome/themes/default/layouts/tileleftw.png" -theme.layout_tile = "/usr/share/awesome/themes/default/layouts/tilew.png" -theme.layout_tiletop = "/usr/share/awesome/themes/default/layouts/tiletopw.png" -theme.layout_spiral = "/usr/share/awesome/themes/default/layouts/spiralw.png" -theme.layout_dwindle = "/usr/share/awesome/themes/default/layouts/dwindlew.png" - -theme.awesome_icon = "/usr/share/awesome/icons/awesome16.png" - -theme.widget_mem = "/home/zephcom/.config/awesome/themes/darkappa/icons_r/mem.png" -theme.widget_temp = "/home/zephcom/.config/awesome/themes/darkappa/icons_r/temp.png" -theme.widget_battery = "/home/zephcom/.config/awesome/themes/darkappa/icons_r/battery.png" -theme.widget_music = "/home/zephcom/.config/awesome/themes/darkappa/icons_r/music.png" -theme.widget_clock = "/home/zephcom/.config/awesome/themes/darkappa/icons_r/clock.png" -theme.widget_volume = "/home/zephcom/.config/awesome/themes/darkappa/icons_r/volume.png" -return theme --- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/firefox/userChrome.css b/firefox/userChrome.css new file mode 100755 index 0000000..11ad405 --- /dev/null +++ b/firefox/userChrome.css @@ -0,0 +1,312 @@ +@namespace html url(http://www.w3.org/1999/xhtml); +@namespace xul url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); +/* + Author: Twily + Description: Minimal flat styled tabs for Australis + Compitability: Firefox Nightly v31.0a1 - v32.0a1 (Australis) + CSS Variables were introduced to Firefox in v29.0a1 + Website: http://twily.info/ + + + Note: To enable the urlbar; search this css for: + "make the url-bar visible" and "adjust margin-top to" +*/ +#liberator-commandline.status_secure { + background-color: #B0FF00 !important; + color: black; +} +#liberator-commandline-command, +#liberator-statusline, +#liberator-bottombar, +#status-bar, +#liberator-status, +#liberator-message, +#liberator-mode, +#liberator-commandline{ + color: #ededf7; + background: #252627; + font-size: 8pt; + height: 12px; +} +#liberator-container{ + font-size: 8pt; +} +#liberator-commandline * { + color: #ededf7; + background: #252627; + font-size: 8pt; +} +#liberator-commandline-command { + color: #ededf7; + background: #252627; + font-family: Source Code Pro !important; + font-size: 6pt; !important } +#liberator-separator { + border-top: 0px solid transparent !important; } + +:root { + /* TAB VARIABLES */ + --bg-light: #17181A; --bg-dark: #222326; + --fg-light: #D6D7D9; --fg-dark: #AAABAD; + /*--tab-triangle-correction: -1px;*/ + --tab-height: 18px; --tab-icon-size: 16px; --tab-strip-margin: -12px; --tab-overlap: -5px; + --tab-fonts: "Monospace", "Source Sans Pro", "Lemon",monospace,"Dejavu Sans"; --tab-font-size: 8pt; + --tab-triangle: block; /* block | none */ + + /* URL VARIABLES */ + --url-background: var(--bg-light); --url-color: var(--fg-dark); + --url-height: 24px; --url-right-margin: 5px; + --url-fonts: "Terminus", "Source Sans Pro", "Lemon",monospace,"Dejavu Sans"; --url-font-size: 10pt; + --url-text-align: center; /* left | center | right */ + --url-position: absolute; /* absolute == top (under tabs) || fixed == bottom of browser */ + + margin-bottom: 0 /* var(--url-height) */ !important; +} + +@-moz-document url(chrome://browser/content/browser.xul) { + /* URL-BAR */ + #PanelUI-button, #bookmarks-menu-button, #downloads-button, #home-button, #stylish-toolbar-button, #abp-toolbarbutton, + #back-button, #forward-button, #identity-box, #urlbar-reload-button, #urlbar-stop-button, #urlbar-go-button, + #notification-popup-box, #new-tab-button, #private-browsing-indicator, #search-container, #nav-bar-overflow-button, + .tabs-newtab-button, .tab-close-button, .tab-close, .tab-throbber, .tab-background-start, .tab-background-end + /*, #alltabs-button, #tabview-button, .tab-icon-image, .tab-icon-image:not([pinned])*/ { display: none !important; } + + .tab-drop-indicator { margin-bottom: 0 !important; } + + #nav-bar { + position: var(--url-position) !important; bottom: 0 !important; + width: 100% !important; height: var(--url-height) !important; + min-height: var(--url-height) !important; max-height: var(--url-height) !important; + margin: 0 0 0 0 !important; + + /* --- Uncomment the section below to attach the url-bar to the tab-bar [EXPERIMENTAL] (Require a line in "#TabsToolbar" below) --- */ + /* + position: fixed !important; top: 0 !important; left: 0 !important; + width: 315px !important; max-width: 315px !important; + z-index: 100 !important; + /**/ + } + #nav-bar-customization-target { width: 100% !important; } + #urlbar-wrapper { + width: 100% !important; margin-top: -0px !important; /* adjust margin-top to ~ -5px if you experience gap */ + position: absolute !important; top: 0 !important; left: 0 !important; + border-bottom: 0px solid var(--bg-light) !important; + } + #urlbar { + border: none !important; border-radius: 0 !important; + margin: 0 0 0 0 !important; padding: 0 2px 0 9px !important; + width: calc(100% + var(--url-right-margin)) !important; + height: var(--url-height) !important; min-height: var(--url-height) !important; + background: var(--url-background) !important; color: var(--url-color) !important; + font-family: var(--url-fonts) !important; font-size: var(--url-font-size) !important; + text-align: var(--url-text-align) !important; + } + /*#urlbar * { -moz-appearance: none !important; }*/ + + /* --- Comment out the section below to make the url-bar visible --- */ + /**/ + #nav-bar { + width: 0 !important; height: 0 !important; + position: fixed !important; left: -1px !important; top: -1px !important; + overflow: hidden !important; visibility: hidden !important; + } + /**/ + + + /* TABS */ + .tabbrowser-tab[fadein]:not([pinned]) { min-width: 100px !important; max-width: 240px /*100%*/ !important; } + tab { + font-family: var(--tab-fonts) !important; + height: var(--tab-height) !important; min-height: var(--tab-height) !important; + background: var(--bg-dark) !important; color: var(--fg-dark) !important; + font-size: var(--tab-font-size); text-shadow: none !important; text-align: center /* center | left */ !important; + } + + .tabbrowser-tab label { padding: 0 22px 0 22px !important; } + + #tabbrowser-tabs .tabbrowser-tab[pinned] { width: 48px !important; } + #tabbrowser-tabs .tabbrowser-tab[pinned] label { display: none !important; } + + #tabbrowser-tabs .tabbrowser-tab .tab-icon-image { + margin: 0 -10px 0 16px !important; + width: var(--tab-icon-size) !important; + height: var(--tab-icon-size) !important; + } + + .tabbrowser-tab *, .tabs-newtab-button * { + background: none !important; list-style-image: none !important; + margin: 0 0 0 0 !important; padding: 0 0 0 0 !important; + -moz-appearance: none !important; + } + + #tabbrowser-tabs .tabbrowser-tab[pinned] .tab-stack { height: var(--tab-height) !important; width: 100% !important; } + #tabbrowser-tabs .tabbrowser-arrowscrollbox .box-inherit.scrollbox-innerbox { max-height: var(--tab-height) !important; } + .scrollbutton-up, .scrollbutton-down { border: none !important; } + + .tabbrowser-tab[selected="true"] .tab-stack { + background: var(--bg-light) !important; color: var(--fg-light) !important; + border-radius: 0px !important; position: relative !important; + /*border-top: 1px solid #dc52a5 !important;/**/ + } + .tabbrowser-tab[selected="true"]:before { /* Left Triangle (of selected tab) */ + content: '' !important; display: var(--tab-triangle); + position: absolute !important; top: 0 !important; left: var(--tab-overlap) !important; + width: 0 !important; height: 0 !important; + border: none !important; z-index: 2 !important; + + /*border-left: calc(var(--tab-height)/2) solid var(--bg-dark) !important; + border-top: calc((var(--tab-height)/2) - var(--tab-triangle-correction)) solid var(--bg-light) !important; + border-bottom: calc((var(--tab-height)/2) + var(--tab-triangle-correction)) solid var(--bg-light) !important;*/ + border-top: var(--tab-height) solid var(--bg-dark) !important; + border-right: calc(var(--tab-height)/2) solid var(--bg-light) !important; + } + .tabbrowser-tab[selected="true"]:after { /* Right Triangle (of selected tab) */ + content: '' !important; display: var(--tab-triangle); + position: absolute !important; top: 0 !important; right: var(--tab-overlap) !important; + width: 0 !important; height: 0 !important; + border: none !important; z-index: 2 !important; + + /*border-right: calc(var(--tab-height)/2) solid var(--bg-dark) !important; + border-top: calc((var(--tab-height)/2) - var(--tab-triangle-correction)) solid var(--bg-light) !important; + border-bottom: calc((var(--tab-height)/2) + var(--tab-triangle-correction)) solid var(--bg-light) !important;*/ + border-top: var(--tab-height) solid var(--bg-dark) !important; + border-left: calc(var(--tab-height)/2) solid var(--bg-light) !important; + } + + #TabsToolbar, #tabbrowser-tabs { + -moz-appearance: none !important; + height: var(--tab-height) !important; min-height: var(--tab-height)!important; + margin: 0 var(--tab-strip-margin) !important; + background: var(--bg-dark) !important; + + /* --- Uncomment the line below to attach the url-bar to the tab-bar [EXPERIMENTAL] (Require a line in "#nav-bar" above) --- */ + /*margin-left: 150px !important;/**/ + } + #TabsToolbar::after { display: none !important; } + .tabbrowser-tab::before, .tabbrowser-tab::after { background: none !important; } + + /*browser, #navigator-toolbox { -moz-appearance: none !important; background: transparent !important; }*/ + + /*#navigator-toolbox::after { height: 0 !important;/**/ + #navigator-toolbox::after { height: 3px !important; background: var(--bg-light) !important; } + #liberator-separator { height: 3px !important; background: var(--bg-light) !important; } + + /* MENUS */ + menuitem + menuseparator, menu + menuseparator, .menu-iconic-left { display: none !important; } + menuitem > label { margin-left: var(--tab-height) !important; } + menubar, menubutton, menulist, menu, menuitem { + font-family: var(--tab-fonts) !important; font-size: var(--tab-font-size); + height: var(--tab-height) !important; + } + + /* HIDE ORANGE MENU BUTTON */ + #appmenu-toolbar-button, #appmenu-button-container { display: none !important; } + + /* HIDE STATUS BAR */ + #status-bar, #statusbar-display, statuspanel { display: none !important; } + + /* PRIVATE BROWSING ICON HIDE */ + #main-window[privatebrowsingmode=temporary] #private-browsing-indicator, + #main-window[privatebrowsingmode=temporary] #private-browsing-indicator-titlebar { display: none !important; } + + /* Vimperator icon style */ + #liberator-statusline:not([customizing="true"]) { margin: -2px -2px !important; padding: 0 0 !important; height: 24px !important; } + #liberator-statusline:not([customizing="true"]) :-moz-any(toolbarbutton) { height: 100% !important; } + #tabview-button { + list-style-image: url(http://twily.info/img/tabview-button.png?v=2) /* 16x16 px image */ !important; + -moz-image-region: rect(0, 0, 0, 0) !important; + } + + #liberator-completions { background: var(--bg-dark) !important; } + + /* Tabgroup margin top fix */ + #tab-view-deck #tab-view { margin-top: 11px !important; } + #tab-view-deck { background: var(--bg-light) !important; } +} + + +/* Tab Group Page Style (Ctrl+Shift+E) */ +@-moz-document url(chrome://browser/content/tabview.html) { + #content #bg, #actions, body { background: var(--bg-light) !important; } + body * { color: var(--fg-light) !important; } + + body .groupItem, #content #actions, body .undo { + background: var(--bg-dark) !important; + border: 0 !important; border-radius: 0 !important; box-shadow: 0 0 0 0 !important; + } + #content #actions { + opacity: 0 !important; display: none !important; /* block | none */ + transition: .3s ease-out !important; + } + #content #actions:hover { opacity: 1 !important; } + + body .appTabTrayContainer { border: 0 !important; } + body .tab, body .tab .thumb { + box-shadow: 0 0 0 0 !important; border: 0 !important; border-radius: 0 !important; + background: transparent !important; padding : 0 !important; + } + body .tab .favicon { display: none !important; } + body .groupItem .name { border: 0 !important; } + body .tab .tab-title { padding-top: 2px !important; } +} + + +/* AGENT_SHEET */ +@-moz-document url-prefix(http://), url-prefix(https://), url-prefix(chrome://liberator/) { + /* SCROLLBAR */ + scrollbar[orient="vertical"], scrollbar thumb[orient="vertical"], + scrollbar[orient="horizontal"], scrollbar thumb[orient="horizontal"] { + display: none !important; /* none = hide || block = show */ + } + + /* + scrollbar > slider { -moz-appearance: none !important; } + + scrollbar[orient="vertical"] { margin: -3px -7px -3px -3px !important; } + scrollbar[orient='vertical'] > slider { background: #222326 !important; max-width: 5px !important; } + scrollbar[orient='vertical'] > slider > thumb { + -moz-appearance: none !important; + background: #9b79f7 !important; border: 0 !important; + width: 5px !important; max-width: 5px !important; + } + + scrollbar[orient="horizontal"] { margin: -3px -3px -7px -3px !important; } + scrollbar[orient='horizontal'] > slider { background: #222326 !important; max-height: 5px !important; } + scrollbar[orient='horizontal'] > slider > thumb { + -moz-appearance: none !important; + background: #9b79f7 !important; border: 0 !important; + height: 5px !important; max-height: 5px !important; + } + + scrollbar > scrollbarbutton { -moz-appearance: none !important; border: none !important; background: none !important; } + scrollbar[orient='vertical'] > scrollbarbutton { min-height: 0 !important; } + scrollbar[orient='horizontal'] > scrollbarbutton { min-width: 0 !important; } + /**/ +} + + +/* background color around/behind pictures opened in firefox (require html namespace on top) */ +@-moz-document regexp("(https?://|file:///)(.*)\\.(jpeg|jpg|gif|png|apng|svg|bmp|webm|webp)") { + body { background: var(--bg-light) !important; } + img.decoded { background: url(none) !important; } +} + + +/* About:Blank background */ +@-moz-document url(about:blank) { + html,body { background: var(--bg-light) !important; } +} + +/* about:stylish-edit toolbar style */ +@-moz-document regexp("about:stylish-edit.*") { + #main-area, textbox { background: var(--bg-light) !important; } + textbox, grid, columns, rows, separator { border: 0 !important; } + + .devtools-toolbarbutton { background: var(--bg-dark) !important; color: var(--fg-light) !important; } +} + +/*----- Fix for white flash on new tab -----*/ +tabbrowser tabpanels, #appcontent > #content { background: var(--bg-light) !important; } + + + diff --git a/firefox/userContent.css b/firefox/userContent.css new file mode 100755 index 0000000..526e704 --- /dev/null +++ b/firefox/userContent.css @@ -0,0 +1 @@ +// html {margin-right: -14px !important;overflow-y:scroll;overflow-x:scroll} diff --git a/mpv/config b/mpv/config index 99c1536..a56e32b 100644 --- a/mpv/config +++ b/mpv/config @@ -1,40 +1,49 @@ -# misc settings +## Misc settings title="MPV" -no-osc -no-osd +#no-osc no-osd-bar +script-opts=osc-layout=bottombar + +## Audio Stuffs +#af=drc +ao=pulse +softvol=yes +alang=en,eng,English,jpn,jap,Japanese +audio-channels=2 + + +## Video Stuffs #hwdec=vaapi #vo=vaapi +video-sync=display-resample +display-fps=60 +vo=opengl-hq:interpolation:tscale=robidouxsharp:dither-depth=auto:temporal-dither:source-shader=/home/zephcom/.config/mpv/shaders/deband.glsl:gamma=0.8:target-prim=bt.709:target-trc=bt.1886:blend-subtitles:pbo +force-window -#Mitchell -vo=opengl-hq:interpolation:tscale=mitchell:dither-depth=8:temporal-dither:pbo:target-prim=bt.709:target-trc=bt.1886:source-shader=/home/zephcom/.mpv/shaders/deband.glsl:gamma-auto +demuxer-thread=yes framedrop=vo cache=10000 geometry=50%:50% autofit-larger=90%x90% -audio-channels=2 save-position-on-quit=yes -softvol=yes -ao=pulse -alang=en,eng,English,jpn,jap,Japanese +# Youtube-dl stuffs ytdl -ytdl-format=bestvideo+bestaudio +#ytdl-format=bestvideo+bestaudio # Pretty srt font! slang=en,eng,English osd-font="Liberation Sans" -sub-text-font="Helvetica" -sub-text-font-size=38 -#sub-text-margin-y=14 +sub-text-font="Open Sans Semibold" +sub-text-font-size=48 sub-text-color="#ffffffff" -sub-text-border-color="#ff000000" -sub-text-border-size=2.5 +sub-text-border-color="#220035" +sub-text-border-size=3.5 sub-text-shadow-offset=1 -sub-text-shadow-color="#00000000" -sub-text-spacing=-0.2 +sub-text-shadow-color="#220035" +sub-text-spacing=-0.3 ass-force-style=Kerning=yes demuxer-mkv-subtitle-preroll sub-use-margins @@ -45,8 +54,9 @@ screenshot-format="png" screenshot-png-filter=0 screenshot-png-compression=4 -#really-quiet -# loop weebums +# loop weebums and gifs [extension.webm] loop-file=inf +[extension.gif] +loop-file=inf diff --git a/mpv/input.conf b/mpv/input.conf index 1622822..2abd93b 100644 --- a/mpv/input.conf +++ b/mpv/input.conf @@ -2,3 +2,4 @@ + add volume 2 o ignore F2 cycle_values video-aspect "16:9" "16:10" "4:3" "2.35:1" "-1" +# F3 cycle_values gamma "1.0" "0.9" "0.8" "1.1" diff --git a/mpv/scripts.other/fpsadjust.lua b/mpv/scripts.other/fpsadjust.lua new file mode 100644 index 0000000..61065cf --- /dev/null +++ b/mpv/scripts.other/fpsadjust.lua @@ -0,0 +1,50 @@ +require 'mp.options' +local opt = { + maxiters = 5, -- Frames involving at most this many frames will be + -- considered acceptable. + + maxdelta = 0.01, -- Maximum allowed speed change (setting this too high + -- could cause noticeable change in pitch and tempo) + + mindelta = 0.0005, -- Minimum speed change that would be considered + -- significant enough to be worth calculating. Any lower + -- and it will just play at 100% speed to preserve CPU + -- cycles. +} +read_options(opt) + +function get_scale(ratio, factor) + scale = ratio * factor / math.floor(ratio * factor + 0.5) + delta = math.abs(scale - 1) + + if (delta < opt.mindelta) then + return 1 -- close enough, just use it + end + if (delta > opt.maxdelta) then + return nil -- large deviation, skip + end + return scale -- decent match found +end + +function adjust_speed(event) + clip_fps = mp.get_property_number("fps") + disp_fps = mp.get_property_number("display-fps") + + if not clip_fps or not disp_fps or disp_fps == 0 then + return + end + + for i=1,opt.maxiters do + scale = get_scale(disp_fps / clip_fps, i) + if scale then + break + end + end + + if scale then + mp.set_property("speed", scale) + print("Setting speed to", scale) + end +end + +mp.register_event("playback-restart", adjust_speed) diff --git a/mpv/scripts.other/mpv-progressbar.lua b/mpv/scripts.other/mpv-progressbar.lua new file mode 100644 index 0000000..bbdd9aa --- /dev/null +++ b/mpv/scripts.other/mpv-progressbar.lua @@ -0,0 +1,1052 @@ +local msg = require('mp.msg') +local bar_height = 2 +local hover_zone = 20 +local log = { + debug = function(format, ...) + return msg.debug(format:format(...)) + end, + info = function(format, ...) + return msg.info(format:format(...)) + end, + warn = function(format, ...) + return msg.warn(format:format(...)) + end, + dump = function(item, ignore) + local level = 2 + if "table" ~= type(item) then + msg.info(tostring(item)) + return + end + local count = 1 + local tablecount = 1 + local result = { + "{ @" .. tostring(tablecount) + } + local seen = { + [item] = tablecount + } + local recurse + recurse = function(item, space) + for key, value in pairs(item) do + if not (key == ignore) then + if "table" == type(value) then + if not (seen[value]) then + tablecount = tablecount + 1 + seen[value] = tablecount + count = count + 1 + result[count] = space .. tostring(key) .. ": { @" .. tostring(tablecount) + recurse(value, space .. " ") + count = count + 1 + result[count] = space .. "}" + else + count = count + 1 + result[count] = space .. tostring(key) .. ": @" .. tostring(seen[value]) + end + else + if "string" == type(value) then + value = ("%q"):format(value) + end + count = count + 1 + result[count] = space .. tostring(key) .. ": " .. tostring(value) + end + end + end + end + recurse(item, " ") + count = count + 1 + result[count] = "}" + return msg.info(table.concat(result, "\n")) + end +} +local OSDAggregator +do + local _base_0 = { + addSubscriber = function(self, subscriber) + if not subscriber then + return + end + self.subscriberCount = self.subscriberCount + 1 + subscriber.aggregatorIndex = self.subscriberCount + self.subscribers[self.subscriberCount] = subscriber + self.script[self.subscriberCount] = subscriber:stringify() + end, + removeSubscriber = function(self, index) + table.remove(self.subscribers, index) + table.remove(self.script, index) + self.subscriberCount = self.subscriberCount - 1 + for i = index, self.subscriberCount do + self.subscribers[i].aggregatorIndex = i + end + end, + update = function(self, force) + if force == nil then + force = false + end + local needsRedraw = force + local x, y = mp.get_mouse_pos() + local w, h = mp.get_screen_size() + local needsResize = false + if w ~= self.w or h ~= self.h then + self.w, self.h = w, h + needsResize = true + end + for sub = 1, self.subscriberCount do + local theSub = self.subscribers[sub] + local update = false + if theSub:update(x, y, self.mouseOver) then + update = true + end + if (needsResize and theSub:updateSize(w, h)) or update then + needsRedraw = true + self.script[sub] = theSub:stringify() + end + end + if true == needsRedraw then + return mp.set_osd_ass(self.w, self.h, table.concat(self.script, '\n')) + end + end, + pause = function(self, event, paused) + self.paused = paused + if self.paused then + return self.updateTimer:stop() + else + return self.updateTimer:resume() + end + end, + forceUpdate = function(self) + self.updateTimer:kill() + self:update(true) + if not (self.paused) then + return self.updateTimer:resume() + end + end + } + _base_0.__index = _base_0 + local _class_0 = setmetatable({ + __init = function(self) + self.script = { } + self.subscribers = { } + self.subscriberCount = 0 + self.mouseOver = false + self.w = 0 + self.h = 0 + local redrawFrequency = 0.05 + self.updateTimer = mp.add_periodic_timer(redrawFrequency, (function() + local _base_1 = self + local _fn_0 = _base_1.update + return function(...) + return _fn_0(_base_1, ...) + end + end)()) + mp.register_event('shutdown', function() + return self.updateTimer:kill() + end) + mp.add_key_binding("MOUSE_LEAVE", function() + self.mouseOver = false + end) + return mp.add_key_binding("MOUSE_ENTER", function() + self.mouseOver = true + end) + end, + __base = _base_0, + __name = "OSDAggregator" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + OSDAggregator = _class_0 +end +local AnimationQueue +do + local _base_0 = { + registerAnimation = function(self, animation) + if self.list then + self.list.next = animation + end + animation.prev = self.list + animation.isRegistered = true + self.list = animation + self.animationCount = self.animationCount + 1 + return self:startAnimation() + end, + unregisterAnimation = function(self, animation) + local prev = animation.prev + local next = animation.next + if prev then + prev.next = next + end + if next then + next.prev = prev + end + if self.list == animation then + self.list = prev + end + animation.next = nil + animation.prev = nil + animation.isRegistered = false + self.animationCount = self.animationCount - 1 + if 0 == self.animationCount then + self:stopAnimation() + end + return prev + end, + startAnimation = function(self) + if self.animating then + return + end + self.timer:resume() + self.animating = true + end, + stopAnimation = function(self) + if not (self.animating) then + return + end + self.timer:kill() + self.animating = false + end, + destroyAnimationStack = function(self) + self:stopAnimation() + local currentAnimation = self.list + while currentAnimation do + currentAnimation = self.list.prev + self.list.prev = nil + self.list.next = nil + self.list = currentAnimation + end + end, + animate = function(self) + local currentAnimation = self.list + local currentTime = mp.get_time() + while currentAnimation do + if currentAnimation:update(currentTime) then + currentAnimation = self:unregisterAnimation(currentAnimation) + else + currentAnimation = currentAnimation.prev + end + end + return self.aggregator:forceUpdate() + end + } + _base_0.__index = _base_0 + local _class_0 = setmetatable({ + __init = function(self, aggregator) + self.aggregator = aggregator + self.list = nil + self.animationCount = 0 + self.animating = false + self.timer = mp.add_periodic_timer(0.05, (function() + local _base_1 = self + local _fn_0 = _base_1.animate + return function(...) + return _fn_0(_base_1, ...) + end + end)()) + return self.timer:kill() + end, + __base = _base_0, + __name = "AnimationQueue" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + AnimationQueue = _class_0 +end +local Animation +do + local _base_0 = { + update = function(self, currentTime) + self.currentTime = currentTime + local progress = math.max(0, math.min(1, (self.currentTime - self.startTime) * self.durationR)) + if progress == 1 then + self.isFinished = true + end + if self.accel then + progress = math.pow(progress, self.accel) + end + local value = (1 - progress) * self.initialValue + progress * self.endValue + self:updateCb(value) + if self.isFinished and self.finishedCb then + self:finishedCb() + end + return self.isFinished + end, + interrupt = function(self, reverse, queue) + if reverse ~= self.isReversed then + self:reverse() + end + if not (self.isRegistered) then + self:restart() + return queue:registerAnimation(self) + end + end, + reverse = function(self) + self.isReversed = not self.isReversed + self.initialValue, self.endValue = self.endValue, self.initialValue + self.startTime = 2 * self.currentTime - self.duration - self.startTime + self.accel = 1 / self.accel + end, + restart = function(self) + self.startTime = mp.get_time() + self.currentTime = self.startTime + self.isFinished = false + end + } + _base_0.__index = _base_0 + local _class_0 = setmetatable({ + __init = function(self, initialValue, endValue, duration, updateCb, finishedCb, accel) + if accel == nil then + accel = 1 + end + self.initialValue, self.endValue, self.duration, self.updateCb, self.finishedCb, self.accel = initialValue, endValue, duration, updateCb, finishedCb, accel + self.startTime = mp.get_time() + self.currentTime = self.startTime + self.durationR = 1 / self.duration + self.isFinished = (self.duration <= 0) + self.isRegistered = false + self.isReversed = false + end, + __base = _base_0, + __name = "Animation" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + Animation = _class_0 +end +local Rect +do + local _base_0 = { + setPosition = function(self, x, y) + self.x = x or self.x + self.y = y or self.y + end, + setDimensions = function(self, w, h) + self.w = w or self.w + self.h = h or self.h + end, + move = function(self, x, y) + self.x = self.x + (x or 0) + self.y = self.y + (y or 0) + end, + stretch = function(self, w, h) + self.w = self.w + (w or 0) + self.h = self.h + (h or 0) + end, + containsPoint = function(self, x, y) + return ((x >= self.x) and (y >= self.y) and (x < self.x + self.w) and (y < self.y + self.h)) + end + } + _base_0.__index = _base_0 + local _class_0 = setmetatable({ + __init = function(self, x, y, w, h) + self.x, self.y, self.w, self.h = x, y, w, h + end, + __base = _base_0, + __name = "Rect" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + Rect = _class_0 +end +local Subscriber +do + local _parent_0 = Rect + local _base_0 = { + stringify = function(self) + if not self.hovered and not self.animation.isRegistered then + return "" + end + return table.concat(self.line) + end, + updateSize = function(self, w, h) + self.y = h - hover_zone * bar_height + self.w, self.h = w, hover_zone * bar_height + end, + update = function(self, mouseX, mouseY, mouseOver, hoverCondition) + if hoverCondition == nil then + hoverCondition = self:containsPoint(mouseX, mouseY) + end + local update = self.needsUpdate + self.needsUpdate = false + if mouseOver and hoverCondition then + if not (self.hovered) then + update = true + self.hovered = true + self.animation:interrupt(false, self.animationQueue) + end + else + if self.hovered then + update = true + self.hovered = false + self.animation:interrupt(true, self.animationQueue) + end + end + return update + end + } + _base_0.__index = _base_0 + setmetatable(_base_0, _parent_0.__base) + local _class_0 = setmetatable({ + __init = function(self) + _parent_0.__init(self, 0, 0, 0, 0) + self.hovered = false + self.needsUpdate = false + end, + __base = _base_0, + __name = "Subscriber", + __parent = _parent_0 + }, { + __index = function(cls, name) + local val = rawget(_base_0, name) + if val == nil then + return _parent_0[name] + else + return val + end + end, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + if _parent_0.__inherited then + _parent_0.__inherited(_parent_0, _class_0) + end + Subscriber = _class_0 +end +local ProgressBar +do + local _parent_0 = Subscriber + local _base_0 = { + clickUpSeek = function(self) + local x, y = mp.get_mouse_pos() + if self:containsPoint(x, y) then + return mp.commandv("seek", x * 100 / self.w, "absolute-percent", "keyframes") + end + end, + stringify = function(self) + return table.concat(self.line) + end, + updateSize = function(self, w, h) + _parent_0.updateSize(self, w, h) + self.line[2] = ([[%d,%d]]):format(0, h) + self.line[8] = ([[%d 0 %d %d 0 %d]]):format(w * 4, w * 4, bar_height * 4, bar_height * 4) + return true + end, + animateHeight = function(self, animation, value) + self.line[6] = ([[%g]]):format(value) + self.needsUpdate = true + end, + update = function(self, mouseX, mouseY, mouseOver) + local update = _parent_0.update(self, mouseX, mouseY, mouseOver) + local position = mp.get_property_number('percent-pos', 0) + if position ~= self.lastPosition then + update = true + self.line[4] = ([[%g]]):format(position) + self.lastPosition = position + end + return update + end + } + _base_0.__index = _base_0 + setmetatable(_base_0, _parent_0.__base) + local _class_0 = setmetatable({ + __init = function(self, animationQueue) + self.animationQueue = animationQueue + _parent_0.__init(self) + self.line = { + [[{\an1\bord0\c&HFFFFFF&\p3\pos(]], + 0, + [[)\fscx]], + 0, + [[\fscy]], + 100, + [[}m 0 0 l ]], + 0 + } + self.lastPosition = 0 + self.animation = Animation(100, 400, 0.25, (function() + local _base_1 = self + local _fn_0 = _base_1.animateHeight + return function(...) + return _fn_0(_base_1, ...) + end + end)()) + return mp.add_key_binding("MOUSE_BTN0", (function() + local _base_1 = self + local _fn_0 = _base_1.clickUpSeek + return function(...) + return _fn_0(_base_1, ...) + end + end)()) + end, + __base = _base_0, + __name = "ProgressBar", + __parent = _parent_0 + }, { + __index = function(cls, name) + local val = rawget(_base_0, name) + if val == nil then + return _parent_0[name] + else + return val + end + end, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + if _parent_0.__inherited then + _parent_0.__inherited(_parent_0, _class_0) + end + ProgressBar = _class_0 +end +local ProgressBarBackground +do + local _parent_0 = Subscriber + local _base_0 = { + stringify = function(self) + return table.concat(self.line) + end, + updateSize = function(self, w, h) + _parent_0.updateSize(self, w, h) + self.line[2] = ([[%d,%d]]):format(0, h) + self.line[6] = ([[%d 0 %d %d 0 %d]]):format(w, w, bar_height, bar_height) + return true + end, + animateHeight = function(self, animation, value) + self.line[4] = ([[%g]]):format(value) + self.needsUpdate = true + end, + update = function(self, mouseX, mouseY, mouseOver) + return _parent_0.update(self, mouseX, mouseY, mouseOver) + end + } + _base_0.__index = _base_0 + setmetatable(_base_0, _parent_0.__base) + local _class_0 = setmetatable({ + __init = function(self, animationQueue) + self.animationQueue = animationQueue + _parent_0.__init(self) + self.line = { + [[{\an1\bord0\c&H262626&\p1\pos(]], + 0, + [[)\fscy]], + 100, + [[}m 0 0 l ]], + 0 + } + self.animation = Animation(100, 400, 0.25, (function() + local _base_1 = self + local _fn_0 = _base_1.animateHeight + return function(...) + return _fn_0(_base_1, ...) + end + end)()) + end, + __base = _base_0, + __name = "ProgressBarBackground", + __parent = _parent_0 + }, { + __index = function(cls, name) + local val = rawget(_base_0, name) + if val == nil then + return _parent_0[name] + else + return val + end + end, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + if _parent_0.__inherited then + _parent_0.__inherited(_parent_0, _class_0) + end + ProgressBarBackground = _class_0 +end +local ChapterMarker +do + local _parent_0 = Subscriber + local _base_0 = { + stringify = function(self) + if self.passed then + self.line[2][7] = [[\c&H262626&]] + else + self.line[2][7] = [[\c&HFFFFFF&]] + end + if self.hovered or self.animation.isRegistered then + return table.concat({ + table.concat(self.line[1]), + table.concat(self.line[2]) + }, '\n') + else + return table.concat(self.line[2]) + end + end, + updateSize = function(self, w, h) + self.x = math.floor(w * self.position) + self.y = h - hover_zone * bar_height + self.line[1][2] = ([[%d,%d]]):format(self.x + 10, h - hover_zone - 10) + self.line[2][2] = ([[%d,%d]]):format(self.x + 10, h) + return true + end, + animateAlpha = function(self, animation, value) + self.line[1][4] = ([[%02X]]):format(value) + self.needsUpdate = true + end, + animateSize = function(self, value) + self.line[2][4] = ([[%g]]):format(value * 100 + 100) + self.line[2][6] = ([[%g]]):format(value * 300 + 100) + end, + update = function(self, mouseX, mouseY, mouseOver, position) + local update = _parent_0.update(self, mouseX, mouseY, mouseOver) + local changed = self.passed + self.passed = position > self.position + update = update or changed ~= self.passed + return update + end + } + _base_0.__index = _base_0 + setmetatable(_base_0, _parent_0.__base) + local _class_0 = setmetatable({ + __init = function(self, animationQueue, title, position, w, h) + self.animationQueue, self.position = animationQueue, position + _parent_0.__init(self) + self.x = math.floor(w * self.position) - 10 + self.y = h - hover_zone * bar_height + self.w = 20 + self.h = hover_zone * bar_height + self.line = { + { + [[{\an2\bord2\c&H262626&\3c&HFFFFFF\fs30\pos(]], + ([[%d,%d]]):format(self.x + 10, h - hover_zone - 10), + [[)\alpha&H]], + [[FF]], + ([[&}%s]]):format(title) + }, + { + [[{\an2\bord0\p1\pos(]], + ([[%d,%d]]):format(self.x + 10, h), + [[)\fscx]], + 100, + [[\fscy]], + 100, + [[\c&HFFFFFF&]], + [[}m 0 0 l 2 0 2 2 0 2]] + } + } + self.passed = false + self.animation = Animation(255, 0, 0.25, (function() + local _base_1 = self + local _fn_0 = _base_1.animateAlpha + return function(...) + return _fn_0(_base_1, ...) + end + end)()) + end, + __base = _base_0, + __name = "ChapterMarker", + __parent = _parent_0 + }, { + __index = function(cls, name) + local val = rawget(_base_0, name) + if val == nil then + return _parent_0[name] + else + return val + end + end, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + if _parent_0.__inherited then + _parent_0.__inherited(_parent_0, _class_0) + end + ChapterMarker = _class_0 +end +local Chapters +do + local _parent_0 = Subscriber + local _base_0 = { + createMarkers = function(self, w, h) + self.markers = { } + local totalTime = mp.get_property_number('length', 0) + local chapters = mp.get_property_native('chapter-list', { }) + for _index_0 = 1, #chapters do + local chapter = chapters[_index_0] + table.insert(self.markers, ChapterMarker(self.animationQueue, chapter.title, chapter.time / totalTime, w, h)) + end + end, + stringify = function(self) + return table.concat(self.line, '\n') + end, + redrawMarkers = function(self) + self.line = { } + local _list_0 = self.markers + for _index_0 = 1, #_list_0 do + local marker = _list_0[_index_0] + table.insert(self.line, marker:stringify()) + end + end, + updateSize = function(self, w, h) + _parent_0.updateSize(self, w, h) + local _list_0 = self.markers + for _index_0 = 1, #_list_0 do + local marker = _list_0[_index_0] + marker:updateSize(w, h) + end + self:redrawMarkers() + return true + end, + animateSize = function(self, animation, value) + local _list_0 = self.markers + for _index_0 = 1, #_list_0 do + local marker = _list_0[_index_0] + marker:animateSize(value) + end + self.needsUpdate = true + end, + update = function(self, mouseX, mouseY, mouseOver) + local update = _parent_0.update(self, mouseX, mouseY, mouseOver) + local currentPosition = mp.get_property_number('percent-pos', 0) * 0.01 + local _list_0 = self.markers + for _index_0 = 1, #_list_0 do + local marker = _list_0[_index_0] + if marker:update(mouseX, mouseY, mouseOver, currentPosition) then + update = true + end + end + if update then + self:redrawMarkers() + end + return update + end + } + _base_0.__index = _base_0 + setmetatable(_base_0, _parent_0.__base) + local _class_0 = setmetatable({ + __init = function(self, animationQueue) + self.animationQueue = animationQueue + _parent_0.__init(self) + self.line = { } + self.markers = { } + self.animation = Animation(0, 1, 0.25, (function() + local _base_1 = self + local _fn_0 = _base_1.animateSize + return function(...) + return _fn_0(_base_1, ...) + end + end)()) + end, + __base = _base_0, + __name = "Chapters", + __parent = _parent_0 + }, { + __index = function(cls, name) + local val = rawget(_base_0, name) + if val == nil then + return _parent_0[name] + else + return val + end + end, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + if _parent_0.__inherited then + _parent_0.__inherited(_parent_0, _class_0) + end + Chapters = _class_0 +end +local TimeElapsed +do + local _parent_0 = Subscriber + local _base_0 = { + updateSize = function(self, w, h) + _parent_0.updateSize(self, w, h) + self.line[2] = ([[%g,%g]]):format(self.position, self.y + (hover_zone - 4) * bar_height) + return true + end, + animatePos = function(self, animation, value) + self.position = value + self.line[2] = ([[%g,%g]]):format(self.position, self.y + (hover_zone - 4) * bar_height) + self.needsUpdate = true + end, + update = function(self, mouseX, mouseY, mouseOver) + local update = _parent_0.update(self, mouseX, mouseY, mouseOver) + local timeElapsed = math.floor(mp.get_property_number('time-pos', 0)) + if timeElapsed ~= self.lastTime then + update = true + self.line[4] = ([[%d:%02d:%02d]]):format(timeElapsed / 3600, (timeElapsed / 60) % 60, timeElapsed % 60) + self.lastTime = timeElapsed + end + return update + end + } + _base_0.__index = _base_0 + setmetatable(_base_0, _parent_0.__base) + local _class_0 = setmetatable({ + __init = function(self, animationQueue) + self.animationQueue = animationQueue + _parent_0.__init(self) + self.line = { + [[{\fnSource Sans Pro Semibold\bord2\fs30\pos(]], + [[-100,0]], + [[)\3c&H262626&\c&HFFFFFF&\an1}]], + 0 + } + self.lastTime = -1 + self.position = -100 + self.animation = Animation(-100, 2, 0.25, (function() + local _base_1 = self + local _fn_0 = _base_1.animatePos + return function(...) + return _fn_0(_base_1, ...) + end + end)(), nil, 0.25) + end, + __base = _base_0, + __name = "TimeElapsed", + __parent = _parent_0 + }, { + __index = function(cls, name) + local val = rawget(_base_0, name) + if val == nil then + return _parent_0[name] + else + return val + end + end, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + if _parent_0.__inherited then + _parent_0.__inherited(_parent_0, _class_0) + end + TimeElapsed = _class_0 +end +local TimeRemaining +do + local _parent_0 = Subscriber + local _base_0 = { + updateSize = function(self, w, h) + _parent_0.updateSize(self, w, h) + self.line[2] = ([[%g,%g]]):format(self.position, self.y + (hover_zone - 4) * bar_height) + return true + end, + animatePos = function(self, animation, value) + self.position = self.w - value + self.line[2] = ([[%g,%g]]):format(self.position, self.y + (hover_zone - 4) * bar_height) + self.needsUpdate = true + end, + update = function(self, mouseX, mouseY, mouseOver) + local update = _parent_0.update(self, mouseX, mouseY, mouseOver) + local timeRemaining = math.floor(mp.get_property_number('playtime-remaining', 0)) + if timeRemaining ~= self.lastTime then + update = true + self.line[4] = ([[%d:%02d:%02d]]):format(timeRemaining / 3600, (timeRemaining / 60) % 60, timeRemaining % 60) + self.lastTime = timeRemaining + end + return update + end + } + _base_0.__index = _base_0 + setmetatable(_base_0, _parent_0.__base) + local _class_0 = setmetatable({ + __init = function(self, animationQueue) + self.animationQueue = animationQueue + _parent_0.__init(self, 0, 0, 0, 0) + self.line = { + [[{\fnSource Sans Pro Semibold\bord2\fs30\pos(]], + [[-100,0]], + [[)\3c&H262626&\c&HFFFFFF&\an3}]], + 0 + } + self.lastTime = -1 + self.position = -100 + self.animation = Animation(-100, 4, 0.25, (function() + local _base_1 = self + local _fn_0 = _base_1.animatePos + return function(...) + return _fn_0(_base_1, ...) + end + end)(), nil, 0.25) + end, + __base = _base_0, + __name = "TimeRemaining", + __parent = _parent_0 + }, { + __index = function(cls, name) + local val = rawget(_base_0, name) + if val == nil then + return _parent_0[name] + else + return val + end + end, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + if _parent_0.__inherited then + _parent_0.__inherited(_parent_0, _class_0) + end + TimeRemaining = _class_0 +end +local HoverTime +do + local _parent_0 = Subscriber + local _base_0 = { + animateAlpha = function(self, animation, value) + self.line[4] = ([[%02X]]):format(value) + self.needsUpdate = true + end, + update = function(self, mouseX, mouseY, mouseOver) + local update = _parent_0.update(self, mouseX, mouseY, mouseOver) + if mouseX ~= self.lastX or mouseY ~= self.lastY then + self.line[2] = ("%g,%g"):format(math.min(self.w - 130, math.max(120, mouseX)), self.y + (hover_zone - 4) * bar_height) + self.lastX, self.lastY = mouseX, mouseY + local hoverTime = mp.get_property_number('length', 0) * mouseX / self.w + if hoverTime ~= self.lastTime and (self.hovered or self.animation.isRegistered) then + update = true + self.line[6] = ([[%d:%02d:%02d]]):format(hoverTime / 3600, (hoverTime / 60) % 60, hoverTime % 60) + self.lastTime = hoverTime + end + end + return update + end + } + _base_0.__index = _base_0 + setmetatable(_base_0, _parent_0.__base) + local _class_0 = setmetatable({ + __init = function(self, animationQueue) + self.animationQueue = animationQueue + _parent_0.__init(self) + self.line = { + [[{\fnSource Sans Pro Semibold\bord2\fs26\pos(]], + [[-100,0]], + [[)\3c&H262626&\c&HFFFFFF&\an2\&H]], + [[FF]], + [[&}]], + 0 + } + self.lastTime = 0 + self.lastX = -1 + self.lastY = -1 + self.position = -100 + self.animation = Animation(255, 0, 0.25, (function() + local _base_1 = self + local _fn_0 = _base_1.animateAlpha + return function(...) + return _fn_0(_base_1, ...) + end + end)()) + end, + __base = _base_0, + __name = "HoverTime", + __parent = _parent_0 + }, { + __index = function(cls, name) + local val = rawget(_base_0, name) + if val == nil then + return _parent_0[name] + else + return val + end + end, + __call = function(cls, ...) + local _self_0 = setmetatable({}, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + if _parent_0.__inherited then + _parent_0.__inherited(_parent_0, _class_0) + end + HoverTime = _class_0 +end +local aggregator = OSDAggregator() +local animationQueue = AnimationQueue(aggregator) +local progressBar = ProgressBar(animationQueue) +local progressBarBackground = ProgressBarBackground(animationQueue) +local chapters = Chapters(animationQueue) +local timeElapsed = TimeElapsed(animationQueue) +local timeRemaining = TimeRemaining(animationQueue) +local hoverTime = HoverTime(animationQueue) +aggregator:addSubscriber(progressBarBackground) +aggregator:addSubscriber(progressBar) +aggregator:addSubscriber(chapters) +aggregator:addSubscriber(timeElapsed) +aggregator:addSubscriber(timeRemaining) +aggregator:addSubscriber(hoverTime) +local notFrameStepping = true +mp.add_key_binding('.', 'mp_progbar_stepforward', function() + notFrameStepping = false + return mp.commandv('frame_step') +end, { + repeatable = true +}) +mp.add_key_binding(',', 'mp_progbar_stepbackward', function() + notFrameStepping = false + return mp.commandv('frame_back_step') +end, { + repeatable = true +}) +mp.observe_property('pause', 'bool', PauseIndicatorWrapper) +local initDraw +initDraw = function() + mp.unregister_event(initDraw) + local width, height = mp.get_screen_size() + chapters:createMarkers(width, height) +end +local fileLoaded +fileLoaded = function() + return mp.register_event('playback-restart', initDraw) +end +return mp.register_event('file-loaded', fileLoaded) diff --git a/mpv/scripts/autoload.lua b/mpv/scripts/autoload.lua new file mode 100644 index 0000000..ffe6ddb --- /dev/null +++ b/mpv/scripts/autoload.lua @@ -0,0 +1,121 @@ +-- This script automatically loads playlist entries before and after the +-- the currently played file. It does so by scanning the directory a file is +-- located in when starting playback. It sorts the directory entries +-- alphabetically, and adds entries before and after the current file to +-- the internal playlist. (It stops if the it would add an already existing +-- playlist entry at the same position - this makes it "stable".) +-- Add at most 5 * 2 files when starting a file (before + after). +MAXENTRIES = 5 + +function Set (t) + local set = {} + for _, v in pairs(t) do set[v] = true end + return set +end + +EXTENSIONS = Set { + 'mkv', 'avi', 'mp4', 'ogv', 'webm', 'rmvb', 'flv', 'wmv', 'mpeg', 'mpg', 'm4v', '3gp', + 'mp3', 'wav', 'ogv', 'flac', 'm4a', 'wma', +} + +mputils = require 'mp.utils' + +function add_files_at(index, files) + index = index - 1 + local oldcount = mp.get_property_number("playlist-count", 1) + for i = 1, #files do + mp.commandv("loadfile", files[i], "append") + mp.commandv("playlist_move", oldcount + i - 1, index + i - 1) + end +end + +function get_extension(path) + return string.match(path, "%.([^%.]+)$" ) +end + +table.filter = function(t, iter) + for i = #t, 1, -1 do + if not iter(t[i]) then + table.remove(t, i) + end + end +end + +function find_and_add_entries() + local path = mp.get_property("path", "") + local dir, filename = mputils.split_path(path) + if #dir == 0 then + return + end + local isplaylist = mp.get_property("playlist-count") + if #isplaylist > 1 then + return + end + + local files = mputils.readdir(dir, "files") + if files == nil then + return + end + table.filter(files, function (v, k) + local ext = get_extension(v) + if ext == nil then + return false + end + return EXTENSIONS[string.lower(ext)] + end) + table.sort(files, function (a, b) + return string.lower(a) < string.lower(b) + end) + + if dir == "." then + dir = "" + end + + local pl = mp.get_property_native("playlist", {}) + local pl_current = mp.get_property_number("playlist-pos", 0) + 1 + -- Find the current pl entry (dir+"/"+filename) in the sorted dir list + local current + for i = 1, #files do + if files[i] == filename then + current = i + break + end + end + if current == nil then + return + end + + local append = {[-1] = {}, [1] = {}} + for direction = -1, 1, 2 do -- 2 iterations, with direction = -1 and +1 + for i = 1, MAXENTRIES do + local file = files[current + i * direction] + local pl_e = pl[pl_current + i * direction] + if file == nil or file[1] == "." then + break + end + + local filepath = dir .. file + if pl_e then + -- If there's a playlist entry, and it's the same file, stop. + if pl_e.filename == filepath then + break + end + end + + if direction == -1 then + if pl_current == 1 then -- never add additional entries in the middle + mp.msg.info("Prepending " .. file) + table.insert(append[-1], 1, filepath) + end + else + mp.msg.info("Adding " .. file) + table.insert(append[1], filepath) + end + end + end + + add_files_at(pl_current + 1, append[1]) + add_files_at(pl_current, append[-1]) +end + +mp.register_event("start-file", find_and_add_entries) diff --git a/mpv/scripts/autosub.lua b/mpv/scripts/autosub.lua new file mode 100644 index 0000000..a05206f --- /dev/null +++ b/mpv/scripts/autosub.lua @@ -0,0 +1,24 @@ +-- default keybinding: b +-- add the following to your input.conf to change the default keybinding: +-- keyname script_binding auto_load_subs +local utils = require 'mp.utils' +function load_sub_fn() + subl = "/usr/bin/subliminal" -- use 'which subliminal' to find the path + mp.msg.info("Searching subtitle") + mp.osd_message("Searching subtitle") + t = {} + t.args = {subl, "download", "-s", "-l", "en", mp.get_property("path")} + res = utils.subprocess(t) + if res.status == 0 then + sub_path = string.gsub(mp.get_property("path"), "%.%w+$", ".srt") + mp.osd_message(sub_path) + mp.commandv("sub_add", sub_path) + mp.msg.info("Subtitle download succeeded") + mp.osd_message("Subtitle download succeeded") + else + mp.msg.warn("Subtitle download failed") + mp.osd_message("Subtitle download failed") + end +end + +mp.add_key_binding("b", "auto_load_subs", load_sub_fn) diff --git a/mpv/scripts/stats.lua b/mpv/scripts/stats.lua new file mode 100644 index 0000000..f844d21 --- /dev/null +++ b/mpv/scripts/stats.lua @@ -0,0 +1,263 @@ +-- Display some stats. +-- +-- You can invoke the script with "i" by default or create a different key +-- binding in input.conf using " script_binding stats". +-- +-- The style is configurable through a config file named "lua-settings/stats.conf" +-- located in your mpv directory. +-- +-- Please note: not every property is always available and therefore not always +-- visible. + +local options = require 'mp.options' + +-- Options +local o = { + ass_formatting = true, + duration = 3, + debug = false, + + -- Text style + font = "Source Sans Pro", + font_size = 11, + font_color = "FFFFFF", + border_size = 1.0, + border_color = "262626", + shadow_x_offset = 0.0, + shadow_y_offset = 0.0, + shadow_color = "000000", + alpha = "11", + + -- Custom header for ASS tags to style the text output. + -- Specifying this will ignore the text style values above and just + -- use this string instead. + custom_header = "", + + -- Text formatting + -- With ASS + nl = "\\N", + prop_indent = "\\h\\h\\h\\h\\h", + kv_sep = "\\h\\h", + b1 = "{\\b1}", + b0 = "{\\b0}", + -- Without ASS + no_ass_nl = "\n", + no_ass_prop_indent = "\t", + no_ass_kv_sep = " ", + no_ass_b1 = "\027[1m", + no_ass_b0 = "\027[0m", +} +options.read_options(o) + + +function main() + local stats = { + header = "", + file = "", + video = "", + audio = "" + } + + o.ass_formatting = o.ass_formatting and has_vo_window() + if not o.ass_formatting then + o.nl = o.no_ass_nl + o.prop_indent = o.no_ass_prop_indent + o.kv_sep = o.no_ass_kv_sep + if not has_ansi() then + o.b1 = "" + o.b0 = "" + else + o.b1 = o.no_ass_b1 + o.b0 = o.no_ass_b0 + end + end + + add_header(stats) + add_file(stats) + add_video(stats) + add_audio(stats) + + mp.osd_message(join_stats(stats), o.duration) +end + + +function add_file(s) + local sec = "file" + s[sec] = "" + + append_property(s, sec, "filename", {prefix="File:", nl="", indent=""}) + append_property(s, sec, "metadata/title", {prefix="Title:"}) + append_property(s, sec, "chapter", {prefix="Chapter:"}) + if append_property(s, sec, "cache-used", {prefix="Cache:"}) then + append_property(s, sec, "demuxer-cache-duration", + {prefix="+", suffix=" sec", nl="", indent=o.kv_sep, + prefix_sep="", no_prefix_markup=true}) + end +end + + +function add_video(s) + local sec = "video" + s[sec] = "" + if not has_video() then + return + end + + if append_property(s, sec, "video-codec", {prefix="Video:", nl="", indent=""}) then + append_property(s, sec, "hwdec-active", + {prefix="(hwdec)", nl="", indent=" ", + no_prefix_markup=true, no_value=true}, + {no=true}) + end + append_property(s, sec, "avsync", {prefix="A-V:"}) + if append_property(s, sec, "drop-frame-count", {prefix="Dropped:"}) then + append_property(s, sec, "vo-drop-frame-count", {prefix="VO:", nl=""}) + end + if append_property(s, sec, "fps", {prefix="FPS:", suffix=" (specified)"}) then + append_property(s, sec, "estimated-vf-fps", + {suffix=" (estimated)", nl="", indent=""}) + else + append_property(s, sec, "estimated-vf-fps", + {prefix="FPS:", suffix=" (estimated)"}) + end + if append_property(s, sec, "video-params/w", {prefix="Native Resolution:"}) then + append_property(s, sec, "video-params/h", + {prefix="x", nl="", indent=" ", prefix_sep=" ", no_prefix_markup=true}) + end + append_property(s, sec, "window-scale", {prefix="Window Scale:"}) + append_property(s, sec, "video-params/aspect", {prefix="Aspect Ratio:"}) + append_property(s, sec, "video-params/pixelformat", {prefix="Pixel format:"}) + append_property(s, sec, "video-params/colormatrix", {prefix="Colormatrix:"}) + append_property(s, sec, "video-params/primaries", {prefix="Primaries:"}) + append_property(s, sec, "video-params/colorlevels", {prefix="Levels:"}) + append_property(s, sec, "packet-video-bitrate", {prefix="Bitrate:", suffix=" kbps"}) +end + + +function add_audio(s) + local sec = "audio" + s[sec] = "" + if not has_audio() then + return + end + + append_property(s, sec, "audio-codec", {prefix="Audio:", nl="", indent=""}) + append_property(s, sec, "audio-params/samplerate", {prefix="Sample Rate:", suffix=" Hz"}) + append_property(s, sec, "audio-params/channel-count", {prefix="Channels:"}) + append_property(s, sec, "packet-audio-bitrate", {prefix="Bitrate:", suffix=" kbps"}) +end + + +function add_header(s) + if not o.ass_formatting then + s.header = "" + return + end + if o.custom_header and o.custom_header ~= "" then + s.header = set_ASS(true) .. o.custom_header + else + s.header = string.format("%s{\\fs%d}{\\fn%s}{\\bord%f}{\\3c&H%s&}{\\1c&H%s&}" .. + "{\\alpha&H%s&}{\\xshad%f}{\\yshad%f}{\\4c&H%s&}", + set_ASS(true), o.font_size, o.font, o.border_size, + o.border_color, o.font_color, o.alpha, o.shadow_x_offset, + o.shadow_y_offset, o.shadow_color) + end +end + + +-- Format and append a property. +-- A property whose value is either `nil` or empty (hereafter called "invalid") +-- is skipped and not appended. +-- Returns `false` in case nothing was appended, otherwise `true`. +-- +-- s : Table containing key `sec`. +-- sec : Existing key in table `s`, value treated as a string. +-- property: The property to query and format (based on its OSD representation). +-- attr : Optional table to overwrite certain (formatting) attributes for +-- this property. +-- exclude : Optional table containing keys which are considered invalid values +-- for this property. Specifying this will replace empty string as +-- default invalid value (nil is always invalid). +function append_property(s, sec, prop, attr, excluded) + excluded = excluded or {[""] = true} + local ret = mp.get_property_osd(prop) + if not ret or excluded[ret] then + if o.debug then + print("No value for property: " .. prop) + end + return false + end + + attr.prefix_sep = attr.prefix_sep or o.kv_sep + attr.indent = attr.indent or o.prop_indent + attr.nl = attr.nl or o.nl + attr.suffix = attr.suffix or "" + attr.prefix = attr.prefix or "" + attr.no_prefix_markup = attr.no_prefix_markup or false + attr.prefix = attr.no_prefix_markup and attr.prefix or b(attr.prefix) + ret = attr.no_value and "" or ret + + s[sec] = string.format("%s%s%s%s%s%s%s", s[sec], attr.nl, attr.indent, + attr.prefix, attr.prefix_sep, no_ASS(ret), attr.suffix) + return true +end + + +function no_ASS(t) + return set_ASS(false) .. t .. set_ASS(true) +end + + +function set_ASS(b) + if not o.ass_formatting then + return "" + end + return mp.get_property_osd("osd-ass-cc/" .. (b and "0" or "1")) +end + + +function join_stats(s) + r = s.header .. s.file + + if s.video and s.video ~= "" then + r = r .. o.nl .. o.nl .. s.video + end + if s.audio and s.audio ~= "" then + r = r .. o.nl .. o.nl .. s.audio + end + + return r +end + + +function has_vo_window() + return mp.get_property("vo-configured") == "yes" +end + + +function has_video() + local r = mp.get_property("video") + return r and r ~= "no" and r ~= "" +end + + +function has_audio() + local r = mp.get_property("audio") + return r and r ~= "no" and r ~= "" +end + +function has_ansi() + local is_windows = type(package) == 'table' and type(package.config) == 'string' and package.config:sub(1,1) == '\\' + if is_windows then + return os.getenv("ANSICON") + end + return true +end + +function b(t) + return o.b1 .. t .. o.b0 +end + + + +mp.add_key_binding("i", mp.get_script_name(), main, {repeatable=true}) diff --git a/penis b/penis deleted file mode 100644 index e69de29..0000000 diff --git a/tmux.conf b/tmux.conf deleted file mode 100644 index ea85d4a..0000000 --- a/tmux.conf +++ /dev/null @@ -1,179 +0,0 @@ -# change prefix to Ctrl-a (like in gnu-screen) -unbind C-b -set-option -g prefix C-a -bind-key C-a send-prefix - - -# shell -set -g default-command /bin/zsh -set -g default-shell /bin/zsh - - -# start with window 1 (instead of 0) -set -g base-index 1 - - -# start with pane 1 -set -g pane-base-index 1 - - -# screen mode -set -g default-terminal "screen-256color" - - -# source config file -bind r source-file ~/.tmux.conf - - -# history -set -g history-limit 4096 - - -# allow terminal scrolling -set-option -g terminal-overrides 'xterm*:smcup@:rmcup@' - - -# copy mode -#unbind [ -#bind Escape copy-mode -#unbind ] -bind ] paste-buffer - - -# use vi mode -setw -g mode-keys vi -set -g status-keys vi -setw -g utf8 on -# use mouse in copy mode -setw -g mode-mouse on - - -# tmux-zoom.sh -bind C-z run "tmux-zoom.sh" - - -# splitting -unbind % -bind h split-window -h -unbind '"' -bind v split-window -v - - -# window switching -#urxvt tab like window switching (-n: no prior escape seq) -bind-key -n S-left prev -bind-key -n S-right next -bind-key -n C-left swap-window -t -1 -bind-key -n C-right swap-window -t +1 -# with mouse (click on pretty little boxes) -set -g mouse-select-window on - - -# colon : -bind : command-prompt - - -# panes -set -g mouse-select-pane on -set -g pane-border-fg black -set -g pane-active-border-fg brightred -#set -g pane-active-border-attr blink -# resize panes with mouse (drag borders) -set -g mouse-select-pane on -set -g mouse-resize-pane on - - -# status line -set -g status-utf8 on -set -g status-justify left -set -g status-bg default -set -g status-fg colour12 -set -g status-interval 2 - - -# messaging -set -g message-fg black -set -g message-bg yellow -set -g message-command-fg blue -set -g message-command-bg black - - -#window mode -setw -g mode-bg colour6 -setw -g mode-fg colour0 - - -# window status -#setw -g window-status-format " #F#I:#W#F " -#setw -g window-status-current-format " #F#I:#W#F " -setw -g window-status-format "#[bg=green]#[fg=colour0] #I #[fg=brightgreen]#[bg=black] #W " -setw -g window-status-current-format "#[bg=brightyellow]#[fg=black] #I #[fg=colour11]#[bg=red] #W " -setw -g window-status-current-bg colour0 -setw -g window-status-current-fg colour11 -setw -g window-status-current-attr dim -setw -g window-status-bg green -setw -g window-status-fg black -setw -g window-status-attr dim -setw -g window-status-content-bg colour0 -setw -g window-status-content-fg colour11 -setw -g window-status-content-attr blink - - -# Info on right -set -g status-right-length 30 -set -g status-right '' -# '#[fg=magenta]#(cut -d " " -f 1-3 /proc/loadavg) #[fg=colour8]// #[fg=cyan]Tmux [#S]' -# Info on left (no session display) -set -g status-left '' - - -# loud or quiet? -set-option -g visual-activity off -set-option -g visual-bell off -set-option -g visual-content off -set-option -g visual-silence off -set-window-option -g monitor-activity off -set-window-option -g monitor-content on -set -g bell-action any - -# tmux clock -set -g clock-mode-colour blue - -# some key-binding changes -bind x kill-pane -bind X next-layout -bind Z previous-layout -#unbind Left -#bind C-Left resize-pane -L 2 -#bind h select-pane -L -#unbind Down -#bind C-Down resize-pane -D 2 -#bind j select-pane -D -#unbind Up -#bind C-Up resize-pane -U 2 -#bind k select-pane -U -#unbind Right -#bind C-Right resize-pane -R 2 -#bind l select-pane -R -#unbind C-Left -#bind C-h resize-pane -L 1 -#unbind C-Down -#bind C-j resize-pane -D 1 -#unbind C-Up -#bind C-k resize-pane -U 1 -#unbind C-Right -#bind C-l resize-pane -R 1 -#unbind M-Left -#bind C-H resize-pane -L 30 -#unbind M-Down -#bind C-J resize-pane -D 30 -#unbind M-Up -#bind C-K resize-pane -U 30 -#unbind M-Right -#bind C-L resize-pane -R 30 - -# default sessions - need to use 'tmux attach' -#new-session weechat -#new-window rtorrent -#new-window mutt -#new-window zsh diff --git a/tmux/tmux.conf b/tmux/tmux.conf new file mode 100644 index 0000000..ea85d4a --- /dev/null +++ b/tmux/tmux.conf @@ -0,0 +1,179 @@ +# change prefix to Ctrl-a (like in gnu-screen) +unbind C-b +set-option -g prefix C-a +bind-key C-a send-prefix + + +# shell +set -g default-command /bin/zsh +set -g default-shell /bin/zsh + + +# start with window 1 (instead of 0) +set -g base-index 1 + + +# start with pane 1 +set -g pane-base-index 1 + + +# screen mode +set -g default-terminal "screen-256color" + + +# source config file +bind r source-file ~/.tmux.conf + + +# history +set -g history-limit 4096 + + +# allow terminal scrolling +set-option -g terminal-overrides 'xterm*:smcup@:rmcup@' + + +# copy mode +#unbind [ +#bind Escape copy-mode +#unbind ] +bind ] paste-buffer + + +# use vi mode +setw -g mode-keys vi +set -g status-keys vi +setw -g utf8 on +# use mouse in copy mode +setw -g mode-mouse on + + +# tmux-zoom.sh +bind C-z run "tmux-zoom.sh" + + +# splitting +unbind % +bind h split-window -h +unbind '"' +bind v split-window -v + + +# window switching +#urxvt tab like window switching (-n: no prior escape seq) +bind-key -n S-left prev +bind-key -n S-right next +bind-key -n C-left swap-window -t -1 +bind-key -n C-right swap-window -t +1 +# with mouse (click on pretty little boxes) +set -g mouse-select-window on + + +# colon : +bind : command-prompt + + +# panes +set -g mouse-select-pane on +set -g pane-border-fg black +set -g pane-active-border-fg brightred +#set -g pane-active-border-attr blink +# resize panes with mouse (drag borders) +set -g mouse-select-pane on +set -g mouse-resize-pane on + + +# status line +set -g status-utf8 on +set -g status-justify left +set -g status-bg default +set -g status-fg colour12 +set -g status-interval 2 + + +# messaging +set -g message-fg black +set -g message-bg yellow +set -g message-command-fg blue +set -g message-command-bg black + + +#window mode +setw -g mode-bg colour6 +setw -g mode-fg colour0 + + +# window status +#setw -g window-status-format " #F#I:#W#F " +#setw -g window-status-current-format " #F#I:#W#F " +setw -g window-status-format "#[bg=green]#[fg=colour0] #I #[fg=brightgreen]#[bg=black] #W " +setw -g window-status-current-format "#[bg=brightyellow]#[fg=black] #I #[fg=colour11]#[bg=red] #W " +setw -g window-status-current-bg colour0 +setw -g window-status-current-fg colour11 +setw -g window-status-current-attr dim +setw -g window-status-bg green +setw -g window-status-fg black +setw -g window-status-attr dim +setw -g window-status-content-bg colour0 +setw -g window-status-content-fg colour11 +setw -g window-status-content-attr blink + + +# Info on right +set -g status-right-length 30 +set -g status-right '' +# '#[fg=magenta]#(cut -d " " -f 1-3 /proc/loadavg) #[fg=colour8]// #[fg=cyan]Tmux [#S]' +# Info on left (no session display) +set -g status-left '' + + +# loud or quiet? +set-option -g visual-activity off +set-option -g visual-bell off +set-option -g visual-content off +set-option -g visual-silence off +set-window-option -g monitor-activity off +set-window-option -g monitor-content on +set -g bell-action any + +# tmux clock +set -g clock-mode-colour blue + +# some key-binding changes +bind x kill-pane +bind X next-layout +bind Z previous-layout +#unbind Left +#bind C-Left resize-pane -L 2 +#bind h select-pane -L +#unbind Down +#bind C-Down resize-pane -D 2 +#bind j select-pane -D +#unbind Up +#bind C-Up resize-pane -U 2 +#bind k select-pane -U +#unbind Right +#bind C-Right resize-pane -R 2 +#bind l select-pane -R +#unbind C-Left +#bind C-h resize-pane -L 1 +#unbind C-Down +#bind C-j resize-pane -D 1 +#unbind C-Up +#bind C-k resize-pane -U 1 +#unbind C-Right +#bind C-l resize-pane -R 1 +#unbind M-Left +#bind C-H resize-pane -L 30 +#unbind M-Down +#bind C-J resize-pane -D 30 +#unbind M-Up +#bind C-K resize-pane -U 30 +#unbind M-Right +#bind C-L resize-pane -R 30 + +# default sessions - need to use 'tmux attach' +#new-session weechat +#new-window rtorrent +#new-window mutt +#new-window zsh diff --git a/weechat.conf b/weechat.conf deleted file mode 100644 index 88a14f0..0000000 --- a/weechat.conf +++ /dev/null @@ -1,832 +0,0 @@ -# -# weechat.conf -- weechat v0.4.3 -# - -[debug] - -[startup] -command_after_plugins = "/buffer clear" -command_before_plugins = "" -display_logo = off -display_version = off -sys_rlimit = "" - -[look] -align_end_of_lines = message -bar_more_down = " + " -bar_more_left = " -- " -bar_more_right = " ++ " -bar_more_up = " - " -buffer_auto_renumber = on -buffer_notify_default = all -buffer_position = end -buffer_search_case_sensitive = off -buffer_search_force_default = off -buffer_search_regex = off -buffer_search_where = message -buffer_time_format = " %H:%M" -color_basic_force_bold = off -color_inactive_buffer = off -color_inactive_message = on -color_inactive_prefix = on -color_inactive_prefix_buffer = on -color_inactive_time = off -color_inactive_window = off -color_nick_offline = off -color_pairs_auto_reset = 5 -color_real_white = off -command_chars = "" -confirm_quit = off -day_change = on -day_change_message_1date = "-- %a, %d %b %Y --" -day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --" -eat_newline_glitch = off -emphasized_attributes = "" -highlight = "" -highlight_regex = "" -highlight_tags = "" -hotlist_add_buffer_if_away = on -hotlist_buffer_separator = ", " -hotlist_count_max = 2 -hotlist_count_min_msg = 2 -hotlist_names_count = 3 -hotlist_names_length = 0 -hotlist_names_level = 12 -hotlist_names_merged_buffers = off -hotlist_prefix = "H: " -hotlist_short_names = on -hotlist_sort = group_time_asc -hotlist_suffix = "" -hotlist_unique_numbers = on -input_cursor_scroll = 20 -input_share = none -input_share_overwrite = off -input_undo_max = 32 -item_buffer_filter = "*" -item_buffer_zoom = "!" -item_time_format = "%l:%M" -jump_current_to_previous_buffer = on -jump_previous_buffer_when_closing = on -jump_smart_back_to_buffer = on -key_bind_safe = on -mouse = off -mouse_timer_delay = 100 -nick_prefix = "" -nick_suffix = "" -paste_bracketed = off -paste_bracketed_timer_delay = 10 -paste_max_lines = 5 -prefix_action = "*" -prefix_align = right -prefix_align_max = 0 -prefix_align_min = 0 -prefix_align_more = "+" -prefix_align_more_after = on -prefix_buffer_align = right -prefix_buffer_align_max = 0 -prefix_buffer_align_more = "+" -prefix_buffer_align_more_after = on -prefix_error = " !!! " -prefix_join = " > " -prefix_network = " - " -prefix_quit = " < " -prefix_same_nick = "" -prefix_suffix = ":" -read_marker = line -read_marker_always_show = off -read_marker_string = "- " -save_config_on_exit = on -save_layout_on_exit = all -scroll_amount = 3 -scroll_bottom_after_switch = off -scroll_page_percent = 100 -search_text_not_found_alert = on -separator_horizontal = "-" -separator_vertical = "" -tab_width = 1 -time_format = "%a, %d %b %Y %T" -window_auto_zoom = off -window_separator_horizontal = on -window_separator_vertical = on -window_title = "WeeChat ${info:version}" - -[palette] -100 = "" -101 = "" -102 = "" -103 = "" -104 = "" -105 = "" -106 = "" -107 = "" -108 = "" -109 = "" -110 = "" -111 = "" -112 = "" -113 = "" -114 = "" -115 = "" -116 = "" -117 = "" -118 = "" -119 = "" -120 = "" -121 = "" -122 = "" -123 = "" -124 = "" -125 = "" -126 = "" -127 = "" -128 = "" -129 = "" -130 = "" -131 = "" -132 = "" -133 = "" -134 = "" -135 = "" -136 = "" -137 = "" -138 = "" -139 = "" -140 = "" -141 = "" -142 = "" -143 = "" -144 = "" -145 = "" -146 = "" -147 = "" -148 = "" -149 = "" -150 = "" -151 = "" -152 = "" -153 = "" -154 = "" -155 = "" -156 = "" -157 = "" -158 = "" -159 = "" -160 = "" -161 = "" -162 = "" -163 = "" -164 = "" -165 = "" -166 = "" -167 = "" -168 = "" -169 = "" -17 = "" -170 = "" -171 = "" -172 = "" -173 = "" -174 = "" -175 = "" -176 = "" -177 = "" -178 = "" -179 = "" -18 = "" -180 = "" -181 = "" -182 = "" -183 = "" -184 = "" -185 = "" -186 = "" -187 = "" -188 = "" -189 = "" -19 = "" -190 = "" -191 = "" -192 = "" -193 = "" -194 = "" -195 = "" -196 = "" -197 = "" -198 = "" -199 = "" -20 = "" -200 = "" -201 = "" -202 = "" -203 = "" -204 = "" -205 = "" -206 = "" -207 = "" -208 = "" -209 = "" -21 = "" -210 = "" -211 = "" -212 = "" -213 = "" -214 = "" -215 = "" -216 = "" -217 = "" -218 = "" -219 = "" -22 = "" -220 = "" -221 = "" -222 = "" -223 = "" -224 = "" -225 = "" -226 = "" -227 = "" -228 = "" -229 = "" -23 = "" -230 = "" -231 = "" -232 = "" -233 = "" -234 = "" -235 = "" -236 = "" -237 = "" -238 = "" -239 = "" -24 = "" -240 = "" -241 = "" -242 = "" -243 = "" -244 = "" -245 = "" -246 = "" -247 = "" -248 = "" -249 = "" -25 = "" -250 = "" -251 = "" -252 = "" -253 = "" -254 = "" -255 = "" -256 = "" -26 = "" -27 = "" -28 = "" -29 = "" -30 = "" -31 = "" -32 = "" -33 = "" -34 = "" -35 = "" -36 = "" -37 = "" -38 = "" -39 = "" -40 = "" -41 = "" -42 = "" -43 = "" -44 = "" -45 = "" -46 = "" -47 = "" -48 = "" -49 = "" -50 = "" -51 = "" -52 = "" -53 = "" -54 = "" -55 = "" -56 = "" -57 = "" -58 = "" -59 = "" -60 = "" -61 = "" -62 = "" -63 = "" -64 = "" -65 = "" -66 = "" -67 = "" -68 = "" -69 = "" -70 = "" -71 = "" -72 = "" -73 = "" -74 = "" -75 = "" -76 = "" -77 = "" -78 = "" -79 = "" -80 = "" -81 = "" -82 = "" -83 = "" -84 = "" -85 = "" -86 = "" -87 = "" -88 = "" -89 = "" -90 = "" -91 = "" -92 = "" -93 = "" -94 = "" -95 = "" -96 = "" -97 = "" -98 = "" -99 = "" - -[color] -bar_more = green -chat = white -chat_bg = default -chat_buffer = white -chat_channel = white -chat_day_change = cyan -chat_delimiters = green -chat_highlight = yellow -chat_highlight_bg = default -chat_host = cyan -chat_inactive_buffer = darkgray -chat_inactive_window = darkgray -chat_nick = cyan -chat_nick_colors = "magenta,lightcyan,lightmagenta,lightgreen,lightred,brown,darkbrown" -chat_nick_offline = darkgray -chat_nick_offline_highlight = default -chat_nick_offline_highlight_bg = darkgray -chat_nick_other = white -chat_nick_prefix = green -chat_nick_self = green -chat_nick_suffix = green -chat_prefix_action = white -chat_prefix_buffer = red -chat_prefix_buffer_inactive_buffer = darkgray -chat_prefix_error = yellow -chat_prefix_join = lightgreen -chat_prefix_more = lightmagenta -chat_prefix_network = magenta -chat_prefix_quit = lightred -chat_prefix_suffix = darkgray -chat_read_marker = magenta -chat_read_marker_bg = default -chat_server = brown -chat_tags = red -chat_text_found = yellow -chat_text_found_bg = lightmagenta -chat_time = red -chat_time_delimiters = red -chat_value = cyan -emphasized = yellow -emphasized_bg = magenta -input_actions = lightgreen -input_text_not_found = red -nicklist_away = cyan -nicklist_group = green -nicklist_offline = blue -separator = darkgray -status_count_highlight = magenta -status_count_msg = brown -status_count_other = default -status_count_private = green -status_data_highlight = lightmagenta -status_data_msg = yellow -status_data_other = default -status_data_private = lightgreen -status_filter = green -status_more = yellow -status_name = white -status_name_ssl = lightgreen -status_number = yellow -status_time = default - -[completion] -base_word_until_cursor = on -default_template = "%(nicks)|%(irc_channels)" -nick_add_space = on -nick_completer = ":" -nick_first_only = off -nick_ignore_chars = "[]-^" -partial_completion_alert = on -partial_completion_command = off -partial_completion_command_arg = off -partial_completion_count = on -partial_completion_other = off - -[history] -display_default = 5 -max_buffer_lines_minutes = 0 -max_buffer_lines_number = 100 -max_commands = 100 -max_visited_buffers = 50 - -[proxy] - -[network] -connection_timeout = 60 -gnutls_ca_file = "%h/ssl/CAs.pem" -gnutls_handshake_timeout = 30 -proxy_curl = "" - -[plugin] -autoload = "*" -debug = off -extension = ".so" -path = "%h/plugins" -save_config_on_unload = on - -[bar] -buddylist.color_bg = default -buddylist.color_delim = default -buddylist.color_fg = default -buddylist.conditions = "" -buddylist.filling_left_right = vertical -buddylist.filling_top_bottom = horizontal -buddylist.hidden = on -buddylist.items = "buddylist" -buddylist.position = left -buddylist.priority = 0 -buddylist.separator = on -buddylist.size = 0 -buddylist.size_max = 0 -buddylist.type = root -buffers.color_bg = default -buffers.color_delim = default -buffers.color_fg = default -buffers.conditions = "" -buffers.filling_left_right = vertical -buffers.filling_top_bottom = horizontal -buffers.hidden = on -buffers.items = "buffers" -buffers.position = top -buffers.priority = 0 -buffers.separator = off -buffers.size = 0 -buffers.size_max = 0 -buffers.type = root -input.color_bg = default -input.color_delim = red -input.color_fg = default -input.conditions = "" -input.filling_left_right = horizontal -input.filling_top_bottom = horizontal -input.hidden = off -input.items = " >>,input_text " -input.position = bottom -input.priority = 1000 -input.separator = on -input.size = 1 -input.size_max = 0 -input.type = root -isetbar.color_bg = default -isetbar.color_delim = cyan -isetbar.color_fg = default -isetbar.conditions = "" -isetbar.filling_left_right = vertical -isetbar.filling_top_bottom = horizontal -isetbar.hidden = on -isetbar.items = "isetbar_help" -isetbar.position = top -isetbar.priority = 0 -isetbar.separator = on -isetbar.size = 3 -isetbar.size_max = 3 -isetbar.type = window -nicklist.color_bg = default -nicklist.color_delim = black -nicklist.color_fg = default -nicklist.conditions = "nicklist" -nicklist.filling_left_right = vertical -nicklist.filling_top_bottom = columns_horizontal -nicklist.hidden = on -nicklist.items = "buffer_nicklist" -nicklist.position = right -nicklist.priority = 200 -nicklist.separator = off -nicklist.size = 13 -nicklist.size_max = 0 -nicklist.type = root -title.color_bg = default -title.color_delim = darkgray -title.color_fg = green -title.conditions = "" -title.filling_left_right = horizontal -title.filling_top_bottom = horizontal -title.hidden = off -title.items = " [hotlist],[buffer_plugin],buffer_name,[buffer_nicklist_count],buffer_nicklist " -title.position = top -title.priority = 0 -title.separator = on -title.size = 1 -title.size_max = 0 -title.type = root - -[layout] -default.buffer = "core;weechat;1" -default.buffer = "irc;server.sdellsama;1" -default.buffer = "irc;sdellsama.#archlinux;2" -default.buffer = "irc;sdellsama.#archlinux-offtopic;3" -default.buffer = "irc;sdellsama.demize;4" -default.window = "1;0;0;0;irc;server.sdellsama" -default.current = on - -[notify] - -[filter] -irc_smart = on;*;irc_smart_filter;* - -[key] -ctrl-? = "/input delete_previous_char" -ctrl-A = "/input move_beginning_of_line" -ctrl-B = "/input move_previous_char" -ctrl-Cb = "/input insert \x02" -ctrl-Cc = "/input insert \x03" -ctrl-Ci = "/input insert \x1D" -ctrl-Co = "/input insert \x0F" -ctrl-Cr = "/input insert \x12" -ctrl-Cu = "/input insert \x15" -ctrl-D = "/input delete_next_char" -ctrl-E = "/input move_end_of_line" -ctrl-F = "/input move_next_char" -ctrl-H = "/input delete_previous_char" -ctrl-I = "/input complete_next" -ctrl-J = "/input return" -ctrl-K = "/input delete_end_of_line" -ctrl-L = "/window refresh" -ctrl-M = "/input return" -ctrl-N = "/buffer +1" -ctrl-P = "/buffer -1" -ctrl-R = "/input search_text" -ctrl-Sctrl-U = "/input set_unread" -ctrl-T = "/input transpose_chars" -ctrl-U = "/input delete_beginning_of_line" -ctrl-W = "/input delete_previous_word" -ctrl-X = "/input switch_active_buffer" -ctrl-Y = "/input clipboard_paste" -meta-meta2-1~ = "/window scroll_top" -meta-meta2-23~ = "/bar scroll nicklist * yb" -meta-meta2-24~ = "/bar scroll nicklist * ye" -meta-meta2-4~ = "/window scroll_bottom" -meta-meta2-5~ = "/window scroll_up" -meta-meta2-6~ = "/window scroll_down" -meta-meta2-7~ = "/window scroll_top" -meta-meta2-8~ = "/window scroll_bottom" -meta-meta2-A = "/buffer -1" -meta-meta2-B = "/buffer +1" -meta-meta2-C = "/buffer +1" -meta-meta2-D = "/buffer -1" -meta-0 = "/buffer *10" -meta-1 = "/buffer *1" -meta-2 = "/buffer *2" -meta-3 = "/buffer *3" -meta-4 = "/buffer *4" -meta-5 = "/buffer *5" -meta-6 = "/buffer *6" -meta-7 = "/buffer *7" -meta-8 = "/buffer *8" -meta-9 = "/buffer *9" -meta-< = "/input jump_previously_visited_buffer" -meta-= = "/filter toggle" -meta-> = "/input jump_next_visited_buffer" -meta-OA = "/input history_global_previous" -meta-OB = "/input history_global_next" -meta-OC = "/input move_next_word" -meta-OD = "/input move_previous_word" -meta-OF = "/input move_end_of_line" -meta-OH = "/input move_beginning_of_line" -meta-Oa = "/input history_global_previous" -meta-Ob = "/input history_global_next" -meta-Oc = "/input move_next_word" -meta-Od = "/input move_previous_word" -meta2-15~ = "/buffer -1" -meta2-17~ = "/buffer +1" -meta2-18~ = "/window -1" -meta2-19~ = "/window +1" -meta2-1;3A = "/buffer -1" -meta2-1;3B = "/buffer +1" -meta2-1;3C = "/buffer +1" -meta2-1;3D = "/buffer -1" -meta2-1;5A = "/input history_global_previous" -meta2-1;5B = "/input history_global_next" -meta2-1~ = "/input move_beginning_of_line" -meta2-20~ = "/bar scroll title * x-50%" -meta2-21~ = "/bar scroll title * x+50%" -meta2-23~ = "/bar scroll nicklist * y-100%" -meta2-24~ = "/bar scroll nicklist * y+100%" -meta2-3~ = "/input delete_next_char" -meta2-4~ = "/input move_end_of_line" -meta2-5;3~ = "/window scroll_up" -meta2-5~ = "/window page_up" -meta2-6;3~ = "/window scroll_down" -meta2-6~ = "/window page_down" -meta2-7~ = "/input move_beginning_of_line" -meta2-8~ = "/input move_end_of_line" -meta2-A = "/input history_previous" -meta2-B = "/input history_next" -meta2-C = "/input move_next_char" -meta2-D = "/input move_previous_char" -meta2-F = "/input move_end_of_line" -meta2-G = "/window page_down" -meta2-H = "/input move_beginning_of_line" -meta2-I = "/window page_up" -meta2-Z = "/input complete_previous" -meta-_ = "/input redo" -meta-a = "/input jump_smart" -meta-b = "/input move_previous_word" -meta-d = "/input delete_next_word" -meta-f = "/input move_next_word" -meta-h = "/input hotlist_clear" -meta-jmeta-l = "/input jump_last_buffer" -meta-jmeta-r = "/server raw" -meta-jmeta-s = "/server jump" -meta-j01 = "/buffer 1" -meta-j02 = "/buffer 2" -meta-j03 = "/buffer 3" -meta-j04 = "/buffer 4" -meta-j05 = "/buffer 5" -meta-j06 = "/buffer 6" -meta-j07 = "/buffer 7" -meta-j08 = "/buffer 8" -meta-j09 = "/buffer 9" -meta-j10 = "/buffer 10" -meta-j11 = "/buffer 11" -meta-j12 = "/buffer 12" -meta-j13 = "/buffer 13" -meta-j14 = "/buffer 14" -meta-j15 = "/buffer 15" -meta-j16 = "/buffer 16" -meta-j17 = "/buffer 17" -meta-j18 = "/buffer 18" -meta-j19 = "/buffer 19" -meta-j20 = "/buffer 20" -meta-j21 = "/buffer 21" -meta-j22 = "/buffer 22" -meta-j23 = "/buffer 23" -meta-j24 = "/buffer 24" -meta-j25 = "/buffer 25" -meta-j26 = "/buffer 26" -meta-j27 = "/buffer 27" -meta-j28 = "/buffer 28" -meta-j29 = "/buffer 29" -meta-j30 = "/buffer 30" -meta-j31 = "/buffer 31" -meta-j32 = "/buffer 32" -meta-j33 = "/buffer 33" -meta-j34 = "/buffer 34" -meta-j35 = "/buffer 35" -meta-j36 = "/buffer 36" -meta-j37 = "/buffer 37" -meta-j38 = "/buffer 38" -meta-j39 = "/buffer 39" -meta-j40 = "/buffer 40" -meta-j41 = "/buffer 41" -meta-j42 = "/buffer 42" -meta-j43 = "/buffer 43" -meta-j44 = "/buffer 44" -meta-j45 = "/buffer 45" -meta-j46 = "/buffer 46" -meta-j47 = "/buffer 47" -meta-j48 = "/buffer 48" -meta-j49 = "/buffer 49" -meta-j50 = "/buffer 50" -meta-j51 = "/buffer 51" -meta-j52 = "/buffer 52" -meta-j53 = "/buffer 53" -meta-j54 = "/buffer 54" -meta-j55 = "/buffer 55" -meta-j56 = "/buffer 56" -meta-j57 = "/buffer 57" -meta-j58 = "/buffer 58" -meta-j59 = "/buffer 59" -meta-j60 = "/buffer 60" -meta-j61 = "/buffer 61" -meta-j62 = "/buffer 62" -meta-j63 = "/buffer 63" -meta-j64 = "/buffer 64" -meta-j65 = "/buffer 65" -meta-j66 = "/buffer 66" -meta-j67 = "/buffer 67" -meta-j68 = "/buffer 68" -meta-j69 = "/buffer 69" -meta-j70 = "/buffer 70" -meta-j71 = "/buffer 71" -meta-j72 = "/buffer 72" -meta-j73 = "/buffer 73" -meta-j74 = "/buffer 74" -meta-j75 = "/buffer 75" -meta-j76 = "/buffer 76" -meta-j77 = "/buffer 77" -meta-j78 = "/buffer 78" -meta-j79 = "/buffer 79" -meta-j80 = "/buffer 80" -meta-j81 = "/buffer 81" -meta-j82 = "/buffer 82" -meta-j83 = "/buffer 83" -meta-j84 = "/buffer 84" -meta-j85 = "/buffer 85" -meta-j86 = "/buffer 86" -meta-j87 = "/buffer 87" -meta-j88 = "/buffer 88" -meta-j89 = "/buffer 89" -meta-j90 = "/buffer 90" -meta-j91 = "/buffer 91" -meta-j92 = "/buffer 92" -meta-j93 = "/buffer 93" -meta-j94 = "/buffer 94" -meta-j95 = "/buffer 95" -meta-j96 = "/buffer 96" -meta-j97 = "/buffer 97" -meta-j98 = "/buffer 98" -meta-j99 = "/buffer 99" -meta-k = "/input grab_key_command" -meta-n = "/window scroll_next_highlight" -meta-p = "/window scroll_previous_highlight" -meta-r = "/input delete_line" -meta-u = "/input scroll_unread" -meta-wmeta-meta2-A = "/window up" -meta-wmeta-meta2-B = "/window down" -meta-wmeta-meta2-C = "/window right" -meta-wmeta-meta2-D = "/window left" -meta-wmeta2-1;3A = "/window up" -meta-wmeta2-1;3B = "/window down" -meta-wmeta2-1;3C = "/window right" -meta-wmeta2-1;3D = "/window left" -meta-wmeta-b = "/window balance" -meta-wmeta-s = "/window swap" -meta-z = "/window zoom" -ctrl-_ = "/input undo" - -[key_search] -ctrl-J = "/input search_stop" -ctrl-M = "/input search_stop" -ctrl-R = "/input search_switch_case" -meta2-A = "/input search_previous" -meta2-B = "/input search_next" - -[key_cursor] -ctrl-J = "/cursor stop" -ctrl-M = "/cursor stop" -meta-meta2-A = "/cursor move area_up" -meta-meta2-B = "/cursor move area_down" -meta-meta2-C = "/cursor move area_right" -meta-meta2-D = "/cursor move area_left" -meta2-1;3A = "/cursor move area_up" -meta2-1;3B = "/cursor move area_down" -meta2-1;3C = "/cursor move area_right" -meta2-1;3D = "/cursor move area_left" -meta2-A = "/cursor move up" -meta2-B = "/cursor move down" -meta2-C = "/cursor move right" -meta2-D = "/cursor move left" -@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}" -@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}" -@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}" -@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop" -@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}" -@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop" -@chat:m = "hsignal:chat_quote_message;/cursor stop" -@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop" - -[key_mouse] -@bar(input):button2 = "/input grab_mouse_area" -@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%" -@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e" -@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%" -@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b" -@chat(perl.iset):button1 = "hsignal:iset_mouse" -@chat(perl.iset):button2* = "hsignal:iset_mouse" -@chat(perl.iset):wheeldown = "/repeat 5 /iset **down" -@chat(perl.iset):wheelup = "/repeat 5 /iset **up" -@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}" -@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}" -@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}" -@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}" -@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}" -@item(buffers):button1* = "hsignal:buffers_mouse" -@item(buffers):button2 = "hsignal:buffers_mouse" -@item(buffers):button2* = "hsignal:buffers_mouse" -@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%" -@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%" -@chat:button1 = "/window ${_window_number}" -@chat:button1-gesture-left = "/window ${_window_number};/buffer -1" -@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1" -@chat:button1-gesture-right = "/window ${_window_number};/buffer +1" -@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer" -@chat:wheeldown = "/window scroll_down -window ${_window_number}" -@chat:wheelup = "/window scroll_up -window ${_window_number}" -@*:button3 = "/cursor go ${_x},${_y}" diff --git a/weechat/weechat.conf b/weechat/weechat.conf new file mode 100644 index 0000000..88a14f0 --- /dev/null +++ b/weechat/weechat.conf @@ -0,0 +1,832 @@ +# +# weechat.conf -- weechat v0.4.3 +# + +[debug] + +[startup] +command_after_plugins = "/buffer clear" +command_before_plugins = "" +display_logo = off +display_version = off +sys_rlimit = "" + +[look] +align_end_of_lines = message +bar_more_down = " + " +bar_more_left = " -- " +bar_more_right = " ++ " +bar_more_up = " - " +buffer_auto_renumber = on +buffer_notify_default = all +buffer_position = end +buffer_search_case_sensitive = off +buffer_search_force_default = off +buffer_search_regex = off +buffer_search_where = message +buffer_time_format = " %H:%M" +color_basic_force_bold = off +color_inactive_buffer = off +color_inactive_message = on +color_inactive_prefix = on +color_inactive_prefix_buffer = on +color_inactive_time = off +color_inactive_window = off +color_nick_offline = off +color_pairs_auto_reset = 5 +color_real_white = off +command_chars = "" +confirm_quit = off +day_change = on +day_change_message_1date = "-- %a, %d %b %Y --" +day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --" +eat_newline_glitch = off +emphasized_attributes = "" +highlight = "" +highlight_regex = "" +highlight_tags = "" +hotlist_add_buffer_if_away = on +hotlist_buffer_separator = ", " +hotlist_count_max = 2 +hotlist_count_min_msg = 2 +hotlist_names_count = 3 +hotlist_names_length = 0 +hotlist_names_level = 12 +hotlist_names_merged_buffers = off +hotlist_prefix = "H: " +hotlist_short_names = on +hotlist_sort = group_time_asc +hotlist_suffix = "" +hotlist_unique_numbers = on +input_cursor_scroll = 20 +input_share = none +input_share_overwrite = off +input_undo_max = 32 +item_buffer_filter = "*" +item_buffer_zoom = "!" +item_time_format = "%l:%M" +jump_current_to_previous_buffer = on +jump_previous_buffer_when_closing = on +jump_smart_back_to_buffer = on +key_bind_safe = on +mouse = off +mouse_timer_delay = 100 +nick_prefix = "" +nick_suffix = "" +paste_bracketed = off +paste_bracketed_timer_delay = 10 +paste_max_lines = 5 +prefix_action = "*" +prefix_align = right +prefix_align_max = 0 +prefix_align_min = 0 +prefix_align_more = "+" +prefix_align_more_after = on +prefix_buffer_align = right +prefix_buffer_align_max = 0 +prefix_buffer_align_more = "+" +prefix_buffer_align_more_after = on +prefix_error = " !!! " +prefix_join = " > " +prefix_network = " - " +prefix_quit = " < " +prefix_same_nick = "" +prefix_suffix = ":" +read_marker = line +read_marker_always_show = off +read_marker_string = "- " +save_config_on_exit = on +save_layout_on_exit = all +scroll_amount = 3 +scroll_bottom_after_switch = off +scroll_page_percent = 100 +search_text_not_found_alert = on +separator_horizontal = "-" +separator_vertical = "" +tab_width = 1 +time_format = "%a, %d %b %Y %T" +window_auto_zoom = off +window_separator_horizontal = on +window_separator_vertical = on +window_title = "WeeChat ${info:version}" + +[palette] +100 = "" +101 = "" +102 = "" +103 = "" +104 = "" +105 = "" +106 = "" +107 = "" +108 = "" +109 = "" +110 = "" +111 = "" +112 = "" +113 = "" +114 = "" +115 = "" +116 = "" +117 = "" +118 = "" +119 = "" +120 = "" +121 = "" +122 = "" +123 = "" +124 = "" +125 = "" +126 = "" +127 = "" +128 = "" +129 = "" +130 = "" +131 = "" +132 = "" +133 = "" +134 = "" +135 = "" +136 = "" +137 = "" +138 = "" +139 = "" +140 = "" +141 = "" +142 = "" +143 = "" +144 = "" +145 = "" +146 = "" +147 = "" +148 = "" +149 = "" +150 = "" +151 = "" +152 = "" +153 = "" +154 = "" +155 = "" +156 = "" +157 = "" +158 = "" +159 = "" +160 = "" +161 = "" +162 = "" +163 = "" +164 = "" +165 = "" +166 = "" +167 = "" +168 = "" +169 = "" +17 = "" +170 = "" +171 = "" +172 = "" +173 = "" +174 = "" +175 = "" +176 = "" +177 = "" +178 = "" +179 = "" +18 = "" +180 = "" +181 = "" +182 = "" +183 = "" +184 = "" +185 = "" +186 = "" +187 = "" +188 = "" +189 = "" +19 = "" +190 = "" +191 = "" +192 = "" +193 = "" +194 = "" +195 = "" +196 = "" +197 = "" +198 = "" +199 = "" +20 = "" +200 = "" +201 = "" +202 = "" +203 = "" +204 = "" +205 = "" +206 = "" +207 = "" +208 = "" +209 = "" +21 = "" +210 = "" +211 = "" +212 = "" +213 = "" +214 = "" +215 = "" +216 = "" +217 = "" +218 = "" +219 = "" +22 = "" +220 = "" +221 = "" +222 = "" +223 = "" +224 = "" +225 = "" +226 = "" +227 = "" +228 = "" +229 = "" +23 = "" +230 = "" +231 = "" +232 = "" +233 = "" +234 = "" +235 = "" +236 = "" +237 = "" +238 = "" +239 = "" +24 = "" +240 = "" +241 = "" +242 = "" +243 = "" +244 = "" +245 = "" +246 = "" +247 = "" +248 = "" +249 = "" +25 = "" +250 = "" +251 = "" +252 = "" +253 = "" +254 = "" +255 = "" +256 = "" +26 = "" +27 = "" +28 = "" +29 = "" +30 = "" +31 = "" +32 = "" +33 = "" +34 = "" +35 = "" +36 = "" +37 = "" +38 = "" +39 = "" +40 = "" +41 = "" +42 = "" +43 = "" +44 = "" +45 = "" +46 = "" +47 = "" +48 = "" +49 = "" +50 = "" +51 = "" +52 = "" +53 = "" +54 = "" +55 = "" +56 = "" +57 = "" +58 = "" +59 = "" +60 = "" +61 = "" +62 = "" +63 = "" +64 = "" +65 = "" +66 = "" +67 = "" +68 = "" +69 = "" +70 = "" +71 = "" +72 = "" +73 = "" +74 = "" +75 = "" +76 = "" +77 = "" +78 = "" +79 = "" +80 = "" +81 = "" +82 = "" +83 = "" +84 = "" +85 = "" +86 = "" +87 = "" +88 = "" +89 = "" +90 = "" +91 = "" +92 = "" +93 = "" +94 = "" +95 = "" +96 = "" +97 = "" +98 = "" +99 = "" + +[color] +bar_more = green +chat = white +chat_bg = default +chat_buffer = white +chat_channel = white +chat_day_change = cyan +chat_delimiters = green +chat_highlight = yellow +chat_highlight_bg = default +chat_host = cyan +chat_inactive_buffer = darkgray +chat_inactive_window = darkgray +chat_nick = cyan +chat_nick_colors = "magenta,lightcyan,lightmagenta,lightgreen,lightred,brown,darkbrown" +chat_nick_offline = darkgray +chat_nick_offline_highlight = default +chat_nick_offline_highlight_bg = darkgray +chat_nick_other = white +chat_nick_prefix = green +chat_nick_self = green +chat_nick_suffix = green +chat_prefix_action = white +chat_prefix_buffer = red +chat_prefix_buffer_inactive_buffer = darkgray +chat_prefix_error = yellow +chat_prefix_join = lightgreen +chat_prefix_more = lightmagenta +chat_prefix_network = magenta +chat_prefix_quit = lightred +chat_prefix_suffix = darkgray +chat_read_marker = magenta +chat_read_marker_bg = default +chat_server = brown +chat_tags = red +chat_text_found = yellow +chat_text_found_bg = lightmagenta +chat_time = red +chat_time_delimiters = red +chat_value = cyan +emphasized = yellow +emphasized_bg = magenta +input_actions = lightgreen +input_text_not_found = red +nicklist_away = cyan +nicklist_group = green +nicklist_offline = blue +separator = darkgray +status_count_highlight = magenta +status_count_msg = brown +status_count_other = default +status_count_private = green +status_data_highlight = lightmagenta +status_data_msg = yellow +status_data_other = default +status_data_private = lightgreen +status_filter = green +status_more = yellow +status_name = white +status_name_ssl = lightgreen +status_number = yellow +status_time = default + +[completion] +base_word_until_cursor = on +default_template = "%(nicks)|%(irc_channels)" +nick_add_space = on +nick_completer = ":" +nick_first_only = off +nick_ignore_chars = "[]-^" +partial_completion_alert = on +partial_completion_command = off +partial_completion_command_arg = off +partial_completion_count = on +partial_completion_other = off + +[history] +display_default = 5 +max_buffer_lines_minutes = 0 +max_buffer_lines_number = 100 +max_commands = 100 +max_visited_buffers = 50 + +[proxy] + +[network] +connection_timeout = 60 +gnutls_ca_file = "%h/ssl/CAs.pem" +gnutls_handshake_timeout = 30 +proxy_curl = "" + +[plugin] +autoload = "*" +debug = off +extension = ".so" +path = "%h/plugins" +save_config_on_unload = on + +[bar] +buddylist.color_bg = default +buddylist.color_delim = default +buddylist.color_fg = default +buddylist.conditions = "" +buddylist.filling_left_right = vertical +buddylist.filling_top_bottom = horizontal +buddylist.hidden = on +buddylist.items = "buddylist" +buddylist.position = left +buddylist.priority = 0 +buddylist.separator = on +buddylist.size = 0 +buddylist.size_max = 0 +buddylist.type = root +buffers.color_bg = default +buffers.color_delim = default +buffers.color_fg = default +buffers.conditions = "" +buffers.filling_left_right = vertical +buffers.filling_top_bottom = horizontal +buffers.hidden = on +buffers.items = "buffers" +buffers.position = top +buffers.priority = 0 +buffers.separator = off +buffers.size = 0 +buffers.size_max = 0 +buffers.type = root +input.color_bg = default +input.color_delim = red +input.color_fg = default +input.conditions = "" +input.filling_left_right = horizontal +input.filling_top_bottom = horizontal +input.hidden = off +input.items = " >>,input_text " +input.position = bottom +input.priority = 1000 +input.separator = on +input.size = 1 +input.size_max = 0 +input.type = root +isetbar.color_bg = default +isetbar.color_delim = cyan +isetbar.color_fg = default +isetbar.conditions = "" +isetbar.filling_left_right = vertical +isetbar.filling_top_bottom = horizontal +isetbar.hidden = on +isetbar.items = "isetbar_help" +isetbar.position = top +isetbar.priority = 0 +isetbar.separator = on +isetbar.size = 3 +isetbar.size_max = 3 +isetbar.type = window +nicklist.color_bg = default +nicklist.color_delim = black +nicklist.color_fg = default +nicklist.conditions = "nicklist" +nicklist.filling_left_right = vertical +nicklist.filling_top_bottom = columns_horizontal +nicklist.hidden = on +nicklist.items = "buffer_nicklist" +nicklist.position = right +nicklist.priority = 200 +nicklist.separator = off +nicklist.size = 13 +nicklist.size_max = 0 +nicklist.type = root +title.color_bg = default +title.color_delim = darkgray +title.color_fg = green +title.conditions = "" +title.filling_left_right = horizontal +title.filling_top_bottom = horizontal +title.hidden = off +title.items = " [hotlist],[buffer_plugin],buffer_name,[buffer_nicklist_count],buffer_nicklist " +title.position = top +title.priority = 0 +title.separator = on +title.size = 1 +title.size_max = 0 +title.type = root + +[layout] +default.buffer = "core;weechat;1" +default.buffer = "irc;server.sdellsama;1" +default.buffer = "irc;sdellsama.#archlinux;2" +default.buffer = "irc;sdellsama.#archlinux-offtopic;3" +default.buffer = "irc;sdellsama.demize;4" +default.window = "1;0;0;0;irc;server.sdellsama" +default.current = on + +[notify] + +[filter] +irc_smart = on;*;irc_smart_filter;* + +[key] +ctrl-? = "/input delete_previous_char" +ctrl-A = "/input move_beginning_of_line" +ctrl-B = "/input move_previous_char" +ctrl-Cb = "/input insert \x02" +ctrl-Cc = "/input insert \x03" +ctrl-Ci = "/input insert \x1D" +ctrl-Co = "/input insert \x0F" +ctrl-Cr = "/input insert \x12" +ctrl-Cu = "/input insert \x15" +ctrl-D = "/input delete_next_char" +ctrl-E = "/input move_end_of_line" +ctrl-F = "/input move_next_char" +ctrl-H = "/input delete_previous_char" +ctrl-I = "/input complete_next" +ctrl-J = "/input return" +ctrl-K = "/input delete_end_of_line" +ctrl-L = "/window refresh" +ctrl-M = "/input return" +ctrl-N = "/buffer +1" +ctrl-P = "/buffer -1" +ctrl-R = "/input search_text" +ctrl-Sctrl-U = "/input set_unread" +ctrl-T = "/input transpose_chars" +ctrl-U = "/input delete_beginning_of_line" +ctrl-W = "/input delete_previous_word" +ctrl-X = "/input switch_active_buffer" +ctrl-Y = "/input clipboard_paste" +meta-meta2-1~ = "/window scroll_top" +meta-meta2-23~ = "/bar scroll nicklist * yb" +meta-meta2-24~ = "/bar scroll nicklist * ye" +meta-meta2-4~ = "/window scroll_bottom" +meta-meta2-5~ = "/window scroll_up" +meta-meta2-6~ = "/window scroll_down" +meta-meta2-7~ = "/window scroll_top" +meta-meta2-8~ = "/window scroll_bottom" +meta-meta2-A = "/buffer -1" +meta-meta2-B = "/buffer +1" +meta-meta2-C = "/buffer +1" +meta-meta2-D = "/buffer -1" +meta-0 = "/buffer *10" +meta-1 = "/buffer *1" +meta-2 = "/buffer *2" +meta-3 = "/buffer *3" +meta-4 = "/buffer *4" +meta-5 = "/buffer *5" +meta-6 = "/buffer *6" +meta-7 = "/buffer *7" +meta-8 = "/buffer *8" +meta-9 = "/buffer *9" +meta-< = "/input jump_previously_visited_buffer" +meta-= = "/filter toggle" +meta-> = "/input jump_next_visited_buffer" +meta-OA = "/input history_global_previous" +meta-OB = "/input history_global_next" +meta-OC = "/input move_next_word" +meta-OD = "/input move_previous_word" +meta-OF = "/input move_end_of_line" +meta-OH = "/input move_beginning_of_line" +meta-Oa = "/input history_global_previous" +meta-Ob = "/input history_global_next" +meta-Oc = "/input move_next_word" +meta-Od = "/input move_previous_word" +meta2-15~ = "/buffer -1" +meta2-17~ = "/buffer +1" +meta2-18~ = "/window -1" +meta2-19~ = "/window +1" +meta2-1;3A = "/buffer -1" +meta2-1;3B = "/buffer +1" +meta2-1;3C = "/buffer +1" +meta2-1;3D = "/buffer -1" +meta2-1;5A = "/input history_global_previous" +meta2-1;5B = "/input history_global_next" +meta2-1~ = "/input move_beginning_of_line" +meta2-20~ = "/bar scroll title * x-50%" +meta2-21~ = "/bar scroll title * x+50%" +meta2-23~ = "/bar scroll nicklist * y-100%" +meta2-24~ = "/bar scroll nicklist * y+100%" +meta2-3~ = "/input delete_next_char" +meta2-4~ = "/input move_end_of_line" +meta2-5;3~ = "/window scroll_up" +meta2-5~ = "/window page_up" +meta2-6;3~ = "/window scroll_down" +meta2-6~ = "/window page_down" +meta2-7~ = "/input move_beginning_of_line" +meta2-8~ = "/input move_end_of_line" +meta2-A = "/input history_previous" +meta2-B = "/input history_next" +meta2-C = "/input move_next_char" +meta2-D = "/input move_previous_char" +meta2-F = "/input move_end_of_line" +meta2-G = "/window page_down" +meta2-H = "/input move_beginning_of_line" +meta2-I = "/window page_up" +meta2-Z = "/input complete_previous" +meta-_ = "/input redo" +meta-a = "/input jump_smart" +meta-b = "/input move_previous_word" +meta-d = "/input delete_next_word" +meta-f = "/input move_next_word" +meta-h = "/input hotlist_clear" +meta-jmeta-l = "/input jump_last_buffer" +meta-jmeta-r = "/server raw" +meta-jmeta-s = "/server jump" +meta-j01 = "/buffer 1" +meta-j02 = "/buffer 2" +meta-j03 = "/buffer 3" +meta-j04 = "/buffer 4" +meta-j05 = "/buffer 5" +meta-j06 = "/buffer 6" +meta-j07 = "/buffer 7" +meta-j08 = "/buffer 8" +meta-j09 = "/buffer 9" +meta-j10 = "/buffer 10" +meta-j11 = "/buffer 11" +meta-j12 = "/buffer 12" +meta-j13 = "/buffer 13" +meta-j14 = "/buffer 14" +meta-j15 = "/buffer 15" +meta-j16 = "/buffer 16" +meta-j17 = "/buffer 17" +meta-j18 = "/buffer 18" +meta-j19 = "/buffer 19" +meta-j20 = "/buffer 20" +meta-j21 = "/buffer 21" +meta-j22 = "/buffer 22" +meta-j23 = "/buffer 23" +meta-j24 = "/buffer 24" +meta-j25 = "/buffer 25" +meta-j26 = "/buffer 26" +meta-j27 = "/buffer 27" +meta-j28 = "/buffer 28" +meta-j29 = "/buffer 29" +meta-j30 = "/buffer 30" +meta-j31 = "/buffer 31" +meta-j32 = "/buffer 32" +meta-j33 = "/buffer 33" +meta-j34 = "/buffer 34" +meta-j35 = "/buffer 35" +meta-j36 = "/buffer 36" +meta-j37 = "/buffer 37" +meta-j38 = "/buffer 38" +meta-j39 = "/buffer 39" +meta-j40 = "/buffer 40" +meta-j41 = "/buffer 41" +meta-j42 = "/buffer 42" +meta-j43 = "/buffer 43" +meta-j44 = "/buffer 44" +meta-j45 = "/buffer 45" +meta-j46 = "/buffer 46" +meta-j47 = "/buffer 47" +meta-j48 = "/buffer 48" +meta-j49 = "/buffer 49" +meta-j50 = "/buffer 50" +meta-j51 = "/buffer 51" +meta-j52 = "/buffer 52" +meta-j53 = "/buffer 53" +meta-j54 = "/buffer 54" +meta-j55 = "/buffer 55" +meta-j56 = "/buffer 56" +meta-j57 = "/buffer 57" +meta-j58 = "/buffer 58" +meta-j59 = "/buffer 59" +meta-j60 = "/buffer 60" +meta-j61 = "/buffer 61" +meta-j62 = "/buffer 62" +meta-j63 = "/buffer 63" +meta-j64 = "/buffer 64" +meta-j65 = "/buffer 65" +meta-j66 = "/buffer 66" +meta-j67 = "/buffer 67" +meta-j68 = "/buffer 68" +meta-j69 = "/buffer 69" +meta-j70 = "/buffer 70" +meta-j71 = "/buffer 71" +meta-j72 = "/buffer 72" +meta-j73 = "/buffer 73" +meta-j74 = "/buffer 74" +meta-j75 = "/buffer 75" +meta-j76 = "/buffer 76" +meta-j77 = "/buffer 77" +meta-j78 = "/buffer 78" +meta-j79 = "/buffer 79" +meta-j80 = "/buffer 80" +meta-j81 = "/buffer 81" +meta-j82 = "/buffer 82" +meta-j83 = "/buffer 83" +meta-j84 = "/buffer 84" +meta-j85 = "/buffer 85" +meta-j86 = "/buffer 86" +meta-j87 = "/buffer 87" +meta-j88 = "/buffer 88" +meta-j89 = "/buffer 89" +meta-j90 = "/buffer 90" +meta-j91 = "/buffer 91" +meta-j92 = "/buffer 92" +meta-j93 = "/buffer 93" +meta-j94 = "/buffer 94" +meta-j95 = "/buffer 95" +meta-j96 = "/buffer 96" +meta-j97 = "/buffer 97" +meta-j98 = "/buffer 98" +meta-j99 = "/buffer 99" +meta-k = "/input grab_key_command" +meta-n = "/window scroll_next_highlight" +meta-p = "/window scroll_previous_highlight" +meta-r = "/input delete_line" +meta-u = "/input scroll_unread" +meta-wmeta-meta2-A = "/window up" +meta-wmeta-meta2-B = "/window down" +meta-wmeta-meta2-C = "/window right" +meta-wmeta-meta2-D = "/window left" +meta-wmeta2-1;3A = "/window up" +meta-wmeta2-1;3B = "/window down" +meta-wmeta2-1;3C = "/window right" +meta-wmeta2-1;3D = "/window left" +meta-wmeta-b = "/window balance" +meta-wmeta-s = "/window swap" +meta-z = "/window zoom" +ctrl-_ = "/input undo" + +[key_search] +ctrl-J = "/input search_stop" +ctrl-M = "/input search_stop" +ctrl-R = "/input search_switch_case" +meta2-A = "/input search_previous" +meta2-B = "/input search_next" + +[key_cursor] +ctrl-J = "/cursor stop" +ctrl-M = "/cursor stop" +meta-meta2-A = "/cursor move area_up" +meta-meta2-B = "/cursor move area_down" +meta-meta2-C = "/cursor move area_right" +meta-meta2-D = "/cursor move area_left" +meta2-1;3A = "/cursor move area_up" +meta2-1;3B = "/cursor move area_down" +meta2-1;3C = "/cursor move area_right" +meta2-1;3D = "/cursor move area_left" +meta2-A = "/cursor move up" +meta2-B = "/cursor move down" +meta2-C = "/cursor move right" +meta2-D = "/cursor move left" +@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}" +@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}" +@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}" +@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop" +@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}" +@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop" +@chat:m = "hsignal:chat_quote_message;/cursor stop" +@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop" + +[key_mouse] +@bar(input):button2 = "/input grab_mouse_area" +@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%" +@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e" +@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%" +@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b" +@chat(perl.iset):button1 = "hsignal:iset_mouse" +@chat(perl.iset):button2* = "hsignal:iset_mouse" +@chat(perl.iset):wheeldown = "/repeat 5 /iset **down" +@chat(perl.iset):wheelup = "/repeat 5 /iset **up" +@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}" +@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}" +@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}" +@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}" +@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}" +@item(buffers):button1* = "hsignal:buffers_mouse" +@item(buffers):button2 = "hsignal:buffers_mouse" +@item(buffers):button2* = "hsignal:buffers_mouse" +@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%" +@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%" +@chat:button1 = "/window ${_window_number}" +@chat:button1-gesture-left = "/window ${_window_number};/buffer -1" +@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1" +@chat:button1-gesture-right = "/window ${_window_number};/buffer +1" +@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer" +@chat:wheeldown = "/window scroll_down -window ${_window_number}" +@chat:wheelup = "/window scroll_up -window ${_window_number}" +@*:button3 = "/cursor go ${_x},${_y}" -- cgit v1.2.3-54-g00ecf