mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2026-02-04 18:36:33 -08:00
Merge branch 'master' of github.com:ksyasuda/dotfiles
This commit is contained in:
@@ -4,7 +4,7 @@ font-size = 12
|
||||
font-feature = +calt
|
||||
font-feature = +liga
|
||||
font-feature = +dlig
|
||||
theme = catppuccin-macchiato
|
||||
theme = Catppuccin Macchiato
|
||||
cursor-style = block
|
||||
window-padding-x = 10
|
||||
window-padding-y = 10
|
||||
@@ -14,7 +14,12 @@ window-width = 180
|
||||
confirm-close-surface = false
|
||||
copy-on-select = clipboard
|
||||
app-notifications = no-clipboard-copy
|
||||
shell-integration = zsh
|
||||
shell-integration-features = title,sudo,ssh-env,ssh-terminfo
|
||||
desktop-notifications = true
|
||||
term=ghostty
|
||||
keybind = all:ctrl+enter=unbind
|
||||
keybind = all:ctrl+shift+j=next_tab
|
||||
keybind = all:ctrl+shift+k=last_tab
|
||||
keybind = all:ctrl+grave_accent=toggle_quick_terminal
|
||||
keybind = shift+enter=text:\x1b\r
|
||||
|
||||
@@ -18,3 +18,6 @@ keybind = all:ctrl+enter=unbind
|
||||
keybind = all:ctrl+grave_accent=toggle_quick_terminal
|
||||
shell-integration = zsh
|
||||
keybind = shift+enter=text:\x1b\r
|
||||
shell-integration-features = title,sudo,ssh-env,ssh-terminfo
|
||||
desktop-notifications = true
|
||||
term=ghostty
|
||||
|
||||
@@ -54,7 +54,7 @@ xwayland {
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = uwsm app -- ghostty
|
||||
$terminal = uwsm app -- ghostty +new-window
|
||||
$fileManager = uwsm app -- thunar
|
||||
$menu = rofi -show drun -run-command "uwsm app -- {cmd}"
|
||||
# $notification_daemon = dunst
|
||||
|
||||
@@ -93,8 +93,12 @@ bindl = , XF86AudioPrev, exec, mpc prev
|
||||
# rofi
|
||||
bind = $mainMod SHIFT, v, exec, uwsm app -sb -- rofi-rbw
|
||||
bind = $mainMod, w, exec, rofi -show window -theme $HOME/.config/rofi/launchers/type-2/style-2.rasi -dpi 96 -theme-str 'window {width: 35%;}'
|
||||
bind = $mainMod SHIFT, w, exec, $HOME/.config/rofi/scripts/rofi-wallpaper.sh
|
||||
bind = $mainMod SHIFT, d, exec, $HOME/.config/rofi/scripts/rofi-docs.sh
|
||||
bind = $mainMod SHIFT, w, exec, "$HOME/.config/rofi/scripts/rofi-wallpaper.sh"
|
||||
bind = $mainMod SHIFT, d, exec, "$HOME/.config/rofi/scripts/rofi-docs.sh"
|
||||
bind = SUPER, j, exec, "$HOME/.config/rofi/scripts/rofi-jellyfin-dir.sh"
|
||||
bind = SUPER, t, exec, "$HOME/.config/rofi/scripts/rofi-launch-texthooker-steam.sh"
|
||||
bind = $mainMod SHIFT, t, exec, "$HOME/projects/scripts/popup-ai-translator.py"
|
||||
bind = SUPER SHIFT, g, exec, "$HOME/.config/rofi/scripts/rofi-vn-helper.sh"
|
||||
|
||||
# ncmcppp
|
||||
bind = $mainMod, n, exec, uwsm app -sb -- ghostty --command=/usr/bin/ncmpcpp
|
||||
@@ -139,3 +143,7 @@ bind = $mainMod, code:112, submap, reset
|
||||
submap = reset
|
||||
|
||||
bind = SUPER, l, exec, hyprlock
|
||||
|
||||
# ANKI
|
||||
bind = $mainMod, a, exec, ~/.config/rofi/scripts/rofi-anki-script.sh
|
||||
bind = $mainMod SHIFT, a, exec, ~/projects/scripts/screenshot-anki.sh -cdMinecraft
|
||||
|
||||
155
.config/mimeapps.list
Normal file
155
.config/mimeapps.list
Normal file
@@ -0,0 +1,155 @@
|
||||
[Added Associations]
|
||||
application/epub+zip=calibre-ebook-viewer.desktop;calibre-ebook-edit.desktop;opencomic.desktop;
|
||||
application/json=notepadqq.desktop;
|
||||
application/octet-stream=nvim.desktop;vim.desktop;emacsclient.desktop;
|
||||
application/pdf=okularApplication_pdf.desktop;google-chrome.desktop;microsoft-edge-beta.desktop;org.inkscape.Inkscape.desktop;chromium.desktop;
|
||||
application/rss+xml=fluent-reader.desktop;
|
||||
application/sql=notepadqq.desktop;nvim.desktop;gvim.desktop;
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop;ms-office-online.desktop;
|
||||
application/x-desktop=nvim.desktop;
|
||||
application/x-extension-htm=google-chrome.desktop;
|
||||
application/x-extension-html=google-chrome.desktop;
|
||||
application/x-extension-shtml=google-chrome.desktop;
|
||||
application/x-extension-xht=google-chrome.desktop;
|
||||
application/x-extension-xhtml=google-chrome.desktop;
|
||||
application/x-ms-dos-executable=wine.desktop;
|
||||
application/x-ms-shortcut=wine.desktop;
|
||||
application/x-yaml=notepadqq.desktop;nvim.desktop;
|
||||
application/xhtml+xml=google-chrome.desktop;microsoft-edge-beta.desktop;qutebrowser.desktop;
|
||||
application/zip=org.gnome.FileRoller.desktop;
|
||||
audio/aac=mpv.desktop;
|
||||
audio/mp4=mpv.desktop;
|
||||
audio/mpeg=mpv.desktop;
|
||||
audio/mpegurl=mpv.desktop;
|
||||
audio/ogg=mpv.desktop;
|
||||
audio/vnd.rn-realaudio=mpv.desktop;
|
||||
audio/vorbis=mpv.desktop;
|
||||
audio/x-flac=mpv.desktop;
|
||||
audio/x-mp3=mpv.desktop;
|
||||
audio/x-mpegurl=mpv.desktop;
|
||||
audio/x-ms-wma=mpv.desktop;
|
||||
audio/x-musepack=mpv.desktop;
|
||||
audio/x-oggflac=mpv.desktop;
|
||||
audio/x-pn-realaudio=mpv.desktop;
|
||||
audio/x-scpls=mpv.desktop;
|
||||
audio/x-vorbis=mpv.desktop;
|
||||
audio/x-vorbis+ogg=mpv.desktop;
|
||||
audio/x-wav=mpv.desktop;
|
||||
image/avif=okularApplication_kimgio.desktop;
|
||||
image/bmp=okularApplication_kimgio.desktop;
|
||||
image/gif=org.gnome.gThumb.desktop;google-chrome.desktop;gimp.desktop;org.kde.gwenview.desktop;okularApplication_kimgio.desktop;
|
||||
image/heif=okularApplication_kimgio.desktop;
|
||||
image/jpeg=okularApplication_kimgio.desktop;
|
||||
image/png=okularApplication_kimgio.desktop;org.gnome.gThumb.desktop;feh.desktop;gimp.desktop;org.kde.gwenview.desktop;
|
||||
image/webp=okularApplication_kimgio.desktop;
|
||||
inode/directory=thunar.desktop;
|
||||
text/csv=libreoffice-calc.desktop;
|
||||
text/html=google-chrome.desktop;
|
||||
text/javascript=notepadqq.desktop;
|
||||
text/plain=notepadqq.desktop;nvim.desktop;vim.desktop;okularApplication_txt.desktop;xed.desktop;
|
||||
text/vnd.trolltech.linguist=mpv.desktop;
|
||||
text/x-log=notepadqq.desktop;
|
||||
video/mp4=mpv.desktop;vlc.desktop;io.github.celluloid_player.Celluloid.desktop;
|
||||
video/webm=mpv.desktop;vlc.desktop;io.github.celluloid_player.Celluloid.desktop;
|
||||
video/x-matroska=mpv.desktop;vlc.desktop;
|
||||
x-scheme-handler/betterdiscord=discord.desktop;
|
||||
x-scheme-handler/bitwarden=bitwarden.desktop;Bitwarden.desktop;
|
||||
x-scheme-handler/chrome=google-chrome.desktop;
|
||||
x-scheme-handler/exodus=Exodus.desktop;
|
||||
x-scheme-handler/geo=google-maps-geo-handler.desktop;
|
||||
x-scheme-handler/http=zen.desktop;firefox.desktop;microsoft-edge-beta.desktop;google-chrome.desktop;
|
||||
x-scheme-handler/https=zen.desktop;firefox.desktop;microsoft-edge-beta.desktop;google-chrome.desktop;
|
||||
x-scheme-handler/mailspring=Mailspring.desktop;
|
||||
x-scheme-handler/mailto=org.mozilla.Thunderbird.desktop;Mailspring.desktop;userapp-Thunderbird-6JYZ12.desktop;
|
||||
x-scheme-handler/mid=userapp-Thunderbird-6JYZ12.desktop;
|
||||
x-scheme-handler/postman=Postman.desktop;
|
||||
x-scheme-handler/ror2mm=r2modman.desktop;
|
||||
x-scheme-handler/ssh=kitty-open.desktop;Termius.desktop;
|
||||
x-scheme-handler/termius=Termius.desktop;
|
||||
x-scheme-handler/tg=org.telegram.desktop.desktop;org.telegram.desktop._f79d601e26a782fd149b3ffb098aae9f.desktop;userapp-Kotatogram Desktop-IP6312.desktop;
|
||||
x-scheme-handler/tonsite=org.telegram.desktop.desktop;
|
||||
x-scheme-handler/tradingview=tradingview.desktop;TradingView.desktop;
|
||||
application/x-wine-extension-ini=nvim.desktop;
|
||||
|
||||
[Default Applications]
|
||||
application/x-extension-htm=google-chrome.desktop
|
||||
application/x-extension-html=google-chrome.desktop
|
||||
application/x-extension-shtml=google-chrome.desktop
|
||||
application/x-extension-xht=google-chrome.desktop
|
||||
application/x-extension-xhtml=google-chrome.desktop
|
||||
audio/aac=mpv.desktop;
|
||||
audio/mp4=mpv.desktop;
|
||||
audio/mpeg=mpv.desktop;
|
||||
audio/mpegurl=mpv.desktop;
|
||||
audio/ogg=mpv.desktop;
|
||||
audio/vnd.rn-realaudio=mpv.desktop;
|
||||
audio/vorbis=mpv.desktop;
|
||||
audio/x-flac=mpv.desktop;
|
||||
audio/x-mp3=mpv.desktop;
|
||||
audio/x-mpegurl=mpv.desktop;
|
||||
audio/x-ms-wma=mpv.desktop;
|
||||
audio/x-musepack=mpv.desktop;
|
||||
audio/x-oggflac=mpv.desktop;
|
||||
audio/x-pn-realaudio=mpv.desktop;
|
||||
audio/x-scpls=mpv.desktop;
|
||||
audio/x-vorbis=mpv.desktop;
|
||||
audio/x-vorbis+ogg=mpv.desktop;
|
||||
audio/x-wav=mpv.desktop;
|
||||
image/avif=okularApplication_kimgio.desktop;
|
||||
image/bmp=okularApplication_kimgio.desktop;
|
||||
image/heif=okularApplication_kimgio.desktop;
|
||||
image/jpeg=okularApplication_kimgio.desktop;
|
||||
image/png=okularApplication_kimgio.desktop;
|
||||
image/webp=okularApplication_kimgio.desktop;
|
||||
inode/directory=Thunar.desktop
|
||||
message/rfc822=userapp-Thunderbird-6JYZ12.desktop
|
||||
text/plain=nvim.desktop;
|
||||
x-scheme-handler/betterdiscord=discord.desktop
|
||||
x-scheme-handler/bitwarden=bitwarden.desktop
|
||||
x-scheme-handler/chrome=chromium.desktop
|
||||
x-scheme-handler/discord-455712169795780630=discord-455712169795780630.desktop
|
||||
x-scheme-handler/discord-712465656758665259=discord-712465656758665259.desktop
|
||||
x-scheme-handler/eclipse+command=_usr_lib_dbeaver_.desktop
|
||||
x-scheme-handler/exodus=Exodus.desktop
|
||||
x-scheme-handler/geo=google-maps-geo-handler.desktop;
|
||||
x-scheme-handler/http=zen.desktop;
|
||||
x-scheme-handler/https=zen.desktop;
|
||||
x-scheme-handler/mailspring=Mailspring.desktop
|
||||
x-scheme-handler/mailto=Mailspring.desktop
|
||||
x-scheme-handler/mid=userapp-Thunderbird-6JYZ12.desktop
|
||||
x-scheme-handler/msteams=teams.desktop
|
||||
x-scheme-handler/postman=Postman.desktop
|
||||
x-scheme-handler/ror2mm=r2modman.desktop
|
||||
x-scheme-handler/ssh=kitty-open.desktop
|
||||
x-scheme-handler/termius=Termius.desktop
|
||||
x-scheme-handler/tg=org.telegram.desktop.desktop
|
||||
x-scheme-handler/tonsite=org.telegram.desktop.desktop
|
||||
x-scheme-handler/tradingview=tradingview.desktop
|
||||
x-scheme-handler/webcal=google-chrome.desktop
|
||||
video/webm=mpv.desktop
|
||||
video/x-matroska=mpv.desktop
|
||||
video/x-ms-wmv=mpv.desktop
|
||||
video/quicktime=mpv.desktop
|
||||
video/x-flv=mpv.desktop
|
||||
video/dv=mpv.desktop
|
||||
video/vnd.avi=mpv.desktop
|
||||
video/x-ogm+ogg=mpv.desktop
|
||||
video/ogg=mpv.desktop
|
||||
video/vnd.rn-realvideo=mpv.desktop
|
||||
video/mp4=mpv.desktop
|
||||
video/mp2t=mpv.desktop
|
||||
video/x-flic=mpv.desktop
|
||||
video/3gpp2=mpv.desktop
|
||||
video/x-theora+ogg=mpv.desktop
|
||||
video/mpeg=mpv.desktop
|
||||
video/vnd.mpegurl=mpv.desktop
|
||||
video/3gpp=mpv.desktop
|
||||
application/json=zen.desktop
|
||||
application/xhtml+xml=zen.desktop
|
||||
application/x-xpinstall=zen.desktop
|
||||
application/xml=zen.desktop
|
||||
application/pdf=zen.desktop
|
||||
text/html=zen.desktop
|
||||
text/vnd.trolltech.linguist=zen.desktop
|
||||
x-scheme-handler/nxm=modorganizer2-nxm-handler.desktop
|
||||
x-scheme-handler/discord-1361252452329848892=discord-1361252452329848892.desktop
|
||||
@@ -14,6 +14,7 @@ deck_name=Minecraft
|
||||
# If you don't have a model for Japanese, get it from
|
||||
# https://tatsumoto.neocities.org/blog/setting-up-anki.html#import-an-example-mining-deck
|
||||
model_name=Lapis
|
||||
# model_name=Kiku
|
||||
|
||||
# Field names as they appear in the selected note type.
|
||||
# If you set `audio_field` or `image_field` empty,
|
||||
|
||||
@@ -131,7 +131,7 @@ return {
|
||||
},
|
||||
-- }}}
|
||||
},
|
||||
strategies = {
|
||||
interactions = {
|
||||
chat = {
|
||||
adapter = "copilot",
|
||||
-- adapter = "openrouter",
|
||||
@@ -182,11 +182,21 @@ return {
|
||||
end,
|
||||
completion_provider = "cmp",
|
||||
},
|
||||
fold_reasoning = true,
|
||||
show_reasoning = true,
|
||||
},
|
||||
inline = {
|
||||
adapter = "copilot",
|
||||
-- adapter = "openrouter",
|
||||
},
|
||||
cmd = {
|
||||
adapter = "copilot",
|
||||
},
|
||||
background = {
|
||||
adapter = {
|
||||
name = "copilot",
|
||||
},
|
||||
},
|
||||
},
|
||||
display = {
|
||||
action_palette = {
|
||||
@@ -232,7 +242,6 @@ return {
|
||||
-- Options for inline diff provider
|
||||
inline = {
|
||||
layout = "buffer", -- float|buffer - Where to display the diff
|
||||
|
||||
diff_signs = {
|
||||
signs = {
|
||||
text = "▌", -- Sign text for normal changes
|
||||
@@ -307,6 +316,31 @@ return {
|
||||
},
|
||||
},
|
||||
},
|
||||
rules = {
|
||||
default = {
|
||||
description = "Collection of common files for all projects",
|
||||
files = {
|
||||
".clinerules",
|
||||
".cursorrules",
|
||||
".goosehints",
|
||||
".rules",
|
||||
".windsurfrules",
|
||||
".github/copilot-instructions.md",
|
||||
"AGENT.md",
|
||||
"AGENTS.md",
|
||||
{ path = "CLAUDE.md", parser = "claude" },
|
||||
{ path = "CLAUDE.local.md", parser = "claude" },
|
||||
{ path = "~/.claude/CLAUDE.md", parser = "claude" },
|
||||
},
|
||||
is_preset = true,
|
||||
},
|
||||
opts = {
|
||||
chat = {
|
||||
enabled = true,
|
||||
default_rules = "default", -- The rule groups to load
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
init = function()
|
||||
require("utils.codecompanion.fidget-spinner"):init()
|
||||
|
||||
@@ -50,7 +50,7 @@ end
|
||||
function M:create_progress_handle(request)
|
||||
local title = " Requesting assistance"
|
||||
.. " ("
|
||||
.. request.data.strategy
|
||||
.. request.data.interaction
|
||||
.. ") from "
|
||||
.. request.data.adapter.formatted_name
|
||||
.. " using "
|
||||
|
||||
@@ -43,10 +43,10 @@ end
|
||||
|
||||
function M:create_progress_handle(request)
|
||||
return progress.handle.create({
|
||||
title = " Requesting assistance (" .. request.data.strategy .. ")",
|
||||
title = " Requesting assistance (" .. request.data.adapter.model .. ")",
|
||||
message = "In progress...",
|
||||
lsp_client = {
|
||||
name = M:llm_role_title(request.data.adapter),
|
||||
name = M:llm_role_title(request.data.adapter.name),
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
44
.config/opencode/oh-my-opencode.jsonc
Normal file
44
.config/opencode/oh-my-opencode.jsonc
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",
|
||||
"google_auth": true,
|
||||
"agents": {
|
||||
"Sisyphus": {
|
||||
"model": "opencode/glm-4.7-free"
|
||||
},
|
||||
"librarian": {
|
||||
"model": "opencode/glm-4.7-free"
|
||||
},
|
||||
"explore": {
|
||||
"model": "google/antigravity-gemini-3-flash"
|
||||
},
|
||||
"frontend-ui-ux-engineer": {
|
||||
"model": "google/antigravity-gemini-3-pro-high"
|
||||
},
|
||||
"document-writer": {
|
||||
"model": "google/antigravity-gemini-3-flash"
|
||||
},
|
||||
"multimodal-looker": {
|
||||
"model": "google/antigravity-gemini-3-flash"
|
||||
}
|
||||
},
|
||||
"lsp": {
|
||||
"typescript-language-server": {
|
||||
"command": ["typescript-language-server", "--stdio"],
|
||||
"extensions": [".ts", ".tsx"],
|
||||
"priority": 10
|
||||
},
|
||||
"pylsp": {
|
||||
"disabled": true
|
||||
},
|
||||
"pyright": {
|
||||
"command": ["basedpyright-languageserver", "--stdio"],
|
||||
"extensions": [".py"],
|
||||
"priority": 10
|
||||
},
|
||||
"bash-language-server": {
|
||||
"command": ["bash-language-server", "start"],
|
||||
"extensions": [".sh", ".bash"],
|
||||
"priority": 10
|
||||
}
|
||||
}
|
||||
}
|
||||
24
.config/opencode/opencode-notifier.json
Normal file
24
.config/opencode/opencode-notifier.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sound": false,
|
||||
"notification": true,
|
||||
"timeout": 5,
|
||||
"showProjectName": true,
|
||||
"events": {
|
||||
"permission": { "sound": false, "notification": true },
|
||||
"complete": { "sound": false, "notification": true },
|
||||
"error": { "sound": false, "notification": true },
|
||||
"question": { "sound": false, "notification": true }
|
||||
},
|
||||
"messages": {
|
||||
"permission": "Session needs permission",
|
||||
"complete": "Session has finished",
|
||||
"error": "Session encountered an error",
|
||||
"question": "Session has a question"
|
||||
},
|
||||
"sounds": {
|
||||
"permission": "/path/to/custom/sound.wav",
|
||||
"complete": "/path/to/custom/sound.wav",
|
||||
"error": "/path/to/custom/sound.wav",
|
||||
"question": "/path/to/custom/sound.wav"
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": "catppuccin",
|
||||
"model": "github-copilot/gpt-5.1",
|
||||
"provider": {
|
||||
"openai": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"options": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
"include": ["reasoning.encrypted_content"],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"agent": {
|
||||
"build": {
|
||||
"mode": "primary",
|
||||
"model": "github-copilot/gpt-5.1",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": true
|
||||
}
|
||||
},
|
||||
"plan": {
|
||||
"mode": "primary",
|
||||
"model": "github-copilot/gpt-5.1-codex",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false
|
||||
}
|
||||
},
|
||||
"code-reviewer": {
|
||||
"description": "Reviews code for best practices and potential issues",
|
||||
"mode": "subagent",
|
||||
"model": "github-copilot/gpt-5.1",
|
||||
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
225
.config/opencode/opencode.jsonc
Normal file
225
.config/opencode/opencode.jsonc
Normal file
@@ -0,0 +1,225 @@
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": [
|
||||
"opencode-openai-codex-auth",
|
||||
"opencode-antigravity-auth@beta",
|
||||
"@mohak34/opencode-notifier@latest",
|
||||
"oh-my-opencode"
|
||||
],
|
||||
"provider": {
|
||||
"openai": {
|
||||
"name": "OpenAI",
|
||||
"options": {
|
||||
"reasoningEffort": "medium",
|
||||
"reasoningSummary": "auto",
|
||||
"textVerbosity": "medium",
|
||||
"include": [
|
||||
"reasoning.encrypted_content"
|
||||
],
|
||||
"store": false
|
||||
},
|
||||
"models": {
|
||||
"gpt-5.2": {
|
||||
"name": "GPT 5.2 (OAuth)",
|
||||
"limit": {
|
||||
"context": 272000,
|
||||
"output": 128000
|
||||
},
|
||||
"modalities": {
|
||||
"input": [
|
||||
"text",
|
||||
"image"
|
||||
],
|
||||
"output": [
|
||||
"text"
|
||||
]
|
||||
},
|
||||
"variants": {
|
||||
"none": {
|
||||
"reasoningEffort": "none",
|
||||
"reasoningSummary": "auto",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"low": {
|
||||
"reasoningEffort": "low",
|
||||
"reasoningSummary": "auto",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"medium": {
|
||||
"reasoningEffort": "medium",
|
||||
"reasoningSummary": "auto",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"high": {
|
||||
"reasoningEffort": "high",
|
||||
"reasoningSummary": "detailed",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"xhigh": {
|
||||
"reasoningEffort": "xhigh",
|
||||
"reasoningSummary": "detailed",
|
||||
"textVerbosity": "medium"
|
||||
}
|
||||
}
|
||||
},
|
||||
"gpt-5.2-codex": {
|
||||
"name": "GPT 5.2 Codex (OAuth)",
|
||||
"limit": {
|
||||
"context": 272000,
|
||||
"output": 128000
|
||||
},
|
||||
"modalities": {
|
||||
"input": [
|
||||
"text",
|
||||
"image"
|
||||
],
|
||||
"output": [
|
||||
"text"
|
||||
]
|
||||
},
|
||||
"variants": {
|
||||
"low": {
|
||||
"reasoningEffort": "low",
|
||||
"reasoningSummary": "auto",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"medium": {
|
||||
"reasoningEffort": "medium",
|
||||
"reasoningSummary": "auto",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"high": {
|
||||
"reasoningEffort": "high",
|
||||
"reasoningSummary": "detailed",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"xhigh": {
|
||||
"reasoningEffort": "xhigh",
|
||||
"reasoningSummary": "detailed",
|
||||
"textVerbosity": "medium"
|
||||
}
|
||||
}
|
||||
},
|
||||
"gpt-5.1-codex-max": {
|
||||
"name": "GPT 5.1 Codex Max (OAuth)",
|
||||
"limit": {
|
||||
"context": 272000,
|
||||
"output": 128000
|
||||
},
|
||||
"modalities": {
|
||||
"input": [
|
||||
"text",
|
||||
"image"
|
||||
],
|
||||
"output": [
|
||||
"text"
|
||||
]
|
||||
},
|
||||
"variants": {
|
||||
"low": {
|
||||
"reasoningEffort": "low",
|
||||
"reasoningSummary": "detailed",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"medium": {
|
||||
"reasoningEffort": "medium",
|
||||
"reasoningSummary": "detailed",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"high": {
|
||||
"reasoningEffort": "high",
|
||||
"reasoningSummary": "detailed",
|
||||
"textVerbosity": "medium"
|
||||
},
|
||||
"xhigh": {
|
||||
"reasoningEffort": "xhigh",
|
||||
"reasoningSummary": "detailed",
|
||||
"textVerbosity": "medium"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"google": {
|
||||
"name": "Google",
|
||||
"models": {
|
||||
"antigravity-gemini-3-pro-high": {
|
||||
"name": "Gemini 3 Pro High (Antigravity)",
|
||||
"thinking": true,
|
||||
"attachment": true,
|
||||
"limit": {
|
||||
"context": 1048576,
|
||||
"output": 65535
|
||||
},
|
||||
"modalities": {
|
||||
"input": [
|
||||
"text",
|
||||
"image",
|
||||
"pdf"
|
||||
],
|
||||
"output": [
|
||||
"text"
|
||||
]
|
||||
}
|
||||
},
|
||||
"antigravity-gemini-3-pro-low": {
|
||||
"name": "Gemini 3 Pro Low (Antigravity)",
|
||||
"thinking": true,
|
||||
"attachment": true,
|
||||
"limit": {
|
||||
"context": 1048576,
|
||||
"output": 65535
|
||||
},
|
||||
"modalities": {
|
||||
"input": [
|
||||
"text",
|
||||
"image",
|
||||
"pdf"
|
||||
],
|
||||
"output": [
|
||||
"text"
|
||||
]
|
||||
}
|
||||
},
|
||||
"antigravity-gemini-3-flash": {
|
||||
"name": "Gemini 3 Flash (Antigravity)",
|
||||
"attachment": true,
|
||||
"limit": {
|
||||
"context": 1048576,
|
||||
"output": 65536
|
||||
},
|
||||
"modalities": {
|
||||
"input": [
|
||||
"text",
|
||||
"image",
|
||||
"pdf"
|
||||
],
|
||||
"output": [
|
||||
"text"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"theme": "catppuccin-macchiato",
|
||||
"share": "manual",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"disabled": false
|
||||
},
|
||||
"ruff": {
|
||||
"disabled": false
|
||||
}
|
||||
},
|
||||
"instructions": [
|
||||
"AGENTS.md",
|
||||
"CONTRIBUTING.md",
|
||||
"docs/guidelines.md",
|
||||
".cursor/rules/*.md"
|
||||
],
|
||||
"permission": {
|
||||
"edit": "ask",
|
||||
"bash": "ask"
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@
|
||||
"Pihole2 - https://pihole2.suda.codes/admin",
|
||||
"Proxmox - https://thebox.unicorn-ilish.ts.net",
|
||||
"qBittorrent - https://qbittorrent.suda.codes",
|
||||
"qui - https://qui.suda.codes",
|
||||
"qui - http://pve-main:7476",
|
||||
"Plausible - https://plausible.sudacode.com",
|
||||
"Paperless - https://paperless.suda.codes",
|
||||
"Prometheus - http://prometheus:9090",
|
||||
|
||||
23
.config/rofi/scripts/rofi-anki-script.sh
Executable file
23
.config/rofi/scripts/rofi-anki-script.sh
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CHOICES=(
|
||||
"1. Screenshot (Kiku)"
|
||||
"2. Screenshot (Luna)"
|
||||
"3. Record Audio"
|
||||
)
|
||||
CHOICE=$(printf "%s\n" "${CHOICES[@]}" | rofi -dmenu -i -theme "$HOME/.config/rofi/launchers/type-2/style-2.rasi" -theme-str 'window {width: 25%;} listview {columns: 1; lines: 5;}' -p "Select an option")
|
||||
|
||||
case "$CHOICE" in
|
||||
"1. Screenshot (Kiku)")
|
||||
PICTURE_FIELD=Picture "$HOME/projects/scripts/screenshot-anki.sh"
|
||||
;;
|
||||
"2. Screenshot (Luna)")
|
||||
PICTURE_FIELD=screenshot "$HOME/projects/scripts/screenshot-anki.sh"
|
||||
;;
|
||||
"3. Record Audio")
|
||||
"$HOME/projects/scripts/record-audio.sh"
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -1,9 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/rofi-menu-helpers.sh"
|
||||
|
||||
BROWSER=/usr/bin/zen-browser
|
||||
OPTIONS=(
|
||||
"Arch Linux (btw)"
|
||||
"Hyprland"
|
||||
DOC_GROUPS=(
|
||||
"Arch Linux (btw)|ARCH"
|
||||
"Hyprland|HYPRLAND"
|
||||
)
|
||||
ARCH=(
|
||||
"Archlinux Wiki|https://wiki.archlinux.org/title/Main_page"
|
||||
@@ -13,56 +16,37 @@ HYPRLAND=(
|
||||
"Hyprland Window Rules|https://wiki.hypr.land/Configuring/Window-Rules/"
|
||||
)
|
||||
|
||||
get_url() {
|
||||
urls=("$@")
|
||||
display_urls=()
|
||||
declare -A url_map
|
||||
for url in "${urls[@]}"; do
|
||||
display_urls+=("${url%%|*}")
|
||||
label="${url%%|*}"
|
||||
url_map["$label"]="${url##*|}"
|
||||
done
|
||||
display_urls+=("Back")
|
||||
url_map["Back"]="Back"
|
||||
|
||||
selection="$(printf "%s\n" "${display_urls[@]}" | rofi -theme-str 'window {width: 25%;} listview {columns: 1; lines: 10;}' -theme ~/.config/rofi/launchers/type-2/style-2.rasi -dmenu -l 5 -i -p "Select Documentation")"
|
||||
url="${url_map[$selection]}"
|
||||
|
||||
if [ -z "$url" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
printf "%s\n" "$url"
|
||||
select_group() {
|
||||
rofi_select_label_value "Select Documentation Group" DOC_GROUPS
|
||||
}
|
||||
|
||||
get_docs_list() {
|
||||
selection="$(printf "%s\n" "${OPTIONS[@]}" | rofi -theme-str 'window {width: 25%;} listview {columns: 1; lines: 10;}' -theme ~/.config/rofi/launchers/type-2/style-2.rasi -dmenu -l 5 -i -p "Select Documentation Group")"
|
||||
case "$selection" in
|
||||
"Arch Linux (btw)")
|
||||
urls=("${ARCH[@]}")
|
||||
;;
|
||||
"Hyprland")
|
||||
urls=("${HYPRLAND[@]}")
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
printf "%s\n" "${urls[@]}"
|
||||
select_url() {
|
||||
local urls_array="$1"
|
||||
rofi_select_label_value "Select Documentation" "$urls_array" "Back"
|
||||
}
|
||||
|
||||
main() {
|
||||
mapfile -t urls < <(get_docs_list)
|
||||
url="$(get_url "${urls[@]}")"
|
||||
if [ -z "$url" ]; then
|
||||
printf "No URL selected.\n"
|
||||
while true; do
|
||||
group_key="$(select_group)" || exit 0
|
||||
case "$group_key" in
|
||||
ARCH)
|
||||
urls_ref=ARCH
|
||||
;;
|
||||
HYPRLAND)
|
||||
urls_ref=HYPRLAND
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
selection="$(select_url "$urls_ref")" || exit 0
|
||||
if [[ "$selection" == "Back" ]]; then
|
||||
continue
|
||||
fi
|
||||
$BROWSER "$selection" &>/dev/null &
|
||||
exit 0
|
||||
elif [ "$url" == "Back" ]; then
|
||||
main
|
||||
exit 0
|
||||
fi
|
||||
$BROWSER "$url" &>/dev/null &
|
||||
done
|
||||
}
|
||||
|
||||
main
|
||||
|
||||
89
.config/rofi/scripts/rofi-jellyfin-dir.sh
Executable file
89
.config/rofi/scripts/rofi-jellyfin-dir.sh
Executable file
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
BASE_DIR="/truenas/jellyfin"
|
||||
|
||||
. "$HOME/.config/rofi/scripts/rofi-menu-helpers.sh"
|
||||
|
||||
ACTION="xdg-open"
|
||||
|
||||
# Theme for icon display
|
||||
ICON_THEME="$HOME/.config/rofi/launchers/type-3/style-4.rasi"
|
||||
ICON_THEME_STR='configuration {show-icons: true; icon-size: 128; dpi: 96;} window {width: 50%; height: 60%;} listview {columns: 3; lines: 5;}'
|
||||
|
||||
# Map display names to actual directory names
|
||||
declare -A DIR_MAP=(
|
||||
["Anime"]="anime"
|
||||
["Movies"]="movies"
|
||||
["Manga"]="manga"
|
||||
["TV"]="tv"
|
||||
["YouTube"]="youtube"
|
||||
["Books"]="books"
|
||||
["Podcasts"]="podcasts"
|
||||
["Audiobooks"]="audiobooks"
|
||||
)
|
||||
|
||||
DIRS=(
|
||||
"Anime"
|
||||
"Movies"
|
||||
"Manga"
|
||||
"TV"
|
||||
"YouTube"
|
||||
"Books"
|
||||
"Podcasts"
|
||||
"Audiobooks"
|
||||
)
|
||||
|
||||
# Select top-level category
|
||||
CHOICE=$(rofi_select_list "Select a category" DIRS) || exit 1
|
||||
|
||||
# Get the actual directory name
|
||||
ACTUAL_DIR="${DIR_MAP[$CHOICE]}"
|
||||
TARGET_DIR="$BASE_DIR/$ACTUAL_DIR"
|
||||
|
||||
if [[ ! -d "$TARGET_DIR" ]]; then
|
||||
notify-send -u critical "Jellyfin Browser" "Directory not found: $TARGET_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build rofi entries with folder.jpg icons
|
||||
build_icon_menu() {
|
||||
local dir="$1"
|
||||
local entries=""
|
||||
|
||||
while IFS= read -r -d '' subdir; do
|
||||
local name
|
||||
name="$(basename "$subdir")"
|
||||
local icon="$subdir/folder.jpg"
|
||||
|
||||
# Check for folder.jpg, fallback to folder.png, then no icon
|
||||
if [[ -f "$icon" ]]; then
|
||||
entries+="${name}\0icon\x1f${icon}\n"
|
||||
elif [[ -f "$subdir/folder.png" ]]; then
|
||||
entries+="${name}\0icon\x1f${subdir}/folder.png\n"
|
||||
else
|
||||
entries+="${name}\n"
|
||||
fi
|
||||
done < <(find "$dir" -mindepth 1 -maxdepth 1 -type d -print0 | sort -z)
|
||||
|
||||
printf "%b" "$entries"
|
||||
}
|
||||
|
||||
# Show subdirectories with icons
|
||||
SELECTION=$(build_icon_menu "$TARGET_DIR" | rofi -dmenu -i -no-custom \
|
||||
-theme "$ICON_THEME" \
|
||||
-theme-str "$ICON_THEME_STR" \
|
||||
-p "Select from $CHOICE") || exit 1
|
||||
|
||||
# Full path to selected item
|
||||
SELECTED_PATH="$TARGET_DIR/$SELECTION"
|
||||
|
||||
if [[ -d "$SELECTED_PATH" ]]; then
|
||||
# Open in file manager or do something with it
|
||||
# You can customize this action as needed
|
||||
$ACTION "$SELECTED_PATH" &>/dev/null &
|
||||
else
|
||||
notify-send -u critical "Jellyfin Browser" "Path not found: $SELECTED_PATH"
|
||||
exit 1
|
||||
fi
|
||||
12
.config/rofi/scripts/rofi-launch-texthooker-steam.sh
Executable file
12
.config/rofi/scripts/rofi-launch-texthooker-steam.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROGRAM="$HOME/S/lutris/wineprefix/drive_c/users/steamuser/luna-translator/LunaTranslator.exe"
|
||||
SELECTION="$(protontricks -l | tail -n +2 | rofi -dmenu -theme ~/.config/rofi/launchers/type-2/style-2.rasi -theme-str 'listview {lines: 12; columns: 1;}' -i -p "Select game" | awk '{print $NF}' | tr -d '()')"
|
||||
|
||||
if [[ -z "$SELECTION" ]]; then
|
||||
printf "%s\n" "No game selected"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf "%s\n" "Launching $PROGRAM for game ID: $SELECTION"
|
||||
protontricks-launch --appid "$SELECTION" "$PROGRAM" &>/dev/null &
|
||||
68
.config/rofi/scripts/rofi-menu-helpers.sh
Normal file
68
.config/rofi/scripts/rofi-menu-helpers.sh
Normal file
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Lightweight helpers to build rofi menus with label/value pairs.
|
||||
# Intended to be sourced from other scripts.
|
||||
|
||||
# Allow callers to override theme/args without touching code.
|
||||
: "${ROFI_THEME:=$HOME/.config/rofi/launchers/type-2/style-2.rasi}"
|
||||
: "${ROFI_THEME_STR:="window {width: 25%;} listview {columns: 1; lines: 10;}"}"
|
||||
: "${ROFI_DMENU_ARGS:=-i -l 5}"
|
||||
|
||||
# rofi_menu prompt option...
|
||||
# Prints the selected option to stdout and propagates the rofi exit code
|
||||
# (1 when the user cancels).
|
||||
rofi_menu() {
|
||||
local prompt="$1"
|
||||
shift
|
||||
local -a options=("$@")
|
||||
|
||||
local selection
|
||||
selection="$(printf "%s\n" "${options[@]}" | rofi -dmenu $ROFI_DMENU_ARGS \
|
||||
${ROFI_THEME:+-theme "$ROFI_THEME"} \
|
||||
${ROFI_THEME_STR:+-theme-str "$ROFI_THEME_STR"} \
|
||||
-p "$prompt")"
|
||||
local status=$?
|
||||
[[ $status -ne 0 ]] && return "$status"
|
||||
printf "%s\n" "$selection"
|
||||
}
|
||||
|
||||
# rofi_select_label_value prompt array_name [back_label]
|
||||
# array_name should contain entries shaped as "Label|Value".
|
||||
# Prints the mapped value (or the back label when chosen). Returns 1 on cancel.
|
||||
rofi_select_label_value() {
|
||||
local prompt="$1"
|
||||
local array_name="$2"
|
||||
local back_label="${3:-}"
|
||||
|
||||
# Access caller's array by name
|
||||
local -n kv_source="$array_name"
|
||||
local -A kv_map=()
|
||||
local -a display=()
|
||||
|
||||
for entry in "${kv_source[@]}"; do
|
||||
local label="${entry%%|*}"
|
||||
local value="${entry#*|}"
|
||||
kv_map["$label"]="$value"
|
||||
display+=("$label")
|
||||
done
|
||||
|
||||
if [[ -n "$back_label" ]]; then
|
||||
kv_map["$back_label"]="$back_label"
|
||||
display+=("$back_label")
|
||||
fi
|
||||
|
||||
local selection
|
||||
selection="$(rofi_menu "$prompt" "${display[@]}")" || return "$?"
|
||||
[[ -z "$selection" ]] && return 1
|
||||
printf "%s\n" "${kv_map[$selection]}"
|
||||
}
|
||||
|
||||
# rofi_select_list prompt array_name
|
||||
# Convenience wrapper for plain lists (no label/value mapping).
|
||||
rofi_select_list() {
|
||||
local prompt="$1"
|
||||
local array_name="$2"
|
||||
local -n list_source="$array_name"
|
||||
rofi_menu "$prompt" "${list_source[@]}"
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@ THEME="$HOME/.config/rofi/launchers/type-3/style-4.rasi"
|
||||
DIR="$HOME/Pictures/wallpapers/favorites"
|
||||
SELECTED_WALL=$(cd "$DIR" && for a in *.jpg *.png; do echo -en "$a\0icon\x1f$a\n"; done | rofi -dmenu -i -no-custom -theme "$THEME" -p "Select a wallpaper" -theme-str 'configuration {icon-size: 128; dpi: 96;} window {width: 45%; height: 45%;}')
|
||||
PTH="$(printf "%s" "$DIR/$SELECTED_WALL" | tr -s '/')"
|
||||
hyprctl hyprpaper wallpaper "DP-1, $PTH"
|
||||
notify-send -a "rofi-wallpaper" "Wallpaper set to" -i "$PTH" "$PTH"
|
||||
hyprctl hyprpaper preload "$PTH"
|
||||
hyprctl hyprpaper wallpaper "DP-1,$PTH"
|
||||
hyprctl hyprpaper unload "$(cat "$HOME/.wallpaper")"
|
||||
echo "$PTH" >"$HOME/.wallpaper"
|
||||
|
||||
@@ -15,6 +15,7 @@ export QT_QPA_PLATFORMTHEME=qt5ct
|
||||
export GTK_THEME=Dracula
|
||||
export XDG_CONFIG_HOME=$HOME/.config
|
||||
export COMPOSE_BAKE=true
|
||||
export ANKI_WAYLAND=1
|
||||
|
||||
# nvidia
|
||||
export NVD_BACKEND=direct
|
||||
|
||||
Reference in New Issue
Block a user