diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 10cfc57..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "dotsync"] - path = dotsync - url = git@github.com:dotphiles/dotsync.git diff --git a/.Xclients b/Xclients similarity index 100% rename from .Xclients rename to Xclients diff --git a/Xresources.d/configure b/Xresources.d/configure index 4c312ed..4d0d2d1 100755 --- a/Xresources.d/configure +++ b/Xresources.d/configure @@ -3,7 +3,7 @@ mkdir -p $HOME/.local/share/fonts echo $(for i in "" "%20Bold" "%20Oblique" "%20Bold%20Oblique"; do cd $HOME/.local/share/fonts - wget http://raw.githubusercontent.com/powerline/fonts/master/DejaVuSansMono/DejaVu%20Sans%20Mono$i%20for%20Powerline.ttf + wget -c http://raw.githubusercontent.com/powerline/fonts/master/DejaVuSansMono/DejaVu%20Sans%20Mono$i%20for%20Powerline.ttf done) -wget "https://aur.archlinux.org/cgit/aur.git/plain/icons.ttf?h=ttf-font-icons" -O $HOME/.local/share/fonts/icons.ttf +wget -c "https://aur.archlinux.org/cgit/aur.git/plain/icons.ttf?h=ttf-font-icons" -O $HOME/.local/share/fonts/icons.ttf diff --git a/bash_profile b/bash_profile index 35989e7..aa7da3a 120000 --- a/bash_profile +++ b/bash_profile @@ -1 +1 @@ -profile \ No newline at end of file +.profile \ No newline at end of file diff --git a/bashrc b/bashrc index b903748..076bb9d 100644 --- a/bashrc +++ b/bashrc @@ -48,22 +48,21 @@ alias pacman='pacman --color auto' alias dmesg='dmesg --ctime' # Frequent mistakes +alias sl=ls +alias al=la +alias mdkir=mkdir alias systemclt=systemctl # Shortcuts for commonly used commands alias ll="ls -l $LS_OPTIONS" alias la="ls -la $LS_OPTIONS" -alias al=sl alias x='startx; logout' alias s='sudo -s -E' alias po='eval $(proxy off)' alias nw="sudo systemctl restart NetworkManager" alias mc="machines" alias tracefiles="strace -f -t -e trace=file" -alias vpn="sudo systemctl start openvpn-client@$HOSTNAME" -alias vpno="sudo systemctl stop openvpn-client@$HOSTNAME" -alias vpns="sudo systemctl status openvpn-client@$HOSTNAME" -alias vpnr="sudo systemctl restart openvpn-client@$HOSTNAME" + # Superseding commands with better ones if they are present if which vim &> /dev/null; then alias vi='vim' diff --git a/bower b/bower new file mode 120000 index 0000000..2176c40 --- /dev/null +++ b/bower @@ -0,0 +1 @@ +.cache/bower \ No newline at end of file diff --git a/cargo b/cargo new file mode 120000 index 0000000..b8adac1 --- /dev/null +++ b/cargo @@ -0,0 +1 @@ +.cache/cargo \ No newline at end of file diff --git a/config/htop/htoprc b/config/htop/htoprc deleted file mode 100644 index 9a0a084..0000000 --- a/config/htop/htoprc +++ /dev/null @@ -1,26 +0,0 @@ -# Beware! This file is rewritten by htop when settings are changed in the interface. -# The parser is also very primitive, and not human-friendly. -fields=0 48 17 18 38 39 40 2 46 47 49 1 -sort_key=47 -sort_direction=1 -hide_threads=0 -hide_kernel_threads=1 -hide_userland_threads=1 -shadow_other_users=0 -show_thread_names=0 -show_program_path=0 -highlight_base_name=1 -highlight_megabytes=0 -highlight_threads=1 -tree_view=0 -header_margin=0 -detailed_cpu_time=0 -cpu_count_from_zero=0 -update_process_names=0 -account_guest_in_cpu_meter=0 -color_scheme=0 -delay=15 -left_meters=AllCPUs Memory Swap -left_meter_modes=1 1 1 -right_meters=Tasks LoadAverage Uptime -right_meter_modes=2 2 2 diff --git a/config/i3/config b/config/i3/config index 281f907..04ffddd 100644 --- a/config/i3/config +++ b/config/i3/config @@ -38,7 +38,7 @@ bindsym button2 kill bindsym $mod+F2 exec --no-startup-id ~/.config/i3/dmenu_run bindsym Mod1+F2 exec --no-startup-id ~/.config/i3/dmenu_run -bindsym $mod+c exec --no-startup-id ~/.config/i3/passmenu +bindsym $mod+c exec --no-startup-id ~/.config/i3/passmenu --type #bindsym $mod+x exec --no-startup-id ~/.config/i3/clipmenu bindsym $mod+asterisk exec --no-startup-id ~/.config/i3/sshmenu bindsym $mod+dollar exec --no-startup-id ~/.config/i3/sshmenu root @@ -145,14 +145,19 @@ set $WS10 10 # Workspace output workspace "$WS1" output LVDS1 workspace "$WS2" output VGA1 +workspace "$WS2" output HDMI1 workspace "$WS3" output LVDS1 workspace "$WS4" output VGA1 +workspace "$WS4" output HDMI1 workspace "$WS5" output LVDS1 workspace "$WS6" output VGA1 +workspace "$WS6" output HDMI1 workspace "$WS7" output LVDS1 workspace "$WS8" output VGA1 +workspace "$WS8" output HDMI1 workspace "$WS9" output LVDS1 workspace "$WS10" output VGA1 +workspace "$WS10" output HDMI1 # switch to workspace bindsym $mod+1 workspace $WS1 @@ -234,7 +239,7 @@ assign [class="Clementine"] $WS10 assign [title="TweetDeck"] $WS8 # Open specific applications in floating mode -for_window [title="alsamixer"] floating enable border pixel 2 +for_window [title="pacmixer"] floating enable border pixel 2 for_window [class="Firefox"] layout tabbed for_window [class="qutebrowser"] layout tabbed @@ -356,7 +361,6 @@ bindsym $mod+F5 exec --no-startup-id xautolock -enable # Autostart applications -exec --no-startup-id autorandr --change # Screen configuration and everything that depends on it exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # Password remembering exec --no-startup-id gnome-keyring-daemon # Password remembering exec --no-startup-id numlockx on # Activate Num lock @@ -367,6 +371,7 @@ exec --no-startup-id dunst # Notifications exec --no-startup-id keynav # Keyboard cursor controller #exec --no-startup-id $HOME/.config/i3/clipmenud # Clipboard manager exec --no-startup-id mpd # Music Player Daemon +exec --no-startup-id autorandr --change # Screen configuration and everything that depends on it set $ignore #ff00000 diff --git a/config/i3/dmenu_cmd b/config/i3/dmenu_cmd index a02a9b2..a0d3180 100755 --- a/config/i3/dmenu_cmd +++ b/config/i3/dmenu_cmd @@ -1,2 +1,2 @@ #!/bin/sh -dmenu -fn 'DejaVu Sans Mono-10' -nb '#48483e' -nf '#f1ebeb' -sb '#8fc029' -sf '#272822' -l 8 -f -i -h 19 "$@" +dmenu -fn 'DejaVu Sans Mono-10' -nb '#48483e' -nf '#f1ebeb' -sb '#8fc029' -sf '#272822' -l 8 -f "$@" diff --git a/config/i3/passmenu b/config/i3/passmenu index 8819029..9a4bf22 100755 --- a/config/i3/passmenu +++ b/config/i3/passmenu @@ -8,17 +8,23 @@ if [[ $1 == "--type" ]]; then shift fi -prefix=${PASSWORD_STORE_DIR-~/.password-store} -password_files=( "$prefix"/**/*.gpg ) -password_files=( "${password_files[@]#"$prefix"/}" ) -password_files=( "${password_files[@]%.gpg}" ) +if PASS=$(which gopass 2> /dev/null); then + password_files="$($PASS ls --flat)" +elif PASS=$(which pass 2> /dev/null); then + prefix=${PASSWORD_STORE_DIR-~/.password-store} + password_files=( "$prefix"/**/*.gpg ) + password_files=( "${password_files[@]#"$prefix"/}" ) + password_files=( "${password_files[@]%.gpg}" ) +else + exit +fi password=$(printf '%s\n' "${password_files[@]}" | $HOME/.config/i3/dmenu_cmd -p "Passwords" "$@") [[ -n $password ]] || exit if [[ $typeit -eq 0 ]]; then - pass show -c "$password" 2>/dev/null + $PASS show -c "$password" else - xdotool - <<<"type --clearmodifiers -- $(pass show "$password" | head -n 1)" + xdotool - <<<"type --clearmodifiers -- $($PASS show "$password" | head -n 1)" fi diff --git a/config/i3/test b/config/i3/test new file mode 100644 index 0000000..b3fb195 --- /dev/null +++ b/config/i3/test @@ -0,0 +1,5 @@ +prefix=${PASSWORD_STORE_DIR-~/.password-store} +password_files=( "$prefix"/**/*.gpg ) +password_files=( "${password_files[@]#"$prefix"/}" ) +password_files=( "${password_files[@]%.gpg}" ) +echo -e "${password_files[@]}" diff --git a/config/i3status/config b/config/i3status/config deleted file mode 100644 index 5860ec6..0000000 --- a/config/i3status/config +++ /dev/null @@ -1,84 +0,0 @@ -general { - output_format = "i3bar" - colors = true - interval = 1 -} - -order += "disk /home" -order += "disk /" -order += "path_exists VPN" -order += "ethernet usb0" -order += "wireless wlan1" -order += "wireless wlan0" -order += "ethernet eth0" -order += "cpu_usage" -order += "battery 0" -#order += "load" -order += "volume master" -order += "tztime local" - -wireless wlan0 { - format_up = " (%quality at %essid, %bitrate) %ip" - format_down = "" -} - -wireless wlan1 { - format_up = " (%quality at %essid, %bitrate) %ip" - format_down = "" -} - -ethernet eth0 { - # if you use %speed, i3status requires the cap_net_admin capability - format_up = " %ip" - format_down = "" -} - -ethernet usb0 { - # if you use %speed, i3status requires the cap_net_admin capability - format_up = " %ip" - format_down = "📱" -} - -cpu_usage { - format = " %usage" -} - -battery 0 { - format = "%status %percentage" - format_down = "" - status_chr = "" - status_bat = "" - status_full = "" - path = "/sys/class/power_supply/BAT%d/uevent" - low_threshold = 10 -} - -path_exists VPN { - # path exists when a VPN tunnel launched by nmcli/nm-applet is active - path = "/proc/sys/net/ipv4/conf/tun0" - format = "🔐" -} - -tztime local { - format = "🕘 %d/%m/%Y %H:%M:%S" - timezone = "Europe/Paris" -} - -load { - format = "%5min" -} - -disk "/" { - format = " %avail / %total" -} - -disk "/home" { - format = " %avail / %total" -} -volume master { - format = "🔈 %volume" - format_muted = "🔇 %volume" - device = "default" - mixer = "Master" - mixer_idx = 0 -} diff --git a/config/polybar/config b/config/polybar/config index 9ffb31a..e259ae7 100644 --- a/config/polybar/config +++ b/config/polybar/config @@ -76,7 +76,7 @@ enable-ipc = true inherit = bar/base modules-center = mpd -modules-right = eth wlan xbacklight volume battery date +modules-right = vpncheck eth wlan bbswitch xbacklight volume battery date tray-position = right tray-padding = 2 @@ -84,7 +84,7 @@ tray-transparent = false [bar/secondary] inherit = bar/base -modules-right = cpu memory temperature ethMore wlanMore filesystem xbacklight volume date +modules-right = cpu memory temperature vpncheck ethMore wlanMore filesystem bbswitch xbacklight volume date [module/filesystem] @@ -174,6 +174,13 @@ icon-repeatone = 1 toggle-on-foreground = ${theme.foreground} toggle-off-foreground = #55 +[module/bbswitch] +type = custom/script +exec = grep -o '\w\+$' /proc/acpi/bbswitch +exec-if = test -f /proc/acpi/bbswitch +interval = 5 +prefix = +format-foreground = ${theme.redF} [module/xbacklight] type = internal/xbacklight @@ -212,6 +219,13 @@ interval = 2 format-foreground = ${theme.greenF} label =  %gb_free% +[module/vpncheck] +type = custom/script +exec = echo  +exec-if = pgrep openvpn +interval = 5 +format-foreground = ${theme.blueF} + [module/eth] type = internal/network interface = ${env:ethI:eth0} diff --git a/config/qutebrowser/qutebrowser.conf b/config/qutebrowser/qutebrowser.conf deleted file mode 100644 index 3300234..0000000 --- a/config/qutebrowser/qutebrowser.conf +++ /dev/null @@ -1,1602 +0,0 @@ -# vim: ft=dosini - -# Configfile for qutebrowser. -# -# This configfile is parsed by python's configparser in extended -# interpolation mode. The format is very INI-like, so there are -# categories like [general] with "key = value"-pairs. -# -# Note that you shouldn't add your own comments, as this file is -# regenerated every time the config is saved. -# -# Interpolation looks like ${value} or ${section:value} and will be -# replaced by the respective value. -# -# Some settings will expand environment variables. Note that, since -# interpolation is run first, you will need to escape the $ char as -# described below. -# -# This is the default config, so if you want to remove anything from -# here (as opposed to change/add), for example a key binding, set it to -# an empty value. -# -# You will need to escape the following values: -# - # at the start of the line (at the first position of the key) (\#) -# - $ in a value ($$) - - -# General/miscellaneous options. -[general] - -# ignore-case (IgnoreCase): -# Whether to find text on a page case-insensitively. -# true: Search case-insensitively -# false: Search case-sensitively -# smart: Search case-sensitively if there are capital chars -# Default: smart -ignore-case = smart - -# startpage (List of String): -# The default page(s) to open at the start, separated by commas. -# Default: https://start.duckduckgo.com -startpage = https://geoffrey.frogeye.fr/home.php - -# yank-ignored-url-parameters (List of String): -# The URL parameters to strip with :yank url, separated by commas. -# Default: -# ref,utm_source,utm_medium,utm_campaign,utm_term,utm_content -yank-ignored-url-parameters = ref,utm_source,utm_medium,utm_campaign,utm_term,utm_content - -# default-open-dispatcher (String): -# The default program used to open downloads. Set to an empty string -# to use the default internal handler. -# Any {} in the string will be expanded to the filename, else the -# filename will be appended. -# Default: -default-open-dispatcher = - -# default-page (FuzzyUrl): -# The page to open if :open -t/-b/-w is used without URL. Use -# `about:blank` for a blank page. -# Default: ${startpage} -default-page = ${startpage} - -# auto-search (AutoSearch): -# Whether to start a search when something else than a URL is -# entered. -# naive: Use simple/naive check. -# dns: Use DNS requests (might be slow!). -# false: Never search automatically. -# Default: naive -auto-search = naive - -# auto-save-config (Bool): -# Whether to save the config automatically on quit. -# Valid values: true, false -# Default: true -auto-save-config = true - -# auto-save-interval (Int): -# How often (in milliseconds) to auto-save config/cookies/etc. -# Default: 15000 -auto-save-interval = 15000 - -# editor (ShellCommand): -# The editor (and arguments) to use for the `open-editor` command. -# The arguments get split like in a shell, so you can use `"` or `'` -# to quote them. -# `{}` gets replaced by the filename of the file to be edited. -# Default: gvim -f "{}" -editor = gvim -f "{}" - -# editor-encoding (Encoding): -# Encoding to use for editor. -# Default: utf-8 -editor-encoding = utf-8 - -# private-browsing (Bool): -# Open new windows in private browsing mode which does not record -# visited pages. -# Valid values: true, false -# Default: false -private-browsing = false - -# developer-extras (Bool): -# Enable extra tools for Web developers. -# This needs to be enabled for `:inspector` to work and also adds an -# _Inspect_ entry to the context menu. For QtWebEngine, see -# 'qutebrowser --help' instead. -# Valid values: true, false -# Default: false -developer-extras = true - -# print-element-backgrounds (Bool): -# Whether the background color and images are also drawn when the -# page is printed. -# This setting only works with Qt 5.8 or newer when using the -# QtWebEngine backend. -# Valid values: true, false -# Default: true -print-element-backgrounds = true - -# xss-auditing (Bool): -# Whether load requests should be monitored for cross-site scripting -# attempts. -# Suspicious scripts will be blocked and reported in the inspector's -# JavaScript console. Enabling this feature might have an impact on -# performance. -# Valid values: true, false -# Default: false -xss-auditing = false - -# default-encoding (String): -# Default encoding to use for websites. -# The encoding must be a string describing an encoding such as -# _utf-8_, _iso-8859-1_, etc. -# Default: iso-8859-1 -default-encoding = iso-8859-1 - -# new-instance-open-target (String): -# How to open links in an existing instance if a new one is -# launched. -# tab: Open a new tab in the existing window and activate the -# window. -# tab-bg: Open a new background tab in the existing window and -# activate the window. -# tab-silent: Open a new tab in the existing window without -# activating the window. -# tab-bg-silent: Open a new background tab in the existing -# window without activating the window. -# window: Open in a new window. -# Default: tab -new-instance-open-target = tab - -# new-instance-open-target.window (String): -# Which window to choose when opening links as new tabs. -# first-opened: Open new tabs in the first (oldest) opened -# window. -# last-opened: Open new tabs in the last (newest) opened window. -# last-focused: Open new tabs in the most recently focused -# window. -# last-visible: Open new tabs in the most recently visible -# window. -# Default: last-focused -new-instance-open-target.window = last-focused - -# log-javascript-console (String): -# How to log javascript console messages. -# none: Don't log messages. -# debug: Log messages with debug level. -# info: Log messages with info level. -# Default: debug -log-javascript-console = debug - -# save-session (Bool): -# Whether to always save the open pages. -# Valid values: true, false -# Default: false -save-session = false - -# session-default-name (SessionName): -# The name of the session to save by default, or empty for the last -# loaded session. -# Default: -session-default-name = - -# url-incdec-segments (FlagList): -# The URL segments where `:navigate increment/decrement` will search -# for a number. -# Valid values: host, path, query, anchor -# Default: path,query -url-incdec-segments = path,query - - -# General options related to the user interface. -[ui] - -# history-session-interval (Int): -# The maximum time in minutes between two history items for them to -# be considered being from the same session. Use -1 to disable -# separation. -# Default: 30 -history-session-interval = 30 - -# zoom-levels (List of Perc): -# The available zoom levels, separated by commas. -# Default: -# 25%,33%,50%,67%,75%,90%,100%,110%,125%,150%,175%,200%,250%,300%,400%,500% -zoom-levels = 25%,33%,50%,67%,75%,90%,100%,110%,125%,150%,175%,200%,250%,300%,400%,500% - -# default-zoom (Perc): -# The default zoom level. -# Default: 100% -default-zoom = 100% - -# downloads-position (VerticalPosition): -# Where to show the downloaded files. -# Valid values: top, bottom -# Default: top -downloads-position = top - -# status-position (VerticalPosition): -# The position of the status bar. -# Valid values: top, bottom -# Default: bottom -status-position = bottom - -# message-timeout (Int): -# Time (in ms) to show messages in the statusbar for. -# Set to 0 to never clear messages. -# Default: 2000 -message-timeout = 2000 - -# message-unfocused (Bool): -# Whether to show messages in unfocused windows. -# Valid values: true, false -# Default: false -message-unfocused = false - -# confirm-quit (ConfirmQuit): -# Whether to confirm quitting the application. -# always: Always show a confirmation. -# multiple-tabs: Show a confirmation if multiple tabs are -# opened. -# downloads: Show a confirmation if downloads are running -# never: Never show a confirmation. -# Default: never -confirm-quit = never - -# zoom-text-only (Bool): -# Whether the zoom factor on a frame applies only to the text or to -# all content. -# Valid values: true, false -# Default: false -zoom-text-only = false - -# frame-flattening (Bool): -# Whether to expand each subframe to its contents. -# This will flatten all the frames to become one scrollable page. -# Valid values: true, false -# Default: false -frame-flattening = false - -# user-stylesheet (File): -# User stylesheet to use (absolute filename or filename relative to -# the config directory). Will expand environment variables. -# Default: -user-stylesheet = - -# hide-scrollbar (Bool): -# Hide the main scrollbar. -# Valid values: true, false -# Default: true -hide-scrollbar = true - -# smooth-scrolling (Bool): -# Whether to enable smooth scrolling for web pages. Note smooth -# scrolling does not work with the :scroll-px command. -# Valid values: true, false -# Default: false -smooth-scrolling = false - -# remove-finished-downloads (Int): -# Number of milliseconds to wait before removing finished downloads. -# Will not be removed if value is -1. -# Default: -1 -remove-finished-downloads = -1 - -# hide-statusbar (Bool): -# Whether to hide the statusbar unless a message is shown. -# Valid values: true, false -# Default: false -hide-statusbar = false - -# statusbar-padding (Padding): -# Padding for statusbar (top, bottom, left, right). -# Default: 1,1,0,0 -statusbar-padding = 1,1,0,0 - -# window-title-format (FormatString): -# The format to use for the window title. The following placeholders -# are defined: -# * `{perc}`: The percentage as a string like `[10%]`. -# * `{perc_raw}`: The raw percentage, e.g. `10` -# * `{title}`: The title of the current web page -# * `{title_sep}`: The string ` - ` if a title is set, empty -# otherwise. -# * `{id}`: The internal window ID of this window. -# * `{scroll_pos}`: The page scroll position. -# * `{host}`: The host of the current web page. -# * `{backend}`: Either 'webkit' or 'webengine' -# * `{private}` : Indicates when private mode is enabled. -# Default: {perc}{title}{title_sep}qutebrowser -window-title-format = {perc}{title}{title_sep}qutebrowser - -# modal-js-dialog (Bool): -# Use standard JavaScript modal dialog for alert() and confirm() -# Valid values: true, false -# Default: false -modal-js-dialog = false - -# hide-wayland-decoration (Bool): -# Hide the window decoration when using wayland (requires restart) -# Valid values: true, false -# Default: false -hide-wayland-decoration = false - -# keyhint-blacklist (List of String): -# Keychains that shouldn't be shown in the keyhint dialog -# Globs are supported, so ';*' will blacklist all keychainsstarting -# with ';'. Use '*' to disable keyhints -# Default: -keyhint-blacklist = - -# keyhint-delay (Int): -# Time from pressing a key to seeing the keyhint dialog (ms) -# Default: 500 -keyhint-delay = 500 - -# prompt-radius (Int): -# The rounding radius for the edges of prompts. -# Default: 8 -prompt-radius = 8 - -# prompt-filebrowser (Bool): -# Show a filebrowser in upload/download prompts. -# Valid values: true, false -# Default: true -prompt-filebrowser = true - - -# Settings related to the network. -[network] - -# do-not-track (Bool): -# Value to send in the `DNT` header. -# Valid values: true, false -# Default: true -do-not-track = true - -# accept-language (String): -# Value to send in the `accept-language` header. -# Default: en-US,en -accept-language = fr-FR,en-US,en - -# referer-header (String): -# Send the Referer header -# always: Always send. -# never: Never send; this is not recommended, as some sites may -# break. -# same-domain: Only send for the same domain. This will still -# protect your privacy, but shouldn't break any sites. -# Default: same-domain -referer-header = same-domain - -# user-agent (UserAgent): -# User agent to send. Empty to send the default. -# Default: -user-agent = - -# proxy (Proxy): -# The proxy to use. -# In addition to the listed values, you can use a `socks://...` or -# `http://...` URL. -# system: Use the system wide proxy. -# none: Don't use any proxy -# Default: system -proxy = system - -# proxy-dns-requests (Bool): -# Whether to send DNS requests over the configured proxy. -# Valid values: true, false -# Default: true -proxy-dns-requests = true - -# ssl-strict (BoolAsk): -# Whether to validate SSL handshakes. -# Valid values: true, false, ask -# Default: ask -ssl-strict = ask - -# dns-prefetch (Bool): -# Whether to try to pre-fetch DNS entries to speed up browsing. -# Valid values: true, false -# Default: true -dns-prefetch = true - -# custom-headers (HeaderDict): -# Set custom headers for qutebrowser HTTP requests. -# Default: -custom-headers = - -# netrc-file (File): -# Set location of a netrc-file for HTTP authentication. If empty, -# ~/.netrc is used. -# Default: -netrc-file = - - -# Options related to completion and command history. -[completion] - -# show (String): -# When to show the autocompletion window. -# always: Whenever a completion is available. -# auto: Whenever a completion is requested. -# never: Never. -# Default: always -show = always - -# download-path-suggestion (String): -# What to display in the download filename input. -# path: Show only the download path. -# filename: Show only download filename. -# both: Show download path and filename. -# Default: path -download-path-suggestion = path - -# timestamp-format (TimestampTemplate): -# How to format timestamps (e.g. for history) -# Default: %Y-%m-%d -timestamp-format = %Y-%m-%d - -# height (PercOrInt): -# The height of the completion, in px or as percentage of the -# window. -# Default: 50% -height = 50% - -# cmd-history-max-items (Int): -# How many commands to save in the command history. -# 0: no history / -1: unlimited -# Default: 100 -cmd-history-max-items = 100 - -# web-history-max-items (Int): -# How many URLs to show in the web history. -# 0: no history / -1: unlimited -# Default: 1000 -web-history-max-items = 1000 - -# quick-complete (Bool): -# Whether to move on to the next part when there's only one possible -# completion left. -# Valid values: true, false -# Default: true -quick-complete = true - -# shrink (Bool): -# Whether to shrink the completion to be smaller than the configured -# size if there are no scrollbars. -# Valid values: true, false -# Default: false -shrink = false - -# scrollbar-width (Int): -# Width of the scrollbar in the completion window (in px). -# Default: 12 -scrollbar-width = 12 - -# scrollbar-padding (Int): -# Padding of scrollbar handle in completion window (in px). -# Default: 2 -scrollbar-padding = 2 - - -# Options related to input modes. -[input] - -# timeout (Int): -# Timeout (in milliseconds) for ambiguous key bindings. -# If the current input forms both a complete match and a partial -# match, the complete match will be executed after this time. -# Default: 500 -timeout = 500 - -# partial-timeout (Int): -# Timeout (in milliseconds) for partially typed key bindings. -# If the current input forms only partial matches, the keystring -# will be cleared after this time. -# Default: 5000 -partial-timeout = 1000 - -# insert-mode-on-plugins (Bool): -# Whether to switch to insert mode when clicking flash and other -# plugins. -# Valid values: true, false -# Default: false -insert-mode-on-plugins = false - -# auto-leave-insert-mode (Bool): -# Whether to leave insert mode if a non-editable element is clicked. -# Valid values: true, false -# Default: true -auto-leave-insert-mode = true - -# auto-insert-mode (Bool): -# Whether to automatically enter insert mode if an editable element -# is focused after page load. -# Valid values: true, false -# Default: false -auto-insert-mode = false - -# forward-unbound-keys (String): -# Whether to forward unbound keys to the webview in normal mode. -# all: Forward all unbound keys. -# auto: Forward unbound non-alphanumeric keys. -# none: Don't forward any keys. -# Default: auto -forward-unbound-keys = auto - -# spatial-navigation (Bool): -# Enables or disables the Spatial Navigation feature. -# Spatial navigation consists in the ability to navigate between -# focusable elements in a Web page, such as hyperlinks and form -# controls, by using Left, Right, Up and Down arrow keys. For -# example, if a user presses the Right key, heuristics determine -# whether there is an element he might be trying to reach towards -# the right and which element he probably wants. -# Valid values: true, false -# Default: false -spatial-navigation = false - -# links-included-in-focus-chain (Bool): -# Whether hyperlinks should be included in the keyboard focus chain. -# Valid values: true, false -# Default: true -links-included-in-focus-chain = true - -# rocker-gestures (Bool): -# Whether to enable Opera-like mouse rocker gestures. This disables -# the context menu. -# Valid values: true, false -# Default: false -rocker-gestures = false - -# mouse-zoom-divider (Int): -# How much to divide the mouse wheel movements to translate them -# into zoom increments. -# Default: 512 -mouse-zoom-divider = 512 - - -# Configuration of the tab bar. -[tabs] - -# background-tabs (Bool): -# Whether to open new tabs (middleclick/ctrl+click) in background. -# Valid values: true, false -# Default: false -background-tabs = false - -# select-on-remove (SelectOnRemove): -# Which tab to select when the focused tab is removed. -# prev: Select the tab which came before the closed one (left in -# horizontal, above in vertical). -# next: Select the tab which came after the closed one (right in -# horizontal, below in vertical). -# last-used: Select the previously selected tab. -# Default: next -select-on-remove = next - -# new-tab-position (NewTabPosition): -# How new tabs are positioned. -# prev: Before the current tab. -# next: After the current tab. -# first: At the beginning. -# last: At the end. -# Default: next -new-tab-position = next - -# new-tab-position-explicit (NewTabPosition): -# How new tabs opened explicitly are positioned. -# prev: Before the current tab. -# next: After the current tab. -# first: At the beginning. -# last: At the end. -# Default: last -new-tab-position-explicit = last - -# last-close (String): -# Behavior when the last tab is closed. -# ignore: Don't do anything. -# blank: Load a blank page. -# startpage: Load the start page. -# default-page: Load the default page. -# close: Close the window. -# Default: ignore -last-close = ignore - -# show (String): -# When to show the tab bar -# always: Always show the tab bar. -# never: Always hide the tab bar. -# multiple: Hide the tab bar if only one tab is open. -# switching: Show the tab bar when switching tabs. -# Default: always -show = multiple - -# show-switching-delay (Int): -# Time to show the tab bar before hiding it when tabs->show is set -# to 'switching'. -# Default: 800 -show-switching-delay = 800 - -# wrap (Bool): -# Whether to wrap when changing tabs. -# Valid values: true, false -# Default: true -wrap = true - -# movable (Bool): -# Whether tabs should be movable. -# Valid values: true, false -# Default: true -movable = true - -# close-mouse-button (String): -# On which mouse button to close tabs. -# right: Close tabs on right-click. -# middle: Close tabs on middle-click. -# none: Don't close tabs using the mouse. -# Default: middle -close-mouse-button = middle - -# position (Position): -# The position of the tab bar. -# Valid values: top, bottom, left, right -# Default: top -position = top - -# show-favicons (Bool): -# Whether to show favicons in the tab bar. -# Valid values: true, false -# Default: true -show-favicons = true - -# favicon-scale (Float): -# Scale for favicons in the tab bar. The tab size is unchanged, so -# big favicons also require extra `tabs->padding`. -# Default: 1.0 -favicon-scale = 1.0 - -# width (PercOrInt): -# The width of the tab bar if it's vertical, in px or as percentage -# of the window. -# Default: 20% -width = 20% - -# pinned-width (Int): -# The width for pinned tabs with a horizontal tabbar, in px. -# Default: 43 -pinned-width = 43 - -# indicator-width (Int): -# Width of the progress indicator (0 to disable). -# Default: 3 -indicator-width = 3 - -# tabs-are-windows (Bool): -# Whether to open windows instead of tabs. -# Valid values: true, false -# Default: false -tabs-are-windows = true - -# title-format (FormatString): -# The format to use for the tab title. The following placeholders -# are defined: -# * `{perc}`: The percentage as a string like `[10%]`. -# * `{perc_raw}`: The raw percentage, e.g. `10` -# * `{title}`: The title of the current web page -# * `{title_sep}`: The string ` - ` if a title is set, empty -# otherwise. -# * `{index}`: The index of this tab. -# * `{id}`: The internal tab ID of this tab. -# * `{scroll_pos}`: The page scroll position. -# * `{host}`: The host of the current web page. -# * `{backend}`: Either 'webkit' or 'webengine' -# * `{private}` : Indicates when private mode is enabled. -# Default: {index}: {title} -title-format = {index}: {title} - -# title-format-pinned (FormatString): -# The format to use for the tab title for pinned tabs. The same -# placeholders like for title-format are defined. -# Default: {index} -title-format-pinned = {index} - -# title-alignment (TextAlignment): -# Alignment of the text inside of tabs -# Valid values: left, right, center -# Default: left -title-alignment = left - -# mousewheel-tab-switching (Bool): -# Switch between tabs using the mouse wheel. -# Valid values: true, false -# Default: true -mousewheel-tab-switching = true - -# padding (Padding): -# Padding for tabs (top, bottom, left, right). -# Default: 0,0,5,5 -padding = 0,0,5,5 - -# indicator-padding (Padding): -# Padding for indicators (top, bottom, left, right). -# Default: 2,2,0,4 -indicator-padding = 2,2,0,4 - - -# Settings related to cache and storage. -[storage] - -# download-directory (Directory): -# The directory to save downloads to. An empty value selects a -# sensible os-specific default. Will expand environment variables. -# Default: -download-directory = - -# prompt-download-directory (Bool): -# Whether to prompt the user for the download location. -# If set to false, 'download-directory' will be used. -# Valid values: true, false -# Default: true -prompt-download-directory = true - -# remember-download-directory (Bool): -# Whether to remember the last used download directory. -# Valid values: true, false -# Default: true -remember-download-directory = true - -# maximum-pages-in-cache (Int): -# The maximum number of pages to hold in the global memory page -# cache. -# The Page Cache allows for a nicer user experience when navigating -# forth or back to pages in the forward/back history, by pausing and -# resuming up to _n_ pages. -# For more information about the feature, please refer to: -# http://webkit.org/blog/427/webkit-page-cache-i-the-basics/ -# Default: 0 -maximum-pages-in-cache = 0 - -# offline-web-application-cache (Bool): -# Whether support for the HTML 5 web application cache feature is -# enabled. -# An application cache acts like an HTTP cache in some sense. For -# documents that use the application cache via JavaScript, the -# loader engine will first ask the application cache for the -# contents, before hitting the network. -# The feature is described in details at: -# http://dev.w3.org/html5/spec/Overview.html#appcache -# Valid values: true, false -# Default: true -offline-web-application-cache = true - -# local-storage (Bool): -# Whether support for HTML 5 local storage and Web SQL is enabled. -# Valid values: true, false -# Default: true -local-storage = true - -# cache-size (Int): -# Size of the HTTP network cache. Empty to use the default value. -# Default: -cache-size = 52428800 - - -# Loaded plugins/scripts and allowed actions. -[content] - -# allow-images (Bool): -# Whether images are automatically loaded in web pages. -# Valid values: true, false -# Default: true -allow-images = true - -# allow-javascript (Bool): -# Enables or disables the running of JavaScript programs. -# Valid values: true, false -# Default: true -allow-javascript = true - -# allow-plugins (Bool): -# Enables or disables plugins in Web pages. -# Qt plugins with a mimetype such as "application/x-qt-plugin" are -# not affected by this setting. -# Valid values: true, false -# Default: false -allow-plugins = false - -# webgl (Bool): -# Enables or disables WebGL. -# Valid values: true, false -# Default: true -webgl = true - -# hyperlink-auditing (Bool): -# Enable or disable hyperlink auditing (). -# Valid values: true, false -# Default: false -hyperlink-auditing = false - -# geolocation (BoolAsk): -# Allow websites to request geolocations. -# Valid values: true, false, ask -# Default: ask -geolocation = ask - -# notifications (BoolAsk): -# Allow websites to show notifications. -# Valid values: true, false, ask -# Default: ask -notifications = true - -# media-capture (BoolAsk): -# Allow websites to record audio/video. -# Valid values: true, false, ask -# Default: ask -media-capture = ask - -# javascript-can-open-windows-automatically (Bool): -# Whether JavaScript programs can open new windows without user -# interaction. -# Valid values: true, false -# Default: false -javascript-can-open-windows-automatically = false - -# javascript-can-close-windows (Bool): -# Whether JavaScript programs can close windows. -# Valid values: true, false -# Default: false -javascript-can-close-windows = false - -# javascript-can-access-clipboard (Bool): -# Whether JavaScript programs can read or write to the clipboard. -# With QtWebEngine, writing the clipboard as response to a user -# interaction is always allowed. -# Valid values: true, false -# Default: false -javascript-can-access-clipboard = false - -# ignore-javascript-prompt (Bool): -# Whether all javascript prompts should be ignored. -# Valid values: true, false -# Default: false -ignore-javascript-prompt = false - -# ignore-javascript-alert (Bool): -# Whether all javascript alerts should be ignored. -# Valid values: true, false -# Default: false -ignore-javascript-alert = false - -# local-content-can-access-remote-urls (Bool): -# Whether locally loaded documents are allowed to access remote -# urls. -# Valid values: true, false -# Default: false -local-content-can-access-remote-urls = false - -# local-content-can-access-file-urls (Bool): -# Whether locally loaded documents are allowed to access other local -# urls. -# Valid values: true, false -# Default: true -local-content-can-access-file-urls = true - -# cookies-accept (String): -# Control which cookies to accept. -# all: Accept all cookies. -# no-3rdparty: Accept cookies from the same origin only. -# no-unknown-3rdparty: Accept cookies from the same origin only, -# unless a cookie is already set for the domain. -# never: Don't accept cookies at all. -# Default: no-3rdparty -cookies-accept = no-3rdparty - -# cookies-store (Bool): -# Whether to store cookies. Note this option needs a restart with -# QtWebEngine on Qt < 5.9. -# Valid values: true, false -# Default: true -cookies-store = true - -# host-block-lists (List of Url): -# List of URLs of lists which contain hosts to block. -# The file can be in one of the following formats: -# - An '/etc/hosts'-like file -# - One host per line -# - A zip-file of any of the above, with either only one file, or a -# file named 'hosts' (with any extension). -# Default: -# https://www.malwaredomainlist.com/hostslist/hosts.txt,http://someonewhocares.org/hosts/hosts,http://winhelp2002.mvps.org/hosts.zip,http://malwaredomains.lehigh.edu/files/justdomains.zip,https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext -host-block-lists = http://www.malwaredomainlist.com/hostslist/hosts.txt,http://someonewhocares.org/hosts/hosts,http://winhelp2002.mvps.org/hosts.zip,http://malwaredomains.lehigh.edu/files/justdomains.zip,http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext - -# host-blocking-enabled (Bool): -# Whether host blocking is enabled. -# Valid values: true, false -# Default: true -host-blocking-enabled = true - -# host-blocking-whitelist (List of String): -# List of domains that should always be loaded, despite being -# ad-blocked. -# Domains may contain * and ? wildcards and are otherwise required -# to exactly match the requested domain. -# Local domains are always exempt from hostblocking. -# Default: piwik.org -host-blocking-whitelist = piwik.org - -# enable-pdfjs (Bool): -# Enable pdf.js to view PDF files in the browser. -# Note that the files can still be downloaded by clicking the -# download button in the pdf.js viewer. -# Valid values: true, false -# Default: false -enable-pdfjs = false - - -# Hinting settings. -[hints] - -# border (String): -# CSS border value for hints. -# Default: 1px solid #E3BE23 -border = 1px solid #E3BE23 - -# mode (String): -# Mode to use for hints. -# number: Use numeric hints. (In this mode you can also type -# letters form the hinted element to filter and reduce the number of -# elements that are hinted.) -# letter: Use the chars in the hints -> chars setting. -# word: Use hints words based on the html elements and the extra -# words. -# Default: letter -mode = letter - -# chars (UniqueCharString): -# Chars used for hint strings. -# Default: asdfghjkl -chars = asdfghjkl - -# min-chars (Int): -# Minimum number of chars used for hint strings. -# Default: 1 -min-chars = 1 - -# scatter (Bool): -# Whether to scatter hint key chains (like Vimium) or not (like -# dwb). Ignored for number hints. -# Valid values: true, false -# Default: true -scatter = true - -# uppercase (Bool): -# Make chars in hint strings uppercase. -# Valid values: true, false -# Default: false -uppercase = false - -# dictionary (File): -# The dictionary file to be used by the word hints. -# Default: /usr/share/dict/words -dictionary = /usr/share/dict/words - -# auto-follow (String): -# Controls when a hint can be automatically followed without the -# user pressing Enter. -# always: Auto-follow whenever there is only a single hint on a -# page. -# unique-match: Auto-follow whenever there is a unique non-empty -# match in either the hint string (word mode) or filter (number -# mode). -# full-match: Follow the hint when the user typed the whole hint -# (letter, word or number mode) or the element's text (only in -# number mode). -# never: The user will always need to press Enter to follow a -# hint. -# Default: unique-match -auto-follow = unique-match - -# auto-follow-timeout (Int): -# A timeout (in milliseconds) to inhibit normal-mode key bindings -# after a successful auto-follow. -# Default: 0 -auto-follow-timeout = 0 - -# next-regexes (List of Regex): -# A comma-separated list of regexes to use for 'next' links. -# Default: -# \bnext\b,\bmore\b,\bnewer\b,\b[>→≫]\b,\b(>>|»)\b,\bcontinue\b -next-regexes = \bnext\b,\bmore\b,\bnewer\b,\b[>→≫]\b,\b(>>|»)\b,\bcontinue\b - -# prev-regexes (List of Regex): -# A comma-separated list of regexes to use for 'prev' links. -# Default: \bprev(ious)?\b,\bback\b,\bolder\b,\b[<←≪]\b,\b(<<|«)\b -prev-regexes = \bprev(ious)?\b,\bback\b,\bolder\b,\b[<←≪]\b,\b(<<|«)\b - -# find-implementation (String): -# Which implementation to use to find elements to hint. -# javascript: Better but slower -# python: Slightly worse but faster -# Default: python -find-implementation = python - -# hide-unmatched-rapid-hints (Bool): -# Controls hiding unmatched hints in rapid mode. -# Valid values: true, false -# Default: true -hide-unmatched-rapid-hints = true - - -# Definitions of search engines which can be used via the address bar. -# The searchengine named `DEFAULT` is used when `general -> auto-search` -# is true and something else than a URL was entered to be opened. Other -# search engines can be used by prepending the search engine name to the -# search term, e.g. `:open google qutebrowser`. The string `{}` will be -# replaced by the search term, use `{{` and `}}` for literal `{`/`}` -# signs. -[searchengines] -DEFAULT = https://www.qwant.com/?t=web&q={} -arch = https://wiki.archlinux.org/?search={} -gfr = https://www.google.fr/search?hl=fr&q={} -archp = https://www.archlinux.org/packages/?q={} -github = https://github.com/search?q={} -yt = https://www.youtube.com/results?search_query={} -aur = https://aur.archlinux.org/packages/?K={} -gi = http://images.google.com/search?q={} -g = https://www.google.fr/search?q={} -wa = https://www.wolframalpha.com/input/?i={} -dockerhub = https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q={}&starCount=0 -npm = https://www.npmjs.com/search?q={} - - -# Aliases for commands. -# By default, no aliases are defined. Example which adds a new command -# `:qtb` to open qutebrowsers website: -# `qtb = open https://www.qutebrowser.org/` -[aliases] - - -# Colors used in the UI. -# A value can be in one of the following format: -# * `#RGB`/`#RRGGBB`/`#RRRGGGBBB`/`#RRRRGGGGBBBB` -# * An SVG color name as specified in http://www.w3.org/TR/SVG/types.html#ColorKeywords[the W3C specification]. -# * transparent (no color) -# * `rgb(r, g, b)` / `rgba(r, g, b, a)` (values 0-255 or percentages) -# * `hsv(h, s, v)` / `hsva(h, s, v, a)` (values 0-255, hue 0-359) -# * A gradient as explained in http://doc.qt.io/qt-5/stylesheet-reference.html#list-of-property-types[the Qt documentation] under ``Gradient''. -# A *.system value determines the color system to use for color -# interpolation between similarly-named *.start and *.stop entries, -# regardless of how they are defined in the options. Valid values are -# 'rgb', 'hsv', and 'hsl'. -# The `hints.*` values are a special case as they're real CSS colors, not Qt-CSS colors. There, for a gradient, you need to use `-webkit-gradient`, see https://www.webkit.org/blog/175/introducing-css-gradients/[the WebKit documentation]. -[colors] - -# completion.fg (QtColor): -# Text color of the completion widget. -# Default: white -completion.fg = #f1ebeb - -# completion.bg (QssColor): -# Background color of the completion widget. -# Default: #333333 -completion.bg = #58584e - -# completion.alternate-bg (QssColor): -# Alternating background color of the completion widget. -# Default: #444444 -completion.alternate-bg = #48483e - -# completion.category.fg (QtColor): -# Foreground color of completion widget category headers. -# Default: white -completion.category.fg = #f1ebeb - -# completion.category.bg (QssColor): -# Background color of the completion widget category headers. -# Default: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #888888, -# stop:1 #505050) -completion.category.bg = qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #76715e, stop:1 #48483e) - -# completion.category.border.top (QssColor): -# Top border color of the completion widget category headers. -# Default: black -completion.category.border.top = #272822 - -# completion.category.border.bottom (QssColor): -# Bottom border color of the completion widget category headers. -# Default: ${completion.category.border.top} -completion.category.border.bottom = ${completion.category.border.top} - -# completion.item.selected.fg (QtColor): -# Foreground color of the selected completion item. -# Default: black -completion.item.selected.fg = ${completion.fg} - -# completion.item.selected.bg (QssColor): -# Background color of the selected completion item. -# Default: #e8c000 -completion.item.selected.bg = #d4c96e - -# completion.item.selected.border.top (QssColor): -# Top border color of the completion widget category headers. -# Default: #bbbb00 -completion.item.selected.border.top = #e7db75 - -# completion.item.selected.border.bottom (QssColor): -# Bottom border color of the selected completion item. -# Default: ${completion.item.selected.border.top} -completion.item.selected.border.bottom = ${completion.item.selected.border.top} - -# completion.match.fg (QssColor): -# Foreground color of the matched text in the completion. -# Default: #ff4444 -completion.match.fg = #fa2772 - -# completion.scrollbar.fg (QssColor): -# Color of the scrollbar handle in completion view. -# Default: ${completion.fg} -completion.scrollbar.fg = ${completion.fg} - -# completion.scrollbar.bg (QssColor): -# Color of the scrollbar in completion view -# Default: ${completion.bg} -completion.scrollbar.bg = ${completion.bg} - -# statusbar.fg (QssColor): -# Foreground color of the statusbar. -# Default: white -statusbar.fg = #f1ebeb - -# statusbar.bg (QssColor): -# Background color of the statusbar. -# Default: black -statusbar.bg = #272822 - -# statusbar.fg.private (QssColor): -# Foreground color of the statusbar in private browsing mode. -# Default: ${statusbar.fg} -statusbar.fg.private = ${statusbar.fg} - -# statusbar.bg.private (QssColor): -# Background color of the statusbar in private browsing mode. -# Default: #666666 -statusbar.bg.private = #666666 - -# statusbar.fg.insert (QssColor): -# Foreground color of the statusbar in insert mode. -# Default: ${statusbar.fg} -statusbar.fg.insert = ${statusbar.fg} - -# statusbar.bg.insert (QssColor): -# Background color of the statusbar in insert mode. -# Default: darkgreen -statusbar.bg.insert = #8fc029 - -# statusbar.fg.command (QssColor): -# Foreground color of the statusbar in command mode. -# Default: ${statusbar.fg} -statusbar.fg.command = ${statusbar.fg} - -# statusbar.bg.command (QssColor): -# Background color of the statusbar in command mode. -# Default: ${statusbar.bg} -statusbar.bg.command = ${statusbar.bg} - -# statusbar.fg.command.private (QssColor): -# Foreground color of the statusbar in private browsing + command -# mode. -# Default: ${statusbar.fg.private} -statusbar.fg.command.private = ${statusbar.fg.private} - -# statusbar.bg.command.private (QssColor): -# Background color of the statusbar in private browsing + command -# mode. -# Default: ${statusbar.bg.private} -statusbar.bg.command.private = ${statusbar.bg.private} - -# statusbar.fg.caret (QssColor): -# Foreground color of the statusbar in caret mode. -# Default: ${statusbar.fg} -statusbar.fg.caret = ${statusbar.fg} - -# statusbar.bg.caret (QssColor): -# Background color of the statusbar in caret mode. -# Default: purple -statusbar.bg.caret = #9358fe - -# statusbar.fg.caret-selection (QssColor): -# Foreground color of the statusbar in caret mode with a selection -# Default: ${statusbar.fg} -statusbar.fg.caret-selection = ${statusbar.fg} - -# statusbar.bg.caret-selection (QssColor): -# Background color of the statusbar in caret mode with a selection -# Default: #a12dff -statusbar.bg.caret-selection = #55bcce - -# statusbar.progress.bg (QssColor): -# Background color of the progress bar. -# Default: white -statusbar.progress.bg = ${statusbar.fg} - -# statusbar.url.fg (QssColor): -# Default foreground color of the URL in the statusbar. -# Default: ${statusbar.fg} -statusbar.url.fg = ${statusbar.fg} - -# statusbar.url.fg.success (QssColor): -# Foreground color of the URL in the statusbar on successful load -# (http). -# Default: white -statusbar.url.fg.success = #66efd5 - -# statusbar.url.fg.success.https (QssColor): -# Foreground color of the URL in the statusbar on successful load -# (https). -# Default: lime -statusbar.url.fg.success.https = #a7e22e - -# statusbar.url.fg.error (QssColor): -# Foreground color of the URL in the statusbar on error. -# Default: orange -statusbar.url.fg.error = #fa2772 - -# statusbar.url.fg.warn (QssColor): -# Foreground color of the URL in the statusbar when there's a -# warning. -# Default: yellow -statusbar.url.fg.warn = #e7db75 - -# statusbar.url.fg.hover (QssColor): -# Foreground color of the URL in the statusbar for hovered links. -# Default: aqua -statusbar.url.fg.hover = #ae82ff - -# tabs.fg.odd (QtColor): -# Foreground color of unselected odd tabs. -# Default: white -tabs.fg.odd = ${completion.fg} - -# tabs.bg.odd (QtColor): -# Background color of unselected odd tabs. -# Default: grey -tabs.bg.odd = ${completion.bg} - -# tabs.fg.even (QtColor): -# Foreground color of unselected even tabs. -# Default: white -tabs.fg.even = ${completion.fg} - -# tabs.bg.even (QtColor): -# Background color of unselected even tabs. -# Default: darkgrey -tabs.bg.even = ${completion.alternate-bg} - -# tabs.fg.selected.odd (QtColor): -# Foreground color of selected odd tabs. -# Default: white -tabs.fg.selected.odd = ${completion.item.selected.fg} - -# tabs.bg.selected.odd (QtColor): -# Background color of selected odd tabs. -# Default: black -tabs.bg.selected.odd = ${completion.item.selected.bg} - -# tabs.fg.selected.even (QtColor): -# Foreground color of selected even tabs. -# Default: ${tabs.fg.selected.odd} -tabs.fg.selected.even = ${tabs.fg.selected.odd} - -# tabs.bg.selected.even (QtColor): -# Background color of selected even tabs. -# Default: ${tabs.bg.selected.odd} -tabs.bg.selected.even = ${tabs.bg.selected.odd} - -# tabs.bg.bar (QtColor): -# Background color of the tab bar. -# Default: #555555 -tabs.bg.bar = ${statusbar.bg} - -# tabs.indicator.start (QtColor): -# Color gradient start for the tab indicator. -# Default: #0000aa -tabs.indicator.start = #55bcce - -# tabs.indicator.stop (QtColor): -# Color gradient end for the tab indicator. -# Default: #00aa00 -tabs.indicator.stop = #8fc029 - -# tabs.indicator.error (QtColor): -# Color for the tab indicator on errors.. -# Default: #ff0000 -tabs.indicator.error = #dc2566 - -# tabs.indicator.system (ColorSystem): -# Color gradient interpolation system for the tab indicator. -# 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. -# Default: rgb -tabs.indicator.system = rgb - -# hints.fg (QssColor): -# Font color for hints. -# Default: black -hints.fg = #272822 - -# hints.bg (QssColor): -# Background color for hints. Note that you can use a `rgba(...)` -# value for transparency. -# Default: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, -# 247, 133, 0.8), stop:1 rgba(255, 197, 66, 0.8)) -hints.bg = qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(212, 201, 110, 0.8), stop:1 rgba(231, 219, 117, 0.8)) - -# hints.fg.match (QssColor): -# Font color for the matched part of hints. -# Default: green -hints.fg.match = #8fc029 - -# downloads.bg.bar (QssColor): -# Background color for the download bar. -# Default: black -downloads.bg.bar = ${statusbar.bg} - -# downloads.fg.start (QtColor): -# Color gradient start for download text. -# Default: white -downloads.fg.start = ${statusbar.fg} - -# downloads.bg.start (QtColor): -# Color gradient start for download backgrounds. -# Default: #0000aa -downloads.bg.start = #48483e - -# downloads.fg.stop (QtColor): -# Color gradient end for download text. -# Default: ${downloads.fg.start} -downloads.fg.stop = ${downloads.fg.start} - -# downloads.bg.stop (QtColor): -# Color gradient stop for download backgrounds. -# Default: #00aa00 -downloads.bg.stop = #8fc029 - -# downloads.fg.system (ColorSystem): -# Color gradient interpolation system for download text. -# 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. -# Default: rgb -downloads.fg.system = rgb - -# downloads.bg.system (ColorSystem): -# Color gradient interpolation system for download backgrounds. -# 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. -# Default: rgb -downloads.bg.system = rgb - -# downloads.fg.error (QtColor): -# Foreground color for downloads with errors. -# Default: white -downloads.fg.error = ${downloads.fg.start} - -# downloads.bg.error (QtColor): -# Background color for downloads with errors. -# Default: red -downloads.bg.error = ${messages.bg.error} - -# webpage.bg (QtColor): -# Background color for webpages if unset (or empty to use the -# theme's color) -# Default: white -webpage.bg = white - -# keyhint.fg (QssColor): -# Text color for the keyhint widget. -# Default: #FFFFFF -keyhint.fg = #FFFFFF - -# keyhint.fg.suffix (CssColor): -# Highlight color for keys to complete the current keychain -# Default: #FFFF00 -keyhint.fg.suffix = #FFFF00 - -# keyhint.bg (QssColor): -# Background color of the keyhint widget. -# Default: rgba(0, 0, 0, 80%) -keyhint.bg = rgba(0, 0, 0, 80%) - -# messages.fg.error (QssColor): -# Foreground color of an error message. -# Default: white -messages.fg.error = ${statusbar.fg} - -# messages.bg.error (QssColor): -# Background color of an error message. -# Default: red -messages.bg.error = #dc2566 - -# messages.border.error (QssColor): -# Border color of an error message. -# Default: #bb0000 -messages.border.error = #fa2772 - -# messages.fg.warning (QssColor): -# Foreground color a warning message. -# Default: white -messages.fg.warning = ${statusbar.fg} - -# messages.bg.warning (QssColor): -# Background color of a warning message. -# Default: darkorange -messages.bg.warning = #d4c96e - -# messages.border.warning (QssColor): -# Border color of an error message. -# Default: #d47300 -messages.border.warning = #e7db75 - -# messages.fg.info (QssColor): -# Foreground color an info message. -# Default: white -messages.fg.info = ${statusbar.fg} - -# messages.bg.info (QssColor): -# Background color of an info message. -# Default: black -messages.bg.info = #55bcce - -# messages.border.info (QssColor): -# Border color of an info message. -# Default: #333333 -messages.border.info = #66d9ee - -# prompts.fg (QssColor): -# Foreground color for prompts. -# Default: white -prompts.fg = ${statusbar.fg} - -# prompts.bg (QssColor): -# Background color for prompts. -# Default: darkblue -prompts.bg = #56b7a5 - -# prompts.selected.bg (QssColor): -# Background color for the selected item in filename prompts. -# Default: #308cc6 -prompts.selected.bg = #55bcce - - -# Fonts used for the UI, with optional style/weight/size. -# * Style: `normal`/`italic`/`oblique` -# * Weight: `normal`, `bold`, `100`..`900` -# * Size: _number_ `px`/`pt` -[fonts] - -# _monospace (Font): -# Default monospace fonts. -# Default: xos4 Terminus, Terminus, Monospace, "DejaVu Sans Mono", -# Monaco, "Bitstream Vera Sans Mono", "Andale Mono", "Courier New", -# Courier, "Liberation Mono", monospace, Fixed, Consolas, Terminal -_monospace = Terminus, Monospace, "DejaVu Sans Mono", Monaco, "Bitstream Vera Sans Mono", "Andale Mono", "Courier New", Courier, "Liberation Mono", monospace, Fixed, Consolas, Terminal - -# completion (Font): -# Font used in the completion widget. -# Default: 8pt ${_monospace} -completion = 8pt ${_monospace} - -# completion.category (Font): -# Font used in the completion categories. -# Default: bold ${completion} -completion.category = bold ${completion} - -# tabbar (QtFont): -# Font used in the tab bar. -# Default: 8pt ${_monospace} -tabbar = 8pt ${_monospace} - -# statusbar (Font): -# Font used in the statusbar. -# Default: 8pt ${_monospace} -statusbar = 8pt ${_monospace} - -# downloads (Font): -# Font used for the downloadbar. -# Default: 8pt ${_monospace} -downloads = 8pt ${_monospace} - -# hints (Font): -# Font used for the hints. -# Default: bold 13px ${_monospace} -hints = bold 13px ${_monospace} - -# debug-console (QtFont): -# Font used for the debugging console. -# Default: 8pt ${_monospace} -debug-console = 8pt ${_monospace} - -# web-family-standard (FontFamily): -# Font family for standard fonts. -# Default: -web-family-standard = - -# web-family-fixed (FontFamily): -# Font family for fixed fonts. -# Default: -web-family-fixed = - -# web-family-serif (FontFamily): -# Font family for serif fonts. -# Default: -web-family-serif = - -# web-family-sans-serif (FontFamily): -# Font family for sans-serif fonts. -# Default: -web-family-sans-serif = - -# web-family-cursive (FontFamily): -# Font family for cursive fonts. -# Default: -web-family-cursive = - -# web-family-fantasy (FontFamily): -# Font family for fantasy fonts. -# Default: -web-family-fantasy = - -# web-size-minimum (Int): -# The hard minimum font size. -# Default: 0 -web-size-minimum = 0 - -# web-size-minimum-logical (Int): -# The minimum logical font size that is applied when zooming out. -# Default: 6 -web-size-minimum-logical = 6 - -# web-size-default (Int): -# The default font size for regular text. -# Default: 16 -web-size-default = 16 - -# web-size-default-fixed (Int): -# The default font size for fixed-pitch text. -# Default: 13 -web-size-default-fixed = 13 - -# keyhint (Font): -# Font used in the keyhint widget. -# Default: 8pt ${_monospace} -keyhint = 8pt ${_monospace} - -# messages.error (Font): -# Font used for error messages. -# Default: 8pt ${_monospace} -messages.error = 8pt ${_monospace} - -# messages.warning (Font): -# Font used for warning messages. -# Default: 8pt ${_monospace} -messages.warning = 8pt ${_monospace} - -# messages.info (Font): -# Font used for info messages. -# Default: 8pt ${_monospace} -messages.info = 8pt ${_monospace} - -# prompts (Font): -# Font used for prompts. -# Default: 8pt sans-serif -prompts = 8pt sans-serif diff --git a/face.icon b/face.icon index 54429d9..1310f56 120000 --- a/face.icon +++ b/face.icon @@ -1 +1 @@ -face \ No newline at end of file +.face \ No newline at end of file diff --git a/gem b/gem new file mode 120000 index 0000000..23390de --- /dev/null +++ b/gem @@ -0,0 +1 @@ +.cache/gem \ No newline at end of file diff --git a/gitconfig b/gitconfig index 567f9dd..17d9812 100644 --- a/gitconfig +++ b/gitconfig @@ -6,3 +6,5 @@ excludesfile = ~/.gitignore [push] default = matching +[alias] + git = !exec git diff --git a/go b/go new file mode 120000 index 0000000..3f37a1f --- /dev/null +++ b/go @@ -0,0 +1 @@ +.cache/go \ No newline at end of file diff --git a/icon b/icon index 54429d9..1310f56 120000 --- a/icon +++ b/icon @@ -1 +1 @@ -face \ No newline at end of file +.face \ No newline at end of file diff --git a/m2 b/m2 new file mode 120000 index 0000000..6897d10 --- /dev/null +++ b/m2 @@ -0,0 +1 @@ +.cache/m2 \ No newline at end of file diff --git a/npm b/npm new file mode 120000 index 0000000..47f1d63 --- /dev/null +++ b/npm @@ -0,0 +1 @@ +.cache/npm \ No newline at end of file diff --git a/nv b/nv new file mode 120000 index 0000000..7392898 --- /dev/null +++ b/nv @@ -0,0 +1 @@ +.cache/nv \ No newline at end of file diff --git a/scripts/arch-kexec b/scripts/arch-kexec new file mode 100755 index 0000000..b65004e --- /dev/null +++ b/scripts/arch-kexec @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +sudo kexec -l /boot/vmlinuz-linux --initrd=/boot/initramfs-linux.img --reuse-cmdlin +sudo systemctl kexec diff --git a/scripts/archive b/scripts/archive new file mode 100755 index 0000000..379f30c --- /dev/null +++ b/scripts/archive @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 + +import os +import argparse + +parser = argparse.ArgumentParser(description="Place a folder in ~/Documents in ~/Documents/Archives and symlink it") +parser.add_argument('dir', metavar='DIRECTORY', type=str, help="The directory to archive") +parser.add_argument('-d', '--dry', action='store_true') +args = parser.parse_args() + +# Finding directories +assert('HOME' in os.environ), "Home directory unknown" +docs = os.path.realpath(os.path.join(os.environ['HOME'], 'Documents')) +assert(os.path.isdir(docs)), "Documents folder not found" +arcs = os.path.join(docs, 'Archives') +assert(os.path.isdir(arcs)), "Archives folder not found" + +def archive(docdir): + docdir = os.path.realpath(args.dir) + assert(os.path.isdir(docdir)), docdir + " must be a directory" + + assert(docdir.startswith(docs)), "Directory is not in the document folder" + assert(not docdir.startswith(arcs)), "Directory is already in the archive folder" + + reldir = os.path.relpath(docdir, docs) + print("ARC", reldir) + + arcdir = os.path.join(arcs, reldir) + parentArcdir = os.path.realpath(os.path.join(arcdir, '..')) + parentDocdir = os.path.realpath(os.path.join(docdir, '..')) + linkDest = os.path.relpath(arcdir, parentDocdir) + + # BULLSHIT + + # If the directory exists + if os.path.isdir(arcdir): + return + # for f in os.listdir(arcdir): + # assert(os.path.isdir(f)), "Something unknown in Archive dir") + # archive(os.path.join(arcdir, f)) + + # If the directory doesn't exist, create the directories under it and move all the folder + else: + + if args.dry: + print("mkdir -p", parentArcdir) + else: + os.makedirs(parentArcdir, exist_ok=True) + + if args.dry: + print("mv", docdir, arcdir) + else: + os.rename(docdir, arcdir) + + if args.dry: + print("ln -s", linkDest, docdir) + else: + os.symlink(linkDest, docdir) + + + +def unarchive(arcdir): + return + +archive(args.dir) diff --git a/scripts/cudarun b/scripts/cudarun new file mode 100755 index 0000000..551e597 --- /dev/null +++ b/scripts/cudarun @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +if [ -z $DISPLAY ] +then + sudo tee /proc/acpi/bbswitch <<< ON + "$@" + rmmod nvidia_uvm + rmmod nvidia + sudo tee /proc/acpi/bbswitch <<< OFF +else + PATH="/opt/cuda/bin:$PATH" LD_LIBRARY_PATH="/opt/cuda/lib64:$LD_LIBRARY_PATH" VBLANK=0 VGL_READBACK=pbo optirun -c yuv "$@" +fi diff --git a/scripts/debloc b/scripts/debloc index c371598..6119cc6 100755 --- a/scripts/debloc +++ b/scripts/debloc @@ -142,7 +142,39 @@ function _debloc-ldconfig { find $DEBLOC_ROOT{/usr,}/lib -type l -name "*.so*" | while read link; do yes | cp --force --no-dereference --preserve=links "$link" "$DEBLOC_LD" &> /dev/null done &> /dev/null +} +# Fix absolute symbolic links +function _debloc-fixRootSymlinks { + find $DEBLOC_ROOT -type l | while read src + do + dst="$(readlink "$src")" + if echo "$dst" | grep '^/' | grep -q -v "^$DEBLOC_ROOT" + then + newDst="$DEBLOC_ROOT$dst" + if [ -f "$newDst" ] + then + echo "$src → $newDst" + rm "$src" + ln -s "$newDst" "$src" + else + echo "Ignoring $src pointing to $dst" + fi + fi + done +} + +function _debloc-fixPkgconfPrefix { + sed "s|^prefix=/usr$|prefix=$DEBLOC_ROOT/usr|" $(find $DEBLOC_ROOT -type f -name "*.pc") -i +} + +function debloc_fix { + echo "Fixing absolute symbolic links..." + _debloc-fixRootSymlinks + echo "Linking libraries in /ld" + _debloc-ldconfig + echo "Fixing prefix in pkg-config files" + _debloc-fixPkgconfPrefix } # Install debian archive @@ -180,7 +212,7 @@ function _debloc-install { # package DEB_FILE=$(mktemp) &> /dev/null path=$(_debloc-packagePath $pkg) echo -e "${DEBIAN_MIRROR}" | while read mirror; do - if [ -z $mirror ]; then + if [ -z "$mirror" ]; then continue fi url=${mirror}/${path} @@ -258,8 +290,9 @@ function debloc_env { echo "export C_INCLUDE_PATH=\"$DEBLOC_ROOT/usr/include:\$C_INCLUDE_PATH\"" echo "export CPLUS_INCLUDE_PATH=\"$DEBLOC_ROOT/usr/include:$DEBLOC_ROOT/usr/include/python2.7/:$DEBLOC_ROOT/usr/include/x86_64-linux-gnu/python2.7/:\$CPLUS_INCLUDE_PATH\"" echo "export LD_LIBRARY_PATH=\"$DEBLOC_LD:\$LD_LIBRARY_PATH\"" - echo "export PYTHONPATH=\"$DEBLOC_ROOT/usr/lib/python3/dist-packages:\$PYTHONPATH\"" + echo "export PYTHONPATH=\"$DEBLOC_ROOT/usr/lib/python2/dist-packages:$DEBLOC_ROOT/usr/lib/python3/dist-packages:$DEBLOC_ROOT/usr/lib/python2.7/dist-packages:$DEBLOC_ROOT/usr/lib/python3.5/dist-packages:\$PYTHONPATH\"" echo "export QT_QPA_PLATFORM_PLUGIN_PATH=\"$DEBLOC_ROOT/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms\"" + echo "export PKG_CONFIG_PATH=\"$DEBLOC_ROOT/usr/share/pkgconfig/:$DEBLOC_ROOT/usr/lib/x86_64-linux-gnu/pkgconfig/:$DEBLOC_ROOT/usr/lib/pkgconfig/:\$PKG_CONFIG_PATH\"" } function debloc_info { @@ -283,22 +316,33 @@ function debloc_install { # package if [ -z $1 ]; then debloc_deb_help fi + for pkg in $* + do + if [ $pkg == '--force' ] || [ $pkg == '-f' ]; then + force=0 + fi + done for pkg in $*; do + if [ $pkg == '--force' ] || [ $pkg == '-f' ]; then + continue + fi pkg=$(_debloc-filterVirtual $pkg) _debloc-exists $pkg if [ $? == 0 ]; then echo "Unknown package $pkg" continue fi - _debloc-locallyInstalled $pkg - if [ $? == 1 ]; then - echo "Package $pkg is already installed with Debloc" - continue - fi - _debloc-globallyInstalled $pkg - if [ $? == 1 ]; then - echo "Package $pkg is already installed on the system" - continue + if [ ! -v force ]; then + _debloc-locallyInstalled $pkg + if [ $? == 1 ]; then + echo "Package $pkg is already installed with Debloc" + continue + fi + _debloc-globallyInstalled $pkg + if [ $? == 1 ]; then + echo "Package $pkg is already installed on the system" + continue + fi fi _debloc-installDeps $pkg done @@ -385,6 +429,7 @@ function debloc_help { echo " install Install a debian package in the fake filesystem" echo " deb Install from a .deb file in the fake filesystem" echo " altern Update alternative" + echo " fix Apply some fixes in the fake filesystem" echo " flush Remove every package installed from the fake filesystem" echo " help Get help with commands" echo diff --git a/scripts/gitghost b/scripts/gitghost new file mode 100755 index 0000000..dc24cf1 --- /dev/null +++ b/scripts/gitghost @@ -0,0 +1,70 @@ +#!/usr/bin/bash + +# Replace git folders with a placeholder containing the remote and the commit + +function prompt { # text + while true; do + read -p "$1 [yn] " yn + case $yn in + [Yy]* ) return 1;; + [Nn]* ) return 0;; + * ) echo "Please answer yes or no.";; + esac + done +} + +if [[ "$#" == 0 || "$#" > 2 ]] +then + echo "Usage: $0 gitfolder [-y]" + exit 1 +fi + +folder="$(echo "$1" | sed 's/\/*$//')" +if [ "$2" == "-y" ] +then + donotask=true +fi + +if [ ! -d "$folder/.git" ] +then + echo "$folder is not a git repository" + exit 1 +fi + +if [ -n "$(git -C "$folder" diff)" ] +then + echo "WARNING: There are unstaged change. Those will be discarded if you continue." +fi + +echo "Be sure that every commit in the repository is backed up somewhere else, since those will be discarded." + +TMPFILE=$(mktemp) + +(echo "[gitplaceholder]" +echo "lastcommit=$(git log --format="%H" -n 1)" +echo +echo "[remote]" +git -C "$folder" remote -v +echo +echo "[branch]" +git -C "$folder" branch -v +echo +echo "[diff]" +git -C "$folder" diff -v) > $TMPFILE 2> /dev/null + +if [ ! $donotask ] +then + less $TMPFILE + echo + echo "This will be written in place of $folder." + prompt "Do you want to continue ?" + if [ "$?" == 0 ] + then + echo "Canceled" + rm $TMPFILE + exit 0 + fi +fi +echo "Dummying..." +rm -rf "$folder" +mv $TMPFILE $folder diff --git a/scripts/heavyPackages b/scripts/heavyPackages new file mode 100755 index 0000000..8235b61 --- /dev/null +++ b/scripts/heavyPackages @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Return a list of packages sorted by size + +(echo PACKAGE SIZE; \ + for A in /var/lib/pacman/local/*/desc; do + (sed -n 2p $A; (grep '^%SIZE%$' $A -A1 | tail -1)) | tr '\n' ' '; echo + done \ + | sort -nrk2) \ +| column -t diff --git a/scripts/install-arch b/scripts/install-arch index d0cb678..c9676c3 100755 --- a/scripts/install-arch +++ b/scripts/install-arch @@ -3,9 +3,9 @@ # Setups an Arch Linux system the way I like it # (requires sudo) -if which pacman &> /dev/null; then +if ! which pacman &> /dev/null; then echo "This is not an Arch Linux system (or pacman isn't installed)" - return 1 + exit 1 fi # Configuration @@ -21,21 +21,21 @@ function prompt { # text } # Don't ask for things that are already there -if which yaourt &> /dev/null; then - local YAOURT=1 +if which pacaur &> /dev/null; then + PACAUR=1 fi if which bauerbill &> /dev/null; then - local BAUERBILL=1 + BAUERBILL=1 fi -if [ -z $YAOURT ]; then - prompt "Do you want yaourt on this machine?" - local YAOURT=$? +if [ -z $PACAUR ]; then + prompt "Do you want pacaur on this machine?" + PACAUR=$? fi -if [ $YAOURT == 1 ]; then +if [ $PACAUR == 1 ]; then if [ -z $BAUERBILL ]; then prompt "Do you want bauerbill on this machine?" - local BAUERBILL=$? + BAUERBILL=$? fi else BAUERBILL=0 @@ -55,10 +55,11 @@ function inst { # Install package from PKGBUILD file function installPKGBUILD { # url + # TODO Download snapshots TMP_DIR="$(mktemp -d /tmp/pkgbuild.XXXXXXXXXX)" cd "$TMP_DIR" wget "$1" -O PKGBUILD - makepkg -si + makepkg -si --noconfirm cd - rm -rf "$TMP_DIR" } @@ -66,41 +67,62 @@ function installPKGBUILD { # url # SYSTEM inst wget -pacman -Q yaourt &> /dev/null -if [[ $YAOURT == 1 && $? == 1 ]]; then - installPKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=package-query" - installPKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=yaourt" +# Aur + +pacman -Q pacaur &> /dev/null +if [[ $PACAUR == 1 && $? == 1 ]]; then + installPKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=cower" + installPKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=pacaur" fi -if pacman -Q pamac ; then - sudo pacman -Rsc pamac +# Git for /etc +sudo pacman -S etckeeper --noconfirm --needed +sudo etckeeper init +sudo etckeeper commit "~/.dotfiles/scripts/install-arch commit" + +# Uninstall Manjaro's pamac +if pacman -Q pamac &> /dev/null ; then + sudo pacman -Rsc pamac --noconfirm fi +# Ccache +sudo pacman -S ccache --noconfirm --needed +sudo sed 's|BUILDENV=\(.\+\)!ccache\(.\+\)|BUILDENV=\1ccache\2|' /etc/makepkg.conf -i + +# Bauerbill pacman -Q bauerbill &> /dev/null if [[ $BAUERBILL == 1 && $? == 1 ]]; then - sudo pacman -Sy manjaro-{hotfixes,keyring,release,system} --noconfirm + sudo pacman -Sy gpg --recv-keys 1D1F0DC78F173680 installPKGBUILD http://xyne.archlinux.ca/projects/reflector/pkgbuild/PKGBUILD - yaourt -S bauerbill --noconfirm + pacaur -S bauerbill --noconfirm --noedit - bb-wrapper -Su - # TODO Prompt if all went well, if not restart + bauerbill -Su --noconfirm else sudo pacman -Syu fi -# Disable predictable network names -sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules - # TLP -# sudo pacman -S tlp -# sudo systemctl enable tlp.service tlp-sleep.service -# sudo systemctl disable systemd-rfkill +sudo pacman -S tlp --noconfirm --needed +sudo sed 's|SATA_LINKPWR_ON_BAT=min_power|SATA_LINKPWR_ON_BAT=max_performance|' /etc/default/tlp -i +sudo systemctl enable tlp.service tlp-sleep.service +sudo systemctl disable systemd-rfkill.service systemd-rfkill.socket +sudo tlp start -# TODO -# make -j8 in MAKEPKG -# time -# nfs -# hibernate +# Numlock on boot +echo -e "[Service]\nExecStartPre=/bin/sh -c 'setleds +num < /dev/%I'" | sudo systemctl edit getty\@.service + +# Makeflags +sudo sed "s|#MAKEFLAGS=\"-j2\"|MAKEFLAGS=\"-j$(nproc)\"|" /etc/makepkg.conf -i + +# Time synchronisation +sudo pacman -S ntp --noconfirm --needed +sudo systemctl start ntpd +sudo systemctl enable ntpd + +# MANUAL + +# Hibernation +# Add resume=UUID= to GRUB_CMDLINE_LINUX_DEFAULT and run `sudo grub-mkconfig -o /boot/grub/grub.cfg` diff --git a/scripts/install-prefs b/scripts/install-prefs index 364d9ff..f7e5434 100755 --- a/scripts/install-prefs +++ b/scripts/install-prefs @@ -54,7 +54,14 @@ if which pacman &> /dev/null; then function installFileOne { # file sudo pacman -U "$1" } - if which yaourt &> /dev/null; then + if which pacaur &> /dev/null; then + function altInstallOne { # package + pacman -Q $1 &> /dev/null + if [ $? == 1 ]; then + pacaur -S "$1" --noconfirm --noedit + fi + } + elif which yaourt &> /dev/null; then function altInstallOne { # package pacman -Q $1 &> /dev/null if [ $? == 1 ]; then @@ -107,7 +114,6 @@ elif which dpkg &> /dev/null; then fi rm -f $STATUS > /dev/null - echo 101 $1 $installed # Installing if it's not installed if [ $installed == 0 ]; then # TODO noconfirm @@ -174,10 +180,10 @@ if [ $TERMUX == 1 ]; then inst tsu fi fi -inst moreutils screen ncdu lsof htop proxytunnel pv curl wget sshfs netcat mosh bash-completion rsync +inst moreutils screen ncdu lsof htop proxytunnel pv curl wget sshfs netcat mosh bash-completion rsync pwgen if [ $ARCH == 1 ]; then - inst gopass - altInst tldr-bash-git + inst bash-completion + altInst gopass else inst pass wget -qO ~/.bin/ https://raw.githubusercontent.com/pepa65/tldr-bash-client/master/tldr @@ -228,12 +234,13 @@ if [ $ARCH == 1 ] && [ $ADMIN == 1 ]; then fi else if [ $DEBIAN == 1 || $TERMUX == 1 ]; then - inst python-dev python3-dev + inst python-dev python3-dev cmake fi YCM_ARGS="" if [ $TERMUX != 1 ]; then YCM_ARGS="$YCM_ARGS --clang-completer --tern-completer" fi + python $HOME/.vim/bundle/YouCompleteMe/install.py $YCM_ARGS fi @@ -242,10 +249,26 @@ fi if [ $GUI == 1 ]; then # Desktop manager inst i3 i3lock dunst unclutter xautolock feh numlockx scrot xterm xclip + curl "https://raw.githubusercontent.com/FortAwesome/Font-Awesome/a8386aae19e200ddb0f6845b5feeee5eb7013687/fonts/fontawesome-webfont.ttf" > ~/.local/share/fonts/fontawesome-webfont.ttf if [ $ARCH == 1 ]; then - altInst polybar-git ttf-font-awesome autorandr-git keynav-enhanced + inst xorg-xinit + altInst polybar-git autorandr-git keynav-enhanced pacmixer else - echo "TODO compile polybar-git autorandr-git" + # Compiling polybar + if ! which polybar > /dev/null; then + inst debhelper cmake libxcb-icccm4-dev libxcb-image0-dev libxcb-randr0-dev libx11-dev libxcb1-dev libxcb-util-dev libx11-xcb-dev linux-libc-dev libboost-dev x11proto-core-dev libxcb-ewmh-dev libxft-dev libasound2-dev libiw-dev libmpdclient-dev xcb-proto python-xcbgen libxcb-xkb-dev i3-wm libcairo2-dev libxcb-xrm-dev + # TODO Figure which one are really needed + #inst libasound2 libc6 libgcc1 libiw30 libmpdclient2 libstdc++6 libx11-6 libx11-xcb1 libxcb-ewmh2 libxcb-icccm4 libxcb-randr0 libxcb-xkb1 libxcb1 libxft2 + TMP=$(mktemp -d) + git clone --branch 3.0.5 --recursive https://github.com/jaagr/polybar $TMP + mkdir $TMP/build + cd $TMP/build + cmake .. + make -j`nproc` + strip bin/polybar + mv bin/polybar ~/.bin/ + rm -rf $TMP + fi fi if [ $DEBIAN == 1 ]; then inst suckless-tools keynav @@ -261,10 +284,10 @@ if [ $GUI == 1 ]; then # qutebrowser if [ $DEBIAN == 1 ]; then - inst python3-lxml python-tox python3-pyqt5 python3-pyqt5.qtwebkit python3-pyqt5.qtquick python3-sip python3-jinja2 python3-pygments python3-yaml + inst python3-lxml python-tox python3-pyqt5 python3-pyqt5.qtwebkit python3-pyqt5.qtquick python3-sip python3-jinja2 python3-pygments python3-yaml python3-pyqt5.qtsql libqt5sql5-sqlite python3-pyqt5.qtwebengine python3-pyqt5.qtopengl python3-opengl TMP_DIR=$(mktemp -d) $(cd $TMP_DIR; wget https://qutebrowser.org/python3-pypeg2_2.15.2-1_all.deb) - $(cd $TMP_DIR; wget https://github.com/qutebrowser/qutebrowser/releases/download/v0.9.1/qutebrowser_0.9.1-2_all.deb) + $(cd $TMP_DIR; wget https://github.com/qutebrowser/qutebrowser/releases/download/v0.11.0/qutebrowser_0.11.0-1_all.deb) instFile $TMP_DIR/*.deb rm -rf $TMP_DIR @@ -277,9 +300,9 @@ if [ $GUI == 1 ]; then altInst sct elif [ $TERMUX != 1 ]; then if [ ! -f $HOME/.bin/sct ]; then - TMP=$(mktemp) - wget http://www.tedunangst.com/flak/files/sct.c -O $TMP - cc -std=c99 -O2 -I /usr/X11R6/include -o $HOME/.bin/sct $TMP -L /usr/X11R6/lib -lm -lX11 -lXrandr + TMP=$(mktemp /tmp/XXXXXXXXXX.c) + wget https://gist.githubusercontent.com/ajnirp/208c03d3aa7f02c743d2/raw/55bf3eed25739173d8be57b5179ed5542cf40ed6/sct.c -O $TMP + cc $TMP --std=c99 -lX11 -lXrandr -o $HOME/.bin/sct rm $TMP fi fi @@ -297,20 +320,24 @@ if [ $EXTRA == 1 ]; then inst cmake clang llvm npm # Extra CLI - inst sl ffmpeg youtube-dl optipng syncthing + inst ffmpeg youtube-dl optipng syncthing ccache if [ $ARCH == 1 ]; then inst jq altInst pdftk translate-shell git-lfs js-beautify insect visidata-git + else + # translate-shell + curl -L git.io/trans > ~/.bin/trans + chmod +x ~/.bin/trans fi # Extra GUI if [ $GUI == 1 ]; then - inst vlc gimp mpd vimpc + inst vlc gimp mpd thunar noto-fonts-emoji musescore if [ $ARCH == 1 ]; then inst simplescreenrecorder - altInst pacmixer + altInst pacmixer xcursor-menda-git menda-themes-git menda-maia-icon-theme vimpc-git mpc fi fi diff --git a/scripts/machines b/scripts/machines index 3e6450b..fecc1e8 100755 --- a/scripts/machines +++ b/scripts/machines @@ -67,9 +67,6 @@ function _machines-apiSigned { _machines-api "$@" --certificate=$MACHINES_CONFIG/machines.crt --private-key=$MACHINES_CONFIG/machines.key } -function _machines-getQR { - _machines-apiSigned totp | qrencode -o - | feh - -} # APPLICATION KEYS & CERTIFICATE @@ -142,16 +139,16 @@ function _machines-getAkey { # network } function _machines-updateAkey { - KEY_FILE=$(mktemp) + MYKEY_FILE=$(mktemp) network=$(cat $MACHINES_CONFIG/this | grep '^network=' | cut -d '=' -f 2) - _machines-getAkey $network > $KEY_FILE + _machines-getAkey $network > "$MYKEY_FILE" if [ $? == 0 ]; then - yes | mv $KEY_FILE $MACHINES_HOME/.ssh/authorized_keys &> /dev/null + yes | mv $MYKEY_FILE $MACHINES_HOME/.ssh/authorized_keys &> /dev/null return 0 else - cat $KEY_FILE + cat $MYKEY_FILE echo "[ERROR] Authorized keys are not properly signed" - rm $KEY_FILE + rm $MYKEY_FILE exit 1 fi } @@ -171,12 +168,12 @@ function _machines-addElement { # element elementType default $EDITOR $FILE data=$(_machines-postFile $FILE) rm $FILE &> /dev/null - machines-apiSigned $2 --post-data "name=$1$data" + _machines-apiSigned $2 --post-data "name=$1$data" } function _machines-editElement { # element elementType FILE=$(mktemp) - _machines-apiSigned $2/$1 + _machines-apiSigned $2/$1 > $FILE $EDITOR $FILE data=$(_machines-postFile $FILE) rm $FILE &> /dev/null @@ -238,7 +235,6 @@ function machines_machine_add { # machine machines_machine_add_help exit 1 fi - _machines-addElement $1 machine "allowed[]=\nsecure=false" _machines-addElement $1 machine "host[]=\nnetwork=\nuserkey=\nhostkey=\nuser=" } @@ -435,6 +431,12 @@ function machines_update { _machines-updateAkey } +function machines_totp { + url=$(_machines-apiSigned totp) + echo "URL : $url" + echo "$url" | qrencode -o - | feh - +} + function machines_help { command="$1" @@ -457,6 +459,8 @@ function machines_help { echo " network|net|n Modify networks" echo " update-all Update all machines available via SSH" echo " regen-keys Regenerate system keys" + echo " sign Sign recent transactions for propagation" + echo " totp Get TOTP generating QR code / URL" return 0 } diff --git a/scripts/md2html b/scripts/md2html index d284ada..0e79ee1 100755 --- a/scripts/md2html +++ b/scripts/md2html @@ -37,11 +37,13 @@ if (argv.t) { template = fs.readFileSync(argv.t, "utf8"); } +var latex = true; +// TODO Arg // Settings var extraLangages = { - avrpseudo: function (hljs) { + avrpseudo: function(hljs) { lang = extend({}, highlight.getLanguage('avrasm')); lang.keywords.keyword += ' Si Alors Sinon FinSi TantQue FinTantQue Pour FinPour allant de à ←'; lang.keywords.keyword += ' Lire Sortir sur Appeler Retourner'; @@ -55,7 +57,7 @@ var extraLangages = { }); return lang; }, - avrasmplus: function (hljs) { + avrasmplus: function(hljs) { lang = extend({}, highlight.getLanguage('avrasm')); lang.keywords.keyword += ' si saut alors et ou if then goto && || <-'; lang.contains.push({ @@ -73,8 +75,10 @@ for (lang in extraLangages) { var renderer = new marked.Renderer(); marked.setOptions({ - highlight: function (code, lang) { - if (highlight.getLanguage(lang)) { + highlight: function(code, lang) { + if (lang == 'raw') { + return code; + } else if (highlight.getLanguage(lang)) { return highlight.highlight(lang, code).value; } else { // if (extraLangages[lang]) { @@ -93,17 +97,27 @@ marked.setOptions({ markdownString = fs.readFileSync(argv.i, "utf8"); // TeX -markdownString = markdownString.replace(/\\\$/g, '$') -markdownString = markdownString.replace(/\$\$([\s\S]+)\$\$/gm, function(glob, formula) { - return katex.renderToString(formula, {displayMode: true}); -}); -markdownString = markdownString.replace(/\$([^$]+)\$/g, function(glob, formula) { - return katex.renderToString(formula, {displayMode: false}); -}); +if (latex) { + markdownString = markdownString.replace(/\\\$/g, '$') + markdownString = markdownString.replace(/\$\$([\s\S]+)\$\$/gm, function(glob, formula) { + return katex.renderToString(formula, { + displayMode: true + }); + }); + markdownString = markdownString.replace(/\$([^$]+)\$/g, function(glob, formula) { + return katex.renderToString(formula, { + displayMode: false + }); + }); +} // Conversion -htmlString = marked(markdownString, {renderer: renderer}); -fullHtmlString = template.replace('%BODY%', htmlString); +htmlString = marked(markdownString, { + renderer: renderer +}); +// fullHtmlString = htmlString; +fullHtmlString = template.replace('%BODY%', () => { return htmlString }); + // Saving if (argv.o == '/dev/stdout') { diff --git a/scripts/newestFile b/scripts/newestFile new file mode 100755 index 0000000..508a762 --- /dev/null +++ b/scripts/newestFile @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +find -type f -printf '%T+ %p\n' | sort | tail "$@" diff --git a/scripts/oldestFile b/scripts/oldestFile new file mode 100755 index 0000000..4f90f83 --- /dev/null +++ b/scripts/oldestFile @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +find -type f -printf '%T+ %p\n' | sort | head "$@" diff --git a/scripts/optimize b/scripts/optimize index 13a5737..bbb3543 100755 --- a/scripts/optimize +++ b/scripts/optimize @@ -7,6 +7,7 @@ # (executable) # TODO Run in parallel +# TODO Lots of dupplicated code there dir=${1:-$PWD} total=$(mktemp) @@ -20,7 +21,53 @@ function showtotal { trap showtotal SIGTERM SIGINT SIGFPE +function doReplace { # candidate original + mv "$c" "$o" + saved=$(($os - $cs)) + perc=$((100 * $saved / $os)) + echo "→ $os ⇒ $cs (saved $saved bytes, or ${perc}%)" + newtotal=$(($(cat $total) + $saved)) + echo -n $newtotal > $total +} + +function replace { # candidate original + c="$1" + o="$2" + + # File verifications + if [ ! -f "$o" ]; then + echo "→ Original is inexistant, skipping!" + return + fi + if [ ! -f "$c" ]; then + echo "→ Candidate is inexistant, skipping!" + return + fi + + # Size verifications + cs=$(wc -c "$c" | cut -d' ' -f1) + os=$(wc -c "$o" | cut -d' ' -f1) + if [ $cs -le 0 ]; then + echo "→ Candidate is empty, skipping!" + rm "$c" + return + fi + if [ $cs -eq $os ]; then + echo "→ Candidate weight the same, skipping." + rm "$c" + return + fi + if [ $cs -gt $os ]; then + echo "→ Candidate is larger, skipping." + rm "$c" + return + fi + + doReplace "$c" "$o" +} + function replaceImg { # candidate original + # With bitmap verification c="$1" o="$2" @@ -61,11 +108,7 @@ function replaceImg { # candidate original convert "$o" "$ppmo" if cmp --silent "$ppmo" "$ppmc"; then - mv "$c" "$o" - saved=$(($os - $cs)) - echo "→ $os ⇒ $cs (saved $saved bytes)" - newtotal=$(($(cat $total) + $saved)) - echo -n $newtotal > $total + doReplace "$c" "$o" else echo "→ Candidate don't have the same bit map as original, skipping!" fi @@ -82,22 +125,9 @@ do prog=$(mktemp --suffix .jpg) jpegtran -copy all -progressive "$image" > "$prog" echo "→ Progressive done" - - optz=$(mktemp --suffix .jpg) - jpegtran -copy all -optimize "$image" > "$optz" - echo "→ Optimize done" - progs=$(wc -c "$prog" | cut -d' ' -f1) - optzs=$(wc -c "$optz" | cut -d' ' -f1) - if [[ $progs -le $optzs ]]; then - echo "→ Using progressive" - replaceImg "$prog" "$image" - rm "$optz" - else - echo "→ Using optimized" - replaceImg "$optz" "$image" - rm "$prog" - fi + replace "$prog" "$image" + done <<< "$(find "$dir" -type f -iregex ".+.jpe?g$")" @@ -109,10 +139,10 @@ do temp=$(mktemp --suffix .png) cp "$image" "$temp" - optipng -o7 -quiet "$temp" + optipng -quiet "$temp" echo "→ Optimize done" - replaceImg "$temp" "$image" + replace "$temp" "$image" done <<< "$(find "$dir" -type f -iname "*.png")" diff --git a/scripts/package-lock.json b/scripts/package-lock.json new file mode 100644 index 0000000..de912e1 --- /dev/null +++ b/scripts/package-lock.json @@ -0,0 +1,1043 @@ +{ + "name": "geoffreyfrogeye-dotfiles-scripts", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "optional": true + }, + "asn1": { + "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "optional": true + }, + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "optional": true + }, + "asynckit": { + "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "optional": true + }, + "aws-sign2": { + "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "optional": true + }, + "aws4": { + "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "optional": true + }, + "bcrypt-pbkdf": { + "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + } + }, + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "builtin-modules": { + "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "caseless": { + "version": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "optional": true + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "optional": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + }, + "dependencies": { + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "code-point-at": { + "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "combined-stream": { + "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + }, + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "optional": true, + "requires": { + "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + }, + "concat-stream": { + "version": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", + "optional": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "typedarray": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + } + }, + "core-util-is": { + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "cross-spawn": { + "version": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "requires": { + "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz" + } + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "optional": true, + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + } + }, + "dashdash": { + "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", + "optional": true + }, + "decamelize": { + "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "delayed-stream": { + "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "ecc-jsbn": { + "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + } + }, + "error-ex": { + "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + } + }, + "es6-promise": { + "version": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", + "integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=", + "optional": true + }, + "escape-string-regexp": { + "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "optional": true + }, + "execa": { + "version": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=", + "requires": { + "cross-spawn": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "get-stream": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "npm-run-path": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "p-finally": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "strip-eof": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + } + }, + "extend": { + "version": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "optional": true + }, + "extract-zip": { + "version": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", + "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", + "optional": true, + "requires": { + "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "yauzl": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz" + } + }, + "extsprintf": { + "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" + }, + "fd-slicer": { + "version": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "optional": true, + "requires": { + "pend": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + } + }, + "find-up": { + "version": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + } + }, + "forever-agent": { + "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true + }, + "form-data": { + "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "optional": true, + "requires": { + "asynckit": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" + } + }, + "fs-extra": { + "version": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "optional": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "jsonfile": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "klaw": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" + } + }, + "generate-function": { + "version": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "optional": true + }, + "generate-object-property": { + "version": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "optional": true, + "requires": { + "is-property": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + } + }, + "get-caller-file": { + "version": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stream": { + "version": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "getpass": { + "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "optional": true + }, + "har-validator": { + "version": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "optional": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "is-my-json-valid": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "optional": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "hasha": { + "version": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "optional": true, + "requires": { + "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "hawk": { + "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "optional": true, + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "sntp": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + }, + "highlight.js": { + "version": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.11.0.tgz", + "integrity": "sha1-R/mMc5mRhwDbLK8jDe0SzsQahK4=" + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "hosted-git-info": { + "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=" + }, + "html-pdf": { + "version": "https://registry.npmjs.org/html-pdf/-/html-pdf-2.1.0.tgz", + "integrity": "sha1-w01Rj3+AL/vINL+AJ5z859oszks=", + "requires": { + "phantomjs-prebuilt": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz" + } + }, + "http-signature": { + "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "optional": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "jsprim": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "sshpk": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz" + } + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invert-kv": { + "version": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-builtin-module": { + "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" + } + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "is-my-json-valid": { + "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "optional": true, + "requires": { + "generate-function": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "generate-object-property": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "jsonpointer": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + }, + "is-property": { + "version": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "optional": true + }, + "is-stream": { + "version": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "isexe": { + "version": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isstream": { + "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "jsbn": { + "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "json-stringify-safe": { + "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "jsonfile": { + "version": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "optional": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + }, + "jsonpointer": { + "version": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "optional": true + }, + "jsprim": { + "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "optional": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "json-schema": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "verror": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "katex": { + "version": "https://registry.npmjs.org/katex/-/katex-0.7.1.tgz", + "integrity": "sha1-BrtSmO+tBeHnIoA1uo4VkfMGG48=", + "requires": { + "match-at": "https://registry.npmjs.org/match-at/-/match-at-0.1.0.tgz" + } + }, + "kew": { + "version": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", + "optional": true + }, + "klaw": { + "version": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "optional": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + }, + "lcid": { + "version": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + } + }, + "load-json-file": { + "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "parse-json": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + } + }, + "locate-path": { + "version": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "path-exists": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + } + }, + "lru-cache": { + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "requires": { + "pseudomap": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "yallist": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + } + }, + "marked": { + "version": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=" + }, + "match-at": { + "version": "https://registry.npmjs.org/match-at/-/match-at-0.1.0.tgz", + "integrity": "sha1-9WHncJ/5oQW4XMYsa47nwVvyTzE=" + }, + "mem": { + "version": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz" + } + }, + "mime-db": { + "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + }, + "mime-types": { + "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "requires": { + "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" + } + }, + "mimic-fn": { + "version": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true + }, + "mkdirp": { + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "optional": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + }, + "normalize-package-data": { + "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "requires": { + "hosted-git-info": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "is-builtin-module": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "validate-npm-package-license": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" + } + }, + "npm-run-path": { + "version": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + } + }, + "number-is-nan": { + "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "optional": true + }, + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "os-locale": { + "version": "https://registry.npmjs.org/os-locale/-/os-locale-2.0.0.tgz", + "integrity": "sha1-FZGN7VEFIrge565aMJ1U9jn8OaQ=", + "requires": { + "execa": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "lcid": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "mem": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz" + } + }, + "p-finally": { + "version": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz" + } + }, + "parse-json": { + "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz" + } + }, + "path-exists": { + "version": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-key": { + "version": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-type": { + "version": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + } + }, + "pend": { + "version": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "optional": true + }, + "phantomjs-prebuilt": { + "version": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz", + "integrity": "sha1-1T0xH8+30dCN2yQBRVjxGIxRbaA=", + "optional": true, + "requires": { + "es6-promise": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", + "extract-zip": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", + "fs-extra": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "hasha": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "kew": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "progress": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "request": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "request-progress": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz" + } + }, + "pify": { + "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + } + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "optional": true + }, + "progress": { + "version": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "optional": true + }, + "pseudomap": { + "version": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "optional": true + }, + "qs": { + "version": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "optional": true + }, + "read-pkg": { + "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "path-type": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz" + } + }, + "read-pkg-up": { + "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "read-pkg": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz" + } + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "optional": true, + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + }, + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "optional": true, + "requires": { + "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "aws4": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "caseless": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "form-data": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "har-validator": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "hawk": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "is-typedarray": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "qs": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "uuid": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz" + } + }, + "request-progress": { + "version": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "optional": true, + "requires": { + "throttleit": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz" + } + }, + "require-directory": { + "version": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "set-blocking": { + "version": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "signal-exit": { + "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sntp": { + "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "optional": true, + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "spdx-correct": { + "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" + } + }, + "spdx-expression-parse": { + "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "sshpk": { + "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "optional": true, + "requires": { + "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "bcrypt-pbkdf": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "dashdash": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "ecc-jsbn": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "getpass": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "requires": { + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } + } + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "optional": true + }, + "stringstream": { + "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "optional": true + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "optional": true + }, + "throttleit": { + "version": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "optional": true + }, + "tough-cookie": { + "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "optional": true, + "requires": { + "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + } + }, + "tunnel-agent": { + "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "optional": true + }, + "tweetnacl": { + "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "typedarray": { + "version": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "optional": true + }, + "util-deprecate": { + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "optional": true + }, + "validate-npm-package-license": { + "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "spdx-expression-parse": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" + } + }, + "verror": { + "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "optional": true, + "requires": { + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + } + }, + "which": { + "version": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "requires": { + "isexe": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + } + }, + "which-module": { + "version": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + }, + "dependencies": { + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "xtend": { + "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "optional": true + }, + "y18n": { + "version": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-8.0.1.tgz", + "integrity": "sha1-Qg73XoQMFFeoCtzKm8b6OEneUao=", + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "cliui": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "get-caller-file": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-2.0.0.tgz", + "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "require-directory": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "require-main-filename": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "which-module": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "yargs-parser": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz" + } + }, + "yargs-parser": { + "version": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" + } + }, + "yauzl": { + "version": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "optional": true, + "requires": { + "fd-slicer": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz" + } + } + } +} diff --git a/scripts/sedrename b/scripts/sedrename index 9c0f6b4..42a6f23 100755 --- a/scripts/sedrename +++ b/scripts/sedrename @@ -38,7 +38,7 @@ do if [[ $dry == 0 ]]; then echo "$src" → "$dst" else - mv "$src" "$dst" + mv -- "$src" "$dst" fi done diff --git a/termux/boot/symlink b/termux/boot/symlink index 224ed55..c29f45f 100755 --- a/termux/boot/symlink +++ b/termux/boot/symlink @@ -1,2 +1,4 @@ #!/data/data/com.termux/files/usr/bin/bash +echo "/system/bin/mount -o remount,rw /" | tsu echo "ln -s /data/data/com.termux/files/usr /usr" | tsu +echo "/system/bin/mount -o remount,ro /" | tsu diff --git a/vimpcrc b/vimpcrc new file mode 100644 index 0000000..97f442c --- /dev/null +++ b/vimpcrc @@ -0,0 +1,7 @@ +map FF :browsegg/ +map à :set add nexta:set add end +map @ :set add nexta:set add end:next +map ° D:browseA:shuffle:play:playlist +set songformat {%a - %b: %t}|{%f}$E$R $H[$H%l$H]$H +set libraryformat %n \| {%t}|{%f}$E$R $H[$H%l$H]$H +set ignorecase diff --git a/.xsession b/xsession similarity index 100% rename from .xsession rename to xsession