inital commit
This commit is contained in:
commit
46d9d9eb4c
12
.config/X11/Xresources
Normal file
12
.config/X11/Xresources
Normal file
@ -0,0 +1,12 @@
|
||||
*.dpi: 160
|
||||
Xft.autohint: 0
|
||||
Xft.lcdfilter: lcddefault
|
||||
Xft.hintstyle: hintfull
|
||||
Xft.hinting: 1
|
||||
Xft.antialias: 1
|
||||
Xft.rgba: rgb
|
||||
|
||||
Sxiv.background: black
|
||||
Sxiv.foreground: white
|
||||
Sxiv.font: Monospace-10
|
||||
Sxiv.text_color: blue
|
14
.config/X11/xinitrc
Normal file
14
.config/X11/xinitrc
Normal file
@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
xrdb -merge ~/.Xresources
|
||||
[ -f "$HOME/.xprofile" ] && . ~/.xprofile
|
||||
#xrdb -merge ~/.Xresources
|
||||
wal -n -i ~/.config/wall.png -b '#000000'
|
||||
while true; do
|
||||
# Log stderror to a file
|
||||
#dwm 2> ~/.dwm.log
|
||||
# No error logging
|
||||
dwm >/dev/null 2>&1
|
||||
done
|
||||
#exec i3
|
||||
#exec bspwm
|
65
.config/aliasrc
Normal file
65
.config/aliasrc
Normal file
@ -0,0 +1,65 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Use neovim for vim if present.
|
||||
command -v nvim >/dev/null && alias vim="nvim" vimdiff="nvim -d"
|
||||
|
||||
# Verbosity and settings that you pretty much just always are going to want.
|
||||
alias \
|
||||
bat="cat /sys/class/power_supply/BAT?/capacity" \
|
||||
cp="cp -iv" \
|
||||
mv="mv -iv" \
|
||||
rm="rm -v" \
|
||||
mkd="mkdir -pv" \
|
||||
yt="youtube-dl --add-metadata -i" \
|
||||
yta="yt -x -f bestaudio/best" \
|
||||
ffmpeg="ffmpeg -hide_banner"
|
||||
|
||||
# Colorize commands when possible.
|
||||
alias \
|
||||
ls="ls -hN --color=auto --group-directories-first" \
|
||||
grep="grep --color=auto" \
|
||||
diff="diff --color=auto" \
|
||||
ccat="highlight --out-format=ansi"
|
||||
|
||||
# These common commands are just too long! Abbreviate them.
|
||||
alias \
|
||||
ka="killall" \
|
||||
g="git" \
|
||||
trem="transmission-remote" \
|
||||
YT="youtube-viewer" \
|
||||
sdn="sudo shutdown -h now" \
|
||||
f="$FILE" \
|
||||
e="$EDITOR" \
|
||||
v="$EDITOR" \
|
||||
p="sudo pacman" \
|
||||
xi="sudo xbps-install" \
|
||||
xr="sudo xbps-remove -R" \
|
||||
xq="xbps-query" \
|
||||
z="zathura"\
|
||||
q="exit"\
|
||||
dunstpause="notify-send 'dunst' 'Pausing dunst...'; sleep 2; notify-send 'DUNST_COMMAND_PAUSE'"\
|
||||
dunstresume="notify-send 'dunst' 'Resuming dunst...' && notify-send 'DUNST_COMMAND_RESUME'"\
|
||||
glog="git log --all --graph --decorate"\
|
||||
clog="config log --all --graph --decorate"\
|
||||
cam="mpv --demuxer-lavf-format=video4linux2 --demuxer-lavf-o-set=input_format=mjpeg av://v4l2:/dev/video0"\
|
||||
createvocabhtml="awk -F '\t' '{print \"<div class='word'><b>\"$2\"</b></div><div class='part_of_speech'>\"$4\"</div>\t <div class='meaning'><b>\"$3\"</b></div><div class='explanation'>\"$5\"</div><div class='example'>\"$6\"</div><div class='bottom'>no. \"$1\", \"$7\", \"$8\"</div>\"}'"
|
||||
|
||||
|
||||
# Some other stuff
|
||||
alias \
|
||||
magit="nvim -c MagitOnly" \
|
||||
ref="shortcuts >/dev/null; source ${XDG_CONFIG_HOME:-$HOME/.config}/shortcutrc ; source ${XDG_CONFIG_HOME:-$HOME/.config}/zshnameddirrc" \
|
||||
weath="less -S ${XDG_DATA_HOME:-$HOME/.local/share}/weatherreport" \
|
||||
tmux="tmux -f ${XDG_CONFIG_HOME:-$HOME/.config}/tmux/tmux.conf"\
|
||||
cast="mkchromecast --video --control -i"\
|
||||
castaudio="mkchromecast --control --screencast"
|
||||
#gpg="gpg --homedir=$GNUPGHOME"
|
||||
|
||||
# Some useful functions
|
||||
vf() { fzf | xargs -r -I % $EDITOR % ;}
|
||||
# [ -z $video ] || ( mpv "$video" & disown ) ;}
|
||||
vpdf() { pdf="$( ls -t $HOME/.cache/luakit/viewpdf/ | fzf -e )"
|
||||
[ -z $pdf ] || ( $READER "$HOME/.cache/luakit/viewpdf/$pdf" & disown ) ;}
|
||||
epdf() { pdf="$(du -a --time ETH/ | awk '!($1="")' | sort -r | grep '\.pdf' | awk '!($1="")' | awk '!($1="")' | sed 's/^ //' | fzf -e )"
|
||||
[ -z $pdf ] || ( $READER "$pdf" & ) ;}
|
||||
alias config='/usr/bin/git --git-dir=/home/alex/.local/share/git_dotfiles --work-tree=/home/alex'
|
21
.config/alsa/asoundrc
Normal file
21
.config/alsa/asoundrc
Normal file
@ -0,0 +1,21 @@
|
||||
# Find and use input "Microphone" for input
|
||||
pcm.usb
|
||||
{
|
||||
type hw
|
||||
card Microphone
|
||||
}
|
||||
pcm.!default
|
||||
{
|
||||
type asym
|
||||
playback.pcm
|
||||
{
|
||||
# Use the dmix plug to allow multiple outputs.
|
||||
type plug
|
||||
slave.pcm "dmix"
|
||||
}
|
||||
capture.pcm
|
||||
{
|
||||
type plug
|
||||
slave.pcm "usb"
|
||||
}
|
||||
}
|
1
.config/calcurse/.calcurse.pid
Normal file
1
.config/calcurse/.calcurse.pid
Normal file
@ -0,0 +1 @@
|
||||
6827
|
32
.config/calcurse/conf
Normal file
32
.config/calcurse/conf
Normal file
@ -0,0 +1,32 @@
|
||||
appearance.calendarview=monthly
|
||||
appearance.compactpanels=no
|
||||
appearance.defaultpanel=calendar
|
||||
appearance.layout=1
|
||||
appearance.headerline=yes
|
||||
appearance.eventseparator=yes
|
||||
appearance.dayseparator=yes
|
||||
appearance.emptyline=yes
|
||||
appearance.notifybar=yes
|
||||
appearance.sidebarwidth=0
|
||||
appearance.theme=default on default
|
||||
appearance.todoview=hide-completed
|
||||
appearance.headingpos=right-justified
|
||||
daemon.enable=yes
|
||||
daemon.log=no
|
||||
format.inputdate=1
|
||||
format.notifydate=%a %F
|
||||
format.notifytime=%T
|
||||
format.outputdate=%D
|
||||
format.dayheading=%B %e, %Y
|
||||
general.autogc=no
|
||||
general.autosave=yes
|
||||
general.confirmdelete=yes
|
||||
general.confirmquit=yes
|
||||
general.firstdayofweek=monday
|
||||
general.multipledays=yes
|
||||
general.periodicsave=1
|
||||
general.systemevents=yes
|
||||
general.systemdialogs=yes
|
||||
notification.command=printf '\a'
|
||||
notification.notifyall=all
|
||||
notification.warning=300
|
55
.config/calcurse/keys
Normal file
55
.config/calcurse/keys
Normal file
@ -0,0 +1,55 @@
|
||||
#
|
||||
# Calcurse keys configuration file
|
||||
#
|
||||
# In this file the keybindings used by Calcurse are defined.
|
||||
# It is generated automatically by Calcurse and is maintained
|
||||
# via the key configuration menu of the interactive user
|
||||
# interface. It should not be edited directly.
|
||||
|
||||
generic-cancel ESC
|
||||
generic-select SPC
|
||||
generic-credits @
|
||||
generic-help ?
|
||||
generic-quit q Q
|
||||
generic-save s S ^S
|
||||
generic-reload R
|
||||
generic-copy c
|
||||
generic-paste p ^V
|
||||
generic-change-view TAB
|
||||
generic-import i I
|
||||
generic-export x X
|
||||
generic-goto g G
|
||||
generic-other-cmd o O
|
||||
generic-config-menu C
|
||||
generic-redraw ^R
|
||||
generic-add-appt ^A
|
||||
generic-add-todo ^T
|
||||
generic-prev-day T ^H
|
||||
generic-next-day t ^L
|
||||
generic-prev-week W ^K
|
||||
generic-next-week w
|
||||
generic-prev-month M
|
||||
generic-next-month m
|
||||
generic-prev-year Y
|
||||
generic-next-year y
|
||||
generic-scroll-down ^N
|
||||
generic-scroll-up ^P
|
||||
generic-goto-today ^G
|
||||
generic-command :
|
||||
move-right l L RGT
|
||||
move-left h H LFT
|
||||
move-down j J DWN
|
||||
move-up k K UP
|
||||
start-of-week 0
|
||||
end-of-week $
|
||||
add-item a A
|
||||
del-item d D
|
||||
edit-item e E
|
||||
view-item v V RET
|
||||
pipe-item |
|
||||
flag-item !
|
||||
repeat r
|
||||
edit-note n N
|
||||
view-note >
|
||||
raise-priority +
|
||||
lower-priority -
|
3
.config/coc/extensions/db.json
Normal file
3
.config/coc/extensions/db.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"lastUpdate": 1593852197191
|
||||
}
|
22
.config/coc/extensions/node_modules/coc-vimtex/Readme.md
generated
vendored
Normal file
22
.config/coc/extensions/node_modules/coc-vimtex/Readme.md
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
# coc-vimtex
|
||||
|
||||
Tex completion source use [vimtex](https://github.com/lervag/vimtex).
|
||||
|
||||
## Install
|
||||
|
||||
In your vim/neovim, run command:
|
||||
|
||||
```
|
||||
:CocInstall coc-vimtex
|
||||
```
|
||||
|
||||
## Options
|
||||
|
||||
- `coc.source.vimtex.disableSyntaxes` disabled syntax names.
|
||||
- `coc.source.vimtex.enable` set to false to disable this source.
|
||||
- `coc.source.vimtex.priority` priority of source, default `99`.
|
||||
- `coc.source.vimtex.shortcut` shortcut used in `menu` of completion item.
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
46
.config/coc/extensions/node_modules/coc-vimtex/package.json
generated
vendored
Normal file
46
.config/coc/extensions/node_modules/coc-vimtex/package.json
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"name": "coc-vimtex",
|
||||
"version": "1.0.3",
|
||||
"description": "vimtex integration for coc.nvim",
|
||||
"main": "src/index.js",
|
||||
"publisher": "chemzqm",
|
||||
"keywords": [
|
||||
"coc.nvim",
|
||||
"vimtex"
|
||||
],
|
||||
"engines": {
|
||||
"coc": "^0.0.56"
|
||||
},
|
||||
"activationEvents": [
|
||||
"onLanguage:tex",
|
||||
"onLanguage:plaintex",
|
||||
"onLanguage:latex"
|
||||
],
|
||||
"contributes": {
|
||||
"configuration": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"coc.source.vimtex.enable": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"coc.source.vimtex.priority": {
|
||||
"type": "integer",
|
||||
"default": 99
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"author": "chemzqm@gmail.com",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/neoclide/coc-vimtex.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/node": "^10.12.24",
|
||||
"coc.nvim": "^0.0.74",
|
||||
"rimraf": "^2.6.3"
|
||||
},
|
||||
"dependencies": {}
|
||||
}
|
67
.config/coc/extensions/node_modules/coc-vimtex/src/index.js
generated
vendored
Normal file
67
.config/coc/extensions/node_modules/coc-vimtex/src/index.js
generated
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
const {sources, workspace, SourceType} = require('coc.nvim')
|
||||
const {convertRegex, byteSlice} = require('./util')
|
||||
|
||||
exports.activate = async context => {
|
||||
let config = workspace.getConfiguration('coc.source.vimtex')
|
||||
let {nvim} = workspace
|
||||
|
||||
let regex = await nvim.getVar('vimtex#re#deoplete')
|
||||
if (!regex) {
|
||||
workspace.showMessage('vimtex not loaded', 'error')
|
||||
return
|
||||
}
|
||||
regex = regex.slice(2, regex.length)
|
||||
let pattern = new RegExp(convertRegex(regex) + '$')
|
||||
|
||||
function convertItems(list) {
|
||||
let res = []
|
||||
for (let item of list) {
|
||||
if (typeof item == 'string') {
|
||||
res.push(Object.assign({word: item}))
|
||||
}
|
||||
if (item.hasOwnProperty('word')) {
|
||||
res.push(item)
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
let source = {
|
||||
name: 'vimtex',
|
||||
enable: config.get('enable', true),
|
||||
priority: config.get('priority', 99),
|
||||
filetypes: ['tex', 'plaintex', 'latex'],
|
||||
sourceType: SourceType.Remote,
|
||||
triggerPatterns: [pattern],
|
||||
doComplete: async opt => {
|
||||
let {nvim} = workspace
|
||||
let func = 'vimtex#complete#omnifunc'
|
||||
let {line, colnr, col} = opt
|
||||
let startcol = col
|
||||
try {
|
||||
startcol = await nvim.call(func, [1, ''])
|
||||
startcol = Number(startcol)
|
||||
} catch (e) {
|
||||
workspace.showMessage(`vim error from ${func} :${e.message}`, 'error')
|
||||
return null
|
||||
}
|
||||
// invalid startcol
|
||||
if (isNaN(startcol) || startcol < 0 || startcol > colnr) return null
|
||||
let text = byteSlice(line, startcol, colnr - 1)
|
||||
let words = await nvim.call(func, [0, text])
|
||||
if (words.hasOwnProperty('words')) {
|
||||
words = words.words
|
||||
}
|
||||
let res = {items: convertItems(words)}
|
||||
res.startcol = startcol
|
||||
return res
|
||||
}
|
||||
}
|
||||
|
||||
sources.addSource(source)
|
||||
context.subscriptions.push({
|
||||
dispose: () => {
|
||||
sources.removeSource(source)
|
||||
}
|
||||
})
|
||||
}
|
56
.config/coc/extensions/node_modules/coc-vimtex/src/util.js
generated
vendored
Normal file
56
.config/coc/extensions/node_modules/coc-vimtex/src/util.js
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
/******************************************************************
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Qiming Zhao <chemzqm@gmail> (https://github.com/chemzqm)
|
||||
*******************************************************************/
|
||||
|
||||
const conditionRe = /\(\?\(\?:\w+\).+\|/
|
||||
const bellRe = /\\a/
|
||||
const commentRe = /\(\?#.*?\)/
|
||||
const stringStartRe = /\\A/
|
||||
const lookBehindRe = /\(\?<[!=].*?\)/
|
||||
const namedCaptureRe = /\(\?P<\w+>.*?\)/
|
||||
const namedReferenceRe = /\(\?P=(\w+)\)/
|
||||
const braceRe = /\^\]/
|
||||
const regex = new RegExp(`${bellRe.source}|${commentRe.source}|${stringStartRe.source}|${lookBehindRe.source}|${namedCaptureRe.source}|${namedReferenceRe.source}|${braceRe}`, 'g')
|
||||
|
||||
/**
|
||||
* Convert python regex to javascript regex,
|
||||
* throw error when unsupported pattern found
|
||||
*
|
||||
* @public
|
||||
* @param {string} str
|
||||
* @returns {string}
|
||||
*/
|
||||
exports.convertRegex = function(str) {
|
||||
if (str.indexOf('\\z') !== -1) {
|
||||
throw new Error('pattern \\z not supported')
|
||||
}
|
||||
if (str.indexOf('(?s)') !== -1) {
|
||||
throw new Error('pattern (?s) not supported')
|
||||
}
|
||||
if (str.indexOf('(?x)') !== -1) {
|
||||
throw new Error('pattern (?x) not supported')
|
||||
}
|
||||
if (str.indexOf('\n') !== -1) {
|
||||
throw new Error('multiple line pattern not supported')
|
||||
}
|
||||
if (conditionRe.test(str)) {
|
||||
throw new Error('condition pattern not supported')
|
||||
}
|
||||
return str.replace(regex, (match, p1) => {
|
||||
if (match == '^]') return '^\\]'
|
||||
if (match == '\\a') return ''
|
||||
if (match.startsWith('(?#')) return ''
|
||||
if (match == '\\A') return '^'
|
||||
if (match.startsWith('(?<')) return '(?' + match.slice(3)
|
||||
if (match.startsWith('(?P<')) return '(?' + match.slice(3)
|
||||
if (match.startsWith('(?P=')) return `\\k<${p1}>`
|
||||
return ''
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
exports.byteSlice = function (content, start, end) {
|
||||
let buf = Buffer.from(content, 'utf8')
|
||||
return buf.slice(start, end).toString('utf8')
|
||||
}
|
6
.config/coc/extensions/package.json
Normal file
6
.config/coc/extensions/package.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"coc-json": ">=1.2.6",
|
||||
"coc-vimtex": ">=1.0.3"
|
||||
}
|
||||
}
|
16
.config/coc/history.json
Normal file
16
.config/coc/history.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"diagnostics": {
|
||||
"%2Fhome%2Falex%2F": {
|
||||
"local%2Fbin%2Ftools": [
|
||||
" "
|
||||
],
|
||||
"local%2Fsrc%2Fbthandler": [
|
||||
" "
|
||||
]
|
||||
},
|
||||
"%2Fhome%2Falex": [
|
||||
"kk",
|
||||
" "
|
||||
]
|
||||
}
|
||||
}
|
1
.config/coc/lists
Normal file
1
.config/coc/lists
Normal file
@ -0,0 +1 @@
|
||||
diagnostics
|
1
.config/coc/memos.json
Normal file
1
.config/coc/memos.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
0
.config/coc/mru
Normal file
0
.config/coc/mru
Normal file
11
.config/directories
Normal file
11
.config/directories
Normal file
@ -0,0 +1,11 @@
|
||||
# You can add comments to these files with #
|
||||
h ~/
|
||||
d ~/Documents
|
||||
D ~/Downloads
|
||||
m ~/Music
|
||||
pp ~/Pictures
|
||||
vv ~/Videos
|
||||
cf ${XDG_CONFIG_HOME:-$HOME/.config}
|
||||
cac ${XDG_CACHE_HOME:-$HOME/.cache}
|
||||
sc ~/.local/bin
|
||||
mn /mnt
|
257
.config/dunst/dunstrc
Normal file
257
.config/dunst/dunstrc
Normal file
@ -0,0 +1,257 @@
|
||||
[global]
|
||||
#font = Iosevka Term 11
|
||||
font = Monospace 14
|
||||
# Allow a small subset of html markup:
|
||||
# <b>bold</b>
|
||||
# <i>italic</i>
|
||||
# <s>strikethrough</s>
|
||||
# <u>underline</u>
|
||||
#
|
||||
# For a complete reference see
|
||||
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
|
||||
# If markup is not allowed, those tags will be stripped out of the
|
||||
# message.
|
||||
markup = yes
|
||||
plain_text = no
|
||||
|
||||
# The format of the message. Possible variables are:
|
||||
# %a appname
|
||||
# %s summary
|
||||
# %b body
|
||||
# %i iconname (including its path)
|
||||
# %I iconname (without its path)
|
||||
# %p progress value if set ([ 0%] to [100%]) or nothing
|
||||
# Markup is allowed
|
||||
format = "<b>%s</b>\n%b"
|
||||
|
||||
# Sort messages by urgency.
|
||||
sort = no
|
||||
|
||||
# Show how many messages are currently hidden (because of geometry).
|
||||
indicate_hidden = yes
|
||||
|
||||
# Alignment of message text.
|
||||
# Possible values are "left", "center" and "right".
|
||||
alignment = center
|
||||
|
||||
# The frequency with wich text that is longer than the notification
|
||||
# window allows bounces back and forth.
|
||||
# This option conflicts with "word_wrap".
|
||||
# Set to 0 to disable.
|
||||
bounce_freq = 0
|
||||
|
||||
# Show age of message if message is older than show_age_threshold
|
||||
# seconds.
|
||||
# Set to -1 to disable.
|
||||
show_age_threshold = 60
|
||||
|
||||
# Split notifications into multiple lines if they don't fit into
|
||||
# geometry.
|
||||
word_wrap = yes
|
||||
|
||||
# Ignore newlines '\n' in notifications.
|
||||
ignore_newline = no
|
||||
|
||||
# Hide duplicate's count and stack them
|
||||
stack_duplicates = yes
|
||||
hide_duplicates_count = yes
|
||||
|
||||
|
||||
# The geometry of the window:
|
||||
# [{width}]x{height}[+/-{x}+/-{y}]
|
||||
# The geometry of the message window.
|
||||
# The height is measured in number of notifications everything else
|
||||
# in pixels. If the width is omitted but the height is given
|
||||
# ("-geometry x2"), the message window expands over the whole screen
|
||||
# (dmenu-like). If width is 0, the window expands to the longest
|
||||
# message displayed. A positive x is measured from the left, a
|
||||
# negative from the right side of the screen. Y is measured from
|
||||
# the top and down respectevly.
|
||||
# The width can be negative. In this case the actual width is the
|
||||
# screen width minus the width defined in within the geometry option.
|
||||
#geometry = "250x50-40+40"
|
||||
geometry = "500x50-10+50"
|
||||
|
||||
# Shrink window if it's smaller than the width. Will be ignored if
|
||||
# width is 0.
|
||||
shrink = no
|
||||
|
||||
# The transparency of the window. Range: [0; 100].
|
||||
# This option will only work if a compositing windowmanager is
|
||||
# present (e.g. xcompmgr, compiz, etc.).
|
||||
transparency = 20
|
||||
|
||||
# Don't remove messages, if the user is idle (no mouse or keyboard input)
|
||||
# for longer than idle_threshold seconds.
|
||||
# Set to 0 to disable.
|
||||
idle_threshold = 120
|
||||
|
||||
# Which monitor should the notifications be displayed on.
|
||||
monitor = 0
|
||||
|
||||
# Display notification on focused monitor. Possible modes are:
|
||||
# mouse: follow mouse pointer
|
||||
# keyboard: follow window with keyboard focus
|
||||
# none: don't follow anything
|
||||
#
|
||||
# "keyboard" needs a windowmanager that exports the
|
||||
# _NET_ACTIVE_WINDOW property.
|
||||
# This should be the case for almost all modern windowmanagers.
|
||||
#
|
||||
# If this option is set to mouse or keyboard, the monitor option
|
||||
# will be ignored.
|
||||
follow = none
|
||||
|
||||
# Should a notification popped up from history be sticky or timeout
|
||||
# as if it would normally do.
|
||||
sticky_history = yes
|
||||
|
||||
# Maximum amount of notifications kept in history
|
||||
history_length = 20
|
||||
|
||||
# Display indicators for URLs (U) and actions (A).
|
||||
show_indicators = no
|
||||
|
||||
# The height of a single line. If the height is smaller than the
|
||||
# font height, it will get raised to the font height.
|
||||
# This adds empty space above and under the text.
|
||||
line_height = 3
|
||||
|
||||
# Draw a line of "separatpr_height" pixel height between two
|
||||
# notifications.
|
||||
# Set to 0 to disable.
|
||||
separator_height = 2
|
||||
|
||||
# Padding between text and separator.
|
||||
padding = 0
|
||||
|
||||
# Horizontal padding.
|
||||
horizontal_padding = 6
|
||||
|
||||
# Define a color for the separator.
|
||||
# possible values are:
|
||||
# * auto: dunst tries to find a color fitting to the background;
|
||||
# * foreground: use the same color as the foreground;
|
||||
# * frame: use the same color as the frame;
|
||||
# * anything else will be interpreted as a X color.
|
||||
separator_color = frame
|
||||
|
||||
# Print a notification on startup.
|
||||
# This is mainly for error detection, since dbus (re-)starts dunst
|
||||
# automatically after a crash.
|
||||
startup_notification = false
|
||||
|
||||
# dmenu path.
|
||||
dmenu = /usr/bin/dmenu -p dunst:
|
||||
|
||||
# Browser for opening urls in context menu.
|
||||
browser = /usr/bin/firefox -new-tab
|
||||
|
||||
# Align icons left/right/off
|
||||
icon_position = off
|
||||
max_icon_size = 80
|
||||
|
||||
# Paths to default icons.
|
||||
icon_path = /usr/share/icons/Paper/16x16/mimetypes/:/usr/share/icons/Paper/48x48/status/:/usr/share/icons/Paper/16x16/devices/:/usr/share/icons/Paper/48x48/notifications/:/usr/share/icons/Paper/48x48/emblems/
|
||||
|
||||
frame_width = 1
|
||||
frame_color = "#8EC07C"
|
||||
|
||||
[shortcuts]
|
||||
|
||||
# Shortcuts are specified as [modifier+][modifier+]...key
|
||||
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
|
||||
# "mod3" and "mod4" (windows-key).
|
||||
# Xev might be helpful to find names for keys.
|
||||
|
||||
# Close notification.
|
||||
close = ctrl+space
|
||||
|
||||
# Close all notifications.
|
||||
close_all = ctrl+shift+space
|
||||
|
||||
# Redisplay last message(s).
|
||||
# On the US keyboard layout "grave" is normally above TAB and left
|
||||
# of "1".
|
||||
history = ctrl+grave
|
||||
|
||||
# Context menu.
|
||||
context = ctrl+shift+period
|
||||
|
||||
[urgency_low]
|
||||
# IMPORTANT: colors have to be defined in quotation marks.
|
||||
# Otherwise the "#" and following would be interpreted as a comment.
|
||||
frame_color = "#3B7C87"
|
||||
foreground = "#d7d5d1"
|
||||
background = "#191311"
|
||||
#background = "#2B313C"
|
||||
timeout = 15
|
||||
|
||||
[urgency_normal]
|
||||
frame_color = "#5B8234"
|
||||
foreground = "#d7d5d1"
|
||||
background = "#191311"
|
||||
#background = "#2B313C"
|
||||
timeout = 20
|
||||
|
||||
[urgency_critical]
|
||||
frame_color = "#B7472A"
|
||||
foreground = "#d7d5d1"
|
||||
background = "#191311"
|
||||
#background = "#2B313C"
|
||||
timeout = 30
|
||||
|
||||
|
||||
# Every section that isn't one of the above is interpreted as a rules to
|
||||
# override settings for certain messages.
|
||||
# Messages can be matched by "appname", "summary", "body", "icon", "category",
|
||||
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
|
||||
# "background", "new_icon" and "format".
|
||||
# Shell-like globbing will get expanded.
|
||||
#
|
||||
# SCRIPTING
|
||||
# You can specify a script that gets run when the rule matches by
|
||||
# setting the "script" option.
|
||||
# The script will be called as follows:
|
||||
# script appname summary body icon urgency
|
||||
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
|
||||
#
|
||||
# NOTE: if you don't want a notification to be displayed, set the format
|
||||
# to "".
|
||||
# NOTE: It might be helpful to run dunst -print in a terminal in order
|
||||
# to find fitting options for rules.
|
||||
|
||||
#[espeak]
|
||||
# summary = "*"
|
||||
# script = dunst_espeak.sh
|
||||
|
||||
#[script-test]
|
||||
# summary = "*script*"
|
||||
# script = dunst_test.sh
|
||||
|
||||
#[ignore]
|
||||
# # This notification will not be displayed
|
||||
# summary = "foobar"
|
||||
# format = ""
|
||||
|
||||
#[signed_on]
|
||||
# appname = Pidgin
|
||||
# summary = "*signed on*"
|
||||
# urgency = low
|
||||
#
|
||||
#[signed_off]
|
||||
# appname = Pidgin
|
||||
# summary = *signed off*
|
||||
# urgency = low
|
||||
#
|
||||
#[says]
|
||||
# appname = Pidgin
|
||||
# summary = *says*
|
||||
# urgency = critical
|
||||
#
|
||||
#[twitter]
|
||||
# appname = Pidgin
|
||||
# summary = *twitter.com*
|
||||
# urgency = normal
|
||||
#
|
||||
# vim: ft=cfg
|
152
.config/dunst/dunstrc_old
Normal file
152
.config/dunst/dunstrc_old
Normal file
@ -0,0 +1,152 @@
|
||||
[global]
|
||||
monitor = 0
|
||||
follow = keyboard
|
||||
geometry = "350x5-0+24"
|
||||
indicate_hidden = yes
|
||||
shrink = yes
|
||||
transparency = 20
|
||||
notification_height = 0
|
||||
separator_height = 2
|
||||
padding = 0
|
||||
horizontal_padding = 8
|
||||
frame_width = 3
|
||||
frame_color = "#282828"
|
||||
|
||||
# Define a color for the separator.
|
||||
# possible values are:
|
||||
# * auto: dunst tries to find a color fitting to the background;
|
||||
# * foreground: use the same color as the foreground;
|
||||
# * frame: use the same color as the frame;
|
||||
# * anything else will be interpreted as a X color.
|
||||
separator_color = frame
|
||||
|
||||
# Sort messages by urgency.
|
||||
sort = yes
|
||||
|
||||
idle_threshold = 120
|
||||
font = Monospace 14
|
||||
line_height = 0
|
||||
markup = full
|
||||
|
||||
# The format of the message. Possible variables are:
|
||||
# %a appname
|
||||
# %s summary
|
||||
# %b body
|
||||
# %i iconname (including its path)
|
||||
# %I iconname (without its path)
|
||||
# %p progress value if set ([ 0%] to [100%]) or nothing
|
||||
# %n progress value if set without any extra characters
|
||||
# %% Literal %
|
||||
# Markup is allowed
|
||||
format = "<b>%s</b>\n%b"
|
||||
|
||||
alignment = left
|
||||
show_age_threshold = 60
|
||||
word_wrap = yes
|
||||
ellipsize = middle
|
||||
ignore_newline = no
|
||||
stack_duplicates = true
|
||||
hide_duplicate_count = true
|
||||
show_indicators = yes
|
||||
icon_position = left
|
||||
max_icon_size = 40
|
||||
#icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/:/usr/share/icons/Adwaita/256x256/status/
|
||||
sticky_history = yes
|
||||
history_length = 20
|
||||
dmenu = /usr/bin/dmenu -p dunst:
|
||||
browser = /usr/bin/firefox -new-tab
|
||||
|
||||
# Always run rule-defined scripts, even if the notification is suppressed
|
||||
always_run_script = true
|
||||
|
||||
title = Dunst
|
||||
class = Dunst
|
||||
startup_notification = false
|
||||
force_xinerama = false
|
||||
[experimental]
|
||||
per_monitor_dpi = false
|
||||
|
||||
[shortcuts]
|
||||
close = ctrl+space
|
||||
close_all = ctrl+shift+space
|
||||
history = ctrl+grave
|
||||
context = ctrl+shift+period
|
||||
|
||||
[urgency_low]
|
||||
# IMPORTANT: colors have to be defined in quotation marks.
|
||||
# Otherwise the "#" and following would be interpreted as a comment.
|
||||
background = "#282828"
|
||||
foreground = "#928374"
|
||||
timeout = 5
|
||||
# Icon for notifications with low urgency, uncomment to enable
|
||||
#icon = /path/to/icon
|
||||
|
||||
[urgency_normal]
|
||||
background = "#458588"
|
||||
foreground = "#ebdbb2"
|
||||
timeout = 5
|
||||
|
||||
[urgency_critical]
|
||||
background = "#cc2421"
|
||||
foreground = "#ebdbb2"
|
||||
frame_color = "#fabd2f"
|
||||
timeout = 0
|
||||
|
||||
# Every section that isn't one of the above is interpreted as a rules to
|
||||
# override settings for certain messages.
|
||||
# Messages can be matched by "appname", "summary", "body", "icon", "category",
|
||||
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
|
||||
# "background", "new_icon" and "format".
|
||||
# Shell-like globbing will get expanded.
|
||||
#
|
||||
# SCRIPTING
|
||||
# You can specify a script that gets run when the rule matches by
|
||||
# setting the "script" option.
|
||||
# The script will be called as follows:
|
||||
# script appname summary body icon urgency
|
||||
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
|
||||
#
|
||||
# NOTE: if you don't want a notification to be displayed, set the format
|
||||
# to "".
|
||||
# NOTE: It might be helpful to run dunst -print in a terminal in order
|
||||
# to find fitting options for rules.
|
||||
|
||||
#[espeak]
|
||||
# summary = "*"
|
||||
# script = dunst_espeak.sh
|
||||
|
||||
#[script-test]
|
||||
# summary = "*script*"
|
||||
# script = dunst_test.sh
|
||||
|
||||
#[ignore]
|
||||
# # This notification will not be displayed
|
||||
# summary = "foobar"
|
||||
# format = ""
|
||||
|
||||
#[history-ignore]
|
||||
# # This notification will not be saved in history
|
||||
# summary = "foobar"
|
||||
# history_ignore = yes
|
||||
|
||||
#[signed_on]
|
||||
# appname = Pidgin
|
||||
# summary = "*signed on*"
|
||||
# urgency = low
|
||||
#
|
||||
#[signed_off]
|
||||
# appname = Pidgin
|
||||
# summary = *signed off*
|
||||
# urgency = low
|
||||
#
|
||||
#[says]
|
||||
# appname = Pidgin
|
||||
# summary = *says*
|
||||
# urgency = critical
|
||||
#
|
||||
#[twitter]
|
||||
# appname = Pidgin
|
||||
# summary = *twitter.com*
|
||||
# urgency = normal
|
||||
#
|
||||
# vim: ft=cfg
|
1644
.config/emoji
Normal file
1644
.config/emoji
Normal file
File diff suppressed because it is too large
Load Diff
15
.config/files
Normal file
15
.config/files
Normal file
@ -0,0 +1,15 @@
|
||||
bf ${XDG_CONFIG_HOME:-$HOME/.config}/files
|
||||
bd ${XDG_CONFIG_HOME:-$HOME/.config}/directories
|
||||
bw ${XDG_CONFIG_HOME:-$HOME/.config}/bookmarks
|
||||
cfa ${XDG_CONFIG_HOME:-$HOME/.config}/aliasrc
|
||||
cfz $ZDOTDIR/.zshrc
|
||||
cfv ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/init.vim
|
||||
cfm ${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc
|
||||
cfx ${XDG_CONFIG_HOME:-$HOME/.config}/Xresources
|
||||
cfu ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls
|
||||
cfn ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/config
|
||||
cfmb ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/bindings
|
||||
cfmc ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/config
|
||||
cfk ${XDG_CONFIG_HOME:-$HOME/.config}/sxhkd/sxhkdrc
|
||||
cfi ${XDG_CONFIG_HOME:-$HOME/.config}/i3/config
|
||||
cfb ${XDG_CONFIG_HOME:-$HOME/.config}/i3blocks/config
|
28
.config/fontconfig/fonts.conf
Executable file
28
.config/fontconfig/fonts.conf
Executable file
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
||||
<fontconfig>
|
||||
|
||||
<alias>
|
||||
<family>serif</family>
|
||||
<prefer><family>Linux Libertine</family></prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>sans-serif</family>
|
||||
<prefer><family>Cantarell</family></prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>sans</family>
|
||||
<prefer><family>Cantarell</family></prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>monospace</family>
|
||||
<prefer><family>Inconsolata</family></prefer>
|
||||
</alias>
|
||||
|
||||
<!-- This sets Symbola as the final fallback font for the monospace font family. -->
|
||||
<match target="pattern">
|
||||
<test name="family"><string>monospace</string></test>
|
||||
<edit name="family" mode="append"><string>Symbola</string></edit>
|
||||
</match>
|
||||
|
||||
</fontconfig>
|
11
.config/gtk-2.0/gtkfilechooser.ini
Normal file
11
.config/gtk-2.0/gtkfilechooser.ini
Normal file
@ -0,0 +1,11 @@
|
||||
[Filechooser Settings]
|
||||
LocationMode=path-bar
|
||||
ShowHidden=false
|
||||
ShowSizeColumn=true
|
||||
GeometryX=1105
|
||||
GeometryY=500
|
||||
GeometryWidth=990
|
||||
GeometryHeight=800
|
||||
SortColumn=modified
|
||||
SortOrder=ascending
|
||||
StartupMode=recent
|
19
.config/gtk-2.0/gtkrc-2.0
Normal file
19
.config/gtk-2.0/gtkrc-2.0
Normal file
@ -0,0 +1,19 @@
|
||||
# DO NOT EDIT! This file will be overwritten by LXAppearance.
|
||||
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
|
||||
|
||||
include "/home/luke/.gtkrc-2.0.mine"
|
||||
gtk-theme-name="Arc-Gruvbox"
|
||||
gtk-icon-theme-name="Adwaita"
|
||||
gtk-font-name="Sans 10"
|
||||
gtk-cursor-theme-name="Adwaita"
|
||||
gtk-cursor-theme-size=0
|
||||
gtk-toolbar-style=GTK_TOOLBAR_TEXT
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-button-images=0
|
||||
gtk-menu-images=1
|
||||
gtk-enable-event-sounds=1
|
||||
gtk-enable-input-feedback-sounds=1
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle="hintfull"
|
||||
gtk-xft-rgba="rgb"
|
1
.config/gtk-3.0/bookmarks
Normal file
1
.config/gtk-3.0/bookmarks
Normal file
@ -0,0 +1 @@
|
||||
file:///home/alex/Drive
|
16
.config/gtk-3.0/settings.ini
Normal file
16
.config/gtk-3.0/settings.ini
Normal file
@ -0,0 +1,16 @@
|
||||
[Settings]
|
||||
gtk-theme-name=Arc-Gruvbox
|
||||
gtk-icon-theme-name=Adwaita
|
||||
gtk-font-name=Sans 10
|
||||
gtk-cursor-theme-size=0
|
||||
gtk-toolbar-style=GTK_TOOLBAR_TEXT
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-button-images=0
|
||||
gtk-menu-images=1
|
||||
gtk-enable-event-sounds=1
|
||||
gtk-enable-input-feedback-sounds=1
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintfull
|
||||
gtk-xft-rgba=rgb
|
||||
gtk-cursor-theme-name=Adwaita
|
15
.config/homepage/bookmarks
Normal file
15
.config/homepage/bookmarks
Normal file
@ -0,0 +1,15 @@
|
||||
aur.archlinux.org/
|
||||
file:///home/dt/.surf/html/homepage.html
|
||||
distrowatch.com/
|
||||
https://gitlab.com/dwt1
|
||||
https://www.youtube.com/c/DistroTube/
|
||||
https://www.patreon.com/distrotube
|
||||
https://socialblade.com/youtube/c/distrotube
|
||||
https://mastodon.technology/web/accounts/85897
|
||||
https://diasp.org/stream
|
||||
https://www.reddit.com/r/linux/
|
||||
https://forum.members.fsf.org/
|
||||
google.com/?gws_rd=ssl
|
||||
suckless.org/
|
||||
https://distrowatch.com/
|
||||
https://www.omgubuntu.co.uk/
|
10
.config/homepage/html/empty.html
Normal file
10
.config/homepage/html/empty.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>vimb</title>
|
||||
<link rel="stylesheet" href="../styles/empty.css">
|
||||
<link href="favicon.png" rel="shortcut icon" type="image/x-icon" />
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
151
.config/homepage/html/homepage.html
Normal file
151
.config/homepage/html/homepage.html
Normal file
@ -0,0 +1,151 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
|
||||
<title>Home</title>
|
||||
<link rel="stylesheet" href="../styles/homepage.css">
|
||||
<link href="favicon.png" rel="shortcut icon" type="image/x-icon" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="search">
|
||||
<input id="search-field" type="text" name="search-field"/>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div id="clock"></div>
|
||||
<div class="weather-container">
|
||||
<div class="row">
|
||||
<div id="weather-description"class="inline"></div>
|
||||
<div class="inline">-</div>
|
||||
<div id="temp" class="inline"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bookmark-container">
|
||||
<div class="bookmark-set">
|
||||
<div class="bookmark-title">Linux News</div>
|
||||
<div class="bookmark-inner-container">
|
||||
<a class="bookmark" href="https://distrotube.com/" target="_blank">DistroTube.com</a>
|
||||
<a class="bookmark" href="https://www.linuxtoday.com/" target="_blank">LinuxToday</a>
|
||||
<a class="bookmark" href="https://www.linuxinsider.com/" target="_blank">LinuxInsider</a>
|
||||
<a class="bookmark" href="https://omgubuntu.co.uk/" target="_blank">OMG Ubuntu</a>
|
||||
<a class="bookmark" href="https://itsfoss.com/" target="_blank">It's Foss</a>
|
||||
<a class="bookmark" href="https://phoronix.com/" target="_blank">Phoronix</a>
|
||||
<a class="bookmark" href="https://www.zdnet.com/topic/linux/" target="_blank">ZDNet</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bookmark-set">
|
||||
<div class="bookmark-title">Arch Linux</div>
|
||||
<div class="bookmark-inner-container">
|
||||
<a class="bookmark" href="https://www.archlinux.org/" target="_blank">Arch Homepage</a>
|
||||
<a class="bookmark" href="https://wiki.archlinux.org/" target="_blank">Arch Wiki</a>
|
||||
<a class="bookmark" href="https://www.archlinux.org/packages/" target="_blank">Arch Packages</a>
|
||||
<a class="bookmark" href="https://aur.archlinux.org/" target="_blank">AUR Home</a>
|
||||
<a class="bookmark" href="https://bugs.archlinux.org/" target="_blank">Arch Bugs</a>
|
||||
<a class="bookmark" href="https://bbs.archlinux.org/" target="_blank">Arch Forums</a>
|
||||
<a class="bookmark" href="https://www.archlinux.org/planet/" target="_blank">Planet Arch</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bookmark-set">
|
||||
<div class="bookmark-title">Suckless</div>
|
||||
<div class="bookmark-inner-container">
|
||||
<a class="bookmark" href="https://www.suckless.org/" target="_blank">Suckless Homepage</a>
|
||||
<a class="bookmark" href="https://git.suckless.org/" target="_blank">Suckless Source Code</a>
|
||||
<a class="bookmark" href="https://dwm.suckless.org/" target="_blank">dwm</a>
|
||||
<a class="bookmark" href="https://st.suckless.org/" target="_blank">st</a>
|
||||
<a class="bookmark" href="https://tools.suckless.org/dmenu/" target="_blank">dmenu</a>
|
||||
<a class="bookmark" href="https://surf.suckless.org/" target="_blank">surf</a>
|
||||
<a class="bookmark" href="https://tools.suckless.org/tabbed/" target="_blank">tabbed</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bookmark-set">
|
||||
<div class="bookmark-title">Social & Video</div>
|
||||
<div class="bookmark-inner-container">
|
||||
<a class="bookmark" href="https://youtube.com/c/DistroTube" target="_blank">Youtube</a>
|
||||
<a class="bookmark" href="https://lbry.tv/@DistroTube:2" target="_blank">LBRY</a>
|
||||
<a class="bookmark" href="https://www.patreon.com/distrotube" target="_blank">Patreon</a>
|
||||
<a class="bookmark" href="https://gitlab.com/dwt1" target="_blank">GitLab</a>
|
||||
<a class="bookmark" href="https://github.com" target="_blank">GitHub</a>
|
||||
<a class="bookmark" href="https://mastodon.technology/@distrotube" target="_blank">Mastodon</a>
|
||||
<a class="bookmark" href="https://diasp.org/stream" target="_blank">Diaspora</a>
|
||||
<a class="bookmark" href="https://netflix.com" target="_blank">Netflix</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bookmark-set">
|
||||
<div class="bookmark-title">Reddit</div>
|
||||
<div class="bookmark-inner-container">
|
||||
<a class="bookmark" href="https://reddit.com/r/linux" target="_blank">/r/linux</a>
|
||||
<a class="bookmark" href="https://reddit.com/r/archlinux" target="_blank">/r/archlinux</a>
|
||||
<a class="bookmark" href="https://reddit.com/r/commandline" target="_blank">/r/commandline</a>
|
||||
<a class="bookmark" href="https://reddit.com/r/linux4noobs" target="_blank">/r/linux4noobs</a>
|
||||
<a class="bookmark" href="https://reddit.com/r/linuxquestions" target="_blank">/r/linuxquestions</a>
|
||||
<a class="bookmark" href="https://reddit.com/r/linuxmemes" target="_blank">/r/linuxmemes</a>
|
||||
<a class="bookmark" href="https://reddit.com/r/suckless" target="_blank">/r/suckless</a>
|
||||
<a class="bookmark" href="https://reddit.com/r/unixporn" target="_blank">/r/unixporn</a>
|
||||
<a class="bookmark" href="https://reddit.com/r/vim" target="_blank">/r/vim</a>
|
||||
<a class="bookmark" href="https://reddit.com/r/emacs" target="_blank">/r/emacs</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Search on enter key event
|
||||
document.getElementById("search-field").addEventListener("keydown", event => {
|
||||
if (event.keyCode === 13) {
|
||||
var val = document.getElementById("search-field").value;
|
||||
window.open("https://google.com/search?q=" + val);
|
||||
}
|
||||
});
|
||||
// Get current time and format
|
||||
getTime = () => {
|
||||
let date = new Date(),
|
||||
min = date.getMinutes(),
|
||||
sec = date.getSeconds(),
|
||||
hour = date.getHours();
|
||||
|
||||
return "" +
|
||||
(hour < 10 ? ("0" + hour) : hour) + ":" +
|
||||
(min < 10 ? ("0" + min) : min) + ":" +
|
||||
(sec < 10 ? ("0" + sec) : sec);
|
||||
}
|
||||
|
||||
window.onload = () => {
|
||||
let xhr = new XMLHttpRequest();
|
||||
// Request to open weather map
|
||||
xhr.open('GET', 'http://api.openweathermap.org/data/2.5/weather?id=4737316&units=imperial&appid=e5b292ae2f9dae5f29e11499c2d82ece');
|
||||
xhr.onload = () => {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status === 200) {
|
||||
let json = JSON.parse(xhr.responseText);
|
||||
console.log(json);
|
||||
document.getElementById("temp").innerHTML = json.main.temp.toFixed(0) + " F";
|
||||
document.getElementById("weather-description").innerHTML = json.weather[0].description;
|
||||
} else {
|
||||
console.log('error msg: ' + xhr.status);
|
||||
}
|
||||
}
|
||||
}
|
||||
xhr.send();
|
||||
// Set up the clock
|
||||
document.getElementById("clock").innerHTML = getTime();
|
||||
// Set clock interval to tick clock
|
||||
setInterval( () => {
|
||||
document.getElementById("clock").innerHTML = getTime();
|
||||
},100);
|
||||
}
|
||||
|
||||
document.addEventListener("keydown", event => {
|
||||
if (event.keyCode == 32) { // Spacebar code to open search
|
||||
document.getElementById('search').style.display = 'flex';
|
||||
document.getElementById('search-field').focus();
|
||||
} else if (event.keyCode == 27) { // Esc to close search
|
||||
document.getElementById('search-field').value = '';
|
||||
document.getElementById('search-field').blur();
|
||||
document.getElementById('search').style.display = 'none';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
0
.config/homepage/script.js
Normal file
0
.config/homepage/script.js
Normal file
186
.config/homepage/styles/archlinux.css
Normal file
186
.config/homepage/styles/archlinux.css
Normal file
@ -0,0 +1,186 @@
|
||||
body {
|
||||
font-size: 13px !important;
|
||||
background: #282a36 !important;
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
a {
|
||||
color: #9cc4ff !important;
|
||||
}
|
||||
#archnavbar {
|
||||
min-height: 40px !important;
|
||||
padding: 10px 15px !important;
|
||||
background: #282a36 !important;
|
||||
border-bottom: 0px !important;
|
||||
}
|
||||
.article-content p, h4 a {
|
||||
font-size: 1.3em !important;
|
||||
}
|
||||
h4, h4 a, li a {
|
||||
font-size: 1.3em !important;
|
||||
}
|
||||
h4 a, li a, #content h1, #content h2, #content h3 {
|
||||
color: #82aaff !important;
|
||||
}
|
||||
#news h3 a {
|
||||
font-size: 1.3em !important;
|
||||
background: #82aaff !important;
|
||||
color: #282a36 !important;
|
||||
}
|
||||
h3 span.arrow {
|
||||
display: none !important;
|
||||
}
|
||||
#pkgsearch {
|
||||
background: #9cc4ff !important;
|
||||
}
|
||||
label {
|
||||
color: #282a36 !important;
|
||||
}
|
||||
.box {
|
||||
font-size: 1.3em;
|
||||
background: #000000 !important;
|
||||
color: #d0d0d0 !important;
|
||||
border: 1px solid #555 !important;
|
||||
}
|
||||
pre {
|
||||
background: #9cc4ff !important;
|
||||
margin: 1em 0px !important;
|
||||
border: 1px solid #666666 !important;
|
||||
}
|
||||
code {
|
||||
color: #282a36 !important;
|
||||
background: #9cc4ff !important;
|
||||
}
|
||||
p code {
|
||||
color: #000 !important;
|
||||
font-size: 12px !important;
|
||||
background: #ff8b92 !important;
|
||||
}
|
||||
|
||||
|
||||
dl dt{
|
||||
color: #ff8b92 !important;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
dd a{
|
||||
color: #82aaff !important;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
|
||||
/* ARCH WIKI */
|
||||
|
||||
#mw-panel .portal .body li {
|
||||
font-size: 0.9em !important;
|
||||
}
|
||||
#mw-panel .portal h3 {
|
||||
color: #ff8b92 !important;
|
||||
font-size: 0.9em !important;
|
||||
}
|
||||
#content {
|
||||
background: #282a36 !important;
|
||||
border: none !important;
|
||||
}
|
||||
#toc, .toc, .mw-warning, .toccolours {
|
||||
background-color: #000000 !important;
|
||||
border: 1px solid #666666 !important;
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
.tocnumber, .toctogglelabel {
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
.mw-body-content p {
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
div#mw-head {
|
||||
top: 38px !important;
|
||||
}
|
||||
div.vectorTabs li.selected {
|
||||
border: 1px solid #666666 !important;
|
||||
border-bottom-color: #666666 !important;
|
||||
background-color: #000000 !important;
|
||||
padding-bottom: 20px !important;
|
||||
}
|
||||
.vectorTabs span {
|
||||
background: none !important;
|
||||
}
|
||||
.catlinks {
|
||||
border: 1px solid #666666 !important;
|
||||
background-color: #000000 !important;
|
||||
}
|
||||
.mw-body, .parsoid-body {
|
||||
color: #d0d0d0 !important;
|
||||
font-size: 1.2em !important;
|
||||
}
|
||||
|
||||
|
||||
/* AUR */
|
||||
.results th {
|
||||
background-color: #282a36 !important;
|
||||
}
|
||||
.results tr:nth-child(2n+1), #article-list tr:nth-child(2n+1) {
|
||||
background: #282a36 !important;
|
||||
}
|
||||
.results tr:nth-child(2n), #article-list tr:nth-child(2n) {
|
||||
background: #1f212a !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ARCH FORUMS */
|
||||
#brdmenu, #brdmenu a {
|
||||
background: #000000 !important;
|
||||
border-color: #444444 !important;
|
||||
}
|
||||
#brdmenu.inbox {
|
||||
margin-left: 30px !important;
|
||||
}
|
||||
.pun, .punwrap {
|
||||
background: #282a36 !important;
|
||||
border: none !important;
|
||||
}
|
||||
.pun .blocktable th {
|
||||
background: #000000 !important;
|
||||
border-color: #000 !important;
|
||||
color: #ff8b92 !important;
|
||||
}
|
||||
#punindex .blocktable h2 {
|
||||
font-size: 1.2em !important;
|
||||
color: #ff8b92 !important;
|
||||
}
|
||||
tr.rowodd {
|
||||
background: #282a36 !important;
|
||||
}
|
||||
tr.roweven {
|
||||
background: #282a36 !important;
|
||||
}
|
||||
.pun .blocktable td {
|
||||
border-color: #444444 !important;
|
||||
}
|
||||
.pun .blockpost {
|
||||
background: #282a36 !important;
|
||||
border-color: #444444 !important;
|
||||
}
|
||||
.pun .blockpost h2 {
|
||||
background: #000000 !important;
|
||||
border: none !important;
|
||||
color: #82aaff !important;
|
||||
}
|
||||
.pun .blockpost .postbody, .pun .blockpost .postfoot {
|
||||
background: #282a36 !important;
|
||||
border-color: #444444 !important;
|
||||
}
|
||||
#punviewtopic .blockpost dt, #punmoderate .blockpost dt {
|
||||
top: -1.8em !important;
|
||||
color: #ff8b92 !important;
|
||||
}
|
||||
.pun .postmsg, #punhelp code, #punhelp samp {
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
.pun .codebox {
|
||||
border-color: #444444 !important;
|
||||
background: #9cc4ff !important;
|
||||
color: #000000 !important;
|
||||
}
|
||||
.pun .codebox pre {
|
||||
border: none !important;
|
||||
}
|
27
.config/homepage/styles/arcolinux-info.css
Normal file
27
.config/homepage/styles/arcolinux-info.css
Normal file
@ -0,0 +1,27 @@
|
||||
body {
|
||||
font-size: 13px;
|
||||
background-color: #282a36 !important;
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
#main-header {
|
||||
background-color: #282a36 !important;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#et-navigation > ul > li > a {
|
||||
color: #c3e88d !important;
|
||||
}
|
||||
|
||||
.widget_text .textwidget {
|
||||
background-color: #434758 !important;
|
||||
|
||||
}
|
||||
|
||||
h4.widgettitle {
|
||||
color: #d0d0d0 !important;
|
||||
background-color: #434758 !important;
|
||||
}
|
||||
|
||||
.textwidget p {
|
||||
color: #d0d0d0 !important;
|
||||
}
|
48
.config/homepage/styles/arcolinuxforum.css
Normal file
48
.config/homepage/styles/arcolinuxforum.css
Normal file
@ -0,0 +1,48 @@
|
||||
body {
|
||||
font-size: 13px;
|
||||
background-color: #282a36 !important;
|
||||
background-image: none !important;
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
h1 {
|
||||
color: #e1acff !important;
|
||||
}
|
||||
.above {
|
||||
border: 0px !important;
|
||||
background: #282a36 !important;
|
||||
}
|
||||
.backhead {
|
||||
background: #282a36 !important;
|
||||
border: 0px !important;
|
||||
box-shadow: inset 0px -1px 0 #282a36 !important;
|
||||
}
|
||||
.headerbar {
|
||||
background: #282a36 !important;
|
||||
}
|
||||
.site-description p {
|
||||
color: #c3e88d !important;
|
||||
}
|
||||
div#content {
|
||||
background: #282a36 !important;
|
||||
}
|
||||
div.forabg {
|
||||
background: #22232e !important;
|
||||
}
|
||||
dl.row-item {
|
||||
color: #d0d0d0;
|
||||
text-shadow: none;
|
||||
}
|
||||
ul.topiclist {
|
||||
background: # !important;
|
||||
}
|
||||
li.row {
|
||||
|
||||
background-color: #282a36 !important;
|
||||
padding: 4px;
|
||||
text-shadow: none;
|
||||
|
||||
}
|
||||
a.forumtitle {
|
||||
color: #e1acff !important;
|
||||
text-shadow: none;
|
||||
}
|
186
.config/homepage/styles/empty.css
Normal file
186
.config/homepage/styles/empty.css
Normal file
@ -0,0 +1,186 @@
|
||||
body {
|
||||
font-size: 13px !important;
|
||||
background: #000000!important;
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
a {
|
||||
color: #9cc4ff !important;
|
||||
}
|
||||
#archnavbar {
|
||||
min-height: 40px !important;
|
||||
padding: 10px 15px !important;
|
||||
background: #282a36 !important;
|
||||
border-bottom: 0px !important;
|
||||
}
|
||||
.article-content p, h4 a {
|
||||
font-size: 1.3em !important;
|
||||
}
|
||||
h4, h4 a, li a {
|
||||
font-size: 1.3em !important;
|
||||
}
|
||||
h4 a, li a, #content h1, #content h2, #content h3 {
|
||||
color: #82aaff !important;
|
||||
}
|
||||
#news h3 a {
|
||||
font-size: 1.3em !important;
|
||||
background: #82aaff !important;
|
||||
color: #282a36 !important;
|
||||
}
|
||||
h3 span.arrow {
|
||||
display: none !important;
|
||||
}
|
||||
#pkgsearch {
|
||||
background: #9cc4ff !important;
|
||||
}
|
||||
label {
|
||||
color: #282a36 !important;
|
||||
}
|
||||
.box {
|
||||
font-size: 1.3em;
|
||||
background: #000000 !important;
|
||||
color: #d0d0d0 !important;
|
||||
border: 1px solid #555 !important;
|
||||
}
|
||||
pre {
|
||||
background: #9cc4ff !important;
|
||||
margin: 1em 0px !important;
|
||||
border: 1px solid #666666 !important;
|
||||
}
|
||||
code {
|
||||
color: #282a36 !important;
|
||||
background: #9cc4ff !important;
|
||||
}
|
||||
p code {
|
||||
color: #000 !important;
|
||||
font-size: 12px !important;
|
||||
background: #ff8b92 !important;
|
||||
}
|
||||
|
||||
|
||||
dl dt{
|
||||
color: #ff8b92 !important;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
dd a{
|
||||
color: #82aaff !important;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
|
||||
/* ARCH WIKI */
|
||||
|
||||
#mw-panel .portal .body li {
|
||||
font-size: 0.9em !important;
|
||||
}
|
||||
#mw-panel .portal h3 {
|
||||
color: #ff8b92 !important;
|
||||
font-size: 0.9em !important;
|
||||
}
|
||||
#content {
|
||||
background: #282a36 !important;
|
||||
border: none !important;
|
||||
}
|
||||
#toc, .toc, .mw-warning, .toccolours {
|
||||
background-color: #000000 !important;
|
||||
border: 1px solid #666666 !important;
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
.tocnumber, .toctogglelabel {
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
.mw-body-content p {
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
div#mw-head {
|
||||
top: 38px !important;
|
||||
}
|
||||
div.vectorTabs li.selected {
|
||||
border: 1px solid #666666 !important;
|
||||
border-bottom-color: #666666 !important;
|
||||
background-color: #000000 !important;
|
||||
padding-bottom: 20px !important;
|
||||
}
|
||||
.vectorTabs span {
|
||||
background: none !important;
|
||||
}
|
||||
.catlinks {
|
||||
border: 1px solid #666666 !important;
|
||||
background-color: #000000 !important;
|
||||
}
|
||||
.mw-body, .parsoid-body {
|
||||
color: #d0d0d0 !important;
|
||||
font-size: 1.2em !important;
|
||||
}
|
||||
|
||||
|
||||
/* AUR */
|
||||
.results th {
|
||||
background-color: #282a36 !important;
|
||||
}
|
||||
.results tr:nth-child(2n+1), #article-list tr:nth-child(2n+1) {
|
||||
background: #282a36 !important;
|
||||
}
|
||||
.results tr:nth-child(2n), #article-list tr:nth-child(2n) {
|
||||
background: #1f212a !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ARCH FORUMS */
|
||||
#brdmenu, #brdmenu a {
|
||||
background: #000000 !important;
|
||||
border-color: #444444 !important;
|
||||
}
|
||||
#brdmenu.inbox {
|
||||
margin-left: 30px !important;
|
||||
}
|
||||
.pun, .punwrap {
|
||||
background: #282a36 !important;
|
||||
border: none !important;
|
||||
}
|
||||
.pun .blocktable th {
|
||||
background: #000000 !important;
|
||||
border-color: #000 !important;
|
||||
color: #ff8b92 !important;
|
||||
}
|
||||
#punindex .blocktable h2 {
|
||||
font-size: 1.2em !important;
|
||||
color: #ff8b92 !important;
|
||||
}
|
||||
tr.rowodd {
|
||||
background: #282a36 !important;
|
||||
}
|
||||
tr.roweven {
|
||||
background: #282a36 !important;
|
||||
}
|
||||
.pun .blocktable td {
|
||||
border-color: #444444 !important;
|
||||
}
|
||||
.pun .blockpost {
|
||||
background: #282a36 !important;
|
||||
border-color: #444444 !important;
|
||||
}
|
||||
.pun .blockpost h2 {
|
||||
background: #000000 !important;
|
||||
border: none !important;
|
||||
color: #82aaff !important;
|
||||
}
|
||||
.pun .blockpost .postbody, .pun .blockpost .postfoot {
|
||||
background: #282a36 !important;
|
||||
border-color: #444444 !important;
|
||||
}
|
||||
#punviewtopic .blockpost dt, #punmoderate .blockpost dt {
|
||||
top: -1.8em !important;
|
||||
color: #ff8b92 !important;
|
||||
}
|
||||
.pun .postmsg, #punhelp code, #punhelp samp {
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
.pun .codebox {
|
||||
border-color: #444444 !important;
|
||||
background: #9cc4ff !important;
|
||||
color: #000000 !important;
|
||||
}
|
||||
.pun .codebox pre {
|
||||
border: none !important;
|
||||
}
|
125
.config/homepage/styles/homepage.css
Normal file
125
.config/homepage/styles/homepage.css
Normal file
@ -0,0 +1,125 @@
|
||||
@import url('https://fonts.googleapis.com/css?family=Roboto+Mono');
|
||||
@import url('https://fonts.googleapis.com/css?family=Roboto');
|
||||
@import url('https://fonts.googleapis.com/css?family=Anton');
|
||||
|
||||
body {
|
||||
background-color: #282a36;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#clock {
|
||||
font-family: sans-serif;
|
||||
font-size: 4.0rem;
|
||||
font-weight: 600;
|
||||
font-family: "Anton";
|
||||
color: #fff;
|
||||
margin-bottom: .25em;
|
||||
}
|
||||
|
||||
#search {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background-color: #000000;
|
||||
display: none;
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
#search-field {
|
||||
width: 90%;
|
||||
padding: .75em 1em;
|
||||
box-sizing: border-box;
|
||||
background-color: #000000;
|
||||
border: solid 0px #000000;
|
||||
font-family: "Roboto Mono";
|
||||
font-size: 4rem;
|
||||
color: #f2f2f2;
|
||||
outline: none;
|
||||
border-radius: 3px;
|
||||
margin-bottom: 1em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.weather-container {
|
||||
width: 30%;
|
||||
background-color: #000000;
|
||||
padding: 1em;
|
||||
border-radius: 3px;
|
||||
font-family: "Roboto Mono";
|
||||
font-size: 1.2rem;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
.inline {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.bookmark-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
width: 60%;
|
||||
margin: 1em 0em;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
.container {
|
||||
height: auto;
|
||||
}
|
||||
#clock {
|
||||
margin-top: 1em;
|
||||
}
|
||||
.container > .bookmark-container {
|
||||
flex-direction: column;
|
||||
width: 60%;
|
||||
}
|
||||
.bookmark-container > .bookmark-set {
|
||||
width: auto;
|
||||
margin: 1em 0em;
|
||||
}
|
||||
}
|
||||
|
||||
.bookmark-set{
|
||||
padding: 1em;
|
||||
background-color: #000000;
|
||||
border-radius: 3px;
|
||||
font-family: "Roboto Mono";
|
||||
font-size: .85rem;
|
||||
width: 25%;
|
||||
height: 16em;
|
||||
margin: 0em .5em;
|
||||
}
|
||||
.bookmark-inner-container {
|
||||
overflow-y: scroll;
|
||||
height: 80%;
|
||||
vertical-align: top;
|
||||
}
|
||||
.bookmark-title {
|
||||
font-family: "Roboto";
|
||||
font-size: 1.2rem;
|
||||
font-weight: 600;
|
||||
color: #ededed;
|
||||
margin: 0em 0em .35em 0em;
|
||||
}
|
||||
.bookmark {
|
||||
text-decoration: none;
|
||||
color: #8c8c8b;
|
||||
display:block;
|
||||
margin: .4em 0em;
|
||||
}
|
||||
.bookmark:hover {
|
||||
color: #fff;
|
||||
}
|
||||
|
41
.config/homepage/styles/suckless.css
Normal file
41
.config/homepage/styles/suckless.css
Normal file
@ -0,0 +1,41 @@
|
||||
body {
|
||||
font-size: 13px;
|
||||
background-color: #282a36 !important;
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
|
||||
#header {
|
||||
background-color: #282a36 !important;
|
||||
clear: both;
|
||||
color: #c3e88d !important;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #82aaff !important;
|
||||
}
|
||||
|
||||
#header a {
|
||||
color: #e1acff !important;
|
||||
}
|
||||
|
||||
#menu {
|
||||
clear: both;
|
||||
color: #c792ea;
|
||||
font-weight: bold;
|
||||
overflow: hidden;
|
||||
padding: 0.7ex;
|
||||
border: 0px !important;
|
||||
}
|
||||
|
||||
#menu a {
|
||||
color: #d0d0d0 !important;
|
||||
}
|
||||
|
||||
#nav li a:hover {
|
||||
background-color: #282a36 !important;
|
||||
}
|
||||
|
||||
h1, h2 {
|
||||
color: #f07178 !important;
|
||||
}
|
||||
|
4
.config/homepage/styles/wikipedia.css
Normal file
4
.config/homepage/styles/wikipedia.css
Normal file
@ -0,0 +1,4 @@
|
||||
* {
|
||||
background-color: #282A36;
|
||||
color: #eee;
|
||||
}
|
19
.config/inputrc
Normal file
19
.config/inputrc
Normal file
@ -0,0 +1,19 @@
|
||||
$include /etc/inputrc
|
||||
set editing-mode vi
|
||||
$if mode=vi
|
||||
|
||||
set show-mode-in-prompt on
|
||||
set vi-ins-mode-string \1\e[6 q\2
|
||||
set vi-cmd-mode-string \1\e[2 q\2
|
||||
|
||||
set keymap vi-command
|
||||
# these are for vi-command mode
|
||||
Control-l: clear-screen
|
||||
Control-a: beginning-of-line
|
||||
|
||||
set keymap vi-insert
|
||||
# these are for vi-insert mode
|
||||
Control-l: clear-screen
|
||||
Control-a: beginning-of-line
|
||||
|
||||
$endif
|
69
.config/lf/lfrc
Normal file
69
.config/lf/lfrc
Normal file
@ -0,0 +1,69 @@
|
||||
# Luke's lf settings
|
||||
|
||||
# Basic vars
|
||||
set shell sh
|
||||
set previewer ~/.config/lf/scope
|
||||
set shellopts '-eu'
|
||||
set ifs "\n"
|
||||
set scrolloff 10
|
||||
set color256
|
||||
set icons # Enable icons. Requires nerd fonts and LF_ICONS variable.
|
||||
|
||||
# cmds/functions
|
||||
cmd open ${{
|
||||
case $(file --mime-type $f -b) in
|
||||
text/troff) man ./ $f;;
|
||||
text/*) $EDITOR $fx;;
|
||||
image/x-xcf|image/svg+xml) setsid gimp $f >/dev/null 2>&1 & ;;
|
||||
image/*) rotdir $f | setsid sxiv -aio 2>&1 | lf-select & ;;
|
||||
audio/*) mpv --input-ipc-server=/tmp/mpvsoc$(date +%%s) $f ;;
|
||||
video/*) setsid mpv --input-ipc-server=/tmp/mpvsoc$(date +%%s) $f -quiet >/dev/null 2>&1 & ;;
|
||||
application/pdf) setsid zathura $fx >/dev/null 2>&1 & ;;
|
||||
*) for f in $fx; do setsid $OPENER $f >/dev/null 2>&1 & done;;
|
||||
esac
|
||||
}}
|
||||
|
||||
cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
|
||||
|
||||
cmd delete ${{
|
||||
set -f
|
||||
printf "%s\n\t" "$fx"
|
||||
printf "delete?[y/N]"
|
||||
read ans
|
||||
[ $ans = "y" ] && rm -rf $fx
|
||||
}}
|
||||
|
||||
cmd moveto ${{
|
||||
set -f
|
||||
clear; echo "Move to where?"
|
||||
dest="$(cut -d' ' -f2- ~/.config/directories | fzf)" &&
|
||||
eval mv -iv $fx $dest &&
|
||||
notify-send "🚚 File(s) moved." "File(s) moved to $dest."
|
||||
}}
|
||||
|
||||
cmd copyto ${{
|
||||
set -f
|
||||
clear; echo "Copy to where?"
|
||||
dest="$(cut -d' ' -f2- ~/.config/directories | fzf)" &&
|
||||
eval cp -ivr $fx $dest &&
|
||||
notify-send "📋 File(s) copied." "File(s) copies to $dest."
|
||||
}}
|
||||
|
||||
# Bindings
|
||||
map c $lf -remote "send $id cd $(cut -d' ' -f2 ~/.config/directories | fzf)"
|
||||
map <c-f> $lf -remote "send $id select '$(fzf)'"
|
||||
map J $lf -remote "send $id cd $(cut -d' ' -f2 ~/.config/directories | fzf)"
|
||||
map gh
|
||||
map g top
|
||||
map D delete
|
||||
map C copyto
|
||||
map M moveto
|
||||
map a push %mkdir<space>
|
||||
map r push :rename<space>
|
||||
map R $lf -remote "send $id push :rename<space>$f"
|
||||
map <c-r> reload
|
||||
map <enter> shell
|
||||
map x $$f
|
||||
map X !$f
|
||||
map o &mimeopen $f
|
||||
map O $mimeopen --ask $f
|
59
.config/lf/scope
Executable file
59
.config/lf/scope
Executable file
@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -C -f -u
|
||||
#IFS=$'\n'
|
||||
IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
|
||||
|
||||
# ANSI color codes are supported.
|
||||
# STDIN is disabled, so interactive scripts won't work properly
|
||||
|
||||
# This script is considered a configuration file and must be updated manually.
|
||||
|
||||
# Meanings of exit codes:
|
||||
# code | meaning | action of ranger
|
||||
# -----+------------+-------------------------------------------
|
||||
# 0 | success | Display stdout as preview
|
||||
# 1 | no preview | Display no preview at all
|
||||
# 2 | plain text | Display the plain content of the file
|
||||
|
||||
# Script arguments
|
||||
FILE_PATH="${1}" # Full path of the highlighted file
|
||||
HEIGHT="${2}"
|
||||
|
||||
#FILE_EXTENSION="${FILE_PATH##*.}"
|
||||
#FILE_EXTENSION_LOWER=$(echo ${FILE_EXTENSION} | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
# Settings
|
||||
HIGHLIGHT_SIZE_MAX=262143 # 256KiB
|
||||
HIGHLIGHT_TABWIDTH=8
|
||||
HIGHLIGHT_STYLE='pablo'
|
||||
|
||||
|
||||
handle_mime() {
|
||||
local mimetype="${1}"
|
||||
case "${mimetype}" in
|
||||
text/html) w3m -dump "${FILE_PATH}" ;;
|
||||
text/troff) man ./ "${FILE_PATH}" | col -b ;;
|
||||
text/* | */xml)
|
||||
if [ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]; then
|
||||
exit 2
|
||||
fi
|
||||
if [ "$( tput colors )" -ge 256 ]; then
|
||||
local highlight_format='xterm256'
|
||||
else
|
||||
local highlight_format='ansi'
|
||||
fi
|
||||
highlight --replace-tabs="${HIGHLIGHT_TABWIDTH}" --out-format="${highlight_format}" \
|
||||
--style="${HIGHLIGHT_STYLE}" --force -- "${FILE_PATH}" ;;
|
||||
application/zip) atool --list -- "${FILE_PATH}" ;;
|
||||
image/*) chafa --fill=block --symbols=block -c 256 -s 80x"${HEIGHT}" "${FILE_PATH}" || exit 1;;
|
||||
audio/*|application/octet-stream) mediainfo "${FILE_PATH}" || exit 1;;
|
||||
video/*) ffmpegthumbnailer -s 0 -i "${FILE_PATH}" -m -o "$HOME/.cache/thumb.jpg" && chafa --fill=all --symbols=all -c 256 -s 80x80 "$HOME/.cache/thumb.jpg" || exit 1;;
|
||||
*/pdf) pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - ;;
|
||||
*opendocument*) odt2txt "${FILE_PATH}" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
|
||||
handle_mime "${MIMETYPE}"
|
||||
exit 1
|
26
.config/mpd/mpd.conf
Normal file
26
.config/mpd/mpd.conf
Normal file
@ -0,0 +1,26 @@
|
||||
db_file "~/.config/mpd/database"
|
||||
log_file "~/.config/mpd/log"
|
||||
music_directory "~/msc"
|
||||
playlist_directory "~/.config/mpd/playlists"
|
||||
pid_file "~/.config/mpd/pid"
|
||||
state_file "~/.config/mpd/state"
|
||||
sticker_file "~/.config/mpd/sticker.sql"
|
||||
|
||||
auto_update "yes"
|
||||
|
||||
bind_to_address "127.0.0.1"
|
||||
restore_paused "yes"
|
||||
max_output_buffer_size "16384"
|
||||
|
||||
audio_output {
|
||||
type "pulse"
|
||||
name "pulse audio"
|
||||
mixer_type "software"
|
||||
}
|
||||
|
||||
audio_output {
|
||||
type "fifo"
|
||||
name "toggle_visualizer"
|
||||
path "/tmp/mpd.fifo"
|
||||
format "44100:16:2"
|
||||
}
|
721
.config/mpd/playlists/lofi.m3u
Normal file
721
.config/mpd/playlists/lofi.m3u
Normal file
@ -0,0 +1,721 @@
|
||||
lofi/20190915-i found my home in your arms - lofi hip hop mix.opus
|
||||
lofi/20191208-1 A.M Study Session 📚 - [lofi hip hop_chill beats].opus
|
||||
lofi/20200316-Just take care of yourself ● lofi hip hop mix ● Nostalgia.opus
|
||||
lofi/20170505-close your eyes (lo-fi_chill mix).mkv
|
||||
lofi/20190127-【ASK ME OUT ON A DATE】_ Japanese Lofi _ Japanese_Anime Lofi Hip Hop Mix.m4a
|
||||
lofi/ikigai/20170327-Hazy Year - quit asking me for sandwiches.opus
|
||||
lofi/ikigai/20170328-engelwood - passing.by.opus
|
||||
lofi/ikigai/20170329-tomcbumpz - again.opus
|
||||
lofi/ikigai/20170330-potsu x Chance Thrash - selfish.opus
|
||||
lofi/ikigai/20170401-tristan. - ShadΣ..opus
|
||||
lofi/ikigai/20170402-awake - love of mine (prod. loprofile).opus
|
||||
lofi/ikigai/20170403-ÆkaSora - one day in Japan.opus
|
||||
lofi/ikigai/20170404-けm SURF - sid's lesson.m4a
|
||||
lofi/ikigai/20170405-HuggerMugger - Anywhere But Here.opus
|
||||
lofi/ikigai/20170406-krylic. - 3am.opus
|
||||
lofi/ikigai/20170410-Hazy Year - smoking on starstuff.opus
|
||||
lofi/ikigai/20170411-dreya - blue.opus
|
||||
lofi/ikigai/20170412-NarcolepZzz - bittersweet.opus
|
||||
lofi/ikigai/20170413-cyberchase - OH MANNN!!!!.opus
|
||||
lofi/ikigai/20170414-aclmte better days.opus
|
||||
lofi/ikigai/20170414-ikigai Merch!!!.opus
|
||||
lofi/ikigai/20170415-elijah who - hol up.opus
|
||||
lofi/ikigai/20170416-ldst - drm_sqnc (w_ 990x).opus
|
||||
lofi/ikigai/20170417-toph - purr-fect.opus
|
||||
lofi/ikigai/20170418-prima - autumn leaves..opus
|
||||
lofi/ikigai/20170419-mlshoto - the flower we saw that day.opus
|
||||
lofi/ikigai/20170422-potsu - Chinatown.opus
|
||||
lofi/ikigai/20170423-cαde sweτ - sincerely..opus
|
||||
lofi/ikigai/20170424-loprofile . - ☁️ entre.nubes. ☁️.opus
|
||||
lofi/ikigai/20170425-shogonodo - snowfield.opus
|
||||
lofi/ikigai/20170427-geerad - jets.m4a
|
||||
lofi/ikigai/20170428-tusken. - tusken soul.opus
|
||||
lofi/ikigai/20170429-NIKK BLVKK - Zephyr's Flutter.opus
|
||||
lofi/ikigai/20170430-sugi.wa - urtha1.opus
|
||||
lofi/ikigai/20170503-B I N A - children.opus
|
||||
lofi/ikigai/20170504-Aso - Loungin.opus
|
||||
lofi/ikigai/20170505-lildeath - banana split.opus
|
||||
lofi/ikigai/20170506-driver - take care.opus
|
||||
lofi/ikigai/20170507-Jayv - Sweater Weather [Jayv Mix].opus
|
||||
lofi/ikigai/20170510-Tentacle - Space.opus
|
||||
lofi/ikigai/20170512-ninjoi.- Misty.opus
|
||||
lofi/ikigai/20170513-Taiko - Leaves.opus
|
||||
lofi/ikigai/20170516-Chidi Himself - All Mine (demo).opus
|
||||
lofi/ikigai/20170517-elijah who - i've got her love.opus
|
||||
lofi/ikigai/20170519-rose image. dreaming on yoshi island. (w_ rose image.).opus
|
||||
lofi/ikigai/20170520-K a l i m a n - Rivers Of Thought.opus
|
||||
lofi/ikigai/20170521-chuckee. - gingerale..opus
|
||||
lofi/ikigai/20170522-Objektiv - broadwaze -.opus
|
||||
lofi/ikigai/20170523-KXLD. - I Really Wrote This For You..opus
|
||||
lofi/ikigai/20170525-elli - flower crown.opus
|
||||
lofi/ikigai/20170529-Veople - Miko.opus
|
||||
lofi/ikigai/20170530-sugi.wa - je t'aime.opus
|
||||
lofi/ikigai/20170531-lylo - onceagain.opus
|
||||
lofi/ikigai/20170602-ACS ONE - Amor.opus
|
||||
lofi/ikigai/20170606-Korporal K - Genki..m4a
|
||||
lofi/ikigai/20170608-potsu - moonglow.opus
|
||||
lofi/ikigai/20170609-Apollo - Why'd I Wait.opus
|
||||
lofi/ikigai/20170612-l o k a ! jinsang & loka! - espresso (ft. lucy weld).opus
|
||||
lofi/ikigai/20170613-potsu - holding your hand.opus
|
||||
lofi/ikigai/20170615-lando! - ~dream~.opus
|
||||
lofi/ikigai/20170618-The Albion - Home.opus
|
||||
lofi/ikigai/20170620-MVLI - Cat Dreams.opus
|
||||
lofi/ikigai/20170624-soho - sunsets.opus
|
||||
lofi/ikigai/20170626-Sugar Cane Davis - driving.opus
|
||||
lofi/ikigai/20170627-ldst biu ~ (w_ i eat plants for a living).opus
|
||||
lofi/ikigai/20170702-d3tails - alien days.opus
|
||||
lofi/ikigai/20170704-Idealism - Controlla.opus
|
||||
lofi/ikigai/20170705-cucu [回顧] - i don't trust nobody (feat. shiloh).opus
|
||||
lofi/ikigai/20170707-Zach Farache - The Loser (bimyo remix).opus
|
||||
lofi/ikigai/20170708-KUPLA - still breathing.opus
|
||||
lofi/ikigai/20170709-kasper - all of you.opus
|
||||
lofi/ikigai/20170710-driver - OWTC bootleg.opus
|
||||
lofi/ikigai/20170711-oschea - homemade soup.opus
|
||||
lofi/ikigai/20170712-SHIKARI 💔 - INFINITY.opus
|
||||
lofi/ikigai/20170714-zugzwang - eating skittles on the moon.opus
|
||||
lofi/ikigai/20170717-furino - about claudia (w_ importmedia).opus
|
||||
lofi/ikigai/20170718-potsu - holding your hand.opus
|
||||
lofi/ikigai/20170719-leavv - one day we will.opus
|
||||
lofi/ikigai/20170720-ブロックル miss u _ hate u.m4a
|
||||
lofi/ikigai/20170722-Orca Vibes - Journey.opus
|
||||
lofi/ikigai/20170723-afternoon - so mean ft. mxmtoon, samsa, love-sadKiD.opus
|
||||
lofi/ikigai/20170724-navienta - i'll keep going....opus
|
||||
lofi/ikigai/20170725-UPRIZE - Good Day.opus
|
||||
lofi/ikigai/20170729-best of boxboys.opus
|
||||
lofi/ikigai/20170731-mura;kami - snoozi'ng.opus
|
||||
lofi/ikigai/20170801-I Won't Lie - Timeless.opus
|
||||
lofi/ikigai/20170803-luv.ly - the girl from..opus
|
||||
lofi/ikigai/20170805-redflushed - showers.opus
|
||||
lofi/ikigai/20170807-mura;kami - rose in blue.opus
|
||||
lofi/ikigai/20170810-potsu x lando! - breakfast.opus
|
||||
lofi/ikigai/20170814-keshi - if youre not the one for me who is.opus
|
||||
lofi/ikigai/20170815-Richard orofino - not old enough (hateful remix).opus
|
||||
lofi/ikigai/20170816-Atwood - Most of my friends.m4a
|
||||
lofi/ikigai/20170817-chuckee. - my girl likes to skate in the afternoon.opus
|
||||
lofi/ikigai/20170819-sugiwa - the end.opus
|
||||
lofi/ikigai/20170820-Rook1e - loving u (w_ planttvibes).opus
|
||||
lofi/ikigai/20170821-Kogane - Sapporo.opus
|
||||
lofi/ikigai/20170824-Play Konoki - Forgive me.opus
|
||||
lofi/ikigai/20170825-NEW SUBMISSION SITE!.opus
|
||||
lofi/ikigai/20170826-mt.tkovr. 🗻- new kicks.m4a
|
||||
lofi/ikigai/20170829-biosphere - halfmoon.opus
|
||||
lofi/ikigai/20170830-yung quiet - flexxx.opus
|
||||
lofi/ikigai/20170831-hazy nights - this is the last song i'll ever write for you (no idea why mix).opus
|
||||
lofi/ikigai/20170903-NVTHVN - someday (ft. lanie & reacquainted).opus
|
||||
lofi/ikigai/20170904-olivia herdt ⁂ - a little lost [ olivia herdt x niquo ].opus
|
||||
lofi/ikigai/20170905-biosphere - dreaming of blueberry pancakes.opus
|
||||
lofi/ikigai/20170906-Liu BAE - Mocambo.opus
|
||||
lofi/ikigai/20170908-hakaisu - far away, yet somewhere.opus
|
||||
lofi/ikigai/20170912-afternoon - be the same (w_ boxboys).m4a
|
||||
lofi/ikigai/20170914-love-sadKiD - M.I.L.F. (prod. Frith).opus
|
||||
lofi/ikigai/20170916-Kogane - Sapporo.opus
|
||||
lofi/ikigai/20170917-yung quiet - blendn [prod laptopboy].opus
|
||||
lofi/ikigai/20170918-hakaisu - wishing it would rain.opus
|
||||
lofi/ikigai/20170920-through & through - stranger than fiction (w_ silk.y.).opus
|
||||
lofi/ikigai/20170923-nakun. - suematsu.opus
|
||||
lofi/ikigai/20170924-skirts - Don't Let Me Go (Demo).opus
|
||||
lofi/ikigai/20170926-redpest ☯ - Late night drives with her.opus
|
||||
lofi/ikigai/20171002-cucu [回顧] - i guess u forgot about me.opus
|
||||
lofi/ikigai/20171004-keshi - over u.m4a
|
||||
lofi/ikigai/20171007-legalvariety - my last hope.opus
|
||||
lofi/ikigai/20171008-Matt Quentin - Waves.opus
|
||||
lofi/ikigai/20171012-βeta max - tap water _ prod. mario.opus
|
||||
lofi/ikigai/20171013-afternoon - month & a half (ft. khai dreams, THIAGO & Atwood) prod. Afternoon & luv.ly.opus
|
||||
lofi/ikigai/20171015-that guitar sound we all like pt. 2.opus
|
||||
lofi/ikigai/20171018-biosphere - strangers (ft. love-sadKiD, Chris Wright, CIKI).opus
|
||||
lofi/ikigai/20171023-Rook1e - the cute girl from the froyo shop (w_ Sky.High).opus
|
||||
lofi/ikigai/20171025-knapsack - Hey Thursday.opus
|
||||
lofi/ikigai/20171027-ok2222 - im feeling sad so i made a sad song.opus
|
||||
lofi/ikigai/20171029-furino - i hope you love me back.opus
|
||||
lofi/ikigai/20171030-StriveAU - keep me warm (ft hazy nights).opus
|
||||
lofi/ikigai/20171031-Chopef - Deep Wood.opus
|
||||
lofi/ikigai/20171101-New Merch!!! Thank you for 40k!.opus
|
||||
lofi/ikigai/20171107-biosphere - it's a great big world.opus
|
||||
lofi/ikigai/20171111-KRAPF - this is how it feels to be by your side.opus
|
||||
lofi/ikigai/20171112-Fastoche - You're Finally Here.opus
|
||||
lofi/ikigai/20171114-Chopef - Sunset Talk.opus
|
||||
lofi/ikigai/20171115-βeta max - cherry red _ prod. Rook1e & j'san.opus
|
||||
lofi/ikigai/20171117-mochi - puzzles.opus
|
||||
lofi/ikigai/20171119-dybredly - i just feel like it.opus
|
||||
lofi/ikigai/20171122-hazy nights - because.opus
|
||||
lofi/ikigai/20171128-ok2222 - memories of us..opus
|
||||
lofi/ikigai/20171203-Fris - wonderful life.opus
|
||||
lofi/ikigai/20171205-groundfold - all we had is gone.opus
|
||||
lofi/ikigai/20171209-Oui Lele - x.opus
|
||||
lofi/ikigai/20171213-w00ds - d1st4nt.opus
|
||||
lofi/ikigai/20171215-Purple Hex - Spirals.opus
|
||||
lofi/ikigai/20171216-love-sadKiD - Breathe w_ Atwood (prod. bluknight).opus
|
||||
lofi/ikigai/20171217-Godzimo - Ma(n)ta.opus
|
||||
lofi/ikigai/20171218-ok2222 - i dont love you.opus
|
||||
lofi/ikigai/20171222-hazy nights - Stay..opus
|
||||
lofi/ikigai/20171225-biosphere - my merry christmas (ft. limbo, RYCE, Chris Wright).opus
|
||||
lofi/ikigai/20171227-flavors - umbrella.opus
|
||||
lofi/ikigai/20171229-korou. - journey..opus
|
||||
lofi/ikigai/20180102-redpest ☯ - Falling In Love Pt. 3.opus
|
||||
lofi/ikigai/20180103-June - It Seems Like.opus
|
||||
lofi/ikigai/20180104-barnes blvd. - now, i see.opus
|
||||
lofi/ikigai/20180107-sad boy with a laptop - you make my heart go doki doki.opus
|
||||
lofi/ikigai/20180108-The Walk - IDGAF.opus
|
||||
lofi/ikigai/20180109-Yotzu - Rainy Day.opus
|
||||
lofi/ikigai/20180114-June - Before Anyone Else.opus
|
||||
lofi/ikigai/20180115-saikenbeats - Templo de la belleza.opus
|
||||
lofi/ikigai/20180119-sad boy with a laptop - lets eat pocky and look at stars together.opus
|
||||
lofi/ikigai/20180122-keshi - say something (prod. Rook1e).opus
|
||||
lofi/ikigai/20180124-Odtsu - petit.opus
|
||||
lofi/ikigai/20180125-Peacock Affect - Who Cares If You Exist (Eisu remix).opus
|
||||
lofi/ikigai/20180128-khai dreams - Through and Through (Atwood Remix).opus
|
||||
lofi/ikigai/20180130-neeks - when you smile.opus
|
||||
lofi/ikigai/20180205-lil mochi - I Hate The Way I Dont Hate You_Put The Pen Down.opus
|
||||
lofi/ikigai/20180212-MEECHY -Soul Searchin.opus
|
||||
lofi/ikigai/20180214-Tyfon - Void (Prod. Lil Slump).opus
|
||||
lofi/ikigai/20180219-sad boy with a laptop - thanks for making my life a little more bearable.opus
|
||||
lofi/ikigai/20180220-Oui Lele -better days.opus
|
||||
lofi/ikigai/20180222-Julie Cool - really nothing.opus
|
||||
lofi/ikigai/20180226-Peter Kuli - Cozy w_ still haze.opus
|
||||
lofi/ikigai/20180227-kavv - Violet.opus
|
||||
lofi/ikigai/20180228-YNGBLOOD - Butterflies.opus
|
||||
lofi/ikigai/20180303-love-sadKiD - Students (Prod. Ka$tro).opus
|
||||
lofi/ikigai/20180306-fortnight - Aimlessly driftin.opus
|
||||
lofi/ikigai/20180307-jeiku - i just can't stay.opus
|
||||
lofi/ikigai/20180309-J E N - NO LUCIDITY.opus
|
||||
lofi/ikigai/20180312-through & through - your name.opus
|
||||
lofi/ikigai/20180314-w00ds - bl00m.opus
|
||||
lofi/ikigai/20180320-fortnight - 2000.opus
|
||||
lofi/ikigai/20180322-ok2222 - ocean of blue..opus
|
||||
lofi/ikigai/20180324-〘 E I S U 〙- Alone.opus
|
||||
lofi/ikigai/20180327-nekoi - starry.opus
|
||||
lofi/ikigai/20180328-itsnoday - it was just a fire drill.opus
|
||||
lofi/ikigai/20180330-aura - sunset breeze.opus
|
||||
lofi/ikigai/20180402-City Girl - runaway.opus
|
||||
lofi/ikigai/20180403-ok2222 x j'san - on and on feat. khai dreams & barnes blvd..opus
|
||||
lofi/ikigai/20180405-June - I'll Be Back.opus
|
||||
lofi/ikigai/20180406-neeks - your laugh is my favorite song.opus
|
||||
lofi/ikigai/20180408-Odtsu - always late.opus
|
||||
lofi/ikigai/20180410-MERCH AVAILABLE NOW.opus
|
||||
lofi/ikigai/20180411-Claine - Follow Your Dreams.opus
|
||||
lofi/ikigai/20180415-the sleep tape vol. 2 (lofi chill study mix 2019).opus
|
||||
lofi/ikigai/20180416-korou. - this place..opus
|
||||
lofi/ikigai/20180417-tired - yeaaa..m4a
|
||||
lofi/ikigai/20180418-burbank - i got sad when i realized it was a dream.opus
|
||||
lofi/ikigai/20180422-cvstuls - midwest depression.opus
|
||||
lofi/ikigai/20180425-🌺UGLY GIRL🌺- arthur has a bad day...opus
|
||||
lofi/ikigai/20180426-yung quiet - it's a lonely city [prod yung quiet].opus
|
||||
lofi/ikigai/20180430-potsu take me there w_ Chance Thrash.opus
|
||||
lofi/ikigai/20180502-through & through - alive.opus
|
||||
lofi/ikigai/20180505-MEECHY -I just want to live.opus
|
||||
lofi/ikigai/20180506-sad boy with a laptop - you're the dream i never wanna wake up from.opus
|
||||
lofi/ikigai/20180509-〘 E I S U 〙& masked man & lofty - Fall Apart.opus
|
||||
lofi/ikigai/20180510-fortnight - Benzie [87bpm].opus
|
||||
lofi/ikigai/20180511-nat - even the sky reminds me of you.opus
|
||||
lofi/ikigai/20180512-blkulv - Let Me Drown.opus
|
||||
lofi/ikigai/20180513-STEFAN - Got What U Need (prod. Derrick Pannther).opus
|
||||
lofi/ikigai/20180515-potsu - food court.opus
|
||||
lofi/ikigai/20180516-Smitty Mamba - R O O F T O P.opus
|
||||
lofi/ikigai/20180519-Slipfunc - moonwalkin.opus
|
||||
lofi/ikigai/20180521-Prod. Seany OWE - Could I Ever Be Loved Feat. Little Kuma.opus
|
||||
lofi/ikigai/20180524-kavv - Sweetheart.opus
|
||||
lofi/ikigai/20180525-theor - smoke gets in your eyes.opus
|
||||
lofi/ikigai/20180527-ok2222 x keshi - beside you.opus
|
||||
lofi/ikigai/20180528-slipfunc - summer luv.opus
|
||||
lofi/ikigai/20180529-sad boy with a laptop - you're the dream i never wanna wake up from (new beat tape in description).opus
|
||||
lofi/ikigai/20180601-Mon-Day - u r cute.opus
|
||||
lofi/ikigai/20180603-w00ds - kula world (dive).opus
|
||||
lofi/ikigai/20180606-Powfu - feel it all (Prod. aquinaswc).m4a
|
||||
lofi/ikigai/20180610-theor - august.opus
|
||||
lofi/ikigai/20180611-June - Go.opus
|
||||
lofi/ikigai/20180612-Sonorous - Outside.opus
|
||||
lofi/ikigai/20180613-nion - bright.opus
|
||||
lofi/ikigai/20180621-nat. - petrichor (w_ leftonseen).opus
|
||||
lofi/ikigai/20180623-Powfu - i could never be loved (Prod. Seany OWE).opus
|
||||
lofi/ikigai/20180624-nemo - lakes sunset drive (prod. osed.trunks).opus
|
||||
lofi/ikigai/20180625-biosphere - pastel sunset [w_ barnes blvd.].opus
|
||||
lofi/ikigai/20180626-Donny - Block Motion (prod. knapsack).opus
|
||||
lofi/ikigai/20180628-love-sadKiD - Control (prod. tomcbumpz).opus
|
||||
lofi/ikigai/20180630-glass pattern - twintails.opus
|
||||
lofi/ikigai/20180701-sad boy with a laptop - you deserve more.m4a
|
||||
lofi/ikigai/20180702-Powfu - days we had _ Feat. king theta (Prod. Jayhmez).opus
|
||||
lofi/ikigai/20180704-Oui Lele - shiny eyes.opus
|
||||
lofi/ikigai/20180710-w00ds - Cloud Driftin.opus
|
||||
lofi/ikigai/20180712-lil mochi - good morning.opus
|
||||
lofi/ikigai/20180713-ok2222 - space travels (music video).opus
|
||||
lofi/ikigai/20180716-DeadPlanets - Perfect Circle.opus
|
||||
lofi/ikigai/20180717-Kalaido - Hanging Lanterns.opus
|
||||
lofi/ikigai/20180718-luv.ly - hadda letcha know.m4a
|
||||
lofi/ikigai/20180719-the girl next door - roses in france.opus
|
||||
lofi/ikigai/20180720-Kudasai album anouncement - white noise.opus
|
||||
lofi/ikigai/20180722-〘 E I S U 〙- As Long As I Got You [feat. Madson Project.].opus
|
||||
lofi/ikigai/20180724-slipfunc - cherry smile.opus
|
||||
lofi/ikigai/20180725-lost-fi - Opportunity.opus
|
||||
lofi/ikigai/20180728-NVTHVN x park bird - Dance in the Living Room (ft. Forrest. & ok2222).opus
|
||||
lofi/ikigai/20180730-marc - Oceans w_ demxntia & Indii G..opus
|
||||
lofi/ikigai/20180731-rené - january.opus
|
||||
lofi/ikigai/20180802-north takoda - when the night falls.opus
|
||||
lofi/ikigai/20180805-karson - it'll be ok.opus
|
||||
lofi/ikigai/20180808-druid - doom.opus
|
||||
lofi/ikigai/20180809-House Pet - UP ALL NIGHT.opus
|
||||
lofi/ikigai/20180810-slipfunc - amid the flowers..opus
|
||||
lofi/ikigai/20180813-zenben55 - BLOOD PART 2.opus
|
||||
lofi/ikigai/20180814-w00ds - part of you.opus
|
||||
lofi/ikigai/20180815-Mon-Day - ive been tired.opus
|
||||
lofi/ikigai/20180817-lofi.samurai - honey.opus
|
||||
lofi/ikigai/20180818-Kudasai - Overcast.opus
|
||||
lofi/ikigai/20180822-kavv - beach night.opus
|
||||
lofi/ikigai/20180824-Claine - So into YOU.m4a
|
||||
lofi/ikigai/20180825-kelpie - confession.opus
|
||||
lofi/ikigai/20180826-sad boy with a laptop - you were so far away.opus
|
||||
lofi/ikigai/20180827-olielle x catcat - i just wanna love u.opus
|
||||
lofi/ikigai/20180829-@sadisasxx - ☆love letter☆.opus
|
||||
lofi/ikigai/20180830-Monty Datta - Childhood Memories.opus
|
||||
lofi/ikigai/20180902-The Walk - Cherry Smile (prod. slipfunc).opus
|
||||
lofi/ikigai/20180903-yuutsu - desire.opus
|
||||
lofi/ikigai/20180904-Jordan Maxwell - I Couldn't.opus
|
||||
lofi/ikigai/20180905-slipfunc - sweet nothing.opus
|
||||
lofi/ikigai/20180906-SØReclusive - Street Light.opus
|
||||
lofi/ikigai/20180907-PinkPools. - Feel it..opus
|
||||
lofi/ikigai/20180908-bluedoom - I was thinking about us.opus
|
||||
lofi/ikigai/20180909-tired - i never want to lose her.opus
|
||||
lofi/ikigai/20180910-MOSHi - Without you..opus
|
||||
lofi/ikigai/20180911-slipfunc - glance.opus
|
||||
lofi/ikigai/20180912-Danny Bonsai - far away.opus
|
||||
lofi/ikigai/20180914-K The Infinite - ..insta girl & her mask ft. emawk.opus
|
||||
lofi/ikigai/20180915-nilöwh. - the night hides our tears.opus
|
||||
lofi/ikigai/20180916-@sadidasxx - ✰goodbye✰.opus
|
||||
lofi/ikigai/20180917-S M I T T Y M A M B A - T O O L A T E.m4a
|
||||
lofi/ikigai/20180918-slipfunc - drowning in her eyes.opus
|
||||
lofi/ikigai/20180920-marc - Parachute.opus
|
||||
lofi/ikigai/20180923-Powfu - i know you're not happy.opus
|
||||
lofi/ikigai/20180924-laevi - Everyone was pretending to be someone else.opus
|
||||
lofi/ikigai/20180926-w00ds - Auburn Eyes (ft. Thomas Reid).opus
|
||||
lofi/ikigai/20180927-ohsobrkn - why am i so different.opus
|
||||
lofi/ikigai/20180928-StrangeMood - Memories.opus
|
||||
lofi/ikigai/20180930-slipfunc - lust in translation.opus
|
||||
lofi/ikigai/20181002-House On The Hill - Be Alright w_ Madson..opus
|
||||
lofi/ikigai/20181003-mewsyc ツ- i'm never good enough..opus
|
||||
lofi/ikigai/20181004-h̷x̷p̷e̷ - feels like were dying.opus
|
||||
lofi/ikigai/20181005-Powfu - breakfast with the moon (Prod. Slipfunc).opus
|
||||
lofi/ikigai/20181007-sad boy with a laptop - i was lost until i met you.opus
|
||||
lofi/ikigai/20181008-nekoi ✨- i can't describe this feeling..opus
|
||||
lofi/ikigai/20181009-✰sadidas✰ - for the last time, forever.opus
|
||||
lofi/ikigai/20181010-TheLazzyProject - Emotions.opus
|
||||
lofi/ikigai/20181011-MOSHi - dead feelings.opus
|
||||
lofi/ikigai/20181012-slipfunc - lovesick hug.opus
|
||||
lofi/ikigai/20181016-Huey Daze - Take You There.opus
|
||||
lofi/ikigai/20181017-Skinny Atlas - Stitches To Your Scars (feat. Mishaal).opus
|
||||
lofi/ikigai/20181019-the notglorious mike. - power..opus
|
||||
lofi/ikigai/20181021-omar - serene.opus
|
||||
lofi/ikigai/20181023-Teqkoi - You Broke My Heart Again (ft. Aiko).opus
|
||||
lofi/ikigai/20181024-slipfunc - cherish.opus
|
||||
lofi/ikigai/20181025-Prod. Seany OWE - Stay Ft. Ariel McCleary.opus
|
||||
lofi/ikigai/20181026-hamzah - im never coming down.opus
|
||||
lofi/ikigai/20181028-DominusBeats x BVG - i'm so tired of disappointing you.opus
|
||||
lofi/ikigai/20181029-Mon-Day - the snooze button is my bff.m4a
|
||||
lofi/ikigai/20181030-lofi.samurai - dearest.opus
|
||||
lofi/ikigai/20181101-House Pet - 103.opus
|
||||
lofi/ikigai/20181104-Powfu - nothing matters _ Feat. QAWI KAMRI.opus
|
||||
lofi/ikigai/20181105-Chedum - Seikatsu.opus
|
||||
lofi/ikigai/20181106-jack cates - tap dance.opus
|
||||
lofi/ikigai/20181107-blkulv - So Close.opus
|
||||
lofi/ikigai/20181110-Charlie Myles - this is crack {open a book}.opus
|
||||
lofi/ikigai/20181111-faceless boy. & Kalon - promised not to break my heart (ft. dhan).opus
|
||||
lofi/ikigai/20181113-slipfunc - warm thoughts w_ omar.opus
|
||||
lofi/ikigai/20181114-w00ds - fallen leaves.opus
|
||||
lofi/ikigai/20181115-e.c.l.i.p.s.3 - Alicia's Song.opus
|
||||
lofi/ikigai/20181116-Kyaru - Graveyards and Gardens (feat. pluto).opus
|
||||
lofi/ikigai/20181117-the girl next door - amor..opus
|
||||
lofi/ikigai/20181118-david shouji - deliriant.opus
|
||||
lofi/ikigai/20181119-arnd & arnd - moonlight..opus
|
||||
lofi/ikigai/20181120-slipfunc - under your spell.opus
|
||||
lofi/ikigai/20181121-Alicks - Passed [eisu edit].opus
|
||||
lofi/ikigai/20181122-Skinny Atlas X Teqkoi - Don't Let Me Go.opus
|
||||
lofi/ikigai/20181123-K Ø M E R - as i wait....opus
|
||||
lofi/ikigai/20181124-SpoonBeats - Hello There 2 ft Call Me B.opus
|
||||
lofi/ikigai/20181125-Claine - Life's Anecdote.opus
|
||||
lofi/ikigai/20181126-Powfu - scars on my heart _ Feat. SadBoyProlific (Prod. Slipfunc).opus
|
||||
lofi/ikigai/20181127-Sal Dulu - Duluoz Dream.opus
|
||||
lofi/ikigai/20181128-New ikigai merch, Thank you for 200k!.opus
|
||||
lofi/ikigai/20181130-sad boy with a laptop - quiet walks on a snowy street.opus
|
||||
lofi/ikigai/20181201-omar - i've got my eye on you.opus
|
||||
lofi/ikigai/20181202-u.lømi - s]i[mile.opus
|
||||
lofi/ikigai/20181203-the girl next door - lovesick..opus
|
||||
lofi/ikigai/20181204-What I Wish - 2am.opus
|
||||
lofi/ikigai/20181205-SpoonBeats - GunShot.opus
|
||||
lofi/ikigai/20181207-nekoi ✨ - exist.opus
|
||||
lofi/ikigai/20181208-Teqkoi x Powfu - You Melt Away The Snow.opus
|
||||
lofi/ikigai/20181209-hateful - a girl i've barely spoken to.opus
|
||||
lofi/ikigai/20181210-omar - light w_ H E R B.opus
|
||||
lofi/ikigai/20181211-K Ø M E R - rainy season 001..opus
|
||||
lofi/ikigai/20181212-nekoi ✨ - fragile.opus
|
||||
lofi/ikigai/20181213-slipfunc - upon my skin.opus
|
||||
lofi/ikigai/20181214-w00ds - sleepless.opus
|
||||
lofi/ikigai/20181216-Slushii - 09. Stargazing.opus
|
||||
lofi/ikigai/20181218-To Uyen - GLANCE (pro. Slipfunc).opus
|
||||
lofi/ikigai/20181219-What I Wish - Reflections.opus
|
||||
lofi/ikigai/20181220-StrangeMood - He’s Okey.opus
|
||||
lofi/ikigai/20181221-Eddy Rock x bill.suave x June - Affection.opus
|
||||
lofi/ikigai/20181222-omar - was i not good enough.opus
|
||||
lofi/ikigai/20181223-Powfu - running through the rain.opus
|
||||
lofi/ikigai/20181224-House On The Hill HOTHMAS.opus
|
||||
lofi/ikigai/20181225-DominusBeats - i just don't understand.opus
|
||||
lofi/ikigai/20181226-nekoi - weight of the world.opus
|
||||
lofi/ikigai/20181227-zamir - flowers in my soul w_ Alys (prod. by weirddough).opus
|
||||
lofi/ikigai/20181228-memoryse. - 「 Alone 」.opus
|
||||
lofi/ikigai/20181230-hateful - take me away.opus
|
||||
lofi/ikigai/20190101-Madson. - Go To Sleep (ft. Forrest.).opus
|
||||
lofi/ikigai/20190102-singular balance - we forgot each other's words.opus
|
||||
lofi/ikigai/20190103-Slushii - 04. Stay.opus
|
||||
lofi/ikigai/20190104-slipfunc - until dawn.opus
|
||||
lofi/ikigai/20190105-SLIPPERY SALAZAR - JALAPENO.opus
|
||||
lofi/ikigai/20190106-diebonsai - i'm awake, thank u.opus
|
||||
lofi/ikigai/20190107-kochetkovv - I Love You, That's The Problem.opus
|
||||
lofi/ikigai/20190108-StrangeMood - Sur la route.opus
|
||||
lofi/ikigai/20190109-Ice Cream Cult - Snow day! (ft. Joey Boone).opus
|
||||
lofi/ikigai/20190110-Madson. - Kill The Voice Inside Your Head.opus
|
||||
lofi/ikigai/20190111-R.E.G! - Made in aBliss.opus
|
||||
lofi/ikigai/20190112-nilöwh. - a sweet beginning.opus
|
||||
lofi/ikigai/20190113-MEECHY - Voyage.opus
|
||||
lofi/ikigai/20190114-porou. - clear ft. silh.opus
|
||||
lofi/ikigai/20190115-cxld blxxd - my last episode.opus
|
||||
lofi/ikigai/20190116-sorrow bringer - joy.opus
|
||||
lofi/ikigai/20190117-tired - Disjointed.opus
|
||||
lofi/ikigai/20190118-Charlie Myles - what a waste of time {is money}.opus
|
||||
lofi/ikigai/20190121-Medda - Watch her go (w_ Omar).opus
|
||||
lofi/ikigai/20190122-singular balance - goodbyes.opus
|
||||
lofi/ikigai/20190123-Kudasai - Acid Rain.opus
|
||||
lofi/ikigai/20190124-Teqkoi - understand that i'm in love with you.opus
|
||||
lofi/ikigai/20190125-Claine - Saotome.opus
|
||||
lofi/ikigai/20190127-Madson. - Never Die.opus
|
||||
lofi/ikigai/20190128-Dream Easy Collective - Ikigai Tape (1 Hour Mix).opus
|
||||
lofi/ikigai/20190129-cxld blxxd - lost.opus
|
||||
lofi/ikigai/20190130-the girl next door - you said we would last..opus
|
||||
lofi/ikigai/20190201-kavv - now that you're gone.opus
|
||||
lofi/ikigai/20190202-slipfunc - days with you.opus
|
||||
lofi/ikigai/20190203-☆𝔤𝔥𝔬𝔰𝔱 𝔰𝔱𝔬𝔯𝔦𝔢𝔰☆ - i brought you here, but you don't remember it.opus
|
||||
lofi/ikigai/20190204-omar - another daydream.opus
|
||||
lofi/ikigai/20190205-matt jordan - bored.opus
|
||||
lofi/ikigai/20190206-GrayView - Lonely Summer Day.m4a
|
||||
lofi/ikigai/20190208-l e a f s愛 - When you're gone.opus
|
||||
lofi/ikigai/20190209-Lo'Fi Boy - I Know What You Need (Feat. Shiloh Dynasty).opus
|
||||
lofi/ikigai/20190210-a l e x - (sad song title).opus
|
||||
lofi/ikigai/20190211-mewsyc ツ - i think i'm done with you..opus
|
||||
lofi/ikigai/20190212-MOSHi - daydream.opus
|
||||
lofi/ikigai/20190214-cxld blxxd - think of you.opus
|
||||
lofi/ikigai/20190215-nat - leaving.opus
|
||||
lofi/ikigai/20190216-theor - away.opus
|
||||
lofi/ikigai/20190218-Snøw & Teqkoi - I never wanna lose you.opus
|
||||
lofi/ikigai/20190220-lofish - where are you.opus
|
||||
lofi/ikigai/20190222-Charlie Myles - everything means nothing.opus
|
||||
lofi/ikigai/20190223-mell-ø - Musing( w_Haru Pandi).opus
|
||||
lofi/ikigai/20190225-omar - away from here.opus
|
||||
lofi/ikigai/20190226-Lo'Fi Boy - Top Ten Anime Plot Twists.opus
|
||||
lofi/ikigai/20190227-slipfunc - another chance.opus
|
||||
lofi/ikigai/20190228-Sauce K -----km away [INTERLUDE] (prod. by sauce k).opus
|
||||
lofi/ikigai/20190301-Kupla - Broken Wings.opus
|
||||
lofi/ikigai/20190302-u.lømi - blossom.opus
|
||||
lofi/ikigai/20190303-Sad Boy With A Laptop - Ice Cream Dates.opus
|
||||
lofi/ikigai/20190304-Maxwell - Just... Stop....opus
|
||||
lofi/ikigai/20190306-slipfunc - hazel eyes.opus
|
||||
lofi/ikigai/20190309-Ellis H. - Show Me.opus
|
||||
lofi/ikigai/20190310-tired - Late Night Walk.opus
|
||||
lofi/ikigai/20190311-TOMii - i’ll find her someday.opus
|
||||
lofi/ikigai/20190312-cafe.wav - missing.you.opus
|
||||
lofi/ikigai/20190313-omar - without you w_ slipfunc.opus
|
||||
lofi/ikigai/20190314-Uzu - losing you is my worst nightmare.opus
|
||||
lofi/ikigai/20190316-kavv - misty [demo].opus
|
||||
lofi/ikigai/20190317-Make Major - Regret.opus
|
||||
lofi/ikigai/20190318-kochetkovv - Only U.opus
|
||||
lofi/ikigai/20190319-Teqkoi - don't you play your games.opus
|
||||
lofi/ikigai/20190320-J E N - recalling the memories.opus
|
||||
lofi/ikigai/20190321-cxld blxxd - stay.opus
|
||||
lofi/ikigai/20190323-Shinkō - Sins.opus
|
||||
lofi/ikigai/20190324-Dominus x Slipfunc - i was born to be free.opus
|
||||
lofi/ikigai/20190326-Sxul👁️魂👁️ - Save Yourself.opus
|
||||
lofi/ikigai/20190327-tired - Night Out.opus
|
||||
lofi/ikigai/20190328-StrangeMood - Im Not Feeling Blue Im Feeling Black ( Feat . Larissa ).opus
|
||||
lofi/ikigai/20190329-fenoaltea - i still remember the day you left this house.opus
|
||||
lofi/ikigai/20190331-ENRA - saudade.opus
|
||||
lofi/ikigai/20190401-Powfu - met at a party _ Feat. Kuzu Mellow.opus
|
||||
lofi/ikigai/20190402-Tander - be me, sad. (ft. Francis Bhein).opus
|
||||
lofi/ikigai/20190403-Teqkoi - Stay With Me (feat. Mouse).opus
|
||||
lofi/ikigai/20190404-Kayou. - It's Not Worth It.opus
|
||||
lofi/ikigai/20190405-Zaini - you're the only one (ft. Vict Molina).opus
|
||||
lofi/ikigai/20190407-imfinenow - But I Still Get Social Anxiety Attacks.opus
|
||||
lofi/ikigai/20190408-slipfunc - always luv.opus
|
||||
lofi/ikigai/20190409-Resident - Lemonade.opus
|
||||
lofi/ikigai/20190410-cxld blxxd - last fall.opus
|
||||
lofi/ikigai/20190411-Kayou. - i don't deserve her.opus
|
||||
lofi/ikigai/20190413-sad boy with a laptop - portals to mystical worlds.opus
|
||||
lofi/ikigai/20190415-ブロックル - a catharsis in her eyes (w_ ibrahim).opus
|
||||
lofi/ikigai/20190416-Jacob Seth - heart racing.opus
|
||||
lofi/ikigai/20190417-neeks summer awaits - (feat. sad boy with a laptop).opus
|
||||
lofi/ikigai/20190418-w00ds - all my friends (w_ powfu).opus
|
||||
lofi/ikigai/20190421-Too☀️ - i wish i could see you again.opus
|
||||
lofi/ikigai/20190422-Oui Lele -locket.opus
|
||||
lofi/ikigai/20190423-fenoaltea - i have to go now.opus
|
||||
lofi/ikigai/20190424-marc - Give Me A Chance.opus
|
||||
lofi/ikigai/20190425-NEW IKIGAI MERCH AVAILABLE NOW.opus
|
||||
lofi/ikigai/20190426-Thomas Reid & insomnia - I Like it.opus
|
||||
lofi/ikigai/20190427-Sxul👁️魂👁️ - more than ever.opus
|
||||
lofi/ikigai/20190428-nilöwh. - sing me a sad song.opus
|
||||
lofi/ikigai/20190429-Resident - if youre still around then please feel this moment with me.opus
|
||||
lofi/ikigai/20190430-ENRA seeking warmth w_ sleepermane.opus
|
||||
lofi/ikigai/20190501-the girl next door - roses on coffins w_ porou.opus
|
||||
lofi/ikigai/20190502-Wolfskind & Bayuk - Overdose.opus
|
||||
lofi/ikigai/20190503-Abbey Glover - all the things she said (slipfunc edit).opus
|
||||
lofi/ikigai/20190504-Gill Chang - LIMBO.opus
|
||||
lofi/ikigai/20190506-sad boy with a laptop - anywhere next to you.opus
|
||||
lofi/ikigai/20190507-toveii - isolated.opus
|
||||
lofi/ikigai/20190509-Kerusu - Remembrance.opus
|
||||
lofi/ikigai/20190510-arnd & arnd - directions..opus
|
||||
lofi/ikigai/20190513-frrb - I'm so nervous.opus
|
||||
lofi/ikigai/20190514-theor - waiting.opus
|
||||
lofi/ikigai/20190515-diebonsai - jail court.opus
|
||||
lofi/ikigai/20190516-cxld blxxd - heaven beside her.opus
|
||||
lofi/ikigai/20190518-Woven In Hiatus - ill walk you home.opus
|
||||
lofi/ikigai/20190519-frrb - Growing.opus
|
||||
lofi/ikigai/20190520-Resident - Halo.opus
|
||||
lofi/ikigai/20190525-theor - days.opus
|
||||
lofi/ikigai/20190526-Imfinenow - Bright Night.opus
|
||||
lofi/ikigai/20190527-dontaskalex - 'h e a v e n'.opus
|
||||
lofi/ikigai/20190528-NXCRE - Room 28 [Prod. fantompower].opus
|
||||
lofi/ikigai/20190531-Oui Lele -hurt.opus
|
||||
lofi/ikigai/20190601-dontaskalex - 'e l u s i v e'.opus
|
||||
lofi/ikigai/20190602-diebonsai - wvs.opus
|
||||
lofi/ikigai/20190604-theor - remember.opus
|
||||
lofi/ikigai/20190605-lost-fi - wishes.opus
|
||||
lofi/ikigai/20190606-osedtrunks - can't hide, won't hide. (ft. nevi & matt fletcher).opus
|
||||
lofi/ikigai/20190607-slipfunc - stay the night.opus
|
||||
lofi/ikigai/20190608-INTRN - Headspace.opus
|
||||
lofi/ikigai/20190609-Charlie Myles - thank you {mean the world}.opus
|
||||
lofi/ikigai/20190610-Iam6teen - heartaches.opus
|
||||
lofi/ikigai/20190611-cxld blxxd - dead silence.opus
|
||||
lofi/ikigai/20190613-SEA all - night long.opus
|
||||
lofi/ikigai/20190614-Iam6teen - mind.opus
|
||||
lofi/ikigai/20190615-insomnia - we said goodbye for the last time [w_ Artemis Orion & Resident].opus
|
||||
lofi/ikigai/20190617-slipfunc - honeycomb.opus
|
||||
lofi/ikigai/20190618-Grimmwav - LOST.opus
|
||||
lofi/ikigai/20190619-J E N -love me.opus
|
||||
lofi/ikigai/20190621-hateful - thought i had it all figured out.opus
|
||||
lofi/ikigai/20190622-Mon-Day - flyhigh.opus
|
||||
lofi/ikigai/20190623-toveii - i ruined me.opus
|
||||
lofi/ikigai/20190624-diebonsai - uncomfortable.opus
|
||||
lofi/ikigai/20190626-tired - Waking Up Next To You.opus
|
||||
lofi/ikigai/20190627-Lil Nas X - panini ( im.fine lofi remix).opus
|
||||
lofi/ikigai/20190629-nilöwh. - i hope u can forgive me.opus
|
||||
lofi/ikigai/20190630-Iam6teen - hey let's get some coffee.opus
|
||||
lofi/ikigai/20190701-Tenno - Memories.opus
|
||||
lofi/ikigai/20190704-lesspoint - dusk.opus
|
||||
lofi/ikigai/20190705-nilöwh. - there you go in my dreams again.opus
|
||||
lofi/ikigai/20190707-Jay Musey - Self.opus
|
||||
lofi/ikigai/20190708-slipfunc - warm but not in love.opus
|
||||
lofi/ikigai/20190709-dontaskalex - t o u c h.opus
|
||||
lofi/ikigai/20190710-ENRA - i have to leave now.opus
|
||||
lofi/ikigai/20190711-jades - November Snow prod. 8ROKEBOY.opus
|
||||
lofi/ikigai/20190713-Resident - Polaroid.opus
|
||||
lofi/ikigai/20190715-tysu - missing her.opus
|
||||
lofi/ikigai/20190718-🌸 JameirKGolden 🌸 - Losing My Mind (Ft.Shiloh Dynasty).opus
|
||||
lofi/ikigai/20190719-w00ds - Out Of Love.opus
|
||||
lofi/ikigai/20190720-Sxul👁️ - remember to remember.opus
|
||||
lofi/ikigai/20190721-Thomas Reid - A Day Dream Date With You (prod. 8ROKEBOY).opus
|
||||
lofi/ikigai/20190722-frrb - I try really hard....opus
|
||||
lofi/ikigai/20190723-cxld blxxd - alive.opus
|
||||
lofi/ikigai/20190727-spencer hunt - i just want it to stop..opus
|
||||
lofi/ikigai/20190728-nilöwh. - resonance.opus
|
||||
lofi/ikigai/20190729-ohji - assuming w_ jasmine kelly [prod. theor].opus
|
||||
lofi/ikigai/20190730-w00ds - In My Head.opus
|
||||
lofi/ikigai/20190801-Madson. I Hate The One That I Was Before.opus
|
||||
lofi/ikigai/20190802-Zaini - Not Enough (ft. Vict Molina).opus
|
||||
lofi/ikigai/20190803-Ondi Vil & Skinny Atlas - No More Tears (ft. Thomas Reid).opus
|
||||
lofi/ikigai/20190804-the girl next door.- for the best.opus
|
||||
lofi/ikigai/20190805-CHELJI - drip.opus
|
||||
lofi/ikigai/20190806-you probably don't even like me....opus
|
||||
lofi/ikigai/20190807-Powfu - would look perfect feat. Rxseboy (Prod. Prettiboi).m4a
|
||||
lofi/ikigai/20190808-nekoi - for you.opus
|
||||
lofi/ikigai/20190809-hateful - too afraid.opus
|
||||
lofi/ikigai/20190810-frrb - loser.opus
|
||||
lofi/ikigai/20190811-Resident - Paralyzed.opus
|
||||
lofi/ikigai/20190812-CHELJI - Hypocrite.opus
|
||||
lofi/ikigai/20190813-marc indigo - accountable (prod. sensu).opus
|
||||
lofi/ikigai/20190814-slipfunc - you're not real.opus
|
||||
lofi/ikigai/20190815-nilöwh. - that's what she loved about me.opus
|
||||
lofi/ikigai/20190816-Powfu - koolaid summers _ feat. rxseboy.opus
|
||||
lofi/ikigai/20190817-nekoi - end of a summer.opus
|
||||
lofi/ikigai/20190819-dontaskalex - i n s a n e.opus
|
||||
lofi/ikigai/20190820-@rxseboy - anime song (prod. deadman 死人).opus
|
||||
lofi/ikigai/20190821-spencer hunt - it gets easier..opus
|
||||
lofi/ikigai/20190822-ENRA & Sleepermane - getaway.opus
|
||||
lofi/ikigai/20190823-tired - Moving Forward.opus
|
||||
lofi/ikigai/20190824-@rxseboy - heartbeat conversations (prod. slipfunc).opus
|
||||
lofi/ikigai/20190825-belis ✩ - HYSTERICAL GLAMOUR (prod iankon).opus
|
||||
lofi/ikigai/20190826-spencer hunt - you'll be okay, i promise..opus
|
||||
lofi/ikigai/20190827-burbank - the more i see you w_ tysu.opus
|
||||
lofi/ikigai/20190829-sweet medicine & mindeliq - lake rosa.opus
|
||||
lofi/ikigai/20190830-nekoi - glass.opus
|
||||
lofi/ikigai/20190901-nat - summer '19.opus
|
||||
lofi/ikigai/20190902-frrb - Soulmates.opus
|
||||
lofi/ikigai/20190903-NEW IKIGAI MERCH OUT NOW, LINK IN THE DESCRIPTION !.opus
|
||||
lofi/ikigai/20190904-wavegxd - sunny day.opus
|
||||
lofi/ikigai/20190906-ENRA & Sleepermane - after some time.opus
|
||||
lofi/ikigai/20190907-Deyaz - My Worries.opus
|
||||
lofi/ikigai/20190908-w00ds - part of you (Official Music Video).opus
|
||||
lofi/ikigai/20190909-Packedsoda - No One Cares.opus
|
||||
lofi/ikigai/20190912-sad boy with a laptop - solace.opus
|
||||
lofi/ikigai/20190913-jades - coffee and cherry blossoms (prod. sille).opus
|
||||
lofi/ikigai/20190914-Mon-Day - slowdown.opus
|
||||
lofi/ikigai/20190915-Iam6teen - Tranquil.opus
|
||||
lofi/ikigai/20190916-spencer hunt - melatonin w_ musiciansplace.opus
|
||||
lofi/ikigai/20190917-marc indigo - suffering (prod. sensu).opus
|
||||
lofi/ikigai/20190918-MICO - Online.opus
|
||||
lofi/ikigai/20190919-slipfunc - lust or love.opus
|
||||
lofi/ikigai/20190920-SpoonBeats - Getting Dark ft. Loafy Building.opus
|
||||
lofi/ikigai/20190922-Chelji - Forgive and Forget.opus
|
||||
lofi/ikigai/20190923-Packedsoda - Snow and Camel Crush w_ Laramie.opus
|
||||
lofi/ikigai/20190924-fudasca - i'm scared to fall in love with you (feat. Resident and Aidan).opus
|
||||
lofi/ikigai/20190927-mvdb - lost.opus
|
||||
lofi/ikigai/20190928-spencer hunt - sweet dreams..opus
|
||||
lofi/ikigai/20190929-imfinenow - Beautiful Day.opus
|
||||
lofi/ikigai/20190930-Cadmio - all you can eat.opus
|
||||
lofi/ikigai/20191001-tired - A crush.opus
|
||||
lofi/ikigai/20191003-slipfunc - i was a fool for you.opus
|
||||
lofi/ikigai/20191006-Iam6teen - Butterflies.opus
|
||||
lofi/ikigai/20191007-neeks - cruisin'.opus
|
||||
lofi/ikigai/20191008-ENRA - a closer distance.opus
|
||||
lofi/ikigai/20191009-Packedsoda - A Regret From the Past w_ Cxld Blxxd.opus
|
||||
lofi/ikigai/20191010-Yellow Station - Coffee in town.opus
|
||||
lofi/ikigai/20191013-demxntia 又 - it kills me w_ keshi.opus
|
||||
lofi/ikigai/20191014-Resident - Dreamers.opus
|
||||
lofi/ikigai/20191015-Powfu - Letters in December _ Feat. Rxseboy.opus
|
||||
lofi/ikigai/20191016-Iam6teen - glitter.opus
|
||||
lofi/ikigai/20191017-trxxshed - i'll never find her.opus
|
||||
lofi/ikigai/20191018-Madson. - Voices Getting Me Nowhere.opus
|
||||
lofi/ikigai/20191019-ENRA - ephemeral.opus
|
||||
lofi/ikigai/20191020-tired - 好梦.opus
|
||||
lofi/ikigai/20191021-CHELJI - Loose.opus
|
||||
lofi/ikigai/20191023-dontaskalex - s l e e p.opus
|
||||
lofi/ikigai/20191025-toveii - confession.opus
|
||||
lofi/ikigai/20191026-Shin - Kiba.opus
|
||||
lofi/ikigai/20191027-Prvnci - Suicide.opus
|
||||
lofi/ikigai/20191029-Monty Datta x Kehard - trust u.opus
|
||||
lofi/ikigai/20191030-frrb - ERASE.opus
|
||||
lofi/ikigai/20191031-neeks - chanel remix.opus
|
||||
lofi/ikigai/20191101-kanye west - use this gospel (lofi remix by im.fine).opus
|
||||
lofi/ikigai/20191102-sad boy with a laptop - silent love.opus
|
||||
lofi/ikigai/20191103-Hevi - Always Need You.opus
|
||||
lofi/ikigai/20191104-RONINCLOUD - Grey.opus
|
||||
lofi/ikigai/20191106-Charlie Myles - been alone my friend {again}.opus
|
||||
lofi/ikigai/20191107-𝙊 𝙤 𝙞 🌜 - old time.opus
|
||||
lofi/ikigai/20191109-w00ds - tears fall (feat. roiael).opus
|
||||
lofi/ikigai/20191110-Kyoshin - Heathens (Lofi Remix).opus
|
||||
lofi/ikigai/20191112-the girl next door - keepsake..opus
|
||||
lofi/ikigai/20191113-Sauce K - Frostbite.opus
|
||||
lofi/ikigai/20191114-Lo'Fi Boy - Elle Est Amour.opus
|
||||
lofi/ikigai/20191116-Teqkoi x Aiko - All These Lies That I've Been Told.opus
|
||||
lofi/ikigai/20191117-spencer hunt - twilight.opus
|
||||
lofi/ikigai/20191118-Powfu x Nuxe - All Again (Feat. Snøw).opus
|
||||
lofi/ikigai/20191121-iestn - i'm nothing at all.opus
|
||||
lofi/ikigai/20191122-the girl next door - starburst..opus
|
||||
lofi/ikigai/20191123-Charlie Myles - one day maybe {i'll get over it}.opus
|
||||
lofi/ikigai/20191124-tired - Reminisence with @bvg.opus
|
||||
lofi/ikigai/20191125-slipfunc - like i don't exist.opus
|
||||
lofi/ikigai/20191126-young citrus - familiar feelings.opus
|
||||
lofi/ikigai/20191127-sapientdream - reason to fly.opus
|
||||
lofi/ikigai/20191128-Iam6teen - tranquil.opus
|
||||
lofi/ikigai/20191130-imfinenow - but through my ups and downs.opus
|
||||
lofi/ikigai/20191201-slipfunc - the summer in your heart.opus
|
||||
lofi/ikigai/20191202-jishle - winter's warmth.opus
|
||||
lofi/ikigai/20191203-pedrolina. - Awamori.opus
|
||||
lofi/ikigai/20191204-Charlie Myles - i see ghosts at night {mare}.m4a
|
||||
lofi/ikigai/20191205-CHELJI X Deyaz - Hate Me.opus
|
||||
lofi/ikigai/20191207-SEBii💫 - realize [prod. maknae].opus
|
||||
lofi/ikigai/20191208-JUICE WRLD - RUN! (lofi remix by Zeuz).opus
|
||||
lofi/ikigai/20191210-slipfunc - a spring without you.opus
|
||||
lofi/ikigai/20191212-SEBii💫 - lovestory [prod. winter].opus
|
||||
lofi/ikigai/20191213-Sarcastic Sounds & Mishaal - Rain on Me.opus
|
||||
lofi/ikigai/20191214-Lo'Fi Boy Sex For Breakfast II.opus
|
||||
lofi/ikigai/20191215-Burbank - Pier.opus
|
||||
lofi/ikigai/20191216-PikoM - I've already told you.opus
|
||||
lofi/ikigai/20191217-kochetkovv - Alone Together.opus
|
||||
lofi/ikigai/20191218-Powfu - i'm not your friend.opus
|
||||
lofi/ikigai/20191219-GARZI - Higher.opus
|
||||
lofi/ikigai/20191222-marc indigo - home (prod. sensu).opus
|
||||
lofi/ikigai/20191224-the girl next door - without you i feel like im nothing, but that's okay.❀.opus
|
||||
lofi/ikigai/20191225-kavv - christmas eve.opus
|
||||
lofi/ikigai/20191226-wrongnumber - we'll meet again.opus
|
||||
lofi/ikigai/20191227-ENRA - amber.opus
|
||||
lofi/ikigai/20191229-Powfu - a kiss goodbye (Prod. Kiyoto).opus
|
||||
lofi/ikigai/20191230-Chopef - Last Caress.opus
|
||||
lofi/ikigai/20200101-VIENCΛ - last day..opus
|
||||
lofi/ikigai/20200103-im.fine - all you need is time.opus
|
||||
lofi/ikigai/20200104-Iam6teen - White Lines.opus
|
||||
lofi/ikigai/20200105-chevieew - pain won't go.opus
|
||||
lofi/ikigai/20200107-wrongnumber - i wish you love.opus
|
||||
lofi/ikigai/20200108-tired - Feels Like An Eternity.opus
|
||||
lofi/ikigai/20200110-Powfu - Laying on my porch while we watch the world end..opus
|
||||
lofi/ikigai/20200111-wrongnumber - do you remember .opus
|
||||
lofi/ikigai/20200112-Kiraiyzu - imperfections..opus
|
||||
lofi/ikigai/20200113-lofi songs guaranteed to help you sleep.opus
|
||||
lofi/ikigai/20200115-kochetkovv - over u (feat. Zaini).opus
|
||||
lofi/ikigai/20200117-suwoh - Lonicera.opus
|
||||
lofi/ikigai/20200118-Joe Asahi - maybe it was for the best.opus
|
||||
lofi/ikigai/20200119-that guitar sound we all like pt. 3.opus
|
||||
lofi/ikigai/20200121-Addict. - I stop breathing when you smile.opus
|
||||
lofi/ikigai/20200123-svmp - All I Wanted (feat. Madson.).opus
|
||||
lofi/ikigai/20200125-wrongnumber - let Go.opus
|
||||
lofi/ikigai/20200126-kuri ken - sirens (prod. by S I M).opus
|
||||
lofi/ikigai/20200127-slipfunc - left alone.opus
|
||||
lofi/ikigai/20200129-LIVE SOLUM - drowning in my tears, feat. cxldface (prod. fantom).opus
|
||||
lofi/ikigai/20200131-it's 3am and they turned on lofi music at the club....opus
|
||||
lofi/ikigai/20200201-frrb - Highschool memories.opus
|
||||
lofi/ikigai/20200204-marc indigo - soul searching w_ love-sadkid & garrett..opus
|
||||
lofi/ikigai/20200205-that piano sound we all like.opus
|
||||
lofi/ikigai/20191119-cat paw 🍂 - cafuné _ viraha.opus
|
||||
lofi/ikigai/20170909-mochi - bittersweet.opus
|
||||
lofi/ikigai/20191221-@rxseboy - i really miss you (prod. con).opus
|
||||
lofi/ikigai/20190725-omarr - it happened again.opus
|
||||
lofi/ikigai/20181015-flowars - chai tea [prod. aidan].opus
|
||||
lofi/ikigai/20190529-jiabeats - Chasin'.opus
|
||||
lofi/ikigai/20190505-Casein - Cloud Control.opus
|
||||
lofi/ikigai/20191211-IndExisive - Stars.opus
|
||||
lofi/ikigai/20191206-sapientdream - stumble.opus
|
||||
lofi/ikigai/20190910-lil mochi - walk.opus
|
||||
lofi/ikigai/20170502-elijah who - first kiss.opus
|
||||
lofi/ikigai/20191108-Teqkoi x Rxseboy - We all going.opus
|
||||
lofi/ikigai/20170604-krygan - Days Of Wine N' Weed.opus
|
||||
lofi/ikigai/20190616-wavegxd - you don't love me anymore.opus
|
||||
lofi/ikigai/20190120-slushii -16. WALLS.opus
|
||||
lofi/ikigai/20170925-khai dreams - New Place to Begin.opus
|
||||
lofi/ikigai/20180604-tymú - lofi rhetoric.opus
|
||||
lofi/ikigai/20190712-🌸 JameirKGolden 🌸 - ✨ Mix Match Socks ✨.opus
|
||||
lofi/ikigai/20170514-sui.luj - post malates.opus
|
||||
lofi/ikigai/20180801-R.E.G! - Sunset Vibes.opus
|
||||
lofi/ikigai/20180116-mochi - taste of your love.opus
|
||||
lofi/ikigai/20200122-David Sanya - Tension (Ft. Mas. Charade).opus
|
||||
lofi/ikigai/20190512-Linda - Toro.opus
|
||||
lofi/ikigai/20190221-〘 E I S U 〙- Trauerfall w_ tzelun.opus
|
||||
lofi/ikigai/20190508-jerichoavl - Tressa's.opus
|
||||
lofi/ikigai/20191002-Essence - until her whispers fade..opus
|
||||
lofi/ikigai/20170605-squid ethics - x jhfly.opus
|
||||
lofi/ikigai/20190517-Snøw & Teqkoi - you don't want me anymore.opus
|
||||
lofi/ikigai/20181231-cxld blxxd - lost together.opus
|
||||
lofi/kudasai/20171021-kudasai - the girl i haven't met.opus
|
||||
lofi/kudasai/20171105-kudasai - a night together.opus
|
||||
lofi/kudasai/20171208-kudasai - memories with her.opus
|
||||
lofi/kudasai/20171223-kudasai - attached.opus
|
||||
lofi/kudasai/20180207-kudasai - oh darling.opus
|
||||
lofi/kudasai/20180304-kudasai - a light of mine.opus
|
||||
lofi/kudasai/20180325-kudasai - when i see you.opus
|
||||
lofi/kudasai/20180420-kudasai - flowers next to me.opus
|
||||
lofi/kudasai/20180501-kudasai - vibrancy.opus
|
||||
lofi/kudasai/20180520-luv.ly & kudasai - beingwithu.opus
|
||||
lofi/kudasai/20180618-kudasai - technicolor.opus
|
||||
lofi/kudasai/20180727-kudasai - dream of her.opus
|
||||
lofi/kudasai/20180804-luv.ly & kudasai - solicitude.opus
|
||||
lofi/kudasai/20180922-kudasai - she said, i wonder.opus
|
||||
lofi/kudasai/20181001-kudasai - midnight.opus
|
||||
lofi/kudasai/20181014-marc - kid in the sky w_ kudasai.opus
|
||||
lofi/kudasai/20181022-kudasai - you make colors out of grey.opus
|
||||
lofi/kudasai/20181108-kudasai - serenade.opus
|
||||
lofi/kudasai/20181206-kudasai - sapphire.opus
|
||||
lofi/kudasai/20181229-kudasai - separate ways.opus
|
||||
lofi/kudasai/20190217-kudasai - love lasts.opus
|
||||
lofi/kudasai/20190224-kudasai & slippery salazar - metrolink.opus
|
||||
lofi/kudasai/20190828-kudasai - Platinum.opus
|
5
.config/mpd/playlists/lofi2.m3u
Normal file
5
.config/mpd/playlists/lofi2.m3u
Normal file
@ -0,0 +1,5 @@
|
||||
lofi/20190127-【ASK ME OUT ON A DATE】_ Japanese Lofi _ Japanese_Anime Lofi Hip Hop Mix.m4a
|
||||
lofi/20170505-close your eyes (lo-fi_chill mix).mkv
|
||||
lofi/20191208-1 A.M Study Session 📚 - [lofi hip hop_chill beats].opus
|
||||
lofi/20190915-i found my home in your arms - lofi hip hop mix.opus
|
||||
lofi/20200316-Just take care of yourself ● lofi hip hop mix ● Nostalgia.opus
|
199
.config/mpv/input.conf
Normal file
199
.config/mpv/input.conf
Normal file
@ -0,0 +1,199 @@
|
||||
# mpv keybindings
|
||||
#
|
||||
# Location of user-defined bindings: ~/.config/mpv/input.conf
|
||||
#
|
||||
# Lines starting with # are comments. Use SHARP to assign the # key.
|
||||
# Copy this file and uncomment and edit the bindings you want to change.
|
||||
#
|
||||
# List of commands and further details: DOCS/man/input.rst
|
||||
# List of special keys: --input-keylist
|
||||
# Keybindings testing mode: mpv --input-test --force-window --idle
|
||||
#
|
||||
# Use 'ignore' to unbind a key fully (e.g. 'ctrl+a ignore').
|
||||
#
|
||||
# Strings need to be quoted and escaped:
|
||||
# KEY show-text "This is a single backslash: \\ and a quote: \" !"
|
||||
#
|
||||
# You can use modifier-key combinations like Shift+Left or Ctrl+Alt+x with
|
||||
# the modifiers Shift, Ctrl, Alt and Meta (may not work on the terminal).
|
||||
#
|
||||
# The default keybindings are hardcoded into the mpv binary.
|
||||
# You can disable them completely with: --no-input-default-bindings
|
||||
|
||||
# Developer note:
|
||||
# On compilation, this file is baked into the mpv binary, and all lines are
|
||||
# uncommented (unless '#' is followed by a space) - thus this file defines the
|
||||
# default key bindings.
|
||||
|
||||
# If this is enabled, treat all the following bindings as default.
|
||||
#default-bindings start
|
||||
|
||||
#MOUSE_BTN0 ignore # don't do anything
|
||||
#MOUSE_BTN0_DBL cycle fullscreen # toggle fullscreen on/off
|
||||
#MOUSE_BTN2 cycle pause # toggle pause on/off
|
||||
#MOUSE_BTN3 seek 10
|
||||
#MOUSE_BTN4 seek -10
|
||||
#MOUSE_BTN5 add volume -2
|
||||
#MOUSE_BTN6 add volume 2
|
||||
|
||||
# Mouse wheels, touchpad or other input devices that have axes
|
||||
# if the input devices supports precise scrolling it will also scale the
|
||||
# numeric value accordingly
|
||||
#AXIS_UP seek 10
|
||||
#AXIS_DOWN seek -10
|
||||
#AXIS_LEFT seek 5
|
||||
#AXIS_RIGHT seek -5
|
||||
|
||||
## Seek units are in seconds, but note that these are limited by keyframes
|
||||
#RIGHT seek 5
|
||||
#LEFT seek -5
|
||||
#UP seek 60
|
||||
#DOWN seek -60
|
||||
# Do smaller, always exact (non-keyframe-limited), seeks with shift.
|
||||
# Don't show them on the OSD (no-osd).
|
||||
#Shift+RIGHT no-osd seek 1 exact
|
||||
#Shift+LEFT no-osd seek -1 exact
|
||||
#Shift+UP no-osd seek 5 exact
|
||||
#Shift+DOWN no-osd seek -5 exact
|
||||
# Skip to previous/next subtitle (subject to some restrictions; see manpage)
|
||||
#Ctrl+LEFT no-osd sub-seek -1
|
||||
#Ctrl+RIGHT no-osd sub-seek 1
|
||||
#PGUP add chapter 1 # skip to next chapter
|
||||
#PGDWN add chapter -1 # skip to previous chapter
|
||||
#Shift+PGUP seek 600
|
||||
#Shift+PGDWN seek -600
|
||||
[ add speed -0.1 # scale playback speed
|
||||
] add speed 0.1
|
||||
{ add speed -0.5
|
||||
} add speed 0.5
|
||||
#BS set speed 1.0 # reset speed to normal
|
||||
#q quit
|
||||
#Q quit-watch-later
|
||||
#q {encode} quit 4
|
||||
#ESC set fullscreen no
|
||||
#ESC {encode} quit 4
|
||||
#p cycle pause # toggle pause/playback mode
|
||||
#. frame-step # advance one frame and pause
|
||||
#, frame-back-step # go back by one frame and pause
|
||||
#SPACE cycle pause
|
||||
#> playlist-next # skip to next file
|
||||
#ENTER playlist-next # skip to next file
|
||||
#< playlist-prev # skip to previous file
|
||||
#O no-osd cycle-values osd-level 3 1 # cycle through OSD mode
|
||||
#o show-progress
|
||||
#P show-progress
|
||||
#I show-text "${filename}" # display filename in osd
|
||||
#z add sub-delay -0.1 # subtract 100 ms delay from subs
|
||||
#x add sub-delay +0.1 # add
|
||||
#ctrl++ add audio-delay 0.100 # this changes audio/video sync
|
||||
#ctrl+- add audio-delay -0.100
|
||||
#9 add volume -2
|
||||
#/ add volume -2
|
||||
#0 add volume 2
|
||||
#* add volume 2
|
||||
#m cycle mute
|
||||
#1 add contrast -1
|
||||
#2 add contrast 1
|
||||
#3 add brightness -1
|
||||
#4 add brightness 1
|
||||
#5 add gamma -1
|
||||
#6 add gamma 1
|
||||
#7 add saturation -1
|
||||
#8 add saturation 1
|
||||
#Alt+0 set window-scale 0.5
|
||||
#Alt+1 set window-scale 1.0
|
||||
#Alt+2 set window-scale 2.0
|
||||
# toggle deinterlacer (automatically inserts or removes required filter)
|
||||
#d cycle deinterlace
|
||||
#r add sub-pos -1 # move subtitles up
|
||||
#t add sub-pos +1 # down
|
||||
#v cycle sub-visibility
|
||||
# stretch SSA/ASS subtitles with anamorphic videos to match historical
|
||||
#V cycle sub-ass-vsfilter-aspect-compat
|
||||
# switch between applying no style overrides to SSA/ASS subtitles, and
|
||||
# overriding them almost completely with the normal subtitle style
|
||||
#u cycle-values sub-ass-style-override "force" "no"
|
||||
#j cycle sub # cycle through subtitles
|
||||
#J cycle sub down # ...backwards
|
||||
#SHARP cycle audio # switch audio streams
|
||||
#_ cycle video
|
||||
#T cycle ontop # toggle video window ontop of other windows
|
||||
#f cycle fullscreen # toggle fullscreen
|
||||
#s screenshot # take a screenshot
|
||||
#S screenshot video # ...without subtitles
|
||||
#Ctrl+s screenshot window # ...with subtitles and OSD, and scaled
|
||||
#Alt+s screenshot each-frame # automatically screenshot every frame
|
||||
#w add panscan -0.1 # zoom out with -panscan 0 -fs
|
||||
#e add panscan +0.1 # in
|
||||
# cycle video aspect ratios; "-1" is the container aspect
|
||||
#A cycle-values video-aspect "16:9" "4:3" "2.35:1" "-1"
|
||||
#POWER quit
|
||||
#PLAY cycle pause
|
||||
#PAUSE cycle pause
|
||||
#PLAYPAUSE cycle pause
|
||||
#STOP quit
|
||||
#FORWARD seek 60
|
||||
#REWIND seek -60
|
||||
#NEXT playlist-next
|
||||
#PREV playlist-prev
|
||||
#VOLUME_UP add volume 2
|
||||
#VOLUME_DOWN add volume -2
|
||||
#MUTE cycle mute
|
||||
#CLOSE_WIN quit
|
||||
#CLOSE_WIN {encode} quit 4
|
||||
#E cycle edition # next edition
|
||||
#l ab-loop # Set/clear A-B loop points
|
||||
#L cycle-values loop "inf" "no" # toggle infinite looping
|
||||
#ctrl+c quit 4
|
||||
|
||||
# Apple Remote section
|
||||
#AR_PLAY cycle pause
|
||||
#AR_PLAY_HOLD quit
|
||||
#AR_CENTER cycle pause
|
||||
#AR_CENTER_HOLD quit
|
||||
#AR_NEXT seek 10
|
||||
#AR_NEXT_HOLD seek 120
|
||||
#AR_PREV seek -10
|
||||
#AR_PREV_HOLD seek -120
|
||||
#AR_MENU show-progress
|
||||
#AR_MENU_HOLD cycle mute
|
||||
#AR_VUP add volume 2
|
||||
#AR_VUP_HOLD add chapter 1
|
||||
#AR_VDOWN add volume -2
|
||||
#AR_VDOWN_HOLD add chapter -1
|
||||
|
||||
# For tv://
|
||||
#h cycle tv-channel -1 # previous channel
|
||||
#k cycle tv-channel +1 # next channel
|
||||
|
||||
# For dvb://
|
||||
#H cycle dvb-channel-name -1 # previous channel
|
||||
#K cycle dvb-channel-name +1 # next channel
|
||||
|
||||
#
|
||||
# Legacy bindings (may or may not be removed in the future)
|
||||
#
|
||||
! add chapter -1 # skip to previous chapter
|
||||
@ add chapter 1 # next
|
||||
|
||||
#
|
||||
# Not assigned by default
|
||||
# (not an exhaustive list of unbound commands)
|
||||
#
|
||||
|
||||
# ? add sub-scale +0.1 # increase subtitle font size
|
||||
# ? add sub-scale -0.1 # decrease subtitle font size
|
||||
# ? sub-step -1 # immediately display next subtitle
|
||||
# ? sub-step +1 # previous
|
||||
# ? cycle angle # switch DVD/Bluray angle
|
||||
# ? add balance -0.1 # adjust audio balance in favor of left
|
||||
# ? add balance 0.1 # right
|
||||
# ? cycle sub-forced-only # toggle DVD forced subs
|
||||
# ? cycle program # cycle transport stream programs
|
||||
# ? stop # stop playback (quit or enter idle mode)
|
||||
|
||||
l seek 5
|
||||
h seek -5
|
||||
j seek -60
|
||||
k seek 60
|
||||
S cycle sub
|
16
.config/mutt/mailcap
Normal file
16
.config/mutt/mailcap
Normal file
@ -0,0 +1,16 @@
|
||||
# PDF
|
||||
application;zathura %s
|
||||
image/pdf;zathura %s
|
||||
|
||||
# Images
|
||||
image/bmp;sxiv %s
|
||||
image/gif;sxiv %s
|
||||
image/libm;sxiv %s
|
||||
image/jpg;sxiv %s
|
||||
image/jpeg;sxiv %s
|
||||
image/png;sxiv %s
|
||||
image/tiff;sxiv %s
|
||||
image/x-png;sxiv %s
|
||||
|
||||
#Text
|
||||
#text/html;firefox %s
|
624
.config/ncmpcpp/bindings
Normal file
624
.config/ncmpcpp/bindings
Normal file
@ -0,0 +1,624 @@
|
||||
##############################################################
|
||||
## This is the example bindings file. Copy it to ##
|
||||
## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ##
|
||||
## and set up your preferences ##
|
||||
##############################################################
|
||||
##
|
||||
##### General rules #####
|
||||
##
|
||||
## 1) Because each action has runtime checks whether it's
|
||||
## ok to run it, a few actions can be bound to one key.
|
||||
## Actions will be bound in order given in configuration
|
||||
## file. When a key is pressed, first action in order
|
||||
## will test itself whether it's possible to run it. If
|
||||
## test succeeds, action is executed and other actions
|
||||
## bound to this key are ignored. If it doesn't, next
|
||||
## action in order tests itself etc.
|
||||
##
|
||||
## 2) It's possible to bind more that one action at once
|
||||
## to a key. It can be done using the following syntax:
|
||||
##
|
||||
## def_key "key"
|
||||
## action1
|
||||
## action2
|
||||
## ...
|
||||
##
|
||||
## This creates a chain of actions. When such chain is
|
||||
## executed, each action in chain is run until the end of
|
||||
## chain is reached or one of its actions fails to execute
|
||||
## due to its requirements not being met. If multiple actions
|
||||
## and/or chains are bound to the same key, they will be
|
||||
## consecutively run until one of them gets fully executed.
|
||||
##
|
||||
## 3) When ncmpcpp starts, bindings configuration file is
|
||||
## parsed and then ncmpcpp provides "missing pieces"
|
||||
## of default keybindings. If you want to disable some
|
||||
## bindings, there is a special action called 'dummy'
|
||||
## for that purpose. Eg. if you want to disable ability
|
||||
## to crop playlists, you need to put the following
|
||||
## into configuration file:
|
||||
##
|
||||
## def_key "C"
|
||||
## dummy
|
||||
##
|
||||
## After that ncmpcpp will not bind any default action
|
||||
## to this key.
|
||||
##
|
||||
## 4) To let you write simple macros, the following special
|
||||
## actions are provided:
|
||||
##
|
||||
## - push_character "character" - pushes given special
|
||||
## character into input queue, so it will be immediately
|
||||
## picked by ncmpcpp upon next call to readKey function.
|
||||
## Accepted values: mouse, up, down, page_up, page_down,
|
||||
## home, end, space, enter, insert, delete, left, right,
|
||||
## tab, ctrl-a, ctrl-b, ..., ctrl-z, ctrl-[, ctrl-\\,
|
||||
## ctrl-], ctrl-^, ctrl-_, f1, f2, ..., f12, backspace.
|
||||
## In addition, most of these names can be prefixed with
|
||||
## alt-/ctrl-/shift- to be recognized with the appropriate
|
||||
## modifier key(s).
|
||||
##
|
||||
## - push_characters "string" - pushes given string into
|
||||
## input queue.
|
||||
##
|
||||
## - require_runnable "action" - checks whether given action
|
||||
## is runnable and fails if it isn't. This is especially
|
||||
## useful when mixed with previous two functions. Consider
|
||||
## the following macro definition:
|
||||
##
|
||||
## def_key "key"
|
||||
## push_characters "custom_filter"
|
||||
## apply_filter
|
||||
##
|
||||
## If apply_filter can't be currently run, we end up with
|
||||
## sequence of characters in input queue which will be
|
||||
## treated just as we typed them. This may lead to unexpected
|
||||
## results (in this case 'c' will most likely clear current
|
||||
## playlist, 'u' will trigger database update, 's' will stop
|
||||
## playback etc.). To prevent such thing from happening, we
|
||||
## need to change above definition to this one:
|
||||
##
|
||||
## def_key "key"
|
||||
## require_runnable "apply_filter"
|
||||
## push_characters "custom_filter"
|
||||
## apply_filter
|
||||
##
|
||||
## Here, first we test whether apply_filter can be actually run
|
||||
## before we stuff characters into input queue, so if condition
|
||||
## is not met, whole chain is aborted and we're fine.
|
||||
##
|
||||
## - require_screen "screen" - checks whether given screen is
|
||||
## currently active. accepted values: browser, clock, help,
|
||||
## media_library, outputs, playlist, playlist_editor,
|
||||
## search_engine, tag_editor, visualizer, last_fm, lyrics,
|
||||
## selected_items_adder, server_info, song_info,
|
||||
## sort_playlist_dialog, tiny_tag_editor.
|
||||
##
|
||||
## - run_external_command "command" - runs given command using
|
||||
## system() function.
|
||||
##
|
||||
## 5) In addition to binding to a key, you can also bind actions
|
||||
## or chains of actions to a command. If it comes to commands,
|
||||
## syntax is very similar to defining keys. Here goes example
|
||||
## definition of a command:
|
||||
##
|
||||
## def_command "quit" [deferred]
|
||||
## stop
|
||||
## quit
|
||||
##
|
||||
## If you execute the above command (which can be done by
|
||||
## invoking action execute_command, typing 'quit' and pressing
|
||||
## enter), ncmpcpp will stop the player and then quit. Note the
|
||||
## presence of word 'deferred' enclosed in square brackets. It
|
||||
## tells ncmpcpp to wait for confirmation (ie. pressing enter)
|
||||
## after you typed quit. Instead of 'deferred', 'immediate'
|
||||
## could be used. Then ncmpcpp will not wait for confirmation
|
||||
## (enter) and will execute the command the moment it sees it.
|
||||
##
|
||||
## Note: while command chains are executed, internal environment
|
||||
## update (which includes current window refresh and mpd status
|
||||
## update) is not performed for performance reasons. However, it
|
||||
## may be desirable to do so in some situration. Therefore it's
|
||||
## possible to invoke by hand by performing 'update enviroment'
|
||||
## action.
|
||||
##
|
||||
## Note: There is a difference between:
|
||||
##
|
||||
## def_key "key"
|
||||
## action1
|
||||
##
|
||||
## def_key "key"
|
||||
## action2
|
||||
##
|
||||
## and
|
||||
##
|
||||
## def_key "key"
|
||||
## action1
|
||||
## action2
|
||||
##
|
||||
## First one binds two single actions to the same key whilst
|
||||
## second one defines a chain of actions. The behavior of
|
||||
## these two is different and is described in (1) and (2).
|
||||
##
|
||||
## Note: Function def_key accepts non-ascii characters.
|
||||
##
|
||||
##### List of unbound actions #####
|
||||
##
|
||||
## The following actions are not bound to any key/command:
|
||||
##
|
||||
## - set_volume
|
||||
##
|
||||
#
|
||||
#def_key "mouse"
|
||||
# mouse_event
|
||||
#
|
||||
#def_key "up"
|
||||
# scroll_up
|
||||
#
|
||||
#def_key "shift-up"
|
||||
# select_item
|
||||
# scroll_up
|
||||
#
|
||||
#def_key "down"
|
||||
# scroll_down
|
||||
#
|
||||
#def_key "shift-down"
|
||||
# select_item
|
||||
# scroll_down
|
||||
#
|
||||
#def_key "["
|
||||
# scroll_up_album
|
||||
#
|
||||
#def_key "]"
|
||||
# scroll_down_album
|
||||
#
|
||||
#def_key "{"
|
||||
# scroll_up_artist
|
||||
#
|
||||
#def_key "}"
|
||||
# scroll_down_artist
|
||||
#
|
||||
#def_key "page_up"
|
||||
# page_up
|
||||
#
|
||||
#def_key "page_down"
|
||||
# page_down
|
||||
#
|
||||
#def_key "home"
|
||||
# move_home
|
||||
#
|
||||
#def_key "end"
|
||||
# move_end
|
||||
#
|
||||
#def_key "insert"
|
||||
# select_item
|
||||
#
|
||||
#def_key "enter"
|
||||
# enter_directory
|
||||
#
|
||||
#def_key "enter"
|
||||
# toggle_output
|
||||
#
|
||||
#def_key "enter"
|
||||
# run_action
|
||||
#
|
||||
#def_key "enter"
|
||||
# play_item
|
||||
#
|
||||
#def_key "space"
|
||||
# add_item_to_playlist
|
||||
#
|
||||
#def_key "space"
|
||||
# toggle_lyrics_update_on_song_change
|
||||
#
|
||||
#def_key "space"
|
||||
# toggle_visualization_type
|
||||
#
|
||||
def_key "d"
|
||||
delete_playlist_items
|
||||
#
|
||||
#def_key "delete"
|
||||
# delete_browser_items
|
||||
#
|
||||
#def_key "delete"
|
||||
# delete_stored_playlist
|
||||
#
|
||||
#def_key "right"
|
||||
# next_column
|
||||
#
|
||||
#def_key "right"
|
||||
# slave_screen
|
||||
#
|
||||
#def_key "right"
|
||||
# volume_up
|
||||
#
|
||||
def_key "+"
|
||||
volume_up
|
||||
#
|
||||
#def_key "left"
|
||||
# previous_column
|
||||
#
|
||||
#def_key "left"
|
||||
# master_screen
|
||||
#
|
||||
#def_key "left"
|
||||
# volume_down
|
||||
#
|
||||
def_key "-"
|
||||
volume_down
|
||||
#
|
||||
#def_key ":"
|
||||
# execute_command
|
||||
#
|
||||
#def_key "tab"
|
||||
# next_screen
|
||||
#
|
||||
#def_key "shift-tab"
|
||||
# previous_screen
|
||||
#
|
||||
#def_key "f1"
|
||||
# show_help
|
||||
#
|
||||
def_key "1"
|
||||
show_playlist
|
||||
#
|
||||
def_key "2"
|
||||
show_browser
|
||||
#
|
||||
#def_key "2"
|
||||
# change_browse_mode
|
||||
#
|
||||
def_key "3"
|
||||
show_search_engine
|
||||
#
|
||||
#def_key "3"
|
||||
# reset_search_engine
|
||||
#
|
||||
#def_key "4"
|
||||
# show_media_library
|
||||
#
|
||||
#def_key "4"
|
||||
# toggle_media_library_columns_mode
|
||||
#
|
||||
def_key "5"
|
||||
show_playlist_editor
|
||||
#
|
||||
def_key "6"
|
||||
show_tag_editor
|
||||
#
|
||||
#def_key "7"
|
||||
# show_outputs
|
||||
#
|
||||
#def_key "8"
|
||||
# show_visualizer
|
||||
#
|
||||
#def_key "="
|
||||
# show_clock
|
||||
#
|
||||
#def_key "@"
|
||||
# show_server_info
|
||||
#
|
||||
def_key "s"
|
||||
stop
|
||||
|
||||
def_key "p"
|
||||
pause
|
||||
|
||||
def_key ">"
|
||||
next
|
||||
#
|
||||
#def_key "<"
|
||||
# previous
|
||||
#
|
||||
#def_key "ctrl-h"
|
||||
# jump_to_parent_directory
|
||||
#
|
||||
#def_key "ctrl-h"
|
||||
# replay_song
|
||||
#
|
||||
#def_key "backspace"
|
||||
# jump_to_parent_directory
|
||||
#
|
||||
#def_key "backspace"
|
||||
# replay_song
|
||||
#
|
||||
#def_key "f"
|
||||
# seek_forward
|
||||
#
|
||||
#def_key "b"
|
||||
# seek_backward
|
||||
#
|
||||
def_key "r"
|
||||
toggle_repeat
|
||||
#
|
||||
def_key "z"
|
||||
toggle_random
|
||||
#
|
||||
def_key "y"
|
||||
save_tag_changes
|
||||
#
|
||||
#def_key "y"
|
||||
# start_searching
|
||||
#
|
||||
#def_key "y"
|
||||
# toggle_single
|
||||
#
|
||||
#def_key "R"
|
||||
# toggle_consume
|
||||
#
|
||||
#def_key "Y"
|
||||
# toggle_replay_gain_mode
|
||||
#
|
||||
#def_key "T"
|
||||
# toggle_add_mode
|
||||
#
|
||||
#def_key "|"
|
||||
# toggle_mouse
|
||||
#
|
||||
#def_key "#"
|
||||
# toggle_bitrate_visibility
|
||||
#
|
||||
def_key "Z"
|
||||
shuffle
|
||||
#
|
||||
#def_key "x"
|
||||
# toggle_crossfade
|
||||
#
|
||||
#def_key "X"
|
||||
# set_crossfade
|
||||
#
|
||||
#def_key "u"
|
||||
# update_database
|
||||
#
|
||||
#def_key "ctrl-s"
|
||||
# sort_playlist
|
||||
#
|
||||
#def_key "ctrl-s"
|
||||
# toggle_browser_sort_mode
|
||||
#
|
||||
#def_key "ctrl-s"
|
||||
# toggle_media_library_sort_mode
|
||||
#
|
||||
#def_key "ctrl-r"
|
||||
# reverse_playlist
|
||||
#
|
||||
#def_key "ctrl-f"
|
||||
# apply_filter
|
||||
#
|
||||
#def_key "ctrl-_"
|
||||
# select_found_items
|
||||
#
|
||||
#def_key "/"
|
||||
# find
|
||||
#
|
||||
#def_key "/"
|
||||
# find_item_forward
|
||||
#
|
||||
#def_key "?"
|
||||
# find
|
||||
#
|
||||
#def_key "?"
|
||||
# find_item_backward
|
||||
#
|
||||
#def_key "."
|
||||
# next_found_item
|
||||
#
|
||||
#def_key ","
|
||||
# previous_found_item
|
||||
#
|
||||
#def_key "w"
|
||||
# toggle_find_mode
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_song
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_library_tag
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_library_album
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_directory_name
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_playlist_name
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_lyrics
|
||||
#
|
||||
#def_key "i"
|
||||
# show_song_info
|
||||
#
|
||||
#def_key "I"
|
||||
# show_artist_info
|
||||
#
|
||||
#def_key "g"
|
||||
# jump_to_position_in_song
|
||||
#
|
||||
#def_key "l"
|
||||
# show_lyrics
|
||||
#
|
||||
#def_key "ctrl-v"
|
||||
# select_range
|
||||
#
|
||||
#def_key "v"
|
||||
# reverse_selection
|
||||
#
|
||||
#def_key "V"
|
||||
# remove_selection
|
||||
#
|
||||
#def_key "B"
|
||||
# select_album
|
||||
#
|
||||
#def_key "a"
|
||||
# add_selected_items
|
||||
#
|
||||
#def_key "c"
|
||||
# clear_playlist
|
||||
#
|
||||
#def_key "c"
|
||||
# clear_main_playlist
|
||||
#
|
||||
#def_key "C"
|
||||
# crop_playlist
|
||||
#
|
||||
#def_key "C"
|
||||
# crop_main_playlist
|
||||
#
|
||||
#def_key "m"
|
||||
# move_sort_order_up
|
||||
#
|
||||
#def_key "m"
|
||||
# move_selected_items_up
|
||||
#
|
||||
#def_key "n"
|
||||
# move_sort_order_down
|
||||
#
|
||||
#def_key "n"
|
||||
# move_selected_items_down
|
||||
#
|
||||
#def_key "M"
|
||||
# move_selected_items_to
|
||||
#
|
||||
#def_key "A"
|
||||
# add
|
||||
#
|
||||
#def_key "S"
|
||||
# save_playlist
|
||||
#
|
||||
#def_key "o"
|
||||
# jump_to_playing_song
|
||||
#
|
||||
#def_key "G"
|
||||
# jump_to_browser
|
||||
#
|
||||
#def_key "G"
|
||||
# jump_to_playlist_editor
|
||||
#
|
||||
def_key "~"
|
||||
jump_to_media_library
|
||||
|
||||
def_key "E"
|
||||
jump_to_tag_editor
|
||||
#
|
||||
#def_key "U"
|
||||
# toggle_playing_song_centering
|
||||
#
|
||||
#def_key "P"
|
||||
# toggle_display_mode
|
||||
#
|
||||
#def_key "\\"
|
||||
# toggle_interface
|
||||
#
|
||||
#def_key "!"
|
||||
# toggle_separators_between_albums
|
||||
#
|
||||
#def_key "L"
|
||||
# toggle_lyrics_fetcher
|
||||
#
|
||||
#def_key "F"
|
||||
# fetch_lyrics_in_background
|
||||
#
|
||||
#def_key "alt-l"
|
||||
# toggle_fetching_lyrics_in_background
|
||||
#
|
||||
#def_key "ctrl-l"
|
||||
# toggle_screen_lock
|
||||
#
|
||||
#def_key "`"
|
||||
# toggle_library_tag_type
|
||||
#
|
||||
#def_key "`"
|
||||
# refetch_lyrics
|
||||
#
|
||||
#def_key "`"
|
||||
# add_random_items
|
||||
#
|
||||
#def_key "ctrl-p"
|
||||
# set_selected_items_priority
|
||||
#
|
||||
#def_key "q"
|
||||
# quit
|
||||
#
|
||||
#
|
||||
#def_key "f"
|
||||
# find
|
||||
#def_key "f"
|
||||
# find_item_forward
|
||||
|
||||
def_key "+"
|
||||
show_clock
|
||||
def_key "="
|
||||
volume_up
|
||||
|
||||
def_key "j"
|
||||
scroll_down
|
||||
def_key "k"
|
||||
scroll_up
|
||||
|
||||
def_key "ctrl-u"
|
||||
page_up
|
||||
#push_characters "kkkkkkkkkkkkkkk"
|
||||
def_key "ctrl-d"
|
||||
page_down
|
||||
#push_characters "jjjjjjjjjjjjjjj"
|
||||
def_key "u"
|
||||
page_up
|
||||
#push_characters "kkkkkkkkkkkkkkk"
|
||||
def_key "d"
|
||||
page_down
|
||||
#push_characters "jjjjjjjjjjjjjjj"
|
||||
def_key "h"
|
||||
previous_column
|
||||
def_key "l"
|
||||
next_column
|
||||
|
||||
def_key "."
|
||||
show_lyrics
|
||||
|
||||
def_key "n"
|
||||
next_found_item
|
||||
def_key "N"
|
||||
previous_found_item
|
||||
|
||||
# not used but bound
|
||||
def_key "J"
|
||||
move_sort_order_down
|
||||
def_key "K"
|
||||
move_sort_order_up
|
||||
def_key "h"
|
||||
jump_to_parent_directory
|
||||
def_key "l"
|
||||
enter_directory
|
||||
def_key "l"
|
||||
run_action
|
||||
def_key "l"
|
||||
play_item
|
||||
def_key "m"
|
||||
show_media_library
|
||||
def_key "m"
|
||||
toggle_media_library_columns_mode
|
||||
def_key "t"
|
||||
show_tag_editor
|
||||
def_key "v"
|
||||
show_visualizer
|
||||
def_key "G"
|
||||
move_end
|
||||
def_key "g"
|
||||
move_home
|
||||
#jump_to_position_in_song
|
||||
def_key "U"
|
||||
update_database
|
||||
def_key "s"
|
||||
reset_search_engine
|
||||
def_key "s"
|
||||
show_search_engine
|
||||
def_key "f"
|
||||
show_browser
|
||||
def_key "f"
|
||||
change_browse_mode
|
||||
def_key "x"
|
||||
delete_playlist_items
|
||||
def_key "P"
|
||||
show_playlist
|
545
.config/ncmpcpp/config
Normal file
545
.config/ncmpcpp/config
Normal file
@ -0,0 +1,545 @@
|
||||
##############################################################################
|
||||
## This is the example configuration file. Copy it to $HOME/.ncmpcpp/config ##
|
||||
## or $XDG_CONFIG_HOME/ncmpcpp/config and set up your preferences. ##
|
||||
##############################################################################
|
||||
#
|
||||
##### directories ######
|
||||
##
|
||||
## Directory for storing ncmpcpp related files. Changing it is useful if you
|
||||
## want to store everything somewhere else and provide command line setting for
|
||||
## alternative location to config file which defines that while launching
|
||||
## ncmpcpp.
|
||||
##
|
||||
#
|
||||
ncmpcpp_directory = ~/.config/ncmpcpp
|
||||
#
|
||||
##
|
||||
## Directory for storing downloaded lyrics. It defaults to ~/.lyrics since other
|
||||
## MPD clients (eg. ncmpc) also use that location.
|
||||
##
|
||||
#
|
||||
lyrics_directory = ~/.config/lyrics
|
||||
#
|
||||
##### connection settings #####
|
||||
#
|
||||
#mpd_host = localhost
|
||||
#
|
||||
#mpd_port = 6600
|
||||
#
|
||||
#mpd_connection_timeout = 5
|
||||
#
|
||||
## Needed for tag editor and file operations to work.
|
||||
##
|
||||
mpd_music_dir = "~/msc"
|
||||
#
|
||||
#mpd_crossfade_time = 5
|
||||
#
|
||||
##### music visualizer #####
|
||||
##
|
||||
## Note: In order to make music visualizer work you'll need to use mpd fifo
|
||||
## output, whose format parameter has to be set to 44100:16:1 for mono
|
||||
## visualization or 44100:16:2 for stereo visualization. Example configuration
|
||||
## (it has to be put into mpd.conf):
|
||||
##
|
||||
## audio_output {
|
||||
## type "fifo"
|
||||
## name "Visualizer feed"
|
||||
## path "/tmp/mpd.fifo"
|
||||
## format "44100:16:2"
|
||||
## }
|
||||
##
|
||||
#
|
||||
#visualizer_fifo_path = /tmp/mpd.fifo
|
||||
#
|
||||
##
|
||||
## Note: Below parameter is needed for ncmpcpp to determine which output
|
||||
## provides data for visualizer and thus allow syncing between visualization and
|
||||
## sound as currently there are some problems with it.
|
||||
##
|
||||
#
|
||||
#visualizer_output_name = Visualizer feed
|
||||
#
|
||||
##
|
||||
## If you set format to 44100:16:2, make it 'yes'.
|
||||
##
|
||||
#visualizer_in_stereo = yes
|
||||
#
|
||||
##
|
||||
## Note: Below parameter defines how often ncmpcpp has to "synchronize"
|
||||
## visualizer and audio outputs. 30 seconds is optimal value, but if you
|
||||
## experience synchronization problems, set it to lower value. Keep in mind
|
||||
## that sane values start with >=10.
|
||||
##
|
||||
#
|
||||
#visualizer_sync_interval = 30
|
||||
#
|
||||
##
|
||||
## Note: To enable spectrum frequency visualization you need to compile ncmpcpp
|
||||
## with fftw3 support.
|
||||
##
|
||||
#
|
||||
## Available values: spectrum, wave, wave_filled, ellipse.
|
||||
##
|
||||
visualizer_type = spectrum
|
||||
#
|
||||
#visualizer_look = ●卐
|
||||
#visualizer_look = 卐
|
||||
#
|
||||
#visualizer_color = blue, cyan, green, yellow, magenta, red
|
||||
#
|
||||
## Alternative subset of 256 colors for terminals that support it.
|
||||
##
|
||||
#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161
|
||||
#
|
||||
##### system encoding #####
|
||||
##
|
||||
## ncmpcpp should detect your charset encoding but if it failed to do so, you
|
||||
## can specify charset encoding you are using here.
|
||||
##
|
||||
## Note: You can see whether your ncmpcpp build supports charset detection by
|
||||
## checking output of `ncmpcpp --version`.
|
||||
##
|
||||
## Note: Since MPD uses UTF-8 by default, setting this option makes sense only
|
||||
## if your encoding is different.
|
||||
##
|
||||
#
|
||||
#system_encoding = ""
|
||||
#
|
||||
##### delays #####
|
||||
#
|
||||
## Time of inactivity (in seconds) after playlist highlighting will be disabled
|
||||
## (0 = always on).
|
||||
##
|
||||
#playlist_disable_highlight_delay = 5
|
||||
#
|
||||
## Defines how long messages are supposed to be visible.
|
||||
##
|
||||
message_delay_time = 1
|
||||
#
|
||||
##### song format #####
|
||||
##
|
||||
## For a song format you can use:
|
||||
##
|
||||
## %l - length
|
||||
## %f - filename
|
||||
## %D - directory
|
||||
## %a - artist
|
||||
## %A - album artist
|
||||
## %t - title
|
||||
## %b - album
|
||||
## %y - date
|
||||
## %n - track number (01/12 -> 01)
|
||||
## %N - full track info (01/12 -> 01/12)
|
||||
## %g - genre
|
||||
## %c - composer
|
||||
## %p - performer
|
||||
## %d - disc
|
||||
## %C - comment
|
||||
## %P - priority
|
||||
## $R - begin right alignment
|
||||
##
|
||||
## If you want to make sure that a part of the format is displayed only when
|
||||
## certain tags are present, you can archieve it by grouping them with brackets,
|
||||
## e.g. '{%a - %t}' will be evaluated to 'ARTIST - TITLE' if both tags are
|
||||
## present or '' otherwise. It is also possible to define a list of
|
||||
## alternatives by providing several groups and separating them with '|',
|
||||
## e.g. '{%t}|{%f}' will be evaluated to 'TITLE' or 'FILENAME' if the former is
|
||||
## not present.
|
||||
##
|
||||
## Note: If you want to set limit on maximal length of a tag, just put the
|
||||
## appropriate number between % and character that defines tag type, e.g. to
|
||||
## make album take max. 20 terminal cells, use '%20b'.
|
||||
##
|
||||
## In addition, formats support markers used for text attributes. They are
|
||||
## followed by character '$'. After that you can put:
|
||||
##
|
||||
## - 0 - default window color (discards all other colors)
|
||||
## - 1 - black
|
||||
## - 2 - red
|
||||
## - 3 - green
|
||||
## - 4 - yellow
|
||||
## - 5 - blue
|
||||
## - 6 - magenta
|
||||
## - 7 - cyan
|
||||
## - 8 - white
|
||||
## - 9 - end of current color
|
||||
## - b - bold text
|
||||
## - u - underline text
|
||||
## - r - reverse colors
|
||||
## - a - use alternative character set
|
||||
##
|
||||
## If you don't want to use a non-color attribute anymore, just put it again,
|
||||
## but this time insert character '/' between '$' and attribute character,
|
||||
## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename with
|
||||
## reversed colors.
|
||||
##
|
||||
## If you want to use 256 colors and/or background colors in formats (the naming
|
||||
## scheme is described below in section about color definitions), it can be done
|
||||
## with the syntax $(COLOR), e.g. to set the artist tag to one of the
|
||||
## non-standard colors and make it have yellow background, you need to write
|
||||
## $(197_yellow)%a$(end). Note that for standard colors this is interchangable
|
||||
## with attributes listed above.
|
||||
##
|
||||
## Note: colors can be nested.
|
||||
##
|
||||
#
|
||||
song_list_format = {$4%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
|
||||
#
|
||||
song_status_format = $b{{$8"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$8%f}
|
||||
#
|
||||
song_library_format = {%n - }{%t}|{%f}
|
||||
#
|
||||
alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
|
||||
#
|
||||
alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
|
||||
#
|
||||
current_item_prefix = $(cyan)$r$b
|
||||
#
|
||||
current_item_suffix = $/r$(end)$/b
|
||||
#
|
||||
current_item_inactive_column_prefix = $(magenta)$r
|
||||
#
|
||||
current_item_inactive_column_suffix = $/r$(end)
|
||||
#
|
||||
#now_playing_prefix = $b
|
||||
#
|
||||
#now_playing_suffix = $/b
|
||||
#
|
||||
#browser_playlist_prefix = "$2playlist$9 "
|
||||
#
|
||||
#selected_item_prefix = $6
|
||||
#
|
||||
#selected_item_suffix = $9
|
||||
#
|
||||
#modified_item_prefix = $3> $9
|
||||
#
|
||||
##
|
||||
## Note: attributes are not supported for the following variables.
|
||||
##
|
||||
#song_window_title_format = {%a - }{%t}|{%f}
|
||||
##
|
||||
## Note: Below variables are used for sorting songs in browser. The sort mode
|
||||
## determines how songs are sorted, and can be used in combination with a sort
|
||||
## format to specify a custom sorting format. Available values for
|
||||
## browser_sort_mode are "name", "mtime", "format" and "noop".
|
||||
##
|
||||
#
|
||||
#browser_sort_mode = name
|
||||
#
|
||||
#browser_sort_format = {%a - }{%t}|{%f} {(%l)}
|
||||
#
|
||||
##### columns settings #####
|
||||
##
|
||||
## syntax of song columns list format is "column column etc."
|
||||
##
|
||||
## - syntax for each column is:
|
||||
##
|
||||
## (width of the column)[color of the column]{displayed tag}
|
||||
##
|
||||
## Note: Width is by default in %, if you want a column to have fixed size, add
|
||||
## 'f' after the value, e.g. (10)[white]{a} will be the column that take 10% of
|
||||
## screen (so the real width will depend on actual screen size), whereas
|
||||
## (10f)[white]{a} will take 10 terminal cells, no matter how wide the screen
|
||||
## is.
|
||||
##
|
||||
## - color is optional (if you want the default one, leave the field empty).
|
||||
##
|
||||
## Note: You can give a column additional attributes by putting appropriate
|
||||
## character after displayed tag character. Available attributes are:
|
||||
##
|
||||
## - r - column will be right aligned
|
||||
## - E - if tag is empty, empty tag marker won't be displayed
|
||||
##
|
||||
## You can also:
|
||||
##
|
||||
## - give a column custom name by putting it after attributes, separated with
|
||||
## character ':', e.g. {lr:Length} gives you right aligned column of lengths
|
||||
## named "Length".
|
||||
##
|
||||
## - define sequence of tags, that have to be displayed in case predecessor is
|
||||
## empty in a way similar to the one in classic song format, i.e. using '|'
|
||||
## character, e.g. {a|c|p:Owner} creates column named "Owner" that tries to
|
||||
## display artist tag and then composer and performer if previous ones are not
|
||||
## available.
|
||||
##
|
||||
#
|
||||
#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l}
|
||||
#
|
||||
##### various settings #####
|
||||
#
|
||||
##
|
||||
## Note: Custom command that will be executed each time song changes. Useful for
|
||||
## notifications etc.
|
||||
##
|
||||
#execute_on_song_change = ""
|
||||
#
|
||||
##
|
||||
## Note: Custom command that will be executed each time player state
|
||||
## changes. The environment variable MPD_PLAYER_STATE is set to the current
|
||||
## state (either unknown, play, pause, or stop) for its duration.
|
||||
##
|
||||
#
|
||||
#execute_on_player_state_change = ""
|
||||
#
|
||||
#playlist_show_mpd_host = no
|
||||
#
|
||||
#playlist_show_remaining_time = no
|
||||
#
|
||||
#playlist_shorten_total_times = no
|
||||
#
|
||||
#playlist_separate_albums = no
|
||||
#
|
||||
##
|
||||
## Note: Possible display modes: classic, columns.
|
||||
##
|
||||
playlist_display_mode = columns
|
||||
#
|
||||
browser_display_mode = columns
|
||||
#
|
||||
#search_engine_display_mode = classic
|
||||
#
|
||||
#playlist_editor_display_mode = classic
|
||||
#
|
||||
#discard_colors_if_item_is_selected = yes
|
||||
#
|
||||
#show_duplicate_tags = true
|
||||
#
|
||||
#incremental_seeking = yes
|
||||
#
|
||||
#seek_time = 1
|
||||
#
|
||||
#volume_change_step = 2
|
||||
#
|
||||
#autocenter_mode = no
|
||||
#
|
||||
#centered_cursor = no
|
||||
#
|
||||
##
|
||||
## Note: You can specify third character which will be used to build 'empty'
|
||||
## part of progressbar.
|
||||
##
|
||||
progressbar_look = ->
|
||||
#
|
||||
## Available values: database, playlist.
|
||||
##
|
||||
#default_place_to_search_in = database
|
||||
#
|
||||
## Available values: classic, alternative.
|
||||
##
|
||||
user_interface = alternative
|
||||
#
|
||||
#data_fetching_delay = yes
|
||||
#
|
||||
## Available values: artist, album_artist, date, genre, composer, performer.
|
||||
##
|
||||
media_library_primary_tag = artist
|
||||
#
|
||||
media_library_albums_split_by_date = no
|
||||
#
|
||||
## Available values: wrapped, normal.
|
||||
##
|
||||
#default_find_mode = wrapped
|
||||
#
|
||||
#default_tag_editor_pattern = %n - %t
|
||||
#
|
||||
#header_visibility = yes
|
||||
#
|
||||
#statusbar_visibility = yes
|
||||
#
|
||||
#titles_visibility = yes
|
||||
#
|
||||
#header_text_scrolling = yes
|
||||
#
|
||||
#cyclic_scrolling = no
|
||||
#
|
||||
#lines_scrolled = 2
|
||||
#
|
||||
#lyrics_fetchers = lyricwiki, azlyrics, genius, sing365, lyricsmania, metrolyrics, justsomelyrics, jahlyrics, plyrics, tekstowo, internet
|
||||
#
|
||||
#follow_now_playing_lyrics = no
|
||||
#
|
||||
#fetch_lyrics_for_current_song_in_background = no
|
||||
#
|
||||
#store_lyrics_in_song_dir = no
|
||||
#
|
||||
#generate_win32_compatible_filenames = yes
|
||||
#
|
||||
#allow_for_physical_item_deletion = no
|
||||
#
|
||||
##
|
||||
## Note: If you set this variable, ncmpcpp will try to get info from last.fm in
|
||||
## language you set and if it fails, it will fall back to english. Otherwise it
|
||||
## will use english the first time.
|
||||
##
|
||||
## Note: Language has to be expressed as an ISO 639 alpha-2 code.
|
||||
##
|
||||
#lastfm_preferred_language = en
|
||||
#
|
||||
#space_add_mode = add_remove
|
||||
#
|
||||
#show_hidden_files_in_local_browser = no
|
||||
#
|
||||
##
|
||||
## How shall screen switcher work?
|
||||
##
|
||||
## - "previous" - switch between the current and previous screen.
|
||||
## - "screen1,...,screenN" - switch between given sequence of screens.
|
||||
##
|
||||
## Screens available for use: help, playlist, browser, search_engine,
|
||||
## media_library, playlist_editor, tag_editor, outputs, visualizer, clock,
|
||||
## lyrics, last_fm.
|
||||
##
|
||||
#screen_switcher_mode = playlist, browser
|
||||
#
|
||||
##
|
||||
## Note: You can define startup screen by choosing screen from the list above.
|
||||
##
|
||||
startup_screen = browser
|
||||
#
|
||||
##
|
||||
## Note: You can define startup slave screen by choosing screen from the list
|
||||
## above or an empty value for no slave screen.
|
||||
##
|
||||
#startup_slave_screen = ""
|
||||
#
|
||||
#startup_slave_screen_focus = no
|
||||
#
|
||||
##
|
||||
## Default width of locked screen (in %). Acceptable values are from 20 to 80.
|
||||
##
|
||||
#
|
||||
#locked_screen_width_part = 50
|
||||
#
|
||||
#ask_for_locked_screen_width_part = yes
|
||||
#
|
||||
#jump_to_now_playing_song_at_start = yes
|
||||
#
|
||||
#ask_before_clearing_playlists = yes
|
||||
#
|
||||
#clock_display_seconds = no
|
||||
#
|
||||
display_volume_level = yes
|
||||
#
|
||||
#display_bitrate = no
|
||||
#
|
||||
#display_remaining_time = no
|
||||
#
|
||||
## Available values: none, basic, extended, perl.
|
||||
##
|
||||
#regular_expressions = perl
|
||||
#
|
||||
##
|
||||
## Note: if below is enabled, ncmpcpp will ignore leading "The" word while
|
||||
## sorting items in browser, tags in media library, etc.
|
||||
##
|
||||
ignore_leading_the = yes
|
||||
#
|
||||
##
|
||||
## Note: if below is enabled, ncmpcpp will ignore diacritics while searching and
|
||||
## filtering lists. This takes an effect only if boost was compiled with ICU
|
||||
## support.
|
||||
##
|
||||
#ignore_diacritics = no
|
||||
#
|
||||
#block_search_constraints_change_if_items_found = yes
|
||||
#
|
||||
#mouse_support = yes
|
||||
#
|
||||
#mouse_list_scroll_whole_page = yes
|
||||
#
|
||||
#empty_tag_marker = <empty>
|
||||
#
|
||||
#tags_separator = " | "
|
||||
#
|
||||
#tag_editor_extended_numeration = no
|
||||
#
|
||||
#media_library_sort_by_mtime = no
|
||||
#
|
||||
enable_window_title = yes
|
||||
#
|
||||
##
|
||||
## Note: You can choose default search mode for search engine. Available modes
|
||||
## are:
|
||||
##
|
||||
## - 1 - use mpd built-in searching (no regexes, pattern matching)
|
||||
##
|
||||
## - 2 - use ncmpcpp searching (pattern matching with support for regexes, but
|
||||
## if your mpd is on a remote machine, downloading big database to process
|
||||
## it can take a while
|
||||
##
|
||||
## - 3 - match only exact values (this mode uses mpd function for searching in
|
||||
## database and local one for searching in current playlist)
|
||||
##
|
||||
#
|
||||
#search_engine_default_search_mode = 1
|
||||
#
|
||||
external_editor = vim
|
||||
#
|
||||
## Note: set to yes if external editor is a console application.
|
||||
##
|
||||
use_console_editor = yes
|
||||
#
|
||||
##### colors definitions #####
|
||||
##
|
||||
## It is possible to set a background color by setting a color value
|
||||
## "<foreground>_<background>", e.g. red_black will set foregound color to red
|
||||
## and background color to black.
|
||||
##
|
||||
## In addition, for terminals that support 256 colors it is possible to set one
|
||||
## of them by using a number in range [1, 256] instead of color name,
|
||||
## e.g. numerical value corresponding to red_black is 2_1. To find out if the
|
||||
## terminal supports 256 colors, run ncmpcpp and check out the bottom of the
|
||||
## help screen for list of available colors and their numerical values.
|
||||
##
|
||||
## What is more, there are two special values for the background color:
|
||||
## "transparent" and "current". The first one explicitly sets the background to
|
||||
## be transparent, while the second one allows you to preserve current
|
||||
## background color and change only the foreground one. It's used implicitly
|
||||
## when background color is not specified.
|
||||
##
|
||||
## Moreover, it is possible to attach format information to selected color
|
||||
## variables by appending to their end a colon followed by one or more format
|
||||
## flags, e.g. black:b or red:ur. The following variables support this syntax:
|
||||
## visualizer_color, color1, color2, empty_tag_color, volume_color,
|
||||
## state_line_color, state_flags_color, progressbar_color,
|
||||
## progressbar_elapsed_color, player_state_color, statusbar_time_color,
|
||||
## alternative_ui_separator_color.
|
||||
##
|
||||
## Note: due to technical limitations of older ncurses version, if 256 colors
|
||||
## are used there is a possibility that you'll be able to use only colors with
|
||||
## transparent background.
|
||||
#
|
||||
#colors_enabled = yes
|
||||
#
|
||||
empty_tag_color = magenta
|
||||
#
|
||||
#header_window_color = magenta
|
||||
#
|
||||
#volume_color = default
|
||||
#
|
||||
#state_line_color = default
|
||||
#
|
||||
#state_flags_color = default:b
|
||||
#
|
||||
main_window_color = white
|
||||
#
|
||||
#color1 = white
|
||||
#
|
||||
#color2 = green
|
||||
#
|
||||
progressbar_color = black:b
|
||||
#
|
||||
progressbar_elapsed_color = blue:b
|
||||
#
|
||||
statusbar_color = red
|
||||
#
|
||||
statusbar_time_color = cyan:b
|
||||
#
|
||||
#player_state_color = default:b
|
||||
#
|
||||
#alternative_ui_separator_color = black:b
|
||||
#
|
||||
#window_border_color = green
|
||||
#
|
||||
#active_window_border = red
|
||||
#
|
40
.config/newsboat/config
Normal file
40
.config/newsboat/config
Normal file
@ -0,0 +1,40 @@
|
||||
#show-read-feeds no
|
||||
auto-reload yes
|
||||
|
||||
external-url-viewer "urlscan -dc -r 'linkhandler {}'"
|
||||
|
||||
bind-key j down
|
||||
bind-key k up
|
||||
bind-key j next articlelist
|
||||
bind-key k prev articlelist
|
||||
bind-key J next-feed articlelist
|
||||
bind-key K prev-feed articlelist
|
||||
bind-key G end
|
||||
bind-key g home
|
||||
bind-key d pagedown
|
||||
bind-key u pageup
|
||||
bind-key l open
|
||||
bind-key h quit
|
||||
bind-key a toggle-article-read
|
||||
bind-key n next-unread
|
||||
bind-key N prev-unread
|
||||
bind-key D pb-download
|
||||
bind-key U show-urls
|
||||
bind-key x pb-delete
|
||||
bind-key ^t next-unread
|
||||
|
||||
color listnormal cyan default
|
||||
color listfocus black yellow standout bold
|
||||
color listnormal_unread blue default
|
||||
color listfocus_unread yellow default bold
|
||||
color info red black bold
|
||||
color article cyan default
|
||||
|
||||
browser linkhandler
|
||||
macro , open-in-browser
|
||||
macro t set browser "tsp youtube-dl --add-metadata -ic"; open-in-browser ; set browser linkhandler
|
||||
macro a set browser "tsp youtube-dl --add-metadata -xic -f bestaudio/best"; open-in-browser ; set browser linkhandler
|
||||
macro v set browser "setsid nohup mpv"; open-in-browser ; set browser linkhandler
|
||||
macro w set browser "w3m"; open-in-browser ; set browser linkhandler
|
||||
macro p set browser "setsid dmenuhandler"; open-in-browser ; set browser linkhandler
|
||||
macro c set browser "xsel -b <<<" ; open-in-browser ; set browser linkandler
|
427
.config/nvim/init.vim
Normal file
427
.config/nvim/init.vim
Normal file
@ -0,0 +1,427 @@
|
||||
let mapleader =","
|
||||
|
||||
if ! filereadable(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim"'))
|
||||
echo "Downloading junegunn/vim-plug to manage plugins..."
|
||||
silent !mkdir -p ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/
|
||||
silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim
|
||||
autocmd VimEnter * PlugInstall
|
||||
endif
|
||||
|
||||
|
||||
call plug#begin(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/plugged"'))
|
||||
Plug 'tpope/vim-surround'
|
||||
Plug 'preservim/nerdtree'
|
||||
Plug 'junegunn/goyo.vim'
|
||||
Plug 'PotatoesMaster/i3-vim-syntax'
|
||||
Plug 'jreybert/vimagit'
|
||||
Plug 'lukesmithxyz/vimling'
|
||||
Plug 'vimwiki/vimwiki'
|
||||
Plug 'bling/vim-airline'
|
||||
Plug 'tpope/vim-commentary'
|
||||
Plug 'kovetskiy/sxhkd-vim'
|
||||
Plug 'ap/vim-css-color'
|
||||
Plug 'lervag/vimtex'
|
||||
Plug 'terryma/vim-multiple-cursors'
|
||||
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||
Plug 'dense-analysis/ale'
|
||||
Plug 'arcticicestudio/nord-vim'
|
||||
Plug 'tpope/vim-fugitive'
|
||||
call plug#end()
|
||||
|
||||
set bg=light
|
||||
set go=a
|
||||
set mouse=a
|
||||
set nohlsearch
|
||||
set clipboard+=unnamedplus
|
||||
|
||||
colorscheme nord
|
||||
|
||||
" Some basics:
|
||||
nnoremap c "_c
|
||||
set nocompatible
|
||||
filetype plugin on
|
||||
syntax on
|
||||
set encoding=utf-8
|
||||
set number relativenumber
|
||||
" Enable autocompletion:
|
||||
set wildmode=longest,list,full
|
||||
" Disables automatic commenting on newline:
|
||||
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
|
||||
|
||||
" Goyo plugin makes text more readable when writing prose:
|
||||
map <leader>f :Goyo \| set bg=light \| set linebreak<CR>
|
||||
|
||||
" Spell-check set to <leader>o, 'o' for 'orthography':
|
||||
map <leader>o :setlocal spell! spelllang=en_us<CR>
|
||||
|
||||
" Splits open at the bottom and right, which is non-retarded, unlike vim defaults.
|
||||
set splitbelow splitright
|
||||
|
||||
" Nerd tree
|
||||
map <leader>n :NERDTreeToggle<CR>
|
||||
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
|
||||
|
||||
" vimling:
|
||||
nm <leader>d :call ToggleDeadKeys()<CR>
|
||||
imap <leader>d <esc>:call ToggleDeadKeys()<CR>a
|
||||
nm <leader>i :call ToggleIPA()<CR>
|
||||
imap <leader>i <esc>:call ToggleIPA()<CR>a
|
||||
nm <leader>q :call ToggleProse()<CR>
|
||||
|
||||
" Shortcutting split navigation, saving a keypress:
|
||||
map <C-h> <C-w>h
|
||||
map <C-j> <C-w>j
|
||||
map <C-k> <C-w>k
|
||||
map <C-l> <C-w>l
|
||||
|
||||
" Replace ex mode with gq
|
||||
map Q gq
|
||||
|
||||
" Check file in shellcheck:
|
||||
map <leader>s :!clear && shellcheck %<CR>
|
||||
|
||||
" Open my bibliography file in split
|
||||
map <leader>b :vsp<space>$BIB<CR>
|
||||
map <leader>r :vsp<space>$REFER<CR>
|
||||
|
||||
" Replace all is aliased to S.
|
||||
nnoremap S :%s//g<Left><Left>
|
||||
|
||||
" Compile document, be it groff/LaTeX/markdown/etc.
|
||||
map <leader>c :w! \| !compiler <c-r>%<CR>
|
||||
|
||||
" Open corresponding .pdf/.html or preview
|
||||
map <leader>p :!opout <c-r>%<CR><CR>
|
||||
|
||||
" Runs a script that cleans out tex build files whenever I close out of a .tex file.
|
||||
autocmd VimLeave *.tex !texclear %
|
||||
|
||||
" Copy selected text to system clipboard (requires gvim/nvim/vim-x11 installed):
|
||||
vnoremap <C-c> "+y
|
||||
map <C-p> "+P
|
||||
|
||||
" Ensure files are read as what I want:
|
||||
let g:vimwiki_ext2syntax = {'.Rmd': 'markdown', '.rmd': 'markdown','.md': 'markdown', '.markdown': 'markdown', '.mdown': 'markdown'}
|
||||
map <leader>v :VimwikiIndex
|
||||
let g:vimwiki_list = [{'path': '~/vimwiki', 'syntax': 'markdown', 'ext': '.md'}]
|
||||
autocmd BufRead,BufNewFile /tmp/calcurse*,~/.calcurse/notes/* set filetype=markdown
|
||||
autocmd BufRead,BufNewFile *.ms,*.me,*.mom,*.man set filetype=groff
|
||||
autocmd BufRead,BufNewFile *.tex set filetype=tex
|
||||
|
||||
" Save file as sudo on files that require root permission
|
||||
cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!
|
||||
|
||||
" Enable Goyo by default for mutt writting
|
||||
autocmd BufRead,BufNewFile /tmp/neomutt* let g:goyo_width=80
|
||||
autocmd BufRead,BufNewFile /tmp/neomutt* :Goyo | set bg=light
|
||||
autocmd BufRead,BufNewFile /tmp/neomutt* map ZZ :Goyo\|x!<CR>
|
||||
autocmd BufRead,BufNewFile /tmp/neomutt* map ZQ :Goyo\|q!<CR>
|
||||
|
||||
" Automatically deletes all trailing whitespace and newlines at end of file on save.
|
||||
autocmd BufWritePre * %s/\s\+$//e
|
||||
autocmd BufWritepre * %s/\n\+\%$//e
|
||||
|
||||
" When shortcut files are updated, renew bash and ranger configs with new material:
|
||||
autocmd BufWritePost files,directories !shortcuts
|
||||
" Run xrdb whenever Xdefaults or Xresources are updated.
|
||||
autocmd BufWritePost *Xresources,*Xdefaults !xrdb -merge %
|
||||
" Update binds when sxhkdrc is updated.
|
||||
autocmd BufWritePost *sxhkdrc !pkill -USR1 sxhkd
|
||||
|
||||
" Turns off highlighting on the bits of code that are changed, so the line that is changed is highlighted but the actual text that has changed stands out on the line and is readable.
|
||||
if &diff
|
||||
highlight! link DiffText MatchParen
|
||||
endif
|
||||
|
||||
" Navigating with guides
|
||||
inoremap <leader><leader> <Esc>/<++><Enter>"_c4l
|
||||
vnoremap <leader><leader> <Esc>/<++><Enter>"_c4l
|
||||
map <leader><leader> <Esc>/<++><Enter>"_c4l
|
||||
|
||||
|
||||
" Enable completion where available.
|
||||
" This setting must be set before ALE is loaded.
|
||||
"
|
||||
" You should not turn this setting on if you wish to use ALE as a completion
|
||||
" source for other completion plugins, like Deoplete.
|
||||
let g:ale_completion_enabled = 1
|
||||
|
||||
|
||||
""""COC config
|
||||
|
||||
" TextEdit might fail if hidden is not set.
|
||||
set hidden
|
||||
|
||||
" Some servers have issues with backup files, see #649.
|
||||
set nobackup
|
||||
set nowritebackup
|
||||
|
||||
" Give more space for displaying messages.
|
||||
set cmdheight=2
|
||||
|
||||
" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
|
||||
" delays and poor user experience.
|
||||
set updatetime=300
|
||||
|
||||
" Don't pass messages to |ins-completion-menu|.
|
||||
set shortmess+=c
|
||||
|
||||
" Always show the signcolumn, otherwise it would shift the text each time
|
||||
" diagnostics appear/become resolved.
|
||||
set signcolumn=no
|
||||
|
||||
" Use tab for trigger completion with characters ahead and navigate.
|
||||
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
|
||||
" other plugin before putting this into your config.
|
||||
inoremap <silent><expr> <TAB>
|
||||
\ pumvisible() ? "\<C-n>" :
|
||||
\ <SID>check_back_space() ? "\<TAB>" :
|
||||
\ coc#refresh()
|
||||
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
|
||||
|
||||
function! s:check_back_space() abort
|
||||
let col = col('.') - 1
|
||||
return !col || getline('.')[col - 1] =~# '\s'
|
||||
endfunction
|
||||
|
||||
" Use <c-space> to trigger completion.
|
||||
inoremap <silent><expr> <c-space> coc#refresh()
|
||||
|
||||
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current
|
||||
" position. Coc only does snippet and additional edit on confirm.
|
||||
" <cr> could be remapped by other vim plugin, try `:verbose imap <CR>`.
|
||||
if exists('*complete_info')
|
||||
inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>"
|
||||
else
|
||||
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
|
||||
endif
|
||||
|
||||
" Use `[g` and `]g` to navigate diagnostics
|
||||
nmap <silent> [g <Plug>(coc-diagnostic-prev)
|
||||
nmap <silent> ]g <Plug>(coc-diagnostic-next)
|
||||
|
||||
" GoTo code navigation.
|
||||
nmap <silent> gd <Plug>(coc-definition)
|
||||
nmap <silent> gy <Plug>(coc-type-definition)
|
||||
nmap <silent> gi <Plug>(coc-implementation)
|
||||
nmap <silent> gr <Plug>(coc-references)
|
||||
|
||||
" Use K to show documentation in preview window.
|
||||
nnoremap <silent> K :call <SID>show_documentation()<CR>
|
||||
|
||||
function! s:show_documentation()
|
||||
if (index(['vim','help'], &filetype) >= 0)
|
||||
execute 'h '.expand('<cword>')
|
||||
else
|
||||
call CocAction('doHover')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Highlight the symbol and its references when holding the cursor.
|
||||
autocmd CursorHold * silent call CocActionAsync('highlight')
|
||||
|
||||
" Symbol renaming.
|
||||
nmap <leader>rn <Plug>(coc-rename)
|
||||
|
||||
" Formatting selected code.
|
||||
xmap <leader>f <Plug>(coc-format-selected)
|
||||
nmap <leader>f <Plug>(coc-format-selected)
|
||||
|
||||
augroup mygroup
|
||||
autocmd!
|
||||
" Setup formatexpr specified filetype(s).
|
||||
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
|
||||
" Update signature help on jump placeholder.
|
||||
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
|
||||
augroup end
|
||||
|
||||
" Applying codeAction to the selected region.
|
||||
" Example: `<leader>aap` for current paragraph
|
||||
xmap <leader>a <Plug>(coc-codeaction-selected)
|
||||
nmap <leader>a <Plug>(coc-codeaction-selected)
|
||||
|
||||
" Remap keys for applying codeAction to the current line.
|
||||
nmap <leader>ac <Plug>(coc-codeaction)
|
||||
" Apply AutoFix to problem on the current line.
|
||||
nmap <leader>qf <Plug>(coc-fix-current)
|
||||
|
||||
" Introduce function text object
|
||||
" NOTE: Requires 'textDocument.documentSymbol' support from the language server.
|
||||
xmap if <Plug>(coc-funcobj-i)
|
||||
xmap af <Plug>(coc-funcobj-a)
|
||||
omap if <Plug>(coc-funcobj-i)
|
||||
omap af <Plug>(coc-funcobj-a)
|
||||
|
||||
" Use <TAB> for selections ranges.
|
||||
" NOTE: Requires 'textDocument/selectionRange' support from the language server.
|
||||
" coc-tsserver, coc-python are the examples of servers that support it.
|
||||
nmap <silent> <TAB> <Plug>(coc-range-select)
|
||||
xmap <silent> <TAB> <Plug>(coc-range-select)
|
||||
|
||||
" Add `:Format` command to format current buffer.
|
||||
command! -nargs=0 Format :call CocAction('format')
|
||||
|
||||
" Add `:Fold` command to fold current buffer.
|
||||
command! -nargs=? Fold :call CocAction('fold', <f-args>)
|
||||
|
||||
" Add `:OR` command for organize imports of the current buffer.
|
||||
command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport')
|
||||
|
||||
" Add (Neo)Vim's native statusline support.
|
||||
" NOTE: Please see `:h coc-status` for integrations with external plugins that
|
||||
" provide custom statusline: lightline.vim, vim-airline.
|
||||
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
|
||||
|
||||
" Mappings using CoCList:
|
||||
" Show all diagnostics.
|
||||
nnoremap <silent> <space>a :<C-u>CocList diagnostics<cr>
|
||||
" Manage extensions.
|
||||
nnoremap <silent> <space>e :<C-u>CocList extensions<cr>
|
||||
" Show commands.
|
||||
nnoremap <silent> <space>c :<C-u>CocList commands<cr>
|
||||
" Find symbol of current document.
|
||||
nnoremap <silent> <space>o :<C-u>CocList outline<cr>
|
||||
" Search workspace symbols.
|
||||
nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr>
|
||||
" Do default action for next item.
|
||||
nnoremap <silent> <space>j :<C-u>CocNext<CR>
|
||||
" Do default action for previous item.
|
||||
nnoremap <silent> <space>k :<C-u>CocPrev<CR>
|
||||
" Resume latest coc list.
|
||||
nnoremap <silent> <space>p :<C-u>CocListResume<CR>
|
||||
|
||||
"""VimTex
|
||||
let g:vimtex_view_method = 'zathura'
|
||||
let g:latex_view_general_viewer = 'zathura'
|
||||
let g:vimtex_log_verbose = 0
|
||||
let g:vimtex_quickfix_open_on_warning = 0
|
||||
|
||||
"""Fix E10 error for some tex stuff:
|
||||
set nocompatible
|
||||
|
||||
|
||||
"""LATEX
|
||||
" Word count:
|
||||
autocmd FileType tex map <leader>w :w !detex \| wc -w<CR>
|
||||
" Code snippets
|
||||
"""autocmd FileType tex inoremap ,fr \begin{frame}<Enter>\frametitle{}<Enter><Enter><++><Enter><Enter>\end{frame}<Enter><Enter><++><Esc>6kf}i
|
||||
autocmd FileType tex inoremap ,fi \begin{fitch}<Enter><Enter>\end{fitch}<Enter><Enter><++><Esc>3kA
|
||||
autocmd FileType tex inoremap ,exe \begin{exe}<Enter>\ex<Space><Enter>\end{exe}<Enter><Enter><++><Esc>3kA
|
||||
autocmd FileType tex inoremap ,bf \textbf{}<++><Esc>T{i
|
||||
autocmd FileType tex vnoremap , <ESC>`<i\{<ESC>`>2la}<ESC>?\\{<Enter>a
|
||||
autocmd FileType tex inoremap ,it \textit{}<++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,ct \textcite{}<++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,cp \parencite{}<++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,glos {\gll<Space><++><Space>\\<Enter><++><Space>\\<Enter>\trans{``<++>''}}<Esc>2k2bcw
|
||||
autocmd FileType tex inoremap ,x \begin{xlist}<Enter>\ex<Space><Enter>\end{xlist}<Esc>kA<Space>
|
||||
autocmd FileType tex inoremap ,ol \begin{enumerate}<Enter><Enter>\end{enumerate}<Enter><Enter><++><Esc>3kA\item<Space>
|
||||
autocmd FileType tex inoremap ,ul \begin{itemize}<Enter><Enter>\end{itemize}<Enter><Enter><++><Esc>3kA\item<Space>
|
||||
autocmd FileType tex inoremap ,li <Enter>\item[]<Space>
|
||||
autocmd FileType tex inoremap ,ref \ref{}<Space><++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,tab \begin{tabular}<Enter><++><Enter>\end{tabular}<Enter><Enter><++><Esc>4kA{}<Esc>i
|
||||
autocmd FileType tex inoremap ,ot \begin{tableau}<Enter>\inp{<++>}<Tab>\const{<++>}<Tab><++><Enter><++><Enter>\end{tableau}<Enter><Enter><++><Esc>5kA{}<Esc>i
|
||||
autocmd FileType tex inoremap ,can \cand{}<Tab><++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,con \const{}<Tab><++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,v \vio{}<Tab><++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,a \href{}{<++>}<Space><++><Esc>2T{i
|
||||
autocmd FileType tex inoremap ,sc \textsc{}<Space><++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,chap \chapter{}<Enter><Enter><++><Esc>2kf}i
|
||||
autocmd FileType tex inoremap ,sec \section{}<Enter><Enter><++><Esc>2kf}i
|
||||
autocmd FileType tex inoremap ,ssec \subsection{}<Enter><Enter><++><Esc>2kf}i
|
||||
autocmd FileType tex inoremap ,sssec \subsubsection{}<Enter><Enter><++><Esc>2kf}i
|
||||
autocmd FileType tex inoremap ,st <Esc>F{i*<Esc>f}i
|
||||
autocmd FileType tex inoremap ,beg \begin{DELRN}<Enter><++><Enter>\end{DELRN}<Enter><Enter><++><Esc>4k0fR:MultipleCursorsFind<Space>DELRN<Enter>c
|
||||
autocmd FileType tex inoremap ,up <Esc>/usepackage<Enter>o\usepackage{}<Esc>i
|
||||
autocmd FileType tex nnoremap ,up /usepackage<Enter>o\usepackage{}<Esc>i
|
||||
autocmd FileType tex inoremap ,tt \texttt{}<Space><++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,bt {\blindtext}
|
||||
autocmd FileType tex inoremap ,nu $\varnothing$
|
||||
autocmd FileType tex inoremap ,col \begin{columns}[T]<Enter>\begin{column}{.5\textwidth}<Enter><Enter>\end{column}<Enter>\begin{column}{.5\textwidth}<Enter><++><Enter>\end{column}<Enter>\end{columns}<Esc>5kA
|
||||
autocmd FileType tex inoremap ,rn (\ref{})<++><Esc>F}i
|
||||
autocmd FileType tex inoremap ,fr \dfrac{}{<++>} <++> <Esc>T{2hi
|
||||
autocmd FileType tex inoremap ,sqrt \sqrt{}<++> <Esc>T{i
|
||||
autocmd FileType tex inoremap ,b( \left(\right)<++><Esc>T(i
|
||||
autocmd FileType tex inoremap ,bb \mathbb{}<++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,b{ \left\{\right\}<++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,b[ \left[\right]<++><Esc>T[i
|
||||
autocmd FileType tex inoremap ,rm \mathrm{}<++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,abs \left\|\right\|<++><Esc>3ba
|
||||
autocmd FileType tex inoremap ,em \emph{}<++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,tabb \begin{tabbing}<Enter>\hspace*{3cm}\=\hspace*{3cm}\= \kill<Enter>\end{tabbing}<Enter><Enter><++><Esc>3kA<Enter>
|
||||
autocmd FileType tex inoremap ,txt \text{}<++><Esc>T{i
|
||||
autocmd FileType tex inoremap ,sfr \sfrac{}{<++>}<++><Esc>2T{i
|
||||
|
||||
|
||||
|
||||
|
||||
"""HTML
|
||||
autocmd FileType html inoremap ,b <b></b><Space><++><Esc>FbT>i
|
||||
autocmd FileType html inoremap ,it <em></em><Space><++><Esc>FeT>i
|
||||
autocmd FileType html inoremap ,1 <h1></h1><Enter><Enter><++><Esc>2kf<i
|
||||
autocmd FileType html inoremap ,2 <h2></h2><Enter><Enter><++><Esc>2kf<i
|
||||
autocmd FileType html inoremap ,3 <h3></h3><Enter><Enter><++><Esc>2kf<i
|
||||
autocmd FileType html inoremap ,p <p></p><Enter><Enter><++><Esc>02kf>a
|
||||
autocmd FileType html inoremap ,a <a<Space>href=""><++></a><Space><++><Esc>14hi
|
||||
autocmd FileType html inoremap ,e <a<Space>target="_blank"<Space>href=""><++></a><Space><++><Esc>14hi
|
||||
autocmd FileType html inoremap ,ul <ul><Enter><li></li><Enter></ul><Enter><Enter><++><Esc>03kf<i
|
||||
autocmd FileType html inoremap ,li <Esc>o<li></li><Esc>F>a
|
||||
autocmd FileType html inoremap ,ol <ol><Enter><li></li><Enter></ol><Enter><Enter><++><Esc>03kf<i
|
||||
autocmd FileType html inoremap ,im <img src="" alt="<++>"><++><esc>Fcf"a
|
||||
autocmd FileType html inoremap ,td <td></td><++><Esc>Fdcit
|
||||
autocmd FileType html inoremap ,tr <tr></tr><Enter><++><Esc>kf<i
|
||||
autocmd FileType html inoremap ,th <th></th><++><Esc>Fhcit
|
||||
autocmd FileType html inoremap ,tab <table><Enter></table><Esc>O
|
||||
autocmd FileType html inoremap ,gr <font color="green"></font><Esc>F>a
|
||||
autocmd FileType html inoremap ,rd <font color="red"></font><Esc>F>a
|
||||
autocmd FileType html inoremap ,yl <font color="yellow"></font><Esc>F>a
|
||||
autocmd FileType html inoremap ,dt <dt></dt><Enter><dd><++></dd><Enter><++><esc>2kcit
|
||||
autocmd FileType html inoremap ,dl <dl><Enter><Enter></dl><enter><enter><++><esc>3kcc
|
||||
autocmd FileType html inoremap &<space> &<space>
|
||||
autocmd FileType html inoremap á á
|
||||
autocmd FileType html inoremap é é
|
||||
autocmd FileType html inoremap í í
|
||||
autocmd FileType html inoremap ó ó
|
||||
autocmd FileType html inoremap ú ú
|
||||
autocmd FileType html inoremap ä ä
|
||||
autocmd FileType html inoremap ë ë
|
||||
autocmd FileType html inoremap ï ï
|
||||
autocmd FileType html inoremap ö ö
|
||||
autocmd FileType html inoremap ü ü
|
||||
autocmd FileType html inoremap ã ã
|
||||
autocmd FileType html inoremap ẽ &etilde;
|
||||
autocmd FileType html inoremap ĩ ĩ
|
||||
autocmd FileType html inoremap õ õ
|
||||
autocmd FileType html inoremap ũ ũ
|
||||
autocmd FileType html inoremap ñ ñ
|
||||
autocmd FileType html inoremap à à
|
||||
autocmd FileType html inoremap è è
|
||||
autocmd FileType html inoremap ì ì
|
||||
autocmd FileType html inoremap ò ò
|
||||
autocmd FileType html inoremap ù ù
|
||||
|
||||
|
||||
""".bib
|
||||
autocmd FileType bib inoremap ,a @article{<Enter>author<Space>=<Space>{<++>},<Enter>year<Space>=<Space>{<++>},<Enter>title<Space>=<Space>{<++>},<Enter>journal<Space>=<Space>{<++>},<Enter>volume<Space>=<Space>{<++>},<Enter>pages<Space>=<Space>{<++>},<Enter>}<Enter><++><Esc>8kA,<Esc>i
|
||||
autocmd FileType bib inoremap ,b @book{<Enter>author<Space>=<Space>{<++>},<Enter>year<Space>=<Space>{<++>},<Enter>title<Space>=<Space>{<++>},<Enter>publisher<Space>=<Space>{<++>},<Enter>}<Enter><++><Esc>6kA,<Esc>i
|
||||
autocmd FileType bib inoremap ,c @incollection{<Enter>author<Space>=<Space>{<++>},<Enter>title<Space>=<Space>{<++>},<Enter>booktitle<Space>=<Space>{<++>},<Enter>editor<Space>=<Space>{<++>},<Enter>year<Space>=<Space>{<++>},<Enter>publisher<Space>=<Space>{<++>},<Enter>}<Enter><++><Esc>8kA,<Esc>i
|
||||
|
||||
"MARKDOWN
|
||||
autocmd Filetype markdown,rmd map <leader>w yiWi[<esc>Ea](<esc>pa)
|
||||
autocmd Filetype markdown,rmd inoremap ,n ---<Enter><Enter>
|
||||
autocmd Filetype markdown,rmd inoremap ,b ****<++><Esc>F*hi
|
||||
autocmd Filetype markdown,rmd inoremap ,s ~~~~<++><Esc>F~hi
|
||||
autocmd Filetype markdown,rmd inoremap ,e **<++><Esc>F*i
|
||||
autocmd Filetype markdown,rmd inoremap ,h ====<Space><++><Esc>F=hi
|
||||
autocmd Filetype markdown,rmd inoremap ,i ![](<++>)<++><Esc>F[a
|
||||
autocmd Filetype markdown,rmd inoremap ,a [](<++>)<++><Esc>F[a
|
||||
autocmd Filetype markdown,rmd inoremap ,1 #<Space><Enter><++><Esc>kA
|
||||
autocmd Filetype markdown,rmd inoremap ,2 ##<Space><Enter><++><Esc>kA
|
||||
autocmd Filetype markdown,rmd inoremap ,3 ###<Space><Enter><++><Esc>kA
|
||||
autocmd Filetype markdown,rmd inoremap ,l --------<Enter>
|
||||
autocmd Filetype markdown,rmd inoremap ,r ```{r}<CR>```<CR><CR><esc>2kO
|
||||
autocmd Filetype markdown,rmd inoremap ,p ```{python}<CR>```<CR><CR><esc>2kO
|
||||
autocmd Filetype mardown,rmd inoremap ,c ```<cr>```<cr><cr><esc>2kO
|
||||
|
||||
""".xml
|
||||
autocmd FileType xml inoremap ,e <item><Enter><title><++></title><Enter><guid<space>isPermaLink="false"><++></guid><Enter><pubDate><Esc>:put<Space>=strftime('%a, %d %b %Y %H:%M:%S %z')<Enter>kJA</pubDate><Enter><link><++></link><Enter><description><![CDATA[<++>]]></description><Enter></item><Esc>?<title><enter>cit
|
||||
autocmd FileType xml inoremap ,a <a href="<++>"><++></a><++><Esc>F"ci"
|
2
.config/pass-git-helper/git-pass-mapping.ini
Normal file
2
.config/pass-git-helper/git-pass-mapping.ini
Normal file
@ -0,0 +1,2 @@
|
||||
[github.com]
|
||||
target=Misc/github
|
69
.config/qutebrowser/autoconfig.yml
Normal file
69
.config/qutebrowser/autoconfig.yml
Normal file
@ -0,0 +1,69 @@
|
||||
# If a config.py file exists, this file is ignored unless it's explicitly loaded
|
||||
# via config.load_autoconfig(). For more information, see:
|
||||
# https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#loading-autoconfigyml
|
||||
# DO NOT edit this file by hand, qutebrowser will overwrite it.
|
||||
# Instead, create a config.py - see :help for details.
|
||||
|
||||
config_version: 2
|
||||
settings:
|
||||
bindings.commands:
|
||||
global:
|
||||
normal:
|
||||
',V': spawn setsid mpv {url}
|
||||
',X': spawn dmenuhandler {url}
|
||||
',c': hint links spawn setsid st castyt {hint-url}
|
||||
',v': hint links spawn setsid mpv {hint-url}
|
||||
',x': hint links spawn setsid dmenuhandler {hint-url}
|
||||
content.desktop_capture:
|
||||
global: ask
|
||||
content.notifications:
|
||||
https://boards.4chan.org: true
|
||||
https://boards.4channel.org: true
|
||||
https://riot.im: true
|
||||
https://support.cloud.google.com: true
|
||||
https://www.reddit.com: false
|
||||
https://www.youtube.com: false
|
||||
content.register_protocol_handler:
|
||||
https://mail.google.com?extsrc=mailto&url=%25s: false
|
||||
downloads.location.directory:
|
||||
global: /home/alex/
|
||||
downloads.location.prompt:
|
||||
global: false
|
||||
downloads.location.suggestion:
|
||||
global: path
|
||||
downloads.position:
|
||||
global: top
|
||||
downloads.remove_finished:
|
||||
global: 0
|
||||
editor.command:
|
||||
global:
|
||||
- nvim
|
||||
- -f
|
||||
- '{file}'
|
||||
- -c
|
||||
- normal {line}G{column0}l
|
||||
fonts.default_size:
|
||||
global: 20pt
|
||||
fonts.web.size.default_fixed:
|
||||
global: 13
|
||||
hints.border:
|
||||
global: '2px solid #E3BE23'
|
||||
prompt.filebrowser:
|
||||
global: false
|
||||
qt.highdpi:
|
||||
global: true
|
||||
tabs.show:
|
||||
global: never
|
||||
tabs.tabs_are_windows:
|
||||
global: true
|
||||
url.searchengines:
|
||||
global:
|
||||
DEFAULT: https://searx.tuxcloud.net/?q={}&categories=general&language=en-US
|
||||
ddg: https://duckduckgo.com/?q={}
|
||||
ling: https://www.linguee.com/english-german/search?source=auto&query={}
|
||||
sx: https://searx.tuxcloud.net/?q={}&categories=general&language=en-US
|
||||
yt: https://www.youtube.com/results?search_query={}
|
||||
url.start_pages:
|
||||
global: https://searx.privatenet.cf/
|
||||
zoom.default:
|
||||
global: 160%
|
1
.config/qutebrowser/bookmarks/urls
Normal file
1
.config/qutebrowser/bookmarks/urls
Normal file
@ -0,0 +1 @@
|
||||
https://security.stackexchange.com/questions/220068/using-local-port-forwarding-from-raspberrypi-to-vps-in-order-to-be-able-to-acces ssh - Using local port forwarding from RaspberryPI to VPS in order to be able to access the PI from anywhere on the Internet, security considerations? - Information Security Stack Exchange
|
11
.config/qutebrowser/config.py
Normal file
11
.config/qutebrowser/config.py
Normal file
@ -0,0 +1,11 @@
|
||||
import dracula.draw
|
||||
|
||||
# Load existing settings made via :set
|
||||
config.load_autoconfig()
|
||||
|
||||
dracula.draw.blood(c, {
|
||||
'spacing': {
|
||||
'vertical': 0,
|
||||
'horizontal': 0
|
||||
}
|
||||
})
|
2
.config/qutebrowser/dracula/.gitignore
vendored
Normal file
2
.config/qutebrowser/dracula/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/bookmarks/
|
||||
quickmarks
|
31
.config/qutebrowser/dracula/INSTALL.md
Normal file
31
.config/qutebrowser/dracula/INSTALL.md
Normal file
@ -0,0 +1,31 @@
|
||||
### [qutebrowser](https://www.qutebrowser.org/)
|
||||
|
||||
#### Install using Git
|
||||
|
||||
If you are a git user, you can install the theme and keep up to date by cloning the repo:
|
||||
|
||||
$ git clone https://github.com/dracula/qutebrowser-dracula-theme.git dracula
|
||||
|
||||
#### Install manually
|
||||
|
||||
Download using the [GitHub .zip download](https://github.com/dracula/qutebrowser.git) option and unzip.
|
||||
|
||||
#### Activating theme
|
||||
|
||||
- Find your *[qutebrowser configuration directory](https://www.qutebrowser.org/doc/help/configuring.html#configpy)* (see e.g. `:version` in qutebrowser). This folder should be located at the "config" location listed on qute://version, which is typically ~/.config/qutebrowser/ on Linux, ~/.qutebrowser/ on macOS, and %APPDATA%/qutebrowser/config/ on Windows.
|
||||
- Move the repository folder to `dracula` inside the configuration directory.
|
||||
- In your [qutebrowser config.py file](https://www.qutebrowser.org/doc/help/configuring.html#configpy), include the following:
|
||||
|
||||
```python
|
||||
import dracula.draw
|
||||
|
||||
# Load existing settings made via :set
|
||||
config.load_autoconfig()
|
||||
|
||||
dracula.draw.blood(c, {
|
||||
'spacing': {
|
||||
'vertical': 6,
|
||||
'horizontal': 8
|
||||
}
|
||||
})
|
||||
```
|
0
.config/qutebrowser/dracula/__init__.py
Normal file
0
.config/qutebrowser/dracula/__init__.py
Normal file
BIN
.config/qutebrowser/dracula/__pycache__/__init__.cpython-38.pyc
Normal file
BIN
.config/qutebrowser/dracula/__pycache__/__init__.cpython-38.pyc
Normal file
Binary file not shown.
BIN
.config/qutebrowser/dracula/__pycache__/draw.cpython-38.pyc
Normal file
BIN
.config/qutebrowser/dracula/__pycache__/draw.cpython-38.pyc
Normal file
Binary file not shown.
303
.config/qutebrowser/dracula/draw.py
Normal file
303
.config/qutebrowser/dracula/draw.py
Normal file
@ -0,0 +1,303 @@
|
||||
def blood(c, options = {}):
|
||||
palette = {
|
||||
'background': '#000000',
|
||||
'background-alt': '#111111',
|
||||
'background-attention': '#181920',
|
||||
'border': '#282a36',
|
||||
#'current-line': '#44475a',
|
||||
#'selection': '#44475a',
|
||||
#'foreground': '#f8f8f2',
|
||||
#'foreground-alt': '#e0e0e0',
|
||||
#'foreground-attention': '#ffffff',
|
||||
#'comment': '#6272a4',
|
||||
#'cyan': '#8be9fd',
|
||||
#'green': '#50fa7b',
|
||||
#'orange': '#ffb86c',
|
||||
#'pink': '#ff79c6',
|
||||
#'purple': '#bd93f9',
|
||||
#'red': '#ff5555',
|
||||
#'yellow': '#f1fa8c'
|
||||
'current-line': '#44475a',
|
||||
'selection': '#44475a',
|
||||
'foreground': '#f8f8f2',
|
||||
'foreground-alt': '#e0e0e0',
|
||||
'foreground-attention': '#ffffff',
|
||||
'comment': '#6272a4',
|
||||
'cyan': '#8be9fd',
|
||||
'green': '#A3C48C',
|
||||
'orange': '#ffb86c',
|
||||
'pink': '#ff79c6',
|
||||
'purple': '#bd93f9',
|
||||
'red': '#BF616A',
|
||||
'yellow': '#f1fa8c'
|
||||
}
|
||||
|
||||
spacing = options.get('spacing', {
|
||||
'vertical': 0,
|
||||
'horizontal': 0
|
||||
})
|
||||
|
||||
padding = options.get('padding', {
|
||||
'top': spacing['vertical'],
|
||||
'right': spacing['horizontal'],
|
||||
'bottom': spacing['vertical'],
|
||||
'left': spacing['horizontal']
|
||||
})
|
||||
|
||||
## Background color of the completion widget category headers.
|
||||
c.colors.completion.category.bg = palette['background']
|
||||
|
||||
## Bottom border color of the completion widget category headers.
|
||||
c.colors.completion.category.border.bottom = palette['border']
|
||||
|
||||
## Top border color of the completion widget category headers.
|
||||
c.colors.completion.category.border.top = palette['border']
|
||||
|
||||
## Foreground color of completion widget category headers.
|
||||
c.colors.completion.category.fg = palette['foreground']
|
||||
|
||||
## Background color of the completion widget for even rows.
|
||||
c.colors.completion.even.bg = palette['background']
|
||||
|
||||
## Background color of the completion widget for odd rows.
|
||||
c.colors.completion.odd.bg = palette['background-alt']
|
||||
|
||||
## Text color of the completion widget.
|
||||
c.colors.completion.fg = palette['foreground']
|
||||
|
||||
## Background color of the selected completion item.
|
||||
c.colors.completion.item.selected.bg = palette['selection']
|
||||
|
||||
## Bottom border color of the selected completion item.
|
||||
c.colors.completion.item.selected.border.bottom = palette['selection']
|
||||
|
||||
## Top border color of the completion widget category headers.
|
||||
c.colors.completion.item.selected.border.top = palette['selection']
|
||||
|
||||
## Foreground color of the selected completion item.
|
||||
c.colors.completion.item.selected.fg = palette['foreground']
|
||||
|
||||
## Foreground color of the matched text in the completion.
|
||||
c.colors.completion.match.fg = palette['orange']
|
||||
|
||||
## Color of the scrollbar in completion view
|
||||
c.colors.completion.scrollbar.bg = palette['background']
|
||||
|
||||
## Color of the scrollbar handle in completion view.
|
||||
c.colors.completion.scrollbar.fg = palette['foreground']
|
||||
|
||||
## Background color for the download bar.
|
||||
c.colors.downloads.bar.bg = palette['background']
|
||||
|
||||
## Background color for downloads with errors.
|
||||
c.colors.downloads.error.bg = palette['background']
|
||||
|
||||
## Foreground color for downloads with errors.
|
||||
c.colors.downloads.error.fg = palette['red']
|
||||
|
||||
## Color gradient stop for download backgrounds.
|
||||
c.colors.downloads.stop.bg = palette['background']
|
||||
|
||||
## Color gradient interpolation system for download backgrounds.
|
||||
## Type: ColorSystem
|
||||
## Valid values:
|
||||
## - rgb: Interpolate in the RGB color system.
|
||||
## - hsv: Interpolate in the HSV color system.
|
||||
## - hsl: Interpolate in the HSL color system.
|
||||
## - none: Don't show a gradient.
|
||||
c.colors.downloads.system.bg = 'none'
|
||||
|
||||
## Background color for hints. Note that you can use a `rgba(...)` value
|
||||
## for transparency.
|
||||
c.colors.hints.bg = palette['background']
|
||||
|
||||
## Font color for hints.
|
||||
c.colors.hints.fg = palette['purple']
|
||||
|
||||
## Hints
|
||||
c.hints.border = '1px solid ' + palette['background-alt']
|
||||
|
||||
## Font color for the matched part of hints.
|
||||
c.colors.hints.match.fg = palette['foreground-alt']
|
||||
|
||||
## Background color of the keyhint widget.
|
||||
c.colors.keyhint.bg = palette['background']
|
||||
|
||||
## Text color for the keyhint widget.
|
||||
c.colors.keyhint.fg = palette['purple']
|
||||
|
||||
## Highlight color for keys to complete the current keychain.
|
||||
c.colors.keyhint.suffix.fg = palette['selection']
|
||||
|
||||
## Background color of an error message.
|
||||
c.colors.messages.error.bg = palette['background']
|
||||
|
||||
## Border color of an error message.
|
||||
c.colors.messages.error.border = palette['background-alt']
|
||||
|
||||
## Foreground color of an error message.
|
||||
c.colors.messages.error.fg = palette['red']
|
||||
|
||||
## Background color of an info message.
|
||||
c.colors.messages.info.bg = palette['background']
|
||||
|
||||
## Border color of an info message.
|
||||
c.colors.messages.info.border = palette['background-alt']
|
||||
|
||||
## Foreground color an info message.
|
||||
c.colors.messages.info.fg = palette['comment']
|
||||
|
||||
## Background color of a warning message.
|
||||
c.colors.messages.warning.bg = palette['background']
|
||||
|
||||
## Border color of a warning message.
|
||||
c.colors.messages.warning.border = palette['background-alt']
|
||||
|
||||
## Foreground color a warning message.
|
||||
c.colors.messages.warning.fg = palette['red']
|
||||
|
||||
## Background color for prompts.
|
||||
c.colors.prompts.bg = palette['background']
|
||||
|
||||
# ## Border used around UI elements in prompts.
|
||||
c.colors.prompts.border = '1px solid ' + palette['background-alt']
|
||||
|
||||
## Foreground color for prompts.
|
||||
c.colors.prompts.fg = palette['cyan']
|
||||
|
||||
## Background color for the selected item in filename prompts.
|
||||
c.colors.prompts.selected.bg = palette['selection']
|
||||
|
||||
## Background color of the statusbar in caret mode.
|
||||
c.colors.statusbar.caret.bg = palette['background']
|
||||
|
||||
## Foreground color of the statusbar in caret mode.
|
||||
c.colors.statusbar.caret.fg = palette['orange']
|
||||
|
||||
## Background color of the statusbar in caret mode with a selection.
|
||||
c.colors.statusbar.caret.selection.bg = palette['background']
|
||||
|
||||
## Foreground color of the statusbar in caret mode with a selection.
|
||||
c.colors.statusbar.caret.selection.fg = palette['orange']
|
||||
|
||||
## Background color of the statusbar in command mode.
|
||||
c.colors.statusbar.command.bg = palette['background']
|
||||
|
||||
## Foreground color of the statusbar in command mode.
|
||||
c.colors.statusbar.command.fg = palette['foreground']
|
||||
|
||||
## Background color of the statusbar in private browsing + command mode.
|
||||
c.colors.statusbar.command.private.bg = palette['background']
|
||||
|
||||
## Foreground color of the statusbar in private browsing + command mode.
|
||||
c.colors.statusbar.command.private.fg = palette['foreground-alt']
|
||||
|
||||
## Background color of the statusbar in insert mode.
|
||||
c.colors.statusbar.insert.bg = palette['background-attention']
|
||||
|
||||
## Foreground color of the statusbar in insert mode.
|
||||
c.colors.statusbar.insert.fg = palette['foreground-attention']
|
||||
|
||||
## Background color of the statusbar.
|
||||
c.colors.statusbar.normal.bg = palette['background']
|
||||
|
||||
## Foreground color of the statusbar.
|
||||
c.colors.statusbar.normal.fg = palette['foreground']
|
||||
|
||||
## Background color of the statusbar in passthrough mode.
|
||||
c.colors.statusbar.passthrough.bg = palette['background']
|
||||
|
||||
## Foreground color of the statusbar in passthrough mode.
|
||||
c.colors.statusbar.passthrough.fg = palette['orange']
|
||||
|
||||
## Background color of the statusbar in private browsing mode.
|
||||
c.colors.statusbar.private.bg = palette['background-alt']
|
||||
|
||||
## Foreground color of the statusbar in private browsing mode.
|
||||
c.colors.statusbar.private.fg = palette['foreground-alt']
|
||||
|
||||
## Background color of the progress bar.
|
||||
c.colors.statusbar.progress.bg = palette['background']
|
||||
|
||||
## Foreground color of the URL in the statusbar on error.
|
||||
c.colors.statusbar.url.error.fg = palette['red']
|
||||
|
||||
## Default foreground color of the URL in the statusbar.
|
||||
c.colors.statusbar.url.fg = palette['foreground']
|
||||
|
||||
## Foreground color of the URL in the statusbar for hovered links.
|
||||
c.colors.statusbar.url.hover.fg = palette['cyan']
|
||||
|
||||
## Foreground color of the URL in the statusbar on successful load
|
||||
c.colors.statusbar.url.success.http.fg = palette['green']
|
||||
|
||||
## Foreground color of the URL in the statusbar on successful load
|
||||
c.colors.statusbar.url.success.https.fg = palette['green']
|
||||
|
||||
## Foreground color of the URL in the statusbar when there's a warning.
|
||||
c.colors.statusbar.url.warn.fg = palette['yellow']
|
||||
|
||||
## Status bar padding
|
||||
c.statusbar.padding = padding
|
||||
|
||||
## Background color of the tab bar.
|
||||
## Type: QtColor
|
||||
c.colors.tabs.bar.bg = palette['selection']
|
||||
|
||||
## Background color of unselected even tabs.
|
||||
## Type: QtColor
|
||||
c.colors.tabs.even.bg = palette['selection']
|
||||
|
||||
## Foreground color of unselected even tabs.
|
||||
## Type: QtColor
|
||||
c.colors.tabs.even.fg = palette['foreground']
|
||||
|
||||
## Color for the tab indicator on errors.
|
||||
## Type: QtColor
|
||||
c.colors.tabs.indicator.error = palette['red']
|
||||
|
||||
## Color gradient start for the tab indicator.
|
||||
## Type: QtColor
|
||||
c.colors.tabs.indicator.start = palette['orange']
|
||||
|
||||
## Color gradient end for the tab indicator.
|
||||
## Type: QtColor
|
||||
c.colors.tabs.indicator.stop = palette['green']
|
||||
|
||||
## Color gradient interpolation system for the tab indicator.
|
||||
## Type: ColorSystem
|
||||
## Valid values:
|
||||
## - rgb: Interpolate in the RGB color system.
|
||||
## - hsv: Interpolate in the HSV color system.
|
||||
## - hsl: Interpolate in the HSL color system.
|
||||
## - none: Don't show a gradient.
|
||||
c.colors.tabs.indicator.system = 'none'
|
||||
|
||||
## Background color of unselected odd tabs.
|
||||
## Type: QtColor
|
||||
c.colors.tabs.odd.bg = palette['selection']
|
||||
|
||||
## Foreground color of unselected odd tabs.
|
||||
## Type: QtColor
|
||||
c.colors.tabs.odd.fg = palette['foreground']
|
||||
|
||||
# ## Background color of selected even tabs.
|
||||
# ## Type: QtColor
|
||||
c.colors.tabs.selected.even.bg = palette['background']
|
||||
|
||||
# ## Foreground color of selected even tabs.
|
||||
# ## Type: QtColor
|
||||
c.colors.tabs.selected.even.fg = palette['foreground']
|
||||
|
||||
# ## Background color of selected odd tabs.
|
||||
# ## Type: QtColor
|
||||
c.colors.tabs.selected.odd.bg = palette['background']
|
||||
|
||||
# ## Foreground color of selected odd tabs.
|
||||
# ## Type: QtColor
|
||||
c.colors.tabs.selected.odd.fg = palette['foreground']
|
||||
|
||||
## Tab padding
|
||||
c.tabs.padding = padding
|
||||
c.tabs.indicator.width = 1
|
||||
c.tabs.favicons.scale = 1
|
21
.config/qutebrowser/dracula/readme.md
Normal file
21
.config/qutebrowser/dracula/readme.md
Normal file
@ -0,0 +1,21 @@
|
||||
# Dracula for [qutebrowser](https://www.qutebrowser.org/)
|
||||
|
||||
> A dark theme for [qutebrowser](https://www.qutebrowser.org/).
|
||||
|
||||
![Screenshot](./screenshot.png)
|
||||
|
||||
## Install
|
||||
|
||||
All instructions can be found at [draculatheme.com/qutebrowser](https://draculatheme.com/qutebrowser).
|
||||
|
||||
## Team
|
||||
|
||||
This theme is maintained by the following person(s) and a bunch of [awesome contributors](https://github.com/dracula/qutebrowser/graphs/contributors).
|
||||
|
||||
[![Evan Nagle](https://avatars2.githubusercontent.com/u/556537?s=88&v=4&s=70)](https://github.com/evannagle) |
|
||||
--- |
|
||||
[Evan Nagle](https://github.com/evannagle) |
|
||||
|
||||
## License
|
||||
|
||||
[MIT License](./LICENSE)
|
BIN
.config/qutebrowser/dracula/screenshot.png
Normal file
BIN
.config/qutebrowser/dracula/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 605 KiB |
8
.config/qutebrowser/qsettings/QtProject.conf
Normal file
8
.config/qutebrowser/qsettings/QtProject.conf
Normal file
@ -0,0 +1,8 @@
|
||||
[FileDialog]
|
||||
history=file:///home/alex
|
||||
lastVisited=file:///home/alex
|
||||
qtVersion=5.15.0
|
||||
shortcuts=file:, file:///home/alex
|
||||
sidebarWidth=82
|
||||
treeViewHeader=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1\xd9\0\0\0\x4\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\0\xe5\0\0\0\x1\0\0\0\0\0\0\0O\0\0\0\x1\0\0\0\0\0\0\0O\0\0\0\x1\0\0\0\0\0\0\0V\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff)
|
||||
viewMode=Detail
|
6
.config/qutebrowser/quickmarks
Normal file
6
.config/qutebrowser/quickmarks
Normal file
@ -0,0 +1,6 @@
|
||||
gre https://www.prepscholar.com/gre/a/dashboard
|
||||
ys https://www.youtube.com/feed/subscriptions
|
||||
moo https://moodle-app2.let.ethz.ch/
|
||||
riot https://riot.im/app/#/room/!TVGuLdRkkENrCZonlF:matrix.org
|
||||
fit https://boards.4channel.org/fit/
|
||||
wsg https://boards.4channel.org/wsg/
|
0
.config/ranger/colorschemes/__init__.py
Normal file
0
.config/ranger/colorschemes/__init__.py
Normal file
Binary file not shown.
Binary file not shown.
183
.config/ranger/colorschemes/default.py
Normal file
183
.config/ranger/colorschemes/default.py
Normal file
@ -0,0 +1,183 @@
|
||||
# This file is part of ranger, the console file manager.
|
||||
# License: GNU GPL version 3, see the file "AUTHORS" for details.
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
from ranger.gui.colorscheme import ColorScheme
|
||||
from ranger.gui.color import (
|
||||
black, blue, cyan, green, magenta, red, white, yellow, default,
|
||||
normal, bold, reverse, dim, BRIGHT,
|
||||
default_colors,
|
||||
)
|
||||
|
||||
|
||||
class Default(ColorScheme):
|
||||
progress_bar_color = blue
|
||||
|
||||
def use(self, context): # pylint: disable=too-many-branches,too-many-statements
|
||||
fg, bg, attr = default_colors
|
||||
|
||||
if context.reset:
|
||||
return default_colors
|
||||
|
||||
elif context.in_browser:
|
||||
if context.selected:
|
||||
attr = reverse
|
||||
else:
|
||||
attr = normal
|
||||
if context.empty or context.error:
|
||||
bg = red
|
||||
if context.border:
|
||||
fg = default
|
||||
if context.media:
|
||||
if context.image:
|
||||
fg = yellow
|
||||
else:
|
||||
fg = magenta
|
||||
if context.container:
|
||||
fg = red
|
||||
if context.directory:
|
||||
attr |= bold
|
||||
fg = blue
|
||||
fg += BRIGHT
|
||||
elif context.executable and not \
|
||||
any((context.media, context.container,
|
||||
context.fifo, context.socket)):
|
||||
attr |= bold
|
||||
fg = green
|
||||
fg += BRIGHT
|
||||
if context.socket:
|
||||
attr |= bold
|
||||
fg = magenta
|
||||
fg += BRIGHT
|
||||
if context.fifo or context.device:
|
||||
fg = yellow
|
||||
if context.device:
|
||||
attr |= bold
|
||||
fg += BRIGHT
|
||||
if context.link:
|
||||
fg = cyan if context.good else magenta
|
||||
if context.tag_marker and not context.selected:
|
||||
attr |= bold
|
||||
if fg in (red, magenta):
|
||||
fg = white
|
||||
else:
|
||||
fg = red
|
||||
fg += BRIGHT
|
||||
if not context.selected and (context.cut or context.copied):
|
||||
attr |= bold
|
||||
fg = black
|
||||
fg += BRIGHT
|
||||
# If the terminal doesn't support bright colors, use dim white
|
||||
# instead of black.
|
||||
if BRIGHT == 0:
|
||||
attr |= dim
|
||||
fg = white
|
||||
if context.main_column:
|
||||
# Doubling up with BRIGHT here causes issues because it's
|
||||
# additive not idempotent.
|
||||
if context.selected:
|
||||
attr |= bold
|
||||
if context.marked:
|
||||
attr |= bold
|
||||
fg = yellow
|
||||
if context.badinfo:
|
||||
if attr & reverse:
|
||||
bg = magenta
|
||||
else:
|
||||
fg = magenta
|
||||
|
||||
if context.inactive_pane:
|
||||
fg = cyan
|
||||
|
||||
elif context.in_titlebar:
|
||||
if context.hostname:
|
||||
fg = red if context.bad else green
|
||||
elif context.directory:
|
||||
fg = blue
|
||||
elif context.tab:
|
||||
if context.good:
|
||||
bg = green
|
||||
elif context.link:
|
||||
fg = cyan
|
||||
attr |= bold
|
||||
|
||||
elif context.in_statusbar:
|
||||
if context.permissions:
|
||||
if context.good:
|
||||
fg = cyan
|
||||
elif context.bad:
|
||||
fg = magenta
|
||||
if context.marked:
|
||||
attr |= bold | reverse
|
||||
fg = yellow
|
||||
fg += BRIGHT
|
||||
if context.frozen:
|
||||
attr |= bold | reverse
|
||||
fg = cyan
|
||||
fg += BRIGHT
|
||||
if context.message:
|
||||
if context.bad:
|
||||
attr |= bold
|
||||
fg = red
|
||||
fg += BRIGHT
|
||||
if context.loaded:
|
||||
bg = self.progress_bar_color
|
||||
if context.vcsinfo:
|
||||
fg = blue
|
||||
attr &= ~bold
|
||||
if context.vcscommit:
|
||||
fg = yellow
|
||||
attr &= ~bold
|
||||
if context.vcsdate:
|
||||
fg = cyan
|
||||
attr &= ~bold
|
||||
|
||||
if context.text:
|
||||
if context.highlight:
|
||||
attr |= reverse
|
||||
|
||||
if context.in_taskview:
|
||||
if context.title:
|
||||
fg = blue
|
||||
|
||||
if context.selected:
|
||||
attr |= reverse
|
||||
|
||||
if context.loaded:
|
||||
if context.selected:
|
||||
fg = self.progress_bar_color
|
||||
else:
|
||||
bg = self.progress_bar_color
|
||||
|
||||
if context.vcsfile and not context.selected:
|
||||
attr &= ~bold
|
||||
if context.vcsconflict:
|
||||
fg = magenta
|
||||
elif context.vcsuntracked:
|
||||
fg = cyan
|
||||
elif context.vcschanged:
|
||||
fg = red
|
||||
elif context.vcsunknown:
|
||||
fg = red
|
||||
elif context.vcsstaged:
|
||||
fg = green
|
||||
elif context.vcssync:
|
||||
fg = green
|
||||
elif context.vcsignored:
|
||||
fg = default
|
||||
|
||||
elif context.vcsremote and not context.selected:
|
||||
attr &= ~bold
|
||||
if context.vcssync or context.vcsnone:
|
||||
fg = green
|
||||
elif context.vcsbehind:
|
||||
fg = red
|
||||
elif context.vcsahead:
|
||||
fg = blue
|
||||
elif context.vcsdiverged:
|
||||
fg = magenta
|
||||
elif context.vcsunknown:
|
||||
fg = red
|
||||
|
||||
return fg, bg, attr
|
23
.config/ranger/colorschemes/jungle.py
Normal file
23
.config/ranger/colorschemes/jungle.py
Normal file
@ -0,0 +1,23 @@
|
||||
# This file is part of ranger, the console file manager.
|
||||
# License: GNU GPL version 3, see the file "AUTHORS" for details.
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
from ranger.colorschemes.default import Default
|
||||
from ranger.gui.color import green, red, blue
|
||||
|
||||
|
||||
class Scheme(Default):
|
||||
progress_bar_color = green
|
||||
|
||||
def use(self, context):
|
||||
fg, bg, attr = Default.use(self, context)
|
||||
|
||||
if context.directory and not context.marked and not context.link \
|
||||
and not context.inactive_pane:
|
||||
fg = self.progress_bar_color
|
||||
|
||||
if context.in_titlebar and context.hostname:
|
||||
fg = red if context.bad else blue
|
||||
|
||||
return fg, bg, attr
|
44
.config/ranger/colorschemes/snow.py
Normal file
44
.config/ranger/colorschemes/snow.py
Normal file
@ -0,0 +1,44 @@
|
||||
# This file is part of ranger, the console file manager.
|
||||
# License: GNU GPL version 3, see the file "AUTHORS" for details.
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
from ranger.gui.colorscheme import ColorScheme
|
||||
from ranger.gui.color import default_colors, reverse, bold, BRIGHT
|
||||
|
||||
|
||||
class Snow(ColorScheme):
|
||||
|
||||
def use(self, context):
|
||||
fg, bg, attr = default_colors
|
||||
|
||||
if context.reset:
|
||||
pass
|
||||
|
||||
elif context.in_browser:
|
||||
if context.selected:
|
||||
attr = reverse
|
||||
if context.directory:
|
||||
attr |= bold
|
||||
fg += BRIGHT
|
||||
|
||||
elif context.highlight:
|
||||
attr |= reverse
|
||||
|
||||
elif context.in_titlebar and context.tab and context.good:
|
||||
attr |= reverse
|
||||
|
||||
elif context.in_statusbar:
|
||||
if context.loaded:
|
||||
attr |= reverse
|
||||
if context.marked:
|
||||
attr |= reverse
|
||||
|
||||
elif context.in_taskview:
|
||||
if context.selected:
|
||||
attr |= bold
|
||||
fg += BRIGHT
|
||||
if context.loaded:
|
||||
attr |= reverse
|
||||
|
||||
return fg, bg, attr
|
62
.config/ranger/commands.py
Normal file
62
.config/ranger/commands.py
Normal file
@ -0,0 +1,62 @@
|
||||
# This is a sample commands.py. You can add your own commands here.
|
||||
#
|
||||
# Please refer to commands_full.py for all the default commands and a complete
|
||||
# documentation. Do NOT add them all here, or you may end up with defunct
|
||||
# commands when upgrading ranger.
|
||||
|
||||
# A simple command for demonstration purposes follows.
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
# You can import any python module as needed.
|
||||
import os
|
||||
|
||||
# You always need to import ranger.api.commands here to get the Command class:
|
||||
from ranger.api.commands import Command
|
||||
|
||||
|
||||
# Any class that is a subclass of "Command" will be integrated into ranger as a
|
||||
# command. Try typing ":my_edit<ENTER>" in ranger!
|
||||
class my_edit(Command):
|
||||
# The so-called doc-string of the class will be visible in the built-in
|
||||
# help that is accessible by typing "?c" inside ranger.
|
||||
""":my_edit <filename>
|
||||
|
||||
A sample command for demonstration purposes that opens a file in an editor.
|
||||
"""
|
||||
|
||||
# The execute method is called when you run this command in ranger.
|
||||
def execute(self):
|
||||
# self.arg(1) is the first (space-separated) argument to the function.
|
||||
# This way you can write ":my_edit somefilename<ENTER>".
|
||||
if self.arg(1):
|
||||
# self.rest(1) contains self.arg(1) and everything that follows
|
||||
target_filename = self.rest(1)
|
||||
else:
|
||||
# self.fm is a ranger.core.filemanager.FileManager object and gives
|
||||
# you access to internals of ranger.
|
||||
# self.fm.thisfile is a ranger.container.file.File object and is a
|
||||
# reference to the currently selected file.
|
||||
target_filename = self.fm.thisfile.path
|
||||
|
||||
# This is a generic function to print text in ranger.
|
||||
self.fm.notify("Let's edit the file " + target_filename + "!")
|
||||
|
||||
# Using bad=True in fm.notify allows you to print error messages:
|
||||
if not os.path.exists(target_filename):
|
||||
self.fm.notify("The given file does not exist!", bad=True)
|
||||
return
|
||||
|
||||
# This executes a function from ranger.core.acitons, a module with a
|
||||
# variety of subroutines that can help you construct commands.
|
||||
# Check out the source, or run "pydoc ranger.core.actions" for a list.
|
||||
self.fm.edit_file(target_filename)
|
||||
|
||||
# The tab method is called when you press tab, and should return a list of
|
||||
# suggestions that the user will tab through.
|
||||
# tabnum is 1 for <TAB> and -1 for <S-TAB> by default
|
||||
def tab(self, tabnum):
|
||||
# This is a generic tab-completion function that iterates through the
|
||||
# content of the current directory.
|
||||
return self._tab_directory_content()
|
1836
.config/ranger/commands_full.py
Normal file
1836
.config/ranger/commands_full.py
Normal file
File diff suppressed because it is too large
Load Diff
747
.config/ranger/rc.conf
Normal file
747
.config/ranger/rc.conf
Normal file
@ -0,0 +1,747 @@
|
||||
# ===================================================================
|
||||
# This file contains the default startup commands for ranger.
|
||||
# To change them, it is recommended to create either /etc/ranger/rc.conf
|
||||
# (system-wide) or ~/.config/ranger/rc.conf (per user) and add your custom
|
||||
# commands there.
|
||||
#
|
||||
# If you copy this whole file there, you may want to set the environment
|
||||
# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
|
||||
#
|
||||
# The purpose of this file is mainly to define keybindings and settings.
|
||||
# For running more complex python code, please create a plugin in "plugins/" or
|
||||
# a command in "commands.py".
|
||||
#
|
||||
# Each line is a command that will be run before the user interface
|
||||
# is initialized. As a result, you can not use commands which rely
|
||||
# on the UI such as :delete or :mark.
|
||||
# ===================================================================
|
||||
|
||||
# ===================================================================
|
||||
# == Options
|
||||
# ===================================================================
|
||||
|
||||
# Which viewmode should be used? Possible values are:
|
||||
# miller: Use miller columns which show multiple levels of the hierarchy
|
||||
# multipane: Midnight-commander like multipane view showing all tabs next
|
||||
# to each other
|
||||
set viewmode miller
|
||||
#set viewmode multipane
|
||||
|
||||
# How many columns are there, and what are their relative widths?
|
||||
set column_ratios 1,3,4
|
||||
|
||||
# Which files should be hidden? (regular expression)
|
||||
set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
|
||||
|
||||
# Show hidden files? You can toggle this by typing 'zh'
|
||||
set show_hidden false
|
||||
|
||||
# Ask for a confirmation when running the "delete" command?
|
||||
# Valid values are "always", "never", "multiple" (default)
|
||||
# With "multiple", ranger will ask only if you delete multiple files at once.
|
||||
set confirm_on_delete multiple
|
||||
|
||||
# Use non-default path for file preview script?
|
||||
# ranger ships with scope.sh, a script that calls external programs (see
|
||||
# README.md for dependencies) to preview images, archives, etc.
|
||||
#set preview_script ~/.config/ranger/scope.sh
|
||||
|
||||
# Use the external preview script or display simple plain text or image previews?
|
||||
set use_preview_script true
|
||||
|
||||
# Automatically count files in the directory, even before entering them?
|
||||
set automatically_count_files true
|
||||
|
||||
# Open all images in this directory when running certain image viewers
|
||||
# like feh or sxiv? You can still open selected files by marking them.
|
||||
set open_all_images true
|
||||
|
||||
# Be aware of version control systems and display information.
|
||||
set vcs_aware false
|
||||
|
||||
# State of the four backends git, hg, bzr, svn. The possible states are
|
||||
# disabled, local (only show local info), enabled (show local and remote
|
||||
# information).
|
||||
set vcs_backend_git enabled
|
||||
set vcs_backend_hg disabled
|
||||
set vcs_backend_bzr disabled
|
||||
set vcs_backend_svn disabled
|
||||
|
||||
# Use one of the supported image preview protocols
|
||||
set preview_images true
|
||||
|
||||
# Set the preview image method. Supported methods:
|
||||
#
|
||||
# * w3m (default):
|
||||
# Preview images in full color with the external command "w3mimgpreview"?
|
||||
# This requires the console web browser "w3m" and a supported terminal.
|
||||
# It has been successfully tested with "xterm" and "urxvt" without tmux.
|
||||
#
|
||||
# * iterm2:
|
||||
# Preview images in full color using iTerm2 image previews
|
||||
# (http://iterm2.com/images.html). This requires using iTerm2 compiled
|
||||
# with image preview support.
|
||||
#
|
||||
# This feature relies on the dimensions of the terminal's font. By default, a
|
||||
# width of 8 and height of 11 are used. To use other values, set the options
|
||||
# iterm2_font_width and iterm2_font_height to the desired values.
|
||||
#
|
||||
# * terminology:
|
||||
# Previews images in full color in the terminology terminal emulator.
|
||||
# Supports a wide variety of formats, even vector graphics like svg.
|
||||
#
|
||||
# * urxvt:
|
||||
# Preview images in full color using urxvt image backgrounds. This
|
||||
# requires using urxvt compiled with pixbuf support.
|
||||
#
|
||||
# * urxvt-full:
|
||||
# The same as urxvt but utilizing not only the preview pane but the
|
||||
# whole terminal window.
|
||||
#
|
||||
# * kitty:
|
||||
# Preview images in full color using kitty image protocol.
|
||||
# Requires python PIL or pillow library.
|
||||
# If ranger does not share the local filesystem with kitty
|
||||
# the transfer method is changed to encode the whole image;
|
||||
# while slower, this allows remote previews,
|
||||
# for example during an ssh session.
|
||||
# Tmux is unsupported.
|
||||
set preview_images_method ueberzug
|
||||
|
||||
# Delay in seconds before displaying an image with the w3m method.
|
||||
# Increase it in case of experiencing display corruption.
|
||||
set w3m_delay 0.03
|
||||
|
||||
# Default iTerm2 font size (see: preview_images_method: iterm2)
|
||||
set iterm2_font_width 8
|
||||
set iterm2_font_height 11
|
||||
|
||||
# Use a unicode "..." character to mark cut-off filenames?
|
||||
set unicode_ellipsis false
|
||||
|
||||
# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic).
|
||||
# Requires the python-bidi pip package
|
||||
set bidi_support false
|
||||
|
||||
# Show dotfiles in the bookmark preview box?
|
||||
set show_hidden_bookmarks true
|
||||
|
||||
# Which colorscheme to use? These colorschemes are available by default:
|
||||
# default, jungle, snow, solarized
|
||||
set colorscheme default
|
||||
|
||||
# Preview files on the rightmost column?
|
||||
# And collapse (shrink) the last column if there is nothing to preview?
|
||||
set preview_files true
|
||||
set preview_directories true
|
||||
set collapse_preview true
|
||||
|
||||
# Save the console history on exit?
|
||||
set save_console_history true
|
||||
|
||||
# Draw the status bar on top of the browser window (default: bottom)
|
||||
set status_bar_on_top false
|
||||
|
||||
# Draw a progress bar in the status bar which displays the average state of all
|
||||
# currently running tasks which support progress bars?
|
||||
set draw_progress_bar_in_status_bar true
|
||||
|
||||
# Draw borders around columns? (separators, outline, both, or none)
|
||||
# Separators are vertical lines between columns.
|
||||
# Outline draws a box around all the columns.
|
||||
# Both combines the two.
|
||||
set draw_borders none
|
||||
|
||||
# Display the directory name in tabs?
|
||||
set dirname_in_tabs false
|
||||
|
||||
# Enable the mouse support?
|
||||
set mouse_enabled false
|
||||
|
||||
# Display the file size in the main column or status bar?
|
||||
set display_size_in_main_column true
|
||||
set display_size_in_status_bar true
|
||||
|
||||
# Display the free disk space in the status bar?
|
||||
set display_free_space_in_status_bar true
|
||||
|
||||
# Display files tags in all columns or only in main column?
|
||||
set display_tags_in_all_columns true
|
||||
|
||||
# Set a title for the window?
|
||||
set update_title true
|
||||
|
||||
# Set the title to "ranger" in the tmux program?
|
||||
set update_tmux_title true
|
||||
|
||||
# Shorten the title if it gets long? The number defines how many
|
||||
# directories are displayed at once, 0 turns off this feature.
|
||||
set shorten_title 3
|
||||
|
||||
# Show hostname in titlebar?
|
||||
set hostname_in_titlebar true
|
||||
|
||||
# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
|
||||
set tilde_in_titlebar false
|
||||
|
||||
# How many directory-changes or console-commands should be kept in history?
|
||||
set max_history_size 20
|
||||
set max_console_history_size 50
|
||||
|
||||
# Try to keep so much space between the top/bottom border when scrolling:
|
||||
set scroll_offset 8
|
||||
|
||||
# Flush the input after each key hit? (Noticeable when ranger lags)
|
||||
set flushinput true
|
||||
|
||||
# Padding on the right when there's no preview?
|
||||
# This allows you to click into the space to run the file.
|
||||
set padding_right false
|
||||
|
||||
# Save bookmarks (used with mX and `X) instantly?
|
||||
# This helps to synchronize bookmarks between multiple ranger
|
||||
# instances but leads to *slight* performance loss.
|
||||
# When false, bookmarks are saved when ranger is exited.
|
||||
set autosave_bookmarks true
|
||||
|
||||
# Save the "`" bookmark to disk. This can be used to switch to the last
|
||||
# directory by typing "``".
|
||||
set save_backtick_bookmark true
|
||||
|
||||
# You can display the "real" cumulative size of directories by using the
|
||||
# command :get_cumulative_size or typing "dc". The size is expensive to
|
||||
# calculate and will not be updated automatically. You can choose
|
||||
# to update it automatically though by turning on this option:
|
||||
set autoupdate_cumulative_size false
|
||||
|
||||
# Turning this on makes sense for screen readers:
|
||||
set show_cursor false
|
||||
|
||||
# One of: size, natural, basename, atime, ctime, mtime, type, random
|
||||
set sort natural
|
||||
|
||||
# Additional sorting options
|
||||
set sort_reverse false
|
||||
set sort_case_insensitive true
|
||||
set sort_directories_first true
|
||||
set sort_unicode false
|
||||
|
||||
# Enable this if key combinations with the Alt Key don't work for you.
|
||||
# (Especially on xterm)
|
||||
set xterm_alt_key false
|
||||
|
||||
# Whether to include bookmarks in cd command
|
||||
set cd_bookmarks true
|
||||
|
||||
# Changes case sensitivity for the cd command tab completion
|
||||
set cd_tab_case sensitive
|
||||
|
||||
# Use fuzzy tab completion with the "cd" command. For example,
|
||||
# ":cd /u/lo/b<tab>" expands to ":cd /usr/local/bin".
|
||||
set cd_tab_fuzzy true
|
||||
|
||||
# Avoid previewing files larger than this size, in bytes. Use a value of 0 to
|
||||
# disable this feature.
|
||||
set preview_max_size 0
|
||||
|
||||
# The key hint lists up to this size have their sublists expanded.
|
||||
# Otherwise the submaps are replaced with "...".
|
||||
set hint_collapse_threshold 10
|
||||
|
||||
# Add the highlighted file to the path in the titlebar
|
||||
set show_selection_in_titlebar true
|
||||
|
||||
# The delay that ranger idly waits for user input, in milliseconds, with a
|
||||
# resolution of 100ms. Lower delay reduces lag between directory updates but
|
||||
# increases CPU load.
|
||||
set idle_delay 2000
|
||||
|
||||
# When the metadata manager module looks for metadata, should it only look for
|
||||
# a ".metadata.json" file in the current directory, or do a deep search and
|
||||
# check all directories above the current one as well?
|
||||
set metadata_deep_search false
|
||||
|
||||
# Clear all existing filters when leaving a directory
|
||||
set clear_filters_on_dir_change false
|
||||
|
||||
# Disable displaying line numbers in main column.
|
||||
# Possible values: false, absolute, relative.
|
||||
set line_numbers relative
|
||||
|
||||
# When line_numbers=relative show the absolute line number in the
|
||||
# current line.
|
||||
set relative_current_zero false
|
||||
|
||||
# Start line numbers from 1 instead of 0
|
||||
set one_indexed false
|
||||
|
||||
# Save tabs on exit
|
||||
set save_tabs_on_exit false
|
||||
|
||||
# Enable scroll wrapping - moving down while on the last item will wrap around to
|
||||
# the top and vice versa.
|
||||
set wrap_scroll false
|
||||
|
||||
map gmd cd ~/eth/mad
|
||||
map gm2 cd ~/eth/mech2
|
||||
map gw2 cd ~/eth/wuf2
|
||||
map gev cd ~/eth/videos
|
||||
map gq cd ~/eth/quant
|
||||
map gf1 cd ~/eth/fluid1
|
||||
map gij cd ~/eth/innoproj
|
||||
map giz cd ~/eth/innproz
|
||||
map get cd ~/eth/thermo2
|
||||
map gew cd ~/eth/werkstatt
|
||||
map gvl cd vl
|
||||
map gus cd üs
|
||||
map gco cd coll
|
||||
map gz cd zsf
|
||||
|
||||
|
||||
map glb cd ~/.local/bin
|
||||
map gcf cd ~/.config
|
||||
# Set the global_inode_type_filter to nothing. Possible options: d, f and l for
|
||||
# directories, files and symlinks respectively.
|
||||
set global_inode_type_filter
|
||||
|
||||
# This setting allows to freeze the list of files to save I/O bandwidth. It
|
||||
# should be 'false' during start-up, but you can toggle it by pressing F.
|
||||
set freeze_files false
|
||||
|
||||
# ===================================================================
|
||||
# == Local Options
|
||||
# ===================================================================
|
||||
# You can set local options that only affect a single directory.
|
||||
|
||||
# Examples:
|
||||
# setlocal path=~/downloads sort mtime
|
||||
|
||||
# ===================================================================
|
||||
# == Command Aliases in the Console
|
||||
# ===================================================================
|
||||
|
||||
alias e edit
|
||||
alias q quit
|
||||
alias q! quit!
|
||||
alias qa quitall
|
||||
alias qa! quitall!
|
||||
alias qall quitall
|
||||
alias qall! quitall!
|
||||
alias setl setlocal
|
||||
|
||||
alias filter scout -prts
|
||||
alias find scout -aets
|
||||
alias mark scout -mr
|
||||
alias unmark scout -Mr
|
||||
alias search scout -rs
|
||||
alias search_inc scout -rts
|
||||
alias travel scout -aefklst
|
||||
|
||||
# ===================================================================
|
||||
# == Define keys for the browser
|
||||
# ===================================================================
|
||||
|
||||
# Basic
|
||||
map Q quitall
|
||||
map q quit
|
||||
copymap q ZZ ZQ
|
||||
|
||||
map R reload_cwd
|
||||
map F set freeze_files!
|
||||
map <C-r> reset
|
||||
map <C-l> redraw_window
|
||||
map <C-c> abort
|
||||
map <esc> change_mode normal
|
||||
map ~ set viewmode!
|
||||
|
||||
map i display_file
|
||||
map ? help
|
||||
map W display_log
|
||||
map w taskview_open
|
||||
map S shell $SHELL
|
||||
|
||||
map : console
|
||||
map ; console
|
||||
map ! console shell%space
|
||||
map @ console -p6 shell %%s
|
||||
map # console shell -p%space
|
||||
map s console shell%space
|
||||
map r chain draw_possible_programs; console open_with%%space
|
||||
map f console find%space
|
||||
map cd console cd%space
|
||||
|
||||
map <C-p> chain console; eval fm.ui.console.history_move(-1)
|
||||
|
||||
# Change the line mode
|
||||
map Mf linemode filename
|
||||
map Mi linemode fileinfo
|
||||
map Mm linemode mtime
|
||||
map Mp linemode permissions
|
||||
map Ms linemode sizemtime
|
||||
map Mt linemode metatitle
|
||||
|
||||
# Tagging / Marking
|
||||
map t tag_toggle
|
||||
map ut tag_remove
|
||||
map "<any> tag_toggle tag=%any
|
||||
map <Space> mark_files toggle=True
|
||||
map v mark_files all=True toggle=True
|
||||
map uv mark_files all=True val=False
|
||||
map V toggle_visual_mode
|
||||
map uV toggle_visual_mode reverse=True
|
||||
|
||||
# For the nostalgics: Midnight Commander bindings
|
||||
map <F1> help
|
||||
map <F2> rename_append
|
||||
map <F3> display_file
|
||||
map <F4> edit
|
||||
map <F5> copy
|
||||
map <F6> cut
|
||||
map <F7> console mkdir%space
|
||||
map <F8> console delete
|
||||
map <F10> exit
|
||||
|
||||
# In case you work on a keyboard with dvorak layout
|
||||
map <UP> move up=1
|
||||
map <DOWN> move down=1
|
||||
map <LEFT> move left=1
|
||||
map <RIGHT> move right=1
|
||||
map <HOME> move to=0
|
||||
map <END> move to=-1
|
||||
map <PAGEDOWN> move down=1 pages=True
|
||||
map <PAGEUP> move up=1 pages=True
|
||||
map <CR> move right=1
|
||||
#map <DELETE> console delete
|
||||
map <INSERT> console touch%space
|
||||
|
||||
# VIM-like
|
||||
copymap <UP> k
|
||||
copymap <DOWN> j
|
||||
copymap <LEFT> h
|
||||
copymap <RIGHT> l
|
||||
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>
|
||||
|
||||
# Jumping around
|
||||
map H history_go -1
|
||||
map L history_go 1
|
||||
map ] move_parent 1
|
||||
map [ move_parent -1
|
||||
map } traverse
|
||||
map { traverse_backwards
|
||||
map ) jump_non
|
||||
|
||||
map gh cd ~
|
||||
map gE cd ~/eth
|
||||
map gee cd ~/eth/el_eng
|
||||
map gmd cd ~/eth/mad
|
||||
map gm2 cd ~/eth/mech2
|
||||
map gw2 cd ~/eth/wuf2
|
||||
map gev cd ~/eth/videos
|
||||
map gq cd ~/eth/quant
|
||||
map gf1 cd ~/eth/fluid1
|
||||
map gij cd ~/eth/innoproj
|
||||
map giz cd ~/eth/innoproz
|
||||
map gl cd -r .
|
||||
map gL cd -r %f
|
||||
#map gi eval fm.cd('/run/media/' + os.getenv('USER'))
|
||||
map gM cd /mnt
|
||||
map gs cd /srv
|
||||
map gr cd /
|
||||
map gR eval fm.cd(ranger.RANGERDIR)
|
||||
map g/ cd /
|
||||
map g? cd /usr/share/doc/ranger
|
||||
|
||||
# External Programs
|
||||
map E edit
|
||||
map du shell -p du --max-depth=1 -h --apparent-size
|
||||
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
|
||||
map yp yank path
|
||||
map yd yank dir
|
||||
map yn yank name
|
||||
map y. yank name_without_extension
|
||||
|
||||
# Filesystem Operations
|
||||
map = chmod
|
||||
|
||||
map cw console rename%space
|
||||
map a rename_append
|
||||
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
|
||||
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
|
||||
|
||||
map pp paste
|
||||
map po paste overwrite=True
|
||||
map pP paste append=True
|
||||
map pO paste overwrite=True append=True
|
||||
map pl paste_symlink relative=False
|
||||
map pL paste_symlink relative=True
|
||||
map phl paste_hardlink
|
||||
map pht paste_hardlinked_subtree
|
||||
|
||||
map dD console delete
|
||||
map DD shell gio trash %s
|
||||
|
||||
map dd cut
|
||||
map ud uncut
|
||||
map da cut mode=add
|
||||
map dr cut mode=remove
|
||||
map dt cut mode=toggle
|
||||
|
||||
map yy copy
|
||||
map uy uncut
|
||||
map ya copy mode=add
|
||||
map yr copy mode=remove
|
||||
map yt copy mode=toggle
|
||||
|
||||
# Temporary workarounds
|
||||
map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
|
||||
map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
|
||||
map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
|
||||
map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
|
||||
map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
|
||||
map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
|
||||
map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
|
||||
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 ct search_next order=tag
|
||||
map cs search_next order=size
|
||||
map ci search_next order=mimetype
|
||||
map cc search_next order=ctime
|
||||
map cm search_next order=mtime
|
||||
map ca search_next order=atime
|
||||
|
||||
# Tabs
|
||||
map <C-n> tab_new
|
||||
map <C-w> tab_close
|
||||
map <TAB> tab_move 1
|
||||
map <S-TAB> tab_move -1
|
||||
map <A-Right> tab_move 1
|
||||
map <A-Left> tab_move -1
|
||||
map gt tab_move 1
|
||||
map gT tab_move -1
|
||||
map gn tab_new
|
||||
#map gc tab_close
|
||||
map uq tab_restore
|
||||
map <a-1> tab_open 1
|
||||
map <a-2> tab_open 2
|
||||
map <a-3> tab_open 3
|
||||
map <a-4> tab_open 4
|
||||
map <a-5> tab_open 5
|
||||
map <a-6> tab_open 6
|
||||
map <a-7> tab_open 7
|
||||
map <a-8> tab_open 8
|
||||
map <a-9> tab_open 9
|
||||
map <a-r> tab_shift 1
|
||||
map <a-l> tab_shift -1
|
||||
|
||||
# Sorting
|
||||
map or set sort_reverse!
|
||||
map oz set sort=random
|
||||
map os chain set sort=size; set sort_reverse=False
|
||||
map ob chain set sort=basename; set sort_reverse=False
|
||||
map on chain set sort=natural; set sort_reverse=False
|
||||
map om chain set sort=mtime; set sort_reverse=False
|
||||
map oc chain set sort=ctime; set sort_reverse=False
|
||||
map oa chain set sort=atime; set sort_reverse=False
|
||||
map ot chain set sort=type; set sort_reverse=False
|
||||
map oe chain set sort=extension; set sort_reverse=False
|
||||
|
||||
map oS chain set sort=size; set sort_reverse=True
|
||||
map oB chain set sort=basename; set sort_reverse=True
|
||||
map oN chain set sort=natural; set sort_reverse=True
|
||||
map oM chain set sort=mtime; set sort_reverse=True
|
||||
map oC chain set sort=ctime; set sort_reverse=True
|
||||
map oA chain set sort=atime; set sort_reverse=True
|
||||
map oT chain set sort=type; set sort_reverse=True
|
||||
map oE chain set sort=extension; set sort_reverse=True
|
||||
|
||||
map dc get_cumulative_size
|
||||
|
||||
# Settings
|
||||
map zc set collapse_preview!
|
||||
map zd set sort_directories_first!
|
||||
map zh set show_hidden!
|
||||
map <C-h> set show_hidden!
|
||||
copymap <C-h> <backspace>
|
||||
copymap <backspace> <backspace2>
|
||||
map zI set flushinput!
|
||||
map zi set preview_images!
|
||||
map zm set mouse_enabled!
|
||||
map zp set preview_files!
|
||||
map zP set preview_directories!
|
||||
map zs set sort_case_insensitive!
|
||||
map zu set autoupdate_cumulative_size!
|
||||
map zv set use_preview_script!
|
||||
map zf console filter%space
|
||||
copymap zf zz
|
||||
|
||||
# Filter stack
|
||||
map .n console filter_stack add name%space
|
||||
map .m console filter_stack add mime%space
|
||||
map .d filter_stack add type d
|
||||
map .f filter_stack add type f
|
||||
map .l filter_stack add type l
|
||||
map .| filter_stack add or
|
||||
map .& filter_stack add and
|
||||
map .! filter_stack add not
|
||||
map .r console filter_stack rotate
|
||||
map .c filter_stack clear
|
||||
map .* filter_stack decompose
|
||||
map .p filter_stack pop
|
||||
map .. filter_stack show
|
||||
|
||||
# Bookmarks
|
||||
map `<any> enter_bookmark %any
|
||||
map '<any> enter_bookmark %any
|
||||
map m<any> set_bookmark %any
|
||||
map um<any> unset_bookmark %any
|
||||
|
||||
map m<bg> draw_bookmarks
|
||||
copymap m<bg> um<bg> `<bg> '<bg>
|
||||
|
||||
# Generate all the chmod bindings with some python help:
|
||||
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
|
||||
|
||||
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
|
||||
|
||||
# ===================================================================
|
||||
# == Define keys for the console
|
||||
# ===================================================================
|
||||
# Note: Unmapped keys are passed directly to the console.
|
||||
|
||||
# Basic
|
||||
cmap <tab> eval fm.ui.console.tab()
|
||||
cmap <s-tab> eval fm.ui.console.tab(-1)
|
||||
cmap <ESC> eval fm.ui.console.close()
|
||||
cmap <CR> eval fm.ui.console.execute()
|
||||
cmap <C-l> redraw_window
|
||||
|
||||
copycmap <ESC> <C-c>
|
||||
copycmap <CR> <C-j>
|
||||
|
||||
# Move around
|
||||
cmap <up> eval fm.ui.console.history_move(-1)
|
||||
cmap <down> eval fm.ui.console.history_move(1)
|
||||
cmap <left> eval fm.ui.console.move(left=1)
|
||||
cmap <right> eval fm.ui.console.move(right=1)
|
||||
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
|
||||
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
|
||||
cmap <a-b> eval fm.ui.console.move_word(left=1)
|
||||
cmap <a-f> eval fm.ui.console.move_word(right=1)
|
||||
|
||||
copycmap <a-b> <a-left>
|
||||
copycmap <a-f> <a-right>
|
||||
|
||||
# Line Editing
|
||||
cmap <backspace> eval fm.ui.console.delete(-1)
|
||||
cmap <delete> eval fm.ui.console.delete(0)
|
||||
cmap <C-w> eval fm.ui.console.delete_word()
|
||||
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
|
||||
cmap <C-k> eval fm.ui.console.delete_rest(1)
|
||||
cmap <C-u> eval fm.ui.console.delete_rest(-1)
|
||||
cmap <C-y> eval fm.ui.console.paste()
|
||||
|
||||
# And of course the emacs way
|
||||
copycmap <ESC> <C-g>
|
||||
copycmap <up> <C-p>
|
||||
copycmap <down> <C-n>
|
||||
copycmap <left> <C-b>
|
||||
copycmap <right> <C-f>
|
||||
copycmap <home> <C-a>
|
||||
copycmap <end> <C-e>
|
||||
copycmap <delete> <C-d>
|
||||
copycmap <backspace> <C-h>
|
||||
|
||||
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
|
||||
# and <backspace2> (code 127). To be sure, use both.
|
||||
copycmap <backspace> <backspace2>
|
||||
|
||||
# This special expression allows typing in numerals:
|
||||
cmap <allow_quantifiers> false
|
||||
|
||||
# ===================================================================
|
||||
# == Pager Keybindings
|
||||
# ===================================================================
|
||||
|
||||
# Movement
|
||||
pmap <down> pager_move down=1
|
||||
pmap <up> pager_move up=1
|
||||
pmap <left> pager_move left=4
|
||||
pmap <right> pager_move right=4
|
||||
pmap <home> pager_move to=0
|
||||
pmap <end> pager_move to=-1
|
||||
pmap <pagedown> pager_move down=1.0 pages=True
|
||||
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 <LEFT> h
|
||||
copypmap <RIGHT> l
|
||||
copypmap <HOME> g
|
||||
copypmap <END> G
|
||||
copypmap <C-d> d
|
||||
copypmap <C-u> u
|
||||
copypmap <PAGEDOWN> n f <C-F> <Space>
|
||||
copypmap <PAGEUP> p b <C-B>
|
||||
|
||||
# Basic
|
||||
pmap <C-l> redraw_window
|
||||
pmap <ESC> pager_close
|
||||
copypmap <ESC> q Q i <F3>
|
||||
pmap E edit_file
|
||||
|
||||
# ===================================================================
|
||||
# == Taskview Keybindings
|
||||
# ===================================================================
|
||||
|
||||
# Movement
|
||||
tmap <up> taskview_move up=1
|
||||
tmap <down> taskview_move down=1
|
||||
tmap <home> taskview_move to=0
|
||||
tmap <end> taskview_move to=-1
|
||||
tmap <pagedown> taskview_move down=1.0 pages=True
|
||||
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 <HOME> g
|
||||
copytmap <END> G
|
||||
copytmap <C-u> u
|
||||
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 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)
|
||||
tmap <delete> eval -q fm.ui.taskview.task_remove()
|
||||
|
||||
# Basic
|
||||
tmap <C-l> redraw_window
|
||||
tmap <ESC> taskview_close
|
||||
copytmap <ESC> q Q w <C-c>
|
256
.config/ranger/rifle.conf
Normal file
256
.config/ranger/rifle.conf
Normal file
@ -0,0 +1,256 @@
|
||||
# vim: ft=cfg
|
||||
#
|
||||
# This is the configuration file of "rifle", ranger's file executor/opener.
|
||||
# Each line consists of conditions and a command. For each line the conditions
|
||||
# are checked and if they are met, the respective command is run.
|
||||
#
|
||||
# Syntax:
|
||||
# <condition1> , <condition2> , ... = command
|
||||
#
|
||||
# The command can contain these environment variables:
|
||||
# $1-$9 | The n-th selected file
|
||||
# $@ | All selected files
|
||||
#
|
||||
# If you use the special command "ask", rifle will ask you what program to run.
|
||||
#
|
||||
# Prefixing a condition with "!" will negate its result.
|
||||
# These conditions are currently supported:
|
||||
# match <regexp> | The regexp matches $1
|
||||
# ext <regexp> | The regexp matches the extension of $1
|
||||
# mime <regexp> | The regexp matches the mime type of $1
|
||||
# name <regexp> | The regexp matches the basename of $1
|
||||
# path <regexp> | The regexp matches the absolute path of $1
|
||||
# has <program> | The program is installed (i.e. located in $PATH)
|
||||
# env <variable> | The environment variable "variable" is non-empty
|
||||
# file | $1 is a file
|
||||
# directory | $1 is a directory
|
||||
# number <n> | change the number of this command to n
|
||||
# terminal | stdin, stderr and stdout are connected to a terminal
|
||||
# X | $DISPLAY is not empty (i.e. Xorg runs)
|
||||
#
|
||||
# There are also pseudo-conditions which have a "side effect":
|
||||
# flag <flags> | Change how the program is run. See below.
|
||||
# label <label> | Assign a label or name to the command so it can
|
||||
# | be started with :open_with <label> in ranger
|
||||
# | or `rifle -p <label>` in the standalone executable.
|
||||
# else | Always true.
|
||||
#
|
||||
# Flags are single characters which slightly transform the command:
|
||||
# f | Fork the program, make it run in the background.
|
||||
# | New command = setsid $command >& /dev/null &
|
||||
# r | Execute the command with root permissions
|
||||
# | New command = sudo $command
|
||||
# t | Run the program in a new terminal. If $TERMCMD is not defined,
|
||||
# | rifle will attempt to extract it from $TERM.
|
||||
# | New command = $TERMCMD -e $command
|
||||
# Note: The "New command" serves only as an illustration, the exact
|
||||
# implementation may differ.
|
||||
# Note: When using rifle in ranger, there is an additional flag "c" for
|
||||
# only running the current file even if you have marked multiple files.
|
||||
|
||||
#-------------------------------------------
|
||||
# Websites
|
||||
#-------------------------------------------
|
||||
# Rarely installed browsers get higher priority; It is assumed that if you
|
||||
# install a rare browser, you probably use it. Firefox/konqueror/w3m on the
|
||||
# other hand are often only installed as fallback browsers.
|
||||
ext x?html?, has surf, X, flag f = surf -- file://"$1"
|
||||
ext x?html?, has vimprobable, X, flag f = vimprobable -- "$@"
|
||||
ext x?html?, has vimprobable2, X, flag f = vimprobable2 -- "$@"
|
||||
ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@"
|
||||
ext x?html?, has dwb, X, flag f = dwb -- "$@"
|
||||
ext x?html?, has jumanji, X, flag f = jumanji -- "$@"
|
||||
ext x?html?, has luakit, X, flag f = luakit -- "$@"
|
||||
ext x?html?, has uzbl, X, flag f = uzbl -- "$@"
|
||||
ext x?html?, has uzbl-tabbed, X, flag f = uzbl-tabbed -- "$@"
|
||||
ext x?html?, has uzbl-browser, X, flag f = uzbl-browser -- "$@"
|
||||
ext x?html?, has uzbl-core, X, flag f = uzbl-core -- "$@"
|
||||
ext x?html?, has midori, X, flag f = midori -- "$@"
|
||||
ext x?html?, has chromium-browser, X, flag f = chromium-browser -- "$@"
|
||||
ext x?html?, has chromium, X, flag f = chromium -- "$@"
|
||||
ext x?html?, has google-chrome, X, flag f = google-chrome -- "$@"
|
||||
ext x?html?, has opera, X, flag f = opera -- "$@"
|
||||
ext x?html?, has firefox, X, flag f = firefox -- "$@"
|
||||
ext x?html?, has seamonkey, X, flag f = seamonkey -- "$@"
|
||||
ext x?html?, has iceweasel, X, flag f = iceweasel -- "$@"
|
||||
ext x?html?, has epiphany, X, flag f = epiphany -- "$@"
|
||||
ext x?html?, has konqueror, X, flag f = konqueror -- "$@"
|
||||
ext x?html?, has elinks, terminal = elinks "$@"
|
||||
ext x?html?, has links2, terminal = links2 "$@"
|
||||
ext x?html?, has links, terminal = links "$@"
|
||||
ext x?html?, has lynx, terminal = lynx -- "$@"
|
||||
ext x?html?, has w3m, terminal = w3m "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Misc
|
||||
#-------------------------------------------
|
||||
# Define the "editor" for text files as first action
|
||||
mime ^text, label editor = ${VISUAL:-$EDITOR} -- "$@"
|
||||
mime ^text, label pager = "$PAGER" -- "$@"
|
||||
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
|
||||
!mime ^text, label pager, ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
|
||||
|
||||
ext 1 = man "$1"
|
||||
ext s[wmf]c, has zsnes, X = zsnes "$1"
|
||||
ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1"
|
||||
ext nes, has fceux, X = fceux "$1"
|
||||
ext exe = wine "$1"
|
||||
name ^[mM]akefile$ = make
|
||||
|
||||
#--------------------------------------------
|
||||
# Code
|
||||
#-------------------------------------------
|
||||
ext py = python -- "$1"
|
||||
ext pl = perl -- "$1"
|
||||
ext rb = ruby -- "$1"
|
||||
ext js = node -- "$1"
|
||||
ext sh = sh -- "$1"
|
||||
ext php = php -- "$1"
|
||||
|
||||
#--------------------------------------------
|
||||
# Audio without X
|
||||
#-------------------------------------------
|
||||
mime ^audio|ogg$, terminal, has mpv = mpv -- "$@"
|
||||
mime ^audio|ogg$, terminal, has mplayer2 = mplayer2 -- "$@"
|
||||
mime ^audio|ogg$, terminal, has mplayer = mplayer -- "$@"
|
||||
ext midi?, terminal, has wildmidi = wildmidi -- "$@"
|
||||
|
||||
#--------------------------------------------
|
||||
# Video/Audio with a GUI
|
||||
#-------------------------------------------
|
||||
mime ^video|audio, has gmplayer, X, flag f = gmplayer -- "$@"
|
||||
mime ^video|audio, has smplayer, X, flag f = smplayer "$@"
|
||||
mime ^video, has mpv, X, flag f = mpv -- "$@"
|
||||
mime ^video, has mpv, X, flag f = mpv --fs -- "$@"
|
||||
mime ^video, has mplayer2, X, flag f = mplayer2 -- "$@"
|
||||
mime ^video, has mplayer2, X, flag f = mplayer2 -fs -- "$@"
|
||||
mime ^video, has mplayer, X, flag f = mplayer -- "$@"
|
||||
mime ^video, has mplayer, X, flag f = mplayer -fs -- "$@"
|
||||
mime ^video|audio, has vlc, X, flag f = vlc -- "$@"
|
||||
mime ^video|audio, has totem, X, flag f = totem -- "$@"
|
||||
mime ^video|audio, has totem, X, flag f = totem --fullscreen -- "$@"
|
||||
|
||||
#--------------------------------------------
|
||||
# Video without X:
|
||||
#-------------------------------------------
|
||||
mime ^video, terminal, !X, has mpv = mpv -- "$@"
|
||||
mime ^video, terminal, !X, has mplayer2 = mplayer2 -- "$@"
|
||||
mime ^video, terminal, !X, has mplayer = mplayer -- "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Documents
|
||||
#-------------------------------------------
|
||||
ext pdf, has llpp, X, flag f = llpp "$@"
|
||||
ext pdf, has zathura, X, flag f = zathura -- "$@"
|
||||
ext pdf, has mupdf, X, flag f = mupdf "$@"
|
||||
ext pdf, has mupdf-x11,X, flag f = mupdf-x11 "$@"
|
||||
ext pdf, has apvlv, X, flag f = apvlv -- "$@"
|
||||
ext pdf, has xpdf, X, flag f = xpdf -- "$@"
|
||||
ext pdf, has evince, X, flag f = evince -- "$@"
|
||||
ext pdf, has atril, X, flag f = atril -- "$@"
|
||||
ext pdf, has okular, X, flag f = okular -- "$@"
|
||||
ext pdf, has epdfview, X, flag f = epdfview -- "$@"
|
||||
ext pdf, has qpdfview, X, flag f = qpdfview "$@"
|
||||
ext pdf, has open, X, flag f = open "$@"
|
||||
|
||||
ext docx?, has catdoc, terminal = catdoc -- "$@" | "$PAGER"
|
||||
|
||||
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric, X, flag f = gnumeric -- "$@"
|
||||
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has kspread, X, flag f = kspread -- "$@"
|
||||
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@"
|
||||
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has soffice, X, flag f = soffice "$@"
|
||||
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has ooffice, X, flag f = ooffice "$@"
|
||||
|
||||
ext djvu, has zathura,X, flag f = zathura -- "$@"
|
||||
ext djvu, has evince, X, flag f = evince -- "$@"
|
||||
ext djvu, has atril, X, flag f = atril -- "$@"
|
||||
ext djvu, has djview, X, flag f = djview -- "$@"
|
||||
|
||||
ext epub, has zathura, X, flag f = zathura -- "$@"
|
||||
ext mobi, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Image Viewing:
|
||||
#-------------------------------------------
|
||||
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
|
||||
mime ^image/svg, has display, X, flag f = display -- "$@"
|
||||
|
||||
mime ^image, has pqiv, X, flag f = pqiv -- "$@"
|
||||
mime ^image, has sxiv, X, flag f = sxiv -- "$@"
|
||||
mime ^image, has feh, X, flag f = feh -- "$@"
|
||||
mime ^image, has mirage, X, flag f = mirage -- "$@"
|
||||
mime ^image, has ristretto, X, flag f = ristretto "$@"
|
||||
mime ^image, has eog, X, flag f = eog -- "$@"
|
||||
mime ^image, has eom, X, flag f = eom -- "$@"
|
||||
mime ^image, has nomacs, X, flag f = nomacs -- "$@"
|
||||
mime ^image, has geeqie, X, flag f = geeqie -- "$@"
|
||||
mime ^image, has gwenview, X, flag f = gwenview -- "$@"
|
||||
mime ^image, has gimp, X, flag f = gimp -- "$@"
|
||||
ext xcf, X, flag f = gimp -- "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Archives
|
||||
#-------------------------------------------
|
||||
|
||||
# avoid password prompt by providing empty password
|
||||
ext 7z, has 7z = 7z -p l "$@" | "$PAGER"
|
||||
# This requires atool
|
||||
ext ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --list --each -- "$@" | "$PAGER"
|
||||
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --list --each -- "$@" | "$PAGER"
|
||||
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --extract --each -- "$@"
|
||||
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --extract --each -- "$@"
|
||||
|
||||
# Listing and extracting archives without atool:
|
||||
ext tar|gz|bz2|xz, has tar = tar vvtf "$1" | "$PAGER"
|
||||
ext tar|gz|bz2|xz, has tar = for file in "$@"; do tar vvxf "$file"; done
|
||||
ext bz2, has bzip2 = for file in "$@"; do bzip2 -dk "$file"; done
|
||||
ext zip, has unzip = unzip -l "$1" | less
|
||||
ext zip, has unzip = for file in "$@"; do unzip -d "${file%.*}" "$file"; done
|
||||
ext ace, has unace = unace l "$1" | less
|
||||
ext ace, has unace = for file in "$@"; do unace e "$file"; done
|
||||
ext rar, has unrar = unrar l "$1" | less
|
||||
ext rar, has unrar = for file in "$@"; do unrar x "$file"; done
|
||||
|
||||
#-------------------------------------------
|
||||
# Flag t fallback terminals
|
||||
#-------------------------------------------
|
||||
# Rarely installed terminal emulators get higher priority; It is assumed that
|
||||
# if you install a rare terminal emulator, you probably use it.
|
||||
# gnome-terminal/konsole/xterm on the other hand are often installed as part of
|
||||
# a desktop environment or as fallback terminal emulators.
|
||||
mime ^ranger/x-terminal-emulator, has terminology = terminology -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has kitty = kitty -- "$@"
|
||||
mime ^ranger/x-terminal-emulator, has alacritty = alacritty -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has sakura = sakura -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has lilyterm = lilyterm -e "$@"
|
||||
#mime ^ranger/x-terminal-emulator, has cool-retro-term = cool-retro-term -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has termite = termite -x '"$@"'
|
||||
#mime ^ranger/x-terminal-emulator, has yakuake = yakuake -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has guake = guake -ne "$@"
|
||||
mime ^ranger/x-terminal-emulator, has tilda = tilda -c "$@"
|
||||
mime ^ranger/x-terminal-emulator, has st = st -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has terminator = terminator -x "$@"
|
||||
mime ^ranger/x-terminal-emulator, has urxvt = urxvt -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has pantheon-terminal = pantheon-terminal -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has lxterminal = lxterminal -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has mate-terminal = mate-terminal -x "$@"
|
||||
mime ^ranger/x-terminal-emulator, has xfce4-terminal = xfce4-terminal -x "$@"
|
||||
mime ^ranger/x-terminal-emulator, has konsole = konsole -e "$@"
|
||||
mime ^ranger/x-terminal-emulator, has gnome-terminal = gnome-terminal -- "$@"
|
||||
mime ^ranger/x-terminal-emulator, has xterm = xterm -e "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Misc
|
||||
#-------------------------------------------
|
||||
label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
|
||||
label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
|
||||
label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
|
||||
label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"
|
||||
|
||||
# Define the editor for non-text files + pager as last action
|
||||
!mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask
|
||||
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
|
||||
label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
|
||||
|
||||
# The very last action, so that it's never triggered accidentally, is to execute a program:
|
||||
mime application/x-executable = "$1"
|
354
.config/ranger/scope.sh
Executable file
354
.config/ranger/scope.sh
Executable file
@ -0,0 +1,354 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o noclobber -o noglob -o nounset -o pipefail
|
||||
IFS=$'\n'
|
||||
|
||||
## If the option `use_preview_script` is set to `true`,
|
||||
## then this script will be called and its output will be displayed in ranger.
|
||||
## ANSI color codes are supported.
|
||||
## STDIN is disabled, so interactive scripts won't work properly
|
||||
|
||||
## This script is considered a configuration file and must be updated manually.
|
||||
## It will be left untouched if you upgrade ranger.
|
||||
|
||||
## Because of some automated testing we do on the script #'s for comments need
|
||||
## to be doubled up. Code that is commented out, because it's an alternative for
|
||||
## example, gets only one #.
|
||||
|
||||
## Meanings of exit codes:
|
||||
## code | meaning | action of ranger
|
||||
## -----+------------+-------------------------------------------
|
||||
## 0 | success | Display stdout as preview
|
||||
## 1 | no preview | Display no preview at all
|
||||
## 2 | plain text | Display the plain content of the file
|
||||
## 3 | fix width | Don't reload when width changes
|
||||
## 4 | fix height | Don't reload when height changes
|
||||
## 5 | fix both | Don't ever reload
|
||||
## 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
|
||||
## 7 | image | Display the file directly as an image
|
||||
|
||||
## Script arguments
|
||||
FILE_PATH="${1}" # Full path of the highlighted file
|
||||
PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters)
|
||||
## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused
|
||||
PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters)
|
||||
IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview
|
||||
PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise.
|
||||
|
||||
FILE_EXTENSION="${FILE_PATH##*.}"
|
||||
FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
|
||||
|
||||
## Settings
|
||||
HIGHLIGHT_SIZE_MAX=262143 # 256KiB
|
||||
HIGHLIGHT_TABWIDTH=${HIGHLIGHT_TABWIDTH:-8}
|
||||
HIGHLIGHT_STYLE=${HIGHLIGHT_STYLE:-pablo}
|
||||
HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}"
|
||||
PYGMENTIZE_STYLE=${PYGMENTIZE_STYLE:-autumn}
|
||||
OPENSCAD_IMGSIZE=${RNGR_OPENSCAD_IMGSIZE:-1000,1000}
|
||||
OPENSCAD_COLORSCHEME=${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}
|
||||
|
||||
handle_extension() {
|
||||
case "${FILE_EXTENSION_LOWER}" in
|
||||
## Archive
|
||||
a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
|
||||
rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
|
||||
atool --list -- "${FILE_PATH}" && exit 5
|
||||
bsdtar --list --file "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
rar)
|
||||
## Avoid password prompt by providing empty password
|
||||
unrar lt -p- -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
7z)
|
||||
## Avoid password prompt by providing empty password
|
||||
7z l -p -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## PDF
|
||||
pdf)
|
||||
## Preview as text conversion
|
||||
pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \
|
||||
fmt -w "${PV_WIDTH}" && exit 5
|
||||
mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \
|
||||
fmt -w "${PV_WIDTH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## BitTorrent
|
||||
torrent)
|
||||
transmission-show -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## OpenDocument
|
||||
odt|ods|odp|sxw)
|
||||
## Preview as text conversion
|
||||
odt2txt "${FILE_PATH}" && exit 5
|
||||
## Preview as markdown conversion
|
||||
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## XLSX
|
||||
xlsx)
|
||||
## Preview as csv conversion
|
||||
## Uses: https://github.com/dilshod/xlsx2csv
|
||||
xlsx2csv -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## HTML
|
||||
htm|html|xhtml)
|
||||
## Preview as text conversion
|
||||
w3m -dump "${FILE_PATH}" && exit 5
|
||||
lynx -dump -- "${FILE_PATH}" && exit 5
|
||||
elinks -dump "${FILE_PATH}" && exit 5
|
||||
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||
;;
|
||||
|
||||
## JSON
|
||||
json)
|
||||
jq --color-output . "${FILE_PATH}" && exit 5
|
||||
python -m json.tool -- "${FILE_PATH}" && exit 5
|
||||
;;
|
||||
|
||||
## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
|
||||
## by file(1).
|
||||
dff|dsf|wv|wvc)
|
||||
mediainfo "${FILE_PATH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
;; # Continue with next handler on failure
|
||||
esac
|
||||
}
|
||||
|
||||
handle_image() {
|
||||
## Skze of the preview if there are multiple options or it has to be
|
||||
## rendered from vector graphics. If the conversion program allows
|
||||
## specifying only one dimension while keeping the aspect ratio, the width
|
||||
## will be used.
|
||||
local DEFAULT_SIZE="1920x1080"
|
||||
|
||||
local mimetype="${1}"
|
||||
case "${mimetype}" in
|
||||
## SVG
|
||||
# image/svg+xml|image/svg)
|
||||
# convert -- "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# exit 1;;
|
||||
|
||||
## DjVu
|
||||
image/vnd.djvu)
|
||||
ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \
|
||||
- "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \
|
||||
&& exit 6 || exit 1;;
|
||||
|
||||
## Image
|
||||
image/*)
|
||||
local orientation
|
||||
orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
|
||||
## If orientation data is present and the image actually
|
||||
## needs rotating ("1" means no rotation)...
|
||||
if [[ -n "$orientation" && "$orientation" != 1 ]]; then
|
||||
## ...auto-rotate the image according to the EXIF data.
|
||||
convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
|
||||
fi
|
||||
|
||||
## `w3mimgdisplay` will be called for all images (unless overriden
|
||||
## as above), but might fail for unsupported types.
|
||||
exit 7;;
|
||||
|
||||
## Video
|
||||
video/*)
|
||||
## Thumbnail
|
||||
ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
|
||||
exit 1;;
|
||||
|
||||
##Audio
|
||||
audio/*)
|
||||
ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
|
||||
exit 1;;
|
||||
## PDF
|
||||
application/pdf)
|
||||
pdftoppm -f 1 -l 1 \
|
||||
-scale-to-x "${DEFAULT_SIZE%x*}" \
|
||||
-scale-to-y -1 \
|
||||
-singlefile \
|
||||
-jpeg -tiffcompression jpeg \
|
||||
-- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
|
||||
&& exit 6 || exit 1;;
|
||||
|
||||
|
||||
## ePub, MOBI, FB2 (using Calibre)
|
||||
application/epub+zip|application/x-mobipocket-ebook|\
|
||||
application/x-fictionbook+xml|application/octet-stream)
|
||||
# ePub (using https://github.com/marianosimone/epub-thumbnailer)
|
||||
epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \
|
||||
"${DEFAULT_SIZE%x*}" && exit 6
|
||||
ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \
|
||||
>/dev/null && exit 6
|
||||
exit 1;;
|
||||
|
||||
## Font
|
||||
application/font*|application/*opentype)
|
||||
preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png"
|
||||
if fontimage -o "${preview_png}" \
|
||||
--pixelsize "120" \
|
||||
--fontname \
|
||||
--pixelsize "80" \
|
||||
--text " ABCDEFGHIJKLMNOPQRSTUVWXYZ " \
|
||||
--text " abcdefghijklmnopqrstuvwxyz " \
|
||||
--text " 0123456789.:,;(*!?') ff fl fi ffi ffl " \
|
||||
--text " The quick brown fox jumps over the lazy dog. " \
|
||||
"${FILE_PATH}";
|
||||
then
|
||||
convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \
|
||||
&& rm "${preview_png}" \
|
||||
&& exit 6
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
## Preview archives using the first image inside.
|
||||
## (Very useful for comic book collections for example.)
|
||||
# application/zip|application/x-rar|application/x-7z-compressed|\
|
||||
# application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar)
|
||||
# local fn=""; local fe=""
|
||||
# local zip=""; local rar=""; local tar=""; local bsd=""
|
||||
# case "${mimetype}" in
|
||||
# application/zip) zip=1 ;;
|
||||
# application/x-rar) rar=1 ;;
|
||||
# application/x-7z-compressed) ;;
|
||||
# *) tar=1 ;;
|
||||
# esac
|
||||
# { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
|
||||
# { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \
|
||||
# { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
|
||||
# { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
|
||||
#
|
||||
# fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \
|
||||
# [ print(l, end='') for l in sys.stdin if \
|
||||
# (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
|
||||
# sort -V | head -n 1)
|
||||
# [ "$fn" = "" ] && return
|
||||
# [ "$bsd" ] && fn=$(printf '%b' "$fn")
|
||||
#
|
||||
# [ "$tar" ] && tar --extract --to-stdout \
|
||||
# --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g')
|
||||
# [ "$bsd" ] && bsdtar --extract --to-stdout \
|
||||
# --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}"
|
||||
# [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \
|
||||
# "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \
|
||||
# "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}"
|
||||
# ;;
|
||||
esac
|
||||
|
||||
# openscad_image() {
|
||||
# TMPPNG="$(mktemp -t XXXXXX.png)"
|
||||
# openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \
|
||||
# --imgsize="${OPENSCAD_IMGSIZE/x/,}" \
|
||||
# -o "${TMPPNG}" "${1}"
|
||||
# mv "${TMPPNG}" "${IMAGE_CACHE_PATH}"
|
||||
# }
|
||||
|
||||
# case "${FILE_EXTENSION_LOWER}" in
|
||||
# ## 3D models
|
||||
# ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
|
||||
# ## is hardcoded as jpeg. So we make a tempfile.png and just
|
||||
# ## move/rename it to jpg. This works because image libraries are
|
||||
# ## smart enough to handle it.
|
||||
# csg|scad)
|
||||
# openscad_image "${FILE_PATH}" && exit 6
|
||||
# ;;
|
||||
# 3mf|amf|dxf|off|stl)
|
||||
# openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
|
||||
# ;;
|
||||
# esac
|
||||
}
|
||||
|
||||
handle_mime() {
|
||||
local mimetype="${1}"
|
||||
case "${mimetype}" in
|
||||
## RTF and DOC
|
||||
text/rtf|*msword)
|
||||
## Preview as text conversion
|
||||
## note: catdoc does not always work for .doc files
|
||||
## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/
|
||||
catdoc -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## DOCX, ePub, FB2 (using markdown)
|
||||
## You might want to remove "|epub" and/or "|fb2" below if you have
|
||||
## uncommented other methods to preview those formats
|
||||
*wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml)
|
||||
## Preview as markdown conversion
|
||||
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## XLS
|
||||
*ms-excel)
|
||||
## Preview as csv conversion
|
||||
## xls2csv comes with catdoc:
|
||||
## http://www.wagner.pp.ru/~vitus/software/catdoc/
|
||||
xls2csv -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## Text
|
||||
text/* | */xml)
|
||||
## Syntax highlight
|
||||
if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
|
||||
exit 2
|
||||
fi
|
||||
if [[ "$( tput colors )" -ge 256 ]]; then
|
||||
local pygmentize_format='terminal256'
|
||||
local highlight_format='xterm256'
|
||||
else
|
||||
local pygmentize_format='terminal'
|
||||
local highlight_format='ansi'
|
||||
fi
|
||||
env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \
|
||||
--out-format="${highlight_format}" \
|
||||
--force -- "${FILE_PATH}" && exit 5
|
||||
env COLORTERM=8bit bat --color=always --style="plain" \
|
||||
-- "${FILE_PATH}" && exit 5
|
||||
pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\
|
||||
-- "${FILE_PATH}" && exit 5
|
||||
exit 2;;
|
||||
|
||||
## DjVu
|
||||
image/vnd.djvu)
|
||||
## Preview as text conversion (requires djvulibre)
|
||||
djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## Image
|
||||
image/*)
|
||||
## Preview as text conversion
|
||||
# img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## Video and audio
|
||||
video/* | audio/*)
|
||||
mediainfo "${FILE_PATH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
esac
|
||||
}
|
||||
|
||||
handle_fallback() {
|
||||
echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
|
||||
if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
|
||||
handle_image "${MIMETYPE}"
|
||||
fi
|
||||
handle_extension
|
||||
handle_mime "${MIMETYPE}"
|
||||
handle_fallback
|
||||
|
||||
exit 1
|
26
.config/shortcutrc
Normal file
26
.config/shortcutrc
Normal file
@ -0,0 +1,26 @@
|
||||
# vim: filetype=sh
|
||||
alias h="cd ~/ && ls -a" \
|
||||
d="cd ~/Documents && ls -a" \
|
||||
D="cd ~/Downloads && ls -a" \
|
||||
m="cd ~/Music && ls -a" \
|
||||
pp="cd ~/Pictures && ls -a" \
|
||||
vv="cd ~/Videos && ls -a" \
|
||||
cf="cd ${XDG_CONFIG_HOME:-$HOME/.config} && ls -a" \
|
||||
cac="cd ${XDG_CACHE_HOME:-$HOME/.cache} && ls -a" \
|
||||
sc="cd ~/.local/bin && ls -a" \
|
||||
mn="cd /mnt && ls -a" \
|
||||
bf="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/files" \
|
||||
bd="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/directories" \
|
||||
bw="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/bookmarks" \
|
||||
cfa="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/aliasrc" \
|
||||
cfz="$EDITOR $ZDOTDIR/.zshrc" \
|
||||
cfv="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/init.vim" \
|
||||
cfm="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc" \
|
||||
cfx="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/Xresources" \
|
||||
cfu="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls" \
|
||||
cfn="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/config" \
|
||||
cfmb="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/bindings" \
|
||||
cfmc="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/config" \
|
||||
cfk="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/sxhkd/sxhkdrc" \
|
||||
cfi="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/i3/config" \
|
||||
cfb="$EDITOR ${XDG_CONFIG_HOME:-$HOME/.config}/i3blocks/config" \
|
34
.config/sxiv/exec/key-handler
Executable file
34
.config/sxiv/exec/key-handler
Executable file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env sh
|
||||
while read file
|
||||
do
|
||||
case "$1" in
|
||||
"w") setbg "$file" & ;;
|
||||
"c")
|
||||
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/directories | awk '{print $2}' | dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
|
||||
[ -z "$destdir" ] && exit
|
||||
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
|
||||
cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
|
||||
;;
|
||||
"m")
|
||||
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/directories | awk '{print $2}' | dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
|
||||
[ -z "$destdir" ] && exit
|
||||
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
|
||||
mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
|
||||
;;
|
||||
"r")
|
||||
convert -rotate 90 "$file" "$file" ;;
|
||||
"R")
|
||||
convert -rotate -90 "$file" "$file" ;;
|
||||
"f")
|
||||
convert -flop "$file" "$file" ;;
|
||||
"y")
|
||||
echo -n "$file" | xclip -selection clipboard &&
|
||||
notify-send "$file copied to clipboard" & ;;
|
||||
"Y")
|
||||
readlink -f "$file" | xclip -selection clipboard &&
|
||||
notify-send "$(readlink -f "$file") copied to clipboard" & ;;
|
||||
"d")
|
||||
[ "$(printf "No\\nYes" | dmenu -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
|
||||
"g") ifinstalled gimp && gimp "$file" & ;;
|
||||
esac
|
||||
done
|
BIN
.config/wall.png
Normal file
BIN
.config/wall.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.4 MiB |
1
.config/zathura/zathurarc
Symbolic link
1
.config/zathura/zathurarc
Symbolic link
@ -0,0 +1 @@
|
||||
/home/alex/.cache/wal/zathurarc
|
113
.config/zsh/.zshrc
Normal file
113
.config/zsh/.zshrc
Normal file
@ -0,0 +1,113 @@
|
||||
# Luke's config for the Zoomer Shell
|
||||
|
||||
# Enable colors and change prompt:
|
||||
autoload -U colors && colors # Load colors
|
||||
export LC_ALL="en_US.UTF-8"
|
||||
|
||||
PROMPT="%{%B%}%(?.%{$fg[grey]%}◆.%{$fg[red]%}✖ %?)%{$fg[blue]%} %1~ %(?.%{$fg[grey]%}❯%{$fg[blue]%}❯%{$fg[white]%}❯.%{$fg[red]%}❯❯❯) %{%f%b%}"
|
||||
#PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b "
|
||||
setopt autocd # Automatically cd into typed directory.
|
||||
stty stop undef # Disable ctrl-s to freeze terminal.
|
||||
|
||||
# History in cache directory:
|
||||
HISTSIZE=10000
|
||||
SAVEHIST=10000
|
||||
HISTFILE=~/.cache/zsh/history
|
||||
|
||||
# Load aliases and shortcuts if existent.
|
||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shortcutrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shortcutrc"
|
||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/aliasrc"
|
||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/zshnameddirrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/zshnameddirrc"
|
||||
|
||||
# Basic auto/tab complete:
|
||||
autoload -U compinit
|
||||
zstyle ':completion:*' menu select
|
||||
zmodload zsh/complist
|
||||
compinit
|
||||
_comp_options+=(globdots) # Include hidden files.
|
||||
|
||||
# vi mode
|
||||
bindkey -v
|
||||
export KEYTIMEOUT=1
|
||||
|
||||
# Use vim keys in tab complete menu:
|
||||
bindkey -M menuselect 'h' vi-backward-char
|
||||
bindkey -M menuselect 'k' vi-up-line-or-history
|
||||
bindkey -M menuselect 'l' vi-forward-char
|
||||
bindkey -M menuselect 'j' vi-down-line-or-history
|
||||
bindkey -v '^?' backward-delete-char
|
||||
|
||||
#bash-like reverse i-search
|
||||
#bindkey '^R' history-incremental-pattern-search-backward
|
||||
|
||||
# Change cursor shape for different vi modes.
|
||||
function zle-keymap-select {
|
||||
if [[ ${KEYMAP} == vicmd ]] ||
|
||||
[[ $1 = 'block' ]]; then
|
||||
echo -ne '\e[1 q'
|
||||
elif [[ ${KEYMAP} == main ]] ||
|
||||
[[ ${KEYMAP} == viins ]] ||
|
||||
[[ ${KEYMAP} = '' ]] ||
|
||||
[[ $1 = 'beam' ]]; then
|
||||
echo -ne '\e[5 q'
|
||||
fi
|
||||
}
|
||||
zle -N zle-keymap-select
|
||||
zle-line-init() {
|
||||
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
|
||||
echo -ne "\e[5 q"
|
||||
}
|
||||
zle -N zle-line-init
|
||||
echo -ne '\e[5 q' # Use beam shape cursor on startup.
|
||||
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
|
||||
|
||||
# Use lf to switch directories and bind it to ctrl-o
|
||||
lfcd () {
|
||||
tmp="$(mktemp)"
|
||||
lf -last-dir-path="$tmp" "$@"
|
||||
if [ -f "$tmp" ]; then
|
||||
dir="$(cat "$tmp")"
|
||||
rm -f "$tmp" >/dev/null
|
||||
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
|
||||
fi
|
||||
}
|
||||
|
||||
#Same as Luke does with lf but with ranger
|
||||
rangercd (){
|
||||
tmp="$(mktemp)"
|
||||
ranger --choosedir="$tmp" "$@"
|
||||
if [ -f "$tmp" ]; then
|
||||
dir="$(cat "$tmp")"
|
||||
rm -f "$tmp" >/dev/null
|
||||
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
|
||||
fi
|
||||
}
|
||||
bindkey -s '^o' 'rangercd\n'
|
||||
|
||||
bindkey -s '^a' 'bc -l\n'
|
||||
|
||||
bindkey -s '^f' 'cd "$(dirname "$(fzf)")"\n'
|
||||
|
||||
bindkey '^[[P' delete-char
|
||||
|
||||
# Edit line in vim with ctrl-e:
|
||||
autoload edit-command-line; zle -N edit-command-line
|
||||
bindkey '^e' edit-command-line
|
||||
|
||||
|
||||
#Fuzzy finder integration
|
||||
source $HOME/.local/src/fzf/shell/key-bindings.zsh
|
||||
|
||||
#AUTOSUGGEST CONFIG
|
||||
bindkey '^ ' autosuggest-accept
|
||||
bindkey '^<Tab>' autosuggest-accept
|
||||
bindkey '^x' autosuggest-execute
|
||||
zmodload zsh/zpty #needed for tab completion autosuggest
|
||||
ZSH_AUTOSUGGEST_USE_ASYNC=1 #can be set to anything, as long as it's set it will work asynchronously
|
||||
#ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20 #Might be useful for large buffers, but async might be enough
|
||||
ZSH_AUTOSUGGEST_STRATEGY=(match_prev_cmd completion) # completion strategy, possible values: history, completion, match_prev_cmd or a combination of those
|
||||
|
||||
ZLE_PROMPT_INDENT=0
|
||||
source $HOME/.local/src/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||
# Load syntax highlighting; should be last.
|
||||
source $HOME/.local/src/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
|
87
.local/bin/SCRIPTS.md
Normal file
87
.local/bin/SCRIPTS.md
Normal file
@ -0,0 +1,87 @@
|
||||
# Directory of Scripts
|
||||
|
||||
I keep all my user-created scripts here in `~/.local/bin/`. Scripts are sorted
|
||||
into sub-directories for easy management, and all are seamlessly added to
|
||||
`$PATH` with the command below in `~/.profile`:
|
||||
|
||||
```
|
||||
export PATH="$(du $HOME/.local/bin/ | cut -f2 | tr '\n' ':')$PATH"
|
||||
```
|
||||
|
||||
## `statusbar/`
|
||||
|
||||
For modules used in i3blocks.
|
||||
|
||||
- `battery` -- i3blocks module. Shows available power remaining with icon indicating battery status. Colors indicate different levels of charge.
|
||||
- `clock` -- Shows time and date. If clicked, brings up calender or coming calcuse events.
|
||||
- `cpu` -- Shows CPU temperature. If clicked, shows most processor-intensive processes.
|
||||
- `help` -- Module which appears as a question mark. Brings up readme if clicked.
|
||||
- `internet` -- Shows whether machine is connected to wifi and ethernet. If clicked, brings up `nmtui`.
|
||||
- `mailbox` -- i3blocks module for use with mutt-wizard. Shows unread mail and if `mailsync.sh` is running.
|
||||
- `mem` -- Shows memory usage. If clicked, shows most memory-intensive processes.
|
||||
- `music` -- i3blocks module. Shows current song; if paused, name will be grayed and italic.
|
||||
- `mpdupdate` -- A daemon running by default that will update the i3mpd block on mpd change.
|
||||
- `news` -- Shows unread newsboat articles. Brings up newsboat or refreshes RSS feeds.
|
||||
- `pacpackages` -- i3blocks module. Detects new installable upgrades. Only works if you use cronjobs to automatically sync repositories.
|
||||
- `popupgrade` -- Called by clicking on the update icon if there are new packages. Spawns a `yay` upgrade of the main Arch repos and AUR packages, updates the i3blocks module once complete.
|
||||
- `torrent` -- i3blocks module. Shows torrents idle (⌛️), downloading (⬇️) or finished (🌱).
|
||||
- `volume` -- i3blocks module. Shows volume percentage or mute notification.
|
||||
- `weather` -- i3blocks module. Gets weather forcast from wttr.in and returns today's precipitation chance (☔), daily low (❄️) and daily high (☀️).
|
||||
|
||||
## `cron/`
|
||||
|
||||
For scripts meant to be cronjobs. None are active by default on LARBS.
|
||||
|
||||
- `checkup` -- If connected to internet, syncs package repositories and downloads (but does not install) any potential updates. Gives `notify-send` notifications of when it is active since other `pacman` install commands cannot be run simultaneously. You may need to grant your user the ability to run `pacman -Syyuw --noconfirm` without a password (done in `/etc/sudoers`).
|
||||
- `cronbat` -- Gives a dunst notification if the battery is less than 25%.
|
||||
- `crontog` -- Not actually a cronjob, but just turns off/on all user cronjobs.
|
||||
- `getforecast` -- Updates the weather forecast. This is automatically run by `weather` if there hasn't been a new forecast today.
|
||||
- `newsup` -- Updates newsboat RSS feeds if connected to internet. Will also display a newspaper update icon on i3blocks if it has not be user disabled.
|
||||
|
||||
## `tools/`
|
||||
|
||||
Scripts intended to be run either manually by the user or linked to a shortcut
|
||||
in vim or another program.
|
||||
|
||||
- `compiler` -- Compiles a markdown, R markdown or LaTeX document with the approriate command. Will also run `make && sudo make install` if in a `config.h` file. Otherwise it will create a sent presentation. This can be thought of a general output handler. I have it bound to `<leader>c` in vim.
|
||||
- `dmenuhandler` -- Give this script a url and it will offer dmenu options for opening it. Used by `newsboat` and some other programs as a link handler.
|
||||
- `extract` -- Will detect file type of archive and run appropriate extraction command.
|
||||
- `getbib` -- Use crossref.org to automatically detect bibtex entry of a .pdf. Attempts to search for the .pdf's DOI. Returns nothing if none detected.
|
||||
- `getkeys` -- Get the LARBS documentation on what bindings exist for main programs.
|
||||
- `linkhandler` -- The automatic link handler used by `newsboat` and other programs. Urls of video sites or of video files are opened in `mpv`, images are downloaded/opened in `feh`, music files are downloaded with `wget` and all other urls are opened in the default browser.
|
||||
- `lmc` -- A music controller that simplifies music/audio management and improves the interface with i3blocks. Check inside to see what it does. This is what i3 audio/music commands run by default. If you use a difference music system or ALSA, you can change this script rather than changing all the shortcuts in different places.
|
||||
- `note` -- Give this script some text/a message as an argument. It will print it to the terminal, and if `dunst` is running, display a notification.
|
||||
- `opout` -- "Open output", opens the corresponding `.pdf` file if run on a `.md`, `.tex` or `.rmd` file, or if given an `.html` file, will open it in the browser. Bound to `<leader>p` in my vim config to reveal typical output.
|
||||
- `pauseallmpv` -- Pauses all mpv instances by sending the `,` key to each. Used by several scripts, but can be used alone as well. It will not pause an audio only mpv instance. If you know how to add a hack to do this, feel free to PR it or email me an addition.
|
||||
- `remaps` -- Remaps capslock to escape when pressed and super/mod when held. Maps the menu key to super as well. Runs the US international keyboard setup. If you want another keyboard setup, edit this fine.
|
||||
- `shortcuts` -- For updating bash and ranger shortcuts. Reads `~/.config/bmdirs` and `~/.config/bmfiles` for pairs of keypresses and directories and files, then autoproduces bash aliases and ranger shortcuts for them which output to `~/.config/shortcutrc` and `~/.config/ranger/shortcuts.conf` respectively. These are read automatically by my bash and ranger configs. You don't have to run this script manually though, as it's run by vim whenever you edit one of the `~/.bm*` files.
|
||||
- `speedvid` -- Speed up a given video file (`$1`) by a given ammount (`$2`).
|
||||
- `tpb` -- Search Pirate Bay for the certain search terms given as arguments.
|
||||
- `texclear` -- Remove all `.tex` related build files. This is run by my vim when I stop editing any `.tex` file.
|
||||
- `transadd` -- The mimeapp default script for handling torrent magnet links. Starts `transmission-daemon` if not running and adds the link.
|
||||
|
||||
## `i3cmds`
|
||||
|
||||
These are scripts linked to bindings in i3. They typically perform
|
||||
user-interface actions or involve dmenu.
|
||||
|
||||
- `bottomleft` and `bottomright` -- Makes the currently selected window float in one of the bottom corners of the screen. `bottomleft` is bound to `mod+B` by default.
|
||||
- `camtoggle` -- Starts/kills /dev/video0 webcam. Placed in bottom right by default.
|
||||
- `ddspawn` -- This is the script called to create, show and hide the dropdown tmux terminal mapped to `mod+u`, but also the dropdown calculator mapped to `mod+a`. Give the script an argument that is a script the window will run. If a window does not already exist, `ddspawn` creates it, if it does, `ddspawn` will toggle its visibility. The the script itself for usage.
|
||||
- `displayselect` -- Select which displays to use. Bound to `mod+F3`.
|
||||
- `dmenumount` -- Gives a dmenu prompt for mounting USB drives or Android devices. Bound to `mod+F9`. Will do nothing if none are available.
|
||||
- `dmenurecord` -- Gives a list of recording commands: `audio`, `video` and `screencast` (both) in dmenu for selection. Bound to `mod+PrintScreen` by default. Should be killed by `killrecording`.
|
||||
- `dmenuumount` -- Unmount a mounted non-essential partition. Bound to `mod+F10`. Will do nothing if none are mounted. It will not try to unmount essential system partitions.
|
||||
- `dmenuunicode` -- Shows a searchable dmenu prompt of emoji characters. The selected emoji is copied to the system clipboard, while its character code is copied to primary selection (middle mouse button).
|
||||
- `dropdowncalc` -- The dropdown calculator script called by `ddspawn` and bound to `mod+a` by default. Will run an R calculator if installed, otherwise python.
|
||||
- `ducksearch` -- Show a dmenu prompt and search for the inputed text in DuckDuckGo. Can take bangtags as expected, i.e. typing in `!aw Arch Linux` will search the Arch Wiki for "Arch Linux" or `!yt Luke Smith` will search YouTube for "Luke Smith", etc.
|
||||
- `i3resize` -- A script that allows intuitive resizing of windows. Mapped to `mod+Y/U/I/O`.
|
||||
- `killrecording` -- End a recording started by `dmenurecord` the proper way without file trucation or lingering background processes, mapped to `mod+Delete` by default.
|
||||
- `lockscreen` -- The screen locker. Gives a confirm prompt and if user says yes, all audio will be paused and the screen will be distorted and locked and screen will soon time out. User must insert password to unlock. Mapped to `mod+x` by default.
|
||||
- `newspod` -- A silly line that has a script all to itself due to i3's idiosyncracies. Starts `newsboat`, if `newsboat` cannot open because of another instance being open, opens `podboat`.
|
||||
- `prompt` -- Gives a Yes/No prompt to a question given as an argument. Used by numerous bindings like `mod+shift+x`, `mod+shift+backspace` and `mod+shift+escape`.
|
||||
- `samedir` -- Opens a terminal window in the same directory as the window currently selection. Bound to `mod+shift+enter`.
|
||||
- `td-toggle` -- Gives a dmenu prompt to start `transmission-daemon` if not running, or the kill it if it is. Obviously you need `transmission-cli` installed for this to work. Mapped to `mod+F7` by default.
|
||||
- `tmuxdd` -- The startup script for the dropdown terminal (toggleable with `mod+u`). Either attaches to an existing tmux session or begins a new one.
|
||||
- `toggletouchpad` -- As the name suggests, turns off TouchPad if on, and turns it on if off. Requires `xf86-input-synaptics`. If your laptop has a special button for this, it will be mapped by default.
|
||||
- `tutorialvids` -- A dmenu prompt that gives some options of tutorial videos to watch. Bound to `mod+shift+e`.
|
154
.local/bin/bt
Executable file
154
.local/bin/bt
Executable file
@ -0,0 +1,154 @@
|
||||
#!/bin/bash
|
||||
#wait time to discover new devices in seconds
|
||||
SCAN_PERIOD=5
|
||||
AUTOTRUST=false
|
||||
#locations of blacklist and hard coded list of paired devices (watch out, need to modify Makefile as well if you want to change these values and still use make install)
|
||||
BLACKLIST=${XDG_DATA_HOME:-$HOME/.local/share}/bt/blacklist
|
||||
PAIRLIST=${XDG_DATA_HOME:-$HOME/.local/share}/bt/paired
|
||||
|
||||
actions="pair
|
||||
disconnect
|
||||
unpair"
|
||||
|
||||
[ "$AUTOTRUST" = false ] && actions+="
|
||||
trust"
|
||||
|
||||
#Checks for necessary programs to be present. Very unlikely not to be present but let's just err on the safer side.
|
||||
for prog in dmenu bluetoothctl awk cat date nl; do
|
||||
if ! hash "$prog" 2>/dev/null; then
|
||||
printf 'bthandler: %s: command not found\n' "$prog" >&2
|
||||
exit 127
|
||||
fi
|
||||
done
|
||||
|
||||
power(){
|
||||
powerstatus="$( bluetoothctl show | grep Powered | awk '{print $2}' )"
|
||||
[ "$powerstatus" = "no" ] && [ "$1" = on ] && bluetoothctl power on
|
||||
[ "$powerstatus" = "yes" ] && [ "$1" = off ] && bluetoothctl power off
|
||||
}
|
||||
scan(){
|
||||
scanstatus="$( bluetoothctl show | grep Discovering | awk '{print $2}' )"
|
||||
if [ "$1" = on ]; then
|
||||
#sets variable in case scanning was already on before the start of bt
|
||||
[ "$start_scan" = "" ] && start_scan="$( date +'%s' )"
|
||||
if [ "$scanstatus" = "no" ]; then
|
||||
bluetoothctl scan on &
|
||||
start_scan="$( date +'%s' )"
|
||||
fi
|
||||
elif [ "$1" = off ]; then
|
||||
if [ "$scanstatus" = "yes" ]; then
|
||||
bluetoothctl scan off
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#start scanning as early as possible to speed up pairing process
|
||||
#=> maybe use an option to do this? Otherwise ever invocation of bt powers on the controller.
|
||||
power on
|
||||
scan on
|
||||
|
||||
#Compile list of all Bluetooth IDS of paired devices (from bluetoothctl and from hardcoded list)
|
||||
bt_IDS="$( ( bluetoothctl paired-devices && cat "$PAIRLIST" ) | sort -u | awk '{print $2}' )"
|
||||
|
||||
#Compile list of all device Names of paired devices (from bluetoothctl and from hardcoded list)
|
||||
paired_devices="$( ( bluetoothctl paired-devices && cat "$PAIRLIST" ) | sort -u | awk '{for (i=3; i<NF; i++) printf $i " "; print $NF}' )"
|
||||
|
||||
disp_devices="$( echo "$paired_devices" | grep -vf "$BLACKLIST" )"
|
||||
|
||||
#detects current power mode of controller and adjusts options accordingly
|
||||
poweroption="$( echo "$powerstatus" | sed 's/yes/power off/; s/no/power on/' )"
|
||||
#Don't print empty device list, removes unnecessary empty choice in dmenu
|
||||
[ "$disp_devices" = "" ] && choice=$( printf "%s\n%s" "$poweroption" "$actions" | dmenu -i -p 'What BT action would you like to perform:' )
|
||||
[ "$disp_devices" != "" ] && choice=$( ( echo "$disp_devices" && printf "%s\n%s" "$poweroption" "$actions" ) | dmenu -i -p 'What BT action would you like to perform:' )
|
||||
|
||||
cleanup(){
|
||||
scan off
|
||||
exit 0
|
||||
}
|
||||
|
||||
pair(){
|
||||
#since this function can get called indefinitely, make sure to always be scanning and controller has power in the case that it got deactived by some other process.
|
||||
power on
|
||||
scan on
|
||||
#check whether $SCAN_PERIOD seconds has already passed since starting scanning, if not, wait for the rest of that time.
|
||||
if [ $((( "$(date +'%s')" - "$start_scan" ))) -lt $SCAN_PERIOD ]; then
|
||||
sleep_period="$((( "$SCAN_PERIOD" - "$( date +'%s')" + "$start_scan" )))"
|
||||
if [ "$sleep_period" -eq 1 ]; then
|
||||
notify-send "Bluetooth" "Searching for devices, please wait 1 second"
|
||||
else
|
||||
notify-send "Bluetooth" "Searching for devices, please wait $sleep_period seconds"
|
||||
fi
|
||||
|
||||
sleep "$sleep_period"
|
||||
fi
|
||||
echo paired_devices:"$paired_devices".
|
||||
echo paired_devices:$paired_devices.
|
||||
if [ $paired_devices = "" ]; then
|
||||
new_devices="$( bluetoothctl devices | awk '{for (i=3; i<NF; i++) printf $i " "; print $NF}' | grep -vf "<(echo $paired_devices)" )"
|
||||
else
|
||||
new_devices="$( bluetoothctl devices | awk '{for (i=3; i<NF; i++) printf $i " "; print $NF}' )"
|
||||
fi
|
||||
echo new_devices:"$new_devices".
|
||||
echo new_devices:$new_devices.
|
||||
[ $new_devices = "" ] && options="rescan" || options=$(echo "$new_devices" && echo 'rescan')
|
||||
choice=$( echo "$options" | dmenu -l 10 -i -p 'pair with which device?' )
|
||||
if [ -n "$choice" ]; then
|
||||
if [ "$choice" = "rescan" ]; then
|
||||
start_scan="$( date +'%s')"
|
||||
pair
|
||||
fi
|
||||
bt_IDS="$( bluetoothctl devices | awk '{print $2}' )"
|
||||
dev_no=$( echo "$new_devices" | nl | grep "$choice" | awk '{print $1}')
|
||||
dev_id=$( echo "$bt_IDS" | nl | grep -P "^.*$dev_no\t" | awk '{print $2}' )
|
||||
|
||||
bluetoothctl pair "$dev_id" && sleep 2
|
||||
bluetoothctl connect "$dev_id"
|
||||
if $AUTOTRUST; then
|
||||
bluetoothctl trust "$dev_id"
|
||||
fi
|
||||
#if device is not already hard coded as paired, add to paired devices list
|
||||
if [ $( grep "$dev_id" "$PAIRLIST") = "" ]
|
||||
then
|
||||
echo to be added to "$PAIRLIST":
|
||||
echo Device "$dev_id" "$choice"
|
||||
echo Device "$dev_id" "$choice" >> "$PAIRLIST"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
case $choice in
|
||||
"turn on") bluetoothctl power on;;
|
||||
"turn off") bluetoothctl power off;;
|
||||
"scan on") bluetoothctl power on && echo power on && sleep 2
|
||||
([ -n "$TERMINAL" ] && $TERMINAL -e bluetoothctl scan on ) || st bluetoothctl scan on;;
|
||||
"pair") pair;;
|
||||
"unpair") choice=$( echo "$paired_devices" | dmenu -l 10 -i -p 'remove which paired device?')
|
||||
if [ -n "$choice" ]; then
|
||||
dev_no=$( echo "$paired_devices" | nl | grep -P "[0-9]+\t$choice$" | awk '{print $1}')
|
||||
dev_id=$( echo "$bt_IDS" | nl | grep -P "^.*$dev_no\t" | awk '{print $2}' )
|
||||
bluetoothctl remove "$dev_id"
|
||||
#remove device to unpair from hard coded paired devices list
|
||||
new_paired_list="$( grep -v "$dev_id" "$PAIRLIST" )"
|
||||
echo "$new_paired_list" > "$PAIRLIST" #needs to be done with temp var, can't read from file and pipe into it at the same time
|
||||
fi;;
|
||||
"trust") choice=$( echo "$paired_devices" | dmenu -l 10 -i -p 'remove which paired device?')
|
||||
if [ -n "$choice" ]; then
|
||||
dev_no=$( echo "$paired_devices" | nl | grep -P "[0-9]+\t$choice$" | awk '{print $1}')
|
||||
dev_id=$( echo "$bt_IDS" | nl | grep -P "^.*$dev_no\t" | awk '{print $2}' )
|
||||
bluetoothctl trust "$dev_id"
|
||||
fi;;
|
||||
"disconnect") choice=$( echo "$paired_devices" | dmenu -l 10 -i -p 'remove which paired device?')
|
||||
if [ -n "$choice" ]; then
|
||||
dev_no=$( echo "$paired_devices" | nl | grep -P "[0-9]+\t$choice$" | awk '{print $1}')
|
||||
dev_id=$( echo "$bt_IDS" | nl | grep -P "^.*$dev_no\t" | awk '{print $2}' )
|
||||
bluetoothctl disconnect "$dev_id"
|
||||
fi;;
|
||||
*)
|
||||
echo "$choice"
|
||||
dev_no=$( echo "$paired_devices" | nl | grep -P "[0-9]+\t$choice$" | awk '{print $1}')
|
||||
dev_id=$( echo "$bt_IDS" | nl | grep -P "^.*$dev_no\t" | awk '{print $2}')
|
||||
bluetoothctl power on
|
||||
bluetoothctl pair "$dev_id"
|
||||
bluetoothctl connect "$dev_id";;
|
||||
esac
|
||||
cleanup
|
26
.local/bin/cabl
Executable file
26
.local/bin/cabl
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
# Dependencies are xclip and xorg-xprop.
|
||||
# qrencode required for qrcode generation.
|
||||
# groff/zathura required for man pages.
|
||||
prim="$(xclip -o -selection 'clipboard')"; [ -z "$prim" ] && exit
|
||||
|
||||
PID=$(xprop -id "$(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')" | grep -m 1 PID | cut -d " " -f 3)
|
||||
PID=$(echo "$(pstree -lpA "$PID" | tail -n 1)" | awk -F'---' '{print $NF}' | sed -re 's/[^0-9]//g')
|
||||
cd "$(readlink /proc/"$PID"/cwd)"
|
||||
[ -f "$prim" ] && xdg-open "$prim" && exit
|
||||
[ -d "$prim" ] && "$TERMINAL" "$prim" && exit
|
||||
|
||||
websearch() { "$BROWSER" "https://duckduckgo.com/?q=$@" ;}
|
||||
wikipedia() { "$BROWSER" "https://en.wikipedia.org/wiki/$@" ;}
|
||||
wiktionary() { "$BROWSER" "https://en.wiktionary.org/wiki/$@" ;}
|
||||
maps() { "$BROWSER" "https://www.openstreetmap.org/search?query=$@" ;}
|
||||
ebay() { "$BROWSER" "https://www.ebay.com/sch/$@" ;}
|
||||
|
||||
echo "$prim" | grep "^.*\.[A-Za-z]\+.*" >/dev/null && gotourl() { "$BROWSER" "$@" ;}
|
||||
echo "$prim" | grep "^.*@.*\.[A-Za-z]\+$" >/dev/null && email() { xdg-email "$@" ;}
|
||||
command -v qrencode >/dev/null && qrcode() { qrencode "$@" -s 10 -o /tmp/qr.png && xdg-open /tmp/qr.png ;}
|
||||
man -k "^$prim$" >/dev/null && manual() { man -Tpdf "$prim" | zathura - ;}
|
||||
|
||||
func="$(declare -F | awk '{print $3}' | dmenu -p "Plumb \"$(echo "$prim" | cut -c -30)\" to?" -i -l 15)"
|
||||
|
||||
[ -z "$func" ] || "$func" "$prim"
|
10
.local/bin/castscreen
Executable file
10
.local/bin/castscreen
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
xrandr --output eDP-1 --mode 1920x1080 --auto
|
||||
xrdb -merge ~/.config/X11/Xres_casting
|
||||
wal -q -i ~/.config/wall.png -b '#000000'
|
||||
xdotool key super+F2
|
||||
st mkchromecast --video --control --screencast
|
||||
xrandr --output eDP-1 --mode 3200x1800 --auto
|
||||
xrdb -merge ~/.config/X11/Xresources
|
||||
wal -q -i ~/.config/wall.png -b '#000000'
|
||||
xdotool key super+F2
|
40
.local/bin/compiler
Executable file
40
.local/bin/compiler
Executable file
@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This script will compile or run another finishing operation on a document. I
|
||||
# have this script run via vim.
|
||||
#
|
||||
# Compiles .tex. groff (.mom, .ms), .rmd, .md. Opens .sent files as sent
|
||||
# presentations. Runs scripts based on extention or shebang
|
||||
|
||||
file=$(readlink -f "$1")
|
||||
dir=$(dirname "$file")
|
||||
base="${file%.*}"
|
||||
|
||||
cd "$dir" || exit
|
||||
|
||||
textype() { \
|
||||
command="pdflatex"
|
||||
( sed 5q "$file" | grep -i -q 'xelatex' ) && command="xelatex"
|
||||
$command --output-directory="$dir" "$base" &&
|
||||
grep -i addbibresource "$file" >/dev/null &&
|
||||
biber --input-directory "$dir" "$base" &&
|
||||
$command --output-directory="$dir" "$base" &&
|
||||
$command --output-directory="$dir" "$base"
|
||||
}
|
||||
|
||||
case "$file" in
|
||||
*\.ms) refer -PS -e "$file" | groff -me -ms -kept -T pdf > "$base".pdf ;;
|
||||
*\.mom) refer -PS -e "$file" | groff -mom -kept -T pdf > "$base".pdf ;;
|
||||
*\.[0-9]) refer -PS -e "$file" | groff -mandoc -T pdf > "$base".pdf ;;
|
||||
*\.[rR]md) Rscript -e "rmarkdown::render('$file', quiet=TRUE)" ;;
|
||||
*\.tex) textype "$file" ;;
|
||||
*\.md) pandoc "$file" -V geometry:margin=1in --pdf-engine=xelatex -o "$base".pdf ;;
|
||||
*config.h) sudo make install ;;
|
||||
*\.c) cc "$file" -o "$base" && "$base" ;;
|
||||
*\.py) python "$file" ;;
|
||||
*\.m) octave "$file" ;;
|
||||
*\.scad) openscad -o "$base".stl "$file" ;;
|
||||
*\.go) go run "$file" ;;
|
||||
*\.sent) setsid sent "$file" 2>/dev/null & ;;
|
||||
*) sed 1q "$file" | grep "^#!/" | sed "s/^#!//" | xargs -r -I % "$file" ;;
|
||||
esac
|
11
.local/bin/cron/IMPORTANT_NOTE.md
Normal file
11
.local/bin/cron/IMPORTANT_NOTE.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Important Note
|
||||
|
||||
These cronjobs have components that require information about your current display to display notifications correctly.
|
||||
|
||||
When you add them as cronjobs, I recommend you precede the command with commands as those below:
|
||||
|
||||
```
|
||||
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus; export DISPLAY=:0; . $HOME/.zprofile; then_command_goes_here
|
||||
```
|
||||
|
||||
This ensures that notifications will display, xdotool commands will function and environmental variables will work as well.
|
19
.local/bin/cron/checkup
Executable file
19
.local/bin/cron/checkup
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Syncs repositories and downloads updates, meant to be run as a cronjob.
|
||||
|
||||
ping -q -c 1 1.1.1.1 > /dev/null || exit
|
||||
|
||||
notify-send "📦 Repository Sync" "Checking for package updates..."
|
||||
|
||||
sudo pacman -Syyuw --noconfirm || notify-send "Error downloading updates.
|
||||
|
||||
Check your internet connection, if pacman is already running, or run update manually to see errors."
|
||||
pkill -RTMIN+8 "${STATUSBAR:-dwmblocks}"
|
||||
|
||||
if pacman -Qu | grep -v "\[ignored\]"
|
||||
then
|
||||
notify-send "🎁 Repository Sync" "Updates available. Click statusbar icon (📦) for update."
|
||||
else
|
||||
notify-send "📦 Repository Sync" "Sync complete. No new packages for update."
|
||||
fi
|
9
.local/bin/cron/cronbat
Executable file
9
.local/bin/cron/cronbat
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Notify me with notify-send if my battery is below 25%.
|
||||
# You can set this to run via cron.
|
||||
|
||||
[ "$(cat /sys/class/power_supply/BAT0/status)" = "Charging" ] && exit
|
||||
[ "$(cat /sys/class/power_supply/BAT0/capacity)" -lt 25 ] &&
|
||||
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus &&
|
||||
notify-send -u critical "Battery critically low."
|
6
.local/bin/cron/crontog
Executable file
6
.local/bin/cron/crontog
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Toggles all cronjobs off/on.
|
||||
# Stores disabled crontabs in ~/.consaved until restored.
|
||||
|
||||
([ -f ${XDG_CONFIG_HOME:-$HOME/.config}/cronsaved ] && crontab - < ${XDG_CONFIG_HOME:-$HOME/.config}/cronsaved && rm ${XDG_CONFIG_HOME:-$HOME/.config}/cronsaved && notify-send "🕓 Cronjobs re-enabled.") || ( crontab -l > ${XDG_CONFIG_HOME:-$HOME/.config}/cronsaved && crontab -r && notify-send "🕓 Cronjobs saved and disabled.")
|
17
.local/bin/cron/newsup
Executable file
17
.local/bin/cron/newsup
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Set as a cron job to check for new RSS entries for newsboat.
|
||||
# If newsboat is open, sends it an "R" key to refresh.
|
||||
|
||||
ping -q -c 1 1.1.1.1 > /dev/null || exit
|
||||
|
||||
/usr/bin/notify-send "📰 Updating RSS feeds..."
|
||||
|
||||
ps ax | grep -q newsboat$ && /usr/bin/xdotool key --window "$(/usr/bin/xdotool search --name newsboat)" R && exit
|
||||
|
||||
echo 🔃 > /tmp/newsupdate
|
||||
pkill -RTMIN+6 "${STATUSBAR:-dwmblocks}"
|
||||
/usr/bin/newsboat -x reload
|
||||
rm -f /tmp/newsupdate
|
||||
pkill -RTMIN+6 "${STATUSBAR:-dwmblocks}"
|
||||
/usr/bin/notify-send "📰 RSS feed update complete."
|
13
.local/bin/cv
Executable file
13
.local/bin/cv
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
source $HOME/.config/aliasrc
|
||||
alldata="/tmp/allfiles"
|
||||
videos="/tmp/videos"
|
||||
du -a ~/vids/* --time | sort -u | awk '!($1="")' | sort -bg | awk '!($1="")' | awk '!($1="")' | sed 's/^ //' | tac > $alldata
|
||||
touch $videos
|
||||
while read line; do
|
||||
[ -f "$line" ] && echo $line >> $videos
|
||||
done <$alldata
|
||||
choice=$( cat $videos | dmenu -i -l 50 -p "Choose a video to watch:" )
|
||||
[ -n "$choice" ] && st mkchromecast --video --control -i "$choice"
|
||||
rm -f "$alldata"
|
||||
rm -f "$videos"
|
19
.local/bin/ddspawn
Executable file
19
.local/bin/ddspawn
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Toggle floating dropdown terminal in i3, or start if non-existing.
|
||||
# $1 is the script run in the terminal.
|
||||
# All other args are terminal settings.
|
||||
# Terminal names are in dropdown_* to allow easily setting i3 settings.
|
||||
|
||||
[ -z "$1" ] && exit
|
||||
|
||||
script=$1
|
||||
shift
|
||||
if xwininfo -tree -root | grep "(\"dropdown_$script\" ";
|
||||
then
|
||||
echo "Window detected."
|
||||
i3 "[instance=\"dropdown_$script\"] scratchpad show; [instance=\"dropdown_$script\"] move position center"
|
||||
else
|
||||
echo "Window not detected... spawning."
|
||||
i3 "exec --no-startup-id $TERMINAL -n dropdown_$script $@ -e $script"
|
||||
fi
|
83
.local/bin/displayselect
Executable file
83
.local/bin/displayselect
Executable file
@ -0,0 +1,83 @@
|
||||
#!/bin/sh
|
||||
|
||||
# A UI for detecting and selecting all displays. Probes xrandr for connected
|
||||
# displays and lets user select one to use. User may also select "manual
|
||||
# selection" which opens arandr.
|
||||
|
||||
twoscreen() { # If multi-monitor is selected and there are two screens.
|
||||
|
||||
mirror=$(printf "no\\nyes" | dmenu -i -p "Mirror displays?")
|
||||
# Mirror displays using native resolution of external display and a scaled
|
||||
# version for the internal display
|
||||
if [ "$mirror" = "yes" ]; then
|
||||
external=$(echo "$screens" | dmenu -i -p "Optimize resolution for:")
|
||||
internal=$(echo "$screens" | grep -v "$external")
|
||||
|
||||
res_external=$(xrandr --query | sed -n "/^$external/,/\+/p" | \
|
||||
tail -n 1 | awk '{print $1}')
|
||||
res_internal=$(xrandr --query | sed -n "/^$internal/,/\+/p" | \
|
||||
tail -n 1 | awk '{print $1}')
|
||||
|
||||
res_ext_x=$(echo $res_external | sed 's/x.*//')
|
||||
res_ext_y=$(echo $res_external | sed 's/.*x//')
|
||||
res_int_x=$(echo $res_internal | sed 's/x.*//')
|
||||
res_int_y=$(echo $res_internal | sed 's/.*x//')
|
||||
|
||||
scale_x=$(echo "$res_ext_x / $res_int_x" | bc -l)
|
||||
scale_y=$(echo "$res_ext_y / $res_int_y" | bc -l)
|
||||
|
||||
xrandr --output "$external" --auto --scale 1.0x1.0 \
|
||||
--output "$internal" --auto --same-as "$external" \
|
||||
--scale "$scale_x"x"$scale_y"
|
||||
else
|
||||
|
||||
primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
|
||||
secondary=$(echo "$screens" | grep -v "$primary")
|
||||
direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
|
||||
xrandr --output "$primary" --auto --scale 1.0x1.0 --output "$secondary" --"$direction"-of "$primary" --auto --scale 1.0x1.0
|
||||
fi
|
||||
}
|
||||
|
||||
morescreen() { # If multi-monitor is selected and there are more than two screens.
|
||||
primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
|
||||
secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:")
|
||||
direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
|
||||
tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:")
|
||||
xrandr --output "$primary" --auto --output "$secondary" --"$direction"-of "$primary" --auto --output "$tertiary" --"$(printf "left\\nright" | grep -v "$direction")"-of "$primary" --auto
|
||||
}
|
||||
|
||||
multimon() { # Multi-monitor handler.
|
||||
case "$(echo "$screens" | wc -l)" in
|
||||
2) twoscreen ;;
|
||||
*) morescreen ;;
|
||||
esac ;}
|
||||
|
||||
onescreen() { # If only one output available or chosen.
|
||||
xrandr --output "$1" --auto --scale 1.0x1.0 $(echo "$allposs" | grep -v "$1" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ')
|
||||
}
|
||||
|
||||
postrun() { # Stuff to run to clean up.
|
||||
setbg # Fix background if screen size/arangement has changed.
|
||||
remaps # Re-remap keys if keyboard added (for laptop bases)
|
||||
{ killall dunst ; setsid dunst & } >/dev/null 2>&1 # Restart dunst to ensure proper location on screen
|
||||
}
|
||||
|
||||
# Get all possible displays
|
||||
allposs=$(xrandr -q | grep "connected")
|
||||
|
||||
# Get all connected screens.
|
||||
screens=$(echo "$allposs" | awk '/ connected/ {print $1}')
|
||||
|
||||
# If there's only one screen
|
||||
[ "$(echo "$screens" | wc -l)" -lt 2 ] &&
|
||||
{ onescreen "$screens"; postrun; notify-send "💻 Only one screen detected." "Using it in its optimal settings..."; exit ;}
|
||||
|
||||
# Get user choice including multi-monitor and manual selection:
|
||||
chosen=$(printf "%s\\nmulti-monitor\\nmanual selection" "$screens" | dmenu -i -p "Select display arangement:") &&
|
||||
case "$chosen" in
|
||||
"manual selection") arandr ; exit ;;
|
||||
"multi-monitor") multimon ;;
|
||||
*) onescreen "$chosen" ;;
|
||||
esac
|
||||
|
||||
postrun
|
78
.local/bin/dmenu-recent-aliases
Executable file
78
.local/bin/dmenu-recent-aliases
Executable file
@ -0,0 +1,78 @@
|
||||
#!/bin/zsh
|
||||
#cache=~/.cache/dmenu_run
|
||||
freq="$HOME/.cache/dmenu_history_test"
|
||||
alias_file="$HOME/.config/aliasrc"
|
||||
dmenucmd='dmenu -i '
|
||||
|
||||
source $alias_file
|
||||
|
||||
#pull our previously run commands in
|
||||
history=$(<$freq)
|
||||
#for ones that have arguments, condense them down to an asterisk
|
||||
history=$(sed "s/[[:space:]].*/*/" <<< "$history")
|
||||
|
||||
#generate list of commands including functions and alias'
|
||||
#tail command gets rid of a few of the weird bash builtins
|
||||
#at the beginning of the list
|
||||
cache=$(compgen -a; compgen -c | grep -vxF "$(compgen -a)" | sort | tail -n +10)
|
||||
|
||||
# sort history by frequency of use
|
||||
sorted=$(sort <<< "$history" | uniq -c | sort -hr | colrm 1 8)
|
||||
filter=$(sed 's/[*;]*$//' <<< "$sorted")
|
||||
|
||||
echo "$filter"
|
||||
# grep removes the duplicates from the unsorted list
|
||||
cache_deduped=$(grep -vxF "$filter" <<< "$cache")
|
||||
|
||||
# run the actual dmenu and let the user choose a command
|
||||
cmd="$(echo "$sorted"$'\n'"$cache_deduped" | $dmenucmd)"
|
||||
|
||||
# To remove a file from history:
|
||||
# Trail the selected item with ;remove
|
||||
if [[ $cmd == *";remove" ]]; then
|
||||
cmd=${cmd/;remove/}
|
||||
grep -vx "$cmd" $freq > temp
|
||||
mv temp $freq
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# expand an asterisked command to include argument history
|
||||
regex='.+[*]$'
|
||||
if [[ "$cmd" =~ $regex ]]; then
|
||||
history=$(grep "${cmd/[*]/}" $freq)
|
||||
sorted=$(sort <<< "$history" | uniq -c | sort -hr | colrm 1 8)
|
||||
# remove trailing whitespace and asterisks from arguments
|
||||
cmd=$(sed 's/[[:space:]*]*$//' <<< "$@")
|
||||
dmenucmd+=' -l 17'
|
||||
(sleep .1; xdotool key Tab) &
|
||||
cmd="$(echo "$sorted"$'\n'"$cache" | $dmenucmd)"
|
||||
if [[ $cmd == *";remove" ]]; then
|
||||
cmd=${cmd/;remove/}
|
||||
egrep -vx "$cmd" $freq > temp
|
||||
mv temp $freq
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! [ "$cmd" == "" ]; then
|
||||
# remember which commands have been run
|
||||
echo "$cmd" >> $freq
|
||||
cmdexec=$(alias | grep "${cmd/;/}=" | cut -f2 -d "'" | tr -d "'")
|
||||
if [ -z "$cmdexec" ]; then
|
||||
cmdexec=${cmd/;/}
|
||||
fi
|
||||
|
||||
# open a command up in a terminal
|
||||
# a second semicolon holds the xterm open
|
||||
if [[ $cmd == *";;" ]]; then
|
||||
cmdexec="xterm -hold -e $cmdexec"
|
||||
elif [[ $cmd == *";" ]]; then
|
||||
cmdexec="xterm -e $cmdexec"
|
||||
fi
|
||||
|
||||
# Workaround to run functions...
|
||||
echo "$cmdexec" | compgen -F "$cmdexec" | zsh -i
|
||||
# ...and aliases
|
||||
echo "$cmdexec" | zsh -i
|
||||
fi
|
||||
|
66
.local/bin/dmenumount
Executable file
66
.local/bin/dmenumount
Executable file
@ -0,0 +1,66 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Gives a dmenu prompt to mount unmounted drives and Android phones. If
|
||||
# they're in /etc/fstab, they'll be mounted automatically. Otherwise, you'll
|
||||
# be prompted to give a mountpoint from already existsing directories. If you
|
||||
# input a novel directory, it will prompt you to create that directory.
|
||||
|
||||
getmount() { \
|
||||
[ -z "$chosen" ] && exit 1
|
||||
# shellcheck disable=SC2086
|
||||
mp="$(find $1 2>/dev/null | dmenu -i -p "Type in mount point.")" || exit 1
|
||||
[ "$mp" = "" ] && exit 1
|
||||
if [ ! -d "$mp" ]; then
|
||||
mkdiryn=$(printf "No\\nYes" | dmenu -i -p "$mp does not exist. Create it?") || exit 1
|
||||
[ "$mkdiryn" = "Yes" ] && (mkdir -p "$mp" || sudo -A mkdir -p "$mp")
|
||||
fi
|
||||
}
|
||||
|
||||
mountusb() { \
|
||||
chosen="$(echo "$usbdrives" | dmenu -i -p "Mount which drive?")" || exit 1
|
||||
chosen="$(echo "$chosen" | awk '{print $1}')"
|
||||
sudo -A mount "$chosen" 2>/dev/null && notify-send "💻 USB mounting" "$chosen mounted." && exit 0
|
||||
alreadymounted=$(lsblk -nrpo "name,type,mountpoint" | awk '$3!~/\/boot|\/home$|SWAP/&&length($3)>1{printf "-not ( -path *%s -prune ) ",$3}')
|
||||
getmount "/mnt /media /mount /home -maxdepth 5 -type d $alreadymounted"
|
||||
partitiontype="$(lsblk -no "fstype" "$chosen")"
|
||||
case "$partitiontype" in
|
||||
"vfat") sudo -A mount -t vfat "$chosen" "$mp" -o rw,umask=0000;;
|
||||
*) sudo -A mount "$chosen" "$mp"; user="$(whoami)"; ug="$(groups | awk '{print $1}')"; sudo -A chown "$user":"$ug" "$mp";;
|
||||
esac
|
||||
notify-send "💻 USB mounting" "$chosen mounted to $mp."
|
||||
}
|
||||
|
||||
mountandroid() { \
|
||||
chosen="$(echo "$anddrives" | dmenu -i -p "Which Android device?")" || exit 1
|
||||
chosen="$(echo "$chosen" | cut -d : -f 1)"
|
||||
getmount "$HOME -maxdepth 3 -type d"
|
||||
simple-mtpfs --device "$chosen" "$mp"
|
||||
echo "OK" | dmenu -i -p "Tap Allow on your phone if it asks for permission and then press enter" || exit 1
|
||||
simple-mtpfs --device "$chosen" "$mp"
|
||||
notify-send "🤖 Android Mounting" "Android device mounted to $mp."
|
||||
}
|
||||
|
||||
asktype() { \
|
||||
choice="$(printf "USB\\nAndroid" | dmenu -i -p "Mount a USB drive or Android device?")" || exit 1
|
||||
case $choice in
|
||||
USB) mountusb ;;
|
||||
Android) mountandroid ;;
|
||||
esac
|
||||
}
|
||||
|
||||
anddrives=$(simple-mtpfs -l 2>/dev/null)
|
||||
usbdrives="$(lsblk -rpo "name,type,size,mountpoint" | awk '$4==""{printf "%s (%s)\n",$1,$3}')"
|
||||
|
||||
if [ -z "$usbdrives" ]; then
|
||||
[ -z "$anddrives" ] && echo "No USB drive or Android device detected" && exit
|
||||
echo "Android device(s) detected."
|
||||
mountandroid
|
||||
else
|
||||
if [ -z "$anddrives" ]; then
|
||||
echo "USB drive(s) detected."
|
||||
mountusb
|
||||
else
|
||||
echo "Mountable USB drive(s) and Android device(s) detected."
|
||||
asktype
|
||||
fi
|
||||
fi
|
6
.local/bin/dmenupass
Executable file
6
.local/bin/dmenupass
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This script is the SUDO_ASKPASS variable, meaning that it will be used as a
|
||||
# password prompt if needed.
|
||||
|
||||
dmenu -fn Monospace-18 -P -p "$1" <&- && echo
|
120
.local/bin/dmenurecord
Executable file
120
.local/bin/dmenurecord
Executable file
@ -0,0 +1,120 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Usage:
|
||||
# `$0`: Ask for recording type via dmenu
|
||||
# `$0 screencast`: Record both audio and screen
|
||||
# `$0 video`: Record only screen
|
||||
# `$0 audio`: Record only audio
|
||||
# `$0 kill`: Kill existing recording
|
||||
#
|
||||
# If there is already a running instance, user will be prompted to end it.
|
||||
|
||||
updateicon() { \
|
||||
echo "$1" > /tmp/recordingicon
|
||||
pkill -RTMIN+9 "${STATUSBAR:-dwmblocks}"
|
||||
}
|
||||
|
||||
killrecording() {
|
||||
recpid="$(cat /tmp/recordingpid)"
|
||||
# kill with SIGTERM, allowing finishing touches.
|
||||
kill -15 "$recpid"
|
||||
rm -f /tmp/recordingpid
|
||||
updateicon ""
|
||||
pkill -RTMIN+9 "${STATUSBAR:-dwmblocks}"
|
||||
# even after SIGTERM, ffmpeg may still run, so SIGKILL it.
|
||||
sleep 3
|
||||
kill -9 "$recpid"
|
||||
exit
|
||||
}
|
||||
|
||||
screencast() { \
|
||||
ffmpeg -y \
|
||||
-f x11grab \
|
||||
-framerate 60 \
|
||||
-s "$(xdpyinfo | grep dimensions | awk '{print $2;}')" \
|
||||
-i "$DISPLAY" \
|
||||
-r 30 \
|
||||
-c:v h264 -crf 0 -preset ultrafast -c:a aac \
|
||||
"$HOME/screencast-$(date '+%y%m%d-%H%M-%S').mp4" &
|
||||
echo $! > /tmp/recordingpid
|
||||
updateicon "⏺️🎙️"
|
||||
}
|
||||
|
||||
screencast_old() { \
|
||||
ffmpeg -y \
|
||||
-f x11grab \
|
||||
-framerate 60 \
|
||||
-s "$(xdpyinfo | grep dimensions | awk '{print $2;}')" \
|
||||
-i "$DISPLAY" \
|
||||
-f alsa -i default \
|
||||
-r 30 \
|
||||
-c:v h264 -crf 0 -preset ultrafast -c:a aac \
|
||||
"$HOME/screencast-$(date '+%y%m%d-%H%M-%S').mp4" &
|
||||
echo $! > /tmp/recordingpid
|
||||
updateicon "⏺️🎙️"
|
||||
}
|
||||
|
||||
|
||||
|
||||
video() { ffmpeg \
|
||||
-f x11grab \
|
||||
-s "$(xdpyinfo | grep dimensions | awk '{print $2;}')" \
|
||||
-i "$DISPLAY" \
|
||||
-c:v libx264 -qp 0 -r 30 \
|
||||
"$HOME/video-$(date '+%y%m%d-%H%M-%S').mkv" &
|
||||
echo $! > /tmp/recordingpid
|
||||
updateicon "⏺️"
|
||||
}
|
||||
|
||||
webcamhidef() { ffmpeg \
|
||||
-f v4l2 \
|
||||
-i /dev/video0 \
|
||||
-video_size 1920x1080 \
|
||||
"$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
|
||||
echo $! > /tmp/recordingpid
|
||||
updateicon "🎥"
|
||||
}
|
||||
|
||||
webcam() { ffmpeg \
|
||||
-f v4l2 \
|
||||
-i /dev/video0 \
|
||||
-video_size 640x480 \
|
||||
"$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
|
||||
echo $! > /tmp/recordingpid
|
||||
updateicon "🎥"
|
||||
}
|
||||
|
||||
|
||||
audio() { \
|
||||
ffmpeg \
|
||||
-f alsa -i default \
|
||||
-c:a flac \
|
||||
"$HOME/audio-$(date '+%y%m%d-%H%M-%S').flac" &
|
||||
echo $! > /tmp/recordingpid
|
||||
updateicon "🎙️"
|
||||
}
|
||||
|
||||
askrecording() { \
|
||||
choice=$(printf "screencast\\nvideo\\naudio\\nwebcam\\nwebcam (hi-def)" | dmenu -i -p "Select recording style:")
|
||||
case "$choice" in
|
||||
screencast) screencast;;
|
||||
audio) audio;;
|
||||
video) video;;
|
||||
webcam) webcam;;
|
||||
"webcam (hi-def)") webcamhidef;;
|
||||
esac
|
||||
}
|
||||
|
||||
asktoend() { \
|
||||
response=$(printf "No\\nYes" | dmenu -i -p "Recording still active. End recording?") &&
|
||||
[ "$response" = "Yes" ] && killrecording
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
screencast) screencast;;
|
||||
audio) audio;;
|
||||
video) video;;
|
||||
kill) killrecording;;
|
||||
*) ([ -f /tmp/recordingpid ] && asktoend && exit) || askrecording;;
|
||||
esac
|
44
.local/bin/dmenuumount
Executable file
44
.local/bin/dmenuumount
Executable file
@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
|
||||
# A dmenu prompt to unmount drives.
|
||||
# Provides you with mounted partitions, select one to unmount.
|
||||
# Drives mounted at /, /boot and /home will not be options to unmount.
|
||||
|
||||
unmountusb() {
|
||||
[ -z "$drives" ] && exit
|
||||
chosen="$(echo "$drives" | dmenu -i -p "Unmount which drive?")" || exit 1
|
||||
chosen="$(echo "$chosen" | awk '{print $1}')"
|
||||
[ -z "$chosen" ] && exit
|
||||
sudo -A umount "$chosen" && notify-send "💻 USB unmounting" "$chosen unmounted."
|
||||
}
|
||||
|
||||
unmountandroid() { \
|
||||
chosen="$(awk '/simple-mtpfs/ {print $2}' /etc/mtab | dmenu -i -p "Unmount which device?")" || exit 1
|
||||
[ -z "$chosen" ] && exit
|
||||
sudo -A umount -l "$chosen" && notify-send "🤖 Android unmounting" "$chosen unmounted."
|
||||
}
|
||||
|
||||
asktype() { \
|
||||
choice="$(printf "USB\\nAndroid" | dmenu -i -p "Unmount a USB drive or Android device?")" || exit 1
|
||||
case "$choice" in
|
||||
USB) unmountusb ;;
|
||||
Android) unmountandroid ;;
|
||||
esac
|
||||
}
|
||||
|
||||
drives=$(lsblk -nrpo "name,type,size,mountpoint" | awk '$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "%s (%s)\n",$4,$3}')
|
||||
|
||||
if ! grep simple-mtpfs /etc/mtab; then
|
||||
[ -z "$drives" ] && echo "No drives to unmount." && exit
|
||||
echo "Unmountable USB drive detected."
|
||||
unmountusb
|
||||
else
|
||||
if [ -z "$drives" ]
|
||||
then
|
||||
echo "Unmountable Android device detected."
|
||||
unmountandroid
|
||||
else
|
||||
echo "Unmountable USB drive(s) and Android device(s) detected."
|
||||
asktype
|
||||
fi
|
||||
fi
|
18
.local/bin/dmenuunicode
Executable file
18
.local/bin/dmenuunicode
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
# The famous "get a menu of emojis to copy" script.
|
||||
|
||||
# Must have xclip installed to even show menu.
|
||||
xclip -h 2>/dev/null || exit 1
|
||||
|
||||
chosen=$(cut -d ';' -f1 ${XDG_DATA_HOME:-$HOME/.local/share}/larbs/emoji | dmenu -i -l 20 | sed "s/ .*//")
|
||||
|
||||
[ "$chosen" != "" ] || exit
|
||||
|
||||
# If you run this command with an argument, it will automatically insert the character.
|
||||
if [ -n "$1" ]; then
|
||||
xdotool key Shift+Insert
|
||||
else
|
||||
echo "$chosen" | tr -d '\n' | xclip -selection clipboard
|
||||
notify-send "'$chosen' copied to clipboard." &
|
||||
fi
|
3
.local/bin/dropdowncalc
Executable file
3
.local/bin/dropdowncalc
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
ifinstalled bc && echo "Welcome to the Calculator." && bc -lq
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user