-- Tabs: {{{
local settings = require "settings"
local lousy = require "lousy"
local modes = require "modes"
-- Tab number
lousy.widget.tab.label_format = "{index}: {title}"
-- Add ordering of new tabs
local taborder = require "taborder"
taborder.default = function(w)
local order = taborder.after_current (w)
return order
end
--}}}
-- Binds {{{
--[[ modes.remap_binds("normal", {
{ "", "H", true },
{ "", "L", true },
{ "", "H", true },
{ "", "L", true },
]]--})
modes.remove_binds("normal", {"d"})
modes.add_binds("normal", {
{"dd", "Close current tab.",
function(w, m)
for i=1,m.count do
w:close_tab()
end
end,
{count=1}},
{"h", "Go back in the tab history.",
function (w, m)
w:back(m.count)
end,
{count=1}},
{"l", "Go forward in the tab history.",
function (w, m)
w:forward(m.count)
end,
{count=1}},
{"H", "Shift curent tab with the previous one.", -- The default keybind for this was
function (w, m)
w.tabs:reorder(w.view, w.tabs:current() - m.count)
end,
{count=1}},
{"L", "Shift current tab with the next one.", -- The default keybind for this was
function (w, m)
w.tabs:reorder(w.view, (w.tabs:current() + m.count) % w.tabs:count())
end,
{count=1}},
{"", "Go to the previous tab.",
function (w, m)
w:prev_tab(m.count)
end,
{count=1}},
{"", "Go to the next tab.",
function (w, m)
w:next_tab(m.count)
end,
{count=1}},
{"y", "Hint all links (as defined by the follow.selectors.uri selector) and set the clipboard selection to the matched elements URI.",
function(w)
w:set_mode("follow", {
prompt = "yank",
selector = "uri",
evaluator = "uri",
func = function(uri)
assert(type(uri) == "string")
uri = uri:gsub(" ", "%%20"):gsub("^mailto:", "")
luakit.selection.clipboard = uri
w:notify("Yanked uri: " .. uri, false)
end,
})
end},
{"m", "Hint all links and open the video behind that link externally with MPV.",
function(w)
local video_cmd_fmt = "mpv '%s'"
w:set_mode("follow", {
prompt = "open with MPV",
selector = "uri",
evaluator = "uri",
func = function(uri)
assert(type(uri) == "string")
luakit.spawn(string.format(video_cmd_fmt, uri))
w:notify("Launched MPV")
end,
})
end},
{"v", "Hint all links and open the image behind that link externally with feh.",
function(w)
local video_cmd_fmt = "feh %s'"
w:set_mode("follow", {
prompt = "open with feh",
selector = "uri",
evaluator = "uri",
func = function(uri)
assert(type(uri) == "string")
luakit.spawn(string.format(video_cmd_fmt, uri))
w:notify("Launched feh")
end,
})
end},
{"", "Copy selected text.",
function()
luakit.selection.clipboard = luakit.selection.primary
end},
})
local settings = require("settings")
settings.window.home_page = "file://" .. os.getenv("HOME") .. "/.config/luakit/homepage/index.html"
local select = require "select"
local follow = require "follow"
select.label_maker = function()
local chars = charset("asdfghjkl")
return trim(sort(reverse(chars)))
end
follow.pattern_maker = follow.pattern_styles.match_label
follow.ignore_delay = 0
-- }}}
-- General configs {{{
-- Sets download dir
local downloads = require "downloads"
downloads.default_dir = os.getenv("HOME") .. "/Downloads"
-- Set search engines
local engines = settings.window.search_engines
settings.window.new_tab_page = "https://www.searx.work"
engines.default = engines.sx
engines.at = "https://alternativeto.net/browse/search/?q=%s"
engines.aw = "https://wiki.archlinux.org/index.php?search=%s"
engines.cb = "https://codeberg.org/explore/repos?tab=&sort=recentupdate&q=%s"
engines.gh = "https://github.com/search?q=%s"
engines.gp = "https://packages.gentoo.org/packages/search?q=%s"
engines.gw = "https://wiki.gentoo.org/?search=%s"
engines.gz = "https://gentoo.zugaina.org/Search?search=%s"
engines.inv = "https://vid.puffyan.us/search?q=%s"
engines.ly = "https://odysee.com/$/search?q=%s"
engines.lr = "https://libreddit.tiekoetter.com/search?q=%s"
engines.ml = "https://lista.mercadolivre.com.br/%s#D[A:%s]"
engines.olx = "https://sp.olx.com.br/?q=%s"
engines.osm = "https://www.openstreetmap.org/search?query=%s"
engines.sp = "https://www.startpage.com/do/search?q=%s&segment=startpage.brave"
engines.tt = "https://translate.tiekoetter.com/?engine=google&text=%s&sl=auto&tl=af"
engines.tw = "https://www.thinkwiki.org/w/index.php?search=%s"
engines.use = "https://unix.stackexchange.com/search?q=%s"
engines.w = "https://wikiless.tiekoetter.com/w/index.php?search=%s"
engines.wb = "http://wiby.me/?q=%s"
engines.we = "https://wikieducator.org/index.php?search=%s"
engines.yt = "https://yewtu.be/search?q=%s"
-- Set university restaurant menu
engines.cru = "https://uspdigital.usp.br/rucard/Jsp/cardapioSAS.jsp?codrtn=6"
modes.add_binds("all", {
{"xb", "Toggle statusbar",
function(w)
w.bar_layout.visible = not w.bar_layout.visible
end},
{"xt", "Toggle tablist",
function(w)
if settings.tablist.visibility == "never" then
settings.tablist.visibility = "multiple"
else
settings.tablist.visibility = "never"
end
end},
{"xx", "Toggle statusbar and tablist",
function(w)
w.bar_layout.visible = not w.bar_layout.visible
if settings.tablist.visibility == "never" then
settings.tablist.visibility = "multiple"
else
settings.tablist.visibility = "never"
end
end},
})
--}}}
-- Signals: {{{
-- Sets up notifications and link handling
local webview = require "webview"
local window = require("window")
window.add_signal("init", function(w)
w.update_sbar_visibility_old = w.update_sbar_visibility
w.update_sbar_visibility = function(w)
w:update_sbar_visibility_old()
if w.bar_layout.visible_child == w.sbar.ebox then
w.bar_layout.visible = true
end
end
end)
webview.add_signal("init", function(view)
view:add_signal("permission-request", function(v, type)
if type == "notification" then
return true
end -- Might want to check v.uri too
end)
end)
webview.add_signal("init", function (view)
view:add_signal("navigation-request", function (v, uri)
if string.match(string.lower(uri), "^magnet:") then
luakit.spawn(string.format("xdg-open \"%s\"", uri))
return false
end
end)
end)
-- vim fdm=marker
-- }}}