automate/020_neovide.sh

138 lines
4.9 KiB
Bash

#!/usr/bin/env bash
DEST=${1-/etc/skel}
NEOVIDE_HOME=${DEST}/.config/neovide
NEOVIDE_CONFIG=${NEOVIDE_HOME}/config.toml
NVIM_HOME="${DEST}/.config/nvim"
NVIM_PLUGINS_HOME=${NVIM_HOME}/lua/plugins
mkdir -p "${NEOVIDE_HOME}"
sudo apt update --qq
sudo apt install -y curl \
gnupg ca-certificates git \
gcc-multilib g++-multilib cmake libssl-dev pkg-config \
libfreetype6-dev libasound2-dev libexpat1-dev libxcb-composite0-dev \
libbz2-dev libsndio-dev freeglut3-dev libxmu-dev libxi-dev libfontconfig1-dev \
libxcursor-dev
printf "Using cargo to fetch, build and install, it's a rust thing."
cargo install --git https://github.com/neovide/neovide
conf_print_neovide_conf() {
cat <<'EOF'
backtraces-path = "${HOME}/.local/share/neovide/neovide_backtraces.log" # see below for the default platform specific location
chdir = "/path/to/dir"
fork = false
frame = "full"
# grid = "420x240" # mutually exclusive with `size` and `maximized`
# size = "1200x800" # mutually exclusive with `grid` and `maximized`
idle = true
icon = "${HOME}/.local/share/nvim/lazy/neovide/assets/neovide.ico"
maximized = false
mouse-cursor-icon = "arrow" # "i-beam"
neovim-bin = "/usr/bin/nvim" # in reality found dynamically on $PATH if unset
no-multigrid = false
opengl = false # macOS/Windows only
# server = "/tmp/nvim.sock" # or "127.0.0.1:7777"
srgb = false # platform-specific: false (Linux/macOS) or true (Windows)
tabs = true
title-hidden = false
vsync = true
# wayland-app-id = "neovide"
wsl = false
# x11-wm-class = "neovide"
# x11-wm-class-instance = "neovide"
[font]
normal = [] # Will use the bundled Fira Code Nerd Font by default
size = 14.0
[box-drawing]
# "font-glyph", "native" or "selected-native"
mode = "font-glyph"
[box-drawing.sizes]
default = [2, 4] # Thin and thick values respectively, for all sizes
EOF
}
conf_print_neovide_conf | tee "${NEOVIDE_CONFIG}/neovide_config.toml"
## Font scaling t o match normal font size in neovide
# vim.g.neovide_scale_factor controls the font scaling dynamically.
# vim.g.neovide_increment_scale_factor sets the step size for scaling (e.g., 0.1 = 10% change per keypress).
# vim.g.neovide_min_scale_factor and vim.g.neovide_max_scale_factor prevent extreme scaling.
# Keymaps allow real-time adjustment using Ctrl+=, Ctrl+-, and Ctrl+0.
conf_print_neovide_lua() {
cat <<EOF
-- lua/plugins/neovide_scaling.lua
return {
"neovide/neovide", -- Required: any valid plugin name (even if not used)
config = function()
vim.g.neovide_scale_factor = 0.5
vim.g.neovide_min_scale_factor = 0.7
vim.g.neovide_max_scale_factor = 2.0
vim.g.neovide_increment_scale_factor = 0.1
local function change_scale_factor(increment)
local new_scale = vim.g.neovide_scale_factor + increment
vim.g.neovide_scale_factor = math.max(
vim.g.neovide_min_scale_factor,
math.min(vim.g.neovide_max_scale_factor, new_scale)
)
end
vim.keymap.set("n", "<C-=>", function() change_scale_factor(0.1) end, { desc = "Increase scale" })
vim.keymap.set("n", "<C-->", function() change_scale_factor(-0.1) end, { desc = "Decrease scale" })
vim.keymap.set("n", "<C-0>", function() vim.g.neovide_scale_factor = 1.0 end, { desc = "Reset scale" })
-- Ctrl+Scrollwheel font size up/down like Nvy or VSCode.
vim.keymap.set({ "n", "v" }, "<C-ScrollWheelUp>", ":lua vim.g.neovide_scale_factor = vim.g.neovide_scale_factor + 0.1<CR>")
vim.keymap.set({ "n", "v" }, "<C-ScrollWheelDown>", ":lua vim.g.neovide_scale_factor = vim.g.neovide_scale_factor - 0.1<CR>")
end,
}
EOF
}
conf_print_neovide_lua | tee "${NVIM_PLUGINS_HOME}/neovide_scaling.lua"
conf_print_zsh_shell_wrapper() {
cat <<EOF
function n() {
command neovide --mouse-cursor-icon i-beam
}
EOF
}
conf_print_zsh_shell_wrapper | tee "${DEST}/.zsh_aliases.d/010_neovide.zsh"
# Install desktop file
# install -m644 "${DEST}/.local/share/nvim/lazy/neovide/assets/neovide.desktop" ~/.local/share/applications/neovide.desktop
conf_print_neovide_desktop() {
cat <<EOF
[Desktop Entry]
Type=Application
Exec=sh -c 'exec ${HOME}/.cargo/bin/neovide %F'
Icon=${HOME}/.local/share/icons/hicolor/scalable/apps/neovide.png
Name=Neovide
Keywords=Text;Editor;
Categories=Utility;TextEditor;
Comment=No Nonsense Neovim Client in Rust
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
StartupNotify=true
StartupWMClass=neovide
EOF
}
conf_print_neovide_desktop | tee "${DEST}/.local/share/applications/neovide.desktop"
update-desktop-database ~/.local/share/applications
xfce4-panel --add=launcher "${DEST}/.local/share/applications/neovide.desktop"
# Add an icon
mkdir -p ~/.local/share/icons/hicolor/scalable/apps/
cp "${DEST}/.local/share/nvim/lazy/neovide/assets/neovide-256x256.png" \
"${DEST}/.local/share/icons/hicolor/scalable/apps/neovide.png"
gtk-update-icon-cache "${DEST}/.local/share/icons/hicolor/"