Initial commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/temp
|
||||
1
apps/gf/.gitignore
vendored
Normal file
1
apps/gf/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
gf/
|
||||
8
apps/gf/install.sh
Normal file
8
apps/gf/install.sh
Normal file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
|
||||
git clone "https://arch.myddns.me/gitea/mirror/gf.git"
|
||||
cd gf
|
||||
echo Building...
|
||||
sh build.sh
|
||||
ln -s -v -f "$(pwd)/gf2" "$HOME/.local/bin/gf2"
|
||||
9
config/.Xresources
Normal file
9
config/.Xresources
Normal file
@ -0,0 +1,9 @@
|
||||
Xft.dpi: 192
|
||||
|
||||
! These might also be useful depending on your monitor and personal preference:
|
||||
Xft.autohint: 0
|
||||
Xft.lcdfilter: lcddefault
|
||||
Xft.hintstyle: hintfull
|
||||
Xft.hinting: 1
|
||||
Xft.antialias: 1
|
||||
Xft.rgba: rgb
|
||||
51
config/.config/fish/config.fish
Normal file
51
config/.config/fish/config.fish
Normal file
@ -0,0 +1,51 @@
|
||||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
end
|
||||
|
||||
set fish_greeting
|
||||
|
||||
fish_add_path "$HOME/.local/bin"
|
||||
set -x EDITOR /usr/bin/vim
|
||||
set -e DEBUGINFOD_URLS # Disable GDB debuginfo
|
||||
|
||||
alias plasma-wid "wmctrl -l | grep 'Desktop @ QRect(0,0 2880x1800) — Plasma' | awk '{print \$1}'"
|
||||
|
||||
alias cd z
|
||||
alias ssh "kitty +kitten ssh"
|
||||
alias ip "ip --color"
|
||||
alias nmcli "nmcli --colors=yes"
|
||||
alias yay "yay --color=always"
|
||||
alias pacman "pacman --color=always"
|
||||
alias icat "kitty +kitten icat"
|
||||
alias xclip "xclip -selection clipboard"
|
||||
|
||||
alias emacs "emacs -nw"
|
||||
|
||||
alias fullmpv "mpv --no-border --geometry=2880x1800"
|
||||
alias wallmpv "xwinwrap -ov -fs -b -nf -- mpv -wid WID --no-border --geometry=2880x1800 --no-input-default-bindings --no-input-cursor"
|
||||
alias fwallmpv "xwinwrap -g 2880x1800 -o 0.2 -a -un -s -ni -nf -- mpv -wid WID"
|
||||
alias ytwallmpv "wallmpv --ytdl-format=18"
|
||||
alias ytfwallmpv "fwallmpv --ytdl-format=18"
|
||||
|
||||
alias hentaiwall "hentaiwall ()"
|
||||
|
||||
|
||||
# High DPI
|
||||
# Use .Xresources instead
|
||||
# set -x QT_AUTO_SCREEN_SCALE_FACTOR 1
|
||||
# set -x QT_ENABLE_HIGHDPI_SCALING 1
|
||||
# set -x GDK_SCALE 2
|
||||
# set -x GDK_DPI_SCALE 0.5
|
||||
|
||||
# Fixes some QT programs with High DPI
|
||||
set -x QT_ENABLE_HIGHDPI_SCALING 0
|
||||
|
||||
|
||||
|
||||
# BEGIN opam configuration
|
||||
# This is useful if you're using opam as it adds:
|
||||
# - the correct directories to the PATH
|
||||
# - auto-completion for the opam binary
|
||||
# This section can be safely removed at any time if needed.
|
||||
test -r '/home/tomas/.opam/opam-init/init.fish' && source '/home/tomas/.opam/opam-init/init.fish' > /dev/null 2> /dev/null; or true
|
||||
# END opam configuration
|
||||
211
config/.config/i3/config
Normal file
211
config/.config/i3/config
Normal file
@ -0,0 +1,211 @@
|
||||
exec feh --bg-fill /home/tomas/Pictures/default-wallpaper.*
|
||||
exec picom -bfc
|
||||
|
||||
|
||||
|
||||
default_border none
|
||||
gaps inner 10
|
||||
smart_gaps on
|
||||
|
||||
|
||||
|
||||
# This file has been auto-generated by i3-config-wizard(1).
|
||||
# It will not be overwritten, so edit it as you like.
|
||||
#
|
||||
# Should you change your keyboard layout some time, delete
|
||||
# this file and re-run i3-config-wizard(1).
|
||||
#
|
||||
|
||||
# i3 config file (v4)
|
||||
#
|
||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
set $mod Mod4
|
||||
|
||||
bindsym $mod+F1 exec setxkbmap se
|
||||
bindsym $mod+F2 exec setxkbmap lt
|
||||
bindsym $mod+F3 exec setxkbmap -layout ru -variant phonetic_winkeys
|
||||
bindsym $mod+Shift+s exec flameshot gui
|
||||
bindsym $mod+Shift+x exec flameshot full -c
|
||||
|
||||
# Font for window titles. Will also be used by the bar unless a different font
|
||||
# is used in the bar {} block below.
|
||||
font pango:monospace 8
|
||||
|
||||
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
||||
#font pango:DejaVu Sans Mono 8
|
||||
|
||||
# Start XDG autostart .desktop files using dex. See also
|
||||
# https://wiki.archlinux.org/index.php/XDG_Autostart
|
||||
exec --no-startup-id dex --autostart --environment i3
|
||||
|
||||
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
|
||||
# they are included here as an example. Modify as you see fit.
|
||||
|
||||
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
|
||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
|
||||
|
||||
# NetworkManager is the most popular way to manage wireless networks on Linux,
|
||||
# and nm-applet is a desktop environment-independent system tray GUI for it.
|
||||
exec --no-startup-id nm-applet
|
||||
|
||||
# Use pactl to adjust volume in PulseAudio.
|
||||
set $refresh_i3status killall -SIGUSR1 i3status
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
||||
bindsym XF86MonBrightnessUp exec brightnessctl s +10%
|
||||
bindsym XF86MonBrightnessDown exec brightnessctl s 10%-
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# move tiling windows via drag & drop by left-clicking into the title bar,
|
||||
# or left-clicking anywhere into the window while holding the floating modifier.
|
||||
tiling_drag modifier titlebar
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec kitty
|
||||
# bindsym $mod+Return exec i3-sensible-terminal
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# start dmenu (a program launcher)
|
||||
bindsym $mod+d exec --no-startup-id dmenu_run
|
||||
# A more modern dmenu replacement is rofi:
|
||||
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
|
||||
# There also is i3-dmenu-desktop which only displays applications shipping a
|
||||
# .desktop file. It is a wrapper around dmenu, so you need that installed.
|
||||
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
|
||||
|
||||
# change focus
|
||||
bindsym $mod+j focus left
|
||||
bindsym $mod+k focus down
|
||||
bindsym $mod+l focus up
|
||||
bindsym $mod+semicolon focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+j move left
|
||||
bindsym $mod+Shift+k move down
|
||||
bindsym $mod+Shift+l move up
|
||||
bindsym $mod+Shift+semicolon move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal orientation
|
||||
bindsym $mod+h split h
|
||||
|
||||
# split in vertical orientation
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace number $ws1
|
||||
bindsym $mod+2 workspace number $ws2
|
||||
bindsym $mod+3 workspace number $ws3
|
||||
bindsym $mod+4 workspace number $ws4
|
||||
bindsym $mod+5 workspace number $ws5
|
||||
bindsym $mod+6 workspace number $ws6
|
||||
bindsym $mod+7 workspace number $ws7
|
||||
bindsym $mod+8 workspace number $ws8
|
||||
bindsym $mod+9 workspace number $ws9
|
||||
bindsym $mod+0 workspace number $ws10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace number $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace number $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace number $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace number $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace number $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace number $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace number $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace number $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace number $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace number $ws10
|
||||
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
# exit i3 (logs you out of your X session)
|
||||
# bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
||||
bindsym $mod+Shift+e exec i3-msg exit
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym j resize shrink width 10 px or 10 ppt
|
||||
bindsym k resize grow height 10 px or 10 ppt
|
||||
bindsym l resize shrink height 10 px or 10 ppt
|
||||
bindsym semicolon resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape or $mod+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
||||
# finds out, if available)
|
||||
bar {
|
||||
status_command i3status
|
||||
}
|
||||
7
config/.config/kitty/kitty.conf
Normal file
7
config/.config/kitty/kitty.conf
Normal file
@ -0,0 +1,7 @@
|
||||
hide_window_decorations yes
|
||||
background_opacity 0.8
|
||||
|
||||
enable_audio_bell no
|
||||
|
||||
# DPi fixed in fish
|
||||
# font_size 24
|
||||
2
config/.config/ranger/rc.conf
Normal file
2
config/.config/ranger/rc.conf
Normal file
@ -0,0 +1,2 @@
|
||||
set preview_images true
|
||||
set preview_images_method kitty
|
||||
350
config/.config/ranger/scope.sh
Executable file
350
config/.config/ranger/scope.sh
Executable file
@ -0,0 +1,350 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o noclobber -o noglob -o nounset -o pipefail
|
||||
IFS=$'\n'
|
||||
|
||||
## If the option `use_preview_script` is set to `true`,
|
||||
## then this script will be called and its output will be displayed in ranger.
|
||||
## ANSI color codes are supported.
|
||||
## STDIN is disabled, so interactive scripts won't work properly
|
||||
|
||||
## This script is considered a configuration file and must be updated manually.
|
||||
## It will be left untouched if you upgrade ranger.
|
||||
|
||||
## Because of some automated testing we do on the script #'s for comments need
|
||||
## to be doubled up. Code that is commented out, because it's an alternative for
|
||||
## example, gets only one #.
|
||||
|
||||
## Meanings of exit codes:
|
||||
## code | meaning | action of ranger
|
||||
## -----+------------+-------------------------------------------
|
||||
## 0 | success | Display stdout as preview
|
||||
## 1 | no preview | Display no preview at all
|
||||
## 2 | plain text | Display the plain content of the file
|
||||
## 3 | fix width | Don't reload when width changes
|
||||
## 4 | fix height | Don't reload when height changes
|
||||
## 5 | fix both | Don't ever reload
|
||||
## 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
|
||||
## 7 | image | Display the file directly as an image
|
||||
|
||||
## Script arguments
|
||||
FILE_PATH="${1}" # Full path of the highlighted file
|
||||
PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters)
|
||||
## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused
|
||||
PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters)
|
||||
IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview
|
||||
PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise.
|
||||
|
||||
FILE_EXTENSION="${FILE_PATH##*.}"
|
||||
FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
|
||||
|
||||
## Settings
|
||||
HIGHLIGHT_SIZE_MAX=262143 # 256KiB
|
||||
HIGHLIGHT_TABWIDTH=${HIGHLIGHT_TABWIDTH:-8}
|
||||
HIGHLIGHT_STYLE=${HIGHLIGHT_STYLE:-pablo}
|
||||
HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}"
|
||||
PYGMENTIZE_STYLE=${PYGMENTIZE_STYLE:-autumn}
|
||||
OPENSCAD_IMGSIZE=${RNGR_OPENSCAD_IMGSIZE:-1000,1000}
|
||||
OPENSCAD_COLORSCHEME=${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}
|
||||
|
||||
handle_extension() {
|
||||
case "${FILE_EXTENSION_LOWER}" in
|
||||
## Archive
|
||||
a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
|
||||
rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
|
||||
atool --list -- "${FILE_PATH}" && exit 5
|
||||
bsdtar --list --file "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
rar)
|
||||
## Avoid password prompt by providing empty password
|
||||
unrar lt -p- -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
7z)
|
||||
## Avoid password prompt by providing empty password
|
||||
7z l -p -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## PDF
|
||||
pdf)
|
||||
## Preview as text conversion
|
||||
pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \
|
||||
fmt -w "${PV_WIDTH}" && exit 5
|
||||
mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \
|
||||
fmt -w "${PV_WIDTH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## BitTorrent
|
||||
torrent)
|
||||
transmission-show -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## OpenDocument
|
||||
odt|ods|odp|sxw)
|
||||
## Preview as text conversion
|
||||
odt2txt "${FILE_PATH}" && exit 5
|
||||
## Preview as markdown conversion
|
||||
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## XLSX
|
||||
xlsx)
|
||||
## Preview as csv conversion
|
||||
## Uses: https://github.com/dilshod/xlsx2csv
|
||||
xlsx2csv -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## HTML
|
||||
htm|html|xhtml)
|
||||
## Preview as text conversion
|
||||
w3m -dump "${FILE_PATH}" && exit 5
|
||||
lynx -dump -- "${FILE_PATH}" && exit 5
|
||||
elinks -dump "${FILE_PATH}" && exit 5
|
||||
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||
;;
|
||||
|
||||
## JSON
|
||||
json)
|
||||
jq --color-output . "${FILE_PATH}" && exit 5
|
||||
python -m json.tool -- "${FILE_PATH}" && exit 5
|
||||
;;
|
||||
|
||||
## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
|
||||
## by file(1).
|
||||
dff|dsf|wv|wvc)
|
||||
mediainfo "${FILE_PATH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
;; # Continue with next handler on failure
|
||||
esac
|
||||
}
|
||||
|
||||
handle_image() {
|
||||
## Size of the preview if there are multiple options or it has to be
|
||||
## rendered from vector graphics. If the conversion program allows
|
||||
## specifying only one dimension while keeping the aspect ratio, the width
|
||||
## will be used.
|
||||
local DEFAULT_SIZE="1920x1080"
|
||||
|
||||
local mimetype="${1}"
|
||||
case "${mimetype}" in
|
||||
## SVG
|
||||
# image/svg+xml|image/svg)
|
||||
# convert -- "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# exit 1;;
|
||||
|
||||
## DjVu
|
||||
# image/vnd.djvu)
|
||||
# ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \
|
||||
# - "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \
|
||||
# && exit 6 || exit 1;;
|
||||
|
||||
## Image
|
||||
image/*)
|
||||
local orientation
|
||||
orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
|
||||
## If orientation data is present and the image actually
|
||||
## needs rotating ("1" means no rotation)...
|
||||
if [[ -n "$orientation" && "$orientation" != 1 ]]; then
|
||||
## ...auto-rotate the image according to the EXIF data.
|
||||
convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
|
||||
fi
|
||||
|
||||
## `w3mimgdisplay` will be called for all images (unless overriden
|
||||
## as above), but might fail for unsupported types.
|
||||
exit 7;;
|
||||
|
||||
## Video
|
||||
video/*)
|
||||
# Thumbnail
|
||||
ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
|
||||
exit 1;;
|
||||
|
||||
## PDF
|
||||
# application/pdf)
|
||||
# pdftoppm -f 1 -l 1 \
|
||||
# -scale-to-x "${DEFAULT_SIZE%x*}" \
|
||||
# -scale-to-y -1 \
|
||||
# -singlefile \
|
||||
# -jpeg -tiffcompression jpeg \
|
||||
# -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
|
||||
# && exit 6 || exit 1;;
|
||||
|
||||
|
||||
## ePub, MOBI, FB2 (using Calibre)
|
||||
# application/epub+zip|application/x-mobipocket-ebook|\
|
||||
# application/x-fictionbook+xml)
|
||||
# # ePub (using https://github.com/marianosimone/epub-thumbnailer)
|
||||
# epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \
|
||||
# "${DEFAULT_SIZE%x*}" && exit 6
|
||||
# ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \
|
||||
# >/dev/null && exit 6
|
||||
# exit 1;;
|
||||
|
||||
## Font
|
||||
application/font*|application/*opentype)
|
||||
preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png"
|
||||
if fontimage -o "${preview_png}" \
|
||||
--pixelsize "120" \
|
||||
--fontname \
|
||||
--pixelsize "80" \
|
||||
--text " ABCDEFGHIJKLMNOPQRSTUVWXYZ " \
|
||||
--text " abcdefghijklmnopqrstuvwxyz " \
|
||||
--text " 0123456789.:,;(*!?') ff fl fi ffi ffl " \
|
||||
--text " The quick brown fox jumps over the lazy dog. " \
|
||||
"${FILE_PATH}";
|
||||
then
|
||||
convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \
|
||||
&& rm "${preview_png}" \
|
||||
&& exit 6
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
## Preview archives using the first image inside.
|
||||
## (Very useful for comic book collections for example.)
|
||||
# application/zip|application/x-rar|application/x-7z-compressed|\
|
||||
# application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar)
|
||||
# local fn=""; local fe=""
|
||||
# local zip=""; local rar=""; local tar=""; local bsd=""
|
||||
# case "${mimetype}" in
|
||||
# application/zip) zip=1 ;;
|
||||
# application/x-rar) rar=1 ;;
|
||||
# application/x-7z-compressed) ;;
|
||||
# *) tar=1 ;;
|
||||
# esac
|
||||
# { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
|
||||
# { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \
|
||||
# { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
|
||||
# { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
|
||||
#
|
||||
# fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \
|
||||
# [ print(l, end='') for l in sys.stdin if \
|
||||
# (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
|
||||
# sort -V | head -n 1)
|
||||
# [ "$fn" = "" ] && return
|
||||
# [ "$bsd" ] && fn=$(printf '%b' "$fn")
|
||||
#
|
||||
# [ "$tar" ] && tar --extract --to-stdout \
|
||||
# --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g')
|
||||
# [ "$bsd" ] && bsdtar --extract --to-stdout \
|
||||
# --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}"
|
||||
# [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \
|
||||
# "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \
|
||||
# "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}"
|
||||
# ;;
|
||||
esac
|
||||
|
||||
# openscad_image() {
|
||||
# TMPPNG="$(mktemp -t XXXXXX.png)"
|
||||
# openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \
|
||||
# --imgsize="${OPENSCAD_IMGSIZE/x/,}" \
|
||||
# -o "${TMPPNG}" "${1}"
|
||||
# mv "${TMPPNG}" "${IMAGE_CACHE_PATH}"
|
||||
# }
|
||||
|
||||
# case "${FILE_EXTENSION_LOWER}" in
|
||||
# ## 3D models
|
||||
# ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
|
||||
# ## is hardcoded as jpeg. So we make a tempfile.png and just
|
||||
# ## move/rename it to jpg. This works because image libraries are
|
||||
# ## smart enough to handle it.
|
||||
# csg|scad)
|
||||
# openscad_image "${FILE_PATH}" && exit 6
|
||||
# ;;
|
||||
# 3mf|amf|dxf|off|stl)
|
||||
# openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
|
||||
# ;;
|
||||
# esac
|
||||
}
|
||||
|
||||
handle_mime() {
|
||||
local mimetype="${1}"
|
||||
case "${mimetype}" in
|
||||
## RTF and DOC
|
||||
text/rtf|*msword)
|
||||
## Preview as text conversion
|
||||
## note: catdoc does not always work for .doc files
|
||||
## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/
|
||||
catdoc -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## DOCX, ePub, FB2 (using markdown)
|
||||
## You might want to remove "|epub" and/or "|fb2" below if you have
|
||||
## uncommented other methods to preview those formats
|
||||
*wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml)
|
||||
## Preview as markdown conversion
|
||||
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## XLS
|
||||
*ms-excel)
|
||||
## Preview as csv conversion
|
||||
## xls2csv comes with catdoc:
|
||||
## http://www.wagner.pp.ru/~vitus/software/catdoc/
|
||||
xls2csv -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## Text
|
||||
text/* | */xml)
|
||||
## Syntax highlight
|
||||
if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
|
||||
exit 2
|
||||
fi
|
||||
if [[ "$( tput colors )" -ge 256 ]]; then
|
||||
local pygmentize_format='terminal256'
|
||||
local highlight_format='xterm256'
|
||||
else
|
||||
local pygmentize_format='terminal'
|
||||
local highlight_format='ansi'
|
||||
fi
|
||||
env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \
|
||||
--out-format="${highlight_format}" \
|
||||
--force -- "${FILE_PATH}" && exit 5
|
||||
env COLORTERM=8bit bat --color=always --style="plain" \
|
||||
-- "${FILE_PATH}" && exit 5
|
||||
pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\
|
||||
-- "${FILE_PATH}" && exit 5
|
||||
exit 2;;
|
||||
|
||||
## DjVu
|
||||
image/vnd.djvu)
|
||||
## Preview as text conversion (requires djvulibre)
|
||||
djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## Image
|
||||
image/*)
|
||||
## Preview as text conversion
|
||||
# img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## Video and audio
|
||||
video/* | audio/*)
|
||||
mediainfo "${FILE_PATH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
esac
|
||||
}
|
||||
|
||||
handle_fallback() {
|
||||
echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
|
||||
if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
|
||||
handle_image "${MIMETYPE}"
|
||||
fi
|
||||
handle_extension
|
||||
handle_mime "${MIMETYPE}"
|
||||
handle_fallback
|
||||
|
||||
exit 1
|
||||
12
config/.gitconfig
Normal file
12
config/.gitconfig
Normal file
@ -0,0 +1,12 @@
|
||||
[core]
|
||||
editor = vim
|
||||
|
||||
[user]
|
||||
email = tomas@lesbian.ddns.net
|
||||
name = Tomas
|
||||
[safe]
|
||||
directory = /opt/flutter
|
||||
[credential]
|
||||
helper = store
|
||||
[init]
|
||||
defaultBranch = master
|
||||
2
config/.sqliterc
Normal file
2
config/.sqliterc
Normal file
@ -0,0 +1,2 @@
|
||||
.headers on
|
||||
.mode column
|
||||
2863
config/.vim/autoload/plug.vim
Normal file
2863
config/.vim/autoload/plug.vim
Normal file
File diff suppressed because it is too large
Load Diff
2812
config/.vim/autoload/plug.vim.old
Normal file
2812
config/.vim/autoload/plug.vim.old
Normal file
File diff suppressed because it is too large
Load Diff
85
config/.vimrc
Normal file
85
config/.vimrc
Normal file
@ -0,0 +1,85 @@
|
||||
if &shell =~# 'fish$'
|
||||
set shell=sh
|
||||
endif
|
||||
|
||||
call plug#begin()
|
||||
|
||||
" Colorschemes
|
||||
Plug 'mcchrish/zenbones.nvim'
|
||||
|
||||
" Highlight
|
||||
Plug 'prabirshrestha/vim-lsp'
|
||||
Plug 'mattn/vim-lsp-settings'
|
||||
Plug 'jbgutierrez/vim-better-comments'
|
||||
Plug 'arrufat/vala.vim'
|
||||
Plug 'tikhomirov/vim-glsl'
|
||||
Plug 'elzr/vim-json'
|
||||
Plug 'moll/vim-node'
|
||||
Plug 'Shirk/vim-gas'
|
||||
Plug 'leafo/moonscript-vim'
|
||||
Plug 'tbastos/vim-lua'
|
||||
Plug 'lluchs/vim-wren'
|
||||
Plug 'kchmck/vim-coffee-script'
|
||||
Plug 'khaveesh/vim-fish-syntax'
|
||||
Plug 'vim-scripts/syntaxm4.vim'
|
||||
Plug 'posva/vim-vue'
|
||||
Plug 'digitaltoad/vim-pug'
|
||||
Plug 'ollykel/v-vim'
|
||||
Plug 'petRUShka/vim-sage'
|
||||
Plug 'ap/vim-css-color'
|
||||
Plug 'HiPhish/jinja.vim'
|
||||
|
||||
Plug 'ntpeters/vim-better-whitespace'
|
||||
Plug 'Yggdroot/indentLine'
|
||||
|
||||
" Code management
|
||||
Plug 'tpope/vim-fugitive'
|
||||
Plug 'preservim/nerdtree'
|
||||
Plug 'ycm-core/YouCompleteMe' " Does not seem to be working...
|
||||
" Plug 'vim-scripts/vim-javacomplete2'
|
||||
" Plug 'SirVer/ultisnips'
|
||||
" Plug 'honza/vim-snippets'
|
||||
|
||||
" Configuration
|
||||
Plug 'editorconfig/editorconfig-vim'
|
||||
set encoding=utf-8
|
||||
set belloff=all
|
||||
set number
|
||||
set relativenumber
|
||||
set tabstop=4
|
||||
set shiftwidth=4
|
||||
set clipboard=unnamedplus,unnamed
|
||||
" better-whitespace
|
||||
let g:better_whitespace_enabled=1
|
||||
" indent-guides
|
||||
let g:indentLine_char = '|'
|
||||
set list lcs=tab:\|\ \
|
||||
" ultisnips
|
||||
let g:UltiSnipsExpandTrigger="<c-x>"
|
||||
let g:UltiSnipsJumpForwardTrigger="<c-b>"
|
||||
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
|
||||
|
||||
" nerdtree
|
||||
autocmd VimEnter * NERDTree | wincmd p
|
||||
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
|
||||
|
||||
" Disable function highlighting (affects both C and C++ files)
|
||||
let g:lsp_settings = {
|
||||
\ 'clangd': {'cmd': ['clangd']},
|
||||
\ 'efm-langserver': {'disabled': v:false}
|
||||
\}
|
||||
|
||||
" Tools
|
||||
Plug 'stevearc/vim-arduino'
|
||||
|
||||
call plug#end()
|
||||
|
||||
" set termguicolors
|
||||
set background=dark
|
||||
" colorscheme zenbones
|
||||
|
||||
" Open php files with php syntax (duh...)
|
||||
augroup twig_ft
|
||||
au!
|
||||
autocmd BufNewFile,BufRead *.php set syntax=php
|
||||
augroup END
|
||||
152
packages.txt
Normal file
152
packages.txt
Normal file
@ -0,0 +1,152 @@
|
||||
###### Devel
|
||||
sed
|
||||
awk
|
||||
m4
|
||||
pv
|
||||
git
|
||||
tea
|
||||
doxygen
|
||||
jq
|
||||
yq
|
||||
gdb
|
||||
|
||||
mcutool
|
||||
|
||||
# Languages
|
||||
nasm
|
||||
|
||||
gcc
|
||||
clang
|
||||
|
||||
dlang
|
||||
|
||||
ghc
|
||||
|
||||
ruby
|
||||
rubygems
|
||||
crystal
|
||||
|
||||
python
|
||||
python-pip
|
||||
julia
|
||||
sage
|
||||
sage-doc
|
||||
|
||||
lua
|
||||
luarocks
|
||||
|
||||
node
|
||||
npm
|
||||
|
||||
dotnet-sdk
|
||||
mono
|
||||
|
||||
duktape
|
||||
squirrel
|
||||
wren
|
||||
|
||||
sqlite
|
||||
|
||||
# Build Systems
|
||||
make
|
||||
autoconf
|
||||
automake
|
||||
meson
|
||||
cmake
|
||||
|
||||
# Libraries
|
||||
raylib
|
||||
stb
|
||||
sfml
|
||||
csfml
|
||||
glfw3
|
||||
glew
|
||||
fltk
|
||||
zlib
|
||||
sdl2
|
||||
sdl2_gfx
|
||||
sdl2_image
|
||||
sdl2_mixer
|
||||
sdl2_net
|
||||
sdl2_ttf
|
||||
portaudio
|
||||
|
||||
# Tools
|
||||
ctags
|
||||
|
||||
###### Shell
|
||||
xclip
|
||||
tmux
|
||||
screen
|
||||
fish
|
||||
zoxide
|
||||
kitty
|
||||
|
||||
flameshot
|
||||
tumbler
|
||||
ffmpegthumbnailer
|
||||
|
||||
###### Apps
|
||||
# Utility
|
||||
man
|
||||
gvim
|
||||
ranger
|
||||
python-numpy
|
||||
python-sympy
|
||||
python-pandas
|
||||
python-pillow
|
||||
python-matplotlib
|
||||
pandoc-cli
|
||||
calc
|
||||
ssh
|
||||
sshfs
|
||||
#sc-im
|
||||
|
||||
# Media
|
||||
mpv
|
||||
feh
|
||||
ffmpeg
|
||||
imagemagick
|
||||
|
||||
# Compression
|
||||
p7zip
|
||||
unzip
|
||||
zip
|
||||
|
||||
# Download
|
||||
wget
|
||||
curl
|
||||
aria2
|
||||
yt-dlp
|
||||
|
||||
# Network
|
||||
bind
|
||||
gnu-netcat
|
||||
|
||||
# Fonts
|
||||
noto-fonts
|
||||
noto-fonts-emoji
|
||||
noto-fonts-extra
|
||||
noto-fonts-cjk
|
||||
|
||||
# File Systems
|
||||
ntfs-3g
|
||||
dosfstools
|
||||
|
||||
# Other
|
||||
htop
|
||||
btop
|
||||
tree
|
||||
cowsay
|
||||
cmatrix
|
||||
termdown
|
||||
sl
|
||||
bat
|
||||
neofetch
|
||||
texlive
|
||||
shantz-xwinwrap-bzr
|
||||
|
||||
# Games
|
||||
crawl-ncurses
|
||||
dwarffortress
|
||||
tty-solitaire
|
||||
14
scripts/gget
Executable file
14
scripts/gget
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/fish
|
||||
|
||||
|
||||
for url in $argv
|
||||
set doc (curl -s "$url")
|
||||
|
||||
set filename (echo $doc | hq meta[itemprop=name] attr content)
|
||||
set fileid (echo $doc | hq meta[itemprop=url] attr content | cut -c 33- | grep -o '^[^/]*')
|
||||
set fileurl "https://drive.google.com/uc?export=download&confirm=yes&id=$fileid"
|
||||
|
||||
echo $fileurl
|
||||
|
||||
wget "$fileurl" -O "$filename"
|
||||
end
|
||||
16
scripts/mkedconf
Executable file
16
scripts/mkedconf
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
cat > .editorconfig << EOF
|
||||
# Top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Use same style for all files
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
EOF
|
||||
|
||||
vim + .editorconfig
|
||||
56
scripts/mktest
Executable file
56
scripts/mktest
Executable file
@ -0,0 +1,56 @@
|
||||
#!/bin/sh
|
||||
|
||||
cat > test << EOF
|
||||
#!/bin/sh
|
||||
|
||||
##########################################
|
||||
############# Initial setup ##############
|
||||
##########################################
|
||||
|
||||
set -e
|
||||
thinline(){
|
||||
for n in \`seq 1 \$(tput cols)\`; do
|
||||
printf '-'
|
||||
done
|
||||
echo
|
||||
}
|
||||
line(){
|
||||
for n in \`seq 1 \$(tput cols)\`; do
|
||||
printf '='
|
||||
done
|
||||
echo
|
||||
}
|
||||
linetitle(){
|
||||
str=\$*
|
||||
strlen=\`wc -c <<< \$str\`
|
||||
printf "======== %s " "\$str"
|
||||
for n in \`seq 1 \$(expr \$(tput cols) - "\$strlen" - 9)\`; do
|
||||
printf '='
|
||||
done
|
||||
echo
|
||||
}
|
||||
unittest(){
|
||||
set +e
|
||||
"./\$1" > "\$1.log" 2>&1
|
||||
set -e
|
||||
if [ \$? -ne 0 ]; then
|
||||
printf "%-20s \x1B[31mFAILED\x1B[0m\n" "\$1"
|
||||
else
|
||||
printf "%-20s \x1B[32mPASSED\x1B[0m\n" "\$1"
|
||||
fi
|
||||
}
|
||||
pause(){
|
||||
read -n1 -r -p "Press any key to continue..."
|
||||
}
|
||||
clear
|
||||
|
||||
|
||||
|
||||
##########################################
|
||||
############## Test code #################
|
||||
##########################################
|
||||
|
||||
EOF
|
||||
|
||||
chmod +x test
|
||||
vim + test
|
||||
10
scripts/xvim
Executable file
10
scripts/xvim
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
touch "$1"
|
||||
chmod +x "$1"
|
||||
vim "$1"
|
||||
else
|
||||
echo "No file specified"
|
||||
exit
|
||||
fi
|
||||
123
setup
Executable file
123
setup
Executable file
@ -0,0 +1,123 @@
|
||||
#!/bin/sh
|
||||
|
||||
declare -a script_deps=(
|
||||
"sed"
|
||||
"git"
|
||||
"sudo"
|
||||
"find"
|
||||
"makepkg"
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
################################################################
|
||||
################################################################
|
||||
################################################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
set -e
|
||||
|
||||
exists(){
|
||||
if type "$@" &>/dev/null; then
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
fi
|
||||
}
|
||||
|
||||
for dep in "${script_deps[@]}"; do
|
||||
if ! exists $dep; then
|
||||
echo "'$dep' not found on the system"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
|
||||
if ! exists "yay"; then
|
||||
echo Installing yay...
|
||||
mkdir -p temp
|
||||
cd temp
|
||||
rm -rf yay
|
||||
git clone 'https://aur.archlinux.org/yay.git'
|
||||
cd yay
|
||||
sudo pacman -Sy fakeroot base-devel --noconfirm
|
||||
makepkg -si --noconfirm
|
||||
cd ..
|
||||
rm -rf yay
|
||||
cd ..
|
||||
fi
|
||||
|
||||
|
||||
|
||||
echo Installing packages...
|
||||
yay -Sy --noconfirm `sed 's/^#.*$//' < packages.txt`
|
||||
|
||||
|
||||
|
||||
echo Linking configs...
|
||||
cd config
|
||||
pwd=`pwd`
|
||||
for dir in `find . -type d | sed 's/^\.\///'`; do
|
||||
mkdir -p -v "$HOME/$dir"
|
||||
done
|
||||
for file in `find . -type f | sed 's/^\.\///'`; do
|
||||
#if [ ! -f "$HOME/$file" ]; then
|
||||
ln -s -v -f "$pwd/$file" "$HOME/$file"
|
||||
#fi
|
||||
done
|
||||
cd ..
|
||||
|
||||
|
||||
|
||||
echo Linking scripts...
|
||||
cd scripts
|
||||
pwd=`pwd`
|
||||
mkdir -p -v "$HOME/.local/bin"
|
||||
for script in *; do
|
||||
#if [ ! -f "$HOME/.local/bin/$script" ]; then
|
||||
ln -s -v -f "$pwd/$script" "$HOME/.local/bin/$script"
|
||||
#fi
|
||||
done
|
||||
cd ..
|
||||
|
||||
|
||||
|
||||
echo Installing apps...
|
||||
pwd=`pwd`
|
||||
for app in apps/*; do
|
||||
cd "$app"
|
||||
basename "$app"
|
||||
sh install.sh
|
||||
cd "$pwd"
|
||||
done
|
||||
|
||||
|
||||
|
||||
# Zoxide
|
||||
mkdir -p "$HOME/.config/fish/conf.d"
|
||||
zoxide init fish > "$HOME/.config/fish/conf.d/zoxide.fish"
|
||||
|
||||
# NodeMCU-Tool
|
||||
sudo npm install -g nodemcu-tool
|
||||
|
||||
# Configuring git
|
||||
git config --global core.editor vim
|
||||
git config --global user.name Tomas
|
||||
git config --global user.email tomas@lesbian.ddns.net
|
||||
git config --global credential.helper store
|
||||
git config --global init.defaultBranch master
|
||||
|
||||
# Configure tea
|
||||
tea autocomplete fish
|
||||
tea completion fish > ~/.config/fish/completions/tea.fish
|
||||
|
||||
# Changing shell
|
||||
chsh -s /bin/fish
|
||||
Reference in New Issue
Block a user