@ -0,0 +1 @@ |
|||
.profile |
|||
@ -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 |
|||
@ -0,0 +1,30 @@ |
|||
<?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>Linux Biolinum</family></prefer> |
|||
</alias> |
|||
<alias> |
|||
<family>sans</family> |
|||
<prefer><family>Linux Biolinum</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> |
|||
|
|||
|
|||
@ -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" |
|||
@ -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 |
|||
@ -0,0 +1,10 @@ |
|||
[Default Applications] |
|||
x-scheme-handler/magnet=torrent.desktop; |
|||
x-scheme-handler/mailto=mail.desktop; |
|||
text/plain=text.desktop; |
|||
text/x-shellscript=text.desktop; |
|||
application/pdf=pdf.desktop; |
|||
image/png=img.desktop; |
|||
image/jpeg=img.desktop; |
|||
image/gif=img.desktop; |
|||
application/rss+xml=rss.desktop |
|||
@ -0,0 +1,10 @@ |
|||
Sep 10 10:49 : exception: RTIOThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted |
|||
Sep 10 10:49 : exception: Failed to open '/home/tiynger/.config/mpd/state': No such file or directory |
|||
Sep 10 10:49 : exception: inotify_add_watch() has failed: No such file or directory |
|||
Sep 10 10:49 : exception: Failed to access /home/tiynger/Music: No such file or directory |
|||
Sep 10 10:50 : exception: RTIOThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted |
|||
Sep 10 10:50 : exception: inotify_add_watch() has failed: No such file or directory |
|||
Sep 10 10:50 : client: [0] opened from 127.0.0.1:46428 |
|||
Sep 10 11:18 : exception: RTIOThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted |
|||
Sep 10 11:18 : exception: inotify_add_watch() has failed: No such file or directory |
|||
Sep 10 11:18 : client: [0] opened from 127.0.0.1:47254 |
|||
@ -0,0 +1,26 @@ |
|||
db_file "~/.config/mpd/database" |
|||
log_file "~/.config/mpd/log" |
|||
music_directory "~/Music" |
|||
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" |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
sw_volume: 100 |
|||
audio_device_state:1:pulse audio |
|||
audio_device_state:1:toggle_visualizer |
|||
state: stop |
|||
random: 0 |
|||
repeat: 0 |
|||
single: 0 |
|||
consume: 0 |
|||
crossfade: 0 |
|||
mixrampdb: 0.000000 |
|||
mixrampdelay: -1.000000 |
|||
playlist_begin |
|||
playlist_end |
|||
@ -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 |
|||
#[ multiply speed 0.9091 # scale playback speed |
|||
#] multiply speed 1.1 |
|||
#{ multiply speed 0.5 |
|||
#} multiply speed 2.0 |
|||
#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 |
|||
@ -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 "delete" |
|||
# 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 |
|||
@ -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 = "~/Music" |
|||
# |
|||
#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 = classic |
|||
# |
|||
#data_fetching_delay = yes |
|||
# |
|||
## Available values: artist, album_artist, date, genre, composer, performer. |
|||
## |
|||
media_library_primary_tag = album_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 = media_library |
|||
# |
|||
## |
|||
## 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 = no |
|||
# |
|||
#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 |
|||
# |
|||
@ -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 "dmenuhandler"; open-in-browser ; set browser linkhandler |
|||
macro c set browser "xsel -b <<<" ; open-in-browser ; set browser linkhandler |
|||
@ -0,0 +1,4 @@ |
|||
http://lukesmith.xyz/rss.xml |
|||
https://notrelated.libsyn.com/rss |
|||
https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~Luke Smith (YouTube)" |
|||
https://www.archlinux.org/feeds/news/ "tech" |
|||
@ -0,0 +1,32 @@ |
|||
#!/bin/sh |
|||
while read file |
|||
do |
|||
case "$1" in |
|||
"w") setbg "$file" & ;; |
|||
"c") |
|||
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ~/.config/bmdirs | awk '{print $2}' | dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")" |
|||
[ -z "$destdir" ] && exit |
|||
cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." & |
|||
;; |
|||
"m") |
|||
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ~/.config/bmdirs | awk '{print $2}' | dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")" |
|||
[ -z "$destdir" ] && 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") |
|||
echo -n "$(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 |
|||
@ -0,0 +1 @@ |
|||
XDG_DESKTOP_DIR="$HOME/" |
|||
@ -0,0 +1,12 @@ |
|||
set statusbar-h-padding 0 |
|||
set statusbar-v-padding 0 |
|||
set page-padding 1 |
|||
map u scroll half-up |
|||
map d scroll half-down |
|||
map D toggle_page_mode |
|||
map r reload |
|||
map R rotate |
|||
map K zoom in |
|||
map J zoom out |
|||
map i recolor |
|||
map p print |
|||
@ -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 |
|||
@ -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/.profile; then_command_goes_here |
|||
``` |
|||
|
|||
This ensures that notifications will display, xdotool commands will function and environmental varialbes will work as well. |
|||
@ -0,0 +1,18 @@ |
|||
#!/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 i3blocks |
|||
|
|||
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 |
|||
@ -0,0 +1,8 @@ |
|||
#!/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." |
|||
@ -0,0 +1,5 @@ |
|||
#!/bin/sh |
|||
# Toggles all cronjobs off/on. |
|||
# Stores disabled crontabs in ~/.consaved until restored. |
|||
|
|||
([ -f ~/.config/cronsaved ] && crontab - < ~/.config/cronsaved && rm ~/.config/cronsaved && notify-send "🕓 Cronjobs re-enabled.") || ( crontab -l > ~/.config/cronsaved && crontab -r && notify-send "🕓 Cronjobs saved and disabled.") |
|||
@ -0,0 +1,16 @@ |
|||
#!/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..." |
|||
|
|||
pgrep -x newsboat >/dev/null && /usr/bin/xdotool key --window "$(/usr/bin/xdotool search --name newsboat)" R && exit |
|||
|
|||
echo 🔃 > /tmp/newsupdate |
|||
pkill -RTMIN+6 i3blocks |
|||
/usr/bin/newsboat -x reload |
|||
rm -f /tmp/newsupdate |
|||
pkill -RTMIN+6 i3blocks |
|||
/usr/bin/notify-send "📰 RSS feed update complete." |
|||
@ -0,0 +1,38 @@ |
|||
#!/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 ;; |
|||
*\.rmd) echo "require(rmarkdown); render('$file')" | R -q --vanilla ;; |
|||
*\.tex) textype "$file" ;; |
|||
*\.md) pandoc "$file" --pdf-engine=xelatex -o "$base".pdf ;; |
|||
*config.h) sudo make install ;; |
|||
*\.c) cc "$file" -o "$base" && "$base" ;; |
|||
*\.py) python "$file" ;; |
|||
*\.go) go run "$file" ;; |
|||
*\.sent) setsid sent "$file" 2>/dev/null & ;; |
|||
*) sed 1q "$file" | grep "^#!/" | sed "s/^#!//" | xargs -r -I % "$file" ;; |
|||
esac |
|||
@ -0,0 +1,15 @@ |
|||
#!/bin/sh |
|||
# Feed this script a link and it will give dmenu |
|||
# some choice programs to use to open it. |
|||
|
|||
case "$(printf "copy url\\nmpv\\nmpv (loop)\\nqueue download\\n\\nqueue youtube-dl\\nfeh\\nbrowser\\nw3m\\nmpv (float)" | dmenu -i -p "Open link with what program?")" in |
|||
"copy url") echo "$1" | xclip -selection clipboard ;; |
|||
mpv) setsid mpv -quiet "$1" >/dev/null 2>&1 & ;; |
|||
"mpv (loop)") setsid mpv --input-ipc-server=/tmp/mpvsoc$(date +%s) -quiet --loop "$1" >/dev/null 2>&1 & ;; |
|||
"queue download") tsp curl -LO "$1" >/dev/null 2>&1 ;; |
|||
"queue youtube-dl") tsp youtube-dl --write-metadata -ic "$1" >/dev/null 2>&1 ;; |
|||
browser) setsid "$BROWSER" "$1" >/dev/null 2>&1 & ;; |
|||
feh) setsid feh "$1" >/dev/null 2>&1 & ;; |
|||
w3m) w3m "$1" >/dev/null 2>&1 ;; |
|||
"mpv (float)") setsid mpv --input-ipc-server=/tmp/mpvsoc$(date +%s) --geometry=+0-0 --autofit=30% --title="mpvfloat" "$1" >/dev/null 2>&1 & ;; |
|||
esac |
|||
@ -0,0 +1,2 @@ |
|||
#!/bin/sh |
|||
dmenu -fn Monospace-18 -sb "#d79921" -sf "#1d2021" -nf "#000000" -nb "#000000" -p "$1" <&- && echo |
|||
@ -0,0 +1 @@ |
|||
extract |
|||
@ -0,0 +1,41 @@ |
|||
#!/bin/sh |
|||
# A general, all-purpose extraction script. |
|||
# |
|||
# Default behavior: Extract archive into new directory |
|||
# Behavior with `-c` option: Extract contents into current directory |
|||
|
|||
while getopts "hc" o; do case "${o}" in |
|||
c) extracthere="True" ;; |
|||
*) printf "Options:\\n -c: Extract archive into current directory rather than a new one.\\n" && exit ;; |
|||
esac done |
|||
|
|||
if [ -z "$extracthere" ]; then |
|||
archive="$(readlink -f "$*")" && |
|||
directory="$(echo "$archive" | sed 's/\.[^\/.]*$//')" && |
|||
mkdir -p "$directory" && |
|||
cd "$directory" || exit |
|||
else |
|||
archive="$(readlink -f "$(echo "$*" | cut -d' ' -f2)")" |
|||
fi |
|||
|
|||
[ "$archive" = "" ] && printf "Give archive to extract as argument.\\n" && exit |
|||
|
|||
if [ -f "$archive" ] ; then |
|||
case "$archive" in |
|||
*.tar.bz2|*.tar.xz|*.tbz2) tar xvjf "$archive" ;; |
|||
*.tar.gz|*.tgz) tar xvzf "$archive" ;; |
|||
*.lzma) unlzma "$archive" ;; |
|||
*.bz2) bunzip2 "$archive" ;; |
|||
*.rar) unrar x -ad "$archive" ;; |
|||
*.gz) gunzip "$archive" ;; |
|||
*.tar) tar xvf "$archive" ;; |
|||
*.zip) unzip "$archive" ;; |
|||
*.Z) uncompress "$archive" ;; |
|||
*.7z) 7z x "$archive" ;; |
|||
*.xz) unxz "$archive" ;; |
|||
*.exe) cabextract "$archive" ;; |
|||
*) printf "extract: '%s' - unknown archive method\\n" "$archive" ;; |
|||
esac |
|||
else |
|||
printf "File \"%s\" not found.\\n" "$archive" |
|||
fi |
|||
@ -0,0 +1,14 @@ |
|||
#!/bin/sh |
|||
[ -z "$1" ] && echo "Give either a pdf file or a DOI as an argument." && exit |
|||
|
|||
if [ -f "$1" ]; then |
|||
# Try to get DOI from pdfinfo or pdftotext output. |
|||
doi=$(pdfinfo "$1" | grep -io "doi:.*") || |
|||
doi=$(pdftotext "$1" 2>/dev/null - | grep -io "doi:.*" -m 1) || |
|||
exit 1 |
|||
else |
|||
doi="$1" |
|||
fi |
|||
|
|||
# Check crossref.org for the bib citation. |
|||
curl -s "http://api.crossref.org/works/$doi/transform/application/x-bibtex" -w "\\n" |
|||
@ -0,0 +1,4 @@ |
|||
#!/bin/sh |
|||
cat ~/.config/getkeys/"$1" 2>/dev/null && exit |
|||
echo "Run command with one of the following arguments for info about that program:" |
|||
ls ~/.config/getkeys |
|||
@ -0,0 +1,3 @@ |
|||
#!/bin/sh |
|||
# If $1 command is not available, error code and notify. |
|||
command -v "$1" >/dev/null || { notify-send "📦 $1" "must be installed for this function." && exit 1 ;} |
|||
@ -0,0 +1,22 @@ |
|||
#!/bin/sh |
|||
|
|||
# Feed script a url or file location. |
|||
# If an image, it will view in sxiv, |
|||
# if a video or gif, it will view in mpv |
|||
# if a music file or pdf, it will download, |
|||
# otherwise it opens link in browser. |
|||
|
|||
# If no url given. Opens browser. For using script as $BROWSER. |
|||
[ -z "$1" ] && { "$BROWSER"; exit; } |
|||
|
|||
case "$1" in |
|||
*mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*) |
|||
setsid mpv --input-ipc-server=/tmp/mpvsoc$(date +%s) -quiet "$1" >/dev/null 2>&1 & ;; |
|||
*png|*jpg|*jpe|*jpeg|*gif) |
|||
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///")" && sxiv -a "/tmp/$(echo "$1" | sed "s/.*\///")" >/dev/null 2>&1 & ;; |
|||
*mp3|*flac|*opus|*mp3?source*) |
|||
setsid tsp curl -LO "$1" >/dev/null 2>&1 & ;; |
|||
*) |
|||
if [ -f "$1" ]; then "$TERMINAL" -e "$EDITOR $1" |
|||
else setsid "$BROWSER" "$1" >/dev/null 2>&1 & fi ;; |
|||
esac |
|||
@ -0,0 +1,42 @@ |
|||
#!/bin/sh |
|||
# A general audio interface for LARBS. |
|||
|
|||
[ -z "$2" ] && num="2" || num="$2" |
|||
|
|||
case "$1" in |
|||
u*) pulsemixer --change-volume +"$num" ;; |
|||
d*) pulsemixer --change-volume -"$num" ;; |
|||
m*) pulsemixer --toggle-mute ;; |
|||
truemute) pulsemixer --mute ;; |
|||
play) mpc play ;; |
|||
n*) mpc next ;; |
|||
prev) mpc prev ;; |
|||
t*) mpc toggle ;; |
|||
p*) mpc pause ; pauseallmpv ;; |
|||
f*) mpc seek +"$num" ;; |
|||
b*) mpc seek -"$num" ;; |
|||
r*) mpc seek 0% ;; |
|||
*) cat << EOF |
|||
lmc: cli music interface for mpd and pulse for those with divine intellect too |
|||
grand to remember the mpc/pamixer commands. |
|||
|
|||
Allowed options: |
|||
up NUM Increase volume (2 secs default) |
|||
down NUM Decrease volume (2 secs default) |
|||
mute Toggle mute |
|||
truemute Mute |
|||
next Next track |
|||
prev Previous track |
|||
toggle Toggle pause |
|||
truepause Pause |
|||
foward NUM Seek foward in song (2 secs default) |
|||
back NUM Seek back in song (2 secs default) |
|||
restart Restart current song |
|||
all else Print this message |
|||
|
|||
All of these commands, except for \`truemute\`, \`prev\` and \`play\` can be truncated, |
|||
i.e. \`lmc r\` for \`lmc restart\`. |
|||
EOF |
|||
esac |
|||
|
|||
pkill -RTMIN+10 i3blocks |
|||
@ -0,0 +1,11 @@ |
|||
#!/bin/sh |
|||
# opout: "open output": A general handler for opening a file's intended output. |
|||
# I find this useful especially running from vim. |
|||
|
|||
basename="$(echo "$1" | sed 's/\.[^\/.]*$//')" |
|||
|
|||
case "$1" in |
|||
*.tex|*.md|*.rmd|*.ms|*.me|*.mom) setsid "$READER" "$basename".pdf >/dev/null 2>&1 & ;; |
|||
*.html) setsid "$BROWSER" --new-window "$basename".html >/dev/null 2>&1 & ;; |
|||
*.sent) setsid sent "$1" >/dev/null 2>&1 & ;; |
|||
esac |
|||
@ -0,0 +1,4 @@ |
|||
#!/bin/sh |
|||
for i in $(ls /tmp/mpvsoc*); do |
|||
echo '{ "command": ["set_property", "pause", true] }' | socat - $i; |
|||
done |
|||
@ -0,0 +1,6 @@ |
|||
#!/bin/sh |
|||
# entr command to run `queueandnotify` when newsboat queue is changed |
|||
|
|||
[ "$(pgrep -x $(basename $0) | wc -l)" -gt 2 ] && exit |
|||
|
|||
echo ~/.local/share/newsboat/queue | entr -p queueandnotify 2>/dev/null |
|||
@ -0,0 +1,11 @@ |
|||
#!/bin/sh |
|||
# $1 is a url; $2 is a command |
|||
[ -z "$1" ] && exit |
|||
base="$(basename "$1")" |
|||
notify-send "⏳ Queuing $base..." |
|||
cmd="$2" |
|||
[ -z "$cmd" ] && cmd="youtube-dl --add-metadata" |
|||
idnum="$(tsp $cmd "$1")" |
|||
realname="$(echo "$base" | sed "s/?\(source\|dest\).*//;s/%20/ /g")" |
|||
tsp -D "$idnum" mv "$base" "$realname" |
|||
tsp -D "$idnum" notify-send "👍 $realname done." |
|||
@ -0,0 +1,13 @@ |
|||
#!/bin/sh |
|||
# Podboat sucks. This script replaces it. |
|||
# It reads the newsboat queue, queuing downloads with taskspooler. |
|||
# It also removes the junk from extentions. |
|||
queuefile="$HOME/.local/share/newsboat/queue" |
|||
|
|||
while read -r line; do |
|||
[ -z "$line" ] && continue |
|||
url="$(echo "$line" | awk '{print $1}')" |
|||
qndl "$url" "curl -LO" |
|||
done < "$queuefile" |
|||
|
|||
echo > "$queuefile" |
|||
@ -0,0 +1,4 @@ |
|||
#!/bin/sh |
|||
[ -z "$1" ] && echo "usage: rotdir regex 2>&1" && exit 1 |
|||
base="$(basename $1)" |
|||
ls "$PWD" | awk "BEGIN { lines = \"\"; m = 0; } /^$base$/ { m = 1; } { if (!m) { if (lines) { lines = lines\"\n\"; } lines = lines\"\"\$0; } else { print \$0; } } END { print lines; }" |
|||
@ -0,0 +1,9 @@ |
|||
#!/bin/sh |
|||
! echo "$1" | grep "https*://\S\+\.[A-Za-z]\+\S*" >/dev/null && |
|||
notify-send "That doesn't look like a full URL." && exit |
|||
RSSFILE="$HOME/.config/newsboat/urls" |
|||
if awk '{print $1}' "$RSSFILE" | grep "^$1$" >/dev/null; then |
|||
notify-send "You already have this RSS feed." |
|||
else |
|||
echo "$1" >> "$RSSFILE" && notify-send "RSS feed added." |
|||
fi |
|||
@ -0,0 +1,4 @@ |
|||
#!/bin/sh |
|||
# Sets the background. If given an argument, will set file as background. |
|||
[ ! -z "$1" ] && cp "$1" ~/.config/wall.png && notify-send -i "$HOME/.config/wall.png" "Wallpaper changed." |
|||
xwallpaper --zoom ~/.config/wall.png |
|||
@ -0,0 +1,26 @@ |
|||
#!/bin/bash |
|||
# Output locations. Unactivated progs should go to /dev/null. |
|||
shell_shortcuts="$HOME/.config/shortcutrc" |
|||
ranger_shortcuts="/dev/null" |
|||
qute_shortcuts="/dev/null" |
|||
fish_shortcuts="/dev/null" |
|||
vifm_shortcuts="$HOME/.config/vifm/vifmshortcuts" |
|||
|
|||
# Remove, prepare files |
|||
rm -f "$ranger_shortcuts" "$qute_shortcuts" 2>/dev/null |
|||
printf "# vim: filetype=sh\\n" > "$fish_shortcuts" |
|||
printf "# vim: filetype=sh\\nalias " > "$shell_shortcuts" |
|||
printf "\" vim: filetype=vim\\n" > "$vifm_shortcuts" |
|||
|
|||
# Format the `bmdirs` file in the correct syntax and sent it to all three configs. |
|||
sed "s/\s*#.*$//;/^\s*$/d" "$HOME/.config/bmdirs" | tee >(awk '{print $1"=\"cd "$2" && ls -a\" \\"}' >> "$shell_shortcuts") \ |
|||
>(awk '{print "abbr", $1, "\"cd " $2 "; and ls -a\""}' >> "$fish_shortcuts") \ |
|||
>(awk '{print "map g" $1, ":cd", $2 "<CR>\nmap t" $1, "<tab>:cd", $2 "<CR><tab>\nmap M" $1, "<tab>:cd", $2 "<CR><tab>:mo<CR>\nmap Y" $1, "<tab>:cd", $2 "<CR><tab>:co<CR>" }' >> "$vifm_shortcuts") \ |
|||
>(awk '{print "config.bind(\";"$1"\", \"set downloads.location.directory "$2" ;; hint links download\")"}' >> "$qute_shortcuts") \ |
|||
| awk '{print "map g"$1" cd "$2"\nmap t"$1" tab_new "$2"\nmap m"$1" shell mv -v %s "$2"\nmap Y"$1" shell cp -rv %s "$2}' >> "$ranger_shortcuts" |
|||
|
|||
# Format the `configs` file in the correct syntax and sent it to both configs. |
|||
sed "s/\s*#.*$//;/^\s*$/d" "$HOME/.config/bmfiles" | tee >(awk '{print $1"=\"$EDITOR "$2"\" \\"}' >> "$shell_shortcuts") \ |
|||
>(awk '{print "abbr", $1, "\"$EDITOR "$2"\""}' >> "$fish_shortcuts") \ |
|||
>(awk '{print "map", $1, ":e", $2 "<CR>" }' >> "$vifm_shortcuts") \ |
|||
| awk '{print "map "$1" shell $EDITOR "$2}' >> "$ranger_shortcuts" |
|||
@ -0,0 +1,14 @@ |
|||
#!/bin/sh |
|||
|
|||
# Clears the build files of a LaTeX/XeLaTeX build. |
|||
# I have vim run this file whenever I exit a .tex file. |
|||
|
|||
case "$1" in |
|||
*.tex) |
|||
file=$(readlink -f "$1") |
|||
dir=$(dirname "$file") |
|||
base="${file%.*}" |
|||
find "$dir" -maxdepth 1 -type f -regextype gnu-awk -regex "^$base\\.(4tc|xref|tmp|pyc|pyo|fls|vrb|fdb_latexmk|bak|swp|aux|log|synctex\\(busy\\)|lof|lot|maf|idx|mtc|mtc0|nav|out|snm|toc|bcf|run\\.xml|synctex\\.gz|blg|bbl)" -delete ;; |
|||
*) printf "Give .tex file as argument.\\n" ;; |
|||
esac |
|||
|
|||
@ -0,0 +1,9 @@ |
|||
#!/bin/sh |
|||
|
|||
# Mimeapp script for adding torrent to transmission-daemon, but will also start the daemon first if not running. |
|||
|
|||
# transmission-daemon sometimes fails to take remote requests in its first moments. |
|||
|
|||
pgrep -x transmission-da || (transmission-daemon && notify-send "Starting transmission daemon..." && sleep 3 && pkill -RTMIN+7 i3blocks) |
|||
|
|||
transmission-remote -a "$@" && notify-send "🔽 Torrent added." |
|||
@ -0,0 +1,13 @@ |
|||
#!/usr/bin/env bash |
|||
[ -z "$FIFO_UEBERZUG" ] && exit |
|||
|
|||
readonly ID_PREVIEW="preview" |
|||
|
|||
if [ "$1" = "draw" ]; then |
|||
declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW" [x]="$2" [y]="$3" [max_width]="$4" [max_height]="$5" [path]="${PWD}/$6") > "$FIFO_UEBERZUG" |
|||
elif [ "$1" = "videopreview" ]; then |
|||
[ ! -f "/tmp/$6.png" ] && ffmpegthumbnailer -i "${PWD}/$6" -o "/tmp/$6.png" -s 0 -q 10 && |
|||
declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW" [x]="$2" [y]="$3" [max_width]="$4" [max_height]="$5" [path]="/tmp/$6.png") > "$FIFO_UEBERZUG" |
|||
else |
|||
declare -p -A cmd=([action]=remove [identifier]="$ID_PREVIEW") > "$FIFO_UEBERZUG" |
|||
fi |
|||
@ -0,0 +1,15 @@ |
|||
#!/usr/bin/env sh |
|||
export FIFO_UEBERZUG="/tmp/vifm-ueberzug-${PPID}" |
|||
|
|||
cleanup() { |
|||
rm "$FIFO_UEBERZUG" 2>/dev/null |
|||
pkill -P $$ 2>/dev/null |
|||
} |
|||
|
|||
rm "$FIFO_UEBERZUG" 2>/dev/null |
|||
mkfifo "$FIFO_UEBERZUG" |
|||
trap cleanup EXIT |
|||
tail --follow "$FIFO_UEBERZUG" | ueberzug layer --silent --parser bash & |
|||
|
|||
vifm |
|||
cleanup |
|||
@ -0,0 +1,56 @@ |
|||
set -g prefix C-a |
|||
setw -g mode-keys vi |
|||
setw -g mode-style bg=black |
|||
set-option -g default-terminal "xterm-256color" |
|||
set-option -g pane-active-border-style fg=green |
|||
set-window-option -g xterm-keys on # for vim |
|||
set-window-option -g mode-keys vi # vi key |
|||
set-window-option -g monitor-activity on |
|||
set-window-option -g window-status-current-style fg=white |
|||
setw -g window-status-current-style reverse |
|||
setw -g automatic-rename |
|||
set -g mouse on |
|||
set -g history-limit 30000 |
|||
set -g terminal-overrides 'xterm*:smcup@:rmcup@' |
|||
set-option -g status-justify right |
|||
set-option -g status-bg black # colour213 # pink |
|||
set-option -g status-fg cyan |
|||
set-option -g status-interval 5 |
|||
set-option -g status-left-length 30 |
|||
set-option -g status-left '#[fg=magenta]» #[fg=blue,bold]#T#[default]' |
|||
set-option -g status-right '#[fg=red,bold][[ #(git branch) branch ]] #[fg=cyan]»» #[fg=blue,bold]###S #[fg=magenta]%R %m-%d#(acpi | cut -d ',' -f 2)#[default]' |
|||
set-option -g visual-activity on |
|||
set-option -g set-titles on |
|||
set-option -g set-titles-string '#H:#S.#I.#P #W #T' |
|||
unbind j |
|||
unbind C-b # unbind default leader key |
|||
unbind '"' # unbind horizontal split |
|||
unbind % # unbind vertical split |
|||
bind-key r source-file ~/.tmux.conf |
|||
bind-key c split-window -v # split pane horizontally |
|||
bind-key v split-window -h # split pane vertically |
|||
bind-key Space list-panes |
|||
bind-key Enter break-pane |
|||
bind-key Space command-prompt "joinp -t:%%" # %% = prompt for window.pane [-V|H] # vert|hor split |
|||
bind-key -n C-up prev |
|||
bind-key -n C-left prev |
|||
bind-key -n C-right next |
|||
bind-key -n C-down next |
|||
set-window-option -g window-status-current-style bg=red |
|||
bind C-j previous-window |
|||
bind C-k next-window |
|||
#bind-key C-a last-window # C-a C-a for last active window |
|||
bind A command-prompt "rename-window %%" |
|||
setw -g aggressive-resize on |
|||
bind-key h select-pane -L |
|||
bind-key j select-pane -D |
|||
bind-key k select-pane -U |
|||
bind-key l select-pane -R |
|||
bind-key -r C-h resize-pane -L |
|||
bind-key -r C-j resize-pane -D |
|||
bind-key -r C-k resize-pane -U |
|||
bind-key -r C-l resize-pane -R |
|||
bind o select-layout "active-only" |
|||
bind M-- select-layout "even-vertical" |
|||
bind M-| select-layout "even-horizontal" |
|||
bind M-r rotate-window |
|||
@ -0,0 +1 @@ |
|||
.config/nvim/ |
|||
@ -0,0 +1 @@ |
|||
.profile |
|||