This commit is contained in:
parent
bca58321d4
commit
4178222332
|
@ -137,7 +137,7 @@ set_pkgs() {
|
|||
# Terminal
|
||||
pkgs+=' tmux ranger atool p7zip tree'
|
||||
pkgs+=' neofetch powerline-fonts'
|
||||
pkgs+=' lolcat cmatrix'
|
||||
pkgs+=' exa bat lolcat cmatrix'
|
||||
# extra font for ranger
|
||||
pkgs+=' otf-nerd-fonts-fira-code'
|
||||
# Network
|
||||
|
|
|
@ -6,11 +6,12 @@
|
|||
"workbench.editor.showTabs": false,
|
||||
"workbench.editor.enablePreview": false,
|
||||
"workbench.editor.enablePreviewFromQuickOpen": true,
|
||||
"breadcrumbs.enabled": false,
|
||||
"breadcrumbs.enabled": true,
|
||||
"workbench.editor.closeEmptyGroups": true,
|
||||
"workbench.editor.tabCloseButton": "off",
|
||||
"explorer.openEditors.visible": 0,
|
||||
"debug.openDebug": "openOnDebugBreak",
|
||||
"debug.console.closeOnEnd": true,
|
||||
// Don't ask
|
||||
"git.autofetch": true,
|
||||
"git.confirmSync": false,
|
||||
|
@ -297,5 +298,6 @@
|
|||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"workbench.startupEditor": "newUntitledFile",
|
||||
"workbench.colorTheme": "Community Material Theme Darker High Contrast"
|
||||
"workbench.colorTheme": "Community Material Theme Darker High Contrast",
|
||||
"mesonbuild.configureOnOpen": false
|
||||
}
|
|
@ -19,13 +19,15 @@ if test -n "$XDG_VTRN"; and test -z "$DISPLAY"
|
|||
or command -qs systemctl;and systemctl -q is-enabled ly
|
||||
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
|
||||
export GTK_CSD=0
|
||||
export LD_PRELOAD='/usr/lib/libgtk3-nocsd.so.0'
|
||||
|
||||
export XCURSOR_THEME=capitaine-cursors
|
||||
export GTK_THEME=materia-custom-accent:dark
|
||||
|
||||
# export XDG_CURRENT_DESKTOP=Unity
|
||||
export QT_WAYLAND_FORCE_DPI=physical
|
||||
export QT_SCALE_FACTOR=1.0001
|
||||
export QPA_PLATFORM=wayland
|
||||
export QT_QPA_PLATFORM=wayland
|
||||
end
|
||||
|
@ -36,6 +38,9 @@ abbr rv sudo nvim
|
|||
command -qs exa &&
|
||||
alias ls exa
|
||||
|
||||
command -qs bat &&
|
||||
alias cat bat
|
||||
|
||||
abbr gs git status
|
||||
abbr gp 'git pull; git push'
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ font_size 12
|
|||
cursor #cc5757
|
||||
background #202020
|
||||
foreground #dddddd
|
||||
# background_opacity 0.9
|
||||
background_opacity 0.98
|
||||
|
||||
|
||||
# black
|
||||
|
|
|
@ -1,102 +0,0 @@
|
|||
import urllib.request
|
||||
import sqlite3
|
||||
import random
|
||||
import string
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
|
||||
if sys.argv[1] in ["submit", "stats"]:
|
||||
if not sys.argv[8]:
|
||||
if os.path.isfile(sys.argv[7]):
|
||||
with open(sys.argv[7]) as f:
|
||||
uid = f.read()
|
||||
else:
|
||||
uid = "".join(random.choices(string.ascii_letters + string.digits, k=36))
|
||||
with open(sys.argv[7], "w") as f:
|
||||
f.write(uid)
|
||||
else:
|
||||
uid = sys.argv[8]
|
||||
|
||||
opener = urllib.request.build_opener()
|
||||
opener.addheaders = [("User-Agent", "mpv_sponsorblock/1.0 (https://github.com/po5/mpv_sponsorblock)")]
|
||||
urllib.request.install_opener(opener)
|
||||
|
||||
if sys.argv[1] == "ranges" and not sys.argv[2]:
|
||||
times = []
|
||||
try:
|
||||
response = urllib.request.urlopen(sys.argv[3] + "/api/getVideoSponsorTimes?videoID=" + sys.argv[4])
|
||||
data = json.load(response)
|
||||
for i, time in enumerate(data["sponsorTimes"]):
|
||||
times.append(str(time[0]) + "," + str(time[1]) + "," + data["UUIDs"][i])
|
||||
print(":".join(times))
|
||||
except (TimeoutError, urllib.error.URLError) as e:
|
||||
print("error")
|
||||
except urllib.error.HTTPError as e:
|
||||
if e.code == 404:
|
||||
print("")
|
||||
else:
|
||||
print("error")
|
||||
elif sys.argv[1] == "ranges":
|
||||
conn = sqlite3.connect(sys.argv[2])
|
||||
conn.row_factory = sqlite3.Row
|
||||
c = conn.cursor()
|
||||
c.execute("SELECT startTime, endTime, votes, UUID FROM sponsorTimes WHERE videoID = ? AND shadowHidden = 0 AND votes > -1", (sys.argv[4],))
|
||||
times = []
|
||||
sponsors = c.fetchall()
|
||||
best = list(sponsors)
|
||||
dealtwith = []
|
||||
similar = []
|
||||
for sponsor_a in sponsors:
|
||||
for sponsor_b in sponsors:
|
||||
if sponsor_a is not sponsor_b and sponsor_a["startTime"] >= sponsor_b["startTime"] and sponsor_a["startTime"] <= sponsor_b["endTime"]:
|
||||
similar.append([sponsor_a, sponsor_b])
|
||||
if sponsor_a in best:
|
||||
best.remove(sponsor_a)
|
||||
if sponsor_b in best:
|
||||
best.remove(sponsor_b)
|
||||
for sponsors_a in similar:
|
||||
if sponsors_a in dealtwith:
|
||||
continue
|
||||
group = set(sponsors_a)
|
||||
for sponsors_b in similar:
|
||||
if sponsors_b[0] in group or sponsors_b[1] in group:
|
||||
group.add(sponsors_b[0])
|
||||
group.add(sponsors_b[1])
|
||||
dealtwith.append(sponsors_b)
|
||||
best.append(max(group, key=lambda x:x["votes"]))
|
||||
for time in best:
|
||||
times.append(str(time["startTime"]) + "," + str(time["endTime"]) + "," + time["UUID"])
|
||||
print(":".join(times))
|
||||
elif sys.argv[1] == "update":
|
||||
try:
|
||||
urllib.request.urlretrieve(sys.argv[3] + "/database.db", sys.argv[2] + ".tmp")
|
||||
os.replace(sys.argv[2] + ".tmp", sys.argv[2])
|
||||
except PermissionError:
|
||||
print("database update failed, file currently in use", file=sys.stderr)
|
||||
exit(1)
|
||||
except ConnectionResetError:
|
||||
print("database update failed, connection reset", file=sys.stderr)
|
||||
exit(1)
|
||||
except TimeoutError:
|
||||
print("database update failed, timed out", file=sys.stderr)
|
||||
exit(1)
|
||||
except urllib.error.URLError:
|
||||
print("database update failed", file=sys.stderr)
|
||||
exit(1)
|
||||
elif sys.argv[1] == "submit":
|
||||
try:
|
||||
response = urllib.request.urlopen(sys.argv[3] + "/api/postVideoSponsorTimes?videoID=" + sys.argv[4] + "&startTime=" + sys.argv[5] + "&endTime=" + sys.argv[6] + "&userID=" + uid)
|
||||
print("success")
|
||||
except urllib.error.HTTPError as e:
|
||||
print(e.code)
|
||||
except:
|
||||
print("error")
|
||||
elif sys.argv[1] == "stats":
|
||||
try:
|
||||
if sys.argv[6]:
|
||||
urllib.request.urlopen(sys.argv[3] + "/api/viewedVideoSponsorTime?UUID=" + sys.argv[5])
|
||||
if sys.argv[9]:
|
||||
urllib.request.urlopen(sys.argv[3] + "/api/voteOnSponsorTime?UUID=" + sys.argv[5] + "&userID=" + uid + "&type=" + sys.argv[9])
|
||||
except:
|
||||
pass
|
|
@ -1 +0,0 @@
|
|||
goG8nEvCjnzh5oi4T24aecVd5XARDVcAQz0m
|
|
@ -3,18 +3,21 @@
|
|||
-- This script skips sponsored segments of YouTube videos
|
||||
-- using data from https://github.com/ajayyy/SponsorBlock
|
||||
|
||||
local ON_WINDOWS = package.config:sub(1,1) ~= '/'
|
||||
local ON_WINDOWS = package.config:sub(1,1) ~= "/"
|
||||
|
||||
local options = {
|
||||
server_address = "https://api.sponsor.ajay.app",
|
||||
server_address = "https://sponsor.ajay.app",
|
||||
|
||||
python_path = ON_WINDOWS and "python" or "python3",
|
||||
|
||||
-- Whether or not to automatically skip sponsors
|
||||
skip = true,
|
||||
|
||||
-- If true, sponsored segments will only be skipped once
|
||||
skip_once = true,
|
||||
|
||||
-- Note that sponsored segments may ocasionally be inaccurate if this is turned off
|
||||
-- see https://ajay.app/blog.html#voting-and-pseudo-randomness-or-sponsorblock-or-youtube-sponsorship-segment-blocker
|
||||
-- see https://blog.ajay.app/voting-and-pseudo-randomness-or-sponsorblock-or-youtube-sponsorship-segment-blocker
|
||||
local_database = true,
|
||||
|
||||
-- Update database on first run, does nothing if local_database is false
|
||||
|
@ -23,6 +26,9 @@ local options = {
|
|||
-- User ID used to submit sponsored segments, leave blank for random
|
||||
user_id = "",
|
||||
|
||||
-- Name to display on the stats page https://sponsor.ajay.app/stats/ leave blank to keep current name
|
||||
display_name = "",
|
||||
|
||||
-- Tell the server when a skip happens
|
||||
report_views = true,
|
||||
|
||||
|
@ -32,6 +38,9 @@ local options = {
|
|||
-- Use sponsor times from server if they're more up to date than our local database
|
||||
server_fallback = true,
|
||||
|
||||
-- Create chapters at sponsor boundaries for OSC display and manual skipping with skip=false
|
||||
make_chapters = true,
|
||||
|
||||
-- Minimum duration for sponsors (in seconds), segments under that threshold will be ignored
|
||||
min_duration = 1,
|
||||
|
||||
|
@ -67,14 +76,15 @@ if legacy then
|
|||
end
|
||||
|
||||
local utils = require "mp.utils"
|
||||
local scripts_dir = mp.find_config_file("scripts")
|
||||
local sponsorblock = utils.join_path(scripts_dir, "shared/sponsorblock.py")
|
||||
local uid_path = utils.join_path(scripts_dir, "shared/sponsorblock.txt")
|
||||
local database_file = options.local_database and utils.join_path(scripts_dir, "shared/sponsorblock.db") or ""
|
||||
scripts_dir = mp.find_config_file("scripts")
|
||||
|
||||
local sponsorblock = utils.join_path(scripts_dir, "sponsorblock_shared/sponsorblock.py")
|
||||
local uid_path = utils.join_path(scripts_dir, "sponsorblock_shared/sponsorblock.txt")
|
||||
local database_file = options.local_database and utils.join_path(scripts_dir, "sponsorblock_shared/sponsorblock.db") or ""
|
||||
local youtube_id = nil
|
||||
local ranges = {}
|
||||
local init = false
|
||||
local segment = {a = 0, b = 0, progress = 0}
|
||||
local segment = {a = 0, b = 0, progress = 0, first = true}
|
||||
local retrying = false
|
||||
local last_skip = {uuid = "", dir = nil}
|
||||
local speed_timer = nil
|
||||
|
@ -93,6 +103,29 @@ function t_count(t)
|
|||
return count
|
||||
end
|
||||
|
||||
function time_sort(a, b)
|
||||
return a.time < b.time
|
||||
end
|
||||
|
||||
function clean_chapters()
|
||||
local chapters = mp.get_property_native("chapter-list")
|
||||
local new_chapters = {}
|
||||
for _, chapter in pairs(chapters) do
|
||||
if chapter.title ~= "Preview segment start" and chapter.title ~= "Preview segment end" then
|
||||
table.insert(new_chapters, chapter)
|
||||
end
|
||||
end
|
||||
mp.set_property_native("chapter-list", new_chapters)
|
||||
end
|
||||
|
||||
function create_chapter(chapter_title, chapter_time)
|
||||
local chapters = mp.get_property_native("chapter-list")
|
||||
local duration = mp.get_property_native("duration")
|
||||
table.insert(chapters, {title=chapter_title, time=(duration == nil or duration > chapter_time) and chapter_time or duration - .001})
|
||||
table.sort(chapters, time_sort)
|
||||
mp.set_property_native("chapter-list", chapters)
|
||||
end
|
||||
|
||||
function getranges(_, exists, db, more)
|
||||
if type(exists) == "table" and exists["status"] == "1" then
|
||||
if options.server_fallback then
|
||||
|
@ -133,12 +166,18 @@ function getranges(_, exists, db, more)
|
|||
local r_count = 0
|
||||
if more then r_count = -1 end
|
||||
for t in string.gmatch(sponsors.stdout, "[^:%s]+") do
|
||||
uuid = string.match(t, '[^,]+$')
|
||||
uuid = string.match(t, "[^,]+$")
|
||||
if ranges[uuid] then
|
||||
new_ranges[uuid] = ranges[uuid]
|
||||
else
|
||||
start_time = tonumber(string.match(t, '[^,]+'))
|
||||
end_time = tonumber(string.sub(string.match(t, ',[^,]+'), 2))
|
||||
start_time = tonumber(string.match(t, "[^,]+"))
|
||||
end_time = tonumber(string.sub(string.match(t, ",[^,]+"), 2))
|
||||
for o_uuid, o_t in pairs(ranges) do
|
||||
if (start_time >= o_t.start_time and start_time <= o_t.end_time) or (o_t.start_time >= start_time and o_t.start_time <= end_time) then
|
||||
new_ranges[o_uuid] = o_t
|
||||
goto continue
|
||||
end
|
||||
end
|
||||
if end_time - start_time >= options.min_duration then
|
||||
new_ranges[uuid] = {
|
||||
start_time = start_time,
|
||||
|
@ -146,7 +185,12 @@ function getranges(_, exists, db, more)
|
|||
skipped = false
|
||||
}
|
||||
end
|
||||
if options.make_chapters then
|
||||
create_chapter("Sponsor start (" .. string.sub(uuid, 1, 6) .. ")", start_time)
|
||||
create_chapter("Sponsor end (" .. string.sub(uuid, 1, 6) .. ")", end_time)
|
||||
end
|
||||
end
|
||||
::continue::
|
||||
r_count = r_count + 1
|
||||
end
|
||||
local c_count = t_count(ranges)
|
||||
|
@ -277,7 +321,7 @@ end
|
|||
function file_loaded()
|
||||
local initialized = init
|
||||
ranges = {}
|
||||
segment = {a = 0, b = 0, progress = 0}
|
||||
segment = {a = 0, b = 0, progress = 0, first = true}
|
||||
last_skip = {uuid = "", dir = nil}
|
||||
local video_path = mp.get_property("path")
|
||||
local youtube_id1 = string.match(video_path, "https?://youtu%.be/([%a%d%-_]+).*")
|
||||
|
@ -305,7 +349,29 @@ function file_loaded()
|
|||
end
|
||||
end
|
||||
if initialized then return end
|
||||
mp.observe_property("time-pos", "native", skip_ads)
|
||||
if options.skip then
|
||||
mp.observe_property("time-pos", "native", skip_ads)
|
||||
end
|
||||
if options.display_name ~= "" then
|
||||
local args = {
|
||||
options.python_path,
|
||||
sponsorblock,
|
||||
"username",
|
||||
database_file,
|
||||
options.server_address,
|
||||
youtube_id,
|
||||
"",
|
||||
"",
|
||||
uid_path,
|
||||
options.user_id,
|
||||
options.display_name
|
||||
}
|
||||
if not legacy then
|
||||
mp.command_native_async({name = "subprocess", playback_only = false, args = args}, function () end)
|
||||
else
|
||||
utils.subprocess_detached({args = args})
|
||||
end
|
||||
end
|
||||
if not options.local_database or (not options.auto_update and file_exists(database_file)) then return end
|
||||
update()
|
||||
end
|
||||
|
@ -326,6 +392,16 @@ function set_segment()
|
|||
segment.a = pos
|
||||
mp.osd_message("[sponsorblock] segment boundary A set, press again for boundary B", 3)
|
||||
end
|
||||
if options.make_chapters and not segment.first then
|
||||
local start_time = math.min(segment.a, segment.b)
|
||||
local end_time = math.max(segment.a, segment.b)
|
||||
if end_time - start_time ~= 0 and end_time ~= 0 then
|
||||
clean_chapters()
|
||||
create_chapter("Preview segment start", start_time)
|
||||
create_chapter("Preview segment end", end_time)
|
||||
end
|
||||
end
|
||||
segment.first = false
|
||||
end
|
||||
|
||||
function submit_segment()
|
||||
|
@ -335,7 +411,7 @@ function submit_segment()
|
|||
if end_time - start_time == 0 or end_time == 0 then
|
||||
mp.osd_message("[sponsorblock] empty segment, not submitting")
|
||||
elseif segment.progress <= 1 then
|
||||
mp.osd_message(string.format("[sponsorblock] press Shift+G again to confirm: %.2d:%.2d:%.2d to %.2d:%.2d:%.2d", start_time/(60*60), start_time/60%60, start_time%60, end_time/(60*60), end_time/60%60, end_time%60), 5)
|
||||
mp.osd_message(string.format("[sponsorblock] press Shift+G again to confirm: %.2d:%.2d:%.2d to %.2d:%.2d:%.2d", math.floor(start_time/(60*60)), math.floor(start_time/60%60), math.floor(start_time%60), math.floor(end_time/(60*60)), math.floor(end_time/60%60), math.floor(end_time%60)), 5)
|
||||
segment.progress = segment.progress + 2
|
||||
else
|
||||
mp.osd_message("[sponsorblock] submitting segment...", 30)
|
||||
|
@ -358,20 +434,25 @@ function submit_segment()
|
|||
submit = utils.subprocess({args = args})
|
||||
end
|
||||
if string.match(submit.stdout, "success") then
|
||||
segment = {a = 0, b = 0, progress = 0}
|
||||
segment = {a = 0, b = 0, progress = 0, first = true}
|
||||
mp.osd_message("[sponsorblock] segment submitted")
|
||||
if options.make_chapters then
|
||||
clean_chapters()
|
||||
create_chapter("Submitted segment start", start_time)
|
||||
create_chapter("Submitted segment end", end_time)
|
||||
end
|
||||
elseif string.match(submit.stdout, "error") then
|
||||
mp.osd_message("[sponsorblock] segment submission failed, server may be down. try again", 5)
|
||||
elseif string.match(submit.stdout, "502") then
|
||||
mp.osd_message("[sponsorblock] segment submission failed, server is down. try again", 5)
|
||||
elseif string.match(submit.stdout, "400") then
|
||||
mp.osd_message("[sponsorblock] segment submission failed, impossible inputs", 5)
|
||||
segment = {a = 0, b = 0, progress = 0}
|
||||
segment = {a = 0, b = 0, progress = 0, first = true}
|
||||
elseif string.match(submit.stdout, "429") then
|
||||
mp.osd_message("[sponsorblock] segment submission failed, rate limited. try again", 5)
|
||||
elseif string.match(submit.stdout, "409") then
|
||||
mp.osd_message("[sponsorblock] segment already submitted", 3)
|
||||
segment = {a = 0, b = 0, progress = 0}
|
||||
segment = {a = 0, b = 0, progress = 0, first = true}
|
||||
else
|
||||
mp.osd_message("[sponsorblock] segment submission failed", 5)
|
||||
end
|
||||
|
@ -379,7 +460,12 @@ function submit_segment()
|
|||
end
|
||||
|
||||
mp.register_event("file-loaded", file_loaded)
|
||||
mp.add_key_binding("g", "sponsorblock_set_segment", set_segment)
|
||||
mp.add_key_binding("G", "sponsorblock_submit_segment", submit_segment)
|
||||
mp.add_key_binding("h", "sponsorblock_upvote", function() return vote("1") end)
|
||||
mp.add_key_binding("H", "sponsorblock_downvote", function() return vote("0") end)
|
||||
mp.add_key_binding("g", "set_segment", set_segment)
|
||||
mp.add_key_binding("G", "submit_segment", submit_segment)
|
||||
mp.add_key_binding("h", "upvote_segment", function() return vote("1") end)
|
||||
mp.add_key_binding("H", "downvote_segment", function() return vote("0") end)
|
||||
-- Bindings below are for backwards compatibility and could be removed at any time
|
||||
mp.add_key_binding(nil, "sponsorblock_set_segment", set_segment)
|
||||
mp.add_key_binding(nil, "sponsorblock_submit_segment", submit_segment)
|
||||
mp.add_key_binding(nil, "sponsorblock_upvote", function() return vote("1") end)
|
||||
mp.add_key_binding(nil, "sponsorblock_downvote", function() return vote("0") end)
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
"languageserver": {
|
||||
"clangd": {
|
||||
"command": "clangd",
|
||||
"rootPatterns": [
|
||||
"compile_flags.txt", "compile_commands.json"],
|
||||
"filetypes": ["c", "cc", "cpp", "c++", "objc", "objcpp"]
|
||||
},
|
||||
"vala": {
|
||||
"command": "vala-language-server",
|
||||
"filetypes": [
|
||||
"vala",
|
||||
"genie"
|
||||
]
|
||||
},
|
||||
"python": {
|
||||
"command": "python",
|
||||
"args": [
|
||||
"-mpyls",
|
||||
"-vv",
|
||||
"--log-file",
|
||||
"/tmp/lsp_python.log"
|
||||
],
|
||||
"trace.server": "verbose",
|
||||
"filetypes": [
|
||||
"python"
|
||||
],
|
||||
"settings": {
|
||||
"pyls": {
|
||||
"enable": true,
|
||||
"trace": {
|
||||
"server": "verbose"
|
||||
},
|
||||
"commandPath": "",
|
||||
"configurationSources": [
|
||||
"pycodestyle"
|
||||
],
|
||||
"plugins": {
|
||||
"pyls_mypy": {
|
||||
"enabled": true,
|
||||
"live_mode": false
|
||||
},
|
||||
"jedi_completion": {
|
||||
"enabled": true
|
||||
},
|
||||
"jedi_hover": {
|
||||
"enabled": true
|
||||
},
|
||||
"jedi_references": {
|
||||
"enabled": true
|
||||
},
|
||||
"jedi_signature_help": {
|
||||
"enabled": true
|
||||
},
|
||||
"jedi_symbols": {
|
||||
"enabled": true,
|
||||
"all_scopes": true
|
||||
},
|
||||
"mccabe": {
|
||||
"enabled": true,
|
||||
"threshold": 15
|
||||
},
|
||||
"preload": {
|
||||
"enabled": true
|
||||
},
|
||||
"pycodestyle": {
|
||||
"enabled": true
|
||||
},
|
||||
"pydocstyle": {
|
||||
"enabled": false,
|
||||
"match": "(?!test_).*\\.py",
|
||||
"matchDir": "[^\\.].*"
|
||||
},
|
||||
"pyflakes": {
|
||||
"enabled": true
|
||||
},
|
||||
"rope_completion": {
|
||||
"enabled": true
|
||||
},
|
||||
"yapf": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -20,6 +20,8 @@
|
|||
|
||||
call plug#begin('~/.config/nvim/plugged')
|
||||
|
||||
Plug 'arrufat/vala.vim'
|
||||
Plug 'NLKNguyen/c-syntax.vim'
|
||||
Plug 'airblade/vim-gitgutter'
|
||||
Plug 'chrisbra/Colorizer'
|
||||
|
||||
|
@ -29,7 +31,7 @@
|
|||
"
|
||||
" Plug 'sheerun/vim-polyglot'
|
||||
" Plug 'dense-analysis/ale'
|
||||
" Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||
" Plug 'davidhalter/jedi-vim'
|
||||
|
||||
" Plug 'autozimu/LanguageClient-neovim', {
|
||||
|
@ -166,23 +168,23 @@ call plug#end()
|
|||
" noremap h h "h keeps it's meaning
|
||||
|
||||
" Dvorak it!
|
||||
no h h
|
||||
no t j
|
||||
no n k
|
||||
no s l
|
||||
noremap h h
|
||||
noremap t j
|
||||
noremap n k
|
||||
noremap s l
|
||||
" no s :
|
||||
" no S :
|
||||
no j d
|
||||
no l n
|
||||
no L N
|
||||
noremap j d
|
||||
noremap l n
|
||||
noremap L N
|
||||
" Added benefits
|
||||
no - $
|
||||
no _ ^
|
||||
no N <C-w><C-w>
|
||||
no T <C-w><C-r>
|
||||
no H 8<Down>
|
||||
no T 8<Up>
|
||||
no D <C-w><C-r>
|
||||
noremap - $
|
||||
noremap _ ^
|
||||
noremap N <C-w><C-w>
|
||||
noremap T <C-w><C-r>
|
||||
noremap H 8<Down>
|
||||
noremap T 8<Up>
|
||||
noremap D <C-w><C-r>
|
||||
|
||||
" Easy comment toggle
|
||||
nmap <silent> gc :Commentary<CR>
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
map h scroll left
|
||||
map t scroll down
|
||||
map n scroll up
|
||||
map s scroll right
|
||||
|
||||
map l search forward
|
||||
|
||||
map i set recolor
|
||||
|
||||
set recolor
|
||||
set recolor-keephue
|
||||
set recolor-lightcolor "#202020"
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# Aliases for commands. The keys of the given dictionary are the
|
||||
# aliases, while the values are the commands they map to.
|
||||
# Type: Dict
|
||||
c.aliases = {'q': 'close', 'qa': 'quit', 'w': 'session-save', 'wq': 'quit --save', 'wqa': 'quit --save'}
|
||||
c.aliases = {'q': 'close', 'qa': 'quit', 'w': 'session-save', 'wq': 'quit --save', 'wqa': 'quit --save', 'cw': 'config-write-py -f'}
|
||||
|
||||
# Load a restored tab as soon as it takes focus.
|
||||
# Type: Bool
|
||||
|
@ -19,6 +19,36 @@ c.session.lazy_restore = True
|
|||
# Type: Bool
|
||||
c.auto_save.session = True
|
||||
|
||||
# Which cookies to accept. With QtWebEngine, this setting also controls
|
||||
# other features with tracking capabilities similar to those of cookies;
|
||||
# including IndexedDB, DOM storage, filesystem API, service workers, and
|
||||
# AppCache. Note that with QtWebKit, only `all` and `never` are
|
||||
# supported as per-domain values. Setting `no-3rdparty` or `no-
|
||||
# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
|
||||
# `all`.
|
||||
# Type: String
|
||||
# Valid values:
|
||||
# - all: Accept all cookies.
|
||||
# - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
|
||||
# - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
|
||||
# - never: Don't accept cookies at all.
|
||||
config.set('content.cookies.accept', 'all', 'chrome-devtools://*')
|
||||
|
||||
# Which cookies to accept. With QtWebEngine, this setting also controls
|
||||
# other features with tracking capabilities similar to those of cookies;
|
||||
# including IndexedDB, DOM storage, filesystem API, service workers, and
|
||||
# AppCache. Note that with QtWebKit, only `all` and `never` are
|
||||
# supported as per-domain values. Setting `no-3rdparty` or `no-
|
||||
# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
|
||||
# `all`.
|
||||
# Type: String
|
||||
# Valid values:
|
||||
# - all: Accept all cookies.
|
||||
# - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
|
||||
# - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
|
||||
# - never: Don't accept cookies at all.
|
||||
config.set('content.cookies.accept', 'all', 'devtools://*')
|
||||
|
||||
# User agent to send. The following placeholders are defined: *
|
||||
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
||||
# The underlying WebKit version (set to a fixed value with
|
||||
|
@ -89,6 +119,20 @@ config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/53
|
|||
# Type: FormatString
|
||||
config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0', 'https://docs.google.com/*')
|
||||
|
||||
# User agent to send. The following placeholders are defined: *
|
||||
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
||||
# The underlying WebKit version (set to a fixed value with
|
||||
# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
|
||||
# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
|
||||
# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
|
||||
# QtWebEngine. * `{upstream_browser_version}`: The corresponding
|
||||
# Safari/Chrome version. * `{qutebrowser_version}`: The currently
|
||||
# running qutebrowser version. The default value is equal to the
|
||||
# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
|
||||
# read from JavaScript is always the global value.
|
||||
# Type: FormatString
|
||||
config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0', 'https://drive.google.com/*')
|
||||
|
||||
# Load images automatically in web pages.
|
||||
# Type: Bool
|
||||
config.set('content.images', True, 'chrome-devtools://*')
|
||||
|
@ -117,6 +161,14 @@ config.set('content.javascript.enabled', True, 'chrome://*/*')
|
|||
# Type: Bool
|
||||
config.set('content.javascript.enabled', True, 'qute://*/*')
|
||||
|
||||
# Allow websites to record audio/video.
|
||||
# Type: BoolAsk
|
||||
# Valid values:
|
||||
# - true
|
||||
# - false
|
||||
# - ask
|
||||
config.set('content.media_capture', True, 'https://ca.bbcollab.com')
|
||||
|
||||
# Allow websites to show notifications.
|
||||
# Type: BoolAsk
|
||||
# Valid values:
|
||||
|
@ -133,6 +185,44 @@ config.set('content.notifications', False, 'https://www.1337x.to')
|
|||
# - ask
|
||||
config.set('content.notifications', True, 'https://www.reddit.com')
|
||||
|
||||
# Allow websites to show notifications.
|
||||
# Type: BoolAsk
|
||||
# Valid values:
|
||||
# - true
|
||||
# - false
|
||||
# - ask
|
||||
config.set('content.notifications', True, 'https://dev.lemmy.ml')
|
||||
|
||||
# Allow websites to show notifications.
|
||||
# Type: BoolAsk
|
||||
# Valid values:
|
||||
# - true
|
||||
# - false
|
||||
# - ask
|
||||
config.set('content.notifications', False, 'https://www.duolingo.com')
|
||||
|
||||
# Allow websites to show notifications.
|
||||
# Type: BoolAsk
|
||||
# Valid values:
|
||||
# - true
|
||||
# - false
|
||||
# - ask
|
||||
config.set('content.notifications', False, 'https://www.jornalcontabil.com.br')
|
||||
|
||||
# Proxy to use. In addition to the listed values, you can use a
|
||||
# `socks://...` or `http://...` URL.
|
||||
# Type: Proxy
|
||||
# Valid values:
|
||||
# - system: Use the system wide proxy.
|
||||
# - none: Don't use any proxy
|
||||
c.content.proxy = 'system'
|
||||
|
||||
# Automatically mute tabs. Note that if the `:tab-mute` command is used,
|
||||
# the mute status for the affected tab is now controlled manually, and
|
||||
# this setting doesn't have any effect.
|
||||
# Type: Bool
|
||||
c.content.mute = True
|
||||
|
||||
# Shrink the completion to be smaller than the configured size if there
|
||||
# are no scrollbars.
|
||||
# Type: Bool
|
||||
|
@ -155,13 +245,36 @@ c.scrolling.smooth = True
|
|||
# Type: Bool
|
||||
c.statusbar.hide = False
|
||||
|
||||
# Position of the status bar.
|
||||
# Type: VerticalPosition
|
||||
# Valid values:
|
||||
# - top
|
||||
# - bottom
|
||||
c.statusbar.position = 'top'
|
||||
|
||||
# List of widgets displayed in the statusbar.
|
||||
# Type: List of String
|
||||
# Valid values:
|
||||
# - url: Current page URL.
|
||||
# - scroll: Percentage of the current page position like `10%`.
|
||||
# - scroll_raw: Raw percentage of the current page position like `10`.
|
||||
# - history: Display an arrow when possible to go back/forward in history.
|
||||
# - tabs: Current active tab, e.g. `2`.
|
||||
# - keypress: Display pressed keys when composing a vi command.
|
||||
# - progress: Progress bar for the current page loading.
|
||||
c.statusbar.widgets = ['keypress', 'url', 'scroll', 'history', 'tabs']
|
||||
|
||||
# Open new tabs (middleclick/ctrl+click) in the background.
|
||||
# Type: Bool
|
||||
c.tabs.background = False
|
||||
|
||||
# When to show favicons in the tab bar.
|
||||
# Type: String
|
||||
# Valid values:
|
||||
# - always: Always show favicons.
|
||||
# - never: Always hide favicons.
|
||||
# - pinned: Show favicons only on pinned tabs.
|
||||
c.tabs.favicons.show = 'never'
|
||||
c.tabs.favicons.show = 'always'
|
||||
|
||||
# How to behave when the last tab is closed.
|
||||
# Type: String
|
||||
|
@ -171,7 +284,15 @@ c.tabs.favicons.show = 'never'
|
|||
# - startpage: Load the start page.
|
||||
# - default-page: Load the default page.
|
||||
# - close: Close the window.
|
||||
c.tabs.last_close = 'close'
|
||||
c.tabs.last_close = 'startpage'
|
||||
|
||||
# Which tab to select when the focused tab is removed.
|
||||
# Type: SelectOnRemove
|
||||
# Valid values:
|
||||
# - prev: Select the tab which came before the closed one (left in horizontal, above in vertical).
|
||||
# - next: Select the tab which came after the closed one (right in horizontal, below in vertical).
|
||||
# - last-used: Select the previously selected tab.
|
||||
c.tabs.select_on_remove = 'last-used'
|
||||
|
||||
# When to show the tab bar.
|
||||
# Type: String
|
||||
|
@ -205,6 +326,35 @@ c.tabs.title.format = '{current_title}'
|
|||
# Type: Int
|
||||
c.tabs.indicator.width = 0
|
||||
|
||||
# Page to open if :open -t/-b/-w is used without URL. Use `about:blank`
|
||||
# for a blank page.
|
||||
# Type: FuzzyUrl
|
||||
c.url.default_page = 'https://search.disroot.org'
|
||||
|
||||
# Search engines which can be used via the address bar. Maps a search
|
||||
# engine name (such as `DEFAULT`, or `ddg`) to a URL with a `{}`
|
||||
# placeholder. The placeholder will be replaced by the search term, use
|
||||
# `{{` and `}}` for literal `{`/`}` braces. The following further
|
||||
# placeholds are defined to configure how special characters in the
|
||||
# search terms are replaced by safe characters (called 'quoting'): *
|
||||
# `{}` and `{semiquoted}` quote everything except slashes; this is the
|
||||
# most sensible choice for almost all search engines (for the search
|
||||
# term `slash/and&` this placeholder expands to `slash/and%26amp`).
|
||||
# * `{quoted}` quotes all characters (for `slash/and&` this
|
||||
# placeholder expands to `slash%2Fand%26amp`). * `{unquoted}` quotes
|
||||
# nothing (for `slash/and&` this placeholder expands to
|
||||
# `slash/and&`). The search engine named `DEFAULT` is used when
|
||||
# `url.auto_search` is turned on and something else than a URL was
|
||||
# entered to be opened. Other search engines can be used by prepending
|
||||
# the search engine name to the search term, e.g. `:open google
|
||||
# qutebrowser`.
|
||||
# Type: Dict
|
||||
c.url.searchengines = {'DEFAULT': 'search.disroot.org?q={}', '!aw': 'wiki.archlinux.org?search={}', '!w': 'pt.wikipedia.org/w?search={}'}
|
||||
|
||||
# Page(s) to open at the start.
|
||||
# Type: List of FuzzyUrl, or FuzzyUrl
|
||||
c.url.start_pages = 'https://search.disroot.org'
|
||||
|
||||
# Background color of the completion widget for odd rows.
|
||||
# Type: QssColor
|
||||
c.colors.completion.odd.bg = '#202020'
|
||||
|
@ -278,6 +428,14 @@ c.colors.statusbar.normal.fg = 'gray'
|
|||
# Type: QssColor
|
||||
c.colors.statusbar.normal.bg = '#202020'
|
||||
|
||||
# Foreground color of the statusbar in insert mode.
|
||||
# Type: QssColor
|
||||
c.colors.statusbar.insert.fg = '#aaffaa'
|
||||
|
||||
# Background color of the statusbar in insert mode.
|
||||
# Type: QssColor
|
||||
c.colors.statusbar.insert.bg = '#202020'
|
||||
|
||||
# Background color of the statusbar in command mode.
|
||||
# Type: QssColor
|
||||
c.colors.statusbar.command.bg = '#202020'
|
||||
|
@ -289,7 +447,7 @@ c.colors.statusbar.caret.selection.bg = '#D9534F'
|
|||
# Foreground color of the URL in the statusbar on successful load
|
||||
# (https).
|
||||
# Type: QssColor
|
||||
c.colors.statusbar.url.success.https.fg = 'gray'
|
||||
c.colors.statusbar.url.success.https.fg = 'white'
|
||||
|
||||
# Background color of the tab bar.
|
||||
# Type: QssColor
|
||||
|
@ -378,20 +536,20 @@ c.fonts.tabs = '14px Inter'
|
|||
# Bindings for normal mode
|
||||
config.bind(',m', 'spawn --userscript view_in_mpv')
|
||||
config.bind(',r', 'spawn --userscript readability')
|
||||
config.bind(';e', "hint links spawn deemix '{hint-url}'")
|
||||
config.bind(';m', 'hint links spawn mpv --fs {hint-url}')
|
||||
|
||||
config.bind('E', 'hint all tab')
|
||||
config.bind('H', 'back')
|
||||
config.bind('L', 'search-prev')
|
||||
config.bind('N', 'tab-next')
|
||||
config.bind('S', 'forward')
|
||||
config.bind('T', 'tab-prev')
|
||||
|
||||
config.bind('n', 'scroll up')
|
||||
config.bind('t', 'scroll down')
|
||||
config.bind('h', 'scroll left')
|
||||
config.bind('s', 'scroll right')
|
||||
|
||||
config.bind('e', 'hint all')
|
||||
config.bind('E', 'hint all tab')
|
||||
config.bind('h', 'scroll left')
|
||||
config.bind('l', 'search-next')
|
||||
config.bind('n', 'scroll up')
|
||||
config.bind('s', 'scroll right')
|
||||
config.bind('t', 'scroll down')
|
||||
|
||||
# Bindings for insert mode
|
||||
config.bind('<Ctrl+i>', 'spawn --userscript qute-keepass -p ~/Documentos/senhas/Senhas.kdbx', mode='insert')
|
||||
|
|
|
@ -341,7 +341,7 @@ map i display_file
|
|||
map ? help
|
||||
map W display_log
|
||||
map w taskview_open
|
||||
map S shell $SHELL
|
||||
map X shell $SHELL
|
||||
|
||||
map : console
|
||||
map ; console
|
||||
|
@ -399,23 +399,23 @@ map <CR> move right=1
|
|||
map <INSERT> console touch%space
|
||||
|
||||
# VIM-like
|
||||
copymap <UP> k
|
||||
copymap <DOWN> j
|
||||
copymap <UP> n
|
||||
copymap <DOWN> t
|
||||
copymap <LEFT> h
|
||||
copymap <RIGHT> l
|
||||
copymap <RIGHT> s
|
||||
copymap <HOME> gg
|
||||
copymap <END> G
|
||||
copymap <PAGEDOWN> <C-F>
|
||||
copymap <PAGEUP> <C-B>
|
||||
|
||||
map J move down=0.5 pages=True
|
||||
map K move up=0.5 pages=True
|
||||
copymap J <C-D>
|
||||
copymap K <C-U>
|
||||
map T move down=0.5 pages=True
|
||||
map N move up=0.5 pages=True
|
||||
copymap T <C-D>
|
||||
copymap N <C-U>
|
||||
|
||||
# Jumping around
|
||||
map H history_go -1
|
||||
map L history_go 1
|
||||
map S history_go 1
|
||||
map ] move_parent 1
|
||||
map [ move_parent -1
|
||||
map } traverse
|
||||
|
@ -492,8 +492,8 @@ map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
|
|||
|
||||
# Searching
|
||||
map / console search%space
|
||||
map n search_next
|
||||
map N search_next forward=False
|
||||
map l search_next
|
||||
map L search_next forward=False
|
||||
map ct search_next order=tag
|
||||
map cs search_next order=size
|
||||
map ci search_next order=mimetype
|
||||
|
@ -674,15 +674,15 @@ pmap <pageup> pager_move up=1.0 pages=True
|
|||
pmap <C-d> pager_move down=0.5 pages=True
|
||||
pmap <C-u> pager_move up=0.5 pages=True
|
||||
|
||||
copypmap <UP> k <C-p>
|
||||
copypmap <DOWN> j <C-n> <CR>
|
||||
copypmap <UP> n <C-p>
|
||||
copypmap <DOWN> t <C-n> <CR>
|
||||
copypmap <LEFT> h
|
||||
copypmap <RIGHT> l
|
||||
copypmap <RIGHT> s
|
||||
copypmap <HOME> g
|
||||
copypmap <END> G
|
||||
copypmap <C-d> d
|
||||
copypmap <C-u> u
|
||||
copypmap <PAGEDOWN> n f <C-F> <Space>
|
||||
copypmap <PAGEDOWN> l f <C-F> <Space>
|
||||
copypmap <PAGEUP> p b <C-B>
|
||||
|
||||
# Basic
|
||||
|
@ -705,8 +705,8 @@ tmap <pageup> taskview_move up=1.0 pages=True
|
|||
tmap <C-d> taskview_move down=0.5 pages=True
|
||||
tmap <C-u> taskview_move up=0.5 pages=True
|
||||
|
||||
copytmap <UP> k <C-p>
|
||||
copytmap <DOWN> j <C-n> <CR>
|
||||
copytmap <UP> n <C-p>
|
||||
copytmap <DOWN> t <C-n> <CR>
|
||||
copytmap <HOME> g
|
||||
copytmap <END> G
|
||||
copytmap <C-u> u
|
||||
|
@ -714,8 +714,8 @@ copytmap <PAGEDOWN> n f <C-F> <Space>
|
|||
copytmap <PAGEUP> p b <C-B>
|
||||
|
||||
# Changing priority and deleting tasks
|
||||
tmap J eval -q fm.ui.taskview.task_move(-1)
|
||||
tmap K eval -q fm.ui.taskview.task_move(0)
|
||||
tmap T eval -q fm.ui.taskview.task_move(-1)
|
||||
tmap N eval -q fm.ui.taskview.task_move(0)
|
||||
tmap dd eval -q fm.ui.taskview.task_remove()
|
||||
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
|
||||
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
#!/bin/fish
|
||||
|
||||
command -qs wofi &&
|
||||
exec wofi --show drun --allow-images --prompt 'Iniciar: '
|
||||
command -qs bmenu &&
|
||||
exec bmenu run
|
||||
command -qs bmenu && exec bmenu run
|
||||
command -qs wofi && exec wofi --show drun --allow-images --no-actions --prompt 'Iniciar: '
|
||||
|
|
|
@ -16,7 +16,8 @@ geometry(){
|
|||
}
|
||||
|
||||
{
|
||||
if [ "$1" == "stop" ]; then
|
||||
if pgrep wf-recorder > /dev/null && pgrep ffplay > /dev/null
|
||||
then
|
||||
if pgrep ffplay > /dev/null; then
|
||||
pkill ffplay > /dev/null
|
||||
fi
|
||||
|
@ -24,24 +25,21 @@ if [ "$1" == "stop" ]; then
|
|||
pkill wf-recorder > /dev/null
|
||||
fi
|
||||
notify-send -t 2000 "Wayland recording has been stopped"
|
||||
elif [ "$1" == "is-recording" ]; then
|
||||
if pgrep wf-recorder > /dev/null && pgrep ffplay > /dev/null; then
|
||||
notify-send -t 2000 "Wayland recording is up"
|
||||
else
|
||||
notify-send -t 2000 "No Wayland recording"
|
||||
fi
|
||||
else
|
||||
if ! pgrep wf-recorder > /dev/null; then
|
||||
geometry=$(geometry) || exit $?
|
||||
wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2 --geometry="$geometry" &
|
||||
fi
|
||||
if ! pgrep ffplay; then
|
||||
swaymsg assign [class=ffplay] workspace 11
|
||||
|
||||
unset SDL_VIDEODRIVER
|
||||
ffplay /dev/video2 &
|
||||
ffplay /dev/video2 -fflags nobuffer &
|
||||
sleep 0.5
|
||||
# a hack so FPS is not dropping
|
||||
swaymsg [class=ffplay] move position 1915 1050
|
||||
swaymsg focus tiling
|
||||
swaymsg [class=ffplay] floating enable
|
||||
# swaymsg [class=ffplay] move position 1900 1000
|
||||
# swaymsg focus tiling
|
||||
fi
|
||||
notify-send -t 2000 "Wayland recording has been started"
|
||||
fi
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/fish
|
||||
|
||||
command -qs bmenu &&
|
||||
exec bmenu $argv
|
||||
command -qs wofi &&
|
||||
exec wofi -d $argv
|
||||
command -qs bmenu &&
|
||||
exec bemenu $argv
|
||||
|
|
|
@ -12,9 +12,10 @@ end
|
|||
|
||||
qemu-system-x86_64 \
|
||||
-enable-kvm \
|
||||
-m 4G \
|
||||
-m 2G \
|
||||
-cpu host \
|
||||
-smp (nproc) \
|
||||
-display sdl,gl=on \
|
||||
-vga qxl \
|
||||
-audiodev pa,id=pa \
|
||||
-drive file="$HOME/.local/share/windows10.img",format=raw
|
||||
|
|
|
@ -27,6 +27,7 @@ password=$( pass show "$entry" 2>/dev/null | head -n 1 )
|
|||
|
||||
action=$(echo -e "Autotype\nUsername -> $username\nPassword" | wdmenu -p Action)
|
||||
|
||||
sleep 1s
|
||||
swaymsg input \* xkb_layout 'us'
|
||||
|
||||
case $action in
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 368 KiB |
|
@ -28,9 +28,9 @@
|
|||
# }}}
|
||||
# Output configuration {{{
|
||||
#
|
||||
output * bg '#252525' solid_color
|
||||
# output * bg '#252525' solid_color
|
||||
# output * bg /usr/share/backgrounds/gnome/adwaita-night.jpg fill
|
||||
# output * bg ~/.teclado-dvorak-br.png fit
|
||||
output * bg ~/.config/sway/assembly.png fit
|
||||
# Output HDMI-A-1 resolution 1280x720
|
||||
|
||||
# Disable laptop screen if closed, --reload is important
|
||||
|
@ -158,8 +158,6 @@
|
|||
# Assign programs to their workspace
|
||||
assign [app_id=qutebrowser] workspace 2
|
||||
assign [class=qutebrowser] workspace 2
|
||||
assign [app_id=keepass.*] workspace 8
|
||||
assign [class=KeePass.*] workspace 8
|
||||
assign [class=Steam] workspace 9
|
||||
|
||||
assign [app_id=telegramdesktop] workspace 10
|
||||
|
@ -275,8 +273,8 @@
|
|||
default_border pixel 2px
|
||||
gaps inner 5px
|
||||
|
||||
# smart_gaps on
|
||||
# smart_borders on
|
||||
smart_gaps on
|
||||
smart_borders on
|
||||
|
||||
# for_window [app_id=mpv] floating enable
|
||||
for_window [app_id=weather] floating enable
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
"1": "",
|
||||
"2": "",
|
||||
"3": "",
|
||||
"8": "",
|
||||
"9": "",
|
||||
"10": "",
|
||||
"urgent": "",
|
||||
|
@ -63,14 +62,14 @@
|
|||
"tooltip":false
|
||||
},
|
||||
"battery": {
|
||||
"tooltip":false,
|
||||
"tooltip":true,
|
||||
"states": {
|
||||
"full":100,
|
||||
"good": 95,
|
||||
"warning": 25
|
||||
},
|
||||
"format": "{icon}",
|
||||
"format-charging": "",
|
||||
"format-charging": "",
|
||||
"format-plugged": "",
|
||||
"format-full": "",
|
||||
"format-warning":"{icon} {time}",
|
||||
|
@ -78,12 +77,12 @@
|
|||
},
|
||||
"network": {
|
||||
"tooltip":false,
|
||||
"on-click": "termite -e nmtui",
|
||||
"on-click": "terminal nmtui",
|
||||
"format-wifi": "{icon}",
|
||||
"format-icons":[ "", "", "", "", "" ],
|
||||
"format-ethernet": "",
|
||||
"format-linked": "",
|
||||
"format-disconnected": "⚠"
|
||||
"format-ethernet": "",
|
||||
"format-linked": "",
|
||||
"format-disconnected": ""
|
||||
},
|
||||
"pulseaudio": {
|
||||
"tooltip":false,
|
||||
|
|
Reference in New Issue