[
  {
    "path": "EXTENSIONS.md",
    "content": "# [Dark and light mode theme switch](https://github.com/florentdestremau/omakub-darkmode-switch)\n\nSelect a dark and light theme of your choice to be applied automatically when switching the gnome light/dark mode.\n\n"
  },
  {
    "path": "README.md",
    "content": "# Omakub\n\nTurn a fresh Ubuntu installation into a fully-configured, beautiful, and modern web development system by running a single command. That's the one-line pitch for Omakub. No need to write bespoke configs for every essential tool just to get started or to be up on all the latest command-line tools. Omakub is an opinionated take on what Linux can be at its best.\n\nWatch the introduction video and read more at [omakub.org](https://omakub.org).\n\n## Contributing to the documentation\n\nPlease help us improve Omakub's documentation on the [basecamp/omakub-site repository](https://github.com/basecamp/omakub-site).\n\n## License\n\nOmakub is released under the [MIT License](https://opensource.org/licenses/MIT).\n\n## Extras\n\nWhile omakub is purposed to be an opinionated take, the open source community offers alternative customization, add-ons, extras, that you can use to adjust, replace or enrich your experience.\n\n[⇒ Browse the omakub extensions.](EXTENSIONS.md)\n"
  },
  {
    "path": "applications/About.sh",
    "content": "#!/bin/bash\n\ncat <<EOF >~/.local/share/applications/About.desktop\n[Desktop Entry]\nVersion=1.0\nName=About\nComment=System information from Fastfetch\nExec=alacritty --config-file /home/$USER/.config/alacritty/pane.toml --class=About --title=About -e bash -c 'fastfetch; read -n 1 -s'\nTerminal=false\nType=Application\nIcon=/home/$USER/.local/share/omakub/applications/icons/Ubuntu.png\nCategories=GTK;\nStartupNotify=false\nEOF\n"
  },
  {
    "path": "applications/Activity.sh",
    "content": "#!/bin/bash\n\ncat <<EOF >~/.local/share/applications/Activity.desktop\n[Desktop Entry]\nVersion=1.0\nName=Activity\nComment=System activity from btop\nExec=alacritty --config-file /home/$USER/.config/alacritty/btop.toml --class=Activity --title=Activity -e btop\nTerminal=false\nType=Application\nIcon=/home/$USER/.local/share/omakub/applications/icons/Activity.png\nCategories=GTK;\nStartupNotify=false\nEOF\n"
  },
  {
    "path": "applications/Basecamp.sh",
    "content": "#!/bin/bash\n\ncat <<EOF >~/.local/share/applications/Basecamp.desktop\n[Desktop Entry]\nVersion=1.0\nName=Basecamp\nComment=Basecamp Project Management\nExec=google-chrome --app=\"https://launchpad.37signals.com\" --name=Basecamp --class=Basecamp\nTerminal=false\nType=Application\nIcon=/home/$USER/.local/share/omakub/applications/icons/Basecamp.png\nCategories=GTK;\nMimeType=text/html;text/xml;application/xhtml_xml;\nStartupNotify=true\nEOF\n"
  },
  {
    "path": "applications/Docker.sh",
    "content": "#!/bin/bash\n\ncat <<EOF >~/.local/share/applications/Docker.desktop\n[Desktop Entry]\nVersion=1.0\nName=Docker\nComment=Manage Docker containers with LazyDocker\nExec=alacritty --config-file /home/$USER/.config/alacritty/pane.toml --class=Docker --title=Docker -e lazydocker\nTerminal=false\nType=Application\nIcon=/home/$USER/.local/share/omakub/applications/icons/Docker.png\nCategories=GTK;\nStartupNotify=false\nEOF\n"
  },
  {
    "path": "applications/HEY.sh",
    "content": "#!/bin/bash\n\ncat <<EOF >~/.local/share/applications/HEY.desktop\n[Desktop Entry]\nVersion=1.0\nName=HEY\nComment=HEY Email + Calendar\nExec=google-chrome --app=\"https://app.hey.com/\" --name=HEY --class=HEY\nTerminal=false\nType=Application\nIcon=/home/$USER/.local/share/omakub/applications/icons/HEY.png\nCategories=GTK;\nMimeType=text/html;text/xml;application/xhtml_xml;\nStartupNotify=true\nEOF\n"
  },
  {
    "path": "applications/Neovim.sh",
    "content": "#!/bin/bash\n\ncat <<EOF >~/.local/share/applications/Neovim.desktop\n[Desktop Entry]\nVersion=1.0\nName=Neovim\nComment=Edit text files\nExec=alacritty --config-file /home/$USER/.config/alacritty/pane.toml --class=Neovim --title=Neovim -e nvim %F\nTerminal=false\nType=Application\nIcon=nvim\nCategories=Utilities;TextEditor;\nStartupNotify=false\nEOF\n"
  },
  {
    "path": "applications/Omakub.sh",
    "content": "#!/bin/bash\n\ncat <<EOF >~/.local/share/applications/Omakub.desktop\n[Desktop Entry]\nVersion=1.0\nName=Omakub\nComment=Omakub Controls\nExec=alacritty --config-file /home/$USER/.config/alacritty/pane.toml --class=Omakub --title=Omakub -e omakub\nTerminal=false\nType=Application\nIcon=/home/$USER/.local/share/omakub/applications/icons/Omakub.png\nCategories=GTK;\nStartupNotify=false\nEOF\n"
  },
  {
    "path": "applications/WhatsApp.sh",
    "content": "#!/bin/bash\n\ncat <<EOF >~/.local/share/applications/WhatsApp.desktop\n[Desktop Entry]\nVersion=1.0\nName=WhatsApp\nComment=WhatsApp Messenger\nExec=google-chrome --app=\"https://web.whatsapp.com\" --name=WhatsApp --class=Whatsapp\nTerminal=false\nType=Application\nIcon=/home/$USER/.local/share/omakub/applications/icons/WhatsApp.png\nCategories=GTK;\nMimeType=text/html;text/xml;application/xhtml_xml;\nStartupNotify=true\nEOF\n"
  },
  {
    "path": "ascii.sh",
    "content": "#!/bin/bash\n\nascii_art='\n________                  __        ___.\n\\_____  \\   _____ _____  |  | ____ _\\_ |__\n /   |   \\ /     \\\\__   \\ |  |/ /  |  \\ __ \\\n/    |    \\  Y Y  \\/ __ \\|    <|  |  / \\_\\ \\\n\\_______  /__|_|  (____  /__|_ \\____/|___  /\n        \\/      \\/     \\/     \\/         \\/\n\n'\n\n# Define the color gradient (shades of cyan and blue)\ncolors=(\n\t'\\033[38;5;81m' # Cyan\n\t'\\033[38;5;75m' # Light Blue\n\t'\\033[38;5;69m' # Sky Blue\n\t'\\033[38;5;63m' # Dodger Blue\n\t'\\033[38;5;57m' # Deep Sky Blue\n\t'\\033[38;5;51m' # Cornflower Blue\n\t'\\033[38;5;45m' # Royal Blue\n)\n\n# Split the ASCII art into lines\nIFS=$'\\n' read -rd '' -a lines <<<\"$ascii_art\"\n\n# Print each line with the corresponding color\nfor i in \"${!lines[@]}\"; do\n\tcolor_index=$((i % ${#colors[@]}))\n\techo -e \"${colors[color_index]}${lines[i]}\"\ndone\n"
  },
  {
    "path": "bin/omakub",
    "content": "#!/bin/bash\n\nsource $OMAKUB_PATH/bin/omakub-sub/header.sh\nsource $OMAKUB_PATH/bin/omakub-sub/menu.sh\n"
  },
  {
    "path": "bin/omakub-sub/font-size.sh",
    "content": "#!/bin/bash\n\nchoice=$(gum choose {7..14} \"<< Back\" --height 11 --header \"Choose your terminal font size\")\n\nif [[ $choice =~ ^[0-9]+$ ]]; then\n\tsed -i \"s/^size = .*$/size = $choice/g\" ~/.config/alacritty/font-size.toml\n\tsource $OMAKUB_PATH/bin/omakub-sub/font-size.sh\nelse\n\tsource $OMAKUB_PATH/bin/omakub-sub/font.sh\nfi\n"
  },
  {
    "path": "bin/omakub-sub/font.sh",
    "content": "#!/bin/bash\n\nset_font() {\n\tlocal font_name=$1\n\tlocal url=$2\n\tlocal file_type=$3\n\tlocal file_name=\"${font_name/ Nerd Font/}\"\n\n\tif ! $(fc-list | grep -i \"$font_name\" >/dev/null); then\n\t\tcd /tmp\n\t\twget -O \"$file_name.zip\" \"$url\"\n\t\tunzip \"$file_name.zip\" -d \"$file_name\"\n\t\tcp \"$file_name\"/*.\"$file_type\" ~/.local/share/fonts\n\t\trm -rf \"$file_name.zip\" \"$file_name\"\n\t\tfc-cache\n\t\tcd -\n\t\tclear\n\t\tsource $OMAKUB_PATH/ascii.sh\n\tfi\n\n\tgsettings set org.gnome.desktop.interface monospace-font-name \"$font_name 10\"\n\tcp \"$OMAKUB_PATH/configs/alacritty/fonts/$file_name.toml\" ~/.config/alacritty/font.toml\n\tsed -i \"s/\\\"editor.fontFamily\\\": \\\".*\\\"/\\\"editor.fontFamily\\\": \\\"$font_name\\\"/g\" ~/.config/Code/User/settings.json\n}\n\nif [ \"$#\" -gt 1 ]; then\n\tchoice=${!#}\nelse\n\tchoice=$(gum choose \"Cascadia Mono\" \"Fira Mono\" \"JetBrains Mono\" \"Meslo\" \"> Change size\" \"<< Back\" --height 8 --header \"Choose your programming font\")\nfi\n\ncase $choice in\n\"Cascadia Mono\")\n\tset_font \"CaskaydiaMono Nerd Font\" \"https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip\" \"ttf\"\n\t;;\n\"Fira Mono\")\n\tset_font \"FiraMono Nerd Font\" \"https://github.com/ryanoasis/nerd-fonts/releases/latest/download/FiraMono.zip\" \"otf\"\n\t;;\n\"JetBrains Mono\")\n\tset_font \"JetBrainsMono Nerd Font\" \"https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip\" \"ttf\"\n\t;;\n\"Meslo\")\n\tset_font \"MesloLGS Nerd Font\" \"https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Meslo.zip\" \"ttf\"\n\t;;\n\"> Change size\")\n\tsource $OMAKUB_PATH/bin/omakub-sub/font-size.sh\n\texit\n\t;;\nesac\n\nsource $OMAKUB_PATH/bin/omakub-sub/menu.sh\n"
  },
  {
    "path": "bin/omakub-sub/header.sh",
    "content": "#!/bin/bash\n\nsource $OMAKUB_PATH/ascii.sh\necho \"\" # Add spacing\necho \"                                 $(cat $OMAKUB_PATH/version)\"\necho \"\" # Add spacing\n"
  },
  {
    "path": "bin/omakub-sub/install-dev-editor.sh",
    "content": "#!/bin/bash\n\nCHOICES=(\n  \"Cursor            AI Code Editor\"\n  \"Doom Emacs        Emacs framework with curated list of packages\"\n  \"RubyMine          IntelliJ's commercial Ruby editor\"\n  \"Windsurf          Another AI Code Editor\"\n  \"Zed               Fast all-purpose editor\"\n  \"<< Back           \"\n)\n\nCHOICE=$(gum choose \"${CHOICES[@]}\" --height 8 --header \"Install editor\")\n\nif [[ \"$CHOICE\" == \"<< Back\"* ]] || [[ -z \"$CHOICE\" ]]; then\n  # Don't install anything\n  echo \"\"\nelse\n  INSTALLER=$(echo \"$CHOICE\" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')\n  INSTALLER_FILE=\"$OMAKUB_PATH/install/desktop/optional/app-$INSTALLER.sh\"\n\n  source $INSTALLER_FILE && gum spin --spinner globe --title \"Install completed!\" -- sleep 3\nfi\n\nclear\nsource $OMAKUB_PATH/bin/omakub-sub/header.sh\nsource $OMAKUB_PATH/bin/omakub-sub/install.sh\n"
  },
  {
    "path": "bin/omakub-sub/install.sh",
    "content": "#!/bin/bash\n\nCHOICES=(\n  \"Dev Editor        Install alternative programming editors\"\n  \"Dev Language      Install programming language environment\"\n  \"Dev Database      Install development database in Docker\"\n  \"1password         Manage your passwords securely across devices\"\n  \"Audacity          Record and edit audio\"\n  \"ASDControl        Set brightness on Apple Studio and XDR displays\"\n  \"Brave             Chrome-based browser with built-in ad blocking\"\n  \"Dropbox           Sync files across computers with ease\"\n  \"Discord           Communication platform for voice, video, and text messaging\"\n  \"Gimp              Image manipulation tool ala Photoshop\"\n  \"Geekbench         CPU benchmaking tool\"\n  \"Mainline Kernels  Install newer Linux kernels than Ubuntu defaults\"\n  \"Minecraft         Everyone's favorite blocky building game\"\n  \"OBS Studio        Record screencasts with inputs from both display + webcam\"\n  \"Ollama            Run LLMs, like Meta's Llama3, locally\"\n  \"Retroarch         Play retro games\"\n  \"Spotify           Stream music from the world's most popular service\"\n  \"Steam             Play games from Valve's store\"\n  \"Tailscale         Mesh VPN based on WireGuard and with Magic DNS\"\n  \"VirtualBox        Virtual machines to run Windows/Linux\"\n  \"Zoom              Attend and host video chat meetings\"\n  \"Web Apps          Install web apps with their own icon and shell\"\n  \"> All             Re-run any of the default installers\"\n  \"<< Back           \"\n)\n\nCHOICE=$(gum choose \"${CHOICES[@]}\" --height 26 --header \"Install application\")\n\nif [[ \"$CHOICE\" == \"<< Back\"* ]] || [[ -z \"$CHOICE\" ]]; then\n  # Don't install anything\n  echo \"\"\nelif [[ \"$CHOICE\" == \"> All\"* ]]; then\n  INSTALLER_FILE=$(gum file $OMAKUB_PATH/install)\n\n  [[ -n \"$INSTALLER_FILE\" ]] &&\n    gum confirm \"Run installer?\" &&\n    source $INSTALLER_FILE &&\n    gum spin --spinner globe --title \"Install completed!\" -- sleep 3\nelse\n  INSTALLER=$(echo \"$CHOICE\" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')\n\n  case \"$INSTALLER\" in\n  \"dev-editor\") INSTALLER_FILE=\"$OMAKUB_PATH/bin/omakub-sub/install-dev-editor.sh\" ;;\n  \"web-apps\") INSTALLER_FILE=\"$OMAKUB_PATH/install/desktop/optional/select-web-apps.sh\" ;;\n  \"dev-language\") INSTALLER_FILE=\"$OMAKUB_PATH/install/terminal/select-dev-language.sh\" ;;\n  \"dev-database\") INSTALLER_FILE=\"$OMAKUB_PATH/install/terminal/select-dev-storage.sh\" ;;\n  \"ollama\") INSTALLER_FILE=\"$OMAKUB_PATH/install/terminal/optional/app-ollama.sh\" ;;\n  \"tailscale\") INSTALLER_FILE=\"$OMAKUB_PATH/install/terminal/optional/app-tailscale.sh\" ;;\n  \"geekbench\") INSTALLER_FILE=\"$OMAKUB_PATH/install/terminal/optional/app-geekbench.sh\" ;;\n  *) INSTALLER_FILE=\"$OMAKUB_PATH/install/desktop/optional/app-$INSTALLER.sh\" ;;\n  esac\n\n  source $INSTALLER_FILE && gum spin --spinner globe --title \"Install completed!\" -- sleep 3\nfi\n\nclear\nsource $OMAKUB_PATH/bin/omakub\n"
  },
  {
    "path": "bin/omakub-sub/manual.sh",
    "content": "#!/bin/bash\n\nxdg-open \"https://manual.omakub.org\" &>/dev/null\nsource $OMAKUB_PATH/bin/omakub-sub/menu.sh\n"
  },
  {
    "path": "bin/omakub-sub/menu.sh",
    "content": "#!/bin/bash\n\nif [ $# -eq 0 ]; then\n\tSUB=$(gum choose \"Theme\" \"Font\" \"Update\" \"Install\" \"Uninstall\" \"Manual\" \"Quit\" --height 10 --header \"\" | tr '[:upper:]' '[:lower:]')\nelse\n\tSUB=$1\nfi\n\n[ -n \"$SUB\" ] && [ \"$SUB\" != \"quit\" ] && source $OMAKUB_PATH/bin/omakub-sub/$SUB.sh\n"
  },
  {
    "path": "bin/omakub-sub/migrate.sh",
    "content": "#!/bin/bash\n\ncd $OMAKUB_PATH\nlast_updated_at=$(git log -1 --format=%cd --date=unix)\ngit pull\n\nfor file in $OMAKUB_PATH/migrations/*.sh; do\n  filename=$(basename \"$file\")\n  migrate_at=\"${filename%.sh}\"\n\n  if [ $migrate_at -gt $last_updated_at ]; then\n    echo \"Running migration for $migrate_at\"\n    source $file\n  fi\ndone\n\ncd -\n"
  },
  {
    "path": "bin/omakub-sub/theme.sh",
    "content": "#!/bin/bash\n\nTHEME_NAMES=(\"Tokyo Night\" \"Catppuccin\" \"Nord\" \"Everforest\" \"Gruvbox\" \"Kanagawa\" \"Ristretto\" \"Rose Pine\" \"Matte Black\" \"Osaka Jade\")\nTHEME=$(gum choose \"${THEME_NAMES[@]}\" \"<< Back\" --header \"Choose your theme\" --height 12 | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')\n\nif [ -n \"$THEME\" ] && [ \"$THEME\" != \"<<-back\" ]; then\n  cp $OMAKUB_PATH/themes/$THEME/alacritty.toml ~/.config/alacritty/theme.toml\n  cp $OMAKUB_PATH/themes/$THEME/zellij.kdl ~/.config/zellij/themes/$THEME.kdl\n  sed -i \"s/theme \\\".*\\\"/theme \\\"$THEME\\\"/g\" ~/.config/zellij/config.kdl\n  if [ -d \"$HOME/.config/nvim\" ]; then\n    cp $OMAKUB_PATH/themes/$THEME/neovim.lua ~/.config/nvim/lua/plugins/theme.lua\n  fi\n\n  if [ -f \"$OMAKUB_PATH/themes/$THEME/btop.theme\" ]; then\n    cp $OMAKUB_PATH/themes/$THEME/btop.theme ~/.config/btop/themes/$THEME.theme\n    sed -i \"s/color_theme = \\\".*\\\"/color_theme = \\\"$THEME\\\"/g\" ~/.config/btop/btop.conf\n  else\n    sed -i \"s/color_theme = \\\".*\\\"/color_theme = \\\"Default\\\"/g\" ~/.config/btop/btop.conf\n  fi\n\n  source $OMAKUB_PATH/themes/$THEME/gnome.sh\n  source $OMAKUB_PATH/themes/$THEME/tophat.sh\n  source $OMAKUB_PATH/themes/$THEME/vscode.sh\n\n  # Forgo setting the Chrome theme until we might find a less disruptive way of doing it.\n  # Having to quit Chrome, and all Chrome-based apps, is too much of an inposition.\n  # source $OMAKUB_PATH/themes/$THEME/chrome.sh\nfi\n\nsource $OMAKUB_PATH/bin/omakub-sub/menu.sh\n"
  },
  {
    "path": "bin/omakub-sub/uninstall.sh",
    "content": "#!/bin/bash\n\nUNINSTALLER=$(gum file $OMAKUB_PATH/uninstall --height 26)\n[ -n \"$UNINSTALLER\" ] && gum confirm \"Run uninstaller?\" && source $UNINSTALLER && gum spin --spinner globe --title \"Uninstall completed!\" -- sleep 3\nclear\nsource $OMAKUB_PATH/bin/omakub\n"
  },
  {
    "path": "bin/omakub-sub/update.sh",
    "content": "#!/bin/bash\n\nCHOICES=(\n\t\"Omakub        Update Omakub itself and run any migrations\"\n\t\"Ollama        Run LLMs, like Meta's Llama3, locally\"\n\t\"LazyGit       TUI for Git\"\n\t\"LazyDocker    TUI for Docker\"\n\t\"Neovim        Text editor that runs in the terminal\"\n\t\"Zellij        Adds panes, tabs, and sessions to the terminal\"\n\t\"<< Back       \"\n)\n\nCHOICE=$(gum choose \"${CHOICES[@]}\" --height 10 --header \"Update manually-managed applications\")\n\nif [[ \"$CHOICE\" == \"<< Back\"* ]] || [[ -z \"$CHOICE\" ]]; then\n\t# Don't update anything\n\techo \"\"\nelse\n\tINSTALLER=$(echo \"$CHOICE\" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')\n\n\tcase \"$INSTALLER\" in\n\t\"omakub\") INSTALLER_FILE=\"$OMAKUB_PATH/bin/omakub-sub/migrate.sh\" ;;\n\t\"ollama\") INSTALLER_FILE=\"$OMAKUB_PATH/install/terminal/optional/app-ollama.sh\" ;;\n\t*) INSTALLER_FILE=\"$OMAKUB_PATH/install/terminal/app-$INSTALLER.sh\" ;;\n\tesac\n\n\tsource $INSTALLER_FILE && gum spin --spinner globe --title \"Update completed!\" -- sleep 3\nfi\n\nclear\nsource $OMAKUB_PATH/bin/omakub\n"
  },
  {
    "path": "boot.sh",
    "content": "#!/bin/bash\n\nset -e\n\nascii_art='________                  __        ___.\n\\_____  \\   _____ _____  |  | ____ _\\_ |__\n /   |   \\ /     \\\\__   \\ |  |/ /  |  \\ __ \\\n/    |    \\  Y Y  \\/ __ \\|    <|  |  / \\_\\ \\\n\\_______  /__|_|  (____  /__|_ \\____/|___  /\n        \\/      \\/     \\/     \\/         \\/\n'\n\necho -e \"$ascii_art\"\necho \"=> Omakub is for fresh Ubuntu 24.04+ installations only!\"\necho -e \"\\nBegin installation (or abort with ctrl+c)...\"\n\nsudo apt-get update >/dev/null\nsudo apt-get install -y git >/dev/null\n\necho \"Cloning Omakub...\"\nrm -rf ~/.local/share/omakub\ngit clone https://github.com/basecamp/omakub.git ~/.local/share/omakub >/dev/null\nif [[ $OMAKUB_REF != \"master\" ]]; then\n\tcd ~/.local/share/omakub\n\tgit fetch origin \"${OMAKUB_REF:-stable}\" && git checkout \"${OMAKUB_REF:-stable}\"\n\tcd -\nfi\n\necho \"Installation starting...\"\nsource ~/.local/share/omakub/install.sh\n"
  },
  {
    "path": "configs/alacritty/btop.toml",
    "content": "# Used by the Activity.desktop app\nimport = [ \"~/.config/alacritty/pane.toml\" ]\n\n[window]\ndimensions.columns = 121\ndimensions.lines = 40"
  },
  {
    "path": "configs/alacritty/font-size.toml",
    "content": "# Leave this file in place for omakub to rely on a shared font size for all terminal apps\n[font]\nsize = 9\n"
  },
  {
    "path": "configs/alacritty/fonts/CaskaydiaMono.toml",
    "content": "[font]\nnormal = { family = \"CaskaydiaMono Nerd Font\", style = \"Regular\" }\nbold = { family = \"CaskaydiaMono Nerd Font\", style = \"Bold\" }\nitalic = { family = \"CaskaydiaMono Nerd Font\", style = \"Italic\" }\n"
  },
  {
    "path": "configs/alacritty/fonts/FiraMono.toml",
    "content": "[font]\nnormal = { family = \"FiraMono Nerd Font Mono\", style = \"Regular\" }\nbold = { family = \"FiraMono Nerd Font Mono\", style = \"Bold\" }\nitalic = { family = \"FiraMono Nerd Font Mono\", style = \"Italic\" }\n"
  },
  {
    "path": "configs/alacritty/fonts/JetBrainsMono.toml",
    "content": "[font]\nnormal = { family = \"JetBrainsMono Nerd Font Mono\", style = \"Regular\" }\nbold = { family = \"JetBrainsMono Nerd Font Mono\", style = \"Bold\" }\nitalic = { family = \"JetBrainsMono Nerd Font Mono\", style = \"Italic\" }\n"
  },
  {
    "path": "configs/alacritty/fonts/MesloLGS.toml",
    "content": "[font]\nnormal = { family = \"MesloLGLDZ Nerd Font Mono\", style = \"Regular\" }\nbold = { family = \"MesloLGLDZ Nerd Font Mono\", style = \"Bold\" }\nitalic = { family = \"MesloLGLDZ Nerd Font Mono\", style = \"Italic\" }\n"
  },
  {
    "path": "configs/alacritty/pane.toml",
    "content": "# Used by the About.desktop, Activity.desktop, Docker.desktop, Omakub.desktop, and Neovim.desktop apps\nimport = [ \"~/.config/alacritty/theme.toml\", \"~/.config/alacritty/font.toml\", \"~/.config/alacritty/font-size.toml\", \"~/.config/alacritty/shared.toml\" ]\n\n[window]\npadding.x = 30\npadding.y = 30\n"
  },
  {
    "path": "configs/alacritty/shared.toml",
    "content": "[env]\nTERM = \"xterm-256color\"\n\n[shell]\nprogram = \"zellij\"\n\n[window]\npadding.x = 16\npadding.y = 14\ndecorations = \"None\"\nopacity = 0.98\n\n[keyboard]\nbindings = [\n{ key = \"F11\", action = \"ToggleFullscreen\" }\n]\n"
  },
  {
    "path": "configs/alacritty.toml",
    "content": "import = [ \"~/.config/alacritty/theme.toml\", \"~/.config/alacritty/font.toml\", \"~/.config/alacritty/font-size.toml\", \"~/.config/alacritty/shared.toml\" ]\n"
  },
  {
    "path": "configs/bashrc",
    "content": "source ~/.local/share/omakub/defaults/bash/rc\n\n# Editor used by CLI\nexport EDITOR=\"nvim\"\nexport SUDO_EDITOR=\"$EDITOR\"\n"
  },
  {
    "path": "configs/btop.conf",
    "content": "#? Config file for btop v. 1.3.0\n\n#* Name of a btop++/bpytop/bashtop formatted \".theme\" file, \"Default\" and \"TTY\" for builtin themes.\n#* Themes should be placed in \"../share/btop/themes\" relative to binary or \"$HOME/.config/btop/themes\"\ncolor_theme = \"tokyo-night\"\n\n#* If the theme set background should be shown, set to False if you want terminal background transparency.\ntheme_background = True\n\n#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.\ntruecolor = True\n\n#* Set to true to force tty mode regardless if a real tty has been detected or not.\n#* Will force 16-color mode and TTY theme, set all graph symbols to \"tty\" and swap out other non tty friendly symbols.\nforce_tty = False\n\n#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.\n#* Format: \"box_name:P:G,box_name:P:G\" P=(0 or 1) for alternate positions, G=graph symbol to use for box.\n#* Use whitespace \" \" as separator between different presets.\n#* Example: \"cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty\"\npresets = \"cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty\"\n\n#* Set to True to enable \"h,j,k,l,g,G\" keys for directional control in lists.\n#* Conflicting keys for h:\"help\" and k:\"kill\" is accessible while holding shift.\nvim_keys = False\n\n#* Rounded corners on boxes, is ignored if TTY mode is ON.\nrounded_corners = True\n\n#* Default symbols to use for graph creation, \"braille\", \"block\" or \"tty\".\n#* \"braille\" offers the highest resolution but might not be included in all fonts.\n#* \"block\" has half the resolution of braille but uses more common characters.\n#* \"tty\" uses only 3 different symbols but will work with most fonts and should work in a real TTY.\n#* Note that \"tty\" only has half the horizontal resolution of the other two, so will show a shorter historical view.\ngraph_symbol = \"braille\"\n\n# Graph symbol to use for graphs in cpu box, \"default\", \"braille\", \"block\" or \"tty\".\ngraph_symbol_cpu = \"default\"\n\n# Graph symbol to use for graphs in gpu box, \"default\", \"braille\", \"block\" or \"tty\".\ngraph_symbol_gpu = \"default\"\n\n# Graph symbol to use for graphs in cpu box, \"default\", \"braille\", \"block\" or \"tty\".\ngraph_symbol_mem = \"default\"\n\n# Graph symbol to use for graphs in cpu box, \"default\", \"braille\", \"block\" or \"tty\".\ngraph_symbol_net = \"default\"\n\n# Graph symbol to use for graphs in cpu box, \"default\", \"braille\", \"block\" or \"tty\".\ngraph_symbol_proc = \"default\"\n\n#* Manually set which boxes to show. Available values are \"cpu mem net proc\" and \"gpu0\" through \"gpu5\", separate values with whitespace.\nshown_boxes = \"cpu mem net proc\"\n\n#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.\nupdate_ms = 2000\n\n#* Processes sorting, \"pid\" \"program\" \"arguments\" \"threads\" \"user\" \"memory\" \"cpu lazy\" \"cpu direct\",\n#* \"cpu lazy\" sorts top process over time (easier to follow), \"cpu direct\" updates top process directly.\nproc_sorting = \"cpu lazy\"\n\n#* Reverse sorting order, True or False.\nproc_reversed = False\n\n#* Show processes as a tree.\nproc_tree = False\n\n#* Use the cpu graph colors in the process list.\nproc_colors = True\n\n#* Use a darkening gradient in the process list.\nproc_gradient = True\n\n#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.\nproc_per_core = False\n\n#* Show process memory as bytes instead of percent.\nproc_mem_bytes = True\n\n#* Show cpu graph for each process.\nproc_cpu_graphs = True\n\n#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)\nproc_info_smaps = False\n\n#* Show proc box on left side of screen instead of right.\nproc_left = False\n\n#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).\nproc_filter_kernel = False\n\n#* In tree-view, always accumulate child process resources in the parent process.\nproc_aggregate = False\n\n#* Sets the CPU stat shown in upper half of the CPU graph, \"total\" is always available.\n#* Select from a list of detected attributes from the options menu.\ncpu_graph_upper = \"Auto\"\n\n#* Sets the CPU stat shown in lower half of the CPU graph, \"total\" is always available.\n#* Select from a list of detected attributes from the options menu.\ncpu_graph_lower = \"Auto\"\n\n#* If gpu info should be shown in the cpu box. Available values = \"Auto\", \"On\" and \"Off\".\nshow_gpu_info = \"Auto\"\n\n#* Toggles if the lower CPU graph should be inverted.\ncpu_invert_lower = True\n\n#* Set to True to completely disable the lower CPU graph.\ncpu_single_graph = False\n\n#* Show cpu box at bottom of screen instead of top.\ncpu_bottom = False\n\n#* Shows the system uptime in the CPU box.\nshow_uptime = True\n\n#* Show cpu temperature.\ncheck_temp = True\n\n#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.\ncpu_sensor = \"Auto\"\n\n#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.\nshow_coretemp = True\n\n#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.\n#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.\n#* Format \"x:y\" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.\n#* Example: \"4:0 5:1 6:3\"\ncpu_core_map = \"\"\n\n#* Which temperature scale to use, available values: \"celsius\", \"fahrenheit\", \"kelvin\" and \"rankine\".\ntemp_scale = \"celsius\"\n\n#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.\nbase_10_sizes = False\n\n#* Show CPU frequency.\nshow_cpu_freq = True\n\n#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.\n#* Special formatting: /host = hostname | /user = username | /uptime = system uptime\nclock_format = \"%X\"\n\n#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.\nbackground_update = True\n\n#* Custom cpu model name, empty string to disable.\ncustom_cpu_name = \"\"\n\n#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace \" \".\n#* Begin line with \"exclude=\" to change to exclude filter, otherwise defaults to \"most include\" filter. Example: disks_filter=\"exclude=/boot /home/user\".\ndisks_filter = \"\"\n\n#* Show graphs instead of meters for memory values.\nmem_graphs = True\n\n#* Show mem box below net box instead of above.\nmem_below_net = False\n\n#* Count ZFS ARC in cached and available memory.\nzfs_arc_cached = True\n\n#* If swap memory should be shown in memory box.\nshow_swap = True\n\n#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.\nswap_disk = True\n\n#* If mem box should be split to also show disks info.\nshow_disks = True\n\n#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.\nonly_physical = True\n\n#* Read disks list from /etc/fstab. This also disables only_physical.\nuse_fstab = True\n\n#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)\nzfs_hide_datasets = False\n\n#* Set to true to show available disk space for privileged users.\ndisk_free_priv = False\n\n#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.\nshow_io_stat = True\n\n#* Toggles io mode for disks, showing big graphs for disk read/write speeds.\nio_mode = False\n\n#* Set to True to show combined read/write io graphs in io mode.\nio_graph_combined = False\n\n#* Set the top speed for the io graphs in MiB/s (100 by default), use format \"mountpoint:speed\" separate disks with whitespace \" \".\n#* Example: \"/mnt/media:100 /:20 /boot:1\".\nio_graph_speeds = \"\"\n\n#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.\nnet_download = 100\n\nnet_upload = 100\n\n#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.\nnet_auto = True\n\n#* Sync the auto scaling for download and upload to whichever currently has the highest scale.\nnet_sync = True\n\n#* Starts with the Network Interface specified here.\nnet_iface = \"\"\n\n#* Show battery stats in top right if battery is present.\nshow_battery = True\n\n#* Which battery to use if multiple are present. \"Auto\" for auto detection.\nselected_battery = \"Auto\"\n\n#* Set loglevel for \"~/.config/btop/btop.log\" levels are: \"ERROR\" \"WARNING\" \"INFO\" \"DEBUG\".\n#* The level set includes all lower levels, i.e. \"DEBUG\" will show all logging info.\nlog_level = \"WARNING\"\n\n#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.\nnvml_measure_pcie_speeds = True\n\n#* Horizontally mirror the GPU graph.\ngpu_mirror_graph = True\n\n#* Custom gpu0 model name, empty string to disable.\ncustom_gpu_name0 = \"\"\n\n#* Custom gpu1 model name, empty string to disable.\ncustom_gpu_name1 = \"\"\n\n#* Custom gpu2 model name, empty string to disable.\ncustom_gpu_name2 = \"\"\n\n#* Custom gpu3 model name, empty string to disable.\ncustom_gpu_name3 = \"\"\n\n#* Custom gpu4 model name, empty string to disable.\ncustom_gpu_name4 = \"\"\n\n#* Custom gpu5 model name, empty string to disable.\ncustom_gpu_name5 = \"\"\n"
  },
  {
    "path": "configs/fastfetch.jsonc",
    "content": "{\n    \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n    \"logo\": {\n        \"padding\": {\n            \"top\": 5,\n            \"right\": 6\n        }\n    },\n    \"modules\": [\n        \"break\",\n        {\n            \"type\": \"custom\",\n            \"format\": \"\\u001b[90m┌──────────────────────Hardware──────────────────────┐\"\n        },\n        {\n            \"type\": \"host\",\n            \"key\": \" PC\",\n            \"keyColor\": \"green\"\n        },\n        {\n            \"type\": \"cpu\",\n            \"key\": \"│ ├\",\n            \"showPeCoreCount\": true,\n            \"keyColor\": \"green\"\n        },\n        {\n            \"type\": \"gpu\",\n            \"key\": \"│ ├\",\n            \"detectionMethod\": \"pci\",\n            \"keyColor\": \"green\"\n        },\n        {\n            \"type\": \"display\",\n            \"key\": \"│ ├󱄄\",\n            \"keyColor\": \"green\"\n        },\n        {\n            \"type\": \"disk\",\n            \"key\": \"│ ├󰋊\",\n            \"keyColor\": \"green\"\n        },\n        {\n            \"type\": \"memory\",\n            \"key\": \"│ ├\",\n            \"keyColor\": \"green\"\n        },\n        {\n            \"type\": \"swap\",\n            \"key\": \"└ └󰓡 \",\n            \"keyColor\": \"green\",\n        },\n        {\n            \"type\": \"custom\",\n            \"format\": \"\\u001b[90m└────────────────────────────────────────────────────┘\"\n        },\n        \"break\",\n        {\n            \"type\": \"custom\",\n            \"format\": \"\\u001b[90m┌──────────────────────Software──────────────────────┐\"\n        },\n        {\n            \"type\": \"os\",\n            \"key\": \" OS\",\n            \"keyColor\": \"yellow\"\n        },\n        {\n            \"type\": \"kernel\",\n            \"key\": \"│ ├\",\n            \"keyColor\": \"yellow\"\n        },\n        {\n            \"type\": \"packages\",\n            \"key\": \"│ ├󰏖\",\n            \"keyColor\": \"yellow\"\n        },\n        {\n            \"type\": \"shell\",\n            \"key\": \"└ └\",\n            \"keyColor\": \"yellow\"\n        },\n        \"break\",\n        {\n            \"type\": \"de\",\n            \"key\": \" DE\",\n            \"keyColor\": \"blue\"\n        },\n        {\n            \"type\": \"wm\",\n            \"key\": \"│ ├\",\n            \"keyColor\": \"blue\"\n        },\n        {\n            \"type\": \"wmtheme\",\n            \"key\": \"│ ├󰉼\",\n            \"keyColor\": \"blue\"\n        },\n        {\n            \"type\": \"icons\",\n            \"key\": \"│ ├󰀻\",\n            \"keyColor\": \"blue\",\n        },\n        {\n            \"type\": \"cursor\",\n            \"key\": \"│ ├\",\n            \"keyColor\": \"blue\",\n        },\n        {\n            \"type\": \"terminalfont\",\n            \"key\": \"│ ├\",\n            \"keyColor\": \"blue\",\n        },\n        {\n            \"type\": \"terminal\",\n            \"key\": \"└ └\",\n            \"keyColor\": \"blue\"\n        },\n        {\n            \"type\": \"custom\",\n            \"format\": \"\\u001b[90m└────────────────────────────────────────────────────┘\"\n        },\n        \"break\",\n        {\n            \"type\": \"custom\",\n            \"format\": \"\\u001b[90m┌────────────────────Uptime / Age────────────────────┐\"\n        },\n        {\n            \"type\": \"command\",\n            \"key\": \"  OS Age \",\n            \"keyColor\": \"magenta\",\n            \"text\": \"birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days\"\n        },\n        {\n            \"type\": \"uptime\",\n            \"key\": \"  Uptime \",\n            \"keyColor\": \"magenta\"\n        },\n        {\n            \"type\": \"custom\",\n            \"format\": \"\\u001b[90m└────────────────────────────────────────────────────┘\"\n        },\n        \"break\",\n    ]\n}\n"
  },
  {
    "path": "configs/inputrc",
    "content": "$include ~/.local/share/omakub/defaults/bash/inputrc\n"
  },
  {
    "path": "configs/neovim/lazyvim.json",
    "content": "{\n  \"extras\": [\n    \"lazyvim.plugins.extras.editor.neo-tree\"\n  ],\n  \"install_version\": 8,\n  \"news\": {\n    \"NEWS.md\": \"10960\"\n  },\n  \"version\": 8\n}\n"
  },
  {
    "path": "configs/neovim/snacks-animated-scrolling-off.lua",
    "content": "return {\n\t\"folke/snacks.nvim\",\n\topts = {\n\t\tscroll = {\n\t\t\tenabled = false, -- Disable scrolling animations\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "configs/neovim/transparency.lua",
    "content": "-- transparent background\nvim.api.nvim_set_hl(0, \"Normal\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NormalFloat\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"FloatBorder\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"Pmenu\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"Terminal\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"EndOfBuffer\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"FoldColumn\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"Folded\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"SignColumn\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NormalNC\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"WhichKeyFloat\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"TelescopeBorder\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"TelescopeNormal\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"TelescopePromptBorder\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"TelescopePromptTitle\", { bg = \"none\" })\n\n-- transparent background for neotree\nvim.api.nvim_set_hl(0, \"NeoTreeNormal\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NeoTreeNormalNC\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NeoTreeVertSplit\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NeoTreeWinSeparator\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NeoTreeEndOfBuffer\", { bg = \"none\" })\n\n-- transparent background for nvim-tree\nvim.api.nvim_set_hl(0, \"NvimTreeNormal\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NvimTreeVertSplit\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NvimTreeEndOfBuffer\", { bg = \"none\" })\n\n-- transparent notify background\nvim.api.nvim_set_hl(0, \"NotifyINFOBody\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyERRORBody\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyWARNBody\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyTRACEBody\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyDEBUGBody\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyINFOTitle\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyERRORTitle\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyWARNTitle\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyTRACETitle\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyDEBUGTitle\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyINFOBorder\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyERRORBorder\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyWARNBorder\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyTRACEBorder\", { bg = \"none\" })\nvim.api.nvim_set_hl(0, \"NotifyDEBUGBorder\", { bg = \"none\" })\n"
  },
  {
    "path": "configs/typora/ia_typora.css",
    "content": ":root {\n  --accent-color: #aeb1b5; /* #'s before H1-3 */\n  --background-color: white;\n  --border-color: #ddd; \n  --code-bg-color: #f8f8f8; \n  --font-color: #42464c;\n  --header-color: #222324;\n  --link-color: #2077b2;\n  --control-text-color: #667176;\n  --side-bar-bg-color: #fafafa;\n  --body-font: iAWriterMonoS-Regular, monospace, Roboto;\n  --border-radius: 2px;\n  --document-horizontal-margin: 80px;\n  --document-padding-x: 10ch;\n  --font-size: 20px;\n  --h1-fontsize: 20px;   /* 1,5   rem = 24px */\n  --h2-fontsize: 20px; /* 1,375 rem = 22px */\n  --h3-fontsize: 20px;  /* 1,25  rem = 20px */\n  --h4-fontsize: 20px; /* 1,125 rem = 18px */\n  --line-height: 1.8;\n  --main-content-margin: 0 auto;\n  --main-content-max-width: 85ch;\n  --monospace-font-size: 20px;\n  --monospace-font: iAWriterMonoS-Regular, monospace;\n  --monospace-line-height: 1.6;\n  --monospace: var(--monospace-font); /* Fixes source code mode */\n  --nav-width: 200px;\n  --vertical-padding: 40px;\n}\n\n/* Narrow layout styles */\n@media (max-width: 640px) {\n  :root {\n    --document-padding-x: 4ch;\n  }\n}\n\nhtml {\n  font-size: var(--font-size);\n  background-color: var(--background-color);\n}\n\nhtml,\nbody {\n  color: var(--font-color);\n  font-family: var(--body-font);\n  line-height: var(--line-height);\n}\n\n#write {\n\t/* size of writing area: */\n  padding-left: var(--document-padding-x);\n  padding-right: var(--document-padding-x);\n  max-width: var(--main-content-max-width);\n  box-sizing: border-box;\n}\n\n/**\n * ---------------------\n * Block Elements\n */\n\n/* yaml */\npre.md-meta-block {\n  background-color: var(--background-color);\n  padding-bottom: .5rem;\n  color: var(--accent-color);\n  border-bottom: 2px solid var(--border-color);\n  font-family: var(--monospace-font);\n}\n\n/* headings */\nh1, h2, h3 {\n  font-weight: bold;\n  color: var(--header-color);  \n}\n\nh1 {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  font-size: var(--h1-fontsize);\n}\n\nh1:not(:first-child) {\n  margin-top: 1rem;\n}\n\nh2 {\n  margin-top: 1rem;\n  margin-bottom: 0rem;\n  font-size: var(--h2-fontsize);\n}\n\nh3 {\n  margin-top: 1rem;\n  margin-bottom: 0rem;\n  font-size: var(--h3-fontsize);\n}\n\nh4, h5, h6 {\n  color: var(--header-color);  \n  margin-top: 1rem;\n  margin-bottom: 0rem;\n  font-size: 1rem;\n}\n\nh4 {\n  font-size: var(--h4-fontsize);\n}\n\nh6 {\n  color: var(--control-text-color);\t\n}\n\nh1::before,\nh2::before,\nh3::before {\n  font-weight: 400;\n  text-align: right;\n  width: 5ch;\n  padding-right: 1ch;\n  margin-left: -5ch;\n  color: var(--accent-color);\n  display: inline-block;\n}\n\nh1::before {\n  content: '#';\n}\n\nh2::before {\n  content: '##';\n}\n\nh3::before {\n  content: '###';\n}\n\nh1 tt,\nh1 code {\n    font-size: inherit;\n}\nh2 tt,\nh2 code {\n    font-size: inherit;\n}\nh3 tt,\nh3 code {\n    font-size: inherit;\n}\nh4 tt,\nh4 code {\n    font-size: inherit;\n}\nh5 tt,\nh5 code {\n    font-size: inherit;\n}\nh6 tt,\nh6 code {\n    font-size: inherit;\n}\n\n/* table */\ntable {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n}\n\ntable tr:nth-child(2n),\nthead {\n    background-color: var(--side-bar-bg-color);\n}\n\ntd,\nth {\n  border-style: solid;\n  border-color: var(--border-color);\n  border-width: 1px;\n  padding: .35rem .7rem\n}\n\nli p {\n  margin: 0;\n}\n\n.task-list {\n  padding-left: 0;\n}\n\n.task-list-item {\n  padding-left: 1.5em;\n  margin-bottom: 0rem;\n}\n\n#write input[type='checkbox'] {\n  margin-top: 5px;\n}\n\nblockquote {\n  margin: 1rem 0;\n  padding-left: 2ch;\n  margin-left: .5ch;\n  position: relative;\n  overflow: hidden;\n  border-left: 2px solid var(--border-color);\n  color: var(--accent-color);\n}\n\n/* horizontal line */\nhr {\n  border: none;\n  border-bottom: 2px solid var(--border-color);\n  margin-top: 1.4rem;\n  margin-bottom: 1.4rem;\n}\n\np {\n  margin: 2rem 0;\n}\n\n/**\n * Code Fences\n * see http:/*support.typora.io/Code-Block-Styles\n */\n\n.cm-s-inner .CodeMirror-gutters {\n   background: var(--code-bg-color);\n}\n\n.code-tooltip {\n  box-shadow: none;\n  border-radius: var(--border-radius);\n  background-color: var(--code-bg-color);\n  border-color: var(--border-color);\n  border-style: solid;\n  border-width: 1px;\n}\n\n.code-tooltip input {\n  outline: none;\n  width: 20ch;\n}\n\n.md-fences .code-tooltip {\n  bottom: -1.8rem;\n  padding: none;\n}\n\n.md-fences.md-focus .cm-s-inner {\n  /* Remove bottom right border radius when tooltip is shown */\n  border-bottom-right-radius: 0;\n}\n\n/* code tooltip autocomplete list */\n\n.autoComplt-hint {\n  background-color: transparent !important;\n  margin: 0 !important;\n  padding: 0.125rem 0.375rem !important;\n  color: var(--text-color) !important;\n  line-height: var(--line-height) !important;\n  height: 1.4rem !important;\n}\n\n.autoComplt-hint-selected {\n  background-color: var(--link-color) !important;\n  color: var(--background-color) !important;\n}\n\n/* basic styles */\n\n.md-fences,\ncode,\ntt {\n  border: 1px solid var(--border-color);\n  background-color: var(--code-bg-color);\n  font-family: var(--monospace-font);\n  font-size: var(--monospace-font-size);\n  border-radius: .25rem;\n  padding: 0 .125rem;\n  line-height: var(--monospace-line-height);\n}\n\n.md-fences {\n  margin-bottom: 18px;\n  margin-top: 15px;\n  padding: 0.2em 1em;\n  padding-top: 8px;\n  padding-bottom: 6px;\n}\n\na {\n  color:  var(--link-color);\n}\n\n\n/**\n * Control UI (optional)\n */\n\n.outline-item:hover {\n  color: var(--header-color);\n}\n\n#write div.md-toc-tooltip {\n\tbackground-color: var(--background-color);\n}\n\n"
  },
  {
    "path": "configs/typora/ia_typora_night.css",
    "content": "@import 'night/codeblock.dark.css';\n@import 'night/mermaid.dark.css';\n@import 'night/sourcemode.dark.css';\n@import 'ia_typora.css';\n\n:root {\n  --accented-background-color: #1e1e1e;\n  --light-header-color: #dbdbdb; /* H1-H3 */\n  --select-text-bg-color: #186a9a;\n  --accent-color: #4f525a;\n  --background-color: #101010;\n  --font-color: #bbbcbc;\n  --header-color: #bebebe; /* H4-H6 */\n  --border-color: #232629;\n  --link-color: #5584aa; \n  --code-bg-color: #1c1a1a;\n  --hover-bg-color: #050505; \n  --control-text-color: var(--font-color); \n  --side-bar-bg-color: var(--accented-background-color);\n  --control-text-hover-color: var(--header-color);\n  --item-hover-text-color: var(--header-color);\n  --item-hover-bg-color: var(--hover-bg-color); \n  --bg-color: var(--background-color);\n  --text-color: var(--font-color);\n  --meta-content-color: var(--accent-color);\n  --md-char-color: var(--accent-color);\n  --window-border: 1px solid rgba(0,0,0,.07);\n  --active-file-bg-color: var(--hover-bg-color);\n}\n\n.outline-item:hover {\n  background-color: var(--hover-bg-color);\n}\n\n#write {\n  cursor: -webkit-image-set(url(\"night/cursor.png\") 1x, url(\"night/cursor@2x.png\") 2x) 8 8, auto;\n}\n\nh1,\nh2,\nh3 {\n  color: var(--light-header-color);\n}\n\nmark {\n  background: #b8b80a\n}\n\ntable tr:nth-child(2n),\nthead {\n    background-color: #141313;\n}\n\nsup.md-footnote {\n  background-color: var(--code-bg-color);\n  color: var(--font-color);\n}\n\n/* right click menu */\n.context-menu {\n  background-color: #141313;\n}\n\n.context-menu.dropdown-menu .divider {\n  background-color: #232629;\n}\n\n/* focus mode */\n.on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) * {\n  color: #4f525a !important;\n}\n\n.on-focus-mode .md-end-block:not(.md-focus) img,\n.on-focus-mode .md-task-list-item:not(.md-focus-container)>input {\n  opacity: #4f525a !important;\n}\n\n.on-focus-mode li[cid]:not(.md-focus-container){\n  color: #4f525a;\n}\n\n.on-focus-mode .md-fences.md-focus .CodeMirror-code>*:not(.CodeMirror-activeline) *,\n.on-focus-mode .CodeMirror.cm-s-inner:not(.CodeMirror-focused) * {\n  color: #4f525a !important;\n}\n\n.on-focus-mode .md-focus,\n.on-focus-mode .md-focus-container {\n  color: var(--light-header-color);\n}\n\n.on-focus-mode #typora-source .CodeMirror-code>*:not(.CodeMirror-activeline) * {\n  color: #4f525a !important;\n}\n\n"
  },
  {
    "path": "configs/ulauncher.desktop",
    "content": "[Desktop Entry]\nName=Ulauncher\nComment=Application launcher for Linux\nGenericName=Launcher\nCategories=GNOME;GTK;Utility;\nTryExec=/usr/bin/ulauncher\nExec=env GDK_BACKEND=wayland /usr/bin/ulauncher --hide-window\nIcon=ulauncher\nTerminal=false\nType=Application\nX-GNOME-Autostart-enabled=true\n"
  },
  {
    "path": "configs/ulauncher.json",
    "content": "{\n  \"blacklisted-desktop-dirs\": \"/usr/share/locale:/usr/share/app-install:/usr/share/kservices5:/usr/share/fk5:/usr/share/kservicetypes5:/usr/share/applications/screensavers:/usr/share/kde4:/usr/share/mimelnk\",\n  \"clear-previous-query\": true,\n  \"disable-desktop-filters\": false,\n  \"grab-mouse-pointer\": false,\n  \"hotkey-show-app\": \"null\",\n  \"render-on-screen\": \"mouse-pointer-monitor\",\n  \"show-indicator-icon\": true,\n  \"show-recent-apps\": \"0\",\n  \"terminal-command\": \"\",\n  \"theme-name\": \"dark\"\n}\n"
  },
  {
    "path": "configs/vscode.json",
    "content": "{\n  \"editor.fontFamily\": \"CaskaydiaMono Nerd Font\",\n  \"editor.tabSize\": 2,\n  \"security.workspace.trust.untrustedFiles\": \"open\",\n  \"editor.minimap.enabled\": false,\n  \"git.ignoreMissingGitWarning\": true,\n  \"editor.fontSize\": 12,\n  \"editor.occurrencesHighlight\": false,\n  \"editor.selectionHighlight\": false,\n  \"editor.suggestOnTriggerCharacters\": false,\n  \"editor.tabCompletion\": \"on\",\n  \"editor.quickSuggestions\": {\n    \"other\": false,\n    \"comments\": false,\n    \"strings\": false\n  },\n  \"files.trimTrailingWhitespace\": true,\n  \"git.confirmSync\": false,\n  \"window.menuBarVisibility\": \"compact\",\n  \"git.autofetch\": true,\n  \"git.openRepositoryInParentFolders\": \"always\",\n  \"explorer.confirmDelete\": false,\n  \"extensions.ignoreRecommendations\": true,\n  \"workbench.colorTheme\": \"Tokyo Night\",\n  \"window.titleBarStyle\": \"custom\"\n}\n"
  },
  {
    "path": "configs/xcompose",
    "content": "include \"%H/.local/share/omakub/defaults/xcompose\"\n\n# Identification\n<Multi_key> <space> <n> : \"$OMAKUB_USER_NAME\"\n<Multi_key> <space> <e> : \"$OMAKUB_USER_EMAIL\"\n"
  },
  {
    "path": "configs/zellij.kdl",
    "content": "theme \"tokyo-night\"\ndefault_layout \"compact\"\non_force_close \"quit\"\n\ndefault_mode \"locked\"\nkeybinds clear-defaults=true {\n    locked {\n        bind \"Ctrl g\" { SwitchToMode \"normal\"; }\n    }\n    pane {\n        bind \"Left\" { MoveFocus \"left\"; }\n        bind \"Down\" { MoveFocus \"down\"; }\n        bind \"Up\" { MoveFocus \"up\"; }\n        bind \"Right\" { MoveFocus \"right\"; }\n        bind \"c\" { SwitchToMode \"renamepane\"; PaneNameInput 0; }\n        bind \"d\" { NewPane \"down\"; SwitchToMode \"locked\"; }\n        bind \"e\" { TogglePaneEmbedOrFloating; SwitchToMode \"locked\"; }\n        bind \"f\" { ToggleFocusFullscreen; SwitchToMode \"locked\"; }\n        bind \"h\" { MoveFocus \"left\"; }\n        bind \"j\" { MoveFocus \"down\"; }\n        bind \"k\" { MoveFocus \"up\"; }\n        bind \"l\" { MoveFocus \"right\"; }\n        bind \"n\" { NewPane; SwitchToMode \"locked\"; }\n        bind \"p\" { SwitchToMode \"normal\"; }\n        bind \"r\" { NewPane \"right\"; SwitchToMode \"locked\"; }\n        bind \"w\" { ToggleFloatingPanes; SwitchToMode \"locked\"; }\n        bind \"x\" { CloseFocus; SwitchToMode \"locked\"; }\n        bind \"z\" { TogglePaneFrames; SwitchToMode \"locked\"; }\n        bind \"Tab\" { SwitchFocus; }\n    }\n    tab {\n        bind \"Left\" { GoToPreviousTab; }\n        bind \"Down\" { GoToNextTab; }\n        bind \"Up\" { GoToPreviousTab; }\n        bind \"Right\" { GoToNextTab; }\n        bind \"1\" { GoToTab 1; SwitchToMode \"locked\"; }\n        bind \"2\" { GoToTab 2; SwitchToMode \"locked\"; }\n        bind \"3\" { GoToTab 3; SwitchToMode \"locked\"; }\n        bind \"4\" { GoToTab 4; SwitchToMode \"locked\"; }\n        bind \"5\" { GoToTab 5; SwitchToMode \"locked\"; }\n        bind \"6\" { GoToTab 6; SwitchToMode \"locked\"; }\n        bind \"7\" { GoToTab 7; SwitchToMode \"locked\"; }\n        bind \"8\" { GoToTab 8; SwitchToMode \"locked\"; }\n        bind \"9\" { GoToTab 9; SwitchToMode \"locked\"; }\n        bind \"[\" { BreakPaneLeft; SwitchToMode \"locked\"; }\n        bind \"]\" { BreakPaneRight; SwitchToMode \"locked\"; }\n        bind \"b\" { BreakPane; SwitchToMode \"locked\"; }\n        bind \"h\" { GoToPreviousTab; }\n        bind \"j\" { GoToNextTab; }\n        bind \"k\" { GoToPreviousTab; }\n        bind \"l\" { GoToNextTab; }\n        bind \"n\" { NewTab; SwitchToMode \"locked\"; }\n        bind \"r\" { SwitchToMode \"renametab\"; TabNameInput 0; }\n        bind \"s\" { ToggleActiveSyncTab; SwitchToMode \"locked\"; }\n        bind \"t\" { SwitchToMode \"normal\"; }\n        bind \"x\" { CloseTab; SwitchToMode \"locked\"; }\n        bind \"Tab\" { ToggleTab; }\n    }\n    resize {\n        bind \"Left\" { Resize \"Increase left\"; }\n        bind \"Down\" { Resize \"Increase down\"; }\n        bind \"Up\" { Resize \"Increase up\"; }\n        bind \"Right\" { Resize \"Increase right\"; }\n        bind \"+\" { Resize \"Increase\"; }\n        bind \"-\" { Resize \"Decrease\"; }\n        bind \"=\" { Resize \"Increase\"; }\n        bind \"H\" { Resize \"Decrease left\"; }\n        bind \"J\" { Resize \"Decrease down\"; }\n        bind \"K\" { Resize \"Decrease up\"; }\n        bind \"L\" { Resize \"Decrease right\"; }\n        bind \"h\" { Resize \"Increase left\"; }\n        bind \"j\" { Resize \"Increase down\"; }\n        bind \"k\" { Resize \"Increase up\"; }\n        bind \"l\" { Resize \"Increase right\"; }\n        bind \"r\" { SwitchToMode \"normal\"; }\n    }\n    move {\n        bind \"Left\" { MovePane \"left\"; }\n        bind \"Down\" { MovePane \"down\"; }\n        bind \"Up\" { MovePane \"up\"; }\n        bind \"Right\" { MovePane \"right\"; }\n        bind \"h\" { MovePane \"left\"; }\n        bind \"j\" { MovePane \"down\"; }\n        bind \"k\" { MovePane \"up\"; }\n        bind \"l\" { MovePane \"right\"; }\n        bind \"m\" { SwitchToMode \"normal\"; }\n        bind \"n\" { MovePane; }\n        bind \"p\" { MovePaneBackwards; }\n        bind \"Tab\" { MovePane; }\n    }\n    scroll {\n        bind \"Alt Left\" { MoveFocusOrTab \"left\"; SwitchToMode \"locked\"; }\n        bind \"Alt Down\" { MoveFocus \"down\"; SwitchToMode \"locked\"; }\n        bind \"Alt Up\" { MoveFocus \"up\"; SwitchToMode \"locked\"; }\n        bind \"Alt Right\" { MoveFocusOrTab \"right\"; SwitchToMode \"locked\"; }\n        bind \"e\" { EditScrollback; SwitchToMode \"locked\"; }\n        bind \"f\" { SwitchToMode \"entersearch\"; SearchInput 0; }\n        bind \"Alt h\" { MoveFocusOrTab \"left\"; SwitchToMode \"locked\"; }\n        bind \"Alt j\" { MoveFocus \"down\"; SwitchToMode \"locked\"; }\n        bind \"Alt k\" { MoveFocus \"up\"; SwitchToMode \"locked\"; }\n        bind \"Alt l\" { MoveFocusOrTab \"right\"; SwitchToMode \"locked\"; }\n        bind \"s\" { SwitchToMode \"normal\"; }\n    }\n    search {\n        bind \"c\" { SearchToggleOption \"CaseSensitivity\"; }\n        bind \"n\" { Search \"down\"; }\n        bind \"o\" { SearchToggleOption \"WholeWord\"; }\n        bind \"p\" { Search \"up\"; }\n        bind \"w\" { SearchToggleOption \"Wrap\"; }\n    }\n    session {\n        bind \"c\" {\n            LaunchOrFocusPlugin \"configuration\" {\n                floating true\n                move_to_focused_tab true\n            }\n            SwitchToMode \"locked\"\n        }\n        bind \"d\" { Detach; }\n        bind \"o\" { SwitchToMode \"normal\"; }\n        bind \"p\" {\n            LaunchOrFocusPlugin \"plugin-manager\" {\n                floating true\n                move_to_focused_tab true\n            }\n            SwitchToMode \"locked\"\n        }\n        bind \"w\" {\n            LaunchOrFocusPlugin \"session-manager\" {\n                floating true\n                move_to_focused_tab true\n            }\n            SwitchToMode \"locked\"\n        }\n    }\n    shared_among \"normal\" \"locked\" {\n        bind \"Alt Left\" { MoveFocusOrTab \"left\"; }\n        bind \"Alt Down\" { MoveFocus \"down\"; }\n        bind \"Alt Up\" { MoveFocus \"up\"; }\n        bind \"Alt Right\" { MoveFocusOrTab \"right\"; }\n        bind \"Alt +\" { Resize \"Increase\"; }\n        bind \"Alt -\" { Resize \"Decrease\"; }\n        bind \"Alt =\" { Resize \"Increase\"; }\n        bind \"Alt [\" { PreviousSwapLayout; }\n        bind \"Alt ]\" { NextSwapLayout; }\n        bind \"Alt f\" { ToggleFloatingPanes; }\n        bind \"Alt h\" { MoveFocusOrTab \"left\"; }\n        bind \"Alt i\" { MoveTab \"left\"; }\n        bind \"Alt j\" { MoveFocus \"down\"; }\n        bind \"Alt k\" { MoveFocus \"up\"; }\n        bind \"Alt l\" { MoveFocusOrTab \"right\"; }\n        bind \"Alt n\" { NewPane; }\n        bind \"Alt o\" { MoveTab \"right\"; }\n    }\n    shared_except \"locked\" \"renametab\" \"renamepane\" {\n        bind \"Ctrl g\" { SwitchToMode \"locked\"; }\n        bind \"Ctrl q\" { Quit; }\n    }\n    shared_except \"locked\" \"entersearch\" {\n        bind \"Enter\" { SwitchToMode \"locked\"; }\n    }\n    shared_except \"locked\" \"entersearch\" \"renametab\" \"renamepane\" {\n        bind \"Esc\" { SwitchToMode \"locked\"; }\n    }\n    shared_except \"locked\" \"entersearch\" \"renametab\" \"renamepane\" \"move\" {\n        bind \"m\" { SwitchToMode \"move\"; }\n    }\n    shared_except \"locked\" \"entersearch\" \"search\" \"renametab\" \"renamepane\" \"session\" {\n        bind \"o\" { SwitchToMode \"session\"; }\n    }\n    shared_except \"locked\" \"tab\" \"entersearch\" \"renametab\" \"renamepane\" {\n        bind \"t\" { SwitchToMode \"tab\"; }\n    }\n    shared_except \"locked\" \"tab\" \"scroll\" \"entersearch\" \"renametab\" \"renamepane\" {\n        bind \"s\" { SwitchToMode \"scroll\"; }\n    }\n    shared_among \"normal\" \"resize\" \"tab\" \"scroll\" \"prompt\" \"tmux\" {\n        bind \"p\" { SwitchToMode \"pane\"; }\n    }\n    shared_except \"locked\" \"resize\" \"pane\" \"tab\" \"entersearch\" \"renametab\" \"renamepane\" {\n        bind \"r\" { SwitchToMode \"resize\"; }\n    }\n    shared_among \"scroll\" \"search\" {\n        bind \"PageDown\" { PageScrollDown; }\n        bind \"PageUp\" { PageScrollUp; }\n        bind \"Left\" { PageScrollUp; }\n        bind \"Down\" { ScrollDown; }\n        bind \"Up\" { ScrollUp; }\n        bind \"Right\" { PageScrollDown; }\n        bind \"Ctrl b\" { PageScrollUp; }\n        bind \"Ctrl c\" { ScrollToBottom; SwitchToMode \"locked\"; }\n        bind \"d\" { HalfPageScrollDown; }\n        bind \"Ctrl f\" { PageScrollDown; }\n        bind \"h\" { PageScrollUp; }\n        bind \"j\" { ScrollDown; }\n        bind \"k\" { ScrollUp; }\n        bind \"l\" { PageScrollDown; }\n        bind \"u\" { HalfPageScrollUp; }\n    }\n    entersearch {\n        bind \"Ctrl c\" { SwitchToMode \"scroll\"; }\n        bind \"Esc\" { SwitchToMode \"scroll\"; }\n        bind \"Enter\" { SwitchToMode \"search\"; }\n    }\n    renametab {\n        bind \"Esc\" { UndoRenameTab; SwitchToMode \"tab\"; }\n    }\n    shared_among \"renametab\" \"renamepane\" {\n        bind \"Ctrl c\" { SwitchToMode \"locked\"; }\n    }\n    renamepane {\n        bind \"Esc\" { UndoRenamePane; SwitchToMode \"pane\"; }\n    }\n}\n"
  },
  {
    "path": "defaults/bash/aliases",
    "content": "# File system\nalias ls='eza -lh --group-directories-first --icons=auto'\nalias lsa='ls -a'\nalias lt='eza --tree --level=2 --long --icons --git'\nalias lta='lt -a'\nalias ff=\"fzf --preview 'batcat --style=numbers --color=always {}'\"\nalias fd='fdfind'\nalias cd='z'\n\n# Directories\nalias ..='cd ..'\nalias ...='cd ../..'\nalias ....='cd ../../..'\n\n# Tools\nn() { if [ \"$#\" -eq 0 ]; then nvim .; else nvim \"$@\"; fi; }\nalias g='git'\nalias d='docker'\nalias r='rails'\nalias bat='batcat'\nalias lzg='lazygit'\nalias lzd='lazydocker'\n\n# Git\nalias gcm='git commit -m'\nalias gcam='git commit -a -m'\nalias gcad='git commit -a --amend'\n"
  },
  {
    "path": "defaults/bash/functions",
    "content": "# Compression\ncompress() { tar -czf \"${1%/}.tar.gz\" \"${1%/}\"; }\nalias decompress=\"tar -xzf\"\n\n# Convert webm files generated by the Gnome screenshot video recorder to mp4s that are more compatible\nwebm2mp4() {\n  input_file=\"$1\"\n  output_file=\"${input_file%.webm}.mp4\"\n  ffmpeg -i \"$input_file\" -c:v libx264 -preset slow -crf 22 -c:a aac -b:a 192k \"$output_file\"\n}\n\n# Write iso file to sd card\niso2sd() {\n  if [ $# -ne 2 ]; then\n    echo \"Usage: iso2sd <input_file> <output_device>\"\n    echo \"Example: iso2sd ~/Downloads/ubuntu-25.04-desktop-amd64.iso /dev/sda\"\n    echo -e \"\\nAvailable SD cards:\"\n    lsblk -d -o NAME | grep -E '^sd[a-z]' | awk '{print \"/dev/\"$1}'\n  else\n    sudo dd bs=4M status=progress oflag=sync if=\"$1\" of=\"$2\"\n    sudo eject $2\n  fi\n}\n\n# Create a desktop launcher for a web app\nweb2app() {\n  if [ \"$#\" -ne 3 ]; then\n    echo \"Usage: web2app <AppName> <AppURL> <IconURL> (IconURL must be in PNG -- use https://dashboardicons.com)\"\n    return 1\n  fi\n\n  local APP_NAME=\"$1\"\n  local APP_URL=\"$2\"\n  local ICON_URL=\"$3\"\n  local ICON_DIR=\"$HOME/.local/share/applications/icons\"\n  local DESKTOP_FILE=\"$HOME/.local/share/applications/${APP_NAME}.desktop\"\n  local ICON_PATH=\"${ICON_DIR}/${APP_NAME}.png\"\n\n  mkdir -p \"$ICON_DIR\"\n\n  if ! curl -sL -o \"$ICON_PATH\" \"$ICON_URL\"; then\n    echo \"Error: Failed to download icon.\"\n    return 1\n  fi\n\n  cat > \"$DESKTOP_FILE\" <<EOF\n[Desktop Entry]\nVersion=1.0\nName=$APP_NAME\nComment=$APP_NAME\nExec=google-chrome --app=\"$APP_URL\" --name=\"$APP_NAME\" --class=\"$APP_NAME\" --window-size=800,600\nTerminal=false\nType=Application\nIcon=$ICON_PATH\nCategories=GTK;\nMimeType=text/html;text/xml;application/xhtml_xml;\nStartupNotify=true\nEOF\n\n  chmod +x \"$DESKTOP_FILE\"\n}\n\nweb2app-remove() {\n  if [ \"$#\" -ne 1 ]; then\n    echo \"Usage: web2app-remove <AppName>\"\n    return 1\n  fi\n\n  local APP_NAME=\"$1\"\n  local ICON_DIR=\"$HOME/.local/share/applications/icons\"\n  local DESKTOP_FILE=\"$HOME/.local/share/applications/${APP_NAME}.desktop\"\n  local ICON_PATH=\"${ICON_DIR}/${APP_NAME}.png\"\n\n  rm \"$DESKTOP_FILE\"\n  rm \"$ICON_PATH\"\n}\n\n# Move a reference to a .desktop file, like Spotify.desktop, to a named folder, like Xtra.\n# Don't use full path for the .desktop file.\napp2folder() {\n  if [ \"$#\" -ne 2 ]; then\n    local FOLDERS=$(gsettings get org.gnome.desktop.app-folders folder-children | tr -d \"[],'\")\n    echo \"Usage: app2folder <desktop_file.desktop> <folder_name>\"\n    echo \"Folders: $FOLDERS\"\n    return 1\n  fi\n\n  local DESKTOP_FILE=\"$1\"\n  local FOLDER=\"$2\"\n  local SCHEMA=\"org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/$FOLDER/\"\n  local CURRENT_APPS=$(gsettings get \"$SCHEMA\" apps)\n\n  if [[ \"$CURRENT_APPS\" != *\"$DESKTOP_FILE\"* ]]; then\n    local TRIMMED=$(echo \"$CURRENT_APPS\" | sed \"s/^\\[//;s/\\]$//\")\n    gsettings set \"$SCHEMA\" apps \"[$TRIMMED, '$DESKTOP_FILE']\"\n  fi\n}\n\n# Remove desktop app from folder\napp2folder-remove() {\n  if [ \"$#\" -ne 2 ]; then\n    local FOLDERS=$(gsettings get org.gnome.desktop.app-folders folder-children | tr -d \"[],'\")\n    echo \"Usage: app2folder-remove <desktop_file.desktop> <folder_name>\"\n    echo \"Folders: $FOLDERS\"\n    return 1\n  fi\n\n  local DESKTOP_FILE=\"$1\"\n  local FOLDER=\"$2\"\n  local SCHEMA=\"org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/$FOLDER/\"\n  local CURRENT_APPS=$(gsettings get \"$SCHEMA\" apps)\n\n  if [[ \"$CURRENT_APPS\" == *\"$DESKTOP_FILE\"* ]]; then\n    local RAW_LIST=$(echo \"$CURRENT_APPS\" | tr -d \"[]'\")\n    IFS=',' read -ra APPS_ARRAY <<< \"$RAW_LIST\"\n\n    # Filter out the app to be removed\n    local NEW_APPS=()\n    for app in \"${APPS_ARRAY[@]}\"; do\n      app=$(echo \"$app\" | xargs) # trim spaces\n      if [[ \"$app\" != \"$DESKTOP_FILE\" && -n \"$app\" ]]; then\n        NEW_APPS+=(\"'$app'\")\n      fi\n    done\n\n    # Join list again\n    local NEW_LIST=$(IFS=, ; echo \"${NEW_APPS[*]}\")\n\n    gsettings set \"$SCHEMA\" apps \"[$NEW_LIST]\"\n  fi\n}\n\n# Ensure that external keyboards that use an fn key has the F keys as the default\nalias fix_fkeys='echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode'\n\n# Spotify window is too large on many displays, so fix this by zooming it down\nalias fix_spotify_window_size=\"sudo sed -i 's|^Exec=.*|Exec=spotify --force-device-scale-factor=1.5 %U|' /usr/local/share/applications/spotify.desktop\"\n"
  },
  {
    "path": "defaults/bash/init",
    "content": "if command -v mise &> /dev/null; then\n  eval \"$(mise activate bash)\"\nfi\n\nif command -v zoxide &> /dev/null; then\n  eval \"$(zoxide init bash)\"\nfi\n\nif command -v fzf &> /dev/null; then\n  if [[ -f /usr/share/bash-completion/completions/fzf ]]; then\n    source /usr/share/bash-completion/completions/fzf\n  fi\n  if [[ -f /usr/share/doc/fzf/examples/key-bindings.bash ]]; then\n    source /usr/share/doc/fzf/examples/key-bindings.bash\n  fi\nfi\n"
  },
  {
    "path": "defaults/bash/inputrc",
    "content": "set meta-flag on\nset input-meta on\nset output-meta on\nset convert-meta off\nset completion-ignore-case on\nset completion-prefix-display-length 2\nset show-all-if-ambiguous on\nset show-all-if-unmodified on\n\n# Arrow keys match what you've typed so far against your command history\n\"\\e[A\": history-search-backward\n\"\\e[B\": history-search-forward\n\"\\e[C\": forward-char\n\"\\e[D\": backward-char\n\n# Immediately add a trailing slash when autocompleting symlinks to directories\nset mark-symlinked-directories on\n\n# Do not autocomplete hidden files unless the pattern explicitly begins with a dot\nset match-hidden-files off\n\n# Show all autocomplete results at once\nset page-completions off\n\n# If there are more than 200 possible completions for a word, ask to show them all\nset completion-query-items 200\n\n# Show extra file information when completing, like `ls -F` does\nset visible-stats on\n\n$if Bash\n  # Be more intelligent when autocompleting by also looking at the text after\n  # the cursor. For example, when the current line is \"cd ~/src/mozil\", and\n  # the cursor is on the \"z\", pressing Tab will not autocomplete it to \"cd\n  # ~/src/mozillail\", but to \"cd ~/src/mozilla\". (This is supported by the\n  # Readline used by Bash 4.)\n  set skip-completed-text on\n\n  # Coloring for Bash 4 tab completions.\n  set colored-stats on\n$endif\n"
  },
  {
    "path": "defaults/bash/prompt",
    "content": "# Technicolor dreams\nforce_color_prompt=yes\ncolor_prompt=yes\n\n# Simple prompt with path in the window/pane title and caret for typing line\nPS1=$'\\uf0a9 '\nPS1=\"\\[\\e]0;\\w\\a\\]$PS1\"\n"
  },
  {
    "path": "defaults/bash/rc",
    "content": "source ~/.local/share/omakub/defaults/bash/shell\nsource ~/.local/share/omakub/defaults/bash/aliases\nsource ~/.local/share/omakub/defaults/bash/functions\nsource ~/.local/share/omakub/defaults/bash/prompt\nsource ~/.local/share/omakub/defaults/bash/init\n"
  },
  {
    "path": "defaults/bash/shell",
    "content": "# History control\nshopt -s histappend\nHISTCONTROL=ignoreboth\nHISTSIZE=32768\nHISTFILESIZE=\"${HISTSIZE}\"\n\n# Autocompletion\nsource /usr/share/bash-completion/bash_completion\n\n# Set complete path\nexport PATH=\"./bin:$HOME/.local/bin:$HOME/.local/share/omakub/bin:$PATH\"\nset +h\n\nexport OMAKUB_PATH=\"$HOME/.local/share/omakub\"\n"
  },
  {
    "path": "defaults/xcompose",
    "content": "include \"%L\"\n\n# Emoji\n<Multi_key> <m> <s> : \"😄\" # smile\n<Multi_key> <m> <c> : \"😂\" # cry\n<Multi_key> <m> <l> : \"😍\" # love\n<Multi_key> <m> <v> : \"✌️\"  # victory\n<Multi_key> <m> <h> : \"❤️\"  # heart\n<Multi_key> <m> <y> : \"👍\" # yes\n<Multi_key> <m> <n> : \"👎\" # no\n<Multi_key> <m> <f> : \"🖕\" # fuck\n<Multi_key> <m> <w> : \"🤞\" # wish\n<Multi_key> <m> <r> : \"🤘\" # rock\n<Multi_key> <m> <k> : \"😘\" # kiss\n<Multi_key> <m> <e> : \"🙄\" # eyeroll\n<Multi_key> <m> <d> : \"🤤\" # droll\n<Multi_key> <m> <m> : \"💰\" # money\n<Multi_key> <m> <x> : \"🎉\" # xellebrate\n<Multi_key> <m> <1> : \"💯\" # 100%\n<Multi_key> <m> <t> : \"🥂\" # toast\n<Multi_key> <m> <p> : \"🙏\" # pray\n<Multi_key> <m> <i> : \"😉\" # wink\n<Multi_key> <m> <o> : \"👌\" # OK\n<Multi_key> <m> <g> : \"👋\" # greeting\n<Multi_key> <m> <a> : \"💪\" # arm\n<Multi_key> <m> <b> : \"🤯\" # blowing\n\n# Typography\n<Multi_key> <space> <space> : \"—\"\n"
  },
  {
    "path": "install/check-version.sh",
    "content": "#!/bin/bash\n\nif [ ! -f /etc/os-release ]; then\n  echo \"$(tput setaf 1)Error: Unable to determine OS. /etc/os-release file not found.\"\n  echo \"Installation stopped.\"\n  exit 1\nfi\n\n. /etc/os-release\n\n# Check if running on Ubuntu 24.04 or higher\nif [ \"$ID\" != \"ubuntu\" ] || [ $(echo \"$VERSION_ID >= 24.04\" | bc) != 1 ]; then\n  echo \"$(tput setaf 1)Error: OS requirement not met\"\n  echo \"You are currently running: $ID $VERSION_ID\"\n  echo \"OS required: Ubuntu 24.04 or higher\"\n  echo \"Installation stopped.\"\n  exit 1\nfi\n\n# Check if running on x86\nARCH=$(uname -m)\nif [ \"$ARCH\" != \"x86_64\" ] && [ \"$ARCH\" != \"i686\" ]; then\n  echo \"$(tput setaf 1)Error: Unsupported architecture detected\"\n  echo \"Current architecture: $ARCH\"\n  echo \"This installation is only supported on x86 architectures (x86_64 or i686).\"\n  echo \"Installation stopped.\"\n  exit 1\nfi\n"
  },
  {
    "path": "install/desktop/a-flatpak.sh",
    "content": "#!/bin/bash\n\nsudo apt install -y flatpak\nsudo apt install -y gnome-software-plugin-flatpak\nsudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo\n"
  },
  {
    "path": "install/desktop/app-alacritty.sh",
    "content": "#!/bin/bash\n\n# Alacritty is a GPU-powered and highly extensible terminal. See https://alacritty.org/\nsudo apt install -y alacritty\nmkdir -p ~/.config/alacritty\ncp ~/.local/share/omakub/configs/alacritty.toml ~/.config/alacritty/alacritty.toml\ncp ~/.local/share/omakub/configs/alacritty/shared.toml ~/.config/alacritty/shared.toml\ncp ~/.local/share/omakub/configs/alacritty/pane.toml ~/.config/alacritty/pane.toml\ncp ~/.local/share/omakub/configs/alacritty/btop.toml ~/.config/alacritty/btop.toml\ncp ~/.local/share/omakub/themes/tokyo-night/alacritty.toml ~/.config/alacritty/theme.toml\ncp ~/.local/share/omakub/configs/alacritty/fonts/CaskaydiaMono.toml ~/.config/alacritty/font.toml\ncp ~/.local/share/omakub/configs/alacritty/font-size.toml ~/.config/alacritty/font-size.toml\n\n# Migrate config format if needed\nalacritty migrate 2>/dev/null || true\nalacritty migrate -c ~/.config/alacritty/pane.toml 2>/dev/null || true\nalacritty migrate -c ~/.config/alacritty/btop.toml 2>/dev/null || true\n\nsource ~/.local/share/omakub/install/desktop/set-alacritty-default.sh\n"
  },
  {
    "path": "install/desktop/app-chrome.sh",
    "content": "#!/bin/bash\n\n# Browse the web with the most popular browser. See https://www.google.com/chrome/\ncd /tmp\nwget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb\nsudo apt install -y ./google-chrome-stable_current_amd64.deb\nrm google-chrome-stable_current_amd64.deb\nxdg-settings set default-web-browser google-chrome.desktop\ncd -\n"
  },
  {
    "path": "install/desktop/app-flameshot.sh",
    "content": "#!/bin/bash\n\n# Flameshot is a nice step-up over the default Gnome screenshot tool\nsudo apt install -y flameshot\n"
  },
  {
    "path": "install/desktop/app-gnome-sushi.sh",
    "content": "#!/bin/bash\n\n# Gives you previews in the file manager when pressing space\nsudo apt install -y gnome-sushi\n"
  },
  {
    "path": "install/desktop/app-gnome-tweak-tool.sh",
    "content": "#!/bin/bash\n\nsudo apt install -y gnome-tweak-tool\n"
  },
  {
    "path": "install/desktop/app-libreoffice.sh",
    "content": "#!/bin/bash\n\n# Work with Word, Excel, Powerpoint files\nsudo apt install -y libreoffice\n"
  },
  {
    "path": "install/desktop/app-localsend.sh",
    "content": "#!/bin/bash\n\ncd /tmp\nLOCALSEND_VERSION=$(curl -s \"https://api.github.com/repos/localsend/localsend/releases/latest\" | grep -Po '\"tag_name\": \"v\\K[^\"]*')\nwget -O localsend.deb \"https://github.com/localsend/localsend/releases/latest/download/LocalSend-${LOCALSEND_VERSION}-linux-x86-64.deb\"\nsudo apt install -y ./localsend.deb\nrm localsend.deb\ncd -\n"
  },
  {
    "path": "install/desktop/app-obsidian.sh",
    "content": "#!/bin/bash\n\n# Obsidian is a multi-platform note taking application. See https://obsidian.md\ncd /tmp\nOBSIDIAN_VERSION=$(curl -s https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest | grep -Po '\"tag_name\": \"v\\K[^\"]*')\nwget -O obsidian.deb \"https://github.com/obsidianmd/obsidian-releases/releases/latest/download/obsidian_${OBSIDIAN_VERSION}_amd64.deb\"\nsudo apt install -y ./obsidian.deb\nrm obsidian.deb\ncd -\n"
  },
  {
    "path": "install/desktop/app-pinta.sh",
    "content": "#!/bin/bash\n\n# Pinta is a simple drawing and image editing program. See https://www.pinta-project.com/\nflatpak install -y flathub com.github.PintaProject.Pinta"
  },
  {
    "path": "install/desktop/app-signal.sh",
    "content": "#!/bin/bash\n\nif [ ! -f /etc/apt/sources.list.d/signal-desktop.sources ]; then\n  [ -f /usr/share/keyrings/signal-desktop-keyring.gpg ] && sudo rm /usr/share/keyrings/signal-desktop-keyring.gpg\n  wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg;\n  cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null\n  wget -O signal-desktop.sources https://updates.signal.org/static/desktop/apt/signal-desktop.sources;\n  cat signal-desktop.sources | sudo tee /etc/apt/sources.list.d/signal-desktop.sources > /dev/null\n  rm signal-desktop-keyring.gpg signal-desktop.sources\nfi\n\nsudo apt update\nsudo apt install -y signal-desktop\n"
  },
  {
    "path": "install/desktop/app-typora.sh",
    "content": "#!/bin/bash\n\n# Typora is a markdown editor and reader. See https://typora.io/\nif [ ! -f /etc/apt/sources.list.d/typora.list ]; then\n  [ -f /etc/apt/keyrings/typora.gpg ] && sudo rm /etc/apt/keyrings/typora.gpg\n  sudo mkdir -p /etc/apt/keyrings\n  curl -fsSL https://downloads.typora.io/typora.gpg | sudo tee /etc/apt/keyrings/typora.gpg > /dev/null\n  echo \"deb [signed-by=/etc/apt/keyrings/typora.gpg] https://downloads.typora.io/linux ./\" | sudo tee /etc/apt/sources.list.d/typora.list\nfi\n\nsudo apt update\nsudo apt install typora -y\n\n# Add iA Typora theme\nmkdir -p ~/.config/Typora/themes\ncp ~/.local/share/omakub/configs/typora/ia_typora.css ~/.config/Typora/themes/\ncp ~/.local/share/omakub/configs/typora/ia_typora_night.css ~/.config/Typora/themes/\n"
  },
  {
    "path": "install/desktop/app-vlc.sh",
    "content": "#!/bin/bash\n\nsudo apt install -y vlc\n"
  },
  {
    "path": "install/desktop/app-vscode.sh",
    "content": "#!/bin/bash\n\nif [ ! -f /etc/apt/keyrings/packages.microsoft.gpg ] || [ ! -f /usr/share/keyrings/microsoft.gpg ]; then\n  [ -f /etc/apt/keyrings/packages.microsoft.gpg ] && sudo rm /etc/apt/keyrings/packages.microsoft.gpg\n  cd /tmp\n  wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor >packages.microsoft.gpg\n  sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg\n  echo \"deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main\" | sudo tee /etc/apt/sources.list.d/vscode.list >/dev/null\n  rm -f packages.microsoft.gpg\n  cd -\nfi\n\nsudo apt update\nsudo apt install -y code\n\nmkdir -p ~/.config/Code/User\ncp ~/.local/share/omakub/configs/vscode.json ~/.config/Code/User/settings.json\n\n# Install default supported themes\ncode --install-extension enkia.tokyo-night"
  },
  {
    "path": "install/desktop/app-wl-clipboard.sh",
    "content": "#!/bin/bash\n\n# Provides a system clipboard interface for Neovim under Wayland\nsudo apt install wl-clipboard\n"
  },
  {
    "path": "install/desktop/app-xournalpp.sh",
    "content": "#!/bin/bash\n\nsudo apt install -y xournalpp\n"
  },
  {
    "path": "install/desktop/applications.sh",
    "content": "#!/bin/bash\n\nfor script in ~/.local/share/omakub/applications/*.sh; do source $script; done\n"
  },
  {
    "path": "install/desktop/fonts.sh",
    "content": "#!/bin/bash\n\nmkdir -p ~/.local/share/fonts\n\ncd /tmp\nwget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip\nunzip CascadiaMono.zip -d CascadiaFont\ncp CascadiaFont/*.ttf ~/.local/share/fonts\nrm -rf CascadiaMono.zip CascadiaFont\n\nwget -O iafonts.zip https://github.com/iaolo/iA-Fonts/archive/refs/heads/master.zip\nunzip iafonts.zip -d iaFonts\ncp iaFonts/iA-Fonts-master/iA\\ Writer\\ Mono/Static/iAWriterMonoS-*.ttf ~/.local/share/fonts\nrm -rf iafonts.zip iaFonts\n\nfc-cache\ncd -\n"
  },
  {
    "path": "install/desktop/optional/app-1password.sh",
    "content": "#!/bin/bash\n\n# Install 1password and 1password-cli single script\ncd /tmp\nwget https://downloads.1password.com/linux/debian/amd64/stable/1password-latest.deb -O 1password.deb\nsudo apt install ./1password.deb -y\nrm 1password.deb\ncd -"
  },
  {
    "path": "install/desktop/optional/app-asdcontrol.sh",
    "content": "#!/bin/bash\n\n# Install asdcontrol\ngit clone https://github.com/nikosdion/asdcontrol.git /tmp/asdcontrol\ncd /tmp/asdcontrol\nmake\nsudo make install\ncd -\nrm -rf /tmp/asdcontrol\n\n# Setup sudo-less controls\necho 'KERNEL==\"hiddev*\", ATTRS{idVendor}==\"05ac\", ATTRS{idProduct}==\"9243\", GROUP=\"users\", OWNER=\"root\", MODE=\"0660\"' | sudo tee /etc/udev/rules.d/50-apple-xdr.rules >/dev/null\necho 'KERNEL==\"hiddev*\", ATTRS{idVendor}==\"05ac\", ATTRS{idProduct}==\"1114\", GROUP=\"users\", OWNER=\"root\", MODE=\"0660\"' | sudo tee /etc/udev/rules.d/50-apple-studio.rules >/dev/null\nsudo udevadm control --reload-rules\n\n# Reboot to pickup changes\ngum confirm \"Ready to reboot for brightness controls to be available?\" && sudo reboot\n"
  },
  {
    "path": "install/desktop/optional/app-audacity.sh",
    "content": "#!/bin/bash\n\nflatpak install -y flathub org.audacityteam.Audacity\n"
  },
  {
    "path": "install/desktop/optional/app-brave.sh",
    "content": "#!/bin/bash\n\nif [ ! -f /etc/apt/sources.list.d/brave-browser-release.list ]; then\n  [ -f /usr/share/keyrings/brave-browser-archive-keyring.gpg ] && sudo rm /usr/share/keyrings/brave-browser-archive-keyring.gpg\n  sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg\n  echo \"deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main\" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list\nfi\n\nsudo apt update\nsudo apt install -y brave-browser\n"
  },
  {
    "path": "install/desktop/optional/app-cursor.sh",
    "content": "#!/bin/bash\n\ncd /tmp\ncurl -L \"https://www.cursor.com/api/download?platform=linux-x64&releaseTrack=stable\" | jq -r '.downloadUrl' | xargs curl -L -o cursor.appimage\nsudo mv cursor.appimage /opt/cursor.appimage\nsudo chmod +x /opt/cursor.appimage\nsudo apt install -y fuse3\nsudo apt install -y libfuse2t64\n\nDESKTOP_FILE=\"/usr/share/applications/cursor.desktop\"\n\nsudo bash -c \"cat > $DESKTOP_FILE\" <<EOL\n[Desktop Entry]\nName=Cursor\nComment=AI-powered code editor\nExec=/opt/cursor.appimage --no-sandbox\nIcon=/home/$USER/.local/share/omakub/applications/icons/cursor.png\nType=Application\nCategories=Development;IDE;\nEOL\n\nif [ -f \"$DESKTOP_FILE\" ]; then\n\techo \"cursor.desktop created successfully\"\nelse\n\techo \"Failed to create cursor.desktop\"\nfi\n"
  },
  {
    "path": "install/desktop/optional/app-discord.sh",
    "content": "# A Communication platform for voice, video, and text messaging https://discord.com/\ncd /tmp\nwget https://discord.com/api/download?platform=linux -O discord.deb\nsudo apt install ./discord.deb -y\nrm discord.deb\ncd -"
  },
  {
    "path": "install/desktop/optional/app-doom-emacs.sh",
    "content": "#!/bin/bash\n\nsudo apt install -y emacs\ngit clone --depth 1 https://github.com/doomemacs/doomemacs ~/.config/emacs\n~/.config/emacs/bin/doom install\n"
  },
  {
    "path": "install/desktop/optional/app-dropbox.sh",
    "content": "#!/bin/bash\n\n# Sync files across machines using https://dropbox.com\nsudo apt install -y nautilus-dropbox >/dev/null\n"
  },
  {
    "path": "install/desktop/optional/app-gimp.sh",
    "content": "#!/bin/bash\n\nsudo flatpak install -y org.gimp.GIMP\n"
  },
  {
    "path": "install/desktop/optional/app-mainline-kernels.sh",
    "content": "#!/bin/bash\n\nsudo add-apt-repository -y ppa:cappelikan/ppa\nsudo apt update -y\nsudo apt install -y mainline\n"
  },
  {
    "path": "install/desktop/optional/app-minecraft.sh",
    "content": "#!/bin/bash\n\nsudo apt install -y openjdk-8-jdk\n\ncd /tmp\nwget https://launcher.mojang.com/download/Minecraft.deb\nsudo apt install -y ./Minecraft.deb\nrm Minecraft.deb\ncd -\n"
  },
  {
    "path": "install/desktop/optional/app-obs-studio.sh",
    "content": "#!/bin/bash\n\n# OBS Studio is a screen recording application that allows you to capture both display and webcam in the same recording\nsudo apt install -y obs-studio\n"
  },
  {
    "path": "install/desktop/optional/app-retroarch.sh",
    "content": "#!/bin/bash\n\nflatpak install -y flathub org.libretro.RetroArch\n"
  },
  {
    "path": "install/desktop/optional/app-rubymine.sh",
    "content": "#!/bin/bash\n\nsudo snap install rubymine --classic\n"
  },
  {
    "path": "install/desktop/optional/app-spotify.sh",
    "content": "#!/bin/bash\n\n# Stream music using https://spotify.com\nif [ ! -f /etc/apt/sources.list.d/spotify.list ]; then\n  [ -f /etc/apt/trusted.gpg.d/spotify.gpg ] && sudo rm /etc/apt/trusted.gpg.d/spotify.gpg\n  curl -sS https://download.spotify.com/debian/pubkey_5384CE82BA52C83A.gpg | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/spotify.gpg\n  echo \"deb [signed-by=/etc/apt/trusted.gpg.d/spotify.gpg] https://repository.spotify.com stable non-free\" | sudo tee /etc/apt/sources.list.d/spotify.list\nfi\n\nsudo apt update\nsudo apt install -y spotify-client\n"
  },
  {
    "path": "install/desktop/optional/app-steam.sh",
    "content": "#!/bin/bash\n\n# Play games from https://store.steampowered.com/\ncd /tmp\nwget https://cdn.akamai.steamstatic.com/client/installer/steam.deb\nsudo apt install -y ./steam.deb\nrm steam.deb\ncd -\n"
  },
  {
    "path": "install/desktop/optional/app-virtualbox.sh",
    "content": "#!/bin/bash\n\n# Virtualbox allows you to run VMs for other flavors of Linux or even Windows\n# See https://ubuntu.com/tutorials/how-to-run-ubuntu-desktop-on-a-virtual-machine-using-virtualbox#1-overview\n# for a guide on how to run Ubuntu inside it.\n\nsudo apt install -y virtualbox virtualbox-ext-pack\nsudo usermod -aG vboxusers ${USER}\n"
  },
  {
    "path": "install/desktop/optional/app-windows.sh",
    "content": "#!/bin/bash\n\necho \"Downloading the VirtIO drivers to ~/Downloads\"\nmkdir -p ~/Downloads\nwget -O ~/Downloads/virtio-win-0.1.240.iso https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.240-1/virtio-win-0.1.240.iso\n\necho \"Download the Windows 11 ISO...\"\nopen https://www.microsoft.com/software-download/windows11\ngum confirm \"Have you finished downloading?\"\n\necho \"Follow instructions in...\"\nopen https://sysguides.com/install-a-windows-11-virtual-machine-on-kvm\n"
  },
  {
    "path": "install/desktop/optional/app-windsurf.sh",
    "content": "#!/bin/bash\n\nif [ ! -f /etc/apt/sources.list.d/windsurf.list ]; then\n    [ -f /usr/share/keyrings/windsurf-stable-archive-keyring.gpg ] && sudo rm /usr/share/keyrings/windsurf-stable-archive-keyring.gpg\n    curl -fsSL \"https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/windsurf.gpg\" | sudo gpg --dearmor -o /usr/share/keyrings/windsurf-stable-archive-keyring.gpg\n    echo \"deb [signed-by=/usr/share/keyrings/windsurf-stable-archive-keyring.gpg arch=amd64] https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/apt stable main\" | sudo tee /etc/apt/sources.list.d/windsurf.list >/dev/null\nfi\n\nsudo apt update\nsudo apt install -y windsurf\n"
  },
  {
    "path": "install/desktop/optional/app-zed.sh",
    "content": "#!/bin/bash\n\ncurl https://zed.dev/install.sh | sh\n"
  },
  {
    "path": "install/desktop/optional/app-zoom.sh",
    "content": "#!/bin/bash\n\n# Make video calls using https://zoom.us/\ncd /tmp\nwget https://zoom.us/client/latest/zoom_amd64.deb\nsudo apt install -y ./zoom_amd64.deb\nrm zoom_amd64.deb\ncd -\n"
  },
  {
    "path": "install/desktop/optional/select-web-apps.sh",
    "content": "#!/bin/bash\n\nsource $OMAKUB_PATH/defaults/bash/functions\n\nAVAILABLE_WEB_APPS=(\"Chat GPT\" \"Google Photos\" \"Google Contacts\" \"Tailscale\")\napps=$(gum choose \"${AVAILABLE_WEB_APPS[@]}\" --no-limit --height 6 --header \"Select web apps\")\n\nif [[ -n \"$apps\" ]]; then\n  IFS=$'\\n'\n  for app in $apps; do\n    case $app in\n    \"Chat GPT\")\n      web2app 'Chat GPT' https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png\n      app2folder 'Chat GPT.desktop' WebApps\n      ;;\n    \"Google Photos\")\n      web2app 'Google Photos' https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png\n      app2folder 'Google Photos.desktop' WebApps\n      ;;\n    \"Google Contacts\")\n      web2app 'Google Contacts' https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png\n      app2folder 'Google Contacts.desktop' WebApps\n      ;;\n    \"Tailscale\")\n      web2app 'Tailscale' https://login.tailscale.com/admin/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png\n      app2folder 'Tailscale.desktop' WebApps\n      ;;\n    esac\n  done\nfi\n"
  },
  {
    "path": "install/desktop/select-optional-apps.sh",
    "content": "#!/bin/bash\n\nif [[ -v OMAKUB_FIRST_RUN_OPTIONAL_APPS ]]; then\n\tapps=$OMAKUB_FIRST_RUN_OPTIONAL_APPS\n\n\tif [[ -n \"$apps\" ]]; then\n\t\tfor app in $apps; do\n\t\t\tsource \"$OMAKUB_PATH/install/desktop/optional/app-${app,,}.sh\"\n\t\tdone\n\tfi\nfi\n"
  },
  {
    "path": "install/desktop/set-alacritty-default.sh",
    "content": "#!/usr/bin/env sh\n\n# Make alacritty default terminal emulator\nsudo update-alternatives --set x-terminal-emulator /usr/bin/alacritty"
  },
  {
    "path": "install/desktop/set-app-grid.sh",
    "content": "#!/bin/bash\n\n# Remove Btop entry for one that runs in alacritty\nsudo rm -rf /usr/share/applications/btop.desktop\n\n# App doesn't do anything when started from the app grid\nsudo rm -rf /usr/share/applications/org.flameshot.Flameshot.desktop\n\n# Remove the ImageMagick icon\nsudo rm -rf /usr/share/applications/display-im6.q16.desktop\nsudo rm -rf /usr/share/applications/display-im7.q16.desktop\n\n# Replacing this with btop\nsudo rm -rf /usr/share/applications/org.gnome.SystemMonitor.desktop\n\n# We added our own meant for Alacritty\nsudo rm -rf /usr/local/share/applications/nvim.desktop\nsudo rm -rf /usr/local/share/applications/vim.desktop\n\n# Create folders\ngsettings set org.gnome.desktop.app-folders folder-children \"['Utilities', 'Sundry', 'YaST', 'Updates', 'Xtra', 'LibreOffice', 'WebApps']\"\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Updates/ name 'Install & Update'\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Updates/ apps \"['org.gnome.Software.desktop', 'software-properties-drivers.desktop', 'software-properties-gtk.desktop', 'update-manager.desktop', 'firmware-updater_firmware-updater.desktop', 'snap-store_snap-store.desktop']\"\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Xtra/ name 'Xtra'\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Xtra/ apps \"['org.Characters.desktop', 'gnome-language-selector.desktop', 'org.gnome.PowerStats.desktop', 'org.gnome.Logs.desktop', 'yelp.desktop', 'org.gnome.Yelp.desktop', 'org.gnome.eog.desktop', 'org.gnome.Sysprof.desktop' ]\"\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/LibreOffice/ name 'LibreOffice'\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/LibreOffice/ apps \"['libreoffice-base.desktop', 'libreoffice-calc.desktop', 'libreoffice-draw.desktop', 'libreoffice-impress.desktop', 'libreoffice-math.desktop', 'libreoffice-startcenter.desktop', 'libreoffice-writer.desktop', 'libreoffice-xsltfilter.desktop']\"\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/WebApps/ name 'Web Apps'\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/WebApps/ apps \"['Basecamp.desktop', 'HEY.desktop']\"\n"
  },
  {
    "path": "install/desktop/set-dock.sh",
    "content": "#!/bin/bash\n\n# Favorite apps for dock\napps=(\n\t\"google-chrome.desktop\"\n\t\"Alacritty.desktop\"\n\t\"Neovim.desktop\"\n\t\"code.desktop\"\n\t\"WhatsApp.desktop\"\n\t\"signal-desktop.desktop\"\n\t\"Zoom.desktop\"\n\t\"spotify.desktop\"\n\t\"steam.desktop\"\n\t\"pinta_pinta.desktop\"\n\t\"md.obsidian.Obsidian.desktop\"\n\t\"Activity.desktop\"\n\t\"Docker.desktop\"\n\t\"Omakub.desktop\"\n\t\"1password.desktop\"\n\t\"org.gnome.Settings.desktop\"\n\t\"org.gnome.Nautilus.desktop\"\n\t\"localsend_app.desktop\"\n)\n\n# Array to hold installed favorite apps\ninstalled_apps=()\n\n# Directory where .desktop files are typically stored\ndesktop_dirs=(\n\t\"/var/lib/flatpak/exports/share/applications\"\n\t\"/usr/share/applications\"\n\t\"/usr/local/share/applications\"\n\t\"$HOME/.local/share/applications\"\n)\n\n# Check if a .desktop file exists for each app\nfor app in \"${apps[@]}\"; do\n\tfor dir in \"${desktop_dirs[@]}\"; do\n\t\tif [ -f \"$dir/$app\" ]; then\n\t\t\tinstalled_apps+=(\"$app\")\n\t\t\tbreak\n\t\tfi\n\tdone\ndone\n\n# Convert the array to a format suitable for gsettings\nfavorites_list=$(printf \"'%s',\" \"${installed_apps[@]}\")\nfavorites_list=\"[${favorites_list%,}]\"\n\n# Set the favorite apps\ngsettings set org.gnome.shell favorite-apps \"$favorites_list\"\n"
  },
  {
    "path": "install/desktop/set-framework-text-scaling.sh",
    "content": "#!/bin/bash\n\nCOMPUTER_MAKER=$(sudo dmidecode -t system | grep 'Manufacturer:' | awk '{print $2}')\nSCREEN_RESOLUTION=$(xrandr | grep '*+' | awk '{print $1}')\n\nif [ \"$COMPUTER_MAKER\" == \"Framework\" ] && [ \"$SCREEN_RESOLUTION\" == \"2256x1504\" ]; then\n\tgsettings set org.gnome.desktop.interface text-scaling-factor 0.8\n\tgsettings set org.gnome.desktop.interface cursor-size 16\n\tsed -i \"s/size = 9/size = 7/g\" ~/.config/alacritty/alacritty.toml\nfi\n"
  },
  {
    "path": "install/desktop/set-gnome-extensions.sh",
    "content": "#!/bin/bash\n\nsudo apt install -y gnome-shell-extension-manager gir1.2-gtop-2.0 gir1.2-clutter-1.0\npipx install gnome-extensions-cli --system-site-packages\n\n# Turn off default Ubuntu extensions\ngnome-extensions disable tiling-assistant@ubuntu.com\ngnome-extensions disable ubuntu-appindicators@ubuntu.com\ngnome-extensions disable ubuntu-dock@ubuntu.com\ngnome-extensions disable ding@rastersoft.com\n\n# Pause to assure user is ready to accept confirmations\ngum confirm \"To install Gnome extensions, you need to accept some confirmations. Ready?\"\n\n# Install new extensions\ngext install tactile@lundal.io\ngext install just-perfection-desktop@just-perfection\ngext install blur-my-shell@aunetx\ngext install space-bar@luchrioh\ngext install undecorate@sun.wxg@gmail.com\ngext install tophat@fflewddur.github.io\ngext install AlphabeticalAppGrid@stuarthayhurst\n\n# Compile gsettings schemas in order to be able to set them\nsudo cp ~/.local/share/gnome-shell/extensions/tactile@lundal.io/schemas/org.gnome.shell.extensions.tactile.gschema.xml /usr/share/glib-2.0/schemas/\nsudo cp ~/.local/share/gnome-shell/extensions/just-perfection-desktop\\@just-perfection/schemas/org.gnome.shell.extensions.just-perfection.gschema.xml /usr/share/glib-2.0/schemas/\nsudo cp ~/.local/share/gnome-shell/extensions/blur-my-shell\\@aunetx/schemas/org.gnome.shell.extensions.blur-my-shell.gschema.xml /usr/share/glib-2.0/schemas/\nsudo cp ~/.local/share/gnome-shell/extensions/space-bar\\@luchrioh/schemas/org.gnome.shell.extensions.space-bar.gschema.xml /usr/share/glib-2.0/schemas/\nsudo cp ~/.local/share/gnome-shell/extensions/tophat@fflewddur.github.io/schemas/org.gnome.shell.extensions.tophat.gschema.xml /usr/share/glib-2.0/schemas/\nsudo cp ~/.local/share/gnome-shell/extensions/AlphabeticalAppGrid\\@stuarthayhurst/schemas/org.gnome.shell.extensions.AlphabeticalAppGrid.gschema.xml /usr/share/glib-2.0/schemas/\nsudo glib-compile-schemas /usr/share/glib-2.0/schemas/\n\n# Configure Tactile\ngsettings set org.gnome.shell.extensions.tactile col-0 1\ngsettings set org.gnome.shell.extensions.tactile col-1 2\ngsettings set org.gnome.shell.extensions.tactile col-2 1\ngsettings set org.gnome.shell.extensions.tactile col-3 0\ngsettings set org.gnome.shell.extensions.tactile row-0 1\ngsettings set org.gnome.shell.extensions.tactile row-1 1\ngsettings set org.gnome.shell.extensions.tactile gap-size 32\n\n# Configure Just Perfection\ngsettings set org.gnome.shell.extensions.just-perfection animation 2\ngsettings set org.gnome.shell.extensions.just-perfection dash-app-running true\ngsettings set org.gnome.shell.extensions.just-perfection workspace true\ngsettings set org.gnome.shell.extensions.just-perfection workspace-popup false\n\n# Configure Blur My Shell\ngsettings set org.gnome.shell.extensions.blur-my-shell.appfolder blur false\ngsettings set org.gnome.shell.extensions.blur-my-shell.lockscreen blur false\ngsettings set org.gnome.shell.extensions.blur-my-shell.screenshot blur false\ngsettings set org.gnome.shell.extensions.blur-my-shell.window-list blur false\ngsettings set org.gnome.shell.extensions.blur-my-shell.panel blur false\ngsettings set org.gnome.shell.extensions.blur-my-shell.overview blur true\ngsettings set org.gnome.shell.extensions.blur-my-shell.overview pipeline 'pipeline_default'\ngsettings set org.gnome.shell.extensions.blur-my-shell.dash-to-dock blur true\ngsettings set org.gnome.shell.extensions.blur-my-shell.dash-to-dock brightness 0.6\ngsettings set org.gnome.shell.extensions.blur-my-shell.dash-to-dock sigma 30\ngsettings set org.gnome.shell.extensions.blur-my-shell.dash-to-dock static-blur true\ngsettings set org.gnome.shell.extensions.blur-my-shell.dash-to-dock style-dash-to-dock 0\n\n# Configure Space Bar\ngsettings set org.gnome.shell.extensions.space-bar.behavior smart-workspace-names false\ngsettings set org.gnome.shell.extensions.space-bar.shortcuts enable-activate-workspace-shortcuts false\ngsettings set org.gnome.shell.extensions.space-bar.shortcuts enable-move-to-workspace-shortcuts true\ngsettings set org.gnome.shell.extensions.space-bar.shortcuts open-menu \"@as []\"\n\n# Configure TopHat\ngsettings set org.gnome.shell.extensions.tophat show-icons false\ngsettings set org.gnome.shell.extensions.tophat show-cpu false\ngsettings set org.gnome.shell.extensions.tophat show-disk false\ngsettings set org.gnome.shell.extensions.tophat show-mem false\ngsettings set org.gnome.shell.extensions.tophat show-fs false\ngsettings set org.gnome.shell.extensions.tophat network-usage-unit bits\n\n# Configure AlphabeticalAppGrid\ngsettings set org.gnome.shell.extensions.alphabetical-app-grid folder-order-position 'end'\n"
  },
  {
    "path": "install/desktop/set-gnome-hotkeys.sh",
    "content": "#!/bin/bash\n\n# Alt+F4 is very cumbersome\ngsettings set org.gnome.desktop.wm.keybindings close \"['<Super>w']\"\n\n# Make it easy to maximize like you can fill left/right\ngsettings set org.gnome.desktop.wm.keybindings maximize \"['<Super>Up']\"\n\n# Make it easy to resize undecorated windows\ngsettings set org.gnome.desktop.wm.keybindings begin-resize \"['<Super>BackSpace']\"\n\n# For keyboards that only have a start/stop button for music, like Logitech MX Keys Mini\ngsettings set org.gnome.settings-daemon.plugins.media-keys next \"['<Shift>AudioPlay']\"\n\n# Full-screen with title/navigation bar\ngsettings set org.gnome.desktop.wm.keybindings toggle-fullscreen \"['<Shift>F11']\"\n\n# Use 6 fixed workspaces instead of dynamic mode\ngsettings set org.gnome.mutter dynamic-workspaces false\ngsettings set org.gnome.desktop.wm.preferences num-workspaces 6\n\n# Disable the hotkeys in the Dash to Dock extension (most likely culprit)\ngsettings set org.gnome.shell.extensions.dash-to-dock hot-keys false\n\n# Use alt for pinned apps\ngsettings set org.gnome.shell.keybindings switch-to-application-1 \"['<Alt>1']\"\ngsettings set org.gnome.shell.keybindings switch-to-application-2 \"['<Alt>2']\"\ngsettings set org.gnome.shell.keybindings switch-to-application-3 \"['<Alt>3']\"\ngsettings set org.gnome.shell.keybindings switch-to-application-4 \"['<Alt>4']\"\ngsettings set org.gnome.shell.keybindings switch-to-application-5 \"['<Alt>5']\"\ngsettings set org.gnome.shell.keybindings switch-to-application-6 \"['<Alt>6']\"\ngsettings set org.gnome.shell.keybindings switch-to-application-7 \"['<Alt>7']\"\ngsettings set org.gnome.shell.keybindings switch-to-application-8 \"['<Alt>8']\"\ngsettings set org.gnome.shell.keybindings switch-to-application-9 \"['<Alt>9']\"\n\n# Use super for workspaces\ngsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-1 \"['<Super>1']\"\ngsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-2 \"['<Super>2']\"\ngsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-3 \"['<Super>3']\"\ngsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-4 \"['<Super>4']\"\ngsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-5 \"['<Super>5']\"\ngsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-6 \"['<Super>6']\"\n\n# Reserve slots for custom keybindings\ngsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \"['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom6/']\"\n\n# Set ulauncher to Super+Space\ngsettings set org.gnome.desktop.wm.keybindings switch-input-source \"@as []\"\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name 'Ulauncher'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command 'sh -c \"pgrep -x ulauncher && { ulauncher-toggle || true; } || setsid -f ulauncher\"'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding '<Super>space'\n\n# Set flameshot (with the sh fix for starting under Wayland) on alternate print screen key\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ name 'Flameshot'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ command 'sh -c -- \"flameshot gui\"'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ binding '<Control>Print'\n\n# Start a new alacritty window (rather than just switch to the already open one)\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ name 'New Alacritty Window'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ command 'alacritty'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ binding '<Shift><Alt>2'\n\n# Start a new Chrome window (rather than just switch to the already open one)\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/ name 'New Chrome Window'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/ command 'google-chrome --new-window'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/ binding '<Shift><Alt>1'\n\n# Turn bightness down on Apple monitor (requires ASDControl installed)\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ name 'Apple Brightness Down (ASDControl)'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ binding '<Control>F1'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ command \"sh -c 'asdcontrol \\$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | grep ^/dev/usb/hiddev | cut -d: -f1) -- -5000'\"\n\n# Turn bightness up on Apple monitor (requires ADSControl installed)\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/ name 'Apple Brightness Up (ASDControl)'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/ binding '<Control>F2'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/ command \"sh -c 'asdcontrol \\$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | grep ^/dev/usb/hiddev | cut -d: -f1) -- +5000'\"\n\n# Turn bightness up to max on Apple monitor (requires ADSControl installed)\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom6/ name 'Apple Brightness Max (ASDControl)'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom6/ binding '<Control><Shift>F2'\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom6/ command \"sh -c 'asdcontrol \\$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | grep ^/dev/usb/hiddev | cut -d: -f1) -- +60000'\"\n"
  },
  {
    "path": "install/desktop/set-gnome-settings.sh",
    "content": "#!/bin/bash\n\n# Center new windows in the middle of the screen\ngsettings set org.gnome.mutter center-new-windows true\n\n# Set Cascadia Mono as the default monospace font\ngsettings set org.gnome.desktop.interface monospace-font-name 'CaskaydiaMono Nerd Font 10'\n\n# Reveal week numbers in the Gnome calendar\ngsettings set org.gnome.desktop.calendar show-weekdate true\n\n# Turn off ambient sensors for setting screen brightness (they rarely work well!)\ngsettings set org.gnome.settings-daemon.plugins.power ambient-enabled false\n"
  },
  {
    "path": "install/desktop/set-gnome-theme.sh",
    "content": "#!/bin/bash\n\nsource ~/.local/share/omakub/themes/tokyo-night/gnome.sh\nsource ~/.local/share/omakub/themes/tokyo-night/tophat.sh\n"
  },
  {
    "path": "install/desktop/set-xcompose.sh",
    "content": "#!/bin/bash\n\nenvsubst < ~/.local/share/omakub/configs/xcompose > ~/.XCompose\nibus restart\ngsettings set org.gnome.desktop.input-sources xkb-options \"['compose:caps']\"\n"
  },
  {
    "path": "install/desktop/ulauncher.sh",
    "content": "#!/bin/bash\n\nsudo add-apt-repository universe -y\nsudo add-apt-repository ppa:agornostal/ulauncher -y\nsudo apt update\nsudo apt install ulauncher -y\n\n# Start ulauncher to have it populate config before we overwrite\nmkdir -p ~/.config/autostart/\ncp ~/.local/share/omakub/configs/ulauncher.desktop ~/.config/autostart/ulauncher.desktop\ngtk-launch ulauncher.desktop >/dev/null 2>&1\nsleep 2 # ensure enough time for ulauncher to set defaults\ncp ~/.local/share/omakub/configs/ulauncher.json ~/.config/ulauncher/settings.json\n"
  },
  {
    "path": "install/desktop.sh",
    "content": "#!/bin/bash\n\n# Run desktop installers\nfor installer in ~/.local/share/omakub/install/desktop/*.sh; do source $installer; done\n\n# Logout to pickup changes\ngum confirm \"Ready to reboot for all settings to take effect?\" && sudo reboot || true\n"
  },
  {
    "path": "install/first-run-choices.sh",
    "content": "#!/bin/bash\n\n# Only ask for default desktop app choices when running Gnome\nif [[ \"$XDG_CURRENT_DESKTOP\" == *\"GNOME\"* ]]; then\n  OPTIONAL_APPS=(\"1password\" \"Spotify\" \"Zoom\" \"Dropbox\")\n  DEFAULT_OPTIONAL_APPS='1password,Spotify,Zoom'\n  export OMAKUB_FIRST_RUN_OPTIONAL_APPS=$(gum choose \"${OPTIONAL_APPS[@]}\" --no-limit --selected $DEFAULT_OPTIONAL_APPS --height 7 --header \"Select optional apps\" | tr ' ' '-')\nfi\n\nAVAILABLE_LANGUAGES=(\"Ruby on Rails\" \"Node.js\" \"Go\" \"PHP\" \"Python\" \"Elixir\" \"Rust\" \"Java\")\nSELECTED_LANGUAGES=\"Ruby on Rails\",\"Node.js\"\nexport OMAKUB_FIRST_RUN_LANGUAGES=$(gum choose \"${AVAILABLE_LANGUAGES[@]}\" --no-limit --selected \"$SELECTED_LANGUAGES\" --height 10 --header \"Select programming languages\")\n\nAVAILABLE_DBS=(\"MySQL\" \"Redis\" \"PostgreSQL\")\nSELECTED_DBS=\"MySQL,Redis\"\nexport OMAKUB_FIRST_RUN_DBS=$(gum choose \"${AVAILABLE_DBS[@]}\" --no-limit --selected \"$SELECTED_DBS\" --height 5 --header \"Select databases (runs in Docker)\")\n"
  },
  {
    "path": "install/identification.sh",
    "content": "#!/bin/bash\n\necho \"Enter identification for git and autocomplete...\"\nSYSTEM_NAME=$(getent passwd \"$USER\" | cut -d ':' -f 5 | cut -d ',' -f 1)\nexport OMAKUB_USER_NAME=$(gum input --placeholder \"Enter full name\" --value \"$SYSTEM_NAME\" --prompt \"Name> \")\nexport OMAKUB_USER_EMAIL=$(gum input --placeholder \"Enter email address\" --prompt \"Email> \")\n"
  },
  {
    "path": "install/terminal/a-shell.sh",
    "content": "#!/bin/bash\n\n# Configure the bash shell using Omakub defaults\n[ -f ~/.bashrc ] && mv ~/.bashrc ~/.bashrc.bak\ncp ~/.local/share/omakub/configs/bashrc ~/.bashrc\n\n# Load the PATH for use later in the installers\nsource ~/.local/share/omakub/defaults/bash/shell\n\n[ -f ~/.inputrc ] && mv ~/.inputrc ~/.inputrc.bak\n# Configure the inputrc using Omakub defaults\ncp ~/.local/share/omakub/configs/inputrc ~/.inputrc\n"
  },
  {
    "path": "install/terminal/app-btop.sh",
    "content": "#!/bin/bash\n\n# This script installs btop, a resource monitor that shows usage and stats for processor, memory, disks, network and processes.\nsudo apt install -y btop\n\n# Use Omakub btop config\nmkdir -p ~/.config/btop/themes\ncp ~/.local/share/omakub/configs/btop.conf ~/.config/btop/btop.conf\ncp ~/.local/share/omakub/themes/tokyo-night/btop.theme ~/.config/btop/themes/tokyo-night.theme\n\n"
  },
  {
    "path": "install/terminal/app-fastfetch.sh",
    "content": "#!/bin/bash\n\n# Display system information in the terminal\nsudo add-apt-repository -y ppa:zhangsongcui3371/fastfetch\nsudo apt update -y\nsudo apt install -y fastfetch\n\n# Only attempt to set configuration if fastfetch is not already set\nif [ ! -f \"$HOME/.config/fastfetch/config.jsonc\" ]; then\n  # Use Omakub fastfetch config\n  mkdir -p ~/.config/fastfetch\n  cp ~/.local/share/omakub/configs/fastfetch.jsonc ~/.config/fastfetch/config.jsonc\nfi\n"
  },
  {
    "path": "install/terminal/app-github-cli.sh",
    "content": "#!/bin/bash\n\nif [ ! -f /etc/apt/sources.list.d/github-cli.list ]; then\n    [ -f /usr/share/keyrings/githubcli-archive-keyring.gpg ] && sudo rm /usr/share/keyrings/githubcli-archive-keyring.gpg\n    curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg status=none\n    sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg\n    echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\" | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null\nfi\n\nsudo apt update\nsudo apt install gh -y"
  },
  {
    "path": "install/terminal/app-lazydocker.sh",
    "content": "#!/bin/bash\n\ncd /tmp\nLAZYDOCKER_VERSION=$(curl -s \"https://api.github.com/repos/jesseduffield/lazydocker/releases/latest\" | grep -Po '\"tag_name\": \"v\\K[^\"]*')\ncurl -sLo lazydocker.tar.gz \"https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_${LAZYDOCKER_VERSION}_Linux_x86_64.tar.gz\"\ntar -xf lazydocker.tar.gz lazydocker\nsudo install lazydocker /usr/local/bin\nrm lazydocker.tar.gz lazydocker\ncd -\n"
  },
  {
    "path": "install/terminal/app-lazygit.sh",
    "content": "#!/bin/bash\n\ncd /tmp\nLAZYGIT_VERSION=$(curl -s \"https://api.github.com/repos/jesseduffield/lazygit/releases/latest\" | grep -Po '\"tag_name\": \"v\\K[^\"]*')\ncurl -sLo lazygit.tar.gz \"https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz\"\ntar -xf lazygit.tar.gz lazygit\nsudo install lazygit /usr/local/bin\nrm lazygit.tar.gz lazygit\nmkdir -p ~/.config/lazygit/\ntouch ~/.config/lazygit/config.yml\ncd -\n"
  },
  {
    "path": "install/terminal/app-neovim.sh",
    "content": "#!/bin/bash\n\ncd /tmp\nwget -O nvim.tar.gz \"https://github.com/neovim/neovim/releases/download/stable/nvim-linux-x86_64.tar.gz\"\ntar -xf nvim.tar.gz\nsudo install nvim-linux-x86_64/bin/nvim /usr/local/bin/nvim\nsudo cp -R nvim-linux-x86_64/lib /usr/local/\nsudo cp -R nvim-linux-x86_64/share /usr/local/\nrm -rf nvim-linux-x86_64 nvim.tar.gz\ncd -\n\n# Install luarocks and tree-sitter-cli to resolve lazyvim :checkhealth warnings\nsudo apt install -y luarocks tree-sitter-cli\n\n# Only attempt to set configuration if Neovim has never been run\nif [ ! -d \"$HOME/.config/nvim\" ]; then\n  # Use LazyVim\n  git clone https://github.com/LazyVim/starter ~/.config/nvim\n  # Remove the .git folder, so you can add it to your own repo later\n  rm -rf ~/.config/nvim/.git\n\n  # Make everything match the terminal transparency\n  mkdir -p ~/.config/nvim/plugin/after\n  cp ~/.local/share/omakub/configs/neovim/transparency.lua ~/.config/nvim/plugin/after/\n\n  # Default to Tokyo Night theme\n  cp ~/.local/share/omakub/themes/tokyo-night/neovim.lua ~/.config/nvim/lua/plugins/theme.lua\n\n  # Turn off animated scrolling\n  cp ~/.local/share/omakub/configs/neovim/snacks-animated-scrolling-off.lua ~/.config/nvim/lua/plugins/\n\n  # Turn off relative line numbers\n  echo \"vim.opt.relativenumber = false\" >>~/.config/nvim/lua/config/options.lua\n\n  # Ensure editor.neo-tree is used by default\n  cp ~/.local/share/omakub/configs/neovim/lazyvim.json ~/.config/nvim/\nfi\n\n# Replace desktop launcher with one running inside Alacritty\nif [[ -d ~/.local/share/applications ]]; then\n  sudo rm -rf /usr/share/applications/nvim.desktop\n  sudo rm -rf /usr/local/share/applications/nvim.desktop\n  source ~/.local/share/omakub/applications/Neovim.sh\nfi\n"
  },
  {
    "path": "install/terminal/app-zellij.sh",
    "content": "#!/bin/bash\n\ncd /tmp\nwget -O zellij.tar.gz \"https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz\"\ntar -xf zellij.tar.gz zellij\nsudo install zellij /usr/local/bin\nrm zellij.tar.gz zellij\ncd -\n\nmkdir -p ~/.config/zellij/themes\n[ ! -f \"$HOME/.config/zellij/config.kdl\" ] && cp ~/.local/share/omakub/configs/zellij.kdl ~/.config/zellij/config.kdl\ncp ~/.local/share/omakub/themes/tokyo-night/zellij.kdl ~/.config/zellij/themes/tokyo-night.kdl\n"
  },
  {
    "path": "install/terminal/apps-terminal.sh",
    "content": "#!/bin/bash\n\nsudo apt install -y fzf ripgrep bat eza zoxide plocate apache2-utils fd-find\n"
  },
  {
    "path": "install/terminal/docker.sh",
    "content": "#!/bin/bash\n\n# Add the official Docker repo\nif [ ! -f /etc/apt/sources.list.d/docker.list ]; then\n    [ -f /etc/apt/keyrings/docker.asc ] && sudo rm /etc/apt/keyrings/docker.asc\n    sudo install -m 0755 -d /etc/apt/keyrings\n    sudo wget -qO /etc/apt/keyrings/docker.asc https://download.docker.com/linux/ubuntu/gpg\n    sudo chmod a+r /etc/apt/keyrings/docker.asc\n    echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable\" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null\nfi\n\n# Install Docker engine and standard plugins\nsudo apt update\nsudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras\n\n# Give this user privileged Docker access\nsudo usermod -aG docker ${USER}\n\n# Limit log size to avoid running out of disk\necho '{\"log-driver\":\"json-file\",\"log-opts\":{\"max-size\":\"10m\",\"max-file\":\"5\"}}' | sudo tee /etc/docker/daemon.json\n"
  },
  {
    "path": "install/terminal/libraries.sh",
    "content": "#!/bin/bash\n\nsudo apt install -y \\\n  build-essential pkg-config autoconf bison clang rustc pipx \\\n  libssl-dev libreadline-dev zlib1g-dev libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev libjemalloc2 \\\n  libvips imagemagick libmagickwand-dev mupdf mupdf-tools \\\n  redis-tools sqlite3 libsqlite3-0 libmysqlclient-dev libpq-dev postgresql-client postgresql-client-common\n"
  },
  {
    "path": "install/terminal/mise.sh",
    "content": "#!/bin/bash\n\n# Install mise for managing multiple versions of languages. See https://mise.jdx.dev/\nsudo apt update -y && sudo apt install -y gpg wget curl\nsudo install -dm 755 /etc/apt/keyrings\nwget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1>/dev/null\necho \"deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=$(dpkg --print-architecture)] https://mise.jdx.dev/deb stable main\" | sudo tee /etc/apt/sources.list.d/mise.list\nsudo apt update\nsudo apt install -y mise\n"
  },
  {
    "path": "install/terminal/optional/app-geekbench.sh",
    "content": "#!/bin/bash\n\nGB_VERSION=\"6.4.0\"\n\ncd /tmp\ngum spin --title \"Downloading Geekbench $GB_VERSION...\" -- \\\n  curl -sLo geekbench.tar.gz \"https://cdn.geekbench.com/Geekbench-${GB_VERSION}-Linux.tar.gz\"\ngum spin --title \"Extracting Geekbench $GB_VERSION...\" -- \\\n  tar -xzf geekbench.tar.gz\nsudo mv \"Geekbench-${GB_VERSION}-Linux\" /usr/local/geekbench6\nsudo ln -sf /usr/local/geekbench6/geekbench6 /usr/local/bin/geekbench6\nrm -rf Geekbench* geekbench.tar.gz\ncd -\necho \"Run as geekbench6 from the terminal\"\n"
  },
  {
    "path": "install/terminal/optional/app-ollama.sh",
    "content": "#!/bin/bash\n\ncurl -fsSL https://ollama.com/install.sh | sh\n"
  },
  {
    "path": "install/terminal/optional/app-tailscale.sh",
    "content": "#!/bin/bash\n\ncurl -fsSL https://tailscale.com/install.sh | sh\n"
  },
  {
    "path": "install/terminal/required/app-gum.sh",
    "content": "#!/bin/bash\n\n# Gum is used for the Omakub commands for tailoring Omakub after the initial install\ncd /tmp\nGUM_VERSION=\"0.17.0\"\nwget -qO gum.deb \"https://github.com/charmbracelet/gum/releases/download/v${GUM_VERSION}/gum_${GUM_VERSION}_amd64.deb\"\nsudo apt-get install -y --allow-downgrades ./gum.deb\nrm gum.deb\ncd -\n"
  },
  {
    "path": "install/terminal/select-dev-language.sh",
    "content": "#!/bin/bash\n\n# Install default programming languages\nif [[ -v OMAKUB_FIRST_RUN_LANGUAGES ]]; then\n  languages=$OMAKUB_FIRST_RUN_LANGUAGES\nelse\n  AVAILABLE_LANGUAGES=(\"Ruby on Rails\" \"Node.js\" \"Go\" \"PHP\" \"Python\" \"Elixir\" \"Rust\" \"Java\")\n  languages=$(gum choose \"${AVAILABLE_LANGUAGES[@]}\" --no-limit --height 10 --header \"Select programming languages\")\nfi\n\nif [[ -n \"$languages\" ]]; then\n  for language in $languages; do\n    case $language in\n    Ruby)\n      mise use --global ruby@latest\n      mise settings add idiomatic_version_file_enable_tools ruby\n      mise x ruby -- gem install rails --no-document\n      ;;\n    Node.js)\n      mise use --global node@lts\n      ;;\n    Go)\n      mise use --global go@latest\n      ;;\n    PHP)\n      sudo apt -y install php php-{curl,apcu,intl,mbstring,opcache,pgsql,mysql,sqlite3,redis,xml,zip} --no-install-recommends\n      php -r \"copy('https://getcomposer.org/installer', 'composer-setup.php');\"\n      php composer-setup.php --quiet && sudo mv composer.phar /usr/local/bin/composer\n      rm composer-setup.php\n      ;;\n    Python)\n      mise use --global python@latest\n      ;;\n    Elixir)\n      mise use --global erlang@latest\n      mise use --global elixir@latest\n      mise x elixir -- mix local.hex --force\n      ;;\n    Rust)\n      bash -c \"$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)\" -- -y\n      ;;\n    Java)\n      mise use --global java@latest\n      ;;\n    esac\n  done\nfi\n"
  },
  {
    "path": "install/terminal/select-dev-storage.sh",
    "content": "#!/bin/bash\n\n# Install default databases\nif [[ -v OMAKUB_FIRST_RUN_DBS ]]; then\n\tdbs=$OMAKUB_FIRST_RUN_DBS\nelse\n\tAVAILABLE_DBS=(\"MySQL\" \"Redis\" \"PostgreSQL\")\n\tdbs=$(gum choose \"${AVAILABLE_DBS[@]}\" --no-limit --height 5 --header \"Select databases (runs in Docker)\")\nfi\n\nif [[ -n \"$dbs\" ]]; then\n\tfor db in $dbs; do\n\t\tcase $db in\n\t\tMySQL)\n\t\t\tsudo docker run -d --restart unless-stopped -p \"127.0.0.1:3306:3306\" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4\n\t\t\t;;\n\t\tRedis)\n\t\t\tsudo docker run -d --restart unless-stopped -p \"127.0.0.1:6379:6379\" --name=redis redis:7\n\t\t\t;;\n\t\tPostgreSQL)\n\t\t\tsudo docker run -d --restart unless-stopped -p \"127.0.0.1:5432:5432\" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16\n\t\t\t;;\n\t\tesac\n\tdone\nfi\n"
  },
  {
    "path": "install/terminal/set-git.sh",
    "content": "#!/bin/bash\n\n# Set common git aliases\ngit config --global alias.co checkout\ngit config --global alias.br branch\ngit config --global alias.ci commit\ngit config --global alias.st status\ngit config --global pull.rebase true\n\n# Set identification from install inputs\nif [[ -n \"${OMAKUB_USER_NAME//[[:space:]]/}\" ]]; then\n  git config --global user.name \"$OMAKUB_USER_NAME\"\nfi\n\nif [[ -n \"${OMAKUB_USER_EMAIL//[[:space:]]/}\" ]]; then\n  git config --global user.email \"$OMAKUB_USER_EMAIL\"\nfi\n"
  },
  {
    "path": "install/terminal.sh",
    "content": "#!/bin/bash\n\n# Needed for all installers\nsudo apt update -y\nsudo apt upgrade -y\nsudo apt install -y curl git unzip\n\n# Run terminal installers\nfor installer in ~/.local/share/omakub/install/terminal/*.sh; do source $installer; done\n"
  },
  {
    "path": "install.sh",
    "content": "#!/bin/bash\n\n# Exit immediately if a command exits with a non-zero status\nset -e\n\n# Give people a chance to retry running the installation\ntrap 'echo \"Omakub installation failed! You can retry by running: source ~/.local/share/omakub/install.sh\"' ERR\n\n# Check the distribution name and version and abort if incompatible\nsource ~/.local/share/omakub/install/check-version.sh\n\n# Ask for app choices\necho \"Get ready to make a few choices...\"\nsource ~/.local/share/omakub/install/terminal/required/app-gum.sh >/dev/null\nsource ~/.local/share/omakub/install/first-run-choices.sh\nsource ~/.local/share/omakub/install/identification.sh\n\n# Desktop software and tweaks will only be installed if we're running Gnome\nif [[ \"$XDG_CURRENT_DESKTOP\" == *\"GNOME\"* ]]; then\n  # Ensure computer doesn't go to sleep or lock while installing\n  gsettings set org.gnome.desktop.screensaver lock-enabled false\n  gsettings set org.gnome.desktop.session idle-delay 0\n\n  echo \"Installing terminal and desktop tools...\"\n\n  # Install terminal tools\n  source ~/.local/share/omakub/install/terminal.sh\n\n  # Install desktop tools and tweaks\n  source ~/.local/share/omakub/install/desktop.sh\n\n  # Revert to normal idle and lock settings\n  gsettings set org.gnome.desktop.screensaver lock-enabled true\n  gsettings set org.gnome.desktop.session idle-delay 300\nelse\n  echo \"Only installing terminal tools...\"\n  source ~/.local/share/omakub/install/terminal.sh\nfi\n"
  },
  {
    "path": "migrations/1718359027.sh",
    "content": "#!/bin/bash\n\n# Catch 1.0.0 up to 1.1.0\n\nsudo echo \"Running upgrade migration...\"\n\n# Change Zellij directory to be realized rather than a symlink\nZELLIJ_THEMES_DIR=\"$HOME/.config/zellij/themes\"\nif [ -L $ZELLIJ_THEMES_DIR ]; then\n\trm $ZELLIJ_THEMES_DIR\n\tmkdir -p $ZELLIJ_THEMES_DIR\n\tfor dir in $OMAKUB_PATH/themes/*; do\n\t\tif [ -d \"$dir\" ]; then\n\t\t\tzellij_file=\"$dir/zellij.kdl\"\n\t\t\tdir_name=$(basename \"$dir\")\n\t\t\tdest_file=\"$ZELLIJ_THEMES_DIR/$dir_name.kdl\"\n\t\t\tcp \"$zellij_file\" \"$dest_file\"\n\t\tfi\n\tdone\nfi\n\n# New neovim settings\nmkdir -p ~/.config/nvim/plugin/after\ncp $OMAKUB_PATH/configs/neovim/transparency.lua ~/.config/nvim/plugin/after/\nsed -i 's/checker = { enabled = true }/checker = { enabled = true, notify = false }/g' ~/.config/nvim/lua/config/lazy.lua\nsource ~/.local/share/omakub/applications/Neovim.sh\n\n# New font size setup\ncp $OMAKUB_PATH/configs/alacritty/font-size.toml ~/.config/alacritty/\ncp ~/.config/alacritty/alacritty.toml ~/.config/alacritty/alacritty.toml.bak\ncp $OMAKUB_PATH/configs/alacritty.toml ~/.config/alacritty/alacritty.toml\nsource $OMAKUB_PATH/install/desktop/set-framework-text-scaling.sh\n\ncp $OMAKUB_PATH/themes/tokyo-night/alacritty.toml ~/.config/alacritty/theme.toml\ncp $OMAKUB_PATH/configs/alacritty/fonts/CaskaydiaMono.toml ~/.config/alacritty/font.toml\n\n# Set new Gnome settings\nsource $OMAKUB_PATH/install/desktop/set-gnome-settings.sh\n\n# Install new apps\nsource $OMAKUB_PATH/install/desktop/a-flatpak.sh\nsource $OMAKUB_PATH/install/desktop/app-gnome-sushi.sh\nsource $OMAKUB_PATH/install/desktop/app-localsend.sh\nsource $OMAKUB_PATH/install/desktop/app-obsidian.sh\nsource $OMAKUB_PATH/install/terminal/app-fastfetch.sh\nsource $OMAKUB_PATH/install/terminal/apps-terminal.sh\n\n# Add new desktop applications icons\nsource $OMAKUB_PATH/applications/Omakub.sh\nsource $OMAKUB_PATH/applications/About.sh\nsource $OMAKUB_PATH/applications/Activity.sh\nsource $OMAKUB_PATH/applications/Docker.sh\n\n# Update icons of apps still installed\n[ -f ~/.local/share/applications/Basecamp.desktop ] && source $OMAKUB_PATH/applications/Basecamp.sh\n[ -f ~/.local/share/applications/HEY.desktop ] && source $OMAKUB_PATH/applications/HEY.sh\n[ -f ~/.local/share/applications/WhatsApp.desktop ] && source $OMAKUB_PATH/applications/WhatsApp.sh\n\n# Set new app grid\nsource $OMAKUB_PATH/install/desktop/set-app-grid.sh\n\n# Add new Gnome extensions\nsource $OMAKUB_PATH/install/desktop/set-gnome-extensions.sh\n\ngum style \\\n\t--foreground 212 --border-foreground 212 --border double \\\n\t--align left --width 80 --margin \"1 2\" --padding \"2 4\" \\\n\t\"1. alacritty.toml config moved to .bak to include new font-size.toml\" \\\n\t\"2. Alacritty theme/font has been reset. Use omakub app to set again.\" \\\n\t\"3. To use Pano, the new clipboard manager, enable in Gnome Extensions.\"\n\ngum confirm \"Set your application dock to default with new apps?\" && source $OMAKUB_PATH/install/desktop/set-dock.sh\ngum confirm \"Ready to logout for all settings to take effect?\" && gnome-session-quit --logout --no-prompt\n"
  },
  {
    "path": "migrations/1722091912.sh",
    "content": "#!/bin/bash\n\nsudo echo \"Running upgrade migration...\"\n\n# Add rustc and pgsql client libs\nsource $OMAKUB_PATH/install/terminal/libraries.sh\n\n# Set name and class for desktop files\nsource $OMAKUB_PATH/applications/About.sh\nsource $OMAKUB_PATH/applications/Activity.sh\nsource $OMAKUB_PATH/applications/Basecamp.sh\nsource $OMAKUB_PATH/applications/HEY.sh\nsource $OMAKUB_PATH/applications/Docker.sh\nsource $OMAKUB_PATH/applications/Neovim.sh\nsource $OMAKUB_PATH/applications/Omakub.sh\nsource $OMAKUB_PATH/applications/WhatsApp.sh\n"
  },
  {
    "path": "migrations/1722387070.sh",
    "content": "#!/bin/bash\n\nsource $OMAKUB_PATH/install/desktop/app-wl-clipboard.sh\n"
  },
  {
    "path": "migrations/1723756122.sh",
    "content": "#!/bin/bash\n\n# Uninstall Vitals\nif [ -n \"$(gnome-extensions list | grep Vitals@CoreCoding.com)\" ]; then\n  gnome-extensions uninstall Vitals@CoreCoding.com\nfi\n\n# Install Tophat libraries\nsudo apt install -y gir1.2-gtop-2.0 gir1.2-clutter-1.0\n\n# Install TopHat\ngext install tophat@fflewddur.github.io\n\nsudo cp ~/.local/share/gnome-shell/extensions/tophat@fflewddur.github.io/schemas/org.gnome.shell.extensions.tophat.gschema.xml /usr/share/glib-2.0/schemas/\nsudo glib-compile-schemas /usr/share/glib-2.0/schemas/\n\n# Configure TopHat\ngsettings set org.gnome.shell.extensions.tophat show-icons false\ngsettings set org.gnome.shell.extensions.tophat show-cpu false\ngsettings set org.gnome.shell.extensions.tophat show-disk false\ngsettings set org.gnome.shell.extensions.tophat show-mem false\ngsettings set org.gnome.shell.extensions.tophat network-usage-unit bits\n\n# Set TopHat metrics color to match the theme\nTHEME_NAMES=(\"Tokyo Night\" \"Catppuccin\" \"Nord\" \"Everforest\" \"Gruvbox\" \"Kanagawa\" \"Rose Pine\")\nTHEME=$(gum choose \"${THEME_NAMES[@]}\" \"Default\" --header \"Choose your theme\" --height 10 | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')\n\nif [ -n \"$THEME\" ] && [ \"$THEME\" != \"default\" ]; then\n  source $OMAKUB_PATH/themes/$THEME/tophat.sh\nfi\n\n# Logout\ngum confirm \"Ready to logout for all settings to take effect?\" && gnome-session-quit --logout --no-prompt\n"
  },
  {
    "path": "migrations/1724344367.sh",
    "content": "#!/bin/bash\n\n# Check if fastfetch config.jsonc is already set\nif [ -f \"$HOME/.config/fastfetch/config.jsonc\" ]; then\n  gum confirm \"It appears that a fastfetch configuration is already set. Do you want to overwrite it?\" && rm \"$HOME/.config/fastfetch/config.jsonc\"\nfi\n\n# Only attempt to set configuration if fastfetch is not already set\nif [ ! -f \"$HOME/.config/fastfetch/config.jsonc\" ]; then\n  # Use Omakub fastfetch config\n  mkdir -p ~/.config/fastfetch\n  cp \"$OMAKUB_PATH/configs/fastfetch.jsonc\" ~/.config/fastfetch/config.jsonc\nfi\n"
  },
  {
    "path": "migrations/1738744474.sh",
    "content": "#!/bin/bash\n\n# Local XCompose must change for included files to be picked up by ibus\nsed -i '1i # Touched to update for Omakub defaults [5/2/2025]' ~/.XCompose\nibus restart\n"
  },
  {
    "path": "migrations/1741193162.sh",
    "content": "#!/bin/bash\n\n# Turn off animationd scrolling\ncp ~/.local/share/omakub/configs/neovim/snacks-animated-scrolling-off.lua ~/.config/nvim/lua/plugins/\n"
  },
  {
    "path": "migrations/1744854733.sh",
    "content": "#!/bin/bash\n\nsource $OMAKUB_PATH/install/desktop/set-alacritty-default.sh\n\nnautilus -q\n"
  },
  {
    "path": "migrations/1745060743.sh",
    "content": "#!/bin/bash\n\ncp ~/.local/share/omakub/configs/alacritty/shared.toml ~/.config/alacritty/shared.toml\ncp ~/.local/share/omakub/configs/alacritty/pane.toml ~/.config/alacritty/pane.toml\ncp ~/.local/share/omakub/configs/alacritty/btop.toml ~/.config/alacritty/btop.toml\ncp ~/.local/share/omakub/configs/alacritty.toml ~/.config/alacritty/alacritty.toml\n\nsource $OMAKUB_PATH/applications/About.sh\nsource $OMAKUB_PATH/applications/Activity.sh\nsource $OMAKUB_PATH/applications/Neovim.sh\nsource $OMAKUB_PATH/applications/Docker.sh\nsource $OMAKUB_PATH/applications/Omakub.sh\n\nalacritty migrate 2>/dev/null || true\nalacritty migrate -c ~/.config/alacritty/pane.toml 2>/dev/null || true\nalacritty migrate -c ~/.config/alacritty/btop.toml 2>/dev/null || true\n"
  },
  {
    "path": "migrations/1747237126.sh",
    "content": "#!/bin/bash\n\ncp ~/.local/share/omakub/configs/alacritty/btop.toml ~/.config/alacritty/btop.toml\n\n# Only attempt to set configuration if btop is not already set\nif [ ! -f \"$HOME/.config/btop/btop.conf\" ]; then\n  # Use Omakub btop config\n  mkdir -p ~/.config/btop/themes\n  cp ~/.local/share/omakub/configs/btop.conf ~/.config/btop/btop.conf\nfi\n\n# Set the theme for btop\nTHEME_NAMES=(\"Tokyo Night\" \"Catppuccin\" \"Nord\" \"Everforest\" \"Gruvbox\" \"Kanagawa\" \"Rose Pine\")\nTHEME=$(gum choose \"${THEME_NAMES[@]}\" \">> Skip\" --header \"Choose your current theme\" --height 10 | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')\n\nif [ -n \"$THEME\" ] && [ \"$THEME\" != \">>-skip\" ]; then\n  if [ -f \"$OMAKUB_PATH/themes/$THEME/btop.theme\" ]; then\n    cp $OMAKUB_PATH/themes/$THEME/btop.theme ~/.config/btop/themes/$THEME.theme\n    sed -i \"s/color_theme = \\\".*\\\"/color_theme = \\\"$THEME\\\"/g\" ~/.config/btop/btop.conf\n  else\n    sed -i \"s/color_theme = \\\".*\\\"/color_theme = \\\"Default\\\"/g\" ~/.config/btop/btop.conf\n  fi\nfi\n\n"
  },
  {
    "path": "migrations/1747501295.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.desktop.app-folders folder-children \"['Utilities', 'Sundry', 'YaST', 'Updates', 'Xtra', 'LibreOffice', 'WebApps']\"\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Xtra/ apps \"['gnome-language-selector.desktop', 'org.gnome.PowerStats.desktop', 'yelp.desktop', 'org.gnome.eog.desktop']\"\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/LibreOffice/ name 'LibreOffice'\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/LibreOffice/ apps \"['libreoffice-base.desktop', 'libreoffice-calc.desktop', 'libreoffice-draw.desktop', 'libreoffice-impress.desktop', 'libreoffice-math.desktop', 'libreoffice-startcenter.desktop', 'libreoffice-writer.desktop', 'libreoffice-xsltfilter.desktop']\"\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/WebApps/ name 'Web Apps'\ngsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/WebApps/ apps \"['Basecamp.desktop', 'HEY.desktop']\"\n"
  },
  {
    "path": "migrations/1747736884.sh",
    "content": "#!/bin/bash\n\n# Ensure all alacritty configs have been migrated\nalacritty migrate\nalacritty migrate --config-file ~/.config/alacritty/btop.toml\nalacritty migrate --config-file ~/.config/alacritty/pane.toml\n"
  },
  {
    "path": "migrations/1747737304.sh",
    "content": "#!/bin/bash\n\n# Ensure btop themes folder is available\nmkdir -p ~/.config/btop/themes\n"
  },
  {
    "path": "migrations/1753775930.sh",
    "content": "#!/bin/bash\n\n# Work-around ulauncher issue on nvidia\ngsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command 'sh -c \"pgrep -x ulauncher && { ulauncher-toggle || true; } || setsid -f ulauncher\"'\n"
  },
  {
    "path": "migrations/1761481687.sh",
    "content": "#!/bin/bash\n\n# Force upgrade to gum 0.17.0 to fix issues with older versions\ncd /tmp\nGUM_VERSION=\"0.17.0\"\nwget -qO gum.deb \"https://github.com/charmbracelet/gum/releases/download/v${GUM_VERSION}/gum_${GUM_VERSION}_amd64.deb\"\nsudo apt-get install -y --allow-downgrades ./gum.deb\nrm gum.deb\ncd -"
  },
  {
    "path": "migrations/1770656330.sh",
    "content": "#!/bin/bash\n\n# Update Spotify GPG key if the repository is present\nif [ -f /etc/apt/sources.list.d/spotify.list ]; then\n  echo \"Updating Spotify GPG key...\"\n  curl -sS https://download.spotify.com/debian/pubkey_5384CE82BA52C83A.gpg | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/spotify.gpg\n  echo \"deb [signed-by=/etc/apt/trusted.gpg.d/spotify.gpg] https://repository.spotify.com stable non-free\" | sudo tee /etc/apt/sources.list.d/spotify.list\nfi"
  },
  {
    "path": "themes/catppuccin/alacritty.toml",
    "content": "[colors.primary]\nbackground = \"#24273a\"\nforeground = \"#cad3f5\"\ndim_foreground = \"#8087a2\"\nbright_foreground = \"#cad3f5\"\n\n[colors.cursor]\ntext = \"#24273a\"\ncursor = \"#f4dbd6\"\n\n[colors.vi_mode_cursor]\ntext = \"#24273a\"\ncursor = \"#b7bdf8\"\n\n[colors.search.matches]\nforeground = \"#24273a\"\nbackground = \"#a5adcb\"\n\n[colors.search.focused_match]\nforeground = \"#24273a\"\nbackground = \"#a6da95\"\n\n[colors.footer_bar]\nforeground = \"#24273a\"\nbackground = \"#a5adcb\"\n\n[colors.hints.start]\nforeground = \"#24273a\"\nbackground = \"#eed49f\"\n\n[colors.hints.end]\nforeground = \"#24273a\"\nbackground = \"#a5adcb\"\n\n[colors.selection]\ntext = \"#24273a\"\nbackground = \"#f4dbd6\"\n\n[colors.normal]\nblack = \"#494d64\"\nred = \"#ed8796\"\ngreen = \"#a6da95\"\nyellow = \"#eed49f\"\nblue = \"#8aadf4\"\nmagenta = \"#f5bde6\"\ncyan = \"#8bd5ca\"\nwhite = \"#b8c0e0\"\n\n[colors.bright]\nblack = \"#5b6078\"\nred = \"#ed8796\"\ngreen = \"#a6da95\"\nyellow = \"#eed49f\"\nblue = \"#8aadf4\"\nmagenta = \"#f5bde6\"\ncyan = \"#8bd5ca\"\nwhite = \"#a5adcb\"\n\n[colors.dim]\nblack = \"#494d64\"\nred = \"#ed8796\"\ngreen = \"#a6da95\"\nyellow = \"#eed49f\"\nblue = \"#8aadf4\"\nmagenta = \"#f5bde6\"\ncyan = \"#8bd5ca\"\nwhite = \"#b8c0e0\"\n\n[[colors.indexed_colors]]\nindex = 16\ncolor = \"#f5a97f\"\n\n[[colors.indexed_colors]]\nindex = 17\ncolor = \"#f4dbd6\"\n"
  },
  {
    "path": "themes/catppuccin/btop.theme",
    "content": "# Main background, empty for terminal default, need to be empty if you want transparent background\ntheme[main_bg]=\"#24273a\"\n\n# Main text color\ntheme[main_fg]=\"#c6d0f5\"\n\n# Title color for boxes\ntheme[title]=\"#c6d0f5\"\n\n# Highlight color for keyboard shortcuts\ntheme[hi_fg]=\"#8caaee\"\n\n# Background color of selected item in processes box\ntheme[selected_bg]=\"#51576d\"\n\n# Foreground color of selected item in processes box\ntheme[selected_fg]=\"#8caaee\"\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#838ba7\"\n\n# Color of text appearing on top of graphs, i.e uptime and current network graph scaling\ntheme[graph_text]=\"#f2d5cf\"\n\n# Background color of the percentage meters\ntheme[meter_bg]=\"#51576d\"\n\n# Misc colors for processes box including mini cpu graphs, details memory graph and details status text\ntheme[proc_misc]=\"#f2d5cf\"\n\n# CPU, Memory, Network, Proc box outline colors\ntheme[cpu_box]=\"#ca9ee6\" #Mauve\ntheme[mem_box]=\"#a6d189\" #Green\ntheme[net_box]=\"#ea999c\" #Maroon\ntheme[proc_box]=\"#8caaee\" #Blue\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#737994\"\n\n# Temperature graph color (Green -> Yellow -> Red)\ntheme[temp_start]=\"#a6d189\"\ntheme[temp_mid]=\"#e5c890\"\ntheme[temp_end]=\"#e78284\"\n\n# CPU graph colors (Teal -> Lavender)\ntheme[cpu_start]=\"#81c8be\"\ntheme[cpu_mid]=\"#85c1dc\"\ntheme[cpu_end]=\"#babbf1\"\n\n# Mem/Disk free meter (Mauve -> Lavender -> Blue)\ntheme[free_start]=\"#ca9ee6\"\ntheme[free_mid]=\"#babbf1\"\ntheme[free_end]=\"#8caaee\"\n\n# Mem/Disk cached meter (Sapphire -> Lavender)\ntheme[cached_start]=\"#85c1dc\"\ntheme[cached_mid]=\"#8caaee\"\ntheme[cached_end]=\"#babbf1\"\n\n# Mem/Disk available meter (Peach -> Red)\ntheme[available_start]=\"#ef9f76\"\ntheme[available_mid]=\"#ea999c\"\ntheme[available_end]=\"#e78284\"\n\n# Mem/Disk used meter (Green -> Sky)\ntheme[used_start]=\"#a6d189\"\ntheme[used_mid]=\"#81c8be\"\ntheme[used_end]=\"#99d1db\"\n\n# Download graph colors (Peach -> Red)\ntheme[download_start]=\"#ef9f76\"\ntheme[download_mid]=\"#ea999c\"\ntheme[download_end]=\"#e78284\"\n\n# Upload graph colors (Green -> Sky)\ntheme[upload_start]=\"#a6d189\"\ntheme[upload_mid]=\"#81c8be\"\ntheme[upload_end]=\"#99d1db\"\n\n# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)\ntheme[process_start]=\"#85c1dc\"\ntheme[process_mid]=\"#babbf1\"\ntheme[process_end]=\"#ca9ee6\"\n"
  },
  {
    "path": "themes/catppuccin/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"magenta\"\nOMAKUB_THEME_BACKGROUND=\"catppuccin/background.png\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh\n"
  },
  {
    "path": "themes/catppuccin/neovim.lua",
    "content": "return {\n\t{\n\t\t\"LazyVim/LazyVim\",\n\t\topts = {\n\t\t\tcolorscheme = \"catppuccin\",\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "themes/catppuccin/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#e920a3\"\n"
  },
  {
    "path": "themes/catppuccin/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Catppuccin Macchiato\"\nVSC_EXTENSION=\"Catppuccin.catppuccin-vsc\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh\n"
  },
  {
    "path": "themes/catppuccin/zellij.kdl",
    "content": "themes {\n  catppuccin {\n    bg \"#626880\" // Surface2\n    fg \"#c6d0f5\"\n    red \"#e78284\"\n    green \"#a6d189\"\n    blue \"#8caaee\"\n    yellow \"#e5c890\"\n    magenta \"#f4b8e4\" // Pink\n    orange \"#ef9f76\" // Peach\n    cyan \"#99d1db\" // Sky\n    black \"#292c3c\" // Mantle\n    white \"#c6d0f5\"\n  }\n\n  catppuccin-latte {\n    bg \"#acb0be\" // Surface2\n    fg \"#acb0be\" // Surface2\n    red \"#d20f39\"\n    green \"#40a02b\"\n    blue \"#1e66f5\"\n    yellow \"#df8e1d\"\n    magenta \"#ea76cb\" // Pink\n    orange \"#fe640b\" // Peach\n    cyan \"#04a5e5\" // Sky\n    black \"#dce0e8\" // Crust\n    white \"#4c4f69\" // Text\n  }\n\n  catppuccin-macchiato {\n    bg \"#5b6078\" // Surface2\n    fg \"#cad3f5\"\n    red \"#ed8796\"\n    green \"#a6da95\"\n    blue \"#8aadf4\"\n    yellow \"#eed49f\"\n    magenta \"#f5bde6\" // Pink\n    orange \"#f5a97f\" // Peach\n    cyan \"#91d7e3\" // Sky\n    black \"#1e2030\" // Mantle\n    white \"#cad3f5\"\n  }\n\n  catppuccin-mocha {\n    bg \"#585b70\" // Surface2\n    fg \"#cdd6f4\"\n    red \"#f38ba8\"\n    green \"#a6e3a1\"\n    blue \"#89b4fa\"\n    yellow \"#f9e2af\"\n    magenta \"#f5c2e7\" // Pink\n    orange \"#fab387\" // Peach\n    cyan \"#89dceb\" // Sky\n    black \"#181825\" // Mantle\n    white \"#cdd6f4\"\n  }\n}\n"
  },
  {
    "path": "themes/everforest/alacritty.toml",
    "content": "[colors]\n[colors.primary]\nbackground = '#2d353b'\nforeground = '#d3c6aa'\n\n[colors.normal]\nblack = '#475258'\nred = '#e67e80'\ngreen = '#a7c080'\nyellow = '#dbbc7f'\nblue = '#7fbbb3'\nmagenta = '#d699b6'\ncyan = '#83c092'\nwhite = '#d3c6aa'\n\n[colors.bright]\nblack = '#475258'\nred = '#e67e80'\ngreen = '#a7c080'\nyellow = '#dbbc7f'\nblue = '#7fbbb3'\nmagenta = '#d699b6'\ncyan = '#83c092'\nwhite = '#d3c6aa'\n"
  },
  {
    "path": "themes/everforest/btop.theme",
    "content": "# All graphs and meters can be gradients\n# For single color graphs leave \"mid\" and \"end\" variable empty.\n# Use \"start\" and \"end\" variables for two color gradient\n# Use \"start\", \"mid\" and \"end\" for three color gradient\n\n# Main background, empty for terminal default, need to be empty if you want transparent background\ntheme[main_bg]=\"#2d353b\"\n\n# Main text color\ntheme[main_fg]=\"#d3c6aa\"\n\n# Title color for boxes\ntheme[title]=\"#d3c6aa\"\n\n# Highlight color for keyboard shortcuts\ntheme[hi_fg]=\"#e67e80\"\n\n# Background color of selected items\ntheme[selected_bg]=\"#3d484d\"\n\n# Foreground color of selected items\ntheme[selected_fg]=\"#dbbc7f\"\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#2d353b\"  \n\n# Color of text appearing on top of graphs, i.e uptime and current network graph scaling\ntheme[graph_text]=\"#d3c6aa\"\n\n# Misc colors for processes box including mini cpu graphs, details memory graph and details status text\ntheme[proc_misc]=\"#a7c080\"\n\n# Cpu box outline color\ntheme[cpu_box]=\"#3d484d\"\n\n# Memory/disks box outline color\ntheme[mem_box]=\"#3d484d\"\n\n# Net up/down box outline color\ntheme[net_box]=\"#3d484d\"\n\n# Processes box outline color\ntheme[proc_box]=\"#3d484d\"\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#3d484d\"\n\n# Temperature graph colors\ntheme[temp_start]=\"#a7c080\"\ntheme[temp_mid]=\"#dbbc7f\"\ntheme[temp_end]=\"#f85552\"\n\n# CPU graph colors\ntheme[cpu_start]=\"#a7c080\"\ntheme[cpu_mid]=\"#dbbc7f\"\ntheme[cpu_end]=\"#f85552\"\n\n# Mem/Disk free meter\ntheme[free_start]=\"#f85552\"\ntheme[free_mid]=\"#dbbc7f\"\ntheme[free_end]=\"#a7c080\"\n\n# Mem/Disk cached meter\ntheme[cached_start]=\"#7fbbb3\"\ntheme[cached_mid]=\"#83c092\"\ntheme[cached_end]=\"#a7c080\"\n\n# Mem/Disk available meter\ntheme[available_start]=\"#f85552\"\ntheme[available_mid]=\"#dbbc7f\"\ntheme[available_end]=\"#a7c080\"\n\n# Mem/Disk used meter\ntheme[used_start]=\"#a7c080\"\ntheme[used_mid]=\"#dbbc7f\"\ntheme[used_end]=\"#f85552\"\n\n# Download graph colors\ntheme[download_start]=\"#a7c080\"\ntheme[download_mid]=\"#83c092\"\ntheme[download_end]=\"#7fbbb3\"\n\n# Upload graph colors\ntheme[upload_start]=\"#dbbc7f\"\ntheme[upload_mid]=\"#e69875\"\ntheme[upload_end]=\"#e67e80\"\n\n# Process box color gradient for threads, mem and cpu usage\ntheme[process_start]=\"#a7c080\"\ntheme[process_mid]=\"#e67e80\"\ntheme[process_end]=\"#f85552\"\n\n"
  },
  {
    "path": "themes/everforest/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"bark\"\nOMAKUB_THEME_BACKGROUND=\"everforest/background.jpg\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh\n"
  },
  {
    "path": "themes/everforest/neovim.lua",
    "content": "return {\n\t{ \"neanias/everforest-nvim\" },\n\t{\n\t\t\"LazyVim/LazyVim\",\n\t\topts = {\n\t\t\tcolorscheme = \"everforest\",\n\t\t\tbackground = \"soft\",\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "themes/everforest/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#78ab50\"\n"
  },
  {
    "path": "themes/everforest/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Everforest Dark\"\nVSC_EXTENSION=\"sainnhe.everforest\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh\n"
  },
  {
    "path": "themes/everforest/zellij.kdl",
    "content": "themes {\n    everforest {\n        bg \"#2b3339\"\n        fg \"#d3c6aa\"\n        black \"#4b565c\"\n        red \"#e67e80\"\n        green \"#a7c080\"\n        yellow \"#dbbc7f\"\n        blue \"#7fbbb3\"\n        magenta \"#d699b6\"\n        cyan \"#83c092\"\n        white \"#d3c6aa\"\n        orange \"#FF9E64\"\n    }\n}\n"
  },
  {
    "path": "themes/gruvbox/alacritty.toml",
    "content": "[colors]\n[colors.primary]\nbackground = \"0x282828\"\nforeground = \"0xd4be98\"\n\n[colors.normal]\nblack = \"0x3c3836\"\nred = \"0xea6962\"\ngreen = \"0xa9b665\"\nyellow = \"0xd8a657\"\nblue = \"0x7daea3\"\nmagenta = \"0xd3869b\"\ncyan = \"0x89b482\"\nwhite = \"0xd4be98\"\n\n[colors.bright]\nblack = \"0x3c3836\"\nred = \"0xea6962\"\ngreen = \"0xa9b665\"\nyellow = \"0xd8a657\"\nblue = \"0x7daea3\"\nmagenta = \"0xd3869b\"\ncyan = \"0x89b482\"\nwhite = \"0xd4be98\"\n"
  },
  {
    "path": "themes/gruvbox/btop.theme",
    "content": "#Bashtop gruvbox (https://github.com/morhetz/gruvbox) theme\n#by BachoSeven\n\n# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: \"#RRGGBB\", \"#BW\" or \"0-255 0-255 0-255\"\n# example for white: \"#FFFFFF\", \"#ff\" or \"255 255 255\".\n\n# All graphs and meters can be gradients\n# For single color graphs leave \"mid\" and \"end\" variable empty.\n# Use \"start\" and \"end\" variables for two color gradient\n# Use \"start\", \"mid\" and \"end\" for three color gradient\n\n# Main background, empty for terminal default, need to be empty if you want transparent background\ntheme[main_bg]=\"#282828\"\n\n# Main text color\ntheme[main_fg]=\"#a89984\"\n\n# Title color for boxes\ntheme[title]=\"#ebdbb2\"\n\n# Highlight color for keyboard shortcuts\ntheme[hi_fg]=\"#d79921\"\n\n# Background color of selected items\ntheme[selected_bg]=\"#282828\"\n\n# Foreground color of selected items\ntheme[selected_fg]=\"#fabd2f\"\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#282828\"\n\n# Color of text appearing on top of graphs, i.e uptime and current network graph scaling\ntheme[graph_text]=\"#585858\"\n\n# Misc colors for processes box including mini cpu graphs, details memory graph and details status text\ntheme[proc_misc]=\"#98971a\"\n\n# Cpu box outline color\ntheme[cpu_box]=\"#a89984\"\n\n# Memory/disks box outline color\ntheme[mem_box]=\"#a89984\"\n\n# Net up/down box outline color\ntheme[net_box]=\"#a89984\"\n\n# Processes box outline color\ntheme[proc_box]=\"#a89984\"\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#a89984\"\n\n# Temperature graph colors\ntheme[temp_start]=\"#458588\"\ntheme[temp_mid]=\"#d3869b\"\ntheme[temp_end]=\"#fb4394\"\n\n# CPU graph colors\ntheme[cpu_start]=\"#b8bb26\"\ntheme[cpu_mid]=\"#d79921\"\ntheme[cpu_end]=\"#fb4934\"\n\n# Mem/Disk free meter\ntheme[free_start]=\"#4e5900\"\ntheme[free_mid]=\"\"\ntheme[free_end]=\"#98971a\"\n\n# Mem/Disk cached meter\ntheme[cached_start]=\"#458588\"\ntheme[cached_mid]=\"\"\ntheme[cached_end]=\"#83a598\"\n\n# Mem/Disk available meter\ntheme[available_start]=\"#d79921\"\ntheme[available_mid]=\"\"\ntheme[available_end]=\"#fabd2f\"\n\n# Mem/Disk used meter\ntheme[used_start]=\"#cc241d\"\ntheme[used_mid]=\"\"\ntheme[used_end]=\"#fb4934\"\n\n# Download graph colors\ntheme[download_start]=\"#3d4070\"\ntheme[download_mid]=\"#6c71c4\"\ntheme[download_end]=\"#a3a8f7\"\n\n# Upload graph colors\ntheme[upload_start]=\"#701c45\"\ntheme[upload_mid]=\"#b16286\"\ntheme[upload_end]=\"#d3869b\"\n"
  },
  {
    "path": "themes/gruvbox/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"sage\"\nOMAKUB_THEME_BACKGROUND=\"gruvbox/background.jpg\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh\n"
  },
  {
    "path": "themes/gruvbox/neovim.lua",
    "content": "return {\n\t{ \"ellisonleao/gruvbox.nvim\" },\n\t{\n\t\t\"LazyVim/LazyVim\",\n\t\topts = {\n\t\t\tcolorscheme = \"gruvbox\",\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "themes/gruvbox/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#78ab50\"\n"
  },
  {
    "path": "themes/gruvbox/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Gruvbox Dark Medium\"\nVSC_EXTENSION=\"jdinhlife.gruvbox\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh\n"
  },
  {
    "path": "themes/gruvbox/zellij.kdl",
    "content": "themes {\n    gruvbox {\n        fg \"#d5c4a1\"\n        bg \"#282828\"\n        black \"#3c3836\"\n        red \"#cc241d\"\n        green \"#98971a\"\n        yellow \"#d79921\"\n        blue \"#3c8588\"\n        magenta \"#b16286\"\n        cyan \"#689d6a\"\n        white \"#fbf1c7\"\n        orange \"#d65d0e\"\n    }\n}\n"
  },
  {
    "path": "themes/kanagawa/alacritty.toml",
    "content": "[colors]\n[colors.primary]\nbackground = '#1f1f28'\nforeground = '#dcd7ba'\n\n[colors.normal]\nblack   = '#090618'\nred     = '#c34043'\ngreen   = '#76946a'\nyellow  = '#c0a36e'\nblue    = '#7e9cd8'\nmagenta = '#957fb8'\ncyan    = '#6a9589'\nwhite   = '#c8c093'\n\n[colors.bright]\nblack   = '#727169'\nred     = '#e82424'\ngreen   = '#98bb6c'\nyellow  = '#e6c384'\nblue    = '#7fb4ca'\nmagenta = '#938aa9'\ncyan    = '#7aa89f'\nwhite   = '#dcd7ba'\n\n[colors.selection]\nbackground = '#2d4f67'\nforeground = '#c8c093'\n\n[[colors.indexed_colors]]\nindex = 16\ncolor = '#ffa066'\n\n[[colors.indexed_colors]]\nindex = 17\ncolor = '#ff5d62'\n"
  },
  {
    "path": "themes/kanagawa/btop.theme",
    "content": "# Bashtop Kanagawa-wave (https://github.com/rebelot/kanagawa.nvim) theme\n# By: philikarus\n\n# Main bg\ntheme[main_bg]=\"#1f1f28\"\n\n# Main text color\ntheme[main_fg]=\"#dcd7ba\"\n\n# Title color for boxes\ntheme[title]=\"#dcd7ba\"\n\n# Highlight color for keyboard shortcuts\ntheme[hi_fg]=\"#C34043\"\n\n# Background color of selected item in processes box\ntheme[selected_bg]=\"#223249\"\n\n# Foreground color of selected item in processes box\ntheme[selected_fg]=\"#dca561\"\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#727169\"\n\n# Misc colors for processes box including mini cpu graphs, details memory graph and details status text\ntheme[proc_misc]=\"#7aa89f\"\n\n# Cpu box outline color\ntheme[cpu_box]=\"#727169\"\n\n# Memory/disks box outline color\ntheme[mem_box]=\"#727169\"\n\n# Net up/down box outline color\ntheme[net_box]=\"#727169\"\n\n# Processes box outline color\ntheme[proc_box]=\"#727169\"\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#727169\"\n\n# Temperature graph colors\ntheme[temp_start]=\"#98BB6C\"\ntheme[temp_mid]=\"#DCA561\"\ntheme[temp_end]=\"#E82424\"\n\n# CPU graph colors\ntheme[cpu_start]=\"#98BB6C\"\ntheme[cpu_mid]=\"#DCA561\"\ntheme[cpu_end]=\"#E82424\"\n\n# Mem/Disk free meter\ntheme[free_start]=\"#E82424\"\ntheme[free_mid]=\"#C34043\"\ntheme[free_end]=\"#FF5D62\"\n\n# Mem/Disk cached meter\ntheme[cached_start]=\"#C0A36E\"\ntheme[cached_mid]=\"#DCA561\"\ntheme[cached_end]=\"#FF9E3B\"\n\n# Mem/Disk available meter\ntheme[available_start]=\"#938AA9\"\ntheme[available_mid]=\"#957FBB\"\ntheme[available_end]=\"#9CABCA\"\n\n# Mem/Disk used meter\ntheme[used_start]=\"#658594\"\ntheme[used_mid]=\"#7E9CDB\"\ntheme[used_end]=\"#7FB4CA\"\n\n# Download graph colors\ntheme[download_start]=\"#7E9CDB\"\ntheme[download_mid]=\"#938AA9\"\ntheme[download_end]=\"#957FBB\"\n\n# Upload graph colors\ntheme[upload_start]=\"#DCA561\"\ntheme[upload_mid]=\"#E6C384\"\ntheme[upload_end]=\"#E82424\"\n\n# Process box color gradient for threads, mem and cpu usage\ntheme[process_start]=\"#98BB6C\"\ntheme[process_mid]=\"#DCA561\"\ntheme[process_end]=\"#C34043\"\n"
  },
  {
    "path": "themes/kanagawa/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"purple\"\nOMAKUB_THEME_BACKGROUND=\"kanagawa/background.jpg\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh\n"
  },
  {
    "path": "themes/kanagawa/neovim.lua",
    "content": "return {\n\t{ \"rebelot/kanagawa.nvim\" },\n\t{\n\t\t\"LazyVim/LazyVim\",\n\t\topts = {\n\t\t\tcolorscheme = \"kanagawa\",\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "themes/kanagawa/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#924d8b\"\n"
  },
  {
    "path": "themes/kanagawa/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Kanagawa\"\nVSC_EXTENSION=\"qufiwefefwoyn.kanagawa\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh\n"
  },
  {
    "path": "themes/kanagawa/zellij.kdl",
    "content": "themes {\n    kanagawa {\n        fg \"#DCD7BA\"\n        bg \"#1F1F28\"\n        red \"#C34043\"\n        green \"#76946A\"\n        yellow \"#FF9E3B\"\n        blue \"#7E9CD8\"\n        magenta \"#957FB8\"\n        orange \"#FFA066\"\n        cyan \"#7FB4CA\"\n        black \"#16161D\"\n        white \"#DCD7BA\"\n    }\n}\n"
  },
  {
    "path": "themes/matte-black/alacritty.toml",
    "content": "# ────────────────────────────────────────────────────────────\n# Omarchy Matte Black Theme for Alacritty\n# By tahayvr\n# https://github.com/tahayvr\n# ────────────────────────────────────────────────────────────\n\n[window]\n# window padding {px}\npadding.x = 12\npadding.y = 12\n\n[font]\nsize = 12.0\n\n\n\n[colors]\n[colors.primary]\nbackground = \"#121212\"\nforeground = \"#bebebe\"\ndim_foreground = \"#8a8a8d\"\n\n[colors.cursor]\ntext = \"#121212\"\ncursor = \"#eaeaea\"\n\n[colors.vi_mode_cursor]\ntext = \"#121212\"\ncursor = \"#eaeaea\"\n\n[colors.selection]\ntext = \"CellForeground\"\nbackground = \"#333333\"\n\n[colors.normal]\nblack = \"#333333\"\nred = \"#D35F5F\"\ngreen = \"#FFC107\"\nyellow = \"#b91c1c\"\nblue = \"#e68e0d\"\nmagenta = \"#D35F5F\"\ncyan = \"#bebebe\"\nwhite = \"#bebebe\"\n\n[colors.bright]\nblack = \"#8a8a8d\"\nred = \"#B91C1C\"\ngreen = \"#FFC107\"\nyellow = \"#b90a0a\"\nblue = \"#f59e0b\"\nmagenta = \"#B91C1C\"\ncyan = \"#eaeaea\"\nwhite = \"#ffffff\""
  },
  {
    "path": "themes/matte-black/btop.theme",
    "content": "# ────────────────────────────────────────────────────────────\n# Bashtop theme - Omarchy Matte Black\n# by tahayvr\n# https://github.com/tahayvr\n# ────────────────────────────────────────────────────────────\n\n# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: \"#RRGGBB\", \"#BW\" or \"0-255 0-255 0-255\"\n# example for white: \"#ffffff\", \"#ff\" or \"255 255 255\".\n\n# All graphs and meters can be gradients\n# For single color graphs leave \"mid\" and \"end\" variable empty.\n# Use \"start\" and \"end\" variables for two color gradient\n# Use \"start\", \"mid\" and \"end\" for three color gradient\n\n# Main background, empty for terminal default, need to be empty if you want transparent background\ntheme[main_bg]=\"\"\n\n# Main text color\ntheme[main_fg]=\"#EAEAEA\"\n\n# Title color for boxes\ntheme[title]=\"#8a8a8d\"\n\n# Highlight color for keyboard shortcuts\ntheme[hi_fg]=\"#f59e0b\"\n\n# Background color of selected item in processes box\ntheme[selected_bg]=\"#f59e0b\"\n\n# Foreground color of selected item in processes box\ntheme[selected_fg]=\"#EAEAEA\"\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#333333\"\n\n# Misc colors for processes box including mini cpu graphs, details memory graph and details status text\ntheme[proc_misc]=\"#8a8a8d\"\n\n# Cpu box outline color\ntheme[cpu_box]=\"#8a8a8d\"\n\n# Memory/disks box outline color\ntheme[mem_box]=\"#8a8a8d\"\n\n# Net up/down box outline color\ntheme[net_box]=\"#8a8a8d\"\n\n# Processes box outline color\ntheme[proc_box]=\"#8a8a8d\"\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#8a8a8d\"\n\n# Temperature graph colors\ntheme[temp_start]=\"#8a8a8d\"\ntheme[temp_mid]=\"#f59e0b\"\ntheme[temp_end]=\"#b91c1c\"\n\n# CPU graph colors\ntheme[cpu_start]=\"#8a8a8d\"\ntheme[cpu_mid]=\"#f59e0b\"\ntheme[cpu_end]=\"#b91c1c\"\n\n# Mem/Disk free meter\ntheme[free_start]=\"#8a8a8d\"\ntheme[free_mid]=\"#f59e0b\"\ntheme[free_end]=\"#b91c1c\"\n\n# Mem/Disk cached meter\ntheme[cached_start]=\"#8a8a8d\"\ntheme[cached_mid]=\"#f59e0b\"\ntheme[cached_end]=\"#b91c1c\"\n\n# Mem/Disk available meter\ntheme[available_start]=\"#8a8a8d\"\ntheme[available_mid]=\"#f59e0b\"\ntheme[available_end]=\"#b91c1c\"\n\n# Mem/Disk used meter\ntheme[used_start]=\"#8a8a8d\"\ntheme[used_mid]=\"#f59e0b\"\ntheme[used_end]=\"#b91c1c\"\n\n# Download graph colors\ntheme[download_start]=\"#8a8a8d\"\ntheme[download_mid]=\"#f59e0b\"\ntheme[download_end]=\"#b91c1c\"\n\n# Upload graph colors\ntheme[upload_start]=\"#8a8a8d\"\ntheme[upload_mid]=\"#f59e0b\"\ntheme[upload_end]=\"#b91c1c\"\n"
  },
  {
    "path": "themes/matte-black/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"orange\"\nOMAKUB_THEME_BACKGROUND=\"matte-black/background.jpg\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh\n"
  },
  {
    "path": "themes/matte-black/neovim.lua",
    "content": "return {\n  { \"tahayvr/matteblack.nvim\", lazy = false, priority = 1000 },\n  {\n\t\t\"LazyVim/LazyVim\",\n\t\topts = {\n\t\t\tcolorscheme = \"matteblack\",\n\t\t},\n\t},\n}"
  },
  {
    "path": "themes/matte-black/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#FFFFFF\"\n"
  },
  {
    "path": "themes/matte-black/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Matte Black Theme\"\nVSC_EXTENSION=\"CleanThemes.matte-black-theme\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh\n"
  },
  {
    "path": "themes/matte-black/zellij.kdl",
    "content": "themes {\n    matte-black {\n        fg \"#bebebe\"\n        bg \"#121212\"\n        red \"#D35F5F\"\n        green \"#FFC107\"\n        yellow \"#b91c1c\"\n        blue \"#e68e0d\"\n        orange \"#FFA066\"\n        magenta \"#D35F5F\"\n        cyan \"#bebebe\"\n        black \"#333333\"\n        white \"#bebebe\"\n    }\n}\n"
  },
  {
    "path": "themes/nord/alacritty.toml",
    "content": "[colors]\n[colors.primary]\nbackground = \"#2e3440\"\nforeground = \"#d8dee9\"\ndim_foreground = \"#a5abb6\"\n\n[colors.cursor]\ntext = \"#2e3440\"\ncursor = \"#d8dee9\"\n\n[colors.vi_mode_cursor]\ntext = \"#2e3440\"\ncursor = \"#d8dee9\"\n\n[colors.selection]\ntext = \"CellForeground\"\nbackground = \"#4c566a\"\n\n[colors.normal]\nblack = \"#3b4252\"\nred = \"#bf616a\"\ngreen = \"#a3be8c\"\nyellow = \"#ebcb8b\"\nblue = \"#81a1c1\"\nmagenta = \"#b48ead\"\ncyan = \"#88c0d0\"\nwhite = \"#e5e9f0\"\n\n[colors.bright]\nblack = \"#4c566a\"\nred = \"#bf616a\"\ngreen = \"#a3be8c\"\nyellow = \"#ebcb8b\"\nblue = \"#81a1c1\"\nmagenta = \"#b48ead\"\ncyan = \"#8fbcbb\"\nwhite = \"#eceff4\"\n\n[colors.dim]\nblack = \"#373e4d\"\nred = \"#94545d\"\ngreen = \"#809575\"\nyellow = \"#b29e75\"\nblue = \"#68809a\"\nmagenta = \"#8c738c\"\ncyan = \"#6d96a5\"\nwhite = \"#aeb3bb\"\n"
  },
  {
    "path": "themes/nord/btop.theme",
    "content": "#Bashtop theme with nord palette (https://www.nordtheme.com)\n#by Justin Zobel <justin.zobel@gmail.com>\n\n# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: \"#RRGGBB\", \"#BW\" or \"0-255 0-255 0-255\"\n# example for white: \"#ffffff\", \"#ff\" or \"255 255 255\".\n\n# All graphs and meters can be gradients\n# For single color graphs leave \"mid\" and \"end\" variable empty.\n# Use \"start\" and \"end\" variables for two color gradient\n# Use \"start\", \"mid\" and \"end\" for three color gradient\n\n# Main background, empty for terminal default, need to be empty if you want transparent background\ntheme[main_bg]=\"#2E3440\"\n\n# Main text color\ntheme[main_fg]=\"#D8DEE9\"\n\n# Title color for boxes\ntheme[title]=\"#8FBCBB\"\n\n# Highlight color for keyboard shortcuts\ntheme[hi_fg]=\"#5E81AC\"\n\n# Background color of selected item in processes box\ntheme[selected_bg]=\"#4C566A\"\n\n# Foreground color of selected item in processes box\ntheme[selected_fg]=\"#ECEFF4\"\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#4C566A\"\n\n# Misc colors for processes box including mini cpu graphs, details memory graph and details status text\ntheme[proc_misc]=\"#5E81AC\"\n\n# Cpu box outline color\ntheme[cpu_box]=\"#4C566A\"\n\n# Memory/disks box outline color\ntheme[mem_box]=\"#4C566A\"\n\n# Net up/down box outline color\ntheme[net_box]=\"#4C566A\"\n\n# Processes box outline color\ntheme[proc_box]=\"#4C566A\"\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#4C566A\"\n\n# Temperature graph colors\ntheme[temp_start]=\"#81A1C1\"\ntheme[temp_mid]=\"#88C0D0\"\ntheme[temp_end]=\"#ECEFF4\"\n\n# CPU graph colors\ntheme[cpu_start]=\"#81A1C1\"\ntheme[cpu_mid]=\"#88C0D0\"\ntheme[cpu_end]=\"#ECEFF4\"\n\n# Mem/Disk free meter\ntheme[free_start]=\"#81A1C1\"\ntheme[free_mid]=\"#88C0D0\"\ntheme[free_end]=\"#ECEFF4\"\n\n# Mem/Disk cached meter\ntheme[cached_start]=\"#81A1C1\"\ntheme[cached_mid]=\"#88C0D0\"\ntheme[cached_end]=\"#ECEFF4\"\n\n# Mem/Disk available meter\ntheme[available_start]=\"#81A1C1\"\ntheme[available_mid]=\"#88C0D0\"\ntheme[available_end]=\"#ECEFF4\"\n\n# Mem/Disk used meter\ntheme[used_start]=\"#81A1C1\"\ntheme[used_mid]=\"#88C0D0\"\ntheme[used_end]=\"#ECEFF4\"\n\n# Download graph colors\ntheme[download_start]=\"#81A1C1\"\ntheme[download_mid]=\"#88C0D0\"\ntheme[download_end]=\"#ECEFF4\"\n\n# Upload graph colors\ntheme[upload_start]=\"#81A1C1\"\ntheme[upload_mid]=\"#88C0D0\"\ntheme[upload_end]=\"#ECEFF4\"\n"
  },
  {
    "path": "themes/nord/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"blue\"\nOMAKUB_THEME_BACKGROUND=\"nord/background.png\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh\n"
  },
  {
    "path": "themes/nord/neovim.lua",
    "content": "return {\n\t{ \"EdenEast/nightfox.nvim\" },\n\t{\n\t\t\"LazyVim/LazyVim\",\n\t\topts = {\n\t\t\tcolorscheme = \"nordfox\",\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "themes/nord/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#208fe9\"\n"
  },
  {
    "path": "themes/nord/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Nord\"\nVSC_EXTENSION=\"arcticicestudio.nord-visual-studio-code\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh\n"
  },
  {
    "path": "themes/nord/zellij.kdl",
    "content": "themes {\n    nord {\n        fg \"#D8DEE9\"\n        bg \"#2E3440\"\n        black \"#3B4252\"\n        red \"#BF616A\"\n        green \"#A3BE8C\"\n        yellow \"#EBCB8B\"\n        blue \"#81A1C1\"\n        magenta \"#B48EAD\"\n        cyan \"#88C0D0\"\n        white \"#E5E9F0\"\n        orange \"#D08770\"\n    }\n}\n"
  },
  {
    "path": "themes/osaka-jade/alacritty.toml",
    "content": "[window]\n# window padding {px}\npadding.x = 12\npadding.y = 12\n\n[font]\nsize = 12.0\n\n[colors]\n[colors.primary]\nbackground = '#111c18'\nforeground = '#C1C497'\ndim_foreground = '#8087a2'\n\n[colors.cursor]\ntext = '#000000'\ncursor = '#D7C995'\n\n[colors.vi_mode_cursor]\ntext = '#000000'\ncursor = '#D7C995'\n\n[colors.selection]\ntext = 'CellForeground'\nbackground = '#23372B'\n\n[colors.normal]\nblack = '#23372B'\nred = '#FF5345'\ngreen = '#549e6a'\nyellow = '#459451'\nblue = '#509475'\nmagenta = '#D2689C'\ncyan = '#2DD5B7'\nwhite = '#F6F5DD'\n\n[colors.bright]\nblack = '#53685B'\nred = '#db9f9c'\ngreen = '#63b07a'\nyellow = '#E5C736'\nblue = '#ACD4CF'\nmagenta = '#75bbb3'\ncyan = '#8CD3CB'\nwhite = '#9eebb3'"
  },
  {
    "path": "themes/osaka-jade/btop.theme",
    "content": "# Main background\ntheme[main_bg]=\"#111c18\"\n\n# Main text color\ntheme[main_fg]=\"#F7E8B2\"\n\n# Title color for boxes\ntheme[title]=\"#D6D5BC\"\n\n# Highlight color for keyboard shortcuts\ntheme[hi_fg]=\"#E67D64\"\n\n# Background color of selected items\ntheme[selected_bg]=\"#364538\"\n\n# Foreground color of selected items\ntheme[selected_fg]=\"#DEB266\"\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#32473B\"  \n\n# Color of text appearing on top of graphs\ntheme[graph_text]=\"#E6D8BA\"\n\n# Misc colors for processes box\ntheme[proc_misc]=\"#E6D8BA\"\n\n# Cpu box outline color\ntheme[cpu_box]=\"#81B8A8\"\n\n# Memory/disks box outline color\ntheme[mem_box]=\"#81B8A8\"\n\n# Net up/down box outline color\ntheme[net_box]=\"#81B8A8\"\n\n# Processes box outline color\ntheme[proc_box]=\"#81B8A8\"\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#81B8A8\"\n\n# Temperature graph colors\ntheme[temp_start]=\"#BFD99A\"\ntheme[temp_mid]=\"#E1B55E\"\ntheme[temp_end]=\"#DBB05C\"\n\n# CPU graph colors\ntheme[cpu_start]=\"#5F8C86\"\ntheme[cpu_mid]=\"#629C89\"\ntheme[cpu_end]=\"#76AD98\"\n\n# Mem/Disk free meter\ntheme[free_start]=\"#5F8C86\"\ntheme[free_mid]=\"#629C89\"\ntheme[free_end]=\"#76AD98\"\n\n# Mem/Disk cached meter\ntheme[cached_start]=\"#5F8C86\"\ntheme[cached_mid]=\"#629C89\"\ntheme[cached_end]=\"#76AD98\"\n\n# Mem/Disk available meter\ntheme[available_start]=\"#5F8C86\"\ntheme[available_mid]=\"#629C89\"\ntheme[available_end]=\"#76AD98\"\n\n# Mem/Disk used meter\ntheme[used_start]=\"#5F8C86\"\ntheme[used_mid]=\"#629C89\"\ntheme[used_end]=\"#76AD98\"\n\n# Download graph colors\ntheme[download_start]=\"#75BBB3\"\ntheme[download_mid]=\"#61949A\"\ntheme[download_end]=\"#215866\"\n\n# Upload graph colors\ntheme[upload_start]=\"#215866\"\ntheme[upload_mid]=\"#91C080\"\ntheme[upload_end]=\"#549E6A\"\n\n# Process box color gradient for threads, mem and cpu usage\ntheme[process_start]=\"#72CFA3\"\ntheme[process_mid]=\"#D0D494\"\ntheme[process_end]=\"#DB9F9C\""
  },
  {
    "path": "themes/osaka-jade/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"green\"\nOMAKUB_THEME_BACKGROUND=\"osaka-jade/background.jpg\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh"
  },
  {
    "path": "themes/osaka-jade/neovim.lua",
    "content": "return {\n  {\n    \"ribru17/bamboo.nvim\",\n    lazy = false,\n    priority = 1000,\n    config = function()\n      require(\"bamboo\").setup({})\n      require(\"bamboo\").load()\n    end,\n  },\n  {\n    \"LazyVim/LazyVim\",\n    opts = {\n      colorscheme = \"bamboo\",\n    },\n  },\n}"
  },
  {
    "path": "themes/osaka-jade/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#214237\""
  },
  {
    "path": "themes/osaka-jade/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Ocean Green: Dark\"\nVSC_EXTENSION=\"jovejonovski.ocean-green\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh"
  },
  {
    "path": "themes/osaka-jade/zellij.kdl",
    "content": "themes {\n    osaka-jade {\n        fg \"#C1C497\"\n        bg \"#111c18\"\n        red \"#FF5345\"\n        green \"#549e6a\"\n        yellow \"#459451\"\n        blue \"#509475\"\n        magenta \"#D2689C\"\n        cyan \"#2DD5B7\"\n        black \"#23372B\"\n        orange \"#E5C736\"\n        white \"#F6F5DD\"\n    }\n}"
  },
  {
    "path": "themes/ristretto/alacritty.toml",
    "content": "[colors]\n\n[colors.normal]\nblack = \"#2c2525\"\nred = \"#fd6883\"\ngreen = \"#adda78\"\nyellow = \"#f9cc6c\"\nblue = \"#f38d70\"\nmagenta = \"#a8a9eb\"\ncyan = \"#85dacc\"\nwhite = \"#e6d9db\"\n\n[colors.bright]\nblack   = \"#463a3a\"\nred     = \"#ff8297\"\ngreen   = \"#c8e292\"\nyellow  = \"#fcd675\"\nblue    = \"#f8a788\"\nmagenta = \"#bebffd\"\ncyan    = \"#9bf1e1\"\nwhite   = \"#f1e5e7\"\n\n[colors.cursor]\ncursor = '#c3b7b8'\ntext = '#c3b7b8'\n\n[colors.primary]\nbackground = '#2c2525'\nforeground = '#e6d9db'\n\n[colors.selection]\nbackground = '#403e41'\ntext = '#e6d9db'\n"
  },
  {
    "path": "themes/ristretto/btop.theme",
    "content": "#Btop monokai pro ristretto theme\n#Reconfigured from monokai theme\n\n# Main background, empty for terminal default, need to be empty if you want transparent background\ntheme[main_bg]=\"#2c2421\"\n\n# Main text color\ntheme[main_fg]=\"#e6d9db\"\n\n# Title color for boxes\ntheme[title]=\"#e6d9db\"\n\n# Higlight color for keyboard shortcuts\ntheme[hi_fg]=\"#fd6883\"\n\n# Background color of selected item in processes box\ntheme[selected_bg]=\"#3d2f2a\"\n\n# Foreground color of selected item in processes box\ntheme[selected_fg]=\"#e6d9db\"\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#72696a\"\n\n# Misc colors for processes box including mini cpu graphs, details memory graph and details status text\ntheme[proc_misc]=\"#adda78\"\n\n# Cpu box outline color\ntheme[cpu_box]=\"#5b4a45\"\n\n# Memory/disks box outline color\ntheme[mem_box]=\"#5b4a45\"\n\n# Net up/down box outline color\ntheme[net_box]=\"#5b4a45\"\n\n# Processes box outline color\ntheme[proc_box]=\"#5b4a45\"\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#72696a\"\n\n# Temperature graph colors\ntheme[temp_start]=\"#a8a9eb\"\ntheme[temp_mid]=\"#f38d70\"\ntheme[temp_end]=\"#fd6a85\"\n\n# CPU graph colors\ntheme[cpu_start]=\"#adda78\"\ntheme[cpu_mid]=\"#f9cc6c\"\ntheme[cpu_end]=\"#fd6883\"\n\n# Mem/Disk free meter\ntheme[free_start]=\"#5b4a45\"\ntheme[free_mid]=\"#adda78\"\ntheme[free_end]=\"#c5e2a3\"\n\n# Mem/Disk cached meter\ntheme[cached_start]=\"#5b4a45\"\ntheme[cached_mid]=\"#85dacc\"\ntheme[cached_end]=\"#b3e8dd\"\n\n# Mem/Disk available meter\ntheme[available_start]=\"#5b4a45\"\ntheme[available_mid]=\"#f9cc6c\"\ntheme[available_end]=\"#fce2a3\"\n\n# Mem/Disk used meter\ntheme[used_start]=\"#5b4a45\"\ntheme[used_mid]=\"#fd6a85\"\ntheme[used_end]=\"#feb5c7\"\n\n# Download graph colors\ntheme[download_start]=\"#3d2f2a\"\ntheme[download_mid]=\"#a8a9eb\"\ntheme[download_end]=\"#c5c6f0\"\n\n# Upload graph colors\ntheme[upload_start]=\"#3d2f2a\"\ntheme[upload_mid]=\"#fd6a85\"\ntheme[upload_end]=\"#feb5c7\"\n\n"
  },
  {
    "path": "themes/ristretto/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"grey\"\nOMAKUB_THEME_BACKGROUND=\"ristretto/background.jpg\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh\n"
  },
  {
    "path": "themes/ristretto/neovim.lua",
    "content": "return {\n\t{\n\t\t\"gthelding/monokai-pro.nvim\",\n\t\tconfig = function()\n\t\t\trequire(\"monokai-pro\").setup({\n\t\t\t\tfilter = \"ristretto\",\n\t\t\t\toverride = function()\n\t\t\t\t\treturn {\n\t\t\t\t\t\tNonText = { fg = \"#948a8b\" },\n\t\t\t\t\t}\n\t\t\t\tend,\n\t\t\t})\n\t\t\tvim.cmd([[colorscheme monokai-pro]])\n\t\tend,\n\t},\n\t{\n\t\t\"LazyVim/LazyVim\",\n\t\topts = {\n\t\t\tcolorscheme = \"monokai-pro\",\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "themes/ristretto/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#2c2525\"\n"
  },
  {
    "path": "themes/ristretto/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Monokai Pro (Filter Ristretto)\"\nVSC_EXTENSION=\"monokai.theme-monokai-pro-vscode\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh\n"
  },
  {
    "path": "themes/ristretto/zellij.kdl",
    "content": "themes {\n    ristretto {\n        fg \"#e6d9db\"\n        bg \"#2c2525\"\n        red \"#fd6883\"\n        green \"#adda78\"\n        yellow \"#f9cc6c\"\n        blue \"#f38d70\"\n        orange \"#FFA066\"\n        magenta \"#a8a9eb\"\n        cyan \"#85dacc\"\n        black \"#2c2525\"\n        white \"#e6d9db\"\n    }\n}\n"
  },
  {
    "path": "themes/rose-pine/alacritty.toml",
    "content": "[colors.primary]\nforeground = \"#575279\"\nbackground = \"#faf4ed\"\ndim_foreground = \"#797593\"\nbright_foreground = \"#575279\"\n\n[colors.cursor]\ntext = \"#575279\"\ncursor = \"#cecacd\"\n\n[colors.vi_mode_cursor]\ntext = \"#575279\"\ncursor = \"#cecacd\"\n\n[colors.search.matches]\nforeground = \"#797593\"\nbackground = \"#f2e9e1\"\n\n[colors.search.focused_match]\nforeground = \"#faf4ed\"\nbackground = \"#d7827e\"\n\n[colors.hints.start]\nforeground = \"#797593\"\nbackground = \"#fffaf3\"\n\n[colors.hints.end]\nforeground = \"#9893a5\"\nbackground = \"#fffaf3\"\n\n[colors.line_indicator]\nforeground = \"None\"\nbackground = \"None\"\n\n[colors.footer_bar]\nforeground = \"#575279\"\nbackground = \"#fffaf3\"\n\n[colors.selection]\ntext = \"#575279\"\nbackground = \"#dfdad9\"\n\n[colors.normal]\nblack = \"#f2e9e1\"\nred = \"#b4637a\"\ngreen = \"#286983\"\nyellow = \"#ea9d34\"\nblue = \"#56949f\"\nmagenta = \"#907aa9\"\ncyan = \"#d7827e\"\nwhite = \"#575279\"\n\n[colors.bright]\nblack = \"#9893a5\"\nred = \"#b4637a\"\ngreen = \"#286983\"\nyellow = \"#ea9d34\"\nblue = \"#56949f\"\nmagenta = \"#907aa9\"\ncyan = \"#d7827e\"\nwhite = \"#575279\"\n\n[colors.dim]\nblack = \"#9893a5\"\nred = \"#b4637a\"\ngreen = \"#286983\"\nyellow = \"#ea9d34\"\nblue = \"#56949f\"\nmagenta = \"#907aa9\"\ncyan = \"#d7827e\"\nwhite = \"#575279\"\n\n"
  },
  {
    "path": "themes/rose-pine/btop.theme",
    "content": "# Main background, empty for terminal default, need to be empty if you want transparent background\ntheme[main_bg]=\"#faf4ed\"\n# Base\n\n# Main text color\ntheme[main_fg]=\"#575279\"\n# Text\n\n# Title color for boxes\ntheme[title]=\"#908caa\"\n# Subtle\n\n# Highlight color for keyboard shortcuts\ntheme[hi_fg]=\"#e0def4\"\n# Text\n\n# Background color of selected item in processes box\ntheme[selected_bg]=\"#524f67\"\n# HL High\n\n# Foreground color of selected item in processes box\ntheme[selected_fg]=\"#f6c177\"\n# Gold\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#403d52\"\n# HL Med\n\n# Color of text appearing on top of graphs, i.e uptime and current network graph scaling\ntheme[graph_text]=\"#9ccfd8\"\n# Foam\n\n# Background color of the percentage meters\ntheme[meter_bg]=\"#9ccfd8\"\n# Foam\n\n# Misc colors for processes box including mini cpu graphs, details memory graph and details status text\ntheme[proc_misc]=\"#c4a7e7\"\n# Iris\n\n# Cpu box outline color\ntheme[cpu_box]=\"#ebbcba\"\n# Rose\n\n# Memory/disks box outline color\ntheme[mem_box]=\"#31748f\"\n# Pine\n\n# Net up/down box outline color\ntheme[net_box]=\"#c4a7e7\"\n# Iris\n\n# Processes box outline color\ntheme[proc_box]=\"#eb6f92\"\n# Love\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#6e6a86\"\n# Muted\n\n# Temperature graph colors\ntheme[temp_start]=\"#ebbcba\"\n# Rose\ntheme[temp_mid]=\"#f6c177\"\n# Gold\ntheme[temp_end]=\"#eb6f92\"\n# Love\n\n# CPU graph colors\ntheme[cpu_start]=\"#f6c177\"\n# Gold\ntheme[cpu_mid]=\"#ebbcba\"\n# Rose\ntheme[cpu_end]=\"#eb6f92\"\n# Love\n\n# Mem/Disk free meter\n# all love\ntheme[free_start]=\"#eb6f92\"\ntheme[free_mid]=\"#eb6f92\"\ntheme[free_end]=\"#eb6f92\"\n\n# Mem/Disk cached meter\n# all iris\ntheme[cached_start]=\"#c4a7e7\"\ntheme[cached_mid]=\"#c4a7e7\"\ntheme[cached_end]=\"#c4a7e7\"\n\n# Mem/Disk available meter\n# all pine\ntheme[available_start]=\"#31748f\"\ntheme[available_mid]=\"#31748f\"\ntheme[available_end]=\"#31748f\"\n\n# Mem/Disk used meter\n# all rose\ntheme[used_start]=\"#ebbcba\"\ntheme[used_mid]=\"#ebbcba\"\ntheme[used_end]=\"#ebbcba\"\n\n# Download graph colors\n# Pine for start, foam for the rest\ntheme[download_start]=\"#31748f\"\ntheme[download_mid]=\"#9ccfd8\"\ntheme[download_end]=\"#9ccfd8\"\n\n# Upload graph colors\ntheme[upload_start]=\"#ebbcba\"\n# Rose for start\ntheme[upload_mid]=\"#eb6f92\"\n# Love for mid and end\ntheme[upload_end]=\"#eb6f92\"\n\n# Process box color gradient for threads, mem and cpu usage\ntheme[process_start]=\"#31748f\"\n# Pine\ntheme[process_mid]=\"#9ccfd8\"\n# Foam for mid and end\ntheme[process_end]=\"#9ccfd8\"\n"
  },
  {
    "path": "themes/rose-pine/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"red\"\nOMAKUB_THEME_BACKGROUND=\"rose-pine/background.jpg\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh\ngsettings set org.gnome.desktop.interface color-scheme 'prefer-light'\n"
  },
  {
    "path": "themes/rose-pine/neovim.lua",
    "content": "return {\n\t{ \"rose-pine/neovim\", name = \"rose-pine\" },\n\t{\n\t\t\"LazyVim/LazyVim\",\n\t\topts = {\n\t\t\tcolorscheme = \"rose-pine-dawn\",\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "themes/rose-pine/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#e92020\"\n"
  },
  {
    "path": "themes/rose-pine/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Rosé Pine Dawn\"\nVSC_EXTENSION=\"mvllow.rose-pine\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh\n"
  },
  {
    "path": "themes/rose-pine/zellij.kdl",
    "content": "themes {\n\trose-pine {\n\t\tbg \"#faf4ed\"\n\t\tfg \"#575279\"\n\t\tred \"#b4637a\"\n\t\tgreen \"#286983\"\n\t\tblue \"#56949f\"\n\t\tyellow \"#ea9d34\"\n\t\tmagenta \"#907aa9\"\n\t\torange \"#fe640b\"\n\t\tcyan \"#d7827e\"\n\t\tblack \"#f2e9e1\"\n\t\twhite \"#575279\"\n\t}\n}\n"
  },
  {
    "path": "themes/set-gnome-theme.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'\ngsettings set org.gnome.desktop.interface cursor-theme 'Yaru'\ngsettings set org.gnome.desktop.interface gtk-theme \"Yaru-$OMAKUB_THEME_COLOR-dark\"\ngsettings set org.gnome.desktop.interface icon-theme \"Yaru-$OMAKUB_THEME_COLOR\"\ngsettings set org.gnome.desktop.interface accent-color \"$OMAKUB_THEME_COLOR\" 2>/dev/null || true\n\nBACKGROUND_ORG_PATH=\"$HOME/.local/share/omakub/themes/$OMAKUB_THEME_BACKGROUND\"\nBACKGROUND_DEST_DIR=\"$HOME/.local/share/backgrounds\"\nBACKGROUND_DEST_PATH=\"$BACKGROUND_DEST_DIR/$(echo $OMAKUB_THEME_BACKGROUND | tr '/' '-')\"\n\nif [ ! -d \"$BACKGROUND_DEST_DIR\" ]; then mkdir -p \"$BACKGROUND_DEST_DIR\"; fi\n\n[ ! -f $BACKGROUND_DEST_PATH ] && cp $BACKGROUND_ORG_PATH $BACKGROUND_DEST_PATH\ngsettings set org.gnome.desktop.background picture-uri $BACKGROUND_DEST_PATH\ngsettings set org.gnome.desktop.background picture-uri-dark $BACKGROUND_DEST_PATH\ngsettings set org.gnome.desktop.background picture-options 'zoom'\n"
  },
  {
    "path": "themes/set-vscode-theme.sh",
    "content": "#!/bin/bash\n\nif command -v code &>/dev/null; then\n  code --install-extension $VSC_EXTENSION >/dev/null\n  sed -i \"s/\\\"workbench.colorTheme\\\": \\\".*\\\"/\\\"workbench.colorTheme\\\": \\\"$VSC_THEME\\\"/g\" ~/.config/Code/User/settings.json\nfi\n"
  },
  {
    "path": "themes/tokyo-night/alacritty.toml",
    "content": "[colors]\n[colors.primary]\nbackground = '#1a1b26'\nforeground = '#a9b1d6'\n\n# Normal colors\n[colors.normal]\nblack = '#32344a'\nred = '#f7768e'\ngreen = '#9ece6a'\nyellow = '#e0af68'\nblue = '#7aa2f7'\nmagenta = '#ad8ee6'\ncyan = '#449dab'\nwhite = '#787c99'\n\n# Bright colors\n[colors.bright]\nblack = '#444b6a'\nred = '#ff7a93'\ngreen = '#b9f27c'\nyellow = '#ff9e64'\nblue = '#7da6ff'\nmagenta = '#bb9af7'\ncyan = '#0db9d7'\nwhite = '#acb0d0'\n\n[colors.selection]\nbackground = '#7aa2f7'\n"
  },
  {
    "path": "themes/tokyo-night/btop.theme",
    "content": "# Theme: tokyo-night\n# By: Pascal Jaeger\n\n# Main bg\ntheme[main_bg]=\"#1a1b26\"\n\n# Main text color\ntheme[main_fg]=\"#cfc9c2\"\n\n# Title color for boxes\ntheme[title]=\"#cfc9c2\"\n\n# Highlight color for keyboard shortcuts\ntheme[hi_fg]=\"#7dcfff\"\n\n# Background color of selected item in processes box\ntheme[selected_bg]=\"#414868\"\n\n# Foreground color of selected item in processes box\ntheme[selected_fg]=\"#cfc9c2\"\n\n# Color of inactive/disabled text\ntheme[inactive_fg]=\"#565f89\"\n\n# Misc colors for processes box including mini cpu graphs, details memory graph and details status text\ntheme[proc_misc]=\"#7dcfff\"\n\n# Cpu box outline color\ntheme[cpu_box]=\"#565f89\"\n\n# Memory/disks box outline color\ntheme[mem_box]=\"#565f89\"\n\n# Net up/down box outline color\ntheme[net_box]=\"#565f89\"\n\n# Processes box outline color\ntheme[proc_box]=\"#565f89\"\n\n# Box divider line and small boxes line color\ntheme[div_line]=\"#565f89\"\n\n# Temperature graph colors\ntheme[temp_start]=\"#9ece6a\"\ntheme[temp_mid]=\"#e0af68\"\ntheme[temp_end]=\"#f7768e\"\n\n# CPU graph colors\ntheme[cpu_start]=\"#9ece6a\"\ntheme[cpu_mid]=\"#e0af68\"\ntheme[cpu_end]=\"#f7768e\"\n\n# Mem/Disk free meter\ntheme[free_start]=\"#9ece6a\"\ntheme[free_mid]=\"#e0af68\"\ntheme[free_end]=\"#f7768e\"\n\n# Mem/Disk cached meter\ntheme[cached_start]=\"#9ece6a\"\ntheme[cached_mid]=\"#e0af68\"\ntheme[cached_end]=\"#f7768e\"\n\n# Mem/Disk available meter\ntheme[available_start]=\"#9ece6a\"\ntheme[available_mid]=\"#e0af68\"\ntheme[available_end]=\"#f7768e\"\n\n# Mem/Disk used meter\ntheme[used_start]=\"#9ece6a\"\ntheme[used_mid]=\"#e0af68\"\ntheme[used_end]=\"#f7768e\"\n\n# Download graph colors\ntheme[download_start]=\"#9ece6a\"\ntheme[download_mid]=\"#e0af68\"\ntheme[download_end]=\"#f7768e\"\n\n# Upload graph colors\ntheme[upload_start]=\"#9ece6a\"\ntheme[upload_mid]=\"#e0af68\"\ntheme[upload_end]=\"#f7768e\"\n"
  },
  {
    "path": "themes/tokyo-night/gnome.sh",
    "content": "#!/bin/bash\n\nOMAKUB_THEME_COLOR=\"purple\"\nOMAKUB_THEME_BACKGROUND=\"tokyo-night/background.jpg\"\nsource $OMAKUB_PATH/themes/set-gnome-theme.sh\n"
  },
  {
    "path": "themes/tokyo-night/neovim.lua",
    "content": "return {\n\t{\n\t\t\"LazyVim/LazyVim\",\n\t\topts = {\n\t\t\tcolorscheme = \"tokyonight\",\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "themes/tokyo-night/tophat.sh",
    "content": "#!/bin/bash\n\ngsettings set org.gnome.shell.extensions.tophat meter-fg-color \"#924d8b\"\n"
  },
  {
    "path": "themes/tokyo-night/vscode.sh",
    "content": "#!/bin/bash\n\nVSC_THEME=\"Tokyo Night\"\nVSC_EXTENSION=\"enkia.tokyo-night\"\nsource $OMAKUB_PATH/themes/set-vscode-theme.sh\n"
  },
  {
    "path": "themes/tokyo-night/zellij.kdl",
    "content": "themes {\n    tokyo-night {\n        fg 169 177 214\n        bg 26 27 38\n        black 56 62 90\n        red 249 51 87\n        green 158 206 106\n        yellow 224 175 104\n        blue 122 162 247\n        magenta 187 154 247\n        cyan 42 195 222\n        white 192 202 245\n        orange 255 158 100\n    }\n}\n"
  },
  {
    "path": "uninstall/app-1password.sh",
    "content": "#!/bin/bash\n\nsudo rm /etc/apt/sources.list.d/1password.list\nsudo rm /usr/share/keyrings/1password-archive-keyring.gpg\nsudo rm /usr/share/debsig/keyrings/AC2D62742012EA22/debsig.gpg\nsudo rm -r /etc/debsig/policies/AC2D62742012EA22/\nsudo apt remove --purge -y 1password 1password-cli\n"
  },
  {
    "path": "uninstall/app-audacity.sh",
    "content": "#!/bin/bash\n\nflatpak uninstall -y flathub org.audacityteam.Audacity\n"
  },
  {
    "path": "uninstall/app-brave.sh",
    "content": "#!/bin/bash\n\nsudo apt remove --purge -y brave-browser\nsudo rm /etc/apt/sources.list.d/brave-browser-release.list\nsudo rm /usr/share/keyrings/brave-browser-*.gpg\n"
  },
  {
    "path": "uninstall/app-chrome.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y google-chrome-stable\n"
  },
  {
    "path": "uninstall/app-cursor.sh",
    "content": "#!/bin/bash\n\nsudo rm /opt/cursor.appimage\nsudo rm /usr/share/applications/cursor.desktop\n"
  },
  {
    "path": "uninstall/app-discord.sh",
    "content": "sudo apt remove --purge -y discord"
  },
  {
    "path": "uninstall/app-doom-emacs.sh",
    "content": "#!/bin/bash\n\nsudo apt remove --purge -y emacs emacs-gtk\nsudo rm -rf ~/.config/emacs\nsudo rm -rf ~/.emacs.d\nsudo rm -rf ~/.config/doom\n"
  },
  {
    "path": "uninstall/app-fastfetch.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y fastfetch\n"
  },
  {
    "path": "uninstall/app-flameshot.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y flameshot\n"
  },
  {
    "path": "uninstall/app-geekbench.sh",
    "content": "#!/bin/bash\n\nsudo rm -rf /usr/local/geekbench6\nsudo rm -rf /usr/local/bin/geekbench6\n"
  },
  {
    "path": "uninstall/app-gimp.sh",
    "content": "#!/bin/bash\n\nsudo flatpak remove -y org.gimp.GIMP\n"
  },
  {
    "path": "uninstall/app-github-cli.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y gh\n"
  },
  {
    "path": "uninstall/app-libreoffice.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y libreoffice\n"
  },
  {
    "path": "uninstall/app-localsend.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y localsend\n"
  },
  {
    "path": "uninstall/app-mainline-kernels.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y mainline\n"
  },
  {
    "path": "uninstall/app-minecraft.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y openjdk-8-jdk minecraft-launcher\n"
  },
  {
    "path": "uninstall/app-neovim.sh",
    "content": "#!/bin/bash\n\nsudo rm /usr/local/bin/nvim\nsudo rm -r /usr/local/share/nvim/\nrm ~/.local/share/applications/Neovim.desktop\nrm -rf ~/.config/nvim\nrm -rf ~/.local/share/nvim\nrm -rf ~/.local/state/nvim\nrm -rf ~/.cache/nvim\n"
  },
  {
    "path": "uninstall/app-obs-studio.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y obs-studio\n"
  },
  {
    "path": "uninstall/app-obsidian.sh",
    "content": "#!/bin/bash\n\nsudo apt remove --purge -y obsidian\n"
  },
  {
    "path": "uninstall/app-ollama.sh",
    "content": "#!/bin/bash\n\n# Remove service\nsudo systemctl stop ollama\nsudo systemctl disable ollama\nsudo rm /etc/systemd/system/ollama.service\n\n# Remove command\nsudo rm $(which ollama)\n\n# Remove installed models\nsudo rm -r /usr/share/ollama\nsudo userdel ollama\nsudo groupdel ollama\n"
  },
  {
    "path": "uninstall/app-pinta.sh",
    "content": "#!/bin/bash\n\nflatpak uninstall -y flathub com.github.PintaProject.Pinta\n"
  },
  {
    "path": "uninstall/app-retroarch.sh",
    "content": "#!/bin/bash\n\nflatpak uninstall -y flathub org.libretro.RetroArch\n"
  },
  {
    "path": "uninstall/app-rubymine.sh",
    "content": "#!/bin/bash\n\nsudo snap remove rubymine\n"
  },
  {
    "path": "uninstall/app-signal.sh",
    "content": "#!/bin/bash\n\nsudo apt remove --purge -y signal-desktop\n"
  },
  {
    "path": "uninstall/app-spotify.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y spotify-client\n"
  },
  {
    "path": "uninstall/app-steam.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y steam steam-launcher\n"
  },
  {
    "path": "uninstall/app-tailscale.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y tailscale\n"
  },
  {
    "path": "uninstall/app-typora.sh",
    "content": "#!/bin/bash\n\nsudo apt remove typora -y\nrm -rf ~/.config/Typora\n"
  },
  {
    "path": "uninstall/app-virtualbox.sh",
    "content": "#!/bin/bash\n\nsudo apt purge -y virtualbox virtualbox-dkms virtualbox-qt virtualbox-ext-pack\nsudo apt autoremove --purge -y\nrm -rf ~/.config/VirtualBox\n"
  },
  {
    "path": "uninstall/app-vlc.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y vlc\n"
  },
  {
    "path": "uninstall/app-vscode.sh",
    "content": "#!/bin/bash\n\nsudo apt purge -y remove code\nrm -rf ~/.config/Code/User\n"
  },
  {
    "path": "uninstall/app-windsurf.sh",
    "content": "#!/bin/bash\n\nsudo apt purge -y windsurf\nsudo rm /etc/apt/sources.list.d/windsurf.list\nsudo rm /usr/share/keyrings/windsurf-stable-archive-keyring.gpg\n"
  },
  {
    "path": "uninstall/app-xournalpp.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y xournalpp\n"
  },
  {
    "path": "uninstall/app-zed.sh",
    "content": "#!/bin/bash\n\nrm -rf ~/.local/zed.app\nrm -rf ~/.local/bin/zed\nrm -rf ~/.local/share/applications/dev.zed.Zed.desktop\nrm -rf ~/.config/zed\n"
  },
  {
    "path": "uninstall/app-zoom.sh",
    "content": "#!/bin/bash\n\nsudo apt remove -y zoom\n"
  },
  {
    "path": "uninstall/apps-web.sh",
    "content": "#!/bin/bash\n\nrm ~/.local/share/applications/WhatsApp.desktop\nrm ~/.local/share/applications/Basecamp.desktop\nrm ~/.local/share/applications/HEY.desktop\n"
  },
  {
    "path": "uninstall/dev-language.sh",
    "content": "#!/bin/bash\n\n# Uninstall default programming languages\nif [[ -v OMAKUB_FIRST_RUN_LANGUAGES ]]; then\n  languages=$OMAKUB_FIRST_RUN_LANGUAGES\nelse\n  AVAILABLE_LANGUAGES=(\"Ruby on Rails\" \"Node.js\" \"Go\" \"PHP\" \"Python\" \"Elixir\" \"Rust\" \"Java\")\n  languages=$(gum choose \"${AVAILABLE_LANGUAGES[@]}\" --no-limit --height 10 --header \"Select programming languages to uninstall\")\nfi\n\nif [[ -n $languages ]]; then\n  for language in $languages; do\n    case $language in\n    Ruby)\n      mise uninstall ruby@3.4\n      mise x ruby -- gem uninstall rails\n      ;;\n    Node.js)\n      mise uninstall node@lts\n      ;;\n    Go)\n      mise uninstall go@latest\n      ;;\n    PHP)\n      sudo apt -y purge php php-{curl,apcu,intl,mbstring,opcache,pgsql,mysql,sqlite3,redis,xml,zip}\n      sudo apt -y autoremove\n      sudo rm /usr/local/bin/composer\n      ;;\n    Python)\n      mise uninstall python@latest\n      ;;\n    Elixir)\n      mise uninstall elixir@latest\n      mise uninstall erlang@latest\n      ;;\n    Rust)\n      rustup self uninstall -y\n      ;;\n    Java)\n      mise uninstall java@latest\n      ;;\n    esac\n  done\nfi\n"
  },
  {
    "path": "uninstall/docker.sh",
    "content": "#!/bin/bash\n\nsudo apt purge --auto-remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras\nsudo groupdel docker\n"
  },
  {
    "path": "uninstall/select-web-apps.sh",
    "content": "#!/bin/bash\n\nsource $OMAKUB_PATH/defaults/bash/functions\n\nAVAILABLE_WEB_APPS=(\"Chat GPT\" \"Google Photos\" \"Google Contacts\" \"Tailscale\")\napps=$(gum choose \"${AVAILABLE_WEB_APPS[@]}\" --no-limit --height 6 --header \"Select web apps to uninstall\")\n\nif [[ -n \"$apps\" ]]; then\n  IFS=$'\\n'\n  for app in $apps; do\n    case $app in\n    \"Chat GPT\")\n      web2app-remove 'Chat GPT'\n      app2folder-remove 'Chat GPT.desktop' WebApps\n      ;;\n    \"Google Photos\")\n      web2app-remove 'Google Photos'\n      app2folder-remove 'Google Photos.desktop' WebApps\n      ;;\n    \"Google Contacts\")\n      web2app-remove 'Google Contacts'\n      app2folder-remove 'Google Contacts.desktop' WebApps\n      ;;\n    \"Tailscale\")\n      web2app-remove 'Tailscale'\n      app2folder-remove 'Tailscale.desktop' WebApps\n      ;;\n    esac\n  done\nfi\n"
  },
  {
    "path": "version",
    "content": "1.5.0\n"
  }
]