diff --git a/full_pkglist.txt b/full_pkglist.txt deleted file mode 100644 index 2a24911..0000000 --- a/full_pkglist.txt +++ /dev/null @@ -1,109 +0,0 @@ -7zip -acpi -adwaita-cursors -alsa-utils -auto-cpufreq -base -base-devel -bat -biber -blueman -bluetui -bluez -bluez-utils -brightnessctl -btop -btrfs-progs -cursor-bin -dhcpcd -direnv -driftwm -efivar -eza -file-roller -firefox -fish -fuse3 -fuzzel -fzf -git -grim -gvfs-mtp -gvfs-smb -hiddify -intel-ucode -iwd -kitty -less -libfido2 -linux -linux-firmware -mako -minecraft-launcher -ncdu -nemo -nemo-fileroller -nemo-image-converter -nemo-preview -nemo-seahorse -nemo-share -neovim -networkmanager -ntfs-3g -nwg-look -orca -pavucontrol -pipewire-alsa -pipewire-pulse -plymouth -plymouth-theme-connect-git -plymouth-theme-cuts-alt-git -polkit-gnome -powertop -pulsemixer -python-pip -ripgrep -seahorse -slurp -socat -spotify -stow -syncthing -telegram-desktop -texlive-basic -texlive-bibtexextra -texlive-binextra -texlive-fontsextra -texlive-fontsrecommended -texlive-langcyrillic -texlive-latexextra -texlive-latexrecommended -texlive-luatex -texlive-mathscience -texlive-pictures -texlive-publishers -texlive-xetex -thermald -tree -unrar -vicinae -vim -virtualbox -virtualbox-host-modules-arch -visual-studio-code-bin -waybar -wayvnc -wget -wl-clipboard -wlr-randr -wpa_supplicant -xdg-user-dirs -xorg-xset -xorg-xwayland -yay -yay-debug -yazi -zed -zen-browser-bin -zenity -zoxide diff --git a/home-files/dot-config/driftwm/config.toml b/home-files/dot-config/driftwm/config.toml index 1d42327..396bcd4 100644 --- a/home-files/dot-config/driftwm/config.toml +++ b/home-files/dot-config/driftwm/config.toml @@ -12,7 +12,15 @@ focus_follows_mouse = true # Commands to run at startup (after WAYLAND_DISPLAY is set). # Each entry is passed to sh -c, so full shell syntax works (pipes, &&, env vars). -autostart = [ "vicinae server", "waybar -c ~/.config/waybar/driftwm/config.jsonc", "hiddify", "gnome-keyring-daemon --start --components=secrets"] +autostart = [ +"vicinae server", +"waybar -c ~/.config/waybar/driftwm/config.jsonc", +#"hiddify", +"gnome-keyring-daemon --start --components=secrets" +] + +#window_placement = "cursor" +window_placement = "auto" # Environment variables set before any clients launch. # Child processes (autostart, exec bindings) inherit these. @@ -74,9 +82,9 @@ zone = 100.0 # activation zone width (px from viewport edge) [zoom] # step = 1.1 # multiplier per keypress (1.1 = 10% per press) # fit_padding = 100.0 # canvas px padding for zoom-to-fit -# reset_on_new_window = true # animate zoom to 1.0 when a new window is mapped +reset_on_new_window = false # animate zoom to 1.0 when a new window is mapped # # (false = keep current zoom, pan only) -# reset_on_activation = true # animate zoom to 1.0 when an off-screen window +reset_on_activation = false # animate zoom to 1.0 when an off-screen window # # requests focus # # (false = keep current zoom, pan only) @@ -176,11 +184,12 @@ tile_path = "/home/krosh/Downloads/loop-pile-carpet-hexagonal-2400-mm-architextu "ctrl+space" = "exec vicinae toggle" #"mod+d" = "exec vicinae toggle" "mod+e" = "exec nemo" +"mod+s" = "exec spotify" "ctrl+5" = "exec Telegram" # "mod+d" = "exec " # "mod+q" = "close-window" # "mod+f" = "toggle-fullscreen" -# "mod+m" = "fit-window" +"mod+d" = "fit-window" # "mod+c" = "center-window" # "mod+x" = "focus-center" # "mod+a" = "home-toggle" @@ -323,11 +332,18 @@ tile_path = "/home/krosh/Downloads/loop-pile-carpet-hexagonal-2400-mm-architextu name = "HDMI-A-2" #scale = 1.0 #mode = "1920x1080@60" -position = [0, 0] +position = [0, 0] [[outputs]] name = "eDP-1" # connector name (required) -position = [1920, 0] +position = [1920, 0] + + +[[outputs]] +name = "DP-5" +#scale = 1.0 +#mode = "1920x1080@60" +position = [0, 0] # Window rules: match windows by app_id and/or title and apply overrides. # At least one of app_id or title is required. Both support * glob. diff --git a/home-files/dot-config/fish-ai.ini b/home-files/dot-config/fish-ai.ini new file mode 100644 index 0000000..9b2b8bb --- /dev/null +++ b/home-files/dot-config/fish-ai.ini @@ -0,0 +1,7 @@ +[fish-ai] +configuration = self-hosted + +[self-hosted] +provider = self-hosted +server = http://100.100.1.2:11434/v1 +model = gemma4:e4b diff --git a/home-files/dot-config/fish/conf.d/fish_ai.fish b/home-files/dot-config/fish/conf.d/fish_ai.fish new file mode 100644 index 0000000..073e043 --- /dev/null +++ b/home-files/dot-config/fish/conf.d/fish_ai.fish @@ -0,0 +1,273 @@ +## +## Supported major.minor versions of Python. +## Unit tests are run in CI against these versions. +## +set -g _fish_ai_supported_versions 3.10 3.11 3.12 3.13 3.14 + +set -g _fish_ai_install_dir (test -z "$XDG_DATA_HOME"; and echo "$HOME/.local/share/fish-ai"; or echo "$XDG_DATA_HOME/fish-ai") +set -g _fish_ai_config_path (test -z "$XDG_CONFIG_HOME"; and echo "$HOME/.config/fish-ai.ini"; or echo "$XDG_CONFIG_HOME/fish-ai.ini") + +## +## This section creates the keybindings for fish-ai. Modify your `fish-ai.ini` +## and restart the terminal emulator to change the keybindings from their defaults. +## +function _fish_ai_bind --description "Create keybindings for fish-ai." + if test -n ("$_fish_ai_install_dir/bin/lookup_setting" keymap_1) + "$_fish_ai_install_dir/bin/lookup_setting" keymap_1 | string unescape | read -g -a _fish_ai_keymap_1 + else + # prefer fish key names above fish 4.x + if string match -r '^[0-3]\.' "$FISH_VERSION" &>/dev/null + set -g _fish_ai_keymap_1 \cp + else + set -g _fish_ai_keymap_1 ctrl-p + end + end + if test -n ("$_fish_ai_install_dir/bin/lookup_setting" keymap_2) + "$_fish_ai_install_dir/bin/lookup_setting" keymap_2 | string unescape | read -g -a _fish_ai_keymap_2 + else + # prefer fish key names above fish 4.x + if string match -r '^[0-3]\.' "$FISH_VERSION" &>/dev/null + set -g _fish_ai_keymap_2 -k nul + else + set -g _fish_ai_keymap_2 ctrl-space + end + end + if test "$fish_key_bindings" = fish_vi_key_bindings + set -g _fish_ai_bind_command bind -M insert + else + set -g _fish_ai_bind_command bind + end + bind -M insert $_fish_ai_keymap_1 _fish_ai_codify_or_explain + bind $_fish_ai_keymap_1 _fish_ai_codify_or_explain + bind -M insert $_fish_ai_keymap_2 _fish_ai_autocomplete_or_fix + bind $_fish_ai_keymap_2 _fish_ai_autocomplete_or_fix +end + +if status is-interactive && test -d "$_fish_ai_install_dir" + _fish_ai_bind +end + +## +## This section contains the plugin lifecycle hooks invoked by the fisher package +## manager. +## +function _fish_ai_install --on-event fish_ai_install + _fish_ai_set_python_version + if type -q uv + echo "πŸ₯‘ Setting up a virtual environment using uv..." + uv venv --quiet --seed --python $_fish_ai_python_version "$_fish_ai_install_dir" + else + echo "πŸ₯‘ Setting up a virtual environment using venv..." + python$_fish_ai_python_version -m venv "$_fish_ai_install_dir" + end + if test $status -ne 0 + echo "πŸ’” Installation failed. Check previous terminal output for details." + return 1 + end + + echo "🍬 Installing dependencies. This may take a few seconds..." + "$_fish_ai_install_dir/bin/pip" -qq install "$(_fish_ai_get_installation_url)" + if test $status -ne 0 + echo "πŸ’” Installation from '$(_fish_ai_get_installation_url)' failed. Check previous terminal output for details." + return 2 + end + _fish_ai_python_version_check + _fish_ai_symlink_truststore + _fish_ai_autoconfig_gh_models + _fish_ai_bind + if ! test -f "$_fish_ai_config_path" + echo "πŸ€— You must create a configuration file before the plugin can be used!" + end +end + +function _fish_ai_update --on-event fish_ai_update + # Upgrade to fish-ai 1.9.0 + if test -d "$HOME/.fish-ai" + echo "πŸ‘· Moving installation directory to '$_fish_ai_install_dir'." + mv "$HOME/.fish-ai" "$_fish_ai_install_dir" + end + if test -f "$HOME/.config/fish-ai.ini" + if test "$_fish_ai_config_path" != "$HOME/.config/fish-ai.ini" + echo "πŸ‘· Moving configuration file to '$_fish_ai_config_path'." + mv "$HOME/.config/fish-ai.ini" "$_fish_ai_config_path" + end + end + # Upgrade to fish-ai 2.0.0 + set -l provider ("$_fish_ai_install_dir/bin/lookup_setting" provider) + if test "$provider" = huggingface + echo "πŸŒ‡ The provider for Hugging Face has been removed. Switch to a different provider." + end + # Upgrade to fish-ai 2.3.0 + if test -n "$FISH_AI_KEYMAP_1" + echo "πŸ‘· Migrating custom keybinding FISH_AI_KEYMAP_1 to '$_fish_ai_config_path'." + "$_fish_ai_install_dir/bin/put_setting" fish-ai keymap_1 (echo -n "$FISH_AI_KEYMAP_1" | string escape) + set -e -Ug FISH_AI_KEYMAP_1 + end + if test -n "$FISH_AI_KEYMAP_2" + echo "πŸ‘· Migrating custom keybinding FISH_AI_KEYMAP_2 to '$_fish_ai_config_path'." + "$_fish_ai_install_dir/bin/put_setting" fish-ai keymap_2 (echo -n "$FISH_AI_KEYMAP_2" | string escape) + set -e -Ug FISH_AI_KEYMAP_2 + end + # Upgrade to fish-ai 2.8.0 + if test -f "$_fish_ai_config_path" + if grep -q '^temperature\s*=' "$_fish_ai_config_path" + sed -i '/^temperature\s*=/d' "$_fish_ai_config_path" + echo "πŸŒ‡ The 'temperature' parameter is no longer supported and has been removed from your configuration." + end + end + # Upgrade to fish-ai 2.10.6 + if test "$provider" = cohere + set -l model ("$_fish_ai_install_dir/bin/lookup_setting" model) + if test -z "$model" + echo "πŸ‘‹ Please specify the Cohere model you want to use in '$_fish_ai_config_path'." + end + end + # Upgrade to fish-ai 2.13.0 + if grep -qE 'provider\s*=\s*"?mistral"?' "$_fish_ai_config_path" + echo "🍿 Migrating the Mistral AI provider to OpenAI SDK." + sed -i -E 's|^provider\s*=\s*"?mistral"?|provider = self-hosted\nserver = https://api.mistral.ai/v1|g' "$_fish_ai_config_path" + end + + _fish_ai_set_python_version + if type -q uv + uv venv --quiet --clear --seed --python $_fish_ai_python_version "$_fish_ai_install_dir" + else + python$_fish_ai_python_version -m venv --upgrade "$_fish_ai_install_dir" + end + if test $status -ne 0 + echo "πŸ’” Installation failed. Check previous terminal output for details." + return 1 + end + + echo "🐍 Now using $($_fish_ai_install_dir/bin/python3 --version)." + echo "🍬 Upgrading dependencies. This may take a few seconds..." + $_fish_ai_install_dir/bin/pip install -qq --upgrade "$(_fish_ai_get_installation_url)" + if test $status -ne 0 + echo "πŸ’” Installation failed. Check previous terminal output for details." + return 2 + end + _fish_ai_python_version_check + _fish_ai_symlink_truststore + _fish_ai_warn_plaintext_api_keys +end + +function _fish_ai_uninstall --on-event fish_ai_uninstall + if test -d "$_fish_ai_install_dir" + echo "πŸ’£ Nuking the virtual environment..." + rm -r "$_fish_ai_install_dir" + end +end + +function _fish_ai_set_python_version + if test -n "$FISH_AI_PYTHON_VERSION" + echo "🐍 Using Python $FISH_AI_PYTHON_VERSION as specified by the environment variable 'FISH_AI_PYTHON_VERSION'." + set -g _fish_ai_python_version $FISH_AI_PYTHON_VERSION + else if type -q uv + # Use the last supported version of Python + set -g _fish_ai_python_version $_fish_ai_supported_versions[-1] + else + # Use the Python version provided by the system + set -g _fish_ai_python_version 3 + end +end + +function _fish_ai_get_installation_url + set -f plugin (fisher list "fish-ai") + if test "$plugin" = "" + # fish-ai may be installed from an unknown source, assume + # that the Python packages can be installed from the + # current working directory. + echo -n (pwd) + else if test (string sub --start 1 --length 1 "$plugin") = / + # Install from a local folder (most likely a git clone) + echo -n "$plugin" + else + # Install from GitHub + echo -n "fish-ai@git+https://github.com/$plugin" + end +end + +function _fish_ai_python_version_check + set -f current_python_version ("$_fish_ai_install_dir/bin/python3" -c 'import platform; major, minor, _ = platform.python_version_tuple(); print(major, end="."); print(minor, end="")') + if ! contains $current_python_version $_fish_ai_supported_versions + echo "πŸ”” This plugin has not been tested with Python $_fish_ai_python_version and may not function correctly." + echo "The following versions are supported: $_fish_ai_supported_versions" + echo "Consider setting the environment variable 'FISH_AI_PYTHON_VERSION' to a supported version and reinstalling the plugin. For example:" + set_color --italics blue + echo "" + echo " fisher remove realiserad/fish-ai" + echo " set -U FISH_AI_PYTHON_VERSION $_fish_ai_supported_versions[-1]" + echo " fisher install realiserad/fish-ai" + echo "" + set_color normal + end +end + +function _fish_ai_symlink_truststore --description "Use the bundle with CA certificates trusted by the OS." + if test -f /etc/ssl/certs/ca-certificates.crt + echo "πŸ”‘ Symlinking to certificates stored in /etc/ssl/certs/ca-certificates.crt." + ln -snf /etc/ssl/certs/ca-certificates.crt ("$_fish_ai_install_dir/bin/python3" -c 'import certifi; print(certifi.where())') + else if test -f /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem + echo "πŸ”‘ Symlinking to certificates stored in /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem." + ln -snf /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ("$_fish_ai_install_dir/bin/python3" -c 'import certifi; print(certifi.where())') + else if test -f /etc/ssl/cert.pem + echo "πŸ”‘ Symlinking to certificates stored in /etc/ssl/cert.pem." + ln -snf /etc/ssl/cert.pem ("$_fish_ai_install_dir/bin/python3" -c 'import certifi; print(certifi.where())') + end +end + +function _fish_ai_warn_plaintext_api_keys --description "Warn about plaintext API keys." + if ! test -f "$_fish_ai_config_path" + return + end + if grep -q "^api_key" "$_fish_ai_config_path" + echo -n "🚨 One or more plaintext API keys are stored in " + set_color --bold red + echo -n "$_fish_ai_config_path" + set_color normal + echo -n ". Consider moving them to your keyring using " + set_color --italics blue + echo -n fish_ai_put_api_key + set_color normal + echo "." + end +end + +function _fish_ai_autoconfig_gh_models --description "Deploy configuration for GitHub Models." + if test -f "$_fish_ai_config_path" + return + end + if ! type -q gh + return + end + if test -z (gh auth token 2>/dev/null) + return + end + if test -z (gh ext ls | grep "gh models" 2>/dev/null) + return + end + echo "[fish-ai]" >>"$_fish_ai_config_path" + echo "configuration = github" >>"$_fish_ai_config_path" + echo "" >>"$_fish_ai_config_path" + echo "[github]" >>"$_fish_ai_config_path" + echo "provider = self-hosted" >>"$_fish_ai_config_path" + echo "server = https://models.github.ai/inference" >>"$_fish_ai_config_path" + echo "api_key = $(gh auth token)" >>"$_fish_ai_config_path" + echo "model = gpt-4o-mini" >>"$_fish_ai_config_path" + + echo "😺 Access to GitHub Models has been automatically configured for you!" +end + +function _fish_ai_show_progress_indicator --description "Show a progress indicator." + if type -q fish_right_prompt + set -f rplen (string length -v (fish_right_prompt)[-1]) + else + set -f rplen 0 + end + # Get the progress indicator from the configuration, use hourglass emoji if not set + set -f progress_indicator ("$_fish_ai_install_dir/bin/lookup_setting" progress_indicator '⏳') + set -f pilen (string length "$progress_indicator") + # Move the cursor to the end of the line and insert progress indicator + tput hpa (math $COLUMNS - $rplen - 1 - $pilen) + echo -n "$progress_indicator" +end diff --git a/home-files/dot-config/fish/config.fish b/home-files/dot-config/fish/config.fish index d4e0e2d..e77b1cf 100644 --- a/home-files/dot-config/fish/config.fish +++ b/home-files/dot-config/fish/config.fish @@ -10,12 +10,29 @@ end if status is-interactive alias ls="eza --icons --group-directories-first" + alias c="clear" + alias cc="cybervis -m neural -c arctic -s 5 -d 8 --no-status" function __ls_after_cd --on-variable PWD ls end + pfetch # Commands to run in interactive sessions can go here end zoxide init fish --cmd cd | source +starship init fish | source + +set EDITOR nvim +set PATH $PATH:/home/krosh/.local/bin + +# Added by LM Studio CLI (lms) +set -gx PATH $PATH /home/krosh/.lmstudio/bin +# End of LM Studio CLI section + + +thefuck --alias | source + +# Created by `pipx` on 2026-05-18 21:21:55 +set PATH $PATH /home/krosh/.local/bin diff --git a/home-files/dot-config/fish/fish_plugins b/home-files/dot-config/fish/fish_plugins new file mode 100644 index 0000000..58bbfad --- /dev/null +++ b/home-files/dot-config/fish/fish_plugins @@ -0,0 +1 @@ +realiserad/fish-ai diff --git a/home-files/dot-config/fish/fish_variables b/home-files/dot-config/fish/fish_variables index ad10b9b..2781fdd 100644 --- a/home-files/dot-config/fish/fish_variables +++ b/home-files/dot-config/fish/fish_variables @@ -1,3 +1,7 @@ # This file contains fish universal variable definitions. # VERSION: 3.0 SETUVAR __fish_initialized:4300 +SETUVAR _fisher_plugins:realiserad/fish\x2dai +SETUVAR _fisher_realiserad_2F_fish_2D_ai_files:\x7e/\x2econfig/fish/functions/_fish_ai_autocomplete\x2efish\x1e\x7e/\x2econfig/fish/functions/_fish_ai_autocomplete_or_fix\x2efish\x1e\x7e/\x2econfig/fish/functions/_fish_ai_codify\x2efish\x1e\x7e/\x2econfig/fish/functions/_fish_ai_codify_or_explain\x2efish\x1e\x7e/\x2econfig/fish/functions/_fish_ai_explain\x2efish\x1e\x7e/\x2econfig/fish/functions/_fish_ai_fix\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_ai_bug_report\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_ai_put_api_key\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_ai_switch_context\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fish_ai\x2efish +SETUVAR _fisher_upgraded_to_4_4:\x1d +SETUVAR fish_greeting: diff --git a/home-files/dot-config/fish/functions/_fish_ai_autocomplete.fish b/home-files/dot-config/fish/functions/_fish_ai_autocomplete.fish new file mode 100755 index 0000000..3b2769f --- /dev/null +++ b/home-files/dot-config/fish/functions/_fish_ai_autocomplete.fish @@ -0,0 +1,12 @@ +#!/usr/bin/env fish + +function _fish_ai_autocomplete --description "Autocomplete the current command using AI." --argument-names command cursor_position + if test ("$_fish_ai_install_dir/bin/lookup_setting" "debug") = True + set -f selected_completion ("$_fish_ai_install_dir/bin/autocomplete" "$command" "$cursor_position" | \ + string collect) + else + set -f selected_completion ("$_fish_ai_install_dir/bin/autocomplete" "$command" "$cursor_position" | \ + string collect 2> /dev/null) + end + printf '%s' "$selected_completion" +end diff --git a/home-files/dot-config/fish/functions/_fish_ai_autocomplete_or_fix.fish b/home-files/dot-config/fish/functions/_fish_ai_autocomplete_or_fix.fish new file mode 100755 index 0000000..7a4c48b --- /dev/null +++ b/home-files/dot-config/fish/functions/_fish_ai_autocomplete_or_fix.fish @@ -0,0 +1,25 @@ +#!/usr/bin/env fish + +function _fish_ai_autocomplete_or_fix --description "Autocomplete the current command or fix the previous command using AI." + set -f previous_status (string join '+' $pipestatus | math) + + set -f input (commandline --current-buffer | string collect) + + _fish_ai_show_progress_indicator + + if test -z "$input" && test $previous_status -ne 0 + # Fix the previous command. + set -l previous_command (history | head -1) + set -l output (_fish_ai_fix "$previous_command" | string collect) + commandline --replace "$output" + else if test -n "$input" + # Autocomplete the current command. + set -l cursor_position (commandline --cursor) + set -l output (_fish_ai_autocomplete "$input" "$cursor_position" | string collect) + set -l completion_length (math (string length "$output") - (string length "$input")) + commandline --replace "$output" + commandline --cursor (math $cursor_position + $completion_length) + end + + commandline -f repaint +end diff --git a/home-files/dot-config/fish/functions/_fish_ai_codify.fish b/home-files/dot-config/fish/functions/_fish_ai_codify.fish new file mode 100755 index 0000000..d55c534 --- /dev/null +++ b/home-files/dot-config/fish/functions/_fish_ai_codify.fish @@ -0,0 +1,14 @@ +#!/usr/bin/env fish + +function _fish_ai_codify --description "Turn a comment into a command using AI." --argument-names comment + if test ("$_fish_ai_install_dir/bin/lookup_setting" "debug") = True + set -f output ("$_fish_ai_install_dir/bin/codify" "$comment" | \ + fish_indent | \ + string collect) + else + set -f output ("$_fish_ai_install_dir/bin/codify" "$comment" | \ + fish_indent | \ + string collect 2> /dev/null) + end + printf '%s' "$output" +end diff --git a/home-files/dot-config/fish/functions/_fish_ai_codify_or_explain.fish b/home-files/dot-config/fish/functions/_fish_ai_codify_or_explain.fish new file mode 100755 index 0000000..140014f --- /dev/null +++ b/home-files/dot-config/fish/functions/_fish_ai_codify_or_explain.fish @@ -0,0 +1,21 @@ +#!/usr/bin/env fish + +function _fish_ai_codify_or_explain --description "Transform a command into a comment and vice versa using AI." + set -f input (commandline --current-buffer | string collect) + + if test -z "$input" + return + end + + _fish_ai_show_progress_indicator + + if string match -q "# *" (string trim "$input") + set -f output (_fish_ai_codify "$input" | string collect) + else + set -f output (_fish_ai_explain "$input" | string collect) + end + + commandline --replace "$output" + + commandline -f repaint +end diff --git a/home-files/dot-config/fish/functions/_fish_ai_explain.fish b/home-files/dot-config/fish/functions/_fish_ai_explain.fish new file mode 100755 index 0000000..a6c6b6d --- /dev/null +++ b/home-files/dot-config/fish/functions/_fish_ai_explain.fish @@ -0,0 +1,12 @@ +#!/usr/bin/env fish + +function _fish_ai_explain --description "Turn a command into a comment using AI." --argument-names command + if test ("$_fish_ai_install_dir/bin/lookup_setting" "debug") = True + set -f output ("$_fish_ai_install_dir/bin/explain" "$command" | \ + string collect) + else + set -f output ("$_fish_ai_install_dir/bin/explain" "$command" | \ + string collect 2> /dev/null) + end + echo -n "$output" +end diff --git a/home-files/dot-config/fish/functions/_fish_ai_fix.fish b/home-files/dot-config/fish/functions/_fish_ai_fix.fish new file mode 100755 index 0000000..645ea8d --- /dev/null +++ b/home-files/dot-config/fish/functions/_fish_ai_fix.fish @@ -0,0 +1,10 @@ +#!/usr/bin/env fish + +function _fish_ai_fix --description "Fix a command using AI." --argument-names previous_command + if test ("$_fish_ai_install_dir/bin/lookup_setting" "debug") = True + set -f output ("$_fish_ai_install_dir/bin/fix" "$previous_command") + else + set -f output ("$_fish_ai_install_dir/bin/fix" "$previous_command" 2> /dev/null) + end + echo -n "$output" +end diff --git a/home-files/dot-config/fish/functions/fish_ai_bug_report.fish b/home-files/dot-config/fish/functions/fish_ai_bug_report.fish new file mode 100755 index 0000000..f0a8d2e --- /dev/null +++ b/home-files/dot-config/fish/functions/fish_ai_bug_report.fish @@ -0,0 +1,184 @@ +#!/usr/bin/env fish + +function fish_ai_bug_report + print_header Environment + print_environment + + print_header "Key bindings" + print_key_bindings + + print_header "Proxy settings" + print_proxy_settings + + print_header Dependencies + print_dependencies + + print_header "Fish plugins" + print_fish_plugins + + print_header Configuration + print_configuration + + print_header "Functionality tests" + perform_functionality_tests + + print_header "Compatibility check" + perform_compatibility_check + + print_header "Logs from the last session" + print_logs + + if test "$_fish_ai_error_found" = true + echo "❌ Problems were found (see output above for details)." + return 1 + end +end + +function print_header --argument-names title + set_color --bold blue + echo "$title" + echo "" + set_color normal +end + +function print_proxy_settings + # https://www.python-httpx.org/environment_variables + set proxy_variables (string join '|' 'HTTP_PROXY' 'HTTPS_PROXY' 'ALL_PROXY' 'NO_PROXY') + if test (env | grep -qiE "$proxy_variables") + env | grep -iE "$proxy_variables" + else + echo "No proxy is configured." + end + + echo "" +end + +function print_environment + if test -f /etc/os-release + echo "Running on $(cat /etc/os-release | grep PRETTY | cut -d= -f2 | tr -d '\"')" + echo "Machine hardware: $(uname -m)" + else if type -q sw_vers + echo "Running on macOS $(sw_vers --productVersion)" + echo "Machine hardware: $(uname -m)" + else + echo "❌ Running on an unsupported platform." + set -g _fish_ai_error_found true + end + + echo "" +end + +function print_key_bindings + bind | grep --color=never _fish_ai + echo "" + echo "Key bindings in use: $fish_key_bindings" + echo "" +end + +function print_dependencies + if ! test -d "$_fish_ai_install_dir" + echo "❌ The virtual environment '$_fish_ai_install_dir' does not exist." + set -g _fish_ai_error_found true + return + end + + if type -q uv + echo "😎 This system has uv installed." + end + echo "Python version used by fish-ai: $($_fish_ai_install_dir/bin/python3 --version)" + if type -q python3 + echo "Python version used by the system: $(python3 --version)" + end + fish --version + fisher --version + git --version + echo "" + + "$_fish_ai_install_dir/bin/pip" list + if ! test ("$_fish_ai_install_dir/bin/pip" list | grep fish_ai) + echo "❌ The Python package 'fish_ai' could not be found." + set -g _fish_ai_error_found true + end + + echo "" +end + +function print_fish_plugins + fisher list + echo "" +end + +function print_configuration + if ! test -f "$_fish_ai_config_path" + echo "πŸ˜• The configuration file '$_fish_ai_config_path' does not exist." + else + # Remove api_key and password from the configuration + # password is no longer used but may be present in old configurations + sed /api_key/d "$_fish_ai_config_path" | sed /password/d + end + + echo "" +end + +function perform_functionality_tests + if ! test -f "$_fish_ai_config_path" + echo "😴 No configuration available. Skipping." + echo "" + return + end + + echo "πŸ”₯ Running functionality tests..." + + set -l start (date +%s) + set -l result (_fish_ai_codify 'print the current date') + set -l duration (math (date +%s) - $start) + echo "codify 'print the current date' -> '$result' (in $duration seconds)" + + set -l start (date +%s) + set -l result (_fish_ai_explain 'date' | \ + string trim --chars '# ' | \ + string shorten --max 50) + set -l duration (math (date +%s) - $start) + echo "explain 'date' -> '$result' (in $duration seconds)" + echo "" +end + +function perform_compatibility_check + set -f current_python_version ("$_fish_ai_install_dir/bin/python3" -c 'import platform; major, minor, _ = platform.python_version_tuple(); print(major, end="."); print(minor, end="")') + if ! contains $current_python_version $_fish_ai_supported_versions + echo "πŸ”” This plugin has not been tested with Python $_fish_ai_python_version and may not function correctly." + echo "The following versions are supported: $_fish_ai_supported_versions" + set -g _fish_ai_error_found true + else + echo "πŸ‘ Python $_fish_ai_python_version is supported." + end + echo "" +end + +function print_logs + set -f log_file ("$_fish_ai_install_dir/bin/lookup_setting" log) + if ! test -f "$log_file" + echo "😴 No log file available." + echo "Enable with '$_fish_ai_install_dir/bin/put_setting fish-ai log /tmp/fish-ai.log'." + return + end + print_last_section "$log_file" + if test ("$_fish_ai_install_dir/bin/lookup_setting" debug) != True + echo "" + echo "πŸ™ Consider enabling debug mode to get more log output." + echo "Turn on with '$_fish_ai_install_dir/bin/put_setting fish-ai debug True'." + end +end + +function print_last_section --argument-names log_file + set -l len (wc -l $log_file | awk '{ print $1 }') + for i in (seq $len -1 1) + set -l line (sed -n "$i p" "$log_file") + if test "$line" = "----- BEGIN SESSION -----" + for j in (seq $i $len) + echo (sed -n "$j p" "$log_file") + end + return + end + end +end diff --git a/home-files/dot-config/fish/functions/fish_ai_put_api_key.fish b/home-files/dot-config/fish/functions/fish_ai_put_api_key.fish new file mode 100755 index 0000000..4e86be7 --- /dev/null +++ b/home-files/dot-config/fish/functions/fish_ai_put_api_key.fish @@ -0,0 +1,5 @@ +#!/usr/bin/env fish + +function fish_ai_put_api_key --description "Put an API key on the user's keyring." + "$_fish_ai_install_dir/bin/put_api_key" +end diff --git a/home-files/dot-config/fish/functions/fish_ai_switch_context.fish b/home-files/dot-config/fish/functions/fish_ai_switch_context.fish new file mode 100755 index 0000000..62ffcba --- /dev/null +++ b/home-files/dot-config/fish/functions/fish_ai_switch_context.fish @@ -0,0 +1,5 @@ +#!/usr/bin/env fish + +function fish_ai_switch_context --description "Interactively switch to a different context." + "$_fish_ai_install_dir/bin/switch_context" +end diff --git a/home-files/dot-config/kitty/kitty.conf b/home-files/dot-config/kitty/kitty.conf index e3e314e..a2ec66e 100755 --- a/home-files/dot-config/kitty/kitty.conf +++ b/home-files/dot-config/kitty/kitty.conf @@ -27,6 +27,16 @@ map ctrl+plus change_font_size all +1.0 map ctrl+minus change_font_size all -1.0 map ctrl+0 change_font_size all 0 +map ctrl+e launch --location=vsplit --cwd=current yazi + +enabled_layouts splits +# Custom split keybindings +map ctrl+backslash launch --location=vsplit +map ctrl+shift+backslash launch --location=hsplit +map ctrl+] next_window +map ctrl+[ previous_window +map ctrl+q close_window + map ctrl+c copy_and_clear_or_interrupt map ctrl+v paste_from_clipboard diff --git a/home-files/dot-config/mimeapps.list b/home-files/dot-config/mimeapps.list index 2c8abfc..fe522fe 100644 --- a/home-files/dot-config/mimeapps.list +++ b/home-files/dot-config/mimeapps.list @@ -11,6 +11,7 @@ application/x-extension-xhtml=zen.desktop application/x-extension-xht=zen.desktop inode/directory=nemo.desktop application/x-gnome-saved-search=nemo.desktop +x-scheme-handler/mtslinkchats=mtslink.desktop [Added Associations] x-scheme-handler/http=zen.desktop; diff --git a/home-files/dot-config/starship.toml b/home-files/dot-config/starship.toml new file mode 100644 index 0000000..d7c5362 --- /dev/null +++ b/home-files/dot-config/starship.toml @@ -0,0 +1,334 @@ +# version: 1.0.0 +"$schema" = 'https://starship.rs/config-schema.json' + +add_newline = true +continuation_prompt = "[β–Έβ–Ή ](dimmed white)" + +format = """($nix_shell$container$fill$git_metrics\n)$cmd_duration\ +$hostname\ +$localip\ +$shlvl\ +$shell\ +$env_var\ +$jobs\ +$sudo\ +$username\ +$character""" + +right_format = """ +$singularity\ +$kubernetes\ +$directory\ +$vcsh\ +$fossil_branch\ +$git_branch\ +$git_commit\ +$git_state\ +$git_status\ +$hg_branch\ +$pijul_channel\ +$docker_context\ +$package\ +$c\ +$cpp\ +$cmake\ +$cobol\ +$daml\ +$dart\ +$deno\ +$dotnet\ +$elixir\ +$elm\ +$erlang\ +$fennel\ +$fortran\ +$golang\ +$guix_shell\ +$haskell\ +$haxe\ +$helm\ +$java\ +$julia\ +$kotlin\ +$gradle\ +$lua\ +$maven\ +$nim\ +$nodejs\ +$bun\ +$ocaml\ +$opa\ +$perl\ +$php\ +$pulumi\ +$purescript\ +$python\ +$raku\ +$rlang\ +$red\ +$ruby\ +$rust\ +$scala\ +$solidity\ +$swift\ +$terraform\ +$vlang\ +$vagrant\ +$xmake\ +$zig\ +$buf\ +$conda\ +$pixi\ +$meson\ +$spack\ +$memory_usage\ +$aws\ +$gcloud\ +$openstack\ +$azure\ +$crystal\ +$custom\ +$status\ +$os\ +$battery\ +$time""" + +[fill] +symbol = ' ' + +[character] +format = "$symbol " +success_symbol = "[β—Ž](bold italic bright-yellow)" +error_symbol = "[β—‹](italic purple)" +vimcmd_symbol = "[β– ](italic dimmed green)" +# not supported in zsh +vimcmd_replace_one_symbol = "β—Œ" +vimcmd_replace_symbol = "β–‘" +vimcmd_visual_symbol = "β–Ό" + +[env_var.VIMSHELL] +format = "[$env_value]($style)" +style = 'green italic' + +[sudo] +format = "[$symbol]($style)" +style = "bold italic bright-purple" +symbol = "β‹ˆβ”ˆ" +disabled = false + +[username] +style_user = "bright-yellow bold italic" +style_root = "purple bold italic" +format = "[⭘ $user]($style) " +disabled = false +show_always = false + +[directory] +home_symbol = "βŒ‚" +truncation_length = 2 +truncation_symbol = "β–‘ " +read_only = " β—ˆ" +use_os_path_sep = true +style = "italic blue" +format = '[$path]($style)[$read_only]($read_only_style)' +repo_root_style = 'bold blue' +repo_root_format = '[$before_root_path]($before_repo_root_style)[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) [β–³](bold bright-blue)' + +[cmd_duration] +format = "[β—„ $duration ](italic white)" + +[jobs] +format = "[$symbol$number]($style) " +style = "white" +symbol = "[β–Ά](blue italic)" + +[localip] +ssh_only = true +format = " β—―[$localipv4](bold magenta)" +disabled = false + +[time] +disabled = false +format = "[ $time]($style)" +time_format = "%R" +utc_time_offset = "local" +style = "italic dimmed white" + +[battery] +format = "[ $percentage $symbol]($style)" +full_symbol = "β–ˆ" +charging_symbol = "[↑](italic bold green)" +discharging_symbol = "↓" +unknown_symbol = "β–‘" +empty_symbol = "β–ƒ" + +[[battery.display]] +threshold = 20 +style = "italic bold red" + +[[battery.display]] +threshold = 60 +style = "italic dimmed bright-purple" + +[[battery.display]] +threshold = 70 +style = "italic dimmed yellow" + +[git_branch] +format = " [$branch(:$remote_branch)]($style)" +symbol = "[β–³](bold italic bright-blue)" +style = "italic bright-blue" +truncation_symbol = "β‹―" +truncation_length = 11 +ignore_branches = ["main", "master"] +only_attached = true + +[git_metrics] +format = '([β–΄$added]($added_style))([β–Ώ$deleted]($deleted_style))' +added_style = 'italic dimmed green' +deleted_style = 'italic dimmed red' +ignore_submodules = true +disabled = false + +[git_status] +style = "bold italic bright-blue" +format = "([βŽͺ$ahead_behind$staged$modified$untracked$renamed$deleted$conflicted$stashedβŽ₯]($style))" +conflicted = "[β—ͺβ—¦](italic bright-magenta)" +ahead = "[β–΄β”‚[${count}](bold white)β”‚](italic green)" +behind = "[β–Ώβ”‚[${count}](bold white)β”‚](italic red)" +diverged = "[β—‡ ▴─[${ahead_count}](regular white)│▿─[${behind_count}](regular white)β”‚](italic bright-magenta)" +untracked = "[β—Œβ—¦](italic bright-yellow)" +stashed = "[β—ƒβ—ˆ](italic white)" +modified = "[●◦](italic yellow)" +staged = "[β–ͺ─[$count](bold white)β”‚](italic bright-cyan)" +renamed = "[β—Žβ—¦](italic bright-blue)" +deleted = "[βœ•](italic red)" + +[deno] +format = " [deno](italic) [∫ $version](green bold)" +version_format = "${raw}" + +[lua] +format = " [lua](italic) [${symbol}${version}]($style)" +version_format = "${raw}" +symbol = "⨀ " +style = "bold bright-yellow" + +[nodejs] +format = " [node](italic) [β—« ($version)](bold bright-green)" +version_format = "${raw}" +detect_files = ["package-lock.json", "yarn.lock"] +detect_folders = ["node_modules"] +detect_extensions = [] + +[bun] +format = " [bun](italic) [β—« ($version)](bold bright-green)" +version_format = "${raw}" + +[python] +format = " [py](italic) [${symbol}${version}]($style)" +symbol = "[βŒ‰](bold bright-blue)⌊ " +version_format = "${raw}" +style = "bold bright-yellow" + +[ruby] +format = " [rb](italic) [${symbol}${version}]($style)" +symbol = "β—† " +version_format = "${raw}" +style = "bold red" + +[rust] +format = " [rs](italic) [$symbol$version]($style)" +symbol = "βŠƒ " +version_format = "${raw}" +style = "bold red" + +[package] +format = " [pkg](italic dimmed) [$symbol$version]($style)" +version_format = "${raw}" +symbol = "β—¨ " +style = "dimmed yellow italic bold" + +[swift] +format = " [sw](italic) [${symbol}${version}]($style)" +symbol = "◁ " +style = "bold bright-red" +version_format = "${raw}" + +[aws] +disabled = true +format = " [aws](italic) [$symbol $profile $region]($style)" +style = "bold blue" +symbol = "β–² " + +[buf] +symbol = "β–  " +format = " [buf](italic) [$symbol $version $buf_version]($style)" + +[c] +symbol = "β„‚ " +format = " [$symbol($version(-$name))]($style)" + +[cpp] +symbol = "β„‚ " +format = " [$symbol($version(-$name))]($style)" + +[conda] +symbol = "β—― " +format = " conda [$symbol$environment]($style)" + +[pixi] +symbol = "β–  " +format = " pixi [$symbol$version ($environment )]($style)" + +[dart] +symbol = "◁◅ " +format = " dart [$symbol($version )]($style)" + +[docker_context] +symbol = "β—§ " +format = " docker [$symbol$context]($style)" + +[elixir] +symbol = "β–³ " +format = " exs [$symbol $version OTP $otp_version ]($style)" + +[elm] +symbol = "β—© " +format = " elm [$symbol($version )]($style)" + +[golang] +symbol = "∩ " +format = " go [$symbol($version )]($style)" + +[haskell] +symbol = "❯λ " +format = " hs [$symbol($version )]($style)" + +[java] +symbol = "βˆͺ " +format = " java [${symbol}(${version} )]($style)" + +[julia] +symbol = "β—Ž " +format = " jl [$symbol($version )]($style)" + +[memory_usage] +symbol = "β–ͺβ–«β–ͺ " +format = " mem [${ram}( ${swap})]($style)" + +[nim] +symbol = "β–΄β–²β–΄ " +format = " nim [$symbol($version )]($style)" + +[nix_shell] +style = 'bold italic dimmed blue' +symbol = '✢' +format = '[$symbol nixβŽͺ$stateβŽͺ]($style) [$name](italic dimmed white)' +impure_msg = '[⌽](bold dimmed red)' +pure_msg = '[⌾](bold dimmed green)' +unknown_msg = '[β—Œ](bold dimmed yellow)' + +[spack] +symbol = "β—‡ " +format = " spack [$symbol$environment]($style)" diff --git a/pkglist.txt b/pkglist.txt index e6feb0f..59a8c83 100644 --- a/pkglist.txt +++ b/pkglist.txt @@ -1 +1,164 @@ +7zip +acpi +adwaita-cursors +alsa-utils +ansible +auto-cpufreq +base +base-devel +bat +biber +blueman +bluetui +bluez +bluez-utils +brightnessctl +btop +btrfs-progs +cloc +cups +cups-filters +cups-pdf +curlftpfs +cursor-bin +cybervis +d2 +dhcpcd +direnv +dnslookup +dnsmasq +driftwm +efivar +eza +file-roller +firefox +fish +fisher +flite +fuse3 +fzf +git +glfw +grim +gvfs-mtp +gvfs-smb +hiddify +inetutils +intel-ucode +iodine +iwd +jdk8-openjdk kitty +kodi +less +lftp +libfido2 +linux +linux-firmware +mako +ncdu +nemo +nemo-fileroller +nemo-image-converter +nemo-preview +nemo-seahorse +nemo-share +neovim +networkmanager +noto-fonts-emoji +ntfs-3g +nwg-look +obsidian +openai-codex +opencode +orca +pavucontrol +pfetch-rs +pinta +pipewire-alsa +pipewire-pulse +plymouth +plymouth-theme-connect-git +plymouth-theme-cuts-alt-git +podman +podman-compose +podman-docker +polkit-gnome +powertop +preload +prismlauncher +pulsemixer +pwgen +python-black +python-h5py +python-pip +python-pipx +python-tensorflow +qbittorrent +qemu-full +rclone +ripgrep +rsync +seahorse +slurp +socat +spotify +stow +strace +syncthing +system-config-printer +tailscale +tcpdump +telegram-desktop +texlive-basic +texlive-bibtexextra +texlive-binextra +texlive-fontsextra +texlive-fontsrecommended +texlive-langcyrillic +texlive-latexextra +texlive-latexrecommended +texlive-luatex +texlive-mathscience +texlive-pictures +texlive-publishers +texlive-xetex +thefuck +thermald +traceroute +tree +ttf-firacode-nerd +unrar +vicinae +vim +virt-manager +virtualbox +virtualbox-host-modules-arch +visual-studio-code-bin +visualvm +vlc +vlc-plugins-all +vulkan-intel +vulkan-mesa-layers +waybar +wayvnc +wget +wl-clipboard +wlr-randr +wol +wpa_supplicant +xdg-user-dirs +xorg-xhost +xorg-xinput +xorg-xrandr +xorg-xset +xorg-xsetroot +xorg-xwayland +xwayland-satellite +yay +yay-debug +yazi +zed +zen-browser-bin +zenity +zoxide