diff --git a/applications/About.sh b/applications/About.sh index 4995709..4ae8a88 100644 --- a/applications/About.sh +++ b/applications/About.sh @@ -3,7 +3,7 @@ cat <~/.local/share/applications/About.desktop Version=1.0 Name=About Comment=System information from Fastfetch -Exec=alacritty --config-file /home/$USER/.local/share/omakub/defaults/alacritty/pane.toml --class=About --title=About -e bash -c 'fastfetch; read -n 1 -s' +Exec=alacritty --config-file /home/$USER/.config/alacritty/pane.toml --class=About --title=About -e bash -c 'fastfetch; read -n 1 -s' Terminal=false Type=Application Icon=/home/$USER/.local/share/omakub/applications/icons/Ubuntu.png diff --git a/applications/Activity.sh b/applications/Activity.sh index b4300bd..0d49023 100644 --- a/applications/Activity.sh +++ b/applications/Activity.sh @@ -3,7 +3,7 @@ cat <~/.local/share/applications/Activity.desktop Version=1.0 Name=Activity Comment=System activity from btop -Exec=alacritty --config-file /home/$USER/.local/share/omakub/defaults/alacritty/btop.toml --class=Activity --title=Activity -e btop +Exec=alacritty --config-file /home/$USER/.config/alacritty/btop.toml --class=Activity --title=Activity -e btop Terminal=false Type=Application Icon=/home/$USER/.local/share/omakub/applications/icons/Activity.png diff --git a/applications/Docker.sh b/applications/Docker.sh index 90d4e52..6038b66 100644 --- a/applications/Docker.sh +++ b/applications/Docker.sh @@ -3,7 +3,7 @@ cat <~/.local/share/applications/Docker.desktop Version=1.0 Name=Docker Comment=Manage Docker containers with LazyDocker -Exec=alacritty --config-file /home/$USER/.local/share/omakub/defaults/alacritty/pane.toml --class=Docker --title=Docker -e lazydocker +Exec=alacritty --config-file /home/$USER/.config/alacritty/pane.toml --class=Docker --title=Docker -e lazydocker Terminal=false Type=Application Icon=/home/$USER/.local/share/omakub/applications/icons/Docker.png diff --git a/applications/Neovim.sh b/applications/Neovim.sh index 9989020..ad98faf 100644 --- a/applications/Neovim.sh +++ b/applications/Neovim.sh @@ -3,7 +3,7 @@ cat <~/.local/share/applications/Neovim.desktop Version=1.0 Name=Neovim Comment=Edit text files -Exec=alacritty --config-file /home/$USER/.local/share/omakub/defaults/alacritty/pane.toml --class=Neovim --title=Neovim -e nvim %F +Exec=alacritty --config-file /home/$USER/.config/alacritty/pane.toml --class=Neovim --title=Neovim -e nvim %F Terminal=false Type=Application Icon=nvim diff --git a/applications/Omakub.sh b/applications/Omakub.sh index 4ebe048..11c7449 100644 --- a/applications/Omakub.sh +++ b/applications/Omakub.sh @@ -3,7 +3,7 @@ cat <~/.local/share/applications/Omakub.desktop Version=1.0 Name=Omakub Comment=Omakub Controls -Exec=alacritty --config-file /home/$USER/.local/share/omakub/defaults/alacritty/pane.toml --class=Omakub --title=Omakub -e omakub +Exec=alacritty --config-file /home/$USER/.config/alacritty/pane.toml --class=Omakub --title=Omakub -e omakub Terminal=false Type=Application Icon=/home/$USER/.local/share/omakub/applications/icons/Omakub.png diff --git a/applications/icons/Retroarch.png b/applications/icons/Retroarch.png new file mode 100644 index 0000000..07b4220 Binary files /dev/null and b/applications/icons/Retroarch.png differ diff --git a/bin/omakub b/bin/omakub index 41e4745..4f0a433 100755 --- a/bin/omakub +++ b/bin/omakub @@ -1,7 +1,4 @@ #!/bin/bash -source $OMAKUB_PATH/ascii.sh -echo "" # Add spacing -echo " $(cat $OMAKUB_PATH/version)" -echo "" # Add spacing +source $OMAKUB_PATH/bin/omakub-sub/header.sh source $OMAKUB_PATH/bin/omakub-sub/menu.sh diff --git a/bin/omakub-sub/header.sh b/bin/omakub-sub/header.sh new file mode 100644 index 0000000..74f7937 --- /dev/null +++ b/bin/omakub-sub/header.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +source $OMAKUB_PATH/ascii.sh +echo "" # Add spacing +echo " $(cat $OMAKUB_PATH/version)" +echo "" # Add spacing diff --git a/bin/omakub-sub/install-dev-editor.sh b/bin/omakub-sub/install-dev-editor.sh new file mode 100644 index 0000000..fec28ca --- /dev/null +++ b/bin/omakub-sub/install-dev-editor.sh @@ -0,0 +1,24 @@ +CHOICES=( + "Cursor AI Code Editor" + "Doom Emacs Emacs framework with curated list of packages" + "RubyMine IntelliJ's commercial Ruby editor" + "Windsurf Another AI Code Editor" + "Zed Fast all-purpose editor" + "<< Back " +) + +CHOICE=$(gum choose "${CHOICES[@]}" --height 8 --header "Install editor") + +if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then + # Don't install anything + echo "" +else + INSTALLER=$(echo "$CHOICE" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') + INSTALLER_FILE="$OMAKUB_PATH/install/desktop/optional/app-$INSTALLER.sh" + + source $INSTALLER_FILE && gum spin --spinner globe --title "Install completed!" -- sleep 3 +fi + +clear +source $OMAKUB_PATH/bin/omakub-sub/header.sh +source $OMAKUB_PATH/bin/omakub-sub/install.sh diff --git a/bin/omakub-sub/install.sh b/bin/omakub-sub/install.sh index 3ddc16d..15ef5ff 100644 --- a/bin/omakub-sub/install.sh +++ b/bin/omakub-sub/install.sh @@ -1,27 +1,25 @@ CHOICES=( + "Dev Editor Install alternative programming editors" "Dev Language Install programming language environment" "Dev Database Install development database in Docker" "1password Manage your passwords securely across devices" "Audacity Record and edit audio" - "ASDControl Set brightness on Apple Studio and XDR displays via cli" + "ASDControl Set brightness on Apple Studio and XDR displays" "Brave Chrome-based browser with built-in ad blocking" - "Cursor The AI Code Editor" - "Doom Emacs Emacs framework with curated list of packages" "Dropbox Sync files across computers with ease" "Mainline Kernels Install newer Linux kernels than Ubuntu defaults" "OBS Studio Record screencasts with inputs from both display + webcam" "Ollama Run LLMs, like Meta's Llama3, locally" - "RubyMine IntelliJ's commercial Ruby editor" + "Retroarch Play retro games [Incompatible w/ 25.04]" "Spotify Stream music from the world's most popular service" "Steam Play games from Valve's store" "VirtualBox Virtual machines to run Windows/Linux" - "Zed Fast all-purpose editor" "Zoom Attend and host video chat meetings" "> All Re-run any of the default installers" "<< Back " ) -CHOICE=$(gum choose "${CHOICES[@]}" --height 22 --header "Install application") +CHOICE=$(gum choose "${CHOICES[@]}" --height 20 --header "Install application") if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then # Don't install anything @@ -37,6 +35,7 @@ else INSTALLER=$(echo "$CHOICE" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') case "$INSTALLER" in + "dev-editor") INSTALLER_FILE="$OMAKUB_PATH/bin/omakub-sub/install-dev-editor.sh" ;; "dev-language") INSTALLER_FILE="$OMAKUB_PATH/install/terminal/select-dev-language.sh" ;; "dev-database") INSTALLER_FILE="$OMAKUB_PATH/install/terminal/select-dev-storage.sh" ;; "ollama") INSTALLER_FILE="$OMAKUB_PATH/install/terminal/optional/app-ollama.sh" ;; diff --git a/configs/alacritty.toml b/configs/alacritty.toml index 26fecf3..1a3b93b 100644 --- a/configs/alacritty.toml +++ b/configs/alacritty.toml @@ -1 +1 @@ -import = [ "~/.config/alacritty/theme.toml", "~/.config/alacritty/font.toml", "~/.config/alacritty/font-size.toml", "~/.local/share/omakub/defaults/alacritty.toml" ] +import = [ "~/.config/alacritty/theme.toml", "~/.config/alacritty/font.toml", "~/.config/alacritty/font-size.toml", "~/.config/alacritty/shared.toml" ] diff --git a/defaults/alacritty/btop.toml b/configs/alacritty/btop.toml similarity index 61% rename from defaults/alacritty/btop.toml rename to configs/alacritty/btop.toml index 0170ebd..22d3e3f 100644 --- a/defaults/alacritty/btop.toml +++ b/configs/alacritty/btop.toml @@ -1,4 +1,5 @@ -import = [ "~/.local/share/omakub/defaults/alacritty/pane.toml" ] +# Used by the Activity.desktop app +import = [ "~/.config/alacritty/pane.toml" ] [window] dimensions.columns = 121 @@ -8,4 +9,3 @@ dimensions.lines = 40 [colors.primary] foreground = '#ffffff' background = '#000000' - diff --git a/configs/alacritty/pane.toml b/configs/alacritty/pane.toml new file mode 100644 index 0000000..ff391bd --- /dev/null +++ b/configs/alacritty/pane.toml @@ -0,0 +1,6 @@ +# Used by the About.desktop, Activity.desktop, Docker.desktop, Omakub.desktop, and Neovim.desktop apps +import = [ "~/.config/alacritty/theme.toml", "~/.config/alacritty/font.toml", "~/.config/alacritty/font-size.toml", "~/.config/alacritty/shared.toml" ] + +[window] +padding.x = 30 +padding.y = 30 diff --git a/defaults/alacritty.toml b/configs/alacritty/shared.toml similarity index 100% rename from defaults/alacritty.toml rename to configs/alacritty/shared.toml diff --git a/configs/neovim/snacks-animated-scrolling-off.lua b/configs/neovim/snacks-animated-scrolling-off.lua new file mode 100644 index 0000000..cbb0a58 --- /dev/null +++ b/configs/neovim/snacks-animated-scrolling-off.lua @@ -0,0 +1,8 @@ +return { + "folke/snacks.nvim", + opts = { + scroll = { + enabled = false, -- Disable scrolling animations + }, + }, +} diff --git a/configs/zellij.kdl b/configs/zellij.kdl index 8c761c0..7247b89 100644 --- a/configs/zellij.kdl +++ b/configs/zellij.kdl @@ -1,3 +1,214 @@ theme "tokyo-night" default_layout "compact" on_force_close "quit" + +default_mode "locked" +keybinds clear-defaults=true { + locked { + bind "Ctrl g" { SwitchToMode "normal"; } + } + pane { + bind "left" { MoveFocus "left"; } + bind "down" { MoveFocus "down"; } + bind "up" { MoveFocus "up"; } + bind "right" { MoveFocus "right"; } + bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; } + bind "d" { NewPane "down"; SwitchToMode "locked"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "locked"; } + bind "f" { ToggleFocusFullscreen; SwitchToMode "locked"; } + bind "h" { MoveFocus "left"; } + bind "j" { MoveFocus "down"; } + bind "k" { MoveFocus "up"; } + bind "l" { MoveFocus "right"; } + bind "n" { NewPane; SwitchToMode "locked"; } + bind "p" { SwitchToMode "normal"; } + bind "r" { NewPane "right"; SwitchToMode "locked"; } + bind "w" { ToggleFloatingPanes; SwitchToMode "locked"; } + bind "x" { CloseFocus; SwitchToMode "locked"; } + bind "z" { TogglePaneFrames; SwitchToMode "locked"; } + bind "tab" { SwitchFocus; } + } + tab { + bind "left" { GoToPreviousTab; } + bind "down" { GoToNextTab; } + bind "up" { GoToPreviousTab; } + bind "right" { GoToNextTab; } + bind "1" { GoToTab 1; SwitchToMode "locked"; } + bind "2" { GoToTab 2; SwitchToMode "locked"; } + bind "3" { GoToTab 3; SwitchToMode "locked"; } + bind "4" { GoToTab 4; SwitchToMode "locked"; } + bind "5" { GoToTab 5; SwitchToMode "locked"; } + bind "6" { GoToTab 6; SwitchToMode "locked"; } + bind "7" { GoToTab 7; SwitchToMode "locked"; } + bind "8" { GoToTab 8; SwitchToMode "locked"; } + bind "9" { GoToTab 9; SwitchToMode "locked"; } + bind "[" { BreakPaneLeft; SwitchToMode "locked"; } + bind "]" { BreakPaneRight; SwitchToMode "locked"; } + bind "b" { BreakPane; SwitchToMode "locked"; } + bind "h" { GoToPreviousTab; } + bind "j" { GoToNextTab; } + bind "k" { GoToPreviousTab; } + bind "l" { GoToNextTab; } + bind "n" { NewTab; SwitchToMode "locked"; } + bind "r" { SwitchToMode "renametab"; TabNameInput 0; } + bind "s" { ToggleActiveSyncTab; SwitchToMode "locked"; } + bind "t" { SwitchToMode "normal"; } + bind "x" { CloseTab; SwitchToMode "locked"; } + bind "tab" { ToggleTab; } + } + resize { + bind "left" { Resize "Increase left"; } + bind "down" { Resize "Increase down"; } + bind "up" { Resize "Increase up"; } + bind "right" { Resize "Increase right"; } + bind "+" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + bind "=" { Resize "Increase"; } + bind "H" { Resize "Decrease left"; } + bind "J" { Resize "Decrease down"; } + bind "K" { Resize "Decrease up"; } + bind "L" { Resize "Decrease right"; } + bind "h" { Resize "Increase left"; } + bind "j" { Resize "Increase down"; } + bind "k" { Resize "Increase up"; } + bind "l" { Resize "Increase right"; } + bind "r" { SwitchToMode "normal"; } + } + move { + bind "left" { MovePane "left"; } + bind "down" { MovePane "down"; } + bind "up" { MovePane "up"; } + bind "right" { MovePane "right"; } + bind "h" { MovePane "left"; } + bind "j" { MovePane "down"; } + bind "k" { MovePane "up"; } + bind "l" { MovePane "right"; } + bind "m" { SwitchToMode "normal"; } + bind "n" { MovePane; } + bind "p" { MovePaneBackwards; } + bind "tab" { MovePane; } + } + scroll { + bind "Alt left" { MoveFocusOrTab "left"; SwitchToMode "locked"; } + bind "Alt down" { MoveFocus "down"; SwitchToMode "locked"; } + bind "Alt up" { MoveFocus "up"; SwitchToMode "locked"; } + bind "Alt right" { MoveFocusOrTab "right"; SwitchToMode "locked"; } + bind "e" { EditScrollback; SwitchToMode "locked"; } + bind "f" { SwitchToMode "entersearch"; SearchInput 0; } + bind "Alt h" { MoveFocusOrTab "left"; SwitchToMode "locked"; } + bind "Alt j" { MoveFocus "down"; SwitchToMode "locked"; } + bind "Alt k" { MoveFocus "up"; SwitchToMode "locked"; } + bind "Alt l" { MoveFocusOrTab "right"; SwitchToMode "locked"; } + bind "s" { SwitchToMode "normal"; } + } + search { + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "n" { Search "down"; } + bind "o" { SearchToggleOption "WholeWord"; } + bind "p" { Search "up"; } + bind "w" { SearchToggleOption "Wrap"; } + } + session { + bind "c" { + LaunchOrFocusPlugin "configuration" { + floating true + move_to_focused_tab true + } + SwitchToMode "locked" + } + bind "d" { Detach; } + bind "o" { SwitchToMode "normal"; } + bind "p" { + LaunchOrFocusPlugin "plugin-manager" { + floating true + move_to_focused_tab true + } + SwitchToMode "locked" + } + bind "w" { + LaunchOrFocusPlugin "session-manager" { + floating true + move_to_focused_tab true + } + SwitchToMode "locked" + } + } + shared_among "normal" "locked" { + bind "Alt left" { MoveFocusOrTab "left"; } + bind "Alt down" { MoveFocus "down"; } + bind "Alt up" { MoveFocus "up"; } + bind "Alt right" { MoveFocusOrTab "right"; } + bind "Alt +" { Resize "Increase"; } + bind "Alt -" { Resize "Decrease"; } + bind "Alt =" { Resize "Increase"; } + bind "Alt [" { PreviousSwapLayout; } + bind "Alt ]" { NextSwapLayout; } + bind "Alt f" { ToggleFloatingPanes; } + bind "Alt h" { MoveFocusOrTab "left"; } + bind "Alt i" { MoveTab "left"; } + bind "Alt j" { MoveFocus "down"; } + bind "Alt k" { MoveFocus "up"; } + bind "Alt l" { MoveFocusOrTab "right"; } + bind "Alt n" { NewPane; } + bind "Alt o" { MoveTab "right"; } + } + shared_except "locked" "renametab" "renamepane" { + bind "Ctrl g" { SwitchToMode "locked"; } + bind "Ctrl q" { Quit; } + } + shared_except "locked" "entersearch" { + bind "enter" { SwitchToMode "locked"; } + } + shared_except "locked" "entersearch" "renametab" "renamepane" { + bind "esc" { SwitchToMode "locked"; } + } + shared_except "locked" "entersearch" "renametab" "renamepane" "move" { + bind "m" { SwitchToMode "move"; } + } + shared_except "locked" "entersearch" "search" "renametab" "renamepane" "session" { + bind "o" { SwitchToMode "session"; } + } + shared_except "locked" "tab" "entersearch" "renametab" "renamepane" { + bind "t" { SwitchToMode "tab"; } + } + shared_except "locked" "tab" "scroll" "entersearch" "renametab" "renamepane" { + bind "s" { SwitchToMode "scroll"; } + } + shared_among "normal" "resize" "tab" "scroll" "prompt" "tmux" { + bind "p" { SwitchToMode "pane"; } + } + shared_except "locked" "resize" "pane" "tab" "entersearch" "renametab" "renamepane" { + bind "r" { SwitchToMode "resize"; } + } + shared_among "scroll" "search" { + bind "PageDown" { PageScrollDown; } + bind "PageUp" { PageScrollUp; } + bind "left" { PageScrollUp; } + bind "down" { ScrollDown; } + bind "up" { ScrollUp; } + bind "right" { PageScrollDown; } + bind "Ctrl b" { PageScrollUp; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "locked"; } + bind "d" { HalfPageScrollDown; } + bind "Ctrl f" { PageScrollDown; } + bind "h" { PageScrollUp; } + bind "j" { ScrollDown; } + bind "k" { ScrollUp; } + bind "l" { PageScrollDown; } + bind "u" { HalfPageScrollUp; } + } + entersearch { + bind "Ctrl c" { SwitchToMode "scroll"; } + bind "esc" { SwitchToMode "scroll"; } + bind "enter" { SwitchToMode "search"; } + } + renametab { + bind "esc" { UndoRenameTab; SwitchToMode "tab"; } + } + shared_among "renametab" "renamepane" { + bind "Ctrl c" { SwitchToMode "locked"; } + } + renamepane { + bind "esc" { UndoRenamePane; SwitchToMode "pane"; } + } +} diff --git a/defaults/alacritty/omakub.toml b/defaults/alacritty/omakub.toml deleted file mode 100644 index cf5c485..0000000 --- a/defaults/alacritty/omakub.toml +++ /dev/null @@ -1,5 +0,0 @@ -import = [ "~/.local/share/omakub/defaults/alacritty/pane.toml" ] - -[window] -dimensions.columns = 90 -dimensions.lines = 30 diff --git a/defaults/alacritty/pane.toml b/defaults/alacritty/pane.toml deleted file mode 100644 index fa68811..0000000 --- a/defaults/alacritty/pane.toml +++ /dev/null @@ -1,5 +0,0 @@ -import = [ "~/.config/alacritty/theme.toml", "~/.config/alacritty/font.toml", "~/.config/alacritty/font-size.toml", "~/.local/share/omakub/defaults/alacritty.toml" ] - -[window] -padding.x = 30 -padding.y = 30 diff --git a/defaults/bash/aliases b/defaults/bash/aliases index 0a95107..dc313fd 100644 --- a/defaults/bash/aliases +++ b/defaults/bash/aliases @@ -36,3 +36,9 @@ webm2mp4() { output_file="${input_file%.webm}.mp4" ffmpeg -i "$input_file" -c:v libx264 -preset slow -crf 22 -c:a aac -b:a 192k "$output_file" } + +# Ensure that external keyboards that use an fn key has the F keys as the default +alias fix_fkeys='echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode' + +# Spotify window is too large on many displays, so fix this by zooming it down +alias fix_spotify_window_size="sudo sed -i 's|^Exec=.*|Exec=spotify --force-device-scale-factor=1.5 %U|' /usr/local/share/applications/spotify.desktop" diff --git a/defaults/bash/init b/defaults/bash/init index 25fb3ff..8f4d84c 100644 --- a/defaults/bash/init +++ b/defaults/bash/init @@ -7,6 +7,10 @@ if command -v zoxide &> /dev/null; then fi if command -v fzf &> /dev/null; then - source /usr/share/bash-completion/completions/fzf - source /usr/share/doc/fzf/examples/key-bindings.bash + if [[ -f /usr/share/bash-completion/completions/fzf ]]; then + source /usr/share/bash-completion/completions/fzf + fi + if [[ -f /usr/share/doc/fzf/examples/key-bindings.bash ]]; then + source /usr/share/doc/fzf/examples/key-bindings.bash + fi fi diff --git a/defaults/xcompose b/defaults/xcompose index 116d75d..a45c5be 100644 --- a/defaults/xcompose +++ b/defaults/xcompose @@ -1,5 +1,6 @@ include "%L" +# Emoji : "😄" # smile : "😂" # cry : "😍" # love @@ -23,3 +24,6 @@ include "%L" : "👋" # greeting : "💪" # arm : "🤯" # blowing + +# Typography + : "—" diff --git a/install/check-version.sh b/install/check-version.sh index 304c538..34780fa 100644 --- a/install/check-version.sh +++ b/install/check-version.sh @@ -16,3 +16,13 @@ if [ "$ID" != "ubuntu" ] || [ $(echo "$VERSION_ID >= 24.04" | bc) != 1 ]; then echo "Installation stopped." exit 1 fi + +# Check if running on x86 +ARCH=$(uname -m) +if [ "$ARCH" != "x86_64" ] && [ "$ARCH" != "i686" ]; then + echo "$(tput setaf 1)Error: Unsupported architecture detected" + echo "Current architecture: $ARCH" + echo "This installation is only supported on x86 architectures (x86_64 or i686)." + echo "Installation stopped." + exit 1 +fi diff --git a/install/desktop/app-alacritty.sh b/install/desktop/app-alacritty.sh index c6e3a31..4dab70a 100644 --- a/install/desktop/app-alacritty.sh +++ b/install/desktop/app-alacritty.sh @@ -2,78 +2,16 @@ sudo apt install -y alacritty mkdir -p ~/.config/alacritty cp ~/.local/share/omakub/configs/alacritty.toml ~/.config/alacritty/alacritty.toml +cp ~/.local/share/omakub/configs/alacritty/shared.toml ~/.config/alacritty/shared.toml +cp ~/.local/share/omakub/configs/alacritty/pane.toml ~/.config/alacritty/pane.toml +cp ~/.local/share/omakub/configs/alacritty/btop.toml ~/.config/alacritty/btop.toml cp ~/.local/share/omakub/themes/tokyo-night/alacritty.toml ~/.config/alacritty/theme.toml cp ~/.local/share/omakub/configs/alacritty/fonts/CaskaydiaMono.toml ~/.config/alacritty/font.toml cp ~/.local/share/omakub/configs/alacritty/font-size.toml ~/.config/alacritty/font-size.toml -# Make alacritty default terminal emulator -sudo update-alternatives --set x-terminal-emulator /usr/bin/alacritty +# Migrate config format if needed +alacritty migrate 2>/dev/null || true +alacritty migrate -c ~/.config/alacritty/pane.toml 2>/dev/null || true +alacritty migrate -c ~/.config/alacritty/btop.toml 2>/dev/null || true -# Adding alacritty to nautilus contextual menu requires the python wrapper for the libraries -sudo apt install -y python3-nautilus -mkdir -p ~/.local/share/nautilus-python/extensions/ - -cat > ~/.local/share/nautilus-python/extensions/open-alacritty.py < None: - filename = unquote(file.get_uri()[7:]) - - os.chdir(filename) - os.system("alacritty") - - def menu_activate_cb( - self, - menu: Nautilus.MenuItem, - file: Nautilus.FileInfo, - ) -> None: - self._open_terminal(file) - - def menu_background_activate_cb( - self, - menu: Nautilus.MenuItem, - file: Nautilus.FileInfo, - ) -> None: - self._open_terminal(file) - - def get_file_items( - self, - files: List[Nautilus.FileInfo], - ) -> List[Nautilus.MenuItem]: - if len(files) != 1: - return [] - - file = files[0] - if not file.is_directory() or file.get_uri_scheme() != "file": - return [] - - item = Nautilus.MenuItem( - name="NautilusPython::openterminal_file_item", - label="Open in Alacritty", - tip="Open Alacritty In %s" % file.get_name(), - ) - item.connect("activate", self.menu_activate_cb, file) - - return [ - item, - ] - - def get_background_items( - self, - current_folder: Nautilus.FileInfo, - ) -> List[Nautilus.MenuItem]: - item = Nautilus.MenuItem( - name="NautilusPython::openterminal_file_item2", - label="Open in Alacritty", - tip="Open Alacritty In %s" % current_folder.get_name(), - ) - item.connect("activate", self.menu_background_activate_cb, current_folder) - - return [ - item, - ] -TECHNICALLYNOTACONFIGSOHEREDOCCEDITIS +source $OMAKUB_PATH/install/desktop/set-alacritty-default.sh diff --git a/install/desktop/optional/app-cursor.sh b/install/desktop/optional/app-cursor.sh index ddab8fe..6321671 100644 --- a/install/desktop/optional/app-cursor.sh +++ b/install/desktop/optional/app-cursor.sh @@ -1,5 +1,5 @@ cd /tmp -curl -L --output cursor.appimage https://downloader.cursor.sh/linux/x64 +curl -L "https://www.cursor.com/api/download?platform=linux-x64&releaseTrack=stable" | jq -r '.downloadUrl' | xargs curl -L -o cursor.appimage sudo mv cursor.appimage /opt/cursor.appimage sudo chmod +x /opt/cursor.appimage sudo apt install -y fuse3 diff --git a/install/terminal/optional/app-mainline-kernels.sh b/install/desktop/optional/app-mainline-kernels.sh similarity index 51% rename from install/terminal/optional/app-mainline-kernels.sh rename to install/desktop/optional/app-mainline-kernels.sh index bb924c9..bc47046 100644 --- a/install/terminal/optional/app-mainline-kernels.sh +++ b/install/desktop/optional/app-mainline-kernels.sh @@ -1,3 +1,3 @@ -sudo add-apt-repository ppa:cappelikan/ppa +sudo add-apt-repository -y ppa:cappelikan/ppa sudo apt update -y sudo apt install -y mainline diff --git a/install/desktop/optional/app-retroarch.sh b/install/desktop/optional/app-retroarch.sh new file mode 100644 index 0000000..abe7743 --- /dev/null +++ b/install/desktop/optional/app-retroarch.sh @@ -0,0 +1,14 @@ +sudo add-apt-repository -y ppa:libretro/stable +sudo apt update -y +sudo apt install -y retroarch retroarch-assets + +cat <~/.local/share/applications/Retroarch.desktop +[Desktop Entry] +Name=RetroArch +Exec=/usr/bin/retroarch +Type=Application +Icon=/home/$USER/.local/share/omakub/applications/icons/Retroarch.png +Comment=Play retro games +Categories=Game;Emulator; +Terminal=false +EOF diff --git a/install/desktop/optional/app-virtualbox.sh b/install/desktop/optional/app-virtualbox.sh index ff4ecfe..3a066fd 100644 --- a/install/desktop/optional/app-virtualbox.sh +++ b/install/desktop/optional/app-virtualbox.sh @@ -1,5 +1,7 @@ # Virtualbox allows you to run VMs for other flavors of Linux or even Windows # See https://ubuntu.com/tutorials/how-to-run-ubuntu-desktop-on-a-virtual-machine-using-virtualbox#1-overview # for a guide on how to run Ubuntu inside it. + +sudo apt update sudo apt install -y virtualbox virtualbox-ext-pack sudo usermod -aG vboxusers ${USER} diff --git a/install/desktop/optional/app-windsurf.sh b/install/desktop/optional/app-windsurf.sh new file mode 100644 index 0000000..54edc54 --- /dev/null +++ b/install/desktop/optional/app-windsurf.sh @@ -0,0 +1,5 @@ +curl -fsSL "https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/windsurf.gpg" | sudo gpg --dearmor -o /usr/share/keyrings/windsurf-stable-archive-keyring.gpg +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 + +sudo apt update -y +sudo apt install -y windsurf diff --git a/install/desktop/set-alacritty-default.sh b/install/desktop/set-alacritty-default.sh new file mode 100644 index 0000000..7169fab --- /dev/null +++ b/install/desktop/set-alacritty-default.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env sh + +# Make alacritty default terminal emulator +sudo update-alternatives --set x-terminal-emulator /usr/bin/alacritty + +# Adding alacritty to nautilus contextual menu requires the python wrapper for the libraries +sudo apt install -y python3-nautilus +mkdir -p ~/.local/share/nautilus-python/extensions/ + +cat > ~/.local/share/nautilus-python/extensions/open-alacritty.py < None: + filename = unquote(file.get_uri()[7:]) + + os.chdir(filename) + os.system("alacritty") + + def menu_activate_cb( + self, + menu: Nautilus.MenuItem, + file: Nautilus.FileInfo, + ) -> None: + self._open_terminal(file) + + def menu_background_activate_cb( + self, + menu: Nautilus.MenuItem, + file: Nautilus.FileInfo, + ) -> None: + self._open_terminal(file) + + def get_file_items( + self, + files: List[Nautilus.FileInfo], + ) -> List[Nautilus.MenuItem]: + if len(files) != 1: + return [] + + file = files[0] + if not file.is_directory() or file.get_uri_scheme() != "file": + return [] + + item = Nautilus.MenuItem( + name="NautilusPython::openterminal_file_item", + label="Open in Alacritty", + tip="Open Alacritty In %s" % file.get_name(), + ) + item.connect("activate", self.menu_activate_cb, file) + + return [ + item, + ] + + def get_background_items( + self, + current_folder: Nautilus.FileInfo, + ) -> List[Nautilus.MenuItem]: + item = Nautilus.MenuItem( + name="NautilusPython::openterminal_file_item2", + label="Open in Alacritty", + tip="Open Alacritty In %s" % current_folder.get_name(), + ) + item.connect("activate", self.menu_background_activate_cb, current_folder) + + return [ + item, + ] +TECHNICALLYNOTACONFIGSOHEREDOCCEDITIS diff --git a/install/desktop/set-gnome-hotkeys.sh b/install/desktop/set-gnome-hotkeys.sh index 50d89c5..c9e9cfd 100644 --- a/install/desktop/set-gnome-hotkeys.sh +++ b/install/desktop/set-gnome-hotkeys.sh @@ -37,7 +37,7 @@ gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-5 "['5 gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-6 "['6']" # Reserve slots for custom keybindings -gsettings 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/']" +gsettings 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/']" # Set ulauncher to Super+Space gsettings set org.gnome.desktop.wm.keybindings switch-input-source "@as []" @@ -69,3 +69,8 @@ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/or gsettings 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)' gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/ binding 'F2' gsettings 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 | sed -n \"s|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p\") -- +5000'" + +# Turn bightness up to max on Apple monitor (requires ADSControl installed) +gsettings 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)' +gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom6/ binding 'F2' +gsettings 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 | sed -n \"s|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p\") -- +60000'" diff --git a/install/desktop/ulauncher.sh b/install/desktop/ulauncher.sh index 6093fb2..a2f2d15 100644 --- a/install/desktop/ulauncher.sh +++ b/install/desktop/ulauncher.sh @@ -1,5 +1,7 @@ -sudo add-apt-repository universe -y -sudo add-apt-repository ppa:agornostal/ulauncher -y +gpg --keyserver keyserver.ubuntu.com --recv 0xfaf1020699503176 +gpg --export 0xfaf1020699503176 | sudo tee /usr/share/keyrings/ulauncher-archive-keyring.gpg >/dev/null +echo "deb [signed-by=/usr/share/keyrings/ulauncher-archive-keyring.gpg] http://ppa.launchpad.net/agornostal/ulauncher/ubuntu noble main" | sudo tee /etc/apt/sources.list.d/ulauncher-noble.list + sudo apt update -y sudo apt install -y ulauncher diff --git a/install/terminal/app-lazygit.sh b/install/terminal/app-lazygit.sh index 70f90fe..88464e5 100644 --- a/install/terminal/app-lazygit.sh +++ b/install/terminal/app-lazygit.sh @@ -4,4 +4,6 @@ curl -sLo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/late tar -xf lazygit.tar.gz lazygit sudo install lazygit /usr/local/bin rm lazygit.tar.gz lazygit +mkdir -p ~/.config/lazygit/ +touch ~/.config/lazygit/config.yml cd - diff --git a/install/terminal/app-neovim.sh b/install/terminal/app-neovim.sh index 569e8f7..b0a28c6 100644 --- a/install/terminal/app-neovim.sh +++ b/install/terminal/app-neovim.sh @@ -23,6 +23,12 @@ if [ ! -d "$HOME/.config/nvim" ]; then # Default to Tokyo Night theme cp ~/.local/share/omakub/themes/tokyo-night/neovim.lua ~/.config/nvim/lua/plugins/theme.lua + + # Turn off animated scrolling + cp ~/.local/share/omakub/configs/neovim/snacks-animated-scrolling-off.lua ~/.config/nvim/lua/plugins/ + + # Turn off relative line numbers + echo "vim.opt.relativenumber = false" >>~/.config/nvim/lua/config/options.lua fi # Replace desktop launcher with one running inside Alacritty diff --git a/migrations/1741193162.sh b/migrations/1741193162.sh new file mode 100644 index 0000000..1f3ee9f --- /dev/null +++ b/migrations/1741193162.sh @@ -0,0 +1,2 @@ +# Turn off animationd scrolling +cp ~/.local/share/omakub/configs/neovim/snacks-animated-scrolling-off.lua ~/.config/nvim/lua/plugins/ diff --git a/migrations/1744854733.sh b/migrations/1744854733.sh new file mode 100644 index 0000000..463be5c --- /dev/null +++ b/migrations/1744854733.sh @@ -0,0 +1,3 @@ +source $OMAKUB_PATH/install/desktop/set-alacritty-default.sh + +nautilus -q diff --git a/migrations/1745060743.sh b/migrations/1745060743.sh new file mode 100644 index 0000000..5c1fded --- /dev/null +++ b/migrations/1745060743.sh @@ -0,0 +1,14 @@ +cp ~/.local/share/omakub/configs/alacritty/shared.toml ~/.config/alacritty/shared.toml +cp ~/.local/share/omakub/configs/alacritty/pane.toml ~/.config/alacritty/pane.toml +cp ~/.local/share/omakub/configs/alacritty/btop.toml ~/.config/alacritty/btop.toml +cp ~/.local/share/omakub/configs/alacritty.toml ~/.config/alacritty/alacritty.toml + +source $OMAKUB_PATH/applications/About.sh +source $OMAKUB_PATH/applications/Activity.sh +source $OMAKUB_PATH/applications/Neovim.sh +source $OMAKUB_PATH/applications/Docker.sh +source $OMAKUB_PATH/applications/Omakub.sh + +alacritty migrate 2>/dev/null || true +alacritty migrate -c ~/.config/alacritty/pane.toml 2>/dev/null || true +alacritty migrate -c ~/.config/alacritty/btop.toml 2>/dev/null || true diff --git a/themes/set-gnome-theme.sh b/themes/set-gnome-theme.sh index 5760ded..e9e863f 100644 --- a/themes/set-gnome-theme.sh +++ b/themes/set-gnome-theme.sh @@ -2,6 +2,7 @@ gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' gsettings set org.gnome.desktop.interface cursor-theme 'Yaru' gsettings set org.gnome.desktop.interface gtk-theme "Yaru-$OMAKUB_THEME_COLOR-dark" gsettings set org.gnome.desktop.interface icon-theme "Yaru-$OMAKUB_THEME_COLOR" +gsettings set org.gnome.desktop.interface accent-color "$OMAKUB_THEME_COLOR" 2>/dev/null BACKGROUND_ORG_PATH="$HOME/.local/share/omakub/themes/$OMAKUB_THEME_BACKGROUND" BACKGROUND_DEST_DIR="$HOME/.local/share/backgrounds" diff --git a/uninstall/app-neovim.sh b/uninstall/app-neovim.sh new file mode 100644 index 0000000..e215525 --- /dev/null +++ b/uninstall/app-neovim.sh @@ -0,0 +1,6 @@ +sudo apt purge -y neovim neovim-runtime +rm ~/.local/share/applications/Neovim.desktop +rm -rf ~/.config/nvim +rm -rf ~/.local/share/nvim +rm -rf ~/.local/state/nvim +rm -rf ~/.cache/nvim diff --git a/uninstall/app-retroarch.sh b/uninstall/app-retroarch.sh new file mode 100644 index 0000000..c94e40c --- /dev/null +++ b/uninstall/app-retroarch.sh @@ -0,0 +1,5 @@ +sudo add-apt-repository -y --remove ppa:libretro/stable +sudo apt update -y +sudo apt remove -y retroarch retroarch-assets +sudo apt autoremove -y +rm ~/.local/share/applications/Retroarch.desktop diff --git a/uninstall/app-virtualbox.sh b/uninstall/app-virtualbox.sh new file mode 100644 index 0000000..3f781f0 --- /dev/null +++ b/uninstall/app-virtualbox.sh @@ -0,0 +1,3 @@ +sudo apt purge -y virtualbox virtualbox-dkms virtualbox-qt virtualbox-ext-pack +sudo apt autoremove --purge -y +rm -rf ~/.config/VirtualBox diff --git a/uninstall/app-windsurf.sh b/uninstall/app-windsurf.sh new file mode 100644 index 0000000..7519f7b --- /dev/null +++ b/uninstall/app-windsurf.sh @@ -0,0 +1,3 @@ +sudo apt purge -y windsurf +sudo rm /etc/apt/sources.list.d/windsurf.list +sudo rm /usr/share/keyrings/windsurf-stable-archive-keyring.gpg diff --git a/version b/version index 18efdb9..26aaba0 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.8 +1.2.0