summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbh <qn+git@epicurus.dev>2026-04-03 00:09:54 +0800
committerbh <qn+git@epicurus.dev>2026-04-03 00:09:54 +0800
commitbbc566eaae97e481d78bdb54395fecb13bf52c8d (patch)
treee0d71076c05b856731c020f777f353427e524680
parentad7b9ed195a41e9088be9ca36886ed88d4b7041b (diff)
Clean stuff up
-rw-r--r--.gitignore2
-rwxr-xr-xbspwm/.config/bspwm/scripts/.fullscreen.bak47
-rwxr-xr-xbspwm/.config/bspwm/scripts/.screenshot.bak13
-rwxr-xr-xbspwm/.config/bspwm/scripts/.snip.bak13
-rwxr-xr-xbspwm/.config/bspwm/scripts/.truefull26
-rw-r--r--dunst/.config/dunst/dunstrc.bak442
-rw-r--r--hypr/.config/hypr/.hyprland.conf.bak223
-rw-r--r--mpd/.config/mpd/.mpd.conf.bak402
-rw-r--r--mpd/.config/mpd/databasebin12029 -> 0 bytes
-rw-r--r--mpd/.config/mpd/sticker.sqlbin12288 -> 0 bytes
10 files changed, 2 insertions, 1166 deletions
diff --git a/.gitignore b/.gitignore
index 431f718..0e018c4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,8 @@
mpd/.config/mpd/log
mpd/.config/mpd/pid
mpd/.config/mpd/state
+mpd/.config/mpd/database
+mpd/.config/mpd/sticker.sql
# opencode - dependencies
opencode/.config/opencode/node_modules/
diff --git a/bspwm/.config/bspwm/scripts/.fullscreen.bak b/bspwm/.config/bspwm/scripts/.fullscreen.bak
deleted file mode 100755
index a3062dd..0000000
--- a/bspwm/.config/bspwm/scripts/.fullscreen.bak
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-# Toggle fullscreen mode: hide all other nodes and fullscreen current node
-
-STATE_FILE="/tmp/bspwm_fullscreen_state"
-
-# Check if we're already in fullscreen mode
-if [ -f "$STATE_FILE" ]; then
- # Restore mode: unhide all nodes and exit fullscreen
- while IFS= read -r node_id; do
- # First line is the fullscreen node, rest are hidden nodes
- if [ -z "$fullscreen_node" ]; then
- fullscreen_node="$node_id"
- # Exit fullscreen on the current fullscreen node
- bspc node "$fullscreen_node" -t tiled 2>/dev/null
- else
- # Unhide the hidden nodes
- bspc node "$node_id" -g hidden=off 2>/dev/null
- fi
- done < "$STATE_FILE"
-
- # Remove state file
- rm "$STATE_FILE"
-else
- # Enter fullscreen mode: hide all other nodes
- focused_node=$(bspc query -N -n focused)
-
- if [ -z "$focused_node" ]; then
- echo "No focused node found"
- exit 1
- fi
-
- # Store the focused node ID first
- echo "$focused_node" > "$STATE_FILE"
-
- # Get all visible windows on current desktop except the focused one
- bspc query -N -d focused -n .window | while read -r node_id; do
- if [ "$node_id" != "$focused_node" ]; then
- # Hide the node
- bspc node "$node_id" -g hidden=on
- # Store the hidden node ID
- echo "$node_id" >> "$STATE_FILE"
- fi
- done
-
- # Make the focused node fullscreen
- bspc node "$focused_node" -t fullscreen
-fi
diff --git a/bspwm/.config/bspwm/scripts/.screenshot.bak b/bspwm/.config/bspwm/scripts/.screenshot.bak
deleted file mode 100755
index f15b6f1..0000000
--- a/bspwm/.config/bspwm/scripts/.screenshot.bak
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-# Ensure the folder exists
-mkdir -p ~/Pictures/Screenshots
-
-# Create timestamped filename
-FILE=~/Pictures/Screenshots/$(date '+%Y-%m-%d_%H-%M-%S').png
-
-# Take screenshot (full screen) using maim
-maim "$FILE" | xclip -selection clipboard -t image/png
-
-# Notify via dunst
-dunstify "Screenshot Taken!" -i "$FILE"
diff --git a/bspwm/.config/bspwm/scripts/.snip.bak b/bspwm/.config/bspwm/scripts/.snip.bak
deleted file mode 100755
index 02c8784..0000000
--- a/bspwm/.config/bspwm/scripts/.snip.bak
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-# Ensure folder exists
-mkdir -p ~/Pictures/Screenshots
-
-# Timestamped filename
-FILE=~/Pictures/Screenshots/$(date '+%Y-%m-%d_%H-%M-%S').png
-
-# Take screenshot (interactive selection)
-maim -s "$FILE" | xclip -selection clipboard -t image/png
-
-# Notify with dunst, explicitly setting icon as the screenshot
-dunstify -a "Screenshot Taken!" -i "$FILE"
diff --git a/bspwm/.config/bspwm/scripts/.truefull b/bspwm/.config/bspwm/scripts/.truefull
deleted file mode 100755
index 85ebeab..0000000
--- a/bspwm/.config/bspwm/scripts/.truefull
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env bash
-
-# Get the focused window
-FOCUSED=$(bspc query -N -n focused)
-if [ -z "$FOCUSED" ]; then
- exit 1
-fi
-
-# Check if the window is already on the temporary fullscreen desktop
-TEMP_DESKTOP="fullscreen-$$"
-CURRENT_DESKTOP=$(bspc query -D -d focused --names)
-
-# Toggle behavior
-if bspc query -D -d "$TEMP_DESKTOP" &>/dev/null; then
- # The temporary desktop exists → move back to original desktop
- ORIGINAL=$(bspc query -D -d | grep -v "$TEMP_DESKTOP" | head -n1)
- bspc node "$FOCUSED" -d "$ORIGINAL"
- bspc desktop "$ORIGINAL" -f
- bspc desktop "$TEMP_DESKTOP" --remove
-else
- # Create temporary desktop and move the window there
- bspc monitor -d "$TEMP_DESKTOP"
- bspc node "$FOCUSED" -d "$TEMP_DESKTOP"
- bspc desktop "$TEMP_DESKTOP" -f
- bspc node "$FOCUSED" -t fullscreen
-fi
diff --git a/dunst/.config/dunst/dunstrc.bak b/dunst/.config/dunst/dunstrc.bak
deleted file mode 100644
index a9b183f..0000000
--- a/dunst/.config/dunst/dunstrc.bak
+++ /dev/null
@@ -1,442 +0,0 @@
-# customized dunst setup fro EndeavourOS i3
-# https://github.com/endeavouros-team/endeavouros-i3wm-setup
-# BH DUNSTRC
-# 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 = none
-
- ### Geometry ###
-
- # dynamic width from 0 to 300
- # width = (0, 300)
- # constant width of 300
- width = 300
-
- # The maximum height of a single notification, excluding the frame.
- height = 300
-
- # Position the notification in the top right corner
- origin = bottom-right
-
- # Offset from the origin
- offset = 30x40
-
- # 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 progress 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 = 2
-
- # 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 = "#7f3fbf"
-
- # 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 = auto
-
- # 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 = 0
-
- ### Text ###
-
- font = Noto Sans Regular 9
-
- # 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://docs.gtk.org/Pango/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 = true
-
- # Display indicators for URLs (U) and actions (A).
- show_indicators = no
-
- ### 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/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
- icon_path = /usr/share/icons/Qogir/16/status:/usr/share/icons/Qogir/16/devices/:/usr/share/icons/Qogir/24/panel/:/usr/share/icons/Qogir/16/apps/:/usr/share/pixmaps/
-
- ### History ###
-
- # Should a notification popped up from history be sticky or timeout
- # as if it would normally do.
- sticky_history = false
-
- # Maximum amount of notifications kept in history
- history_length = 0
-
- ### 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 = 7
-
- # 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 = "#004D4F"
- foreground = "#00FFFF"
- frame_color = "#00FFFF"
- timeout = 5
- # Icon for notifications with low urgency, uncomment to enable
- icon = /usr/share/icons/Qogir/16/status/package-installed-outdated.svg
-
-[urgency_normal]
- background = "#004D4F"
- foreground = "#2df793"
- frame_color = "#2df793"
- timeout = 5
- # Icon for notifications with normal urgency, uncomment to enable
- icon = /usr/share/icons/Qogir/16/emblems/emblem-question.svg
-
-[urgency_critical]
- background = "#591812"
- foreground = "#ffffff"
- frame_color = "#ff7f7f"
- timeout = 120
- # Icon for notifications with critical urgency, uncomment to enable
- icon = /usr/share/icons/Qogir/16/actions/dialog-warning.svg
-
-# 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
-# set_category
-# timeout
-# urgency
-# skip_display
-# history_ignore
-# action_name
-# word_wrap
-# ellipsize
-# alignment
-#
-# Shell-like globing 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/hypr/.config/hypr/.hyprland.conf.bak b/hypr/.config/hypr/.hyprland.conf.bak
deleted file mode 100644
index 4fcf08a..0000000
--- a/hypr/.config/hypr/.hyprland.conf.bak
+++ /dev/null
@@ -1,223 +0,0 @@
-############################################
-# Keybindings
-############################################
-
-input {
- kb_layout = us
- kb_variant = dvps
- kb_options = caps:backspace
-}
-
-
-############################################
-# Colours
-############################################
-
-$darkcyan = rgb(007575)
-$lightcyan = rgb(1ebaba)
-$lightercyan = rgb(19e0e0)
-$red = rgb(e55235)
-
-
-############################################
-# Workspaces (Hyprland calls them "desktops")
-############################################
-
-# Names: 一 二 三 四 五 六 七 八 九 十 󱉼
-# You don’t assign them globally; you move to them or bind to them.
-
-# Example binds (uncomment if you want):
-# bind = SUPER, 1, workspace, name:一
-# bind = SUPER, 2, workspace, name:二
-# …
-# bind = SUPER, 0, workspace, name:󱉼
-
-
-############################################
-# Window Appearance
-############################################
-
-general {
- border_size = 1
- gaps_in = 6
- gaps_out = 6
-}
-
-decoration {
- rounding = 0
-
- active_border_color = $lightercyan
- inactive_border_color = $darkcyan
- urgent_border_color = $red
-
- # No split ratio or monocle mode — Hyprland tiling is automatic.
-}
-
-
-############################################
-# Startup Applications
-############################################
-
-exec-once = kitty
-exec-once = kitty
-
-exec-once = polybar
-
-exec-once = feh --bg-fill /home/bh/Pictures/Wallpapers/TealNebula.jpg
-
-exec-once = dunst
-
-
-
-############################################
-# Floating Rules
-############################################
-
-windowrulev2 = float, class:^(floating)$
-
-
-############################################
-# MOVE FOCUS (bspc node -f X)
-############################################
-
-bind = SUPER, h, movefocus, l
-bind = SUPER, j, movefocus, d
-bind = SUPER, k, movefocus, u
-bind = SUPER, l, movefocus, r
-
-
-############################################
-# MOVE WINDOW (bspc node -s X)
-############################################
-
-bind = SUPER SHIFT, h, movewindow, l
-bind = SUPER SHIFT, j, movewindow, d
-bind = SUPER SHIFT, k, movewindow, u
-bind = SUPER SHIFT, l, movewindow, r
-
-
-############################################
-# PRESEL (Hyprland does not have preselection)
-# → closest equivalent is splitratio and togglesplit
-############################################
-
-# directional preselect
-bind = SUPER CTRL, h, splitratio, -0.1
-bind = SUPER CTRL, j, splitratio, +0.1
-bind = SUPER CTRL, k, splitratio, -0.1
-bind = SUPER CTRL, l, splitratio, +0.1
-
-# ratio presets
-bind = SUPER CTRL, n, splitratio, 0.75
-bind = SUPER CTRL, t, splitratio, 0.25
-
-
-############################################
-# SWITCH WORKSPACES
-############################################
-
-bind = SUPER, ampersand, workspace, name:一
-bind = SUPER, bracketleft, workspace, name:二
-bind = SUPER, braceleft, workspace, name:三
-bind = SUPER, braceright, workspace, name:四
-bind = SUPER, parenleft, workspace, name:五
-bind = SUPER, equal, workspace, name:六
-bind = SUPER, asterisk, workspace, name:七
-bind = SUPER, parenright, workspace, name:八
-bind = SUPER, plus, workspace, name:九
-bind = SUPER, bracketright, workspace, name:十
-bind = SUPER, exclam, workspace, name:󱉼
-
-
-############################################
-# MOVE WINDOW TO WORKSPACE
-############################################
-
-bind = SUPER SHIFT, ampersand, movetoworkspace, name:一
-bind = SUPER SHIFT, bracketleft, movetoworkspace, name:二
-bind = SUPER SHIFT, braceleft, movetoworkspace, name:三
-bind = SUPER SHIFT, braceright, movetoworkspace, name:四
-bind = SUPER SHIFT, parenleft, movetoworkspace, name:五
-bind = SUPER SHIFT, equal, movetoworkspace, name:六
-bind = SUPER SHIFT, asterisk, movetoworkspace, name:七
-bind = SUPER SHIFT, parenright, movetoworkspace, name:八
-bind = SUPER SHIFT, plus, movetoworkspace, name:九
-bind = SUPER SHIFT, bracketright, movetoworkspace, name:十
-bind = SUPER SHIFT, exclam, movetoworkspace, name:󱉼
-
-
-############################################
-# BSPWM FUNCTIONS → HYPRLAND EQUIVALENTS
-############################################
-
-# Toggle Monocle
-bind = SUPER, m, togglefloating
-
-# Fullscreen (your custom script)
-bind = SUPER, f, exec, ~/Scripts/fullscreen
-
-# Close window
-bind = SUPER, c, killactive
-
-# Restart WM (Hyprland version)
-bind = SUPER SHIFT, c, exec, hyprctl reload
-
-# Swap with last window
-bind = SUPER CTRL, m, movetolast
-
-
-############################################
-# OTHER FUNCTIONS
-############################################
-
-# Screen locker
-bind = SUPER, slash, exec, ~/Scripts/blur-lock
-
-
-############################################
-# APPLICATIONS
-############################################
-
-bind = SUPER, Return, exec, kitty
-bind = SUPER ALT, Return, exec, kitty --class floating
-
-bind = SUPER, w, exec, zen-browser
-bind = SUPER, d, exec, rofi -modi drun -show drun -config ~/.config/rofi/rofidmenu.rasi
-bind = SUPER, v, exec, bash ~/Scripts/clipboard
-bind = SUPER, e, exec, emacs
-bind = SUPER, s, exec, ~/Scripts/screenshot
-bind = SUPER SHIFT, s, exec, ~/Scripts/snip
-
-
-############################################
-# AUDIO KEYS
-############################################
-
-# Volume up
-bind = , XF86AudioRaiseVolume, exec, \
- pactl set-sink-volume @DEFAULT_SINK@ +5% && VOLUME=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '\\d+%' | head -1) && dunstify " Volume: $VOLUME" -h int:value:"${VOLUME%\%}" -r 2593 -t 1000
-
-# Volume down
-bind = , XF86AudioLowerVolume, exec, \
- pactl set-sink-volume @DEFAULT_SINK@ -5% && VOLUME=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '\\d+%' | head -1) && dunstify " Volume: $VOLUME" -h int:value:"${VOLUME%\%}" -r 2593 -t 1000
-
-# Mute
-bind = , XF86AudioMute, exec, ~/Scripts/mute
-
-############################################
-# Application Rules
-############################################
-
-# Window rules equivalent of bspc rule
-
-# kitty → workspace 一
-windowrulev2 = workspace name:一, class:^(kitty)$
-
-# firefox → workspace 二
-windowrulev2 = workspace name:二, class:^(firefox)$
-
-# zen → workspace 二
-windowrulev2 = workspace name:二, class:^(zen|zen-browser)$
-
-# Emacs → workspace 三
-windowrulev2 = workspace name:三, class:^(Emacs)$
diff --git a/mpd/.config/mpd/.mpd.conf.bak b/mpd/.config/mpd/.mpd.conf.bak
deleted file mode 100644
index 9e18996..0000000
--- a/mpd/.config/mpd/.mpd.conf.bak
+++ /dev/null
@@ -1,402 +0,0 @@
-# An example configuration file for MPD.
-# Read the user manual for documentation: http://www.musicpd.org/doc/user/
-
-
-# Files and directories #######################################################
-#
-# This setting controls the top directory which MPD will search to discover the
-# available audio files and add them to the daemon's online database. This
-# setting defaults to the XDG directory, otherwise the music directory will be
-# be disabled and audio files will only be accepted over ipc socket (using
-# file:// protocol) or streaming files over an accepted protocol.
-#
-#music_directory "$XDG_MUSIC_DIR"
-music_directory "~/Music"
-#
-# This setting sets the MPD internal playlist directory. The purpose of this
-# directory is storage for playlists created by MPD. The server will use
-# playlist files not created by the server but only if they are in the MPD
-# format. This setting defaults to playlist saving being disabled.
-#
-#playlist_directory "$XDG_CONFIG_HOME/mpd/playlists"
-playlist_directory "~/.mpd/playlists"
-#
-# This setting sets the location of the MPD database. This file is used to
-# load the database at server start up and store the database while the
-# server is not up. This setting defaults to disabled which will allow
-# MPD to accept files over ipc socket (using file:// protocol) or streaming
-# files over an accepted protocol.
-#
-#db_file "$XDG_CACHE_HOME/mpd/database"
-db_file "~/.mpd/database"
-
-# These settings are the locations for the daemon log files for the daemon.
-#
-# The special value "syslog" makes MPD use the local syslog daemon. This
-# setting defaults to logging to syslog.
-#
-# If you use systemd, do not configure a log_file. With systemd, MPD
-# defaults to the systemd journal, which is fine.
-#
-#log_file "$XDG_CACHE_HOME/mpd/log"
-#log_file "~/.mpd/log"
-
-# This setting sets the location of the file which stores the process ID
-# for use of mpd --kill and some init scripts. This setting is disabled by
-# default and the pid file will not be stored.
-#
-# If you use systemd, do not configure a pid_file.
-#
-#pid_file "$XDG_RUNTIME_DIR/mpd/mpd.pid"
-#pid_file "~/.mpd/pid"
-
-# This setting sets the location of the file which contains information about
-# most variables to get MPD back into the same general shape it was in before
-# it was brought down. This setting is disabled by default and the server
-# state will be reset on server start up.
-#
-#state_file "$XDG_RUNTIME_DIR/mpd/state"
-state_file "~/.mpd/state"
-#
-# The location of the sticker database. This is a database which
-# manages dynamic information attached to songs.
-#
-#sticker_file "$XDG_CACHE_HOME/sticker.sql"
-sticker_file "~/.mpd/sticker.sql"
-#
-###############################################################################
-
-
-# General music daemon options ################################################
-#
-# This setting specifies the user that MPD will run as. MPD should never run as
-# root and you may use this setting to make MPD change its user ID after
-# initialization. This setting is disabled by default and MPD is run as the
-# current user.
-#
-user "bh"
-#
-# This setting specifies the group that MPD will run as. If not specified
-# primary group of user specified with "user" setting will be used (if set).
-# This is useful if MPD needs to be a member of group such as "audio" to
-# have permission to use sound card.
-#
-#group "nogroup"
-#
-# This setting sets the address for the daemon to listen on. Careful attention
-# should be paid if this is assigned to anything other than the default, any.
-# This setting can deny access to control of the daemon. Not effective if
-# systemd socket activation is in use.
-#
-# For network
-#bind_to_address "any"
-#
-# And for Unix Socket
-#bind_to_address "$XDG_RUNTIME_DIR/mpd/socket"
-#bind_to_address "~/.mpd/socket"
-#
-# This setting is the TCP port that is desired for the daemon to get assigned
-# to.
-#
-#port "6600"
-#
-# Suppress all messages below the given threshold. Use "verbose" for
-# troubleshooting. Available setting arguments are "notice", "info", "verbose",
-# "warning" and "error".
-#
-#log_level "notice"
-#
-# Setting "restore_paused" to "yes" puts MPD into pause mode instead
-# of starting playback after startup.
-#
-#restore_paused "no"
-#
-# This setting enables MPD to create playlists in a format usable by other
-# music players.
-#
-#save_absolute_paths_in_playlists "no"
-#
-# This setting defines a list of tag types that will be extracted during the
-# audio file discovery process. The complete list of possible values can be
-# found in the user manual.
-#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
-#
-# This example just enables the "comment" tag without disabling all
-# the other supported tags:
-#metadata_to_use "+comment"
-#
-# This setting enables automatic update of MPD's database when files in
-# music_directory are changed. (Linux only)
-#
-#auto_update "yes"
-#
-# Limit the depth of the directories being watched, 0 means only watch
-# the music directory itself. There is no limit by default.
-#
-#auto_update_depth "3"
-#
-###############################################################################
-
-
-# Symbolic link behavior ######################################################
-#
-# If this setting is set to "yes", MPD will discover audio files by following
-# symbolic links outside of the configured music_directory.
-#
-#follow_outside_symlinks "yes"
-#
-# If this setting is set to "yes", MPD will discover audio files by following
-# symbolic links inside of the configured music_directory.
-#
-#follow_inside_symlinks "yes"
-#
-###############################################################################
-
-
-# Zeroconf / Avahi Service Discovery ##########################################
-#
-# If this setting is set to "yes", service information will be published with
-# Zeroconf / Avahi.
-#
-#zeroconf_enabled "yes"
-#
-# The argument to this setting will be the Zeroconf / Avahi unique name for
-# this MPD server on the network. %h will be replaced with the hostname.
-#
-#zeroconf_name "Music Player @ %h"
-#
-###############################################################################
-
-
-# Permissions #################################################################
-#
-# If this setting is set, MPD will require password authorization. The password
-# setting can be specified multiple times for different password profiles.
-#
-#password "password@read,add,control,admin"
-#
-# This setting specifies the permissions a user has who has not yet logged in.
-#
-#default_permissions "read,add,control,admin"
-#
-###############################################################################
-
-
-# Database #######################################################################
-#
-# An example of a database section instead of the old 'db_file' setting.
-# It enables mounting other storages into the music directory.
-#
-#database {
-# plugin "simple"
-# path "~/.local/share/mpd/db"
-# cache_directory "~/.local/share/mpd/cache"
-#}
-#
-# An example of database config for a satellite setup
-#
-#music_directory "nfs://fileserver.local/srv/mp3"
-#database {
-# plugin "proxy"
-# host "other.mpd.host"
-# port "6600"
-#}
-
-# Input #######################################################################
-#
-input {
- plugin "curl"
-# proxy "proxy.isp.com:8080"
-# proxy_user "user"
-# proxy_password "password"
-}
-
-#
-###############################################################################
-
-# Audio Output ################################################################
-#
-# MPD supports various audio output types, as well as playing through multiple
-# audio outputs at the same time, through multiple audio_output settings
-# blocks. Setting this block is optional, though the server will only attempt
-# autodetection for one sound card.
-#
-# An example of an ALSA output:
-#
-#audio_output {
-# type "alsa"
-# name "My ALSA Device"
-## device "hw:0,0" # optional
-## mixer_type "hardware" # optional
-## mixer_device "default" # optional
-## mixer_control "PCM" # optional
-## mixer_index "0" # optional
-#}
-#
-# An example of an OSS output:
-#
-#audio_output {
-# type "oss"
-# name "My OSS Device"
-## device "/dev/dsp" # optional
-## mixer_type "hardware" # optional
-## mixer_device "/dev/mixer" # optional
-## mixer_control "PCM" # optional
-#}
-#
-# An example of a shout output (for streaming to Icecast):
-#
-#audio_output {
-# type "shout"
-# encoder "vorbis" # optional
-# name "My Shout Stream"
-# host "localhost"
-# port "8000"
-# mount "/mpd.ogg"
-# password "hackme"
-# quality "5.0"
-# bitrate "128"
-# format "44100:16:1"
-## protocol "icecast2" # optional
-## user "source" # optional
-## description "My Stream Description" # optional
-## url "http://example.com" # optional
-## genre "jazz" # optional
-## public "no" # optional
-## timeout "2" # optional
-## mixer_type "software" # optional
-#}
-#
-# An example of a recorder output:
-#
-#audio_output {
-# type "recorder"
-# name "My recorder"
-# encoder "vorbis" # optional, vorbis or lame
-# path "/var/lib/mpd/recorder/mpd.ogg"
-## quality "5.0" # do not define if bitrate is defined
-# bitrate "128" # do not define if quality is defined
-# format "44100:16:1"
-#}
-#
-# An example of a httpd output (built-in HTTP streaming server):
-#
-#audio_output {
-# type "httpd"
-# name "My HTTP Stream"
-# encoder "vorbis" # optional, vorbis or lame
-# port "8000"
-# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
-## quality "5.0" # do not define if bitrate is defined
-# bitrate "128" # do not define if quality is defined
-# format "44100:16:1"
-# max_clients "0" # optional 0=no limit
-#}
-#
-# An example of a pulseaudio output (streaming to a remote pulseaudio server)
-#
-#audio_output {
-# type "pulse"
-# name "My Pulse Output"
-## server "remote_server" # optional
-## sink "remote_server_sink" # optional
-## media_role "media_role" #optional
-#}
-#
-# An example of a winmm output (Windows multimedia API).
-#
-#audio_output {
-# type "winmm"
-# name "My WinMM output"
-## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
-# or
-## device "0" # optional
-## mixer_type "hardware" # optional
-#}
-#
-# An example of a wasapi output (Windows multimedia API).
-#
-#audio_output {
-# type "wasapi"
-# name "My WASAPI output"
-## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
-# or
-## device "0" # optional
-## mixer_type "hardware" # optional
-## Exclusive mode blocks all other audio source, and get best audio quality without resampling.
-## exclusive "no" # optional
-## Enumerate all devices in log.
-## enumerate "no" # optional
-#}
-#
-# An example of an openal output.
-#
-#audio_output {
-# type "openal"
-# name "My OpenAL output"
-## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
-#}
-#
-# An example of an sndio output.
-#
-#audio_output {
-# type "sndio"
-# name "sndio output"
-# mixer_type "hardware"
-#}
-#
-# An example of an OS X output:
-#
-#audio_output {
-# type "osx"
-# name "My OS X Device"
-## device "Built-in Output" # optional
-## channel_map "-1,-1,0,1" # optional
-#}
-#
-## Example "pipe" output:
-#
-#audio_output {
-# type "pipe"
-# name "my pipe"
-# command "aplay -f cd 2>/dev/null"
-## Or if you're want to use AudioCompress
-# command "AudioCompress -m | aplay -f cd 2>/dev/null"
-## Or to send raw PCM stream through PCM:
-# command "nc example.org 8765"
-# format "44100:16:2"
-#}
-#
-## An example of a null output (for no audio output):
-#
-#audio_output {
-# type "null"
-# name "My Null Output"
-# mixer_type "none" # optional
-#}
-#
-###############################################################################
-
-
-# Normalization automatic volume adjustments ##################################
-#
-# This setting specifies the type of ReplayGain to use. This setting can have
-# the argument "off", "album", "track" or "auto". "auto" is a special mode that
-# chooses between "track" and "album" depending on the current state of
-# random playback. If random playback is enabled then "track" mode is used.
-# See <https://wiki.hydrogenaud.io/index.php?title=Replaygain> for
-# more details about ReplayGain.
-# This setting is off by default.
-#
-#replaygain "album"
-#
-###############################################################################
-
-# Character Encoding ##########################################################
-#
-# If file or directory names do not display correctly for your locale then you
-# may need to modify this setting.
-#
-#filesystem_charset "UTF-8"
-#
-###############################################################################
diff --git a/mpd/.config/mpd/database b/mpd/.config/mpd/database
deleted file mode 100644
index 9a81870..0000000
--- a/mpd/.config/mpd/database
+++ /dev/null
Binary files differ
diff --git a/mpd/.config/mpd/sticker.sql b/mpd/.config/mpd/sticker.sql
deleted file mode 100644
index 32fe36b..0000000
--- a/mpd/.config/mpd/sticker.sql
+++ /dev/null
Binary files differ