inital commit

This commit is contained in:
Alexander Bocken 2020-07-04 14:23:27 +02:00
commit 46d9d9eb4c
251 changed files with 15044 additions and 0 deletions

12
.config/X11/Xresources Normal file
View 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
View 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
View 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
View 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"
}
}

View File

@ -0,0 +1 @@
6827

32
.config/calcurse/conf Normal file
View 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
View 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 -

View File

@ -0,0 +1,3 @@
{
"lastUpdate": 1593852197191
}

View 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

View 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": {}
}

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

View 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')
}

View File

@ -0,0 +1,6 @@
{
"dependencies": {
"coc-json": ">=1.2.6",
"coc-vimtex": ">=1.0.3"
}
}

16
.config/coc/history.json Normal file
View File

@ -0,0 +1,16 @@
{
"diagnostics": {
"%2Fhome%2Falex%2F": {
"local%2Fbin%2Ftools": [
" "
],
"local%2Fsrc%2Fbthandler": [
" "
]
},
"%2Fhome%2Falex": [
"kk",
" "
]
}
}

1
.config/coc/lists Normal file
View File

@ -0,0 +1 @@
diagnostics

1
.config/coc/memos.json Normal file
View File

@ -0,0 +1 @@
{}

0
.config/coc/mru Normal file
View File

11
.config/directories Normal file
View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

15
.config/files Normal file
View 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
View 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>

View 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
View 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"

View File

@ -0,0 +1 @@
file:///home/alex/Drive

View 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

View 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/

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

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

View File

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

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

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

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

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

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

View File

@ -0,0 +1,4 @@
* {
background-color: #282A36;
color: #eee;
}

19
.config/inputrc Normal file
View 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
View 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
View 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
View 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"
}

View 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-【     】_ 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 - .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 - .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 - .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 - .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 - .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 - .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 - Hes 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 - ill 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 - .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 -.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 -.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 - .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

View File

@ -0,0 +1,5 @@
lofi/20190127-【     】_ 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
View 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
View 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
View 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
View 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
View 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
View 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> &amp;<space>
autocmd FileType html inoremap á &aacute;
autocmd FileType html inoremap é &eacute;
autocmd FileType html inoremap í &iacute;
autocmd FileType html inoremap ó &oacute;
autocmd FileType html inoremap ú &uacute;
autocmd FileType html inoremap ä &auml;
autocmd FileType html inoremap ë &euml;
autocmd FileType html inoremap ï &iuml;
autocmd FileType html inoremap ö &ouml;
autocmd FileType html inoremap ü &uuml;
autocmd FileType html inoremap ã &atilde;
autocmd FileType html inoremap &etilde;
autocmd FileType html inoremap ĩ &itilde;
autocmd FileType html inoremap õ &otilde;
autocmd FileType html inoremap ũ &utilde;
autocmd FileType html inoremap ñ &ntilde;
autocmd FileType html inoremap à &agrave;
autocmd FileType html inoremap è &egrave;
autocmd FileType html inoremap ì &igrave;
autocmd FileType html inoremap ò &ograve;
autocmd FileType html inoremap ù &ugrave;
""".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"

View File

@ -0,0 +1,2 @@
[github.com]
target=Misc/github

View 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%

View 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

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

View File

@ -0,0 +1,2 @@
/bookmarks/
quickmarks

View 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
}
})
```

View File

View 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

View 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)

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 KiB

View 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

View 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/

View File

View 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

View 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

View 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

View 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()

File diff suppressed because it is too large Load Diff

747
.config/ranger/rc.conf Normal file
View 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
View 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
View 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
View 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
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 MiB

1
.config/zathura/zathurarc Symbolic link
View File

@ -0,0 +1 @@
/home/alex/.cache/wal/zathurarc

113
.config/zsh/.zshrc Normal file
View 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
View 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
View 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
View 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
View 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
View 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

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