-- 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 -- }}}