summaryrefslogtreecommitdiff
path: root/home/xyz
diff options
context:
space:
mode:
Diffstat (limited to 'home/xyz')
-rw-r--r--home/xyz/.Xresources11
-rw-r--r--home/xyz/.config/Mullvad VPN/gui_settings.json1
-rw-r--r--home/xyz/.config/alacritty/alacritty.yml66
-rw-r--r--home/xyz/.config/aria2/aria2.conf4
-rw-r--r--home/xyz/.config/dunst/dunstrc432
-rw-r--r--home/xyz/.config/fontconfig/fonts.conf44
-rw-r--r--home/xyz/.config/git/ignore5
-rw-r--r--home/xyz/.config/mimeapps.list16
-rw-r--r--home/xyz/.config/mpv/mpv.conf145
l---------home/xyz/.config/mpv/scripts/sponsorblock-minimal.lua1
-rw-r--r--home/xyz/.config/myconf/gallery_urls5
-rw-r--r--home/xyz/.config/myconf/surfingkeys_config.js122
-rw-r--r--home/xyz/.config/newsboat/config27
-rw-r--r--home/xyz/.config/newsboat/urls26
-rwxr-xr-xhome/xyz/.config/nsxiv/exec/key-handler65
-rw-r--r--home/xyz/.config/sdcv_ordering9
-rw-r--r--home/xyz/.config/yt-dlp/config11
-rw-r--r--home/xyz/.config/zathura/zathurarc2
-rwxr-xr-xhome/xyz/.local/bin/alacritty4
-rwxr-xr-xhome/xyz/.local/bin/alarm9
-rwxr-xr-xhome/xyz/.local/bin/bell7
-rwxr-xr-xhome/xyz/.local/bin/ccgsl7
-rwxr-xr-xhome/xyz/.local/bin/convwall34
-rwxr-xr-xhome/xyz/.local/bin/curlkg52
-rwxr-xr-xhome/xyz/.local/bin/curlncm75
-rwxr-xr-xhome/xyz/.local/bin/curlqb13
-rwxr-xr-xhome/xyz/.local/bin/mpva15
-rwxr-xr-xhome/xyz/.local/bin/mpvy41
-rwxr-xr-xhome/xyz/.local/bin/news10
-rwxr-xr-xhome/xyz/.local/bin/reco28
-rwxr-xr-xhome/xyz/.local/bin/sbar65
-rwxr-xr-xhome/xyz/.local/bin/shufwall9
-rwxr-xr-xhome/xyz/.local/bin/topa6
l---------home/xyz/.local/bin/zoom1
-rw-r--r--home/xyz/.local/share/applications/file.desktop4
-rw-r--r--home/xyz/.xinitrc60
36 files changed, 0 insertions, 1432 deletions
diff --git a/home/xyz/.Xresources b/home/xyz/.Xresources
deleted file mode 100644
index 7f045804..00000000
--- a/home/xyz/.Xresources
+++ /dev/null
@@ -1,11 +0,0 @@
-! studio ture dpi
-!Xft.dpi: 131
-! studio fake dpi
-!Xft.dpi: 96
-
-! nsxiv, fnune/base16-vim base16-tomorrow-night colorscheme
-Nsxiv.bar.font:monospace:size=11
-Nsxiv.window.foreground:#c5c8c6
-Nsxiv.window.background:#1d1f21
-Nsxiv.bar.foreground:#b4b7b4
-Nsxiv.bar.background:#282a2e
diff --git a/home/xyz/.config/Mullvad VPN/gui_settings.json b/home/xyz/.config/Mullvad VPN/gui_settings.json
deleted file mode 100644
index 3300fc6a..00000000
--- a/home/xyz/.config/Mullvad VPN/gui_settings.json
+++ /dev/null
@@ -1 +0,0 @@
-{"preferredLocale":"system","autoConnect":true,"enableSystemNotifications":true,"monochromaticIcon":false,"startMinimized":false,"unpinnedWindow":true,"browsedForSplitTunnelingApplications":[],"changelogDisplayedForVersion":"2022.1"} \ No newline at end of file
diff --git a/home/xyz/.config/alacritty/alacritty.yml b/home/xyz/.config/alacritty/alacritty.yml
deleted file mode 100644
index 9ffc2f2e..00000000
--- a/home/xyz/.config/alacritty/alacritty.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-cursor:
- vi_mode_style: Block
-
-# 1. when set TERM use alacritty on windows, syntax is very bad
-# 2. need to set xterm-256color if want ls show color when use ssh
-env:
- TERM: xterm-256color
-
-font:
-# for cataclysm dda game, use this font, kinda square font, recommended from web
-# normal:
-# family: White Rabbit
- size: 9.0
-
-window:
- dynamic_padding: true
-
-key_bindings:
- # Vi Mode
- - { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
- - { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
- - { key: Escape, mode: Vi|~Search, action: ClearSelection }
- - { key: I, mode: Vi|~Search, action: ToggleViMode }
- - { key: I, mode: Vi|~Search, action: ScrollToBottom }
- - { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
- - { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
- - { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
- - { key: G, mode: Vi|~Search, action: ScrollToTop }
- - { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom }
- - { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp }
- - { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown }
- - { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp }
- - { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown }
- - { key: Y, mode: Vi|~Search, action: Copy }
- - { key: Y, mode: Vi|~Search, action: ClearSelection }
- - { key: Copy, mode: Vi|~Search, action: ClearSelection }
- - { key: V, mode: Vi|~Search, action: ToggleNormalSelection }
- - { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection }
- - { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection }
- - { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection }
- - { key: Return, mode: Vi|~Search, action: Open }
- - { key: K, mode: Vi|~Search, action: Up }
- - { key: J, mode: Vi|~Search, action: Down }
- - { key: H, mode: Vi|~Search, action: Left }
- - { key: L, mode: Vi|~Search, action: Right }
- - { key: Up, mode: Vi|~Search, action: Up }
- - { key: Down, mode: Vi|~Search, action: Down }
- - { key: Left, mode: Vi|~Search, action: Left }
- - { key: Right, mode: Vi|~Search, action: Right }
- - { key: Key0, mode: Vi|~Search, action: First }
- - { key: Key4, mods: Shift, mode: Vi|~Search, action: Last }
- - { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied }
- - { key: H, mods: Shift, mode: Vi|~Search, action: High }
- - { key: M, mods: Shift, mode: Vi|~Search, action: Middle }
- - { key: L, mods: Shift, mode: Vi|~Search, action: Low }
- - { key: B, mode: Vi|~Search, action: SemanticLeft }
- - { key: W, mode: Vi|~Search, action: SemanticRight }
- - { key: E, mode: Vi|~Search, action: SemanticRightEnd }
- - { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft }
- - { key: W, mods: Shift, mode: Vi|~Search, action: WordRight }
- - { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd }
- - { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket }
- - { key: Slash, mode: Vi|~Search, action: SearchForward }
- - { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward }
- - { key: N, mode: Vi|~Search, action: SearchNext }
- - { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious }
diff --git a/home/xyz/.config/aria2/aria2.conf b/home/xyz/.config/aria2/aria2.conf
deleted file mode 100644
index 11d508c5..00000000
--- a/home/xyz/.config/aria2/aria2.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-# max hardcoded to 16, see https://github.com/aria2/aria2/issues/1039
-max-connection-per-server=16
-# from yt-dlp --dump-user-agent
-#user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'
diff --git a/home/xyz/.config/dunst/dunstrc b/home/xyz/.config/dunst/dunstrc
deleted file mode 100644
index 7d0fea5a..00000000
--- a/home/xyz/.config/dunst/dunstrc
+++ /dev/null
@@ -1,432 +0,0 @@
-# See dunst(5) for all configuration options
-
-[global]
- ### Display ###
-
- # Which monitor should the notifications be displayed on.
- monitor = 0
-
- # Display notification on focused monitor. Possible modes are:
- # mouse: follow mouse pointer
- # keyboard: follow window with keyboard focus
- # none: don't follow anything
- #
- # "keyboard" needs a window manager that exports the
- # _NET_ACTIVE_WINDOW property.
- # This should be the case for almost all modern window managers.
- #
- # If this option is set to mouse or keyboard, the monitor option
- # will be ignored.
- follow = mouse
-
- ### Geometry ###
-
- # dynamic width from 0 to 300
- # width = (0, 300)
- # constant width of 300
- width = (0,300)
-
- # The maximum height of a single notification, excluding the frame.
- height = 300
-
- # Position the notification in the top right corner
- origin = top-right
-
- # Offset from the origin
- offset = 0x21
-
- # Scale factor. It is auto-detected if value is 0.
- scale = 0
-
- # Maximum number of notification (0 means no limit)
- notification_limit = 5
-
- ### Progress bar ###
-
- # Turn on the progess bar. It appears when a progress hint is passed with
- # for example dunstify -h int:value:12
- progress_bar = true
-
- # Set the progress bar height. This includes the frame, so make sure
- # it's at least twice as big as the frame width.
- progress_bar_height = 10
-
- # Set the frame width of the progress bar
- progress_bar_frame_width = 1
-
- # Set the minimum width for the progress bar
- progress_bar_min_width = 150
-
- # Set the maximum width for the progress bar
- progress_bar_max_width = 300
-
-
- # Show how many messages are currently hidden (because of
- # notification_limit).
- indicate_hidden = yes
-
- # The transparency of the window. Range: [0; 100].
- # This option will only work if a compositing window manager is
- # present (e.g. xcompmgr, compiz, etc.). (X11 only)
- transparency = 0
-
- # Draw a line of "separator_height" pixel height between two
- # notifications.
- # Set to 0 to disable.
- separator_height = 1
-
- # Padding between text and separator.
- padding = 8
-
- # Horizontal padding.
- horizontal_padding = 8
-
- # Padding between text and icon.
- text_icon_padding = 0
-
- # Defines width in pixels of frame around the notification window.
- # Set to 0 to disable.
- frame_width = 1
-
- # Defines color of the frame around the notification window.
- frame_color = "#c5c8c6"
-
- # Define a color for the separator.
- # possible values are:
- # * auto: dunst tries to find a color fitting to the background;
- # * foreground: use the same color as the foreground;
- # * frame: use the same color as the frame;
- # * anything else will be interpreted as a X color.
- separator_color = frame
-
- # Sort messages by urgency.
- sort = yes
-
- # Don't remove messages, if the user is idle (no mouse or keyboard input)
- # for longer than idle_threshold seconds.
- # Set to 0 to disable.
- # A client can set the 'transient' hint to bypass this. See the rules
- # section for how to disable this if necessary
- idle_threshold = 120
-
- ### Text ###
-
- font = Monospace 10
-
- # The spacing between lines. If the height is smaller than the
- # font height, it will get raised to the font height.
- line_height = 0
-
- # Possible values are:
- # full: Allow a small subset of html markup in notifications:
- # <b>bold</b>
- # <i>italic</i>
- # <s>strikethrough</s>
- # <u>underline</u>
- #
- # For a complete reference see
- # <https://developer.gnome.org/pango/stable/pango-Markup.html>.
- #
- # strip: This setting is provided for compatibility with some broken
- # clients that send markup even though it's not enabled on the
- # server. Dunst will try to strip the markup but the parsing is
- # simplistic so using this option outside of matching rules for
- # specific applications *IS GREATLY DISCOURAGED*.
- #
- # no: Disable markup parsing, incoming notifications will be treated as
- # plain text. Dunst will not advertise that it has the body-markup
- # capability if this is set as a global setting.
- #
- # It's important to note that markup inside the format option will be parsed
- # regardless of what this is set to.
- markup = full
-
- # The format of the message. Possible variables are:
- # %a appname
- # %s summary
- # %b body
- # %i iconname (including its path)
- # %I iconname (without its path)
- # %p progress value if set ([ 0%] to [100%]) or nothing
- # %n progress value if set without any extra characters
- # %% Literal %
- # Markup is allowed
- format = "<b>%s</b>\n%b"
-
- # Alignment of message text.
- # Possible values are "left", "center" and "right".
- alignment = left
-
- # Vertical alignment of message text and icon.
- # Possible values are "top", "center" and "bottom".
- vertical_alignment = center
-
- # Show age of message if message is older than show_age_threshold
- # seconds.
- # Set to -1 to disable.
- show_age_threshold = 60
-
- # Specify where to make an ellipsis in long lines.
- # Possible values are "start", "middle" and "end".
- ellipsize = middle
-
- # Ignore newlines '\n' in notifications.
- ignore_newline = no
-
- # Stack together notifications with the same content
- stack_duplicates = true
-
- # Hide the count of stacked notifications with the same content
- hide_duplicate_count = false
-
- # Display indicators for URLs (U) and actions (A).
- show_indicators = yes
-
- ### Icons ###
-
- # Align icons left/right/off
- icon_position = left
-
- # Scale small icons up to this size, set to 0 to disable. Helpful
- # for e.g. small files or high-dpi screens. In case of conflict,
- # max_icon_size takes precedence over this.
- min_icon_size = 0
-
- # Scale larger icons down to this size, set to 0 to disable
- max_icon_size = 32
-
- # Paths to default icons.
- icon_path = /usr/share/icons/Papirus-Dark/16x16/actions:/usr/share/icons/Papirus-Dark/16x16/categories:/usr/share/icons/Papirus-Dark/16x16/emblems:/usr/share/icons/Papirus-Dark/16x16/mimetypes:/usr/share/icons/Papirus-Dark/16x16/places:/usr/share/icons/Papirus-Dark/16x16/apps:/usr/share/icons/Papirus-Dark/16x16/devices:/usr/share/icons/Papirus-Dark/16x16/emotes:/usr/share/icons/Papirus-Dark/16x16/panel:/usr/share/icons/Papirus-Dark/16x16/status
-
- ### History ###
-
- # Should a notification popped up from history be sticky or timeout
- # as if it would normally do.
- sticky_history = yes
-
- # Maximum amount of notifications kept in history
- history_length = 20
-
- ### Misc/Advanced ###
-
- # dmenu path.
- dmenu = /usr/bin/dmenu -p dunst:
-
- # Browser for opening urls in context menu.
- browser = /usr/bin/xdg-open
-
- # Always run rule-defined scripts, even if the notification is suppressed
- always_run_script = true
-
- # Define the title of the windows spawned by dunst
- title = Dunst
-
- # Define the class of the windows spawned by dunst
- class = Dunst
-
- # Define the corner radius of the notification window
- # in pixel size. If the radius is 0, you have no rounded
- # corners.
- # The radius will be automatically lowered if it exceeds half of the
- # notification height to avoid clipping text and/or icons.
- corner_radius = 0
-
- # Ignore the dbus closeNotification message.
- # Useful to enforce the timeout set by dunst configuration. Without this
- # parameter, an application may close the notification sent before the
- # user defined timeout.
- ignore_dbusclose = false
-
- ### Wayland ###
- # These settings are Wayland-specific. They have no effect when using X11
-
- # Uncomment this if you want to let notications appear under fullscreen
- # applications (default: overlay)
- # layer = top
-
- # Set this to true to use X11 output on Wayland.
- force_xwayland = false
-
- ### Legacy
-
- # Use the Xinerama extension instead of RandR for multi-monitor support.
- # This setting is provided for compatibility with older nVidia drivers that
- # do not support RandR and using it on systems that support RandR is highly
- # discouraged.
- #
- # By enabling this setting dunst will not be able to detect when a monitor
- # is connected or disconnected which might break follow mode if the screen
- # layout changes.
- force_xinerama = false
-
- ### mouse
-
- # Defines list of actions for each mouse event
- # Possible values are:
- # * none: Don't do anything.
- # * do_action: Invoke the action determined by the action_name rule. If there is no
- # such action, open the context menu.
- # * open_url: If the notification has exactly one url, open it. If there are multiple
- # ones, open the context menu.
- # * close_current: Close current notification.
- # * close_all: Close all notifications.
- # * context: Open context menu for the notification.
- # * context_all: Open context menu for all notifications.
- # These values can be strung together for each mouse event, and
- # will be executed in sequence.
- mouse_left_click = close_current
- mouse_middle_click = do_action, close_current
- mouse_right_click = close_all
-
-# Experimental features that may or may not work correctly. Do not expect them
-# to have a consistent behaviour across releases.
-[experimental]
- # Calculate the dpi to use on a per-monitor basis.
- # If this setting is enabled the Xft.dpi value will be ignored and instead
- # dunst will attempt to calculate an appropriate dpi value for each monitor
- # using the resolution and physical size. This might be useful in setups
- # where there are multiple screens with very different dpi values.
- per_monitor_dpi = false
-
-
-[urgency_low]
- # IMPORTANT: colors have to be defined in quotation marks.
- # Otherwise the "#" and following would be interpreted as a comment.
- background = "#1d1f21"
- foreground = "#81a2be"
- frame_color = "#81a2be"
- timeout = 10
- # Icon for notifications with low urgency, uncomment to enable
- #icon = /path/to/icon
-
-[urgency_normal]
- background = "#1d1f21"
- foreground = "#b5bd68"
- frame_color = "#b5bd68"
- timeout = 10
- # Icon for notifications with normal urgency, uncomment to enable
- #icon = /path/to/icon
-
-[urgency_critical]
- background = "#1d1f21"
- foreground = "#cc6666"
- frame_color = "#cc6666"
- timeout = 0
- # Icon for notifications with critical urgency, uncomment to enable
- #icon = /path/to/icon
-
-# Every section that isn't one of the above is interpreted as a rules to
-# override settings for certain messages.
-#
-# Messages can be matched by
-# appname (discouraged, see desktop_entry)
-# body
-# category
-# desktop_entry
-# icon
-# match_transient
-# msg_urgency
-# stack_tag
-# summary
-#
-# and you can override the
-# background
-# foreground
-# format
-# frame_color
-# fullscreen
-# new_icon
-# set_stack_tag
-# set_transient
-# timeout
-# urgency
-# action_name
-#
-# Shell-like globbing will get expanded.
-#
-# Instead of the appname filter, it's recommended to use the desktop_entry filter.
-# GLib based applications export their desktop-entry name. In comparison to the appname,
-# the desktop-entry won't get localized.
-#
-# SCRIPTING
-# You can specify a script that gets run when the rule matches by
-# setting the "script" option.
-# The script will be called as follows:
-# script appname summary body icon urgency
-# where urgency can be "LOW", "NORMAL" or "CRITICAL".
-#
-# NOTE: It might be helpful to run dunst -print in a terminal in order
-# to find fitting options for rules.
-
-# Disable the transient hint so that idle_threshold cannot be bypassed from the
-# client
-#[transient_disable]
-# match_transient = yes
-# set_transient = no
-#
-# Make the handling of transient notifications more strict by making them not
-# be placed in history.
-#[transient_history_ignore]
-# match_transient = yes
-# history_ignore = yes
-
-# fullscreen values
-# show: show the notifications, regardless if there is a fullscreen window opened
-# delay: displays the new notification, if there is no fullscreen window active
-# If the notification is already drawn, it won't get undrawn.
-# pushback: same as delay, but when switching into fullscreen, the notification will get
-# withdrawn from screen again and will get delayed like a new notification
-#[fullscreen_delay_everything]
-# fullscreen = delay
-#[fullscreen_show_critical]
-# msg_urgency = critical
-# fullscreen = show
-
-#[espeak]
-# summary = "*"
-# script = dunst_espeak.sh
-
-#[script-test]
-# summary = "*script*"
-# script = dunst_test.sh
-
-#[ignore]
-# # This notification will not be displayed
-# summary = "foobar"
-# skip_display = true
-
-#[history-ignore]
-# # This notification will not be saved in history
-# summary = "foobar"
-# history_ignore = yes
-
-#[skip-display]
-# # This notification will not be displayed, but will be included in the history
-# summary = "foobar"
-# skip_display = yes
-
-#[signed_on]
-# appname = Pidgin
-# summary = "*signed on*"
-# urgency = low
-#
-#[signed_off]
-# appname = Pidgin
-# summary = *signed off*
-# urgency = low
-#
-#[says]
-# appname = Pidgin
-# summary = *says*
-# urgency = critical
-#
-#[twitter]
-# appname = Pidgin
-# summary = *twitter.com*
-# urgency = normal
-#
-#[stack-volumes]
-# appname = "some_volume_notifiers"
-# set_stack_tag = "volume"
-#
-# vim: ft=cfg
diff --git a/home/xyz/.config/fontconfig/fonts.conf b/home/xyz/.config/fontconfig/fonts.conf
deleted file mode 100644
index c8b6287f..00000000
--- a/home/xyz/.config/fontconfig/fonts.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
-<fontconfig>
-
- <!-- more details: http://www.jinbuguo.com/gui/linux_fontconfig.html -->
-
- <alias>
- <family>serif</family>
- <prefer>
- <family>Noto Serif</family>
- <family>Noto Serif CJK SC</family>
- <family>Noto Color Emoji</family>
- </prefer>
- </alias>
- <alias>
- <family>sans-serif</family>
- <prefer>
- <family>Noto Sans</family>
- <family>Noto Sans CJK SC</family>
- <family>Noto Color Emoji</family>
- </prefer>
- </alias>
- <alias>
- <family>monospace</family>
- <prefer>
- <family>Noto Sans Mono</family>
- <family>Noto Sans Mono CJK SC</family>
- <family>Noto Color Emoji</family>
- </prefer>
- </alias>
-
- <!-- man fonts-conf example approach -->
- <!--
- <match>
- <test name="lang" compare="contains">
- <string>zh</string>
- </test>
- <edit name="family" mode="prepend">
- <string>Adobe Kaiti Std</string>
- </edit>
- </match>
- -->
-
-</fontconfig>
diff --git a/home/xyz/.config/git/ignore b/home/xyz/.config/git/ignore
deleted file mode 100644
index b2e6e394..00000000
--- a/home/xyz/.config/git/ignore
+++ /dev/null
@@ -1,5 +0,0 @@
-*.exe
-*.log
-*.o
-*.so
-.qmake.stash
diff --git a/home/xyz/.config/mimeapps.list b/home/xyz/.config/mimeapps.list
deleted file mode 100644
index 6d9dcdf1..00000000
--- a/home/xyz/.config/mimeapps.list
+++ /dev/null
@@ -1,16 +0,0 @@
-[Default Applications]
-application/pdf=org.pwmt.zathura.desktop;
-application/epub+zip=org.pwmt.zathura.desktop;
-image/gif=nsxiv.desktop;
-image/jpeg=nsxiv.desktop;
-image/png=nsxiv.desktop;
-inode/directory=file.desktop;
-x-scheme-handler/tg=userapp-Telegram Desktop-1MFXF1.desktop
-x-scheme-handler/zoommtg=ZoomFirejail.desktop
-x-scheme-handler/zoomus=ZoomFirejail.desktop
-x-scheme-handler/tel=ZoomFirejail.desktop
-x-scheme-handler/callto=ZoomFirejail.desktop
-x-scheme-handler/zoomphonecall=ZoomFirejail.desktop
-
-[Added Associations]
-x-scheme-handler/tg=userapp-Telegram Desktop-1MFXF1.desktop;
diff --git a/home/xyz/.config/mpv/mpv.conf b/home/xyz/.config/mpv/mpv.conf
deleted file mode 100644
index f9dd01d4..00000000
--- a/home/xyz/.config/mpv/mpv.conf
+++ /dev/null
@@ -1,145 +0,0 @@
-sub-auto=fuzzy
-script-opts=ytdl_hook-ytdl_path=yt-dlp
-# scaletempo and scaletempo2 are super buggy
-# I don't understand rubberband tho, steal from:
-# https://www.rockyourcode.com/til-how-to-watch-youtube-videos-with-mpv-and-keyboard-shortcuts/
-# https://github.com/mpv-player/mpv/issues/7792
-af=rubberband=pitch-scale=0.981818181818181
-
-# Example mpv configuration file
-#
-# Warning:
-#
-# The commented example options usually do _not_ set the default values. Call
-# mpv with --list-options to see the default values for most options. There is
-# no builtin or example mpv.conf with all the defaults.
-#
-#
-# Configuration files are read system-wide from /usr/local/etc/mpv.conf
-# and per-user from ~/.config/mpv/mpv.conf, where per-user settings override
-# system-wide settings, all of which are overridden by the command line.
-#
-# Configuration file settings and the command line options use the same
-# underlying mechanisms. Most options can be put into the configuration file
-# by dropping the preceding '--'. See the man page for a complete list of
-# options.
-#
-# Lines starting with '#' are comments and are ignored.
-#
-# See the CONFIGURATION FILES section in the man page
-# for a detailed description of the syntax.
-#
-# Profiles should be placed at the bottom of the configuration file to ensure
-# that settings wanted as defaults are not restricted to specific profiles.
-
-##################
-# video settings #
-##################
-
-# Start in fullscreen mode by default.
-#fs=yes
-
-# force starting with centered window
-#geometry=50%:50%
-
-# don't allow a new window to have a size larger than 90% of the screen size
-#autofit-larger=90%x90%
-
-# Do not close the window on exit.
-#keep-open=yes
-
-# Do not wait with showing the video window until it has loaded. (This will
-# resize the window once video is loaded. Also always shows a window with
-# audio.)
-#force-window=immediate
-
-# Disable the On Screen Controller (OSC).
-#osc=no
-
-# Keep the player window on top of all other windows.
-#ontop=yes
-
-# Specify high quality video rendering preset (for --vo=gpu only)
-# Can cause performance problems with some drivers and GPUs.
-#profile=gpu-hq
-
-# Force video to lock on the display's refresh rate, and change video and audio
-# speed to some degree to ensure synchronous playback - can cause problems
-# with some drivers and desktop environments.
-#video-sync=display-resample
-
-# Enable hardware decoding if available. Often, this does not work with all
-# video outputs, but should work well with default settings on most systems.
-# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs
-# may or may not help.
-hwdec=auto-safe
-
-##################
-# audio settings #
-##################
-
-# Specify default audio device. You can list devices with: --audio-device=help
-# The option takes the device string (the stuff between the '...').
-#audio-device=alsa/default
-
-# Do not filter audio to keep pitch when changing playback speed.
-#audio-pitch-correction=no
-
-# Output 5.1 audio natively, and upmix/downmix audio with a different format.
-#audio-channels=5.1
-# Disable any automatic remix, _if_ the audio output accepts the audio format.
-# of the currently played file. See caveats mentioned in the manpage.
-# (The default is "auto-safe", see manpage.)
-#audio-channels=auto
-
-##################
-# other settings #
-##################
-
-# Pretend to be a web browser. Might fix playback with some streaming sites,
-# but also will break with shoutcast streams.
-#user-agent="Mozilla/5.0"
-
-# cache settings
-#
-# Use a large seekable RAM cache even for local input.
-#cache=yes
-#
-# Use extra large RAM cache (needs cache=yes to make it useful).
-#demuxer-max-bytes=500M
-#demuxer-max-back-bytes=100M
-#
-# Disable the behavior that the player will pause if the cache goes below a
-# certain fill size.
-#cache-pause=no
-#
-# Store cache payload on the hard disk instead of in RAM. (This may negatively
-# impact performance unless used for slow input such as network.)
-#cache-dir=~/.cache/
-#cache-on-disk=yes
-
-# Display English subtitles if available.
-slang=zh-Hans,zh-CN,zh-Hant,zh-SG,zh-TW,zh-HK,en,en-US,en-GB
-
-# Play Finnish audio if available, fall back to English otherwise.
-#alang=fi,en
-
-# Change subtitle encoding. For Arabic subtitles use 'cp1256'.
-# If the file seems to be valid UTF-8, prefer UTF-8.
-# (You can add '+' in front of the codepage to force it.)
-#sub-codepage=cp1256
-
-# You can also include other configuration files.
-#include=/path/to/the/file/you/want/to/include
-
-############
-# Profiles #
-############
-
-# The options declared as part of profiles override global default settings,
-# but only take effect when the profile is active.
-
-# The following profile can be enabled on the command line with: --profile=eye-cancer
-
-#[eye-cancer]
-#sharpen=5
diff --git a/home/xyz/.config/mpv/scripts/sponsorblock-minimal.lua b/home/xyz/.config/mpv/scripts/sponsorblock-minimal.lua
deleted file mode 120000
index cb3390f8..00000000
--- a/home/xyz/.config/mpv/scripts/sponsorblock-minimal.lua
+++ /dev/null
@@ -1 +0,0 @@
-/usr/lib/mpv/sponsorblock-minimal.lua \ No newline at end of file
diff --git a/home/xyz/.config/myconf/gallery_urls b/home/xyz/.config/myconf/gallery_urls
deleted file mode 100644
index 0f128ec3..00000000
--- a/home/xyz/.config/myconf/gallery_urls
+++ /dev/null
@@ -1,5 +0,0 @@
-# input file format see https://github.com/mikf/gallery-dl/blob/13d4045a8a5a6fd45cb20df399f44055b25f5cca/gallery_dl/__init__.py#L33-L58
-#https://www.pixiv.net/users/13379747/artworks
-https://www.deviantart.com/wlop/gallery
-https://www.deviantart.com/minimalistic-animoo/gallery/
-https://www.deviantart.com/theminimalists/gallery/
diff --git a/home/xyz/.config/myconf/surfingkeys_config.js b/home/xyz/.config/myconf/surfingkeys_config.js
deleted file mode 100644
index 896f526a..00000000
--- a/home/xyz/.config/myconf/surfingkeys_config.js
+++ /dev/null
@@ -1,122 +0,0 @@
-// https://github.com/brookhong/Surfingkeys/wiki/Migrate-your-settings-from-0.9.74-to-1.0
-const {
- aceVimMap,
- mapkey,
- imap,
- imapkey,
- getClickableElements,
- vmapkey,
- map,
- unmap,
- vunmap,
- cmap,
- addSearchAlias,
- removeSearchAlias,
- tabOpenLink,
- readText,
- Clipboard,
- Front,
- Hints,
- Visual,
- RUNTIME,
-
- iunmap,
-} = api;
-
-// old example config, may not work. also, I change ctrl-y to Ctrl-y
-// an example to create a new mapping `ctrl-y`
-//mapkey('<Ctrl-y>', 'Show me the money', function() {
-// Front.showPopup('a well-known phrase uttered by characters in the 1996 film Jerry Maguire (Escape to close).');
-//});
-// an example to replace `T` with `gt`, click `Default mappings` to see how `T` works.
-//map('gt', 'T');
-
-// I choose to use <Alt-i>, <Alt-s>, or <p> instead. I prefer <p>
-//settings.blacklistPattern = /.*youtube\.com.*|.*mail\.google\.com.*/i;
-
-//unmap('<Ctrl-j>');
-map('<Ctrl-Alt-h>','<Ctrl-h>');
-unmap('<Ctrl-h>');
-// ctrl-alt-s not working now (12/09/2021), not sure why, maybe arkenfox user.js problem?
-map('<Ctrl-Alt-s>','<Alt-s>');
-unmap('<Alt-s>');
-
-// on firefox, firenvim default Ctrl-e will be overwirted by github issue hotkey, see:
-// https://github.com/glacambre/firenvim/issues/1046
-// https://bugzilla.mozilla.org/show_bug.cgi?id=1713794
-// currently seems no good solution but to use another hotkey, I choose Ctrl+,
-// current surfingkeys version 0.9.74 is outdated and doesn't contain firenvim integration, wait for author to update
-// I tried to run the source code as temp extension in about:debugging or with web-ext cli tool but no luck
-// update: surfingkeys 1.0 is out, but it integrate neovim in another way, and firefox is not supported?
-// https://github.com/brookhong/Surfingkeys/issues/1542#:~:text=side%20is%20not-,necessary,-now%2C%20please%20help
-// some more links:
-// https://github.com/brookhong/Surfingkeys/tree/master/src/nvim/server
-settings.useNeovim = true;
-
-// disable all insert mode hotkeys except Ctrl-i for future neovim integration
-//iunmap('<Ctrl-i>');
-iunmap('<Alt-b>');
-iunmap('<Alt-d>');
-iunmap('<Alt-f>');
-iunmap('<Alt-w>');
-iunmap("<Ctrl-'>");
-iunmap('<Ctrl-e>');
-iunmap('<Ctrl-f>');
-iunmap('<Ctrl-u>');
-// disable emoj
-iunmap(':');
-
-// following code of map n to nzz not working in 1.0
-// I guess it may because Visual.next and Visual.feedkeys is not supported in new api, see below source code permalink
-// https://github.com/brookhong/Surfingkeys/blob/3d1de8cab8584209cc6fec3ed7025e8ebab476d8/src/content_scripts/common/api.js#L774-L776
-//mapkey('n','Find next then center cursor', function(){
-// Visual.next(false);
-// Visual.feedkeys('zz');
-//});
-//mapkey('N','Find previous then center cursor', function(){
-// Visual.next(true);
-// Visual.feedkeys('zz');
-//});
-
-// with firefox RFP enabled in user.js, smooth scroll and gg/G do not work, firefox RFP's feature
-settings.smoothScroll = false;
-
-// set theme
-settings.theme = `
-.sk_theme {
- font-family: Input Sans Condensed, Charcoal, sans-serif;
- font-size: 10pt;
- background: #24272e;
- color: #abb2bf;
-}
-.sk_theme tbody {
- color: #fff;
-}
-.sk_theme input {
- color: #d0d0d0;
-}
-.sk_theme .url {
- color: #61afef;
-}
-.sk_theme .annotation {
- color: #56b6c2;
-}
-.sk_theme .omnibar_highlight {
- color: #528bff;
-}
-.sk_theme .omnibar_timestamp {
- color: #e5c07b;
-}
-.sk_theme .omnibar_visitcount {
- color: #98c379;
-}
-.sk_theme #sk_omnibarSearchResult ul li:nth-child(odd) {
- background: #303030;
-}
-.sk_theme #sk_omnibarSearchResult ul li.focused {
- background: #3e4452;
-}
-#sk_status, #sk_find {
- font-size: 16pt;
-}`;
-// click `Save` button to make above settings to take effect.</ctrl-i></ctrl-y>
diff --git a/home/xyz/.config/newsboat/config b/home/xyz/.config/newsboat/config
deleted file mode 100644
index 8b31ecb8..00000000
--- a/home/xyz/.config/newsboat/config
+++ /dev/null
@@ -1,27 +0,0 @@
-auto-reload yes
-
-bind-key h quit
-bind-key j down
-bind-key k up
-bind-key l open
-bind-key g home
-bind-key G end
-bind-key ^F pagedown
-bind-key ^B pageup
-
-# open-in-browser-noninteractively may be useful
-macro y set browser "echo %u | xsel -ib"; open-in-browser; set browser "$BROWSER %u &"
-
-# https://newsboat.org/releases/2.24/docs/newsboat.html#_killfiles
-# https://newsboat.org/releases/2.24/docs/newsboat.html#_filter_language
-
-# not sure if all following arch linux rss feed ignore-article will work as expected
-# maybe aur rss feed is broken; maybe arch linux feeds are updated very fast so I can't get the wanted news?
-# not fully understand the rss feed
-ignore-article "https://aur.archlinux.org/rss/" "title !~\"youtube-dlp|yt-dlp\""
-# arch linux development feeds: all project
-ignore-article "https://bugs.archlinux.org/feed.php?feed_type=rss2&project=0" "title !~ \"wildmidi|aur.*(rss|feed)|(rss|feed).*aur\""
-ignore-article "https://bugs.archlinux.org/feed.php?feed_type=rss2&topic=edit&project=0" "title !~ \"FS#(47508|71501|71453|70113|69492)|wildmidi|aur.*(rss|feed)|(rss|feed).*aur\""
-ignore-article "https://bugs.archlinux.org/feed.php?feed_type=rss2&topic=clo&project=0" "title !~ \"FS#(47508|71501|71453|70113|69492)|wildmidi|aur.*(rss|feed)|(rss|feed).*aur\""
-
-# vim: ft=sh
diff --git a/home/xyz/.config/newsboat/urls b/home/xyz/.config/newsboat/urls
deleted file mode 100644
index 3aa4608a..00000000
--- a/home/xyz/.config/newsboat/urls
+++ /dev/null
@@ -1,26 +0,0 @@
-# https://newsboat.org/releases/2.24/docs/newsboat.html#_tagging
-
-# computer misc
-https://suckless.org/atom.xml
-https://ryf.fsf.org/news/rss.xml
-https://ryf.fsf.org/products/rss.xml
-https://git.savannah.gnu.org/cgit/gsl.git/atom/NEWS?h=master
-https://mullvad.net/blog/feed/atom
-https://frame.work/blog.rss
-https://libreboot.org/feed.xml
-
-# arch linux
-https://archlinux.org/feeds/news/
-https://bbs.archlinux.org/extern.php?action=feed&tid=260286&type=atom
-https://aur.archlinux.org/rss/
-# arch linux development feeds: all projects
-https://bugs.archlinux.org/feed.php?feed_type=rss2&project=0
-https://bugs.archlinux.org/feed.php?feed_type=rss2&topic=edit&project=0
-https://bugs.archlinux.org/feed.php?feed_type=rss2&topic=clo&project=0
-
-# qmmp
-https://sourceforge.net/p/qmmp-dev/tickets/590/feed.atom
-https://sourceforge.net/p/qmmp-dev/tickets/714/feed.atom
-
-# recreation
-http://keygenmusic.net/rss.php
diff --git a/home/xyz/.config/nsxiv/exec/key-handler b/home/xyz/.config/nsxiv/exec/key-handler
deleted file mode 100755
index a24b89b0..00000000
--- a/home/xyz/.config/nsxiv/exec/key-handler
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/sh
-
-# Example for $XDG_CONFIG_HOME/sxiv/exec/key-handler
-# Called by sxiv(1) after the external prefix key (C-x by default) is pressed.
-# The next key combo is passed as its first argument. Passed via stdin are the
-# images to act upon, one path per line: all marked images, if in thumbnail
-# mode and at least one image has been marked, otherwise the current image.
-# sxiv(1) blocks until this script terminates. It then checks which images
-# have been modified and reloads them.
-
-# The key combo argument has the following form: "[C-][M-][S-]KEY",
-# where C/M/S indicate Ctrl/Meta(Alt)/Shift modifier states and KEY is the X
-# keysym as listed in /usr/include/X11/keysymdef.h without the "XK_" prefix.
-
-# my dependency notes
-# jpegtran is owned by libjpeg-turbo
-# mogrify is owned by imagemagick
-# exiv2 is owned by exiv2
-# rawtherapee is owned by rawtherapee
-
-rotate() {
- tr '\n' '\0' | xargs -0 realpath | sort | uniq | while read -r file; do
- case "$(file -b -i "$file")" in
- image/jpeg*) jpegtran -rotate 90 -copy all -outfile "$file" "$file" ;;
- *) mogrify -rotate 90 "$file" ;;
- esac
- done
-}
-
-flip() {
- tr '\n' '\0' | xargs -0 realpath | sort | uniq | while read -r file; do
- case "$(file -b -i "$file")" in
- image/jpeg*) jpegtran -flip vertical -copy all -outfile "$file" "$file" ;;
- *) mogrify -flip "$file" ;;
- esac
- done
-}
-
-linkwall() {
- tr '\n' '\0' | xargs -0 realpath | sort | uniq | while read -r file; do
- walldir="$XDG_PICTURES_DIR/wallpapers/"
- name=$(basename "$file")
- if [ ! -e "$walldir$name" ]; then
- convwall "$file" "$walldir$name" || ln -s "$file" "$walldir"
- else
- notify-send 'error' "$name exist"
- fi
- done
-}
-
-# I choose not to put case nested in while read file loop
-# because it can pipe multiple files to one command?
-case "$1" in
- "d") [ "$(printf 'No\nYes' | dmenu -i -p 'delete?')" = "Yes" ] && tr '\n' '\0' | xargs -0 rm ;;
- "e") while read -r file; do alacritty -e sh -c "exiv2 pr -q -pa '$file' | less" & done ;;
- "f") flip ;;
- "g") tr '\n' '\0' | xargs -0 setsid -f gimp ;;
- "l") linkwall ;;
- "p") tr '\n' '\0' | xargs -0 sh -c 'convert "$@" $(time.uuid).pdf' shell ;;
- "r") rotate ;;
- "w") tr '\n' '\0' | xargs -0 shufwall ;;
- # alternative using `xclip -in -selection clipboard`
- "y") tr '\n' '\0' | xargs -0 realpath | tr '\n' '\0' | xargs -0 printf '%q ' | xsel -ib ;;
-esac
-
diff --git a/home/xyz/.config/sdcv_ordering b/home/xyz/.config/sdcv_ordering
deleted file mode 100644
index 8eef92e5..00000000
--- a/home/xyz/.config/sdcv_ordering
+++ /dev/null
@@ -1,9 +0,0 @@
-朗道英汉字典5.0
-牛津英汉双解美化版
-CEDICT汉英辞典
-朗道汉英字典5.0
-WordNet
-Moby Thesaurus II
-wikt-en-ALL-2021-05-02
-Urban Dictionary P1 (En-En)
-Urban Dictionary P2 (En-En)
diff --git a/home/xyz/.config/yt-dlp/config b/home/xyz/.config/yt-dlp/config
deleted file mode 100644
index 4ed6c4a7..00000000
--- a/home/xyz/.config/yt-dlp/config
+++ /dev/null
@@ -1,11 +0,0 @@
-# --external-downloader also works for youtube-dl
---external-downloader aria2c
-
-# workaround youtube throttle
-# mar 17 2022 if use this command download is very slow, not sure why
-#--throttled-rate 100K
-# player_client=android,web seems become default since 2021.07.21 version
-#--extractor-args youtube:player_client=android
-
-# manpage says yt-dlp use --sub-langs, youtube-dl use --sub-lang, but experiment shows yt-dlp also use --sub-lang
---sub-lang zh-Hans,zh-CN,zh-Hant,zh-SG,zh-TW,zh-HK,en,en-US,en-GB
diff --git a/home/xyz/.config/zathura/zathurarc b/home/xyz/.config/zathura/zathurarc
deleted file mode 100644
index 2c49960e..00000000
--- a/home/xyz/.config/zathura/zathurarc
+++ /dev/null
@@ -1,2 +0,0 @@
-# mouse selection copy to clipboard instead of primary
-set selection-clipboard clipboard
diff --git a/home/xyz/.local/bin/alacritty b/home/xyz/.local/bin/alacritty
deleted file mode 100755
index 64cedfcc..00000000
--- a/home/xyz/.local/bin/alacritty
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# https://github.com/MithicSpirit/dotfiles/blob/master/.local/bin/alacritty
-/usr/bin/alacritty msg create-window "$@" || /usr/bin/alacritty "$@"
diff --git a/home/xyz/.local/bin/alarm b/home/xyz/.local/bin/alarm
deleted file mode 100755
index 9b366e19..00000000
--- a/home/xyz/.local/bin/alarm
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-printf 'notify-send -u critical "%s"; bell' "${2:-alarm}" | at now + "$1" minutes && notify-send "Successfully Scheduled"
-
-# at used to not like string like 'Boiling Water!', don't know why now it works, if see similar issue, use folllowing codes
-#at now + "$1" minutes << EOF && notify-send 'Successfully Scheduled'
-#notify-send -u critical "${2:-alarm}"
-#bell
-#EOF
diff --git a/home/xyz/.local/bin/bell b/home/xyz/.local/bin/bell
deleted file mode 100755
index c8bebd5e..00000000
--- a/home/xyz/.local/bin/bell
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-bef="$(amixer get Master | awk -F '[][]' 'END{print $2}')"
-amixer set Master 20%
-# code steal from https://unix.stackexchange.com/a/163716/459013
-speaker-test -t sine -f 1000 -l 1
-amixer set Master "$bef"
diff --git a/home/xyz/.local/bin/ccgsl b/home/xyz/.local/bin/ccgsl
deleted file mode 100755
index 31bd3256..00000000
--- a/home/xyz/.local/bin/ccgsl
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-# steal codes from https://github.com/LukeSmithxyz/voidrice/blob/master/.local/bin/compiler
-
-base="${1%.*}"
-# -lm link math library? needed for sqrt(). not sure
-# https://stackoverflow.com/questions/44175151/what-is-the-meaning-of-lm-in-gcc
-cc -Wall -lgsl -lgslcblas -lm -o "$base" "$1" && ./"$base"
diff --git a/home/xyz/.local/bin/convwall b/home/xyz/.local/bin/convwall
deleted file mode 100755
index dff9c43b..00000000
--- a/home/xyz/.local/bin/convwall
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-# target image aspect ratio
-wratio=$SCR_WIDTH
-hratio=$SCR_HEIGHT
-# chop how much from center
-chopnum=99%
-
-# my benchmark shows -ping is much faster than default
-# https://github.com/ImageMagick/ImageMagick/issues/3183#issuecomment-800955241
-width=$(identify -ping -format '%w' "$1")
-height=$(identify -ping -format '%h' "$1")
-
-ratio=$((wratio*100/hratio))
-dim=$((width*100/height))
-
-if [ "$dim" -ne "$ratio" ]; then
- if [ "$dim" -lt "$ratio" ]; then
- chopgeom="${chopnum}x0"
- width=$((height*wratio/hratio))
- else
- chopgeom="0x$chopnum"
- height=$((width*hratio/wratio))
- fi
- # may throw error "sort: write failed: 'standard output': Broken pipe \n sort: write error"
- # caused by head exit (or close stdin) before sort output complete, can ignore
- # https://stackoverflow.com/questions/46202653/bash-error-in-sort-sort-write-failed-standard-output-broken-pipe
- bgcolor=$(convert "$1" -gravity center -chop "$chopgeom" -define histogram:unique-colors=true -format %c histogram:info:- | sort -rn | head -n1 | awk \{print\ \$3\} | cut -c1-7)
- # another approach is to use "$width" or "x$height" for geometry, current approach is more readable
- convert "$1" -gravity center -background "$bgcolor" -extent "${width}x$height" "$2"
-else
- echo 'same aspect ratio, no need to convert' >&2
- exit 1
-fi
diff --git a/home/xyz/.local/bin/curlkg b/home/xyz/.local/bin/curlkg
deleted file mode 100755
index 4276e820..00000000
--- a/home/xyz/.local/bin/curlkg
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-
-# references:
-# https://blog.csdn.net/qq_41730930/article/details/79327757
-# https://blog.csdn.net/u011112876/article/details/89634505
-# https://github.com/pystardust/ytfzf
-
-homepage_url='https://node.kg.qq.com/cgi/fcgi-bin/kg_ugc_get_homepage'
-music_url='https://node.kg.qq.com/cgi/fcgi-bin/fcg_get_play_url'
-# num seems only 8 and 15 works
-num=15
-tmp_file="$(mktemp)"
-
-get_json () {
- curl -s -G --data-urlencode type=get_uinfo -d outCharset=utf-8 -d start="$1" -d num=$num -d share_uid="$uid" "$homepage_url" | sed 's/.*({\(.*\)}).*/{\1}/'
-}
-
-# concurrent file append with less than 4096 bytes will be atomic on arch linux ext4
-# so need to process json data before append to the file, to append less than 4096 bytes for each process
-# another appraoch is to use a loop to write to several files each corresponding to one process
-# https://stackoverflow.com/questions/1154446/is-file-append-atomic-in-unix
-# https://unix.stackexchange.com/questions/458653/parallel-processes-appending-outputs-to-an-array-in-a-bash-script
-process_json() {
- jq -r '.data.ugclist[]|"'"$music_url"'?shareid=\(.shareid)\n out=\(.title)_\(.time).m4a"' >> "$tmp_file"
-}
-
-while getopts u: opt; do
- case $opt in
- u) uid="$OPTARG";;
- \?) exit 1;;
- esac
-done
-# for lan lan, uid=649b9e82272a348b
-# for cheng ruan, uid=64949d822c25328c
-[ -z "$uid" ] && echo 'error: must provide share_uid
-ex: curlkg -u 649b9e82272a348b ./' >&2 && exit 1
-shift $((OPTIND-1))
-download_dir="${1:-"$PWD"}"
-[ -d "$download_dir" ] || mkdir -p "$download_dir"
-
-first_json="$(get_json 1)"
-ugc_total_count=$(echo "$first_json" | jq '.data.ugc_total_count')
-echo "$first_json" | process_json
-# can also use while loop with i=$((i+1))
-# the calculation considers both ugc_total_count%num==0 and ugc_total_count%num>0
-for i in $(seq 2 $(((ugc_total_count+num-1)/num))); do
- get_json "$i" | process_json &
-done
-
-wait
-aria2c -d "$download_dir" --auto-file-renaming=false --console-log-level=warn -i "$tmp_file"
-rm "$tmp_file"
diff --git a/home/xyz/.local/bin/curlncm b/home/xyz/.local/bin/curlncm
deleted file mode 100755
index 25f39aa9..00000000
--- a/home/xyz/.local/bin/curlncm
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/bin/sh
-# rewrite TianyiShi2001's python script which rewrite NeteaseCloudMusicApi node.js api
-
-# references:
-# https://github.com/ytdl-org/youtube-dl/issues/18051#issuecomment-859964832
-# https://github.com/Binaryify/NeteaseCloudMusicApi
-# info about encrytion and api:
-# https://github.com/metowolf/NeteaseCloudMusicApi/wiki
-# https://github.com/darknessomi/musicbox/wiki
-
-# lan lan, aid=48860966, rid=793052426, example id=1397315179,1817498734
-# cheng ruan, aid=46703185, rid=792968433
-
-# trial and error to get dj_max, don't know why, maybe because it is 2^31 and it is the size limit of whatever type of the variable
-dj_max=2147483647
-dl_urls_tmp="$(mktemp)"
-# printf 'e82ckenh8dichen8' | hexdump -ve '/1 "%02x"'
-key='653832636b656e683864696368656e38'
-url='/api/song/enhance/player/url'
-request_id=$(date +'%s%3N')_$(seq -w 1 1000 | shuf -n1)
-user_agent='Mozilla/5.0 (Linux; U; Android 9; zh-cn; Redmi Note 8 Build/PKQ1.190616.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.5.22'
-cookie="$(printf '"appver":"8.0.0","versioncode":"140","buildver":"1623455100","resolution":"1920x1080","__csrf":"","os":"pc","requestId":"%s"' "$request_id")"
-
-die () {
- echo "error: $*" >&2
- exit 1
-}
-
-# artist, song, djradio id
-while getopts a:i:r: opt; do
- case $opt in
- a) aid="$OPTARG";;
- i) ids="$OPTARG";;
- r) rid="$OPTARG";;
- \?) exit 1;;
- esac
-done
-shift $((OPTIND-1))
-download_dir="${1:-"$PWD"}"
-[ -d "$download_dir" ] || mkdir -p "$download_dir"
-
-if [ "$ids" ]; then
- # temporary solution, can improve by auto curl names
- data="$(echo "$ids" | tr ',' '\n' | awk '{printf("%s\t%s\n",$0,"songname")}')"
-else
- if [ "$rid" ]; then
- data="$(curl -s -G --data-urlencode id="$rid" -d limit="$dj_max" 'https://music.163.com/djradio' | grep 'songlist\|tt f-thide' | sed -e 's/.*songlist-\(.*\)" class.*/\1/g' -e 's/.*title="\(.*\)".*/\1/g' | paste -sd '\t\n' | sort | tr '/' '_')"
- # can only curl featured 50 songs for the artist, can improve
- elif [ "$aid" ]; then
- data="$(curl -s -G --data-urlencode id="$aid" 'https://music.163.com/artist' | grep '\[{.*}\]' | sed -e 's/.*>\[{/\[{/' -e 's/}\]<.*/}\]/' | jq -r '.[]|[.id,.name]|@tsv' | sort | tr '/' '_')"
- fi
- # awk code not print separator at beginning and end steal from:
- # https://unix.stackexchange.com/a/581785/459013
- # not sure awk one-liner or paste way which is better, need benchmark
- ids="$(echo "$data" | awk -F'\t' '{printf "%s%s",sep,$1;sep=","}')"
- #ids="$(echo "$data" | awk -F'\t' '{print $1}' | paste -sd ',')"
-fi
-
-# I don't fully understand following several lines of code
-# I rewrite TianyiShi2001's python script, he rewrites NeteaseCloudMusicApi
-text="$(printf '{"ids":"[%s]","br":999000,"header":{%s}}' "$ids" "$cookie")"
-message="nobody${url}use${text}md5forencrypt"
-digest="$(printf '%s' "$message" | openssl dgst -md5 -hex | awk '{print $2}')"
-params="$(printf '%s-36cd479b6b5-%s-36cd479b6b5-%s' "$url" "$text" "$digest")"
-encrypted_params="$(printf '%s' "$params" | openssl enc -aes-128-ecb -K "$key" | hexdump -ve '/1 "%02X"')"
-# curl default user agent header seems not working
-curl -s -A "$user_agent" -d params="$encrypted_params" 'https://interface3.music.163.com/eapi/song/enhance/player/url' | jq -r '.data|sort_by(.id)|.[].url' > "$dl_urls_tmp"
-[ "$(echo "$data" | wc -l)" -ne "$(wc -l < "$dl_urls_tmp")" ] && die "number of download urls doesn't match request"
-
-# can't download some music if live abroad, may need proxy or vpn
-# using user_agent, content-type header, cookie header, referer are not necessary? but feels faster
-# not sure about cookie header format for aria2c, this link shows that it's kinda messy, so I didn't use it
-# https://github.com/aria2/aria2/issues/545#issuecomment-650070869
-echo "$data" | awk -F'\t' '{printf(" out=%s_%s.mp3\n",$2,$1)}' | paste "$dl_urls_tmp" - -d '\n' | aria2c -U "$user_agent" --header='Content-Type: application/x-www-form-urlencoded' --referer='https://music.163.com' -d "$download_dir" --auto-file-renaming=false --console-log-level=warn -i-
-rm "$dl_urls_tmp"
diff --git a/home/xyz/.local/bin/curlqb b/home/xyz/.local/bin/curlqb
deleted file mode 100755
index c3f6871b..00000000
--- a/home/xyz/.local/bin/curlqb
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-curl -s 'https://github.com/qbittorrent/search-plugins/wiki/Unofficial-search-plugins' | awk -F'"' '
-/require an account/ {exit}
-/\.py/ {
- url=$2
- getline
- getline
- getline
- if($0 !~ /❗|✖/)
- print url
-}
-' | xargs curl -s -Z -L --remote-name-all --create-dirs --output-dir "$1" --
diff --git a/home/xyz/.local/bin/mpva b/home/xyz/.local/bin/mpva
deleted file mode 100755
index a54dfa99..00000000
--- a/home/xyz/.local/bin/mpva
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-# MPV Audio
-
-# fzf has --read0, maybe useful
-# use --loop-file for single file, better performance maybe
-
-if [ $# -eq 0 ]; then
- find "$XDG_MUSIC_DIR" | fzf -m --print0
-fi | xargs -0 sh -c '
-if [ $# -eq 1 ] && ! [ -d "$1" ]; then
- mpv --af= --loop-file=inf --video=no "$1"
-else
- mpv --af= --shuffle --loop-playlist=inf --video=no "$@"
-fi
-' shell "$@"
diff --git a/home/xyz/.local/bin/mpvy b/home/xyz/.local/bin/mpvy
deleted file mode 100755
index 880d1ffa..00000000
--- a/home/xyz/.local/bin/mpvy
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-# MPV Yank/Youtube videos
-# references:
-# https://www.rockyourcode.com/til-how-to-watch-youtube-videos-with-mpv-and-keyboard-shortcuts/
-
-fps=30
-height=$SCR_HEIGHT
-url="$(xsel -ob)"
-flag=s
-
-# option f and h may do nothing if redownload? since same filename exist. yt-dlp won't download same file even without --auto-file-renameing=false. how improve? pass argument to aria2c?
-while getopts Aabd:f:h:su: opt; do
- case $opt in
- # s: streaming, a: aria2c then mpv, A: aria2c
- A|a|s) flag=$opt;;
- b) format='bestvideo+bestaudio/best';;
- d) download_dir="$OPTARG";;
- f) fps="$OPTARG";;
- h) height="$OPTARG";;
- u) url="$OPTARG";;
- \?) exit 1;;
- esac
-done
-if [ -z "$format" ]; then
- vformat="[height<=?$height][fps<=?$fps][vcodec!^=?vp9][vcodec!^=?av01]"
- # usually get .mp4 video + .webm audio on youtube, yt-dlp needs to merge them to .mkv
- # it used to cause problem, but I forget
- format="bestvideo$vformat+bestaudio/best$vformat"
-fi
-
-case $flag in
- # here if use --write-sub, mpv doesn't recognize subtitles?
- # --embed-subs is a little bit better, but still worse then direct streaming
- A) yt-dlp -f "$format" --embed-subs -P "${download_dir:-"$XDG_DOWNLOAD_DIR/mpvy/"}" --sponsorblock-remove all "$url";;
- a) yt-dlp -f "$format" --embed-subs -P "${download_dir:-"$XDG_DOWNLOAD_DIR/mpvy/"}" --sponsorblock-remove all "$url" --exec 'mpv --fs --speed=2';;
- s) mpv --ytdl-format="$format" --ytdl-raw-options='write-sub=' --fs --speed=2 "$url";;
-esac
-# not sure if this is the best practice, but it seems working ;)
-status=$?
-[ $status -ne 0 ] && notify-send 'mpvsel failed'
-exit $status
diff --git a/home/xyz/.local/bin/news b/home/xyz/.local/bin/news
deleted file mode 100755
index bfcf283f..00000000
--- a/home/xyz/.local/bin/news
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-o "$BROWSER" github.com/notifications mail.google.com
-# --hold must be before -e
-# full window: -w156, am and pm in one line: -w114
-o alacritty --hold -e rem -c+2 -@ -w114
-o alacritty --hold -e wtr
-o alacritty -e newsboat
-o alacritty -e weechat
-o telegram-desktop
diff --git a/home/xyz/.local/bin/reco b/home/xyz/.local/bin/reco
deleted file mode 100755
index 068e6ad8..00000000
--- a/home/xyz/.local/bin/reco
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-# useful urls:
-# https://github.com/LukeSmithxyz/voidrice/blob/master/.local/bin/dmenurecord
-# https://wiki.archlinux.org/title/FFmpeg#Screen_capture
-# https://trac.ffmpeg.org/wiki/Capture/Desktop
-
-infofile="/tmp/recoinfo"
-recodir="$XDG_VIDEOS_DIR/recordings/"
-tmpdir="$recodir/tmp/"
-mkdir -p "$recodir" "$tmpdir"
-
-if [ -e "$infofile" ]; then
- read -r pid tmpfile < "$infofile"
- kill "$pid"
- notify-send 'finish recording, start converting'
- ffmpeg -i "$tmpfile" "$recodir/$(time.uuid).mkv"
- notify-send 'finish converting'
- rm "$tmpfile" "$infofile"
-else
- tmpfile="$tmpdir/$(time.uuid).mkv"
- notify-send 'prepare recording'
- # arch wiki way, no audio, less cpu use during capturing (fast?), large file size, need convert afterward
- xrectsel '%w %h %x %y' | xargs sh -c 'ffmpeg -y -loglevel quiet -f x11grab -framerate 25 -s "$2x$3" -i "$DISPLAY+$4,$5" -c:v ffvhuff "$1" & echo $!' shell "$tmpfile" | xargs -I {} printf '%s\t%s' '{}' "$tmpfile" > "$infofile"
- # another way to get subshell ffmpeg child pid
- #xrectsel '%w %h %x %y' | xargs sh -c 'ffmpeg -y -f x11grab -framerate 25 -s "$2x$3" -i "$DISPLAY+$4,$5" -c:v ffvhuff "$1"' shell "$tmpfile" &
- #printf '%s\t%s' "$(ps -o pid= --ppid $!)" "$tmpfile" > "$infofile"
-fi
diff --git a/home/xyz/.local/bin/sbar b/home/xyz/.local/bin/sbar
deleted file mode 100755
index 19789091..00000000
--- a/home/xyz/.local/bin/sbar
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/sh
-# modified from pystardust, GPLv3 license: https://github.com/pystardust/sbar
-
-# INIT
-sec=0
-
-# MODULES
-update_time () {
- time="$(date '+%a %m/%d %H:%M') $(TZ=Asia/Shanghai date '+/%d %H:')"
-}
-
-update_cap () {
- cap="$(if xset q | grep -q "Caps Lock: *on"; then echo A; else echo a; fi)"
-}
-
-update_net () {
- net="$(if nmcli -t --fields type,state device | grep -q '\(ethernet\|wifi\):connected'; then echo 1; else echo 0; fi)"
- vpn="$(if nmcli -t --fields type,state device | grep -q 'tun:connected'; then echo 1; else echo 0; fi)"
-}
-
-update_vol () {
- # $(NF-1) for both alsa and pulseaudio
- vol="$(amixer get Master | awk -F'[][]' 'END{printf("%d %s",($(NF-1)=="on")?1:0,$2)}')"
-}
-
-update_mic () {
- # $(NF-1) for both alsa and pulseaudio
- mic="$(amixer get Capture | awk -F '[][]' 'END{print ($(NF-1)=="on")?1:0}')"
-}
-
-update_bat () {
- bat="$(cat /sys/class/power_supply/BAT1/capacity)%"
-}
-
-display () {
- xsetroot -name "$time | N $net V $vpn | M $vol C $mic | $cap | $bat"
-}
-
-# modules that don't update on their own need to be run at the start for getting their initial value
-update_net
-update_vol
-update_mic
-
-# SIGNALLING
-# trap "<function>;display" "RTMIN+n"
-trap "update_mic;display" "RTMIN"
-trap "update_vol;display" "RTMIN+1"
-# xev can't read my toggle internet keyboard key, don't know what key to use in sxhkd to send signal
-trap "update_net;display" "RTMIN+2"
-trap "update_cap;display" "RTMIN+3"
-# to update it from external commands
-## kill -m $(pidof -x sbar)
-# where m = 34 + n
-
-while :; do
- sleep 1 &
- wait
- [ $((sec % 5 )) -eq 0 ] && update_time # update time every 5 seconds
- [ $((sec % 60)) -eq 0 ] && update_net
- update_cap
- [ $((sec % 60)) -eq 0 ] && update_bat
- # how often the display updates ( 5 seconds )
- [ $((sec % 5 )) -eq 0 ] && display
- sec=$((sec + 1))
-done
diff --git a/home/xyz/.local/bin/shufwall b/home/xyz/.local/bin/shufwall
deleted file mode 100755
index 5b249e12..00000000
--- a/home/xyz/.local/bin/shufwall
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-if [ -z "$1" ]; then
- file=$(find -L "$XDG_PICTURES_DIR/wallpapers" -type f | shuf -n 1)
-else
- file=$(find -L "$@" -maxdepth 1 -type f | shuf -n 1)
-fi
-
-display -resize "${SCR_WIDTH}x$SCR_HEIGHT" -backdrop -window root "$file"
diff --git a/home/xyz/.local/bin/topa b/home/xyz/.local/bin/topa
deleted file mode 100755
index e921bc31..00000000
--- a/home/xyz/.local/bin/topa
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-o alacritty -e htop
-o alacritty -e radeontop -c
-o alacritty -e sudo iotop
-o alacritty -e sudo nethogs
diff --git a/home/xyz/.local/bin/zoom b/home/xyz/.local/bin/zoom
deleted file mode 120000
index c81c2c75..00000000
--- a/home/xyz/.local/bin/zoom
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/zoom-firejail \ No newline at end of file
diff --git a/home/xyz/.local/share/applications/file.desktop b/home/xyz/.local/share/applications/file.desktop
deleted file mode 100644
index 5429fcc7..00000000
--- a/home/xyz/.local/share/applications/file.desktop
+++ /dev/null
@@ -1,4 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=File Manager
-Exec=alacritty --working-directory %u
diff --git a/home/xyz/.xinitrc b/home/xyz/.xinitrc
deleted file mode 100644
index 97bbe93d..00000000
--- a/home/xyz/.xinitrc
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/sh
-
-userresources="$HOME/.Xresources"
-usermodmap="$HOME/.Xmodmap"
-sysresources=/etc/X11/xinit/.Xresources
-sysmodmap=/etc/X11/xinit/.Xmodmap
-
-# merge in defaults and keymaps
-
-if [ -f $sysresources ]; then
- xrdb -merge $sysresources
-fi
-
-if [ -f $sysmodmap ]; then
- xmodmap $sysmodmap
-fi
-
-if [ -f "$userresources" ]; then
- xrdb -merge "$userresources"
-fi
-
-if [ -f "$usermodmap" ]; then
- xmodmap "$usermodmap"
-fi
-
-# start some nice programs
-
-if [ -d /etc/X11/xinit/xinitrc.d ] ; then
- for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
- [ -x "$f" ] && . "$f"
- done
- unset f
-fi
-
-#if [ -e "$XDG_PICTURES_DIR/wallpapers/wallpaper" ]; then
-# display -window root "$XDG_PICTURES_DIR/wallpapers/wallpaper" &
-#else
-# shufwall &
-#fi
-
-#clipmenud &
-fcitx5 -d
-redshift &
-sbar &
-# udiskie recommanded to auto start here in .xinitrc, see:
-# https://github.com/coldfix/udiskie/issues/93
-# https://github.com/coldfix/udiskie/issues/226
-udiskie &
-# xorg-server 21.1.1-2 set correct dpi for my computer, but I choose to take the blue pill
-# Attention, don't use & at the end otherwise dwm status bar won't have proper dpi.
-# xorg-server 21.1.1-3 "fixed" it, so no need now
-#xrandr --dpi 96
-# default fastest windows 10 keyboard repeat delay and rate
-# without editing registry, using filter key, or other third party program
-# see http://stereopsis.com/keyrepeat/
-xset r rate 250 30
-# https://dianne.skoll.ca/wiki/Remind_FAQ#How_can_I_generate_popup_windows_to_warn_me_of_timed_reminders.3F
-rem -z -k'notify-send -u critical "reminder" %s &' &
-alacritty &
-exec dwm