diff --git a/.claude/settings.json##os.Linux b/.claude/settings.json##os.Linux index f392fde..171e120 100644 --- a/.claude/settings.json##os.Linux +++ b/.claude/settings.json##os.Linux @@ -43,7 +43,8 @@ "code-review@claude-plugins-official": true, "code-simplifier@claude-plugins-official": true, "playwright@claude-plugins-official": true, - "superpowers@claude-plugins-official": true + "superpowers@claude-plugins-official": true, + "coderabbit@claude-plugins-official": true }, "sandbox": { "enabled": false, @@ -58,5 +59,6 @@ "docker" ] }, + "voiceEnabled": true, "skipDangerousModePermissionPrompt": true } diff --git a/.codex/config.toml##os.Linux b/.codex/config.toml##os.Linux index 650bd54..e6a99ae 100644 --- a/.codex/config.toml##os.Linux +++ b/.codex/config.toml##os.Linux @@ -7,6 +7,10 @@ tool_output_token_limit = 25000 # With tool_output_token_limit=25000 ⇒ 273000 - (25000 + 15000) = 233000 model_auto_compact_token_limit = 233000 suppress_unstable_features_warning = true + +[sandbox_workspace_write] +network_access = true + [features] ghost_commit = false unified_exec = true @@ -95,6 +99,33 @@ trust_level = "trusted" [projects."/home/sudacode/.config/hypr"] trust_level = "trusted" +[projects."/home/sudacode/.cache/paru/clone/python-fugashi"] +trust_level = "trusted" + +[projects."/home/sudacode/.local/share/Anki2/addons21/200813220"] +trust_level = "trusted" + +[projects."/home/sudacode/packages/maintaining/python-manga-ocr"] +trust_level = "trusted" + +[projects."/home/sudacode/S/downloads"] +trust_level = "trusted" + +[projects."/home/sudacode/.config/waybar"] +trust_level = "trusted" + +[projects."/home/sudacode"] +trust_level = "trusted" + +[projects."/home/sudacode/.config/pipewire"] +trust_level = "trusted" + +[projects."/home/sudacode/.config/git"] +trust_level = "trusted" + +[notice.model_migrations] +"gpt-5.3-codex" = "gpt-5.4" + [mcp_servers.backlog] command = "backlog" args = ["mcp", "start"] diff --git a/.config/SubMiner/config.jsonc##os.Linux b/.config/SubMiner/config.jsonc##os.Linux index a5bb81d..13769ed 100644 --- a/.config/SubMiner/config.jsonc##os.Linux +++ b/.config/SubMiner/config.jsonc##os.Linux @@ -148,7 +148,7 @@ "textRendering": "geometricPrecision", "textShadow": "0 3px 10px rgba(0,0,0,0.69)", "fontStyle": "normal", - "backgroundColor": "transparent", + // "backgroundColor": "transparent", "hoverTokenColor": "#f4dbd6", "hoverBackground": "rgba(54, 58, 79, 0.84)", "preserveLineBreaks": false, @@ -253,11 +253,17 @@ "subtitleDictionaries": true, "jellyfinRemoteSession": false, }, - // "controller": { - // "preferredGamepadId": "8BitDo 8BitDo Ultimate 2 Wireless Controller for PC (Vendor: 2dc8 Product: 310b)", - // "preferredGamepadLabel": "8BitDo 8BitDo Ultimate 2 Wireless Controller for PC (Vendor: 2dc8 Product: 310b)", - // }, - "yomitan": { - "externalProfilePath": "~/.config/gsm_overlay", + "controller": { + "preferredGamepadId": "8BitDo 8BitDo Ultimate 2 Wireless Controller for PC (Vendor: 2dc8 Product: 310b)", + "preferredGamepadLabel": "8BitDo 8BitDo Ultimate 2 Wireless Controller for PC (Vendor: 2dc8 Product: 310b)", }, + "yomitan": { + "externalProfilePath": "", + }, + "stats": { + "toggleKey": "Backquote", // Key code to toggle the stats overlay. + "serverPort": 6969, // Port for the stats HTTP server. + "autoStartServer": true, // Automatically start the stats server on launch. Values: true | false + "autoOpenBrowser": false, + }, // Local immersion stats dashboard served on localhost and available as an in-app overlay. } diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index a7807bb..ea9e4aa 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -119,7 +119,7 @@ general { # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false - layout = dwindle + layout = scrolling } # https://wiki.hyprland.org/Configuring/Variables/#decoration @@ -197,6 +197,10 @@ dwindle { split_width_multiplier = 1.69 } +scrolling { + fullscreen_on_one_column = true +} + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more master { new_status = slave diff --git a/.config/hypr/keybindings.conf b/.config/hypr/keybindings.conf index ab15db7..7842e55 100644 --- a/.config/hypr/keybindings.conf +++ b/.config/hypr/keybindings.conf @@ -158,8 +158,13 @@ bind = ALT, g, exec, /opt/mpv-yomitan/mpv-yomitan.AppImage --toggle # F5 bind = ,code:71, exec, ~/projects/scripts/whisper_record_transcribe.py --mode toggle --output type - # SubMiner bind = ALT SHIFT, O, pass, class:^(SubMiner)$ bind = ALT SHIFT, I, pass, class:^(SubMiner)$ bind = ALT SHIFT, C, pass, class:^(SubMiner)$ + +# {{{ scrolling +bind = $mainMod, comma, layoutmsg, swapcol l +bind = $mainMod, period, layoutmsg, fit all +bind = $mainMod, slash, layoutmsg, fit active +# }}} diff --git a/.config/mpv/mpv_websocket##os.Linux b/.config/mpv/mpv_websocket##os.Linux deleted file mode 100755 index 9092c62..0000000 Binary files a/.config/mpv/mpv_websocket##os.Linux and /dev/null differ diff --git a/.config/mpv/scripts/run_websocket_server.lua b/.config/mpv/scripts/run_websocket_server.lua deleted file mode 100644 index c547794..0000000 --- a/.config/mpv/scripts/run_websocket_server.lua +++ /dev/null @@ -1,110 +0,0 @@ --- mpv_websocket --- https://github.com/kuroahna/mpv_websocket - -local use_secondary_subs = false - -local utils = require("mp.utils") - -local platform = mp.get_property_native("platform") - -local config_file_path = mp.find_config_file("mpv.conf") -local config_folder_path, config_file = utils.split_path(config_file_path) -local mpv_websocket_path = - utils.join_path(config_folder_path, platform == "windows" and "mpv_websocket.exe" or "mpv_websocket") -local initialised_websocket - -local _, err = utils.file_info(config_file_path) -if err then - error("failed to open mpv config file `" .. config_file_path .. "`") -end - -local _, err = utils.file_info(mpv_websocket_path) -if err then - error("failed to open mpv_websocket") -end - -local function find_mpv_socket(config_file_path) - -- First, try to get from mpv properties (includes command-line options) - local mpv_socket = mp.get_property("input-ipc-server") - if mpv_socket and mpv_socket ~= "" then - return mpv_socket - end - - -- Fall back to reading config file - local file = io.open(config_file_path, "r") - if file == nil then - error("failed to read mpv config file `" .. config_file_path .. "`") - end - - for line in file:lines() do - mpv_socket = line:match("^input%-ipc%-server%s*=%s*(%g+)%s*") - if mpv_socket then - break - end - end - - file:close() - - if not mpv_socket then - error("input-ipc-server option does not exist in `" .. config_file_path .. "`") - end - - return mpv_socket -end - -local mpv_socket = find_mpv_socket(config_file_path) -if platform == "windows" then - mpv_socket = "\\\\.\\pipe" .. mpv_socket:gsub("/", "\\") -end - -local function start_websocket() - local args = { - mpv_websocket_path, - "-m", - mpv_socket, - "-w", - "6677", - } - - if use_secondary_subs then - table.insert(args, "-s") - end - - initialised_websocket = mp.command_native_async({ - name = "subprocess", - playback_only = false, - capture_stdout = true, - capture_stderr = true, - args = args, - }) -end - -local function end_websocket() - mp.abort_async_command(initialised_websocket) - initialised_websocket = nil -end - -local function toggle_websocket() - local paused = mp.get_property_bool("pause") - if initialised_websocket and paused then - end_websocket() - elseif not initialised_websocket and not paused then - start_websocket() - end -end - -local function toggle_subs_type() - if use_secondary_subs then - use_secondary_subs = false - else - use_secondary_subs = true - end - if initialised_websocket then - end_websocket() - start_websocket() - end -end - -mp.register_script_message("togglewebsocket", toggle_websocket) -mp.register_script_message("togglesubstype", toggle_subs_type) -start_websocket() diff --git a/.config/pipewire/pipewire.conf b/.config/pipewire/pipewire.conf index 58df95a..ca7eff4 100644 --- a/.config/pipewire/pipewire.conf +++ b/.config/pipewire/pipewire.conf @@ -41,7 +41,7 @@ context.properties = { ## Properties for the DSP configuration. #default.clock.rate = 48000 - #default.clock.allowed-rates = [ 48000 ] + default.clock.allowed-rates = [ 44100 88200 176400 48000 96000 192000 ] #default.clock.quantum = 1024 #default.clock.min-quantum = 32 #default.clock.max-quantum = 2048 diff --git a/.config/pipewire/pipewire.conf.d/99-input-denoising.conf b/.config/pipewire/pipewire.conf.d/99-input-denoising.conf index 3ba4400..9c1e039 100644 --- a/.config/pipewire/pipewire.conf.d/99-input-denoising.conf +++ b/.config/pipewire/pipewire.conf.d/99-input-denoising.conf @@ -1,33 +1,36 @@ context.modules = [ { name = libpipewire-module-filter-chain args = { - node.description = "Noise Canceling source" - media.name = "Noise Canceling source" + node.description = "Noise Canceling source" + media.name = "Noise Canceling source" filter.graph = { nodes = [ { type = ladspa name = rnnoise plugin = /usr/lib/ladspa/librnnoise_ladspa.so - label = noise_suppressor_mono + label = noise_suppressor_stereo control = { - "VAD Threshold (%)" = 69.0 - "VAD Grace Period (ms)" = 200 - "Retroactive VAD Grace (ms)" = 0 + "VAD Threshold (%)" = 0.0 + "VAD Grace Period (ms)" = 500 + "Retroactive VAD Grace (ms)" = 100 } } ] } + audio.position = [ FL FR ] capture.props = { - node.name = "capture.rnnoise_source" + node.name = "capture.rnnoise_source" node.passive = true audio.rate = 48000 } playback.props = { - node.name = "rnnoise_source" - media.class = Audio/Source + node.name = "rnnoise_source" + media.class = "Audio/Source" audio.rate = 48000 } + audio.channels = 1 + audio.position = [ MONO ] } } ]