diff --git a/README.md b/README.md index 0a97dd4..8ad45f1 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ -# Omasway +

+ Omasway Logo +

+ +

Omasway

> ⚠️ **Warning: This project is under active development and is not stable. Use at your own risk.** -This project is designed for minimal Ubuntu installations ([Ubuntu Server 24.04](https://ubuntu.com/download/server) or [Ubuntu from CD](https://wiki.ubuntu-it.org/Installazione/CdMinimale)) to avoid the need to uninstall the entire Ubuntu desktop environment. +This project is designed for minimal Ubuntu installations ([Ubuntu Server 24.04](https://ubuntu.com/download/server) or [Ubuntu Minimal CD](https://help.ubuntu.com/community/Installation/MinimalCD#Status_of_the_Minimal_ISO_image)) to avoid the need to uninstall the entire Ubuntu desktop environment. ## Installation diff --git a/applications/About.sh b/applications/About.sh deleted file mode 100644 index c1267d0..0000000 --- a/applications/About.sh +++ /dev/null @@ -1,12 +0,0 @@ -cat <~/.local/share/applications/About.desktop -[Desktop Entry] -Version=1.0 -Name=About -Comment=System information from Fastfetch -Exec=alacritty --class=About --title=About -e bash -c 'fastfetch; read -n 1 -s' -Terminal=false -Type=Application -Icon=/home/$USER/.local/share/omasway/applications/icons/Ubuntu.png -Categories=GTK; -StartupNotify=false -EOF diff --git a/applications/Activity.sh b/applications/Activity.sh deleted file mode 100644 index 9e1c2f9..0000000 --- a/applications/Activity.sh +++ /dev/null @@ -1,12 +0,0 @@ -cat <~/.local/share/applications/Activity.desktop -[Desktop Entry] -Version=1.0 -Name=Activity -Comment=System activity from btop -Exec=alacritty --class=Activity --title=Activity -e btop -Terminal=false -Type=Application -Icon=/home/$USER/.local/share/omasway/applications/icons/Activity.png -Categories=GTK; -StartupNotify=false -EOF diff --git a/applications/Docker.sh b/applications/Docker.sh deleted file mode 100644 index 3bb9e7a..0000000 --- a/applications/Docker.sh +++ /dev/null @@ -1,12 +0,0 @@ -cat <~/.local/share/applications/Docker.desktop -[Desktop Entry] -Version=1.0 -Name=Docker -Comment=Manage Docker containers with LazyDocker -Exec=alacritty --class=Docker --title=Docker -e lazydocker -Terminal=false -Type=Application -Icon=/home/$USER/.local/share/omasway/applications/icons/Docker.png -Categories=GTK; -StartupNotify=false -EOF diff --git a/applications/Neovim.sh b/applications/Neovim.sh deleted file mode 100644 index c83a46e..0000000 --- a/applications/Neovim.sh +++ /dev/null @@ -1,12 +0,0 @@ -cat <~/.local/share/applications/Neovim.desktop -[Desktop Entry] -Version=1.0 -Name=Neovim -Comment=Edit text files -Exec=alacritty --class=Neovim --title=Neovim -e nvim %F -Terminal=false -Type=Application -Icon=nvim -Categories=Utilities;TextEditor; -StartupNotify=false -EOF diff --git a/applications/Omasway.sh b/applications/Omasway.sh deleted file mode 100644 index 81e533d..0000000 --- a/applications/Omasway.sh +++ /dev/null @@ -1,12 +0,0 @@ -cat <~/.local/share/applications/Omasway.desktop -[Desktop Entry] -Version=1.0 -Name=Omasway -Comment=Omasway Controls -Exec=alacritty --class=Omasway --title=Omasway -e omasway -Terminal=false -Type=Application -Icon=/home/$USER/.local/share/omasway/applications/icons/Omasway.png -Categories=GTK; -StartupNotify=false -EOF diff --git a/applications/desktop/hidden/btop.desktop b/applications/desktop/hidden/btop.desktop new file mode 100644 index 0000000..e1e3e17 --- /dev/null +++ b/applications/desktop/hidden/btop.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true diff --git a/applications/desktop/hidden/fcitx5-configtool.desktop b/applications/desktop/hidden/fcitx5-configtool.desktop new file mode 100644 index 0000000..e1e3e17 --- /dev/null +++ b/applications/desktop/hidden/fcitx5-configtool.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true diff --git a/applications/desktop/hidden/htop.desktop b/applications/desktop/hidden/htop.desktop new file mode 100644 index 0000000..e1e3e17 --- /dev/null +++ b/applications/desktop/hidden/htop.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true diff --git a/applications/desktop/hidden/org.fcitx.Fcitx5.desktop b/applications/desktop/hidden/org.fcitx.Fcitx5.desktop new file mode 100644 index 0000000..e1e3e17 --- /dev/null +++ b/applications/desktop/hidden/org.fcitx.Fcitx5.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true diff --git a/applications/desktop/hidden/org.fcitx.fcitx5-config-qt.desktop b/applications/desktop/hidden/org.fcitx.fcitx5-config-qt.desktop new file mode 100644 index 0000000..e1e3e17 --- /dev/null +++ b/applications/desktop/hidden/org.fcitx.fcitx5-config-qt.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true diff --git a/applications/desktop/hidden/org.fcitx.fcitx5-migrator.desktop b/applications/desktop/hidden/org.fcitx.fcitx5-migrator.desktop new file mode 100644 index 0000000..e1e3e17 --- /dev/null +++ b/applications/desktop/hidden/org.fcitx.fcitx5-migrator.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true diff --git a/applications/desktop/hidden/org.fcitx.fcitx5-qt5-gui-wrapper.desktop b/applications/desktop/hidden/org.fcitx.fcitx5-qt5-gui-wrapper.desktop new file mode 100644 index 0000000..e1e3e17 --- /dev/null +++ b/applications/desktop/hidden/org.fcitx.fcitx5-qt5-gui-wrapper.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true diff --git a/applications/desktop/hidden/org.fcitx.fcitx5-qt6-gui-wrapper.desktop b/applications/desktop/hidden/org.fcitx.fcitx5-qt6-gui-wrapper.desktop new file mode 100644 index 0000000..e1e3e17 --- /dev/null +++ b/applications/desktop/hidden/org.fcitx.fcitx5-qt6-gui-wrapper.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true diff --git a/applications/desktop/hidden/vim.desktop b/applications/desktop/hidden/vim.desktop new file mode 100644 index 0000000..4904a71 --- /dev/null +++ b/applications/desktop/hidden/vim.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true \ No newline at end of file diff --git a/applications/desktop/icons/imv.png b/applications/desktop/icons/imv.png new file mode 100644 index 0000000..f9cac35 Binary files /dev/null and b/applications/desktop/icons/imv.png differ diff --git a/applications/desktop/imv.desktop b/applications/desktop/imv.desktop new file mode 100644 index 0000000..293afc8 --- /dev/null +++ b/applications/desktop/imv.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Image Viewer +Exec=imv %F +Icon=imv +Type=Application +MimeType=image/png;image/jpeg;image/jpg;image/gif;image/bmp;image/webp;image/tiff;image/x-xcf;image/x-portable-pixmap;image/x-xbitmap; +Terminal=false +Categories=Graphics;Viewer; diff --git a/applications/desktop/mpv.desktop b/applications/desktop/mpv.desktop new file mode 100644 index 0000000..776e2c9 --- /dev/null +++ b/applications/desktop/mpv.desktop @@ -0,0 +1,51 @@ +[Desktop Entry] +Type=Application +Name=Media Player +Name[ar]=مشغل وسائط mpv +Name[ca]=Reproductor multimèdia mpv +Name[cs]=mpv přehrávač +Name[da]=mpv-medieafspiller +Name[fr]=Lecteur multimédia mpv +Name[it]=Lettore multimediale mpv +Name[ja]=mpv メディアプレイヤー +Name[pl]=Odtwarzacz mpv +Name[ru]=Проигрыватель mpv +Name[tr]=mpv Ortam Oynatıcı +Name[zh_CN]=mpv 媒体播放器 +Name[zh_TW]=mpv 媒體播放器 +GenericName=Multimedia player +GenericName[ar]=مُشَغِّل وسائط متعددة +GenericName[cs]=Multimediální přehrávač +GenericName[da]=Multimedieafspiller +GenericName[fr]=Lecteur multimédia +GenericName[it]=Lettore multimediale +GenericName[ja]=マルチメディアプレイヤー +GenericName[ru]=Мультимедийный проигрыватель +GenericName[tr]=Çoklu ortam oynatıcı +GenericName[zh_CN]=多媒体播放器 +GenericName[zh_TW]=多媒體播放器 +Comment=Play movies and songs +Comment[ar]=شَغِّل الأفلام والأغاني +Comment[ca]=Reproduïu vídeos i cançons +Comment[cs]=Přehrává filmy a hudbu +Comment[da]=Afspil film og sange +Comment[de]=Filme und Musik abspielen +Comment[es]=Reproduzca vídeos y canciones +Comment[fr]=Lire des vidéos et des musiques +Comment[ja]=映画や音楽を再生する +Comment[it]=Riproduci video e canzoni +Comment[pl]=Odtwarzaj filmy i muzykę +Comment[ru]=Воспроизведение фильмов и музыки +Comment[tr]=Filmleri ve şarkıları oynatın +Comment[zh_CN]=播放电影和歌曲 +Comment[zh_TW]=播放電影和歌曲 +Icon=mpv +TryExec=mpv +Exec=mpv --player-operation-mode=pseudo-gui -- %U +Terminal=false +Categories=AudioVideo;Audio;Video;Player;TV; +MimeType=application/ogg;application/x-ogg;application/mxf;application/sdp;application/smil;application/x-smil;application/streamingmedia;application/x-streamingmedia;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/aac;audio/x-aac;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/aiff;audio/x-aiff;audio/m4a;audio/x-m4a;application/x-extension-m4a;audio/mp1;audio/x-mp1;audio/mp2;audio/x-mp2;audio/mp3;audio/x-mp3;audio/mpeg;audio/mpeg2;audio/mpeg3;audio/mpegurl;audio/x-mpegurl;audio/mpg;audio/x-mpg;audio/rn-mpeg;audio/musepack;audio/x-musepack;audio/ogg;audio/scpls;audio/x-scpls;audio/vnd.rn-realaudio;audio/wav;audio/x-pn-wav;audio/x-pn-windows-pcm;audio/x-realaudio;audio/x-pn-realaudio;audio/x-ms-wma;audio/x-pls;audio/x-wav;video/mpeg;video/x-mpeg2;video/x-mpeg3;video/mp4v-es;video/x-m4v;video/mp4;application/x-extension-mp4;video/divx;video/vnd.divx;video/msvideo;video/x-msvideo;video/ogg;video/quicktime;video/vnd.rn-realvideo;video/x-ms-afs;video/x-ms-asf;audio/x-ms-asf;application/vnd.ms-asf;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvxvideo;video/x-avi;video/avi;video/x-flic;video/fli;video/x-flc;video/flv;video/x-flv;video/x-theora;video/x-theora+ogg;video/x-matroska;video/mkv;audio/x-matroska;application/x-matroska;video/webm;audio/webm;audio/vorbis;audio/x-vorbis;audio/x-vorbis+ogg;video/x-ogm;video/x-ogm+ogg;application/x-ogm;application/x-ogm-audio;application/x-ogm-video;application/x-shorten;audio/x-shorten;audio/x-ape;audio/x-wavpack;audio/x-tta;audio/AMR;audio/ac3;audio/eac3;audio/amr-wb;video/mp2t;audio/flac;audio/mp4;application/x-mpegurl;video/vnd.mpegurl;application/vnd.apple.mpegurl;audio/x-pn-au;video/3gp;video/3gpp;video/3gpp2;audio/3gpp;audio/3gpp2;video/dv;audio/dv;audio/opus;audio/vnd.dts;audio/vnd.dts.hd;audio/x-adpcm;application/x-cue;audio/m3u;audio/vnd.wave;video/vnd.avi; +X-KDE-Protocols=appending,file,ftp,hls,http,https,mms,mpv,rtmp,rtmps,rtmpt,rtmpts,rtp,rtsp,rtsps,sftp,srt,srtp,webdav,webdavs +StartupWMClass=mpv +Keywords=mpv;media;player;video;audio;tv; +Keywords[ar]=mpv;إم بي في;ام بي في;وسائط;مشغل;فيديو;مرئية;صوتي;تلفاز; diff --git a/applications/desktop/nvim.desktop b/applications/desktop/nvim.desktop new file mode 100644 index 0000000..86b8bdd --- /dev/null +++ b/applications/desktop/nvim.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=Neovim +GenericName=Text Editor +Comment=Edit text files +Exec=alacritty --class=nvim --title=nvim -e nvim -- %F +Terminal=false +Type=Application +Keywords=Text;editor; +Icon=nvim +Categories=Utility;TextEditor; +StartupNotify=false +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++; \ No newline at end of file diff --git a/applications/icons/Activity.png b/applications/icons/Activity.png deleted file mode 100644 index e0713bf..0000000 Binary files a/applications/icons/Activity.png and /dev/null differ diff --git a/applications/icons/Docker.png b/applications/icons/Docker.png deleted file mode 100644 index c025759..0000000 Binary files a/applications/icons/Docker.png and /dev/null differ diff --git a/applications/icons/Omasway.png b/applications/icons/Omasway.png deleted file mode 100644 index 1d0a6b5..0000000 Binary files a/applications/icons/Omasway.png and /dev/null differ diff --git a/applications/icons/Ubuntu.png b/applications/icons/Ubuntu.png deleted file mode 100644 index 602aa2b..0000000 Binary files a/applications/icons/Ubuntu.png and /dev/null differ diff --git a/applications/install/chromium.sh b/applications/install/chromium.sh new file mode 100644 index 0000000..5358113 --- /dev/null +++ b/applications/install/chromium.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Browse the web with Chromium - open source browser +sudo apt update -y +sudo apt install -y chromium \ No newline at end of file diff --git a/applications/install/dbeaver.sh b/applications/install/dbeaver.sh new file mode 100644 index 0000000..e448098 --- /dev/null +++ b/applications/install/dbeaver.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# A Database management tool https://dbeaver.io/s +cd /tmp +wget https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb -O dbeaver.deb +sudo apt install ./dbeaver.deb -y +rm dbeaver.deb +cd - + + diff --git a/applications/install/discord.sh b/applications/install/discord.sh new file mode 100644 index 0000000..04efc72 --- /dev/null +++ b/applications/install/discord.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# A Communication platform for voice, video, and text messaging https://discord.com/ +cd /tmp +wget https://discord.com/api/download?platform=linux -O discord.deb +sudo apt install ./discord.deb -y +rm discord.deb +cd - \ No newline at end of file diff --git a/applications/install/docker.sh b/applications/install/docker.sh new file mode 100644 index 0000000..9359c93 --- /dev/null +++ b/applications/install/docker.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +# Install Docker +# Add Docker's official GPG key: +sudo apt-get update +sudo apt-get install ca-certificates curl +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc +sudo chmod a+r /etc/apt/keyrings/docker.asc + +# Add the repository to Apt sources: +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt update + +sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras + +# Configure Docker daemon: +# - limit log size to avoid running out of disk +# - use host's DNS resolver +sudo mkdir -p /etc/docker +sudo tee /etc/docker/daemon.json >/dev/null <<'EOF' +{ + "log-driver": "json-file", + "log-opts": { "max-size": "10m", "max-file": "5" }, + "dns": ["172.17.0.1"], + "bip": "172.17.0.1/16" +} +EOF + +# Start Docker automatically +sudo systemctl enable docker + +# Give this user privileged Docker access +sudo usermod -aG docker ${USER} + +# Prevent Docker from preventing boot for network-online.target +sudo mkdir -p /etc/systemd/system/docker.service.d +sudo tee /etc/systemd/system/docker.service.d/no-block-boot.conf <<'EOF' +[Unit] +DefaultDependencies=no +EOF + +sudo systemctl daemon-reload \ No newline at end of file diff --git a/applications/install/filezilla.sh b/applications/install/filezilla.sh new file mode 100644 index 0000000..1c4f55c --- /dev/null +++ b/applications/install/filezilla.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# The free FTP solution for both client and server. https://filezilla-project.org +sudo apt update -y +sudo apt install filezilla -y diff --git a/applications/install/firefox.sh b/applications/install/firefox.sh new file mode 100644 index 0000000..5e9cd43 --- /dev/null +++ b/applications/install/firefox.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Install Firefox from Debian repositories or Firefox ESR +# For Debian, we use the official repositories or install Firefox ESR +sudo apt update -y + +# Try to install firefox first, fallback to firefox-esr if not available +if sudo apt install firefox -y 2>/dev/null; then + echo "Firefox installed successfully" +else + echo "Installing Firefox ESR (Extended Support Release)" + sudo apt install firefox-esr -y +fi \ No newline at end of file diff --git a/install/optional/app-flameshot.sh b/applications/install/flameshot.sh similarity index 88% rename from install/optional/app-flameshot.sh rename to applications/install/flameshot.sh index c64b827..3220135 100644 --- a/install/optional/app-flameshot.sh +++ b/applications/install/flameshot.sh @@ -1,2 +1,4 @@ +#!/bin/bash + # Flameshot is a nice step-up over the default Gnome screenshot tool sudo apt install flameshot -y diff --git a/install/github-cli.sh b/applications/install/github-cli.sh similarity index 97% rename from install/github-cli.sh rename to applications/install/github-cli.sh index c73d7de..977ecce 100644 --- a/install/github-cli.sh +++ b/applications/install/github-cli.sh @@ -1,3 +1,5 @@ +#!/bin/bash + curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg && 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 && diff --git a/applications/install/gitlab-cli.sh b/applications/install/gitlab-cli.sh new file mode 100644 index 0000000..deb2eda --- /dev/null +++ b/applications/install/gitlab-cli.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +LATEST_URL=$(curl -s https://gitlab.com/api/v4/projects/gitlab-org%2Fcli/releases | grep -o '"direct_asset_url":"[^"]*linux_amd64\.deb"' | head -1 | cut -d '"' -f 4) + +if [ -n "$LATEST_URL" ]; then + DEB_FILE=$(basename "$LATEST_URL") + curl -L -o "/tmp/$DEB_FILE" "$LATEST_URL" + + if file "/tmp/$DEB_FILE" | grep -q "Debian binary package"; then + sudo dpkg -i "/tmp/$DEB_FILE" || sudo apt install -f -y + fi + + rm -f "/tmp/$DEB_FILE" +fi \ No newline at end of file diff --git a/install/optional/app-libreoffice.sh b/applications/install/libreoffice.sh similarity index 84% rename from install/optional/app-libreoffice.sh rename to applications/install/libreoffice.sh index fcb7fcf..a4cfcf5 100644 --- a/install/optional/app-libreoffice.sh +++ b/applications/install/libreoffice.sh @@ -1,2 +1,4 @@ +#!/bin/bash + # Work with Word, Excel, Powerpoint files sudo apt install -y libreoffice \ No newline at end of file diff --git a/install/optional/app-localsend.sh b/applications/install/localsend.sh similarity index 96% rename from install/optional/app-localsend.sh rename to applications/install/localsend.sh index 5f3badc..dddfaaa 100644 --- a/install/optional/app-localsend.sh +++ b/applications/install/localsend.sh @@ -1,3 +1,5 @@ +#!/bin/bash + cd /tmp LOCALSEND_VERSION=$(curl -s "https://api.github.com/repos/localsend/localsend/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') wget -O localsend.deb "https://github.com/localsend/localsend/releases/latest/download/LocalSend-${LOCALSEND_VERSION}-linux-x86-64.deb" diff --git a/install/nvim.sh b/applications/install/neovim.sh similarity index 95% rename from install/nvim.sh rename to applications/install/neovim.sh index 89850c4..f89e2d5 100644 --- a/install/nvim.sh +++ b/applications/install/neovim.sh @@ -1,4 +1,7 @@ +#!/bin/bash + if ! command -v nvim &>/dev/null; then + # Install Neovim cd /tmp wget -O nvim.tar.gz "https://github.com/neovim/neovim/releases/download/stable/nvim-linux-x86_64.tar.gz" tar -xf nvim.tar.gz @@ -17,4 +20,4 @@ if ! command -v nvim &>/dev/null; then cp -R ~/.local/share/omasway/config/nvim/* ~/.config/nvim/ rm -rf ~/.config/nvim/.git echo "vim.opt.relativenumber = false" >>~/.config/nvim/lua/config/options.lua -fi +fi \ No newline at end of file diff --git a/applications/install/obs-studio.sh b/applications/install/obs-studio.sh new file mode 100644 index 0000000..61d8438 --- /dev/null +++ b/applications/install/obs-studio.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# OBS Studio is a screen recording application that allows you to capture both display and webcam in the same recording +sudo apt install -y obs-studio \ No newline at end of file diff --git a/install/optional/app-pinta.sh b/applications/install/pinta.sh similarity index 81% rename from install/optional/app-pinta.sh rename to applications/install/pinta.sh index 6b1b15d..735ed07 100644 --- a/install/optional/app-pinta.sh +++ b/applications/install/pinta.sh @@ -1 +1,3 @@ +#!/bin/bash + flatpak install -y flathub com.github.PintaProject.Pinta \ No newline at end of file diff --git a/applications/install/postman.sh b/applications/install/postman.sh new file mode 100644 index 0000000..480feb8 --- /dev/null +++ b/applications/install/postman.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Postman is an API platform for building and using APIs. See https://postman.com +flatpak install -y flathub com.getpostman.Postman diff --git a/install/optional/app-spotify.sh b/applications/install/spotify.sh similarity index 59% rename from install/optional/app-spotify.sh rename to applications/install/spotify.sh index 2ba6ceb..9d8dcbf 100644 --- a/install/optional/app-spotify.sh +++ b/applications/install/spotify.sh @@ -1,5 +1,12 @@ +#!/bin/bash + # Stream music using https://spotify.com curl -sS https://download.spotify.com/debian/pubkey_C85668DF69375001.gpg | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/spotify.gpg echo "deb [signed-by=/etc/apt/trusted.gpg.d/spotify.gpg] http://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.list sudo apt update -y -sudo apt install -y spotify-client \ No newline at end of file +sudo apt install -y spotify-client + +# Create a desktop entry if it doesn't exist +if [ ! -f /usr/share/applications/spotify.desktop ]; then + sudo ln -s /usr/share/spotify/spotify.desktop /usr/share/applications/spotify.desktop +fi \ No newline at end of file diff --git a/applications/install/starship.sh b/applications/install/starship.sh new file mode 100644 index 0000000..580bea8 --- /dev/null +++ b/applications/install/starship.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Install Starship +curl -sS https://starship.rs/install.sh | sh -s -- -y \ No newline at end of file diff --git a/applications/install/thunderbird.sh b/applications/install/thunderbird.sh new file mode 100644 index 0000000..9f50fd0 --- /dev/null +++ b/applications/install/thunderbird.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# Install Thunderbird from Debian repositories +# Thunderbird is a free email application that's easy to set up and customize - and it's loaded with great features! https://www.thunderbird.net +sudo apt update -y +sudo apt install thunderbird -y \ No newline at end of file diff --git a/install/optional/app-visual-studio-code.sh b/applications/install/visual-studio-code.sh similarity index 97% rename from install/optional/app-visual-studio-code.sh rename to applications/install/visual-studio-code.sh index b3efa23..ffe1df7 100644 --- a/install/optional/app-visual-studio-code.sh +++ b/applications/install/visual-studio-code.sh @@ -1,3 +1,5 @@ +#!/bin/bash + cd /tmp wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor >packages.microsoft.gpg sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg diff --git a/install/optional/app-xournalpp.sh b/applications/install/xournalpp.sh similarity index 69% rename from install/optional/app-xournalpp.sh rename to applications/install/xournalpp.sh index fe7e66f..4adb8bb 100644 --- a/install/optional/app-xournalpp.sh +++ b/applications/install/xournalpp.sh @@ -1 +1,3 @@ +#!/bin/bash + sudo apt install -y xournalpp diff --git a/applications/install/zen.sh b/applications/install/zen.sh new file mode 100644 index 0000000..6e69a80 --- /dev/null +++ b/applications/install/zen.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Install latest version of Zen Browser https://zen-browser.app +cd /tmp +curl -s https://updates.zen-browser.app/install.sh -o zen-install.sh 2>/dev/null +chmod +x zen-install.sh 2>/dev/null +bash zen-install.sh >/dev/null 2>&1 +rm -f zen-install.sh 2>/dev/null +cd - \ No newline at end of file diff --git a/applications/remove/dbeaver.sh b/applications/remove/dbeaver.sh new file mode 100644 index 0000000..c38627c --- /dev/null +++ b/applications/remove/dbeaver.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y dbeaver-ce \ No newline at end of file diff --git a/applications/remove/discord.sh b/applications/remove/discord.sh new file mode 100644 index 0000000..657ed88 --- /dev/null +++ b/applications/remove/discord.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y discord diff --git a/uninstall/docker.sh b/applications/remove/docker.sh similarity index 92% rename from uninstall/docker.sh rename to applications/remove/docker.sh index f021887..738f7ca 100644 --- a/uninstall/docker.sh +++ b/applications/remove/docker.sh @@ -1,2 +1,4 @@ +#!/bin/bash + sudo apt purge --auto-remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras sudo groupdel docker diff --git a/applications/remove/filezilla.sh b/applications/remove/filezilla.sh new file mode 100644 index 0000000..e75d58e --- /dev/null +++ b/applications/remove/filezilla.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y filezilla \ No newline at end of file diff --git a/applications/remove/firefox.sh b/applications/remove/firefox.sh new file mode 100644 index 0000000..b33af5e --- /dev/null +++ b/applications/remove/firefox.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y firefox diff --git a/applications/remove/flameshot.sh b/applications/remove/flameshot.sh new file mode 100644 index 0000000..696dac1 --- /dev/null +++ b/applications/remove/flameshot.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y flameshot diff --git a/applications/remove/github-cli.sh b/applications/remove/github-cli.sh new file mode 100644 index 0000000..161b576 --- /dev/null +++ b/applications/remove/github-cli.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y gh diff --git a/applications/remove/gitlab-cli.sh b/applications/remove/gitlab-cli.sh new file mode 100644 index 0000000..d82ad5e --- /dev/null +++ b/applications/remove/gitlab-cli.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y glab diff --git a/applications/remove/libreoffice.sh b/applications/remove/libreoffice.sh new file mode 100644 index 0000000..2e578c4 --- /dev/null +++ b/applications/remove/libreoffice.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +sudo apt-get remove --purge -y "libreoffice*" +sudo apt-get -y clean +sudo apt-get -y autoremove \ No newline at end of file diff --git a/applications/remove/localsend.sh b/applications/remove/localsend.sh new file mode 100644 index 0000000..a7c2228 --- /dev/null +++ b/applications/remove/localsend.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y localsend diff --git a/uninstall/app-neovim.sh b/applications/remove/neovim.sh similarity index 93% rename from uninstall/app-neovim.sh rename to applications/remove/neovim.sh index baae9fb..7d1d621 100644 --- a/uninstall/app-neovim.sh +++ b/applications/remove/neovim.sh @@ -1,3 +1,5 @@ +#!/bin/bash + sudo apt purge -y neovim neovim-runtime rm ~/.local/share/applications/Neovim.desktop rm -rf ~/.config/nvim diff --git a/applications/remove/obs-studio.sh b/applications/remove/obs-studio.sh new file mode 100644 index 0000000..952538b --- /dev/null +++ b/applications/remove/obs-studio.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y obs-studio \ No newline at end of file diff --git a/uninstall/app-pinta.sh b/applications/remove/pinta.sh similarity index 79% rename from uninstall/app-pinta.sh rename to applications/remove/pinta.sh index fe43770..b0bc4d7 100644 --- a/uninstall/app-pinta.sh +++ b/applications/remove/pinta.sh @@ -1 +1,3 @@ +#!/bin/bash + flatpak uninstall -y com.github.PintaProject.Pinta diff --git a/applications/remove/postman.sh b/applications/remove/postman.sh new file mode 100644 index 0000000..9b0108b --- /dev/null +++ b/applications/remove/postman.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +flatpak uninstall -y flathub com.getpostman.Postman diff --git a/applications/remove/spotify.sh b/applications/remove/spotify.sh new file mode 100644 index 0000000..7bef296 --- /dev/null +++ b/applications/remove/spotify.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y spotify-client diff --git a/applications/remove/starship.sh b/applications/remove/starship.sh new file mode 100644 index 0000000..14537bd --- /dev/null +++ b/applications/remove/starship.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sudo rm -rf /usr/local/bin/starship +sudo rm -rf ~/.cache/starship \ No newline at end of file diff --git a/applications/remove/thunderbird.sh b/applications/remove/thunderbird.sh new file mode 100644 index 0000000..557f207 --- /dev/null +++ b/applications/remove/thunderbird.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y thunderbird \ No newline at end of file diff --git a/applications/remove/visual-studio-code.sh b/applications/remove/visual-studio-code.sh new file mode 100644 index 0000000..cba9d73 --- /dev/null +++ b/applications/remove/visual-studio-code.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sudo apt remove --purge -y code +rm -rf ~/.config/Code/User diff --git a/applications/remove/xournalpp.sh b/applications/remove/xournalpp.sh new file mode 100644 index 0000000..4a3a956 --- /dev/null +++ b/applications/remove/xournalpp.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y xournalpp diff --git a/applications/remove/zen.sh b/applications/remove/zen.sh new file mode 100644 index 0000000..e523b2f --- /dev/null +++ b/applications/remove/zen.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo apt remove --purge -y zen \ No newline at end of file diff --git a/bin/omasway b/bin/omasway deleted file mode 100755 index bf8705e..0000000 --- a/bin/omasway +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -source $OMASWAY_PATH/bin/omasway-sub/header.sh -source $OMASWAY_PATH/bin/omasway-sub/helper.sh -source $OMASWAY_PATH/bin/omasway-sub/menu.sh diff --git a/bin/omasway-app-install b/bin/omasway-app-install new file mode 100755 index 0000000..71ff814 --- /dev/null +++ b/bin/omasway-app-install @@ -0,0 +1,47 @@ +#!/bin/bash + +APP_DIR="$HOME/.local/share/omasway/applications/install" + +if [ "$#" -eq 0 ]; then + # Find all installable apps + APPS=() + while IFS= read -r path; do + filename=$(basename "$path" .sh) + APPS+=("$(echo "$filename" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')") + done < <(find "$APP_DIR" -mindepth 1 -maxdepth 1 -type f -name "*.sh" | sort) + + if ((${#APPS[@]})); then + IFS=$'\n' SORTED_APPS=($(sort <<<"${APPS[*]}")) + unset IFS + APP_NAMES_STRING=$(gum choose --no-limit --header "Select app to install..." --selected-prefix="✓ " "${SORTED_APPS[@]}") + # Convert newline-separated string to array + APP_NAMES=() + while IFS= read -r line; do + [[ -n "$line" ]] && APP_NAMES+=("$line") + done <<< "$APP_NAMES_STRING" + else + echo "No apps to install." + exit 1 + fi +else + # Use array to preserve spaces in app names + APP_NAMES=("$@") +fi + +if [[ ${#APP_NAMES[@]} -eq 0 ]]; then + echo "You must provide app names." + exit 1 +fi + +for APP_NAME in "${APP_NAMES[@]}"; do + APP_NAME=$(echo "$APP_NAME" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-') + + # If APP_NAME exists in $APP_DIR, source it to install the app + if [[ -f "$APP_DIR/$APP_NAME.sh" ]]; then + source "$APP_DIR/$APP_NAME.sh" + # If the app is not recognized, print an error message + else + echo "Error: App $APP_NAME is not recognized or not available for installation." >&2 + exit 1 + fi +done \ No newline at end of file diff --git a/bin/omasway-app-remove b/bin/omasway-app-remove new file mode 100755 index 0000000..14fa1dc --- /dev/null +++ b/bin/omasway-app-remove @@ -0,0 +1,47 @@ +#!/bin/bash + +APP_DIR="$HOME/.local/share/omasway/applications/remove" + +if [ "$#" -eq 0 ]; then + # Find all removable apps + APPS=() + while IFS= read -r path; do + filename=$(basename "$path" .sh) + APPS+=("$(echo "$filename" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')") + done < <(find "$APP_DIR" -mindepth 1 -maxdepth 1 -type f -name "*.sh" | sort) + + if ((${#APPS[@]})); then + IFS=$'\n' SORTED_APPS=($(sort <<<"${APPS[*]}")) + unset IFS + APP_NAMES_STRING=$(gum choose --no-limit --header "Select app to remove..." --selected-prefix="✗ " "${SORTED_APPS[@]}") + # Convert newline-separated string to array + APP_NAMES=() + while IFS= read -r line; do + [[ -n "$line" ]] && APP_NAMES+=("$line") + done <<< "$APP_NAMES_STRING" + else + echo "No apps to install." + exit 1 + fi +else + # Use array to preserve spaces in app names + APP_NAMES=("$@") +fi + +if [[ ${#APP_NAMES[@]} -eq 0 ]]; then + echo "You must provide app names." + exit 1 +fi + +for APP_NAME in "${APP_NAMES[@]}"; do + APP_NAME=$(echo "$APP_NAME" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-') + + # If APP_NAME exists in $APP_DIR, source it to uninstall the app + if [[ -f "$APP_DIR/$APP_NAME.sh" ]]; then + source "$APP_DIR/$APP_NAME.sh" + # If the app is not recognized, print an error message + else + echo "Error: App $APP_NAME is not recognized or not available for uninstallation." >&2 + exit 1 + fi +done \ No newline at end of file diff --git a/bin/omasway-apps b/bin/omasway-apps new file mode 100755 index 0000000..16f5777 --- /dev/null +++ b/bin/omasway-apps @@ -0,0 +1,3 @@ +#!/bin/bash + +omasway-wofi --show drun --sort-order=alphabetical --width 600 --height 350 --prompt "Launch…" diff --git a/bin/omasway-battery-monitor b/bin/omasway-battery-monitor deleted file mode 100755 index db744a1..0000000 --- a/bin/omasway-battery-monitor +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -# @Source: https://github.com/basecamp/omarchy/blob/master/bin/omarchy-battery-monitor -# Designed to be run by systemd timer every 30 seconds and alerts if battery is low - -BATTERY_THRESHOLD=10 -NOTIFICATION_FLAG="/run/user/$UID/omasway_battery_notified" - -get_battery_percentage() { - upower -i $(upower -e | grep 'BAT') | grep -E "percentage" | grep -o '[0-9]\+%' | sed 's/%//' -} - -get_battery_state() { - upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{print $2}' -} - -send_notification() { - notify-send -u critical "Battery Low" "Time to recharge! (battery is at ${1}%)" -i battery-caution -} - -BATTERY_LEVEL=$(get_battery_percentage) -BATTERY_STATE=$(get_battery_state) - -if [[ "$BATTERY_STATE" == "discharging" && "$BATTERY_LEVEL" -le "$BATTERY_THRESHOLD" ]]; then - if [[ ! -f "$NOTIFICATION_FLAG" ]]; then - send_notification "$BATTERY_LEVEL" - touch "$NOTIFICATION_FLAG" - fi -else - rm -f "$NOTIFICATION_FLAG" -fi diff --git a/bin/omasway-dev-add-migration b/bin/omasway-dev-add-migration new file mode 100755 index 0000000..e1168bf --- /dev/null +++ b/bin/omasway-dev-add-migration @@ -0,0 +1,6 @@ +#!/bin/bash + +cd ~/.local/share/omasway +migration_file="$HOME/.local/share/omasway/migrations/$(git log -1 --format=%cd --date=unix).sh" +touch $migration_file +nvim $migration_file diff --git a/bin/omasway-font-current b/bin/omasway-font-current new file mode 100755 index 0000000..c3dc4c9 --- /dev/null +++ b/bin/omasway-font-current @@ -0,0 +1,3 @@ +#!/bin/bash + +grep -oP 'family\s*=\s*"\K[^"]+' ~/.config/alacritty/alacritty.toml | head -n1 diff --git a/bin/omasway-font-list b/bin/omasway-font-list new file mode 100755 index 0000000..7fd6d49 --- /dev/null +++ b/bin/omasway-font-list @@ -0,0 +1,3 @@ +#!/bin/bash + +fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting|omasway' | sort -u diff --git a/bin/omasway-font-set b/bin/omasway-font-set new file mode 100755 index 0000000..a79bcc7 --- /dev/null +++ b/bin/omasway-font-set @@ -0,0 +1,14 @@ +#!/bin/bash + +font_name="$1" + +if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then + if fc-list | grep -iq "$font_name"; then + sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml + else + echo "Font '$font_name' not found." + exit 1 + fi +else + echo "Usage: omasway-font-set " +fi diff --git a/bin/omasway-font-size-set b/bin/omasway-font-size-set new file mode 100755 index 0000000..228b4fb --- /dev/null +++ b/bin/omasway-font-size-set @@ -0,0 +1,14 @@ +#!/bin/bash + +if [ "$#" -ne 1 ]; then + echo -e "\e[32mLet's customize your terminal font size.\n\e[0m" + FONT_SIZE=$(gum choose {7..14} --height 10 --header "Choose your terminal font size") +else + FONT_SIZE="$1" +fi + +if [[ $FONT_SIZE =~ ^[0-9]+$ ]]; then + sed -i "s/^size = .*$/size = $FONT_SIZE/g" ~/.config/alacritty/alacritty.toml +else + echo "Font size must be a number." +fi \ No newline at end of file diff --git a/bin/omasway-install-dev-env b/bin/omasway-install-dev-env new file mode 100755 index 0000000..ecdc427 --- /dev/null +++ b/bin/omasway-install-dev-env @@ -0,0 +1,51 @@ +#!/bin/bash + +if [[ -z "$1" ]]; then + echo "Usage: omasway-install-dev-env " >&2 + exit 1 +fi + +install_php() { + echo -e "Installing PHP...\n" + sudo apt -y install php php-{curl,apcu,intl,mbstring,opcache,pgsql,mysql,sqlite3,redis,xml,zip} --no-install-recommends + php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" + php composer-setup.php --quiet && sudo mv composer.phar /usr/local/bin/composer + rm composer-setup.php +} + +install_node() { + echo -e "Installing Node.js...\n" + mise use --global node@lts +} + +case "$1" in +node) + install_node + ;; +bun) + echo -e "Installing Bun...\n" + mise use -g bun@latest + ;; +deno) + echo -e "Installing Deno...\n" + mise use -g deno@latest + ;; +go) + echo -e "Installing Go...\n" + mise use --global go@latest + ;; +php) + echo -e "Installing PHP...\n" + install_php + ;; +python) + echo -e "Installing Python...\n" + mise use --global python@latest + echo -e "\nInstalling uv...\n" + curl -fsSL https://astral.sh/uv/install.sh | sh + ;; +rust) + echo -e "Installing Rust...\n" + bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y + ;; +esac diff --git a/bin/omasway-install-docker-dbs b/bin/omasway-install-docker-dbs new file mode 100755 index 0000000..20a779f --- /dev/null +++ b/bin/omasway-install-docker-dbs @@ -0,0 +1,18 @@ +#!/bin/bash + +options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB") +choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu + +if [[ -n "$choices" ]]; then + for db in $choices; do + case $db in + MySQL) sudo 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 ;; + PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 ;; + MariaDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mariadb11 -e MARIADB_ROOT_PASSWORD= -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true mariadb:11.8 ;; + Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;; + MongoDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:27017:27017" --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin123 mongo:noble ;; + esac + done +else + echo "No databases selected for installation." +fi diff --git a/bin/omasway-launch-terminal-with-presentation b/bin/omasway-launch-terminal-with-presentation new file mode 100755 index 0000000..45f00a7 --- /dev/null +++ b/bin/omasway-launch-terminal-with-presentation @@ -0,0 +1,4 @@ +#!/bin/bash + +cmd="$*" +alacritty --class Omasway -e bash -c -l "omasway-show-logo; $cmd; omasway-show-done" diff --git a/bin/omasway-launch-webapp b/bin/omasway-launch-webapp new file mode 100755 index 0000000..d3375e9 --- /dev/null +++ b/bin/omasway-launch-webapp @@ -0,0 +1,27 @@ +#!/bin/bash + +# omasway-launch-webapp: Launch a web application as a standalone window. +# Usage: omasway-launch-webapp +if [[ -z "$1" || -z "$2" ]]; then + echo "Usage: omasway-launch-webapp " >&2 + exit 1 +fi + +APP_URL="$1" +APP_NAME="$2" +# This prevents data loss and force to open in a separate profile +OMASWAY_DATA_DIR="$HOME/.config/omasway/webapp" +WEBAPP_DATA_DIR="$OMASWAY_DATA_DIR/$(echo "$APP_NAME" | tr ' ' '-' | tr '[:upper:]' '[:lower:]')" + +browser=$(xdg-settings get default-web-browser) + +case $browser in +google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi*) ;; +*) browser="chromium.desktop" ;; +esac + +if [ ! -d "$WEBAPP_DATA_DIR" ]; then + mkdir -p "$WEBAPP_DATA_DIR" +fi + +exec $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$browser 2>/dev/null | head -1) --user-data-dir="$WEBAPP_DATA_DIR" --window-size=800,600 --app="$APP_URL" --name="$APP_NAME" --class="$APP_NAME" diff --git a/bin/omasway-menu b/bin/omasway-menu new file mode 100755 index 0000000..9dd8cd7 --- /dev/null +++ b/bin/omasway-menu @@ -0,0 +1,247 @@ +#!/bin/bash + +export PATH="$HOME/.local/share/omasway/bin:$PATH" + +menu() { + local prompt="$1" + local options="$2" + local extra="$3" + local preselect="$4" + + read -r -a args <<<"$extra" + + if [[ -n "$preselect" ]]; then + options=$(echo -e "$options" | sed "s|^$preselect$|$preselect|") + fi + + # Show Wofi menu (with markup support) + selection=$(echo -e "$options" | omasway-wofi \ + --show dmenu \ + --allow-markup \ + --prompt "$prompt..." \ + "${args[@]}" \ + "$wofi_options" 2>>/tmp/omasway.log) + + echo -e "$selection" +} + +terminal() { + alacritty --class Omasway -e "$@" +} + +present_terminal() { + omasway-launch-terminal-with-presentation "$@" +} + +edit_in_nvim() { + notify-send "Editing config file" "$1" + alacritty -e nvim "$1" +} + +app_install() { + present_terminal "echo 'Installing $1...'; omasway-app-install $1" +} + +show_learn_menu() { + case $(menu "Learn" " Keybindings\n Omasway\n Debian\n Neovim\n Zellij\n󱆃 Bash" "--width 250 --height 300") in + *Keybindings*) omasway-launch-webapp "https://learn.omacom.io/1/read/29/hotkeys" "Omasway Keybindings" ;; + *Omasway*) omasway-launch-webapp "https://learn.omacom.io/1/read#leaf_40" "Omasway" ;; + *Debian*) omasway-launch-webapp "https://www.debian.org/doc/" "Debian" ;; + *Bash*) omasway-launch-webapp "https://devhints.io/bash" "Bash" ;; + *Neovim*) omasway-launch-webapp "https://www.lazyvim.org/keymaps" "Neovim" ;; + *Zellij*) omasway-launch-webapp "https://zellij.dev/documentation/keybindings.html" "Zellij" ;; + *) show_main_menu ;; + esac +} + +show_style_menu() { + case $(menu "Style" "󰸌 Theme\n Font\n Background" "--width 250 --height 250") in + *Theme*) show_theme_menu ;; + *Font*) show_font_menu ;; + *Background*) omasway-theme-bg-next ;; + *) show_main_menu ;; + esac +} + +show_theme_menu() { + theme=$(menu "Theme" "$(omasway-theme-list)" "--width 250 --height 400 -O alphabetical" "$(omasway-theme-current)") + if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then + show_main_menu + else + omasway-theme-set "$theme" + fi +} + +show_font_menu() { + case $(menu "Font" " Family\n󰧴 Size" "--width 200 --height 200") in + *Family*) show_font_family_menu ;; + *Size*) present_terminal omasway-font-size-set ;; + *) show_main_menu ;; + esac +} + +show_font_family_menu() { + font=$(menu "Font" "$(omasway-font-list)" "--width 350" "$(omasway-font-current)") + if [[ "$font" == "CNCLD" || -z "$font" ]]; then + show_main_menu + else + omasway-font-set "$font" + fi +} + +show_setup_menu() { + case $(menu "Setup" " Folders\n Starship\n Zellij\n󰌧 Wofi" "--width 250 --height 300") in + *Folders*) show_setup_folders_menu ;; + *Starship*) edit_in_nvim ~/.config/starship.toml ;; + *Zellij*) edit_in_nvim ~/.config/zellij/config.kdl ;; + *Wofi*) edit_in_nvim ~/.config/wofi/config ;; + *) show_main_menu ;; + esac +} + +show_setup_folders_menu() { + case $(menu "Folders" "󰮝 Add\n󰮞 Remove" "--width 200 --height 200") in + *Add*) present_terminal omasway-app-folder-add ;; + *Remove*) present_terminal omasway-app-folder-remove ;; + *) show_setup_menu ;; + esac +} + +show_install_menu() { + case $(menu "Install" " Web App\n TUI\n Tools\n Style\n Service\n󰵮 Development\n Editor" "--width 250 --height 350") in + *Web*) present_terminal omasway-webapp-install ;; + *TUI*) present_terminal omasway-tui-install ;; + *Tools*) show_install_tools_menu ;; + *Style*) show_install_style_menu ;; + *Service*) show_install_service_menu ;; + *Development*) show_install_development_menu ;; + *Editor*) show_install_editor_menu ;; + *) show_main_menu ;; + esac +} + +show_install_tools_menu() { + case $(menu "Install" " Flameshot\n Mainline Kernels\n Pinta\n Starship\n Xournalpp" "--width 250 --height 300") in + *Flameshot*) app_install "flameshot" ;; + *Pinta*) app_install "pinta" ;; + *Mainline*) app_install "mainline-kernels" ;; + *Xournalpp*) app_install "xournalpp" ;; + *Starship*) app_install "starship" ;; + *) show_install_menu ;; + esac +} + +show_install_service_menu() { + case $(menu "Install" " Chromium\n Firefox\n Discord\n Filezilla\n LibreOffice\n LocalSend\n OBS Studio\n Postman\n Spotify\n Thunderbird\n Zen Browser" "--width 250 --height 500") in + *Chromium*) app_install "chromium" ;; + *Firefox*) app_install "firefox" ;; + *Discord*) app_install "discord" ;; + *Filezilla*) app_install "filezilla" ;; + *LibreOffice*) app_install "libreoffice" ;; + *LocalSend*) app_install "localsend" ;; + *OBS*) app_install "obs-studio" ;; + *Postman*) app_install "postman" ;; + *Spotify*) app_install "spotify" ;; + *Thunderbird*) app_install "thunderbird" ;; + *Zen*) app_install "zen" ;; + *) show_install_menu ;; + esac +} + +show_install_editor_menu() { + case $(menu "Install" " DBeaver\n NeoVim\n Visual Studio Code" "--width 250 --height 200") in + *Visual*) app_install "visual-studio-code" ;; + *NeoVim*) app_install "neovim" ;; + *DBeaver*) app_install "dbeaver" ;; + *) show_install_menu ;; + esac +} + +show_install_development_menu() { + case $(menu "Install" " Docker\n󱘲 Databases\n Github\n Gitlab\\n JavaScript\n Go\n PHP\n Python\n Rust" "--width 250 --height 400") in + *Docker*) app_install "docker" ;; + *Databases*) present_terminal "omasway-install-docker-dbs" ;; + *Github*) app_install "github-cli" ;; + *Gitlab*) app_install "gitlab-cli" ;; + *JavaScript*) show_install_javascript_menu ;; + *Go*) present_terminal "omasway-install-dev-env go" ;; + *PHP*) present_terminal "omasway-install-dev-env php" ;; + *Python*) present_terminal "omasway-install-dev-env python" ;; + *Rust*) present_terminal "omasway-install-dev-env rust" ;; + *) show_install_menu ;; + esac +} + +show_install_javascript_menu() { + case $(menu "Install" " Node.js\n Bun\n Deno") in + *Node*) present_terminal "omasway-install-dev-env node" ;; + *Bun*) present_terminal "omasway-install-dev-env bun" ;; + *Deno*) present_terminal "omasway-install-dev-env deno" ;; + *) show_install_development_menu ;; + esac +} + +# TODO: Add font installation +show_install_style_menu() { + case $(menu "Install" "󰸌 Theme\n Background" "--width 350") in + *Theme*) present_terminal omasway-theme-install ;; + *Background*) nautilus ~/.config/omasway/current/theme/backgrounds ;; + *) show_install_menu ;; + esac +} + +show_remove_menu() { + case $(menu "Remove" " Web App\n TUI\n󰀻 App\n󰸌 Theme" "--width 250 --height 300") in + *Web*) present_terminal omasway-webapp-remove ;; + *TUI*) present_terminal omasway-tui-remove ;; + *App*) present_terminal omasway-app-remove ;; + *Theme*) present_terminal omasway-theme-remove ;; + *) show_main_menu ;; + esac +} + +show_update_menu() { + case $(menu "Update" "󰟢 Omasway\n󰇅 Firmware\n Config\n󰸌 Themes" "--width 250 --height 300") in + *Omasway*) present_terminal omasway-update ;; + *Firmware*) present_terminal omasway-update-firmware ;; + *Config*) show_update_config_menu ;; + *Themes*) present_terminal omasway-theme-update ;; + *) show_main_menu ;; + esac +} + +show_update_config_menu() { + case $(menu "Use default config" " Starship\n Zellij\n Gnome\n󰍂 GDM\n󱣴 Plymouth\n󰌧 Wofi" "--width 250") in + *Starship*) present_terminal omasway-refresh-config starship.toml ;; + *Zellij*) present_terminal omasway-refresh-config zellij/config.kdl ;; + *Gnome*) present_terminal omasway-refresh-gnome ;; + *GDM*) present_terminal omasway-refresh-gdm ;; + *Plymouth*) present_terminal omasway-refresh-plymouth ;; + *Wofi*) present_terminal omasway-refresh-wofi ;; + *) show_update_menu ;; + esac +} + +show_main_menu() { + go_to_menu "$(menu "Go" "󰀻 Apps\n󰧑 Learn\n Style\n Setup\n󰉉 Install\n󰭌 Remove\n Update\n About" "--width 250 --height 400")" +} + +go_to_menu() { + case "${1,,}" in + *apps*) omasway-apps ;; + *learn*) show_learn_menu ;; + *style*) show_style_menu ;; + *theme*) show_theme_menu ;; + *setup*) show_setup_menu ;; + *install*) show_install_menu ;; + *remove*) show_remove_menu ;; + *update*) show_update_menu ;; + *about*) alacritty --class Omasway -o font.size=9 -e bash -c -l 'fastfetch; read -n 1 -s' ;; + esac +} + +if [[ -n "$1" ]]; then + go_to_menu "$1" +else + show_main_menu +fi diff --git a/bin/omasway-migrate b/bin/omasway-migrate new file mode 100755 index 0000000..0554e5c --- /dev/null +++ b/bin/omasway-migrate @@ -0,0 +1,20 @@ +#!/bin/bash + +set -e + +# Where we store an empty file for each migration that has already been performed. +STATE_DIR="$HOME/.local/state/omasway/migrations" +mkdir -p "$STATE_DIR" + +# Run any pending migrations +if [ -n "$(ls -A ~/.local/share/omasway/migrations/*.sh 2>/dev/null)" ]; then + for file in ~/.local/share/omasway/migrations/*.sh; do + filename=$(basename "$file") + + if [[ ! -f "$STATE_DIR/$filename" ]]; then + echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m" + source $file + touch "$STATE_DIR/$filename" + fi + done +fi \ No newline at end of file diff --git a/bin/omasway-refresh-applications b/bin/omasway-refresh-applications new file mode 100755 index 0000000..e068a81 --- /dev/null +++ b/bin/omasway-refresh-applications @@ -0,0 +1,15 @@ +#!/bin/bash + +# Copy and sync icon files +mkdir -p ~/.local/share/icons/hicolor/48x48/apps/ +cp ~/.local/share/omasway/applications/desktop/icons/*.png ~/.local/share/icons/hicolor/48x48/apps/ +gtk-update-icon-cache ~/.local/share/icons/hicolor &>/dev/null + +# Copy .desktop declarations +mkdir -p ~/.local/share/applications +cp ~/.local/share/omasway/applications/desktop/*.desktop ~/.local/share/applications/ +if [ -d ~/.local/share/omasway/applications/desktop/hidden ]; then + cp ~/.local/share/omasway/applications/desktop/hidden/*.desktop ~/.local/share/applications/ +fi + +update-desktop-database ~/.local/share/applications diff --git a/bin/omasway-refresh-config b/bin/omasway-refresh-config new file mode 100755 index 0000000..adf10fb --- /dev/null +++ b/bin/omasway-refresh-config @@ -0,0 +1,40 @@ +#!/bin/bash + +# This script deploys ~/.local/share/omasway/config/X/Y/Z -> ~/.config/X/Y/Z +config_file=$1 + +if [[ -z "$config_file" ]]; then + cat </dev/null + + # Replace config with new default + cp -f "$default_config_file" "$user_config_file" 2>/dev/null + + # Compare and delete/inform accordingly + if cmp -s "$user_config_file" "$backup_config_file"; then + rm "$backup_config_file" + else + echo -e "\e[31mReplaced $user_config_file with new Omasway default.\nSaved backup as ${backup_config_file}.\n\n\e[32mChanges:\e[0m" + diff "$user_config_file" "$backup_config_file" || true + fi +else + # Config file did not exist already + cp -f "$default_config_file" "$user_config_file" 2>/dev/null +fi diff --git a/bin/omasway-refresh-fastfetch b/bin/omasway-refresh-fastfetch new file mode 100755 index 0000000..620e6f9 --- /dev/null +++ b/bin/omasway-refresh-fastfetch @@ -0,0 +1,3 @@ +#!/bin/bash + +omasway-refresh-config fastfetch/config.jsonc diff --git a/bin/omasway-refresh-gnome b/bin/omasway-refresh-gnome new file mode 100755 index 0000000..e9e520b --- /dev/null +++ b/bin/omasway-refresh-gnome @@ -0,0 +1,21 @@ +#!/bin/bash + +gum confirm "Do you want to refresh GNOME settings? You will lose your current settings." && { + # Backup current dconf (with timestamp) to avoid clobbering (Ex: omasway.dconf.bak.1753817951) + dconf dump / > "$HOME/gnome.dconf.bak.$(date +%s)" + + # Apply dconf settings + if [ -f ~/.local/share/omasway/default/dconf/omasway.dconf ]; then + # Replace placeholder with actual background URL + temp_dconf_file=$(mktemp /tmp/omasway-gnome.XXXXXX.ini) + cp ~/.local/share/omasway/default/dconf/omasway.dconf "$temp_dconf_file" + sed -i "s|{{OMASWAY_BACKGROUND_URL}}|file://$HOME/.config/omasway/current/background|g" "$temp_dconf_file" + # Load dconf settings + dconf reset /org/gnome/ + dconf load / < "$temp_dconf_file" 2>/dev/null || echo "Error: Failed to load dconf settings from $temp_dconf_file" + rm -f "$temp_dconf_file" + else + echo "Error: dconf settings file not found at ~/.local/share/omasway/default/dconf/omasway.dconf" + exit 1 + fi +} \ No newline at end of file diff --git a/bin/omasway-refresh-plymouth b/bin/omasway-refresh-plymouth new file mode 100755 index 0000000..ee0e0b1 --- /dev/null +++ b/bin/omasway-refresh-plymouth @@ -0,0 +1,9 @@ +#!/bin/bash + +if [[ "$1" == "-y" ]]; then + sudo cp ~/.local/share/omasway/default/plymouth/* /usr/share/plymouth/themes/omasway/ + # Install the theme as an alternative + sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth /usr/share/plymouth/themes/omasway/omasway.plymouth 100 + # Set it as the default + sudo update-alternatives --set default.plymouth /usr/share/plymouth/themes/omasway/omasway.plymouth +fi diff --git a/bin/omasway-refresh-wofi b/bin/omasway-refresh-wofi new file mode 100755 index 0000000..738b1ae --- /dev/null +++ b/bin/omasway-refresh-wofi @@ -0,0 +1,5 @@ +#!/bin/bash + +omasway-refresh-config wofi/config +omasway-refresh-config wofi/style.css +omasway-refresh-config wofi/search.css diff --git a/bin/omasway-restart-xcompose b/bin/omasway-restart-xcompose new file mode 100755 index 0000000..717c400 --- /dev/null +++ b/bin/omasway-restart-xcompose @@ -0,0 +1,3 @@ +#!/bin/bash + +ibus restart diff --git a/bin/omasway-show-done b/bin/omasway-show-done new file mode 100755 index 0000000..de5fe2a --- /dev/null +++ b/bin/omasway-show-done @@ -0,0 +1,4 @@ +#!/bin/bash + +echo +gum spin --spinner "globe" --title "Done! Press any key to close..." -- bash -c 'read -n 1 -s' diff --git a/bin/omasway-show-logo b/bin/omasway-show-logo new file mode 100755 index 0000000..5e8982a --- /dev/null +++ b/bin/omasway-show-logo @@ -0,0 +1,7 @@ +#!/bin/bash + +clear +echo -e "\033[32m" +cat <~/.local/share/omasway/logo.txt +echo -e "\033[0m" +echo diff --git a/bin/omasway-state b/bin/omasway-state new file mode 100755 index 0000000..2d8d1ec --- /dev/null +++ b/bin/omasway-state @@ -0,0 +1,22 @@ +#!/bin/bash + +STATE_DIR="$HOME/.local/state/omasway" +mkdir -p "$STATE_DIR" + +COMMAND="$1" +STATE_NAME="$2" + +if [[ -z "$COMMAND" ]]; then + echo "Usage: omasway-state " + exit 1 +fi + +if [[ -z "$STATE_NAME" ]]; then + echo "Usage: omasway-state $COMMAND " + exit 1 +fi + +case "$COMMAND" in +set) touch "$STATE_DIR/$STATE_NAME" ;; +clear) find "$STATE_DIR" -maxdepth 1 -type f -name "$STATE_NAME" -delete ;; +esac diff --git a/bin/omasway-sub/appearance.sh b/bin/omasway-sub/appearance.sh deleted file mode 100644 index 24a6745..0000000 --- a/bin/omasway-sub/appearance.sh +++ /dev/null @@ -1,22 +0,0 @@ -CHOICES=( - "Theme Change the system theme" - "<< Back " -) - -CHOICE=$(gum choose "${CHOICES[@]}" --height 5 --header "Change system appearance") - -if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then - # Don't update anything - echo "" -else - APPEARANCE=$(echo "$CHOICE" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') - - case "$APPEARANCE" in - "theme") APPEARANCE_FILE="$OMASWAY_PATH/bin/omasway-sub/appearance/theme.sh" ;; - esac - - source $APPEARANCE_FILE && gum spin --spinner globe --title "Change completed!" -- sleep 3 -fi - -clear -source $OMASWAY_PATH/bin/omasway diff --git a/bin/omasway-sub/appearance/theme.sh b/bin/omasway-sub/appearance/theme.sh deleted file mode 100644 index 29149c3..0000000 --- a/bin/omasway-sub/appearance/theme.sh +++ /dev/null @@ -1,23 +0,0 @@ -THEME_NAMES=("Tokyo Night" "Catppuccin" "Nord" "Everforest" "Gruvbox" "Kanagawa") -THEME=$(gum choose "${THEME_NAMES[@]}" "<< Back" --header "Choose your theme" --height 10 | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') - -if [ -n "$THEME" ] && [ "$THEME" != "<<-back" ]; then - cp $OMAKUB_PATH/themes/$THEME/alacritty.toml ~/.config/alacritty/theme.toml - - if [ -f "$OMAKUB_PATH/themes/$THEME/btop.theme" ]; then - cp $OMAKUB_PATH/themes/$THEME/btop.theme ~/.config/btop/themes/$THEME.theme - sed -i "s/theme = \".*\"/theme = \"$THEME\"/g" ~/.config/btop/btop.conf - else - sed -i "s/theme = \".*\"/theme = \"Default\"/g" ~/.config/btop/btop.conf - fi - - if [ -d "$HOME/.config/nvim" ]; then - cp $OMAKUB_PATH/themes/$THEME/neovim.lua ~/.config/nvim/lua/plugins/theme.lua - fi - - gum spin --spinner globe --title "Theme changed!" -- sleep 3 -fi - -clear -source $OMAKUB_PATH/bin/omakub-sub/header.sh -source $OMAKUB_PATH/bin/omakub-sub/appearance.sh diff --git a/bin/omasway-sub/header.sh b/bin/omasway-sub/header.sh deleted file mode 100644 index 0e524c1..0000000 --- a/bin/omasway-sub/header.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -source $OMASWAY_PATH/ascii.sh -echo "" # Add spacing -echo " $(cat $OMASWAY_PATH/version) $(cd $OMASWAY_PATH && git branch --show-current | grep -q "dev" && echo -e "\033[0;33m(dev)\033[0m" || echo "")" -echo "" # Add spacing - diff --git a/bin/omasway-sub/helper.sh b/bin/omasway-sub/helper.sh deleted file mode 100644 index 1224c15..0000000 --- a/bin/omasway-sub/helper.sh +++ /dev/null @@ -1,37 +0,0 @@ -# This script checks if there is a new version of Omasway available - -# Check if current git branch is main -current_branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) -if [ "$current_branch" != "main" ]; then - # Return silently if not on main branch - return 0 2>/dev/null || true -fi - -# Check if the script is running in a git repository -if ! git rev-parse --is-inside-work-tree &>/dev/null; then - # Return silently if not in a git repository - return 0 2>/dev/null || true -fi - -# Try to fetch the latest release tag from GitHub API (with a timeout of 3 seconds) -if timeout 3 curl -s --head "https://api.github.com/repos/Kasui92/omasway/releases/latest" &>/dev/null; then - # Check if the last release tag is available - last_release_tag=$(curl -s "https://api.github.com/repos/Kasui92/omasway/releases/latest" | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4) - - # Check if the last release tag is not empty and if the version file exists - if [ -n "$last_release_tag" ] && [ -f "$OMASWAY_PATH/version" ]; then - last_release_number=${last_release_tag#v} - last_release_number=${last_release_number//./} - - local_version_tag=$(cat "$OMASWAY_PATH/version") - local_version_number=${local_version_tag#v} - local_version_number=${local_version_number//./} - - # Compare the last release number with the local version number - if [ "$last_release_number" -gt "$local_version_number" ]; then - echo -e "\033[1;35mA new version of Omasway is available! \033[1m\033[32m($last_release_tag)\033[0m" - echo "" # Add spacing - fi - fi -fi - diff --git a/bin/omasway-sub/install.sh b/bin/omasway-sub/install.sh deleted file mode 100644 index aaa9503..0000000 --- a/bin/omasway-sub/install.sh +++ /dev/null @@ -1,37 +0,0 @@ -CHOICES=( - "Mainline Kernels Install newer Linux kernels than Ubuntu defaults" - "FlameShot Screenshot tool with annotation" - "Libreoffice Free and open source office suite" - "LocalSend Send files to nearby devices" - "Pinta Simple and easy to use drawing program" - "Spotify Stream music from the world's most popular service" - "Visual Studio Code Source code editor with support for development operations" - "Xournalpp Note taking and PDF annotation application" - "> All Re-run any of the default installers" - "<< Back " -) - -CHOICE=$(gum choose "${CHOICES[@]}" --height 23 --header "Install application") - -if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then - # Don't install anything - echo "" -elif [[ "$CHOICE" == "> All"* ]]; then - INSTALLER_FILE=$(gum file $OMASWAY_PATH/install) - - [[ -n "$INSTALLER_FILE" ]] && - gum confirm "Run installer?" && - source $INSTALLER_FILE && - gum spin --spinner globe --title "Install completed!" -- sleep 3 -else - INSTALLER=$(echo "$CHOICE" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') - - case "$INSTALLER" in - *) INSTALLER_FILE="$OMASWAY_PATH/install/optional/app-$INSTALLER.sh" ;; - esac - - source $INSTALLER_FILE && gum spin --spinner globe --title "Install completed!" -- sleep 3 -fi - -clear -source $OMASWAY_PATH/bin/omasway diff --git a/bin/omasway-sub/manual.sh b/bin/omasway-sub/manual.sh deleted file mode 100644 index 06cb1c3..0000000 --- a/bin/omasway-sub/manual.sh +++ /dev/null @@ -1,4 +0,0 @@ -if ! xdg-open "https://github.com/Kasui92/omasway/wiki" &>/dev/null; then - echo -e "\nUnable to open the manual in your browser." -fi -source $OMASWAY_PATH/bin/omasway-sub/menu.sh diff --git a/bin/omasway-sub/menu.sh b/bin/omasway-sub/menu.sh deleted file mode 100644 index c91dae8..0000000 --- a/bin/omasway-sub/menu.sh +++ /dev/null @@ -1,19 +0,0 @@ -CHOICES=( - "Appearance " - "Update " - "Install " - "Uninstall " - "Manual " - "Quit " -) - -CHOICE=$(gum choose "${CHOICES[@]}" --height 10 --header "") - -if [[ "$CHOICE" == "Quit"* ]] || [[ -z "$CHOICE" ]]; then - clear - exit 0 -else - MENU=$(echo "$CHOICE" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') - source $OMASWAY_PATH/bin/omasway-sub/$MENU.sh -fi - diff --git a/bin/omasway-sub/uninstall.sh b/bin/omasway-sub/uninstall.sh deleted file mode 100644 index f2883f7..0000000 --- a/bin/omasway-sub/uninstall.sh +++ /dev/null @@ -1,43 +0,0 @@ -CHOICES=( - "Docker " - "Mainline Kernels " - "Firefox " - "NeoVim " - "Libreoffice " - "LocalSend " - "Pinta " - "Spotify " - "Visual Studio Code" - "Xournalpp " - "> All Remove all applications" - "<< Back " -) - -CHOICE=$(gum choose "${CHOICES[@]}" --height 29 --header "Uninstall application") - -if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then - # Don't install anything - echo "" -elif [[ "$CHOICE" == "> All"* ]]; then - UNINSTALLER_FILE=$(gum file $OMASWAY_PATH/uninstall) - - [[ -n "$UNINSTALLER_FILE" ]] && - gum confirm "Run uninstaller?" && - source $UNINSTALLER_FILE && - gum spin --spinner globe --title "Uninstall completed!" -- sleep 3 -else - UNINSTALLER=$(echo "$CHOICE" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') - - case "$UNINSTALLER" in - "docker") UNINSTALLER_FILE="$OMASWAY_PATH/uninstall/docker.sh" ;; - *) UNINSTALLER_FILE="$OMASWAY_PATH/uninstall/app-$UNINSTALLER.sh" ;; - esac - - [[ -n "$UNINSTALLER_FILE" ]] && - gum confirm "Run uninstaller?" && - source $UNINSTALLER_FILE && - gum spin --spinner globe --title "Uninstall completed!" -- sleep 3 -fi - -clear -source $OMASWAY_PATH/bin/omasway diff --git a/bin/omasway-sub/update.sh b/bin/omasway-sub/update.sh deleted file mode 100644 index 2696b5b..0000000 --- a/bin/omasway-sub/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -CHOICES=( - "Omasway Update Omasway itself and run any migrations" - "System Update all system packages and remove unused packages" - "Firmware Update firmware packages" - "<< Back " -) - -CHOICE=$(gum choose "${CHOICES[@]}" --height 10 --header "Update manually-managed applications") - -if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then - # Don't update anything - echo "" -else - INSTALLER=$(echo "$CHOICE" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') - - case "$INSTALLER" in - "omasway") INSTALLER_FILE="$OMASWAY_PATH/bin/omasway-sub/update/migrate.sh" ;; - "system") INSTALLER_FILE="$OMASWAY_PATH/bin/omasway-sub/update/update-system.sh" ;; - "firmware") INSTALLER_FILE="$OMASWAY_PATH/bin/omasway-sub/update/update-firmware.sh" ;; - esac - - source $INSTALLER_FILE && gum spin --spinner globe --title "Update completed!" -- sleep 3 -fi - -clear -source $OMASWAY_PATH/bin/omasway diff --git a/bin/omasway-sub/update/migrate.sh b/bin/omasway-sub/update/migrate.sh deleted file mode 100644 index b59885d..0000000 --- a/bin/omasway-sub/update/migrate.sh +++ /dev/null @@ -1,18 +0,0 @@ -cd $OMASWAY_PATH -last_updated_at=$(git log -1 --format=%cd --date=unix) -git pull - -if [ -d "$OMASWAY_PATH/migrations" ] && [ "$(ls -A $OMASWAY_PATH/migrations)" ]; then - for file in $OMASWAY_PATH/migrations/*.sh; do - filename=$(basename "$file") - migrate_at="${filename%.sh}" - - if [ $migrate_at -gt $last_updated_at ]; then - echo "Running migration for $migrate_at" - source $file - fi - done -fi - -cd - - diff --git a/bin/omasway-sub/update/update-system.sh b/bin/omasway-sub/update/update-system.sh deleted file mode 100644 index 17f4411..0000000 --- a/bin/omasway-sub/update/update-system.sh +++ /dev/null @@ -1,6 +0,0 @@ -sudo apt -y update -sudo apt -y upgrade -sudo apt -y dist-upgrade -sudo apt -y autoremove -sudo apt -y clean - diff --git a/bin/omasway-theme-bg-next b/bin/omasway-theme-bg-next new file mode 100755 index 0000000..53f5769 --- /dev/null +++ b/bin/omasway-theme-bg-next @@ -0,0 +1,49 @@ +#!/bin/bash + +# Cycles through the background images available + +BACKGROUNDS_DIR="$HOME/.config/omasway/current/theme/backgrounds/" +CURRENT_BACKGROUND_LINK="$HOME/.config/omasway/current/background" + +mapfile -d '' -t BACKGROUNDS < <(find "$BACKGROUNDS_DIR" -type f -print0 | sort -z) +TOTAL=${#BACKGROUNDS[@]} + +if [[ $TOTAL -eq 0 ]]; then + notify-send "No background was found for theme" -t 2000 + gsettings set org.gnome.desktop.background picture-uri 'file:///usr/share/backgrounds/warty-final-ubuntu.png' + gsettings set org.gnome.desktop.background picture-uri-dark 'file:///usr/share/backgrounds/warty-final-ubuntu.png' +else + # Get current background from symlink + if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then + CURRENT_BACKGROUND=$(readlink "$CURRENT_BACKGROUND_LINK") + else + # Default to first background if no symlink exists + CURRENT_BACKGROUND="" + fi + + # Find current background index + INDEX=-1 + for i in "${!BACKGROUNDS[@]}"; do + if [[ "${BACKGROUNDS[$i]}" == "$CURRENT_BACKGROUND" ]]; then + INDEX=$i + break + fi + done + + # Get next background (wrap around) + if [[ $INDEX -eq -1 ]]; then + # Use the first background when no match was found + NEW_BACKGROUND="${BACKGROUNDS[0]}" + else + NEXT_INDEX=$(((INDEX + 1) % TOTAL)) + NEW_BACKGROUND="${BACKGROUNDS[$NEXT_INDEX]}" + fi + + # Set new background symlink + ln -nsf "$NEW_BACKGROUND" "$CURRENT_BACKGROUND_LINK" + + # Update GNOME background settings + gsettings set org.gnome.desktop.background picture-uri $CURRENT_BACKGROUND_LINK + gsettings set org.gnome.desktop.background picture-uri-dark $CURRENT_BACKGROUND_LINK + gsettings set org.gnome.desktop.background picture-options 'zoom' +fi diff --git a/bin/omasway-theme-current b/bin/omasway-theme-current new file mode 100755 index 0000000..46fb84a --- /dev/null +++ b/bin/omasway-theme-current @@ -0,0 +1,3 @@ +#!/bin/bash + +basename "$(realpath "$HOME/.config/omasway/current/theme")" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g' \ No newline at end of file diff --git a/bin/omasway-theme-install b/bin/omasway-theme-install new file mode 100755 index 0000000..23fcacf --- /dev/null +++ b/bin/omasway-theme-install @@ -0,0 +1,32 @@ +#!/bin/bash + +# omasway-theme-install: Install a new theme from a git repo for Omasway +# Usage: omasway-theme-install + +if [ -z "$1" ]; then + REPO_URL=$(gum input --placeholder="Git repo URL for theme" --header="") +else + REPO_URL="$1" +fi + +if [ -z "$REPO_URL" ]; then + exit 1 +fi + +THEMES_DIR="$HOME/.config/omasway/themes" +THEME_NAME=$(basename "$REPO_URL" .git | sed -E 's/^omasway-//; s/-theme$//') +THEME_PATH="$THEMES_DIR/$THEME_NAME" + +# Remove existing theme if present +if [ -d "$THEME_PATH" ]; then + rm -rf "$THEME_PATH" +fi + +# Clone the repo directly to ~/.config/omasway/themes +if ! git clone "$REPO_URL" "$THEME_PATH"; then + echo "Error: Failed to clone theme repo." + exit 1 +fi + +# Apply the new theme with omasway-theme-set +omasway-theme-set $THEME_NAME diff --git a/bin/omasway-theme-list b/bin/omasway-theme-list new file mode 100755 index 0000000..1d0737b --- /dev/null +++ b/bin/omasway-theme-list @@ -0,0 +1,5 @@ +#!/bin/bash + +find ~/.config/omasway/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | sort | while read -r path; do + echo "$(basename "$path" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')" +done diff --git a/bin/omasway-theme-next b/bin/omasway-theme-next new file mode 100755 index 0000000..ec6c75d --- /dev/null +++ b/bin/omasway-theme-next @@ -0,0 +1,34 @@ +#!/bin/bash + +THEMES_DIR="$HOME/.config/omasway/themes/" +CURRENT_THEME_LINK="$HOME/.config/omasway/current/theme" + +THEMES=($(find "$THEMES_DIR" -mindepth 1 -maxdepth 1 | sort)) +TOTAL=${#THEMES[@]} + +# Get current theme from symlink +if [[ -L "$CURRENT_THEME_LINK" ]]; then + CURRENT_THEME=$(realpath "$CURRENT_THEME_LINK") +else + # Default to first theme if no symlink exists + CURRENT_THEME=$(realpath "${THEMES[0]}") +fi + +# Find current theme index +INDEX=0 +for i in "${!THEMES[@]}"; do + THEMES[$i]=$(realpath "${THEMES[$i]}") + + if [[ "${THEMES[$i]}" == "$CURRENT_THEME" ]]; then + INDEX=$i + break + fi +done + +# Get next theme (wrap around) +NEXT_INDEX=$(((INDEX + 1) % TOTAL)) +NEW_THEME=${THEMES[$NEXT_INDEX]} +NEW_THEME_NAME=$(basename "$NEW_THEME") + +omasway-theme-set $NEW_THEME_NAME +notify-send "Theme changed to $NEW_THEME_NAME" -t 2000 diff --git a/bin/omasway-theme-remove b/bin/omasway-theme-remove new file mode 100755 index 0000000..7443474 --- /dev/null +++ b/bin/omasway-theme-remove @@ -0,0 +1,40 @@ +#!/bin/bash + +# omasway-theme-remove: Remove a theme from Omasway by name +# Usage: omasway-theme-remove + +if [ -z "$1" ]; then + mapfile -t extra_themes < <(find ~/.config/omasway/themes -mindepth 1 -maxdepth 1 -type d ! -xtype l -printf '%f\n') + + if [[ ${#extra_themes[@]} -gt 0 ]]; then + THEME_NAME=$(gum choose --header="Remove extra theme" "${extra_themes[@]}") + else + echo "No extra themes installed." + exit 1 + fi +else + THEME_NAME="$1" +fi + +THEMES_DIR="$HOME/.config/omasway/themes" +CURRENT_DIR="$HOME/.config/omasway/current" +THEME_PATH="$THEMES_DIR/$THEME_NAME" + +# Ensure a theme was set +if [ -z "$THEME_NAME" ]; then + exit 1 +fi + +# Check if theme exists before attempting removal +if [ ! -d "$THEME_PATH" ]; then + echo "Error: Theme '$THEME_NAME' not found." + exit 1 +fi + +# Move to the next theme if the current theme is the one being removed +if [ "$(readlink -f "$CURRENT_DIR/theme")" = "$(readlink -f "$THEME_PATH")" ]; then + omasway-theme-next +fi + +# Now remove the theme directory for THEME_NAME +rm -rf "$THEME_PATH" diff --git a/bin/omasway-theme-set b/bin/omasway-theme-set new file mode 100755 index 0000000..88cd45d --- /dev/null +++ b/bin/omasway-theme-set @@ -0,0 +1,117 @@ +#!/bin/bash + +# omasway-theme-set: Set a theme, specified by its name. +# Usage: omasway-theme-set + +if [[ -z "$1" && "$1" != "CNCLD" ]]; then + echo "Usage: omasway-theme-set " >&2 + exit 1 +fi + +THEMES_DIR="$HOME/.config/omasway/themes/" +CURRENT_THEME_DIR="$HOME/.config/omasway/current/theme" + +THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-') +THEME_PATH="$THEMES_DIR/$THEME_NAME" + +# Check if the theme entered exists +if [[ ! -d "$THEME_PATH" ]]; then + echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR" >&2 + exit 2 +fi + +# Update theme symlinks +ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR" + +# Change gnome modes +if [[ -f ~/.config/omasway/current/theme/gnome.theme ]]; then + OMASWAY_THEME_COLOR=$(<~/.config/omasway/current/theme/gnome.theme) +else + OMASWAY_THEME_COLOR="blue" +fi + +if [[ -f ~/.config/omasway/current/theme/light.mode ]]; then + gsettings set org.gnome.desktop.interface color-scheme "prefer-light" + gsettings set org.gnome.desktop.interface gtk-theme "Yaru-$OMASWAY_THEME_COLOR" + gsettings set org.gnome.shell.extensions.user-theme name "Yaru-$OMASWAY_THEME_COLOR" +else + gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" + gsettings set org.gnome.desktop.interface gtk-theme "Yaru-$OMASWAY_THEME_COLOR-dark" + gsettings set org.gnome.shell.extensions.user-theme name "Yaru-$OMASWAY_THEME_COLOR-dark" +fi +gsettings set org.gnome.desktop.interface accent-color "$OMASWAY_THEME_COLOR" 2>/dev/null || true + +# Change gnome cursor theme color +if [[ -f ~/.config/omasway/current/theme/cursor.theme ]]; then + gsettings set org.gnome.desktop.interface cursor-theme "$(<~/.config/omasway/current/theme/cursor.theme)" +else + gsettings set org.gnome.desktop.interface cursor-theme "Yaru" +fi + +# Change gnome icon theme color +if [[ -f ~/.config/omasway/current/theme/icons.theme ]]; then + gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omasway/current/theme/icons.theme)" +else + gsettings set org.gnome.desktop.interface icon-theme "Yaru-$OMASWAY_THEME_COLOR" +fi + +# Change gnome extensions theme +if [[ -f ~/.config/omasway/current/theme/tophat.theme ]]; then + gsettings set org.gnome.shell.extensions.tophat meter-fg-color "$(<~/.config/omasway/current/theme/tophat.theme)" +else + if [[ -f ~/.config/omasway/current/theme/light.mode ]]; then + gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#e92020" + else + gsettings set org.gnome.shell.extensions.tophat meter-fg-color "#33ccff" + fi +fi + +# Change vscode colors +if command -v code &>/dev/null; then + if [[ -f ~/.config/omasway/current/theme/vscode.theme ]]; then + declare -A vscode + source ~/.config/omasway/current/theme/vscode.theme + + # Install extension if specified + if [[ -n "${vscode[extension]}" ]]; then + code --install-extension "${vscode[extension]}" --force + fi + + # Set theme if specified + if [[ -n "${vscode[theme]}" ]]; then + sed -i "s/\"workbench.colorTheme\": \".*\"/\"workbench.colorTheme\": \"${vscode[theme]}\"/g" ~/.config/Code/User/settings.json + fi + # Fallback to default themes + else + if [[ -f ~/.config/omasway/current/theme/light.mode ]]; then + sed -i "s/\"workbench.colorTheme\": \".*\"/\"workbench.colorTheme\": \"Default Light+\"/g" ~/.config/Code/User/settings.json + else + sed -i "s/\"workbench.colorTheme\": \".*\"/\"workbench.colorTheme\": \"Default Dark+\"/g" ~/.config/Code/User/settings.json + fi + fi +fi + +# Change Chromium colors +if command -v chromium &>/dev/null; then + if [[ -f ~/.config/omasway/current/theme/light.mode ]]; then + chromium --no-startup-window --set-color-scheme="light" + else + chromium --no-startup-window --set-color-scheme="dark" + fi + + if [[ -f ~/.config/omasway/current/theme/chromium.theme ]]; then + chromium --no-startup-window --set-theme-color="$(<~/.config/omasway/current/theme/chromium.theme)" + else + # Use a default, neutral grey if theme doesn't have a color + chromium --no-startup-window --set-theme-color="28,32,39" + fi +fi + +# Touch alacritty config to pickup the changed theme +touch "$HOME/.config/alacritty/alacritty.toml" + +# Restart components to apply new theme +pkill -SIGUSR2 btop + +# Set new background +omasway-theme-bg-next \ No newline at end of file diff --git a/bin/omasway-theme-update b/bin/omasway-theme-update new file mode 100755 index 0000000..ebb123e --- /dev/null +++ b/bin/omasway-theme-update @@ -0,0 +1,5 @@ +#!/bin/bash + +for dir in ~/.config/omasway/themes/*/; do + [ -d "$dir" ] && [ ! -L "${dir%/}" ] && echo "Updating: $(basename "$dir")" && git -C "$dir" pull +done diff --git a/bin/omasway-tui-install b/bin/omasway-tui-install new file mode 100755 index 0000000..a15d364 --- /dev/null +++ b/bin/omasway-tui-install @@ -0,0 +1,54 @@ +#!/bin/bash + +if [ "$#" -ne 4 ]; then + echo -e "\e[32mLet's create a TUI shortcut you can start with the app launcher.\n\e[0m" + APP_NAME=$(gum input --prompt "Name> " --placeholder "My TUI") + APP_EXEC=$(gum input --prompt "Launch Command> " --placeholder "lazydocker or bash -c 'dust; read -n 1 -s'") + WINDOW_STYLE=$(gum choose --header "Window style" float tile) + ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)") +else + APP_NAME="$1" + APP_EXEC="$2" + WINDOW_STYLE="$3" + ICON_URL="$4" +fi + +if [[ -z "$APP_NAME" || -z "$APP_EXEC" || -z "$ICON_URL" ]]; then + echo "You must set app name, app command, and icon URL!" + exit 1 +fi + +ICON_DIR="$HOME/.local/share/applications/icons" +DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop" +ICON_PATH="$ICON_DIR/$APP_NAME.png" + +mkdir -p "$ICON_DIR" + +if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then + echo "Error: Failed to download icon." + return 1 +fi + +if [[ $WINDOW_STYLE == "float" ]]; then + APP_CLASS="TUI.float" +else + APP_CLASS="TUI.tile" +fi + +cat >"$DESKTOP_FILE" < /dev/null; then + echo -e "\e[32m\nUpdate flatpak packages\e[0m" + flatpak update -y +fi \ No newline at end of file diff --git a/bin/omasway-version b/bin/omasway-version new file mode 100755 index 0000000..90fc919 --- /dev/null +++ b/bin/omasway-version @@ -0,0 +1,3 @@ +#!/bin/bash + +git -C "$OMASWAY_PATH" describe --tags $(git -C "$OMASWAY_PATH" rev-list --tags --max-count=1) diff --git a/bin/omasway-version-branch b/bin/omasway-version-branch new file mode 100755 index 0000000..e6f3977 --- /dev/null +++ b/bin/omasway-version-branch @@ -0,0 +1,3 @@ +#!/bin/bash + +echo $(git -C "$OMASWAY_PATH" rev-parse --abbrev-ref HEAD) diff --git a/bin/omasway-webapp-install b/bin/omasway-webapp-install new file mode 100755 index 0000000..50accb7 --- /dev/null +++ b/bin/omasway-webapp-install @@ -0,0 +1,48 @@ +#!/bin/bash + +if [ "$#" -ne 3 ]; then + echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m" + APP_NAME=$(gum input --prompt "Name> " --placeholder "My favorite web app") + APP_URL=$(gum input --prompt "URL> " --placeholder "https://example.com") + ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)") +else + APP_NAME="$1" + APP_URL="$2" + ICON_URL="$3" +fi + +if [[ -z "$APP_NAME" || -z "$APP_URL" || -z "$ICON_URL" ]]; then + echo "You must set app name, app URL, and icon URL!" + exit 1 +fi + +ICON_DIR="$HOME/.local/share/applications/icons" +DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop" +ICON_PATH="$ICON_DIR/$APP_NAME.png" + +mkdir -p "$ICON_DIR" + +if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then + echo "Error: Failed to download icon." + return 1 +fi + +cat >"$DESKTOP_FILE" < /dev/null; then + pkill wofi +fi + +exec wofi $@ \ No newline at end of file diff --git a/boot.sh b/boot.sh index 9957440..fa4fe7e 100755 --- a/boot.sh +++ b/boot.sh @@ -1,40 +1,33 @@ +#!/bin/bash + set -o pipefail ascii_art=' ██████╗ ███╗ ███╗ █████╗ ███████╗██╗ ██╗ █████╗ ██╗ ██╗ ██╔═══██╗████╗ ████║██╔══██╗██╔════╝██║ ██║██╔══██╗╚██╗ ██╔╝ -██║ ██║██╔████╔██║███████║███████╗██║ █╗ ██║███████║ ╚████╔╝ -██║ ██║██║╚██╔╝██║██╔══██║╚════██║██║███╗██║██╔══██║ ╚██╔╝ -╚██████╔╝██║ ╚═╝ ██║██║ ██║███████║╚███╔███╔╝██║ ██║ ██║ - ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ +██║ ██║██╔████╔██║███████║███████╗██║ █╗ ██║███████║ ╚████╔╝ +██║ ██║██║╚██╔╝██║██╔══██║╚════██║██║███╗██║██╔══██║ ╚██╔╝ +╚██████╔╝██║ ╚═╝ ██║██║ ██║███████║╚███╔███╔╝██║ ██║ ██║ + ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ ' - -# ANSI escape -color='\033[38;2;27;74;73m' -reset='\033[0m' - -# Apply colors -echo -IFS=$'\n' read -rd '' -a lines <<<"$ascii_art" -for line in "${lines[@]}"; do - echo -e "${color}${line}" -done - -# Reset colors -echo -e "$reset" +clear +echo -e "\n$ascii_art\n" sudo apt-get update >/dev/null sudo apt-get install -y git >/dev/null -echo -e "\nCloning Omasway..." +# Use custom repo if specified, otherwise use default +OMASWAY_REPO="${OMASWAY_REPO:-Kasui92/omasway}" + +echo -e "\e[32m\nCloning Omasway...\e[0m" rm -rf ~/.local/share/omasway -git clone https://github.com/Kasui92/omasway.git ~/.local/share/omasway >/dev/null +git clone https://github.com/$OMASWAY_REPO.git ~/.local/share/omasway >/dev/null -if [[ $OMASWAY_REF ]]; then - echo -e "\nUsing branch: $OMASWAY_REF" - cd ~/.local/share/omasway - git fetch origin "${OMASWAY_REF}" && git checkout "${OMASWAY_REF}" - cd - +if [[ -n "$OMASWAY_REF" ]]; then + echo -e "\e[32mUsing branch: $OMASWAY_REF\e[0m" + cd ~/.local/share/omasway + git fetch origin "${OMASWAY_REF}" && git checkout "${OMASWAY_REF}" + cd - fi echo -e "\nInstallation starting..." diff --git a/config/alacritty/alacritty.toml b/config/alacritty/alacritty.toml index f074596..460e4ef 100644 --- a/config/alacritty/alacritty.toml +++ b/config/alacritty/alacritty.toml @@ -18,4 +18,4 @@ opacity = 0.98 [keyboard] bindings = [ { key = "F11", action = "ToggleFullscreen" } -] +] \ No newline at end of file diff --git a/config/brave-flags.conf b/config/brave-flags.conf new file mode 100644 index 0000000..d6d120e --- /dev/null +++ b/config/brave-flags.conf @@ -0,0 +1,3 @@ +--ozone-platform=wayland +--ozone-platform-hint=wayland +--enable-features=TouchpadOverscrollHistoryNavigation diff --git a/config/btop/btop.conf b/config/btop/btop.conf index cc9176f..7d2da4e 100644 --- a/config/btop/btop.conf +++ b/config/btop/btop.conf @@ -242,4 +242,4 @@ custom_gpu_name3 = "" custom_gpu_name4 = "" #* Custom gpu5 model name, empty string to disable. -custom_gpu_name5 = "" +custom_gpu_name5 = "" \ No newline at end of file diff --git a/config/chromium-flags.conf b/config/chromium-flags.conf new file mode 100644 index 0000000..d6d120e --- /dev/null +++ b/config/chromium-flags.conf @@ -0,0 +1,3 @@ +--ozone-platform=wayland +--ozone-platform-hint=wayland +--enable-features=TouchpadOverscrollHistoryNavigation diff --git a/config/chromium/Default/Preferences b/config/chromium/Default/Preferences new file mode 100644 index 0000000..946204c --- /dev/null +++ b/config/chromium/Default/Preferences @@ -0,0 +1,15 @@ +{ + "extensions": { + "theme": { + "id": "", + "use_system": false, + "use_custom": false + } + }, + "browser": { + "theme": { + "color_scheme": 2, + "user_color": 2 + } + } +} \ No newline at end of file diff --git a/config/environment.d/fcitx.conf b/config/environment.d/fcitx.conf new file mode 100644 index 0000000..ecedbcc --- /dev/null +++ b/config/environment.d/fcitx.conf @@ -0,0 +1,4 @@ +INPUT_METHOD=fcitx +QT_IM_MODULE=fcitx +XMODIFIERS=@im=fcitx +SDL_IM_MODULE=fcitx diff --git a/config/fastfetch/config.jsonc b/config/fastfetch/config.jsonc index 687e919..c86a5e1 100644 --- a/config/fastfetch/config.jsonc +++ b/config/fastfetch/config.jsonc @@ -1,143 +1,140 @@ { - "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", - "logo": { - "padding": { - "top": 5, - "right": 6 - } - }, - "modules": [ - "break", - { - "type": "custom", - "format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐" - }, - { - "type": "host", - "key": " PC", - "keyColor": "green" - }, - { - "type": "cpu", - "key": "│ ├", - "showPeCoreCount": true, - "keyColor": "green" - }, - { - "type": "gpu", - "key": "│ ├", - "detectionMethod": "pci", - "keyColor": "green" - }, - { - "type": "display", - "key": "│ ├󱄄", - "keyColor": "green" - }, - { - "type": "disk", - "key": "│ ├󰋊", - "keyColor": "green" - }, - { - "type": "memory", - "key": "│ ├", - "keyColor": "green" - }, - { - "type": "swap", - "key": "└ └󰓡 ", - "keyColor": "green" - }, - { - "type": "custom", - "format": "\u001b[90m└────────────────────────────────────────────────────┘" - }, - "break", - { - "type": "custom", - "format": "\u001b[90m┌──────────────────────Software──────────────────────┐" - }, - { - "type": "os", - "key": " OS", - "keyColor": "yellow" - }, - { - "type": "kernel", - "key": "│ ├", - "keyColor": "yellow" - }, - { - "type": "packages", - "key": "│ ├󰏖", - "keyColor": "yellow" - }, - { - "type": "shell", - "key": "└ └", - "keyColor": "yellow" - }, - "break", - { - "type": "de", - "key": " DE", - "keyColor": "blue" - }, - { - "type": "wm", - "key": "│ ├", - "keyColor": "blue" - }, - { - "type": "wmtheme", - "key": "│ ├󰉼", - "keyColor": "blue" - }, - { - "type": "icons", - "key": "│ ├󰀻", - "keyColor": "blue" - }, - { - "type": "cursor", - "key": "│ ├", - "keyColor": "blue" - }, - { - "type": "terminalfont", - "key": "│ ├", - "keyColor": "blue" - }, - { - "type": "terminal", - "key": "└ └", - "keyColor": "blue" - }, - { - "type": "custom", - "format": "\u001b[90m└────────────────────────────────────────────────────┘" - }, - "break", - { - "type": "custom", - "format": "\u001b[90m┌────────────────────Uptime / Age────────────────────┐" - }, - { - "type": "command", - "key": " OS Age ", - "keyColor": "magenta", - "text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days" - }, - { - "type": "uptime", - "key": " Uptime ", - "keyColor": "magenta" - }, - { - "type": "custom", - "format": "\u001b[90m└────────────────────────────────────────────────────┘" - }, - "break" - ] + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "padding": { + "top": 5, + "right": 6 + } + }, + "modules": [ + "break", + { + "type": "custom", + "format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐" + }, + { + "type": "host", + "key": " PC", + "keyColor": "green" + }, + { + "type": "cpu", + "key": "│ ├", + "showPeCoreCount": true, + "keyColor": "green" + }, + { + "type": "gpu", + "key": "│ ├", + "detectionMethod": "pci", + "keyColor": "green" + }, + { + "type": "display", + "key": "│ ├󱄄", + "keyColor": "green" + }, + { + "type": "disk", + "key": "│ ├󰋊", + "keyColor": "green" + }, + { + "type": "memory", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "swap", + "key": "└ └󰓡 ", + "keyColor": "green" + }, + { + "type": "custom", + "format": "\u001b[90m└────────────────────────────────────────────────────┘" + }, + "break", + { + "type": "custom", + "format": "\u001b[90m┌──────────────────────Software──────────────────────┐" + }, + { + "type": "command", + "key": "󰟢 OS", + "keyColor": "blue", + "text": "version=$(omasway-version); echo \"Omasway $version\"" + }, + { + "type": "command", + "key": "│ ├󰘬", + "keyColor": "blue", + "text": "branch=$(omasway-version-branch); echo \"$branch\"" + }, + { + "type": "kernel", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "de", + "key": "│ ├ ", + "keyColor": "blue" + }, + { + "type": "wm", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "terminal", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "packages", + "key": "│ ├󰏖", + "keyColor": "blue" + }, + { + "type": "wmtheme", + "key": "│ ├󰉼", + "keyColor": "blue" + }, + { + "type": "command", + "key": "│ ├󰸌", + "keyColor": "blue", + "text": "theme=$(omasway-theme-current); echo \"$theme \\e[38m●\\e[37m●\\e[36m●\\e[35m●\\e[34m●\\e[33m●\\e[32m●\\e[31m●\"" + }, + { + "type": "terminalfont", + "key": "└ └", + "keyColor": "blue" + }, + { + "type": "custom", + "format": "\u001b[90m└────────────────────────────────────────────────────┘" + }, + "break", + { + "type": "custom", + "format": "\u001b[90m┌────────────────────Uptime / Age────────────────────┐" + }, + { + "type": "command", + "key": "󱦟 OS Age", + "keyColor": "magenta", + "text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days" + }, + { + "type": "uptime", + "key": "󱫐 Uptime", + "keyColor": "magenta" + }, + { + "type": "custom", + "format": "\u001b[90m└────────────────────────────────────────────────────┘" + }, + "break" + ] } diff --git a/config/fcitx5/conf/xcb.conf b/config/fcitx5/conf/xcb.conf new file mode 100644 index 0000000..90f5316 --- /dev/null +++ b/config/fcitx5/conf/xcb.conf @@ -0,0 +1 @@ +Allow Overriding System XKB Settings=False diff --git a/config/starship.toml b/config/starship.toml new file mode 100644 index 0000000..d5c6f08 --- /dev/null +++ b/config/starship.toml @@ -0,0 +1,32 @@ +add_newline = true +command_timeout = 200 +format = "[$directory$git_branch$git_status]($style)$character" + +[character] +error_symbol = "[✗](bold cyan)" +success_symbol = "[❯](bold cyan)" + +[directory] +truncation_length = 2 +truncation_symbol = "…/" +repo_root_style = "bold cyan" +repo_root_format = "[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) " + +[git_branch] +format = "[$branch]($style) " +style = "italic cyan" + +[git_status] +format = '[$all_status]($style)' +style = "cyan" +ahead = "⇡${count} " +diverged = "⇕⇡${ahead_count}⇣${behind_count} " +behind = "⇣${count} " +conflicted = " " +up_to_date = " " +untracked = "? " +modified = " " +stashed = "" +staged = "" +renamed = "" +deleted = "" \ No newline at end of file diff --git a/config/sway/config b/config/sway/config index fa2ff01..7f25996 100644 --- a/config/sway/config +++ b/config/sway/config @@ -1,15 +1,32 @@ -# Use defaults Omasway defaults +# Globals variables +include /etc/sway/config-vars.d/* + +# Omasway variables include ~/.local/share/omasway/default/sway/variables + +# User variables +include $HOME/.config/sway/variables.d/*.conf + +# Autostart applications include ~/.local/share/omasway/default/sway/autostart -include ~/.local/share/omasway/default/sway/input +# Globals defaults +include /etc/sway/config.d/*.conf +# Omasway defaults +include ~/.local/share/omasway/default/sway/input include ~/.local/share/omasway/default/sway/bindings/tiling include ~/.local/share/omasway/default/sway/bindings/utilities include ~/.local/share/omasway/default/sway/bindings/media - include ~/.local/share/omasway/default/sway/looknfeel + +# Users defaults +include $HOME/.config/sway/config.d/*.conf + +# Omasway theme include ~/.config/omasway/current/theme/sway.conf -# Include the default sway config -include /etc/sway/config.d/* +# Keyboard Layout +include ~/.config/sway/keyboard + + diff --git a/config/swayosd/config.toml b/config/swayosd/config.toml new file mode 100644 index 0000000..598c1f2 --- /dev/null +++ b/config/swayosd/config.toml @@ -0,0 +1,4 @@ +[server] +show_percentage = true +max_volume = 100 +style = "./style.css" diff --git a/config/swayosd/style.css b/config/swayosd/style.css new file mode 100644 index 0000000..7c887a1 --- /dev/null +++ b/config/swayosd/style.css @@ -0,0 +1,28 @@ +@import "../omasway/current/theme/swayosd.css"; + +window { + border-radius: 0; + opacity: 0.97; + border: 2px solid @border-color; + + background-color: @background-color; +} + +label { + font-family: "CaskaydiaMono Nerd Font"; + font-size: 11pt; + + color: @label; +} + +image { + color: @image; +} + +progressbar { + border-radius: 0; +} + +progress { + background-color: @progress; +} diff --git a/config/uwsm/env b/config/uwsm/env new file mode 100644 index 0000000..80e464a --- /dev/null +++ b/config/uwsm/env @@ -0,0 +1,7 @@ +export OMASWAY_PATH=$HOME/.local/share/omaway +export PATH=$OMASWAY_PATH/bin/:$PATH +export TERMINAL=alacritty + +if command -v mise &> /dev/null; then + eval "$(mise activate bash)" +fi diff --git a/config/waybar/config b/config/waybar/config.jsonc similarity index 51% rename from config/waybar/config rename to config/waybar/config.jsonc index 5adcb1c..0ec9af4 100644 --- a/config/waybar/config +++ b/config/waybar/config.jsonc @@ -4,59 +4,66 @@ "position": "top", "spacing": 0, "height": 26, - "modules-left": [ - "sway/workspaces" - ], - "modules-center": [ - "clock" - ], + "modules-left": ["custom/omarchy", "hyprland/workspaces"], + "modules-center": ["clock", "custom/update"], "modules-right": [ + "group/tray-expander", "bluetooth", "network", "pulseaudio", "cpu", "battery" ], - "sway/workspaces": { + "hyprland/workspaces": { "on-click": "activate", "format": "{icon}", "format-icons": { + "default": "", "1": "1", "2": "2", "3": "3", "4": "4", "5": "5", "6": "6", - "default": "", - "focused": "󱓻" + "7": "7", + "8": "8", + "9": "9", + "active": "󱓻" }, "persistent-workspaces": { "1": [], "2": [], "3": [], "4": [], - "5": [], - "6": [] + "5": [] } }, + "custom/omarchy": { + "format": "\ue900", + "on-click": "omarchy-menu", + "tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space" + }, + "custom/update": { + "format": "", + "exec": "omarchy-update-available", + "on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update", + "tooltip-format": "Omarchy update available", + "interval": 3600 + }, + "cpu": { "interval": 5, "format": "󰍛", "on-click": "alacritty -e btop" }, "clock": { - "format": "{:%A %H:%M}", - "format-alt": "{:%d %B W%V %Y}", - "tooltip": false + "format": "{:L%A %H:%M}", + "format-alt": "{:L%d %B W%V %Y}", + "tooltip": false, + "on-click-right": "omarchy-cmd-tzupdate" }, "network": { - "format-icons": [ - "󰤯", - "󰤟", - "󰤢", - "󰤥", - "󰤨" - ], + "format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"], "format": "{icon}", "format-wifi": "{icon}", "format-ethernet": "󰀂", @@ -65,8 +72,8 @@ "tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", "tooltip-format-disconnected": "Disconnected", "interval": 3, - "nospacing": 1, - "on-click": "GTK_THEME=Adwaita-dark nm-connection-editor" + "spacing": 1, + "on-click": "alacritty --class=Impala -e impala" }, "battery": { "format": "{capacity}% {icon}", @@ -74,35 +81,14 @@ "format-charging": "{icon}", "format-plugged": "", "format-icons": { - "charging": [ - "󰢜", - "󰂆", - "󰂇", - "󰂈", - "󰢝", - "󰂉", - "󰢞", - "󰂊", - "󰂋", - "󰂅" - ], - "default": [ - "󰁺", - "󰁻", - "󰁼", - "󰁽", - "󰁾", - "󰁿", - "󰂀", - "󰂁", - "󰂂", - "󰁹" - ] + "charging": ["󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"], + "default": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] }, "format-full": "󰂅", "tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%", "tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%", "interval": 5, + "on-click": "omarchy-menu power", "states": { "warning": 20, "critical": 10 @@ -113,17 +99,33 @@ "format-disabled": "󰂲", "format-connected": "", "tooltip-format": "Devices connected: {num_connections}", - "on-click": "GTK_THEME=Adwaita-dark blueberry" + "on-click": "blueberry" }, "pulseaudio": { - "format": "", - "format-muted": "󰝟", - "scroll-step": 5, - "on-click": "GTK_THEME=Adwaita-dark pavucontrol", - "tooltip-format": "Playing at {volume}%", + "format": "{icon}", + "on-click": "alacritty --class=Wiremix -e wiremix", "on-click-right": "pamixer -t", - "ignored-sinks": [ - "Easy Effects Sink" - ] + "tooltip-format": "Playing at {volume}%", + "scroll-step": 5, + "format-muted": "󰝟", + "format-icons": { + "default": ["", "", ""] + } + }, + "group/tray-expander": { + "orientation": "inherit", + "drawer": { + "transition-duration": 600, + "children-class": "tray-group-item" + }, + "modules": ["custom/expand-icon", "tray"] + }, + "custom/expand-icon": { + "format": " ", + "tooltip": false + }, + "tray": { + "icon-size": 12, + "spacing": 12 } } diff --git a/config/waybar/style.css b/config/waybar/style.css index 1aea777..924e185 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -1,39 +1,63 @@ +@import "../omarchy/current/theme/waybar.css"; + * { + background-color: @background; + color: @foreground; + border: none; border-radius: 0; min-height: 0; - font-family: CaskaydiaMono Nerd Font Propo; + font-family: CaskaydiaMono Nerd Font; font-size: 12px; } -#workspaces { - margin-left: 7px; +.modules-left { + margin-left: 8px; +} + +.modules-right { + margin-right: 8px; } #workspaces button { all: initial; - padding: 2px 6px; - margin-right: 3px; + padding: 0 6px; + margin: 0 1.5px; + min-width: 9px; +} + +#workspaces button.empty { + opacity: 0.5; } -#custom-dropbox, +#tray, #cpu, #battery, #network, #bluetooth, #pulseaudio, -#clock, -#custom-power-menu { +#custom-omarchy, +#custom-update { min-width: 12px; - margin-right: 13px; + margin: 0 7.5px; +} + +#custom-expand-icon { + margin-right: 7px; } tooltip { padding: 2px; } -tooltip label { - padding: 2px; +#custom-update { + font-size: 10px; } -@import "../omasway/current/theme/waybar.css"; +#clock { + margin-left: 8.75px; +} + +.hidden { + opacity: 0; +} diff --git a/config/wofi/select.css b/config/wofi/select.css new file mode 100644 index 0000000..da378ef --- /dev/null +++ b/config/wofi/select.css @@ -0,0 +1,11 @@ +/* Use by power menu, theme selector, and other menus without visible search bar */ + +@import ".config/wofi/style.css"; + +#input { + display: none; + opacity: 0; + margin-top: -200px; +} + +@import ".config/omasway/current/theme/wofi.css"; diff --git a/default/wofi/search.css b/config/wofi/style.css similarity index 82% rename from default/wofi/search.css rename to config/wofi/style.css index 6d67df5..1f55450 100644 --- a/default/wofi/search.css +++ b/config/wofi/style.css @@ -1,4 +1,4 @@ -@import ".config/omasway/current/theme/wofi.css"; +/* Colors are defined by theme file and can be referenced via @base, @text, @selected-text, and @border */ * { font-family: "CaskaydiaMono Nerd Font", monospace; @@ -7,8 +7,8 @@ window { margin: 0px; - padding: 20px; - background-color: @base; + padding: 0px; + background-color: transparent; opacity: 0.95; } @@ -20,11 +20,10 @@ window { } #outer-box { - margin: 0; padding: 20px; - border: none; background-color: @base; border: 2px solid @border; + border-radius: 14px; } #scroll { @@ -70,3 +69,5 @@ window { #entry image { -gtk-icon-transform: scale(0.7); } + +@import ".config/omasway/current/theme/wofi.css"; diff --git a/config/xournalpp/settings.xml b/config/xournalpp/settings.xml deleted file mode 100644 index 5f98a90..0000000 --- a/config/xournalpp/settings.xml +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/default/alacritty/screensaver.toml b/default/alacritty/screensaver.toml new file mode 100644 index 0000000..7db389e --- /dev/null +++ b/default/alacritty/screensaver.toml @@ -0,0 +1,11 @@ +[colors.primary] +background = "0x000000" + +[colors.cursor] +cursor = "0x000000" + +[font] +size = 18.0 + +[window] +opacity = 1.0 diff --git a/default/bash/aliases b/default/bash/aliases index b7b89fc..6146d99 100644 --- a/default/bash/aliases +++ b/default/bash/aliases @@ -15,8 +15,8 @@ zd() { fi } md() { - mkdir -p $1 - cd $1 + mkdir -p $1 + cd $1 } # Directories @@ -25,12 +25,13 @@ alias ...='cd ../..' alias ....='cd ../../..' # Tools -alias n='nvim' alias g='git' alias d='docker' +alias gl='glab' alias bat='batcat' alias lzg='lazygit' alias lzd='lazydocker' +n() { if [ "$#" -eq 0 ]; then nvim .; else nvim "$@"; fi; } # Browser open() { diff --git a/default/bash/envs b/default/bash/envs index 50a7d42..1f88605 100644 --- a/default/bash/envs +++ b/default/bash/envs @@ -1,3 +1,11 @@ # Editor used by CLI export EDITOR="nvim" -export SUDO_EDITOR="$EDITOR" \ No newline at end of file +export SUDO_EDITOR="$EDITOR" +export BAT_THEME=ansi + +# Terminal +export TERMINAL="alacritty" + +# Omasway +export OMASWAY_PATH=$HOME/.local/share/omasway +export PATH=$OMASWAY_PATH/bin/:$PATH \ No newline at end of file diff --git a/default/bash/functions b/default/bash/functions index c65c060..039bbe3 100644 --- a/default/bash/functions +++ b/default/bash/functions @@ -2,13 +2,6 @@ compress() { tar -czf "${1%/}.tar.gz" "${1%/}"; } alias decompress="tar -xzf" -# Convert webm files generated by the Gnome screenshot video recorder to mp4s that are more compatible -webm2mp4() { - input_file="$1" - output_file="${input_file%.webm}.mp4" - ffmpeg -i "$input_file" -c:v libx264 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -preset slow -crf 22 -c:a aac -b:a 192k "$output_file" -} - # Write iso file to sd card iso2sd() { if [ $# -ne 2 ]; then @@ -22,19 +15,19 @@ iso2sd() { fi } -# Ensure changes to ~/.XCompose are immediately available -refresh-xcompose() { - pkill fcitx5 - setsid fcitx5 &>/dev/null & +# Convert webm files generated by the Gnome screenshot video recorder to mp4s that are more compatible +webm2mp4() { + input_file="$1" + output_file="${input_file%.webm}.mp4" + ffmpeg -i "$input_file" -c:v libx264 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -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" - -# SSH key management -function ssh-key-put() { - cat ~/.ssh/id_ed25519.pub | ssh "$1" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"; +# Transcode a video to a good-balance 1080p that's great for sharing online +transcode-video-1080p() { + ffmpeg -i $1 -vf scale=1920:1080 -c:v libx264 -preset fast -crf 23 -c:a copy ${1%.*}-1080p.mp4 } + +# Transcode a video to a good-balance 4K that's great for sharing online +transcode-video-4K() { + ffmpeg -i $1 -c:v libx265 -preset slow -crf 24 -c:a aac -b:a 192k ${1%.*}-optimized.mp4 +} \ No newline at end of file diff --git a/default/bash/init b/default/bash/init index ea41bfd..7f24ae2 100644 --- a/default/bash/init +++ b/default/bash/init @@ -2,6 +2,10 @@ if command -v mise &> /dev/null; then eval "$(mise activate bash)" fi +if command -v starship &> /dev/null; then + eval "$(starship init bash)" +fi + if command -v zoxide &> /dev/null; then eval "$(zoxide init bash)" fi diff --git a/default/bash/inputrc b/default/bash/inputrc index 9b0f307..6d42e9c 100644 --- a/default/bash/inputrc +++ b/default/bash/inputrc @@ -28,14 +28,12 @@ set completion-query-items 200 # Show extra file information when completing, like `ls -F` does set visible-stats on -$if Bash - # Be more intelligent when autocompleting by also looking at the text after - # the cursor. For example, when the current line is "cd ~/src/mozil", and - # the cursor is on the "z", pressing Tab will not autocomplete it to "cd - # ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the - # Readline used by Bash 4.) - set skip-completed-text on - - # Coloring for Bash 4 tab completions. - set colored-stats on -$endif \ No newline at end of file +# Be more intelligent when autocompleting by also looking at the text after +# the cursor. For example, when the current line is "cd ~/src/mozil", and +# the cursor is on the "z", pressing Tab will not autocomplete it to "cd +# ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the +# Readline used by Bash 4.) +set skip-completed-text on + +# Coloring for Bash 4 tab completions. +set colored-stats on \ No newline at end of file diff --git a/default/bash/prompt b/default/bash/prompt index ceadf7f..e985052 100644 --- a/default/bash/prompt +++ b/default/bash/prompt @@ -2,15 +2,7 @@ force_color_prompt=yes color_prompt=yes -# get current git branch -git_branch() { - local branch - branch=$(git symbolic-ref --short HEAD 2>/dev/null) - if [ -n "$branch" ]; then - echo -e "\001\e[1;36m\002git:(\001\e[0;38;5;107m\002${branch}\001\e[1;36m\002)\001\e[0m\002 " - fi -} +# Simple prompt with path in the window/pane title and caret for typing line +PS1=$'\uf0a9 ' +PS1="\[\e]0;\w\a\]$PS1" -# Simple prompt with path in the window/pane title and carat for typing line -PS1=$' $(git_branch)\[\e[31m\]→ \[\e[0m\]' -PS1="\[\e]0;\w\a\]$PS1" \ No newline at end of file diff --git a/default/bash/rc b/default/bash/rc index 60c15d7..faac875 100644 --- a/default/bash/rc +++ b/default/bash/rc @@ -4,3 +4,4 @@ source ~/.local/share/omasway/default/bash/functions source ~/.local/share/omasway/default/bash/prompt source ~/.local/share/omasway/default/bash/init source ~/.local/share/omasway/default/bash/envs +[[ $- == *i* ]] && bind -f ~/.local/share/omasway/default/bash/inputrc diff --git a/default/bash/shell b/default/bash/shell index e933686..37d61ca 100644 --- a/default/bash/shell +++ b/default/bash/shell @@ -9,6 +9,4 @@ source /usr/share/bash-completion/bash_completion # Set complete path export PATH="./bin:$HOME/.local/bin:$HOME/.local/share/omasway/bin:$PATH" -set +h - -export OMASWAY_PATH="/home/$USER/.local/share/omasway" +set +h \ No newline at end of file diff --git a/default/bashrc b/default/bashrc new file mode 100644 index 0000000..000f095 --- /dev/null +++ b/default/bashrc @@ -0,0 +1,14 @@ +# All the default Omasway aliases and functions +# (don't mess with these directly, just overwrite them here!) +source ~/.local/share/omasway/default/bash/rc + +# Add your own exports, aliases, and functions here. +# +# Make an alias for invoking commands you use constantly +# alias p='python' +# +# Use VSCode instead of neovim as your default editor +# export EDITOR="code" +# +# Set a custom prompt with the directory revealed (alternatively use https://starship.rs) +# PS1="\W \[\e]0;\w\a\]$PS1" diff --git a/default/mako/core.ini b/default/mako/core.ini new file mode 100644 index 0000000..0301e82 --- /dev/null +++ b/default/mako/core.ini @@ -0,0 +1,16 @@ +anchor=top-right +default-timeout=5000 +width=420 +height=110 + +[app-name=Spotify] +invisible=1 + +[mode=do-not-disturb] +invisible=true + +[mode=do-not-disturb app-name=notify-send] +invisible=false + +[urgency=critical] +default-timeout=0 \ No newline at end of file diff --git a/default/plymouth/logo.png b/default/plymouth/logo.png new file mode 100644 index 0000000..ee87e86 Binary files /dev/null and b/default/plymouth/logo.png differ diff --git a/default/plymouth/omasway.plymouth b/default/plymouth/omasway.plymouth new file mode 100644 index 0000000..49d9d59 --- /dev/null +++ b/default/plymouth/omasway.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omasway +Description=Omasway splash screen. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omasway +ScriptFile=/usr/share/plymouth/themes/omasway/omasway.script +ConsoleLogBackgroundColor=0x1a1b26 +MonospaceFont=Cantarell 11 +Font=Cantarell 11 diff --git a/default/plymouth/omasway.script b/default/plymouth/omasway.script new file mode 100644 index 0000000..5c4a14e --- /dev/null +++ b/default/plymouth/omasway.script @@ -0,0 +1,174 @@ +# Omasway Plymouth Theme Script - Boot loading only + +Window.SetBackgroundTopColor(0.101, 0.105, 0.149); +Window.SetBackgroundBottomColor(0.101, 0.105, 0.149); + +logo.image = Image("logo.png"); +logo.sprite = Sprite(logo.image); +logo.sprite.SetX (Window.GetWidth() / 2 - logo.image.GetWidth() / 2); +logo.sprite.SetY (Window.GetHeight() / 2 - logo.image.GetHeight() / 2); +logo.sprite.SetOpacity (1); + +# Progress bar animation variables +global.fake_progress = 0.0; +global.real_progress = 0.0; +global.fake_progress_active = 0; +global.animation_frame = 0; +global.max_progress = 0.0; + +# Use these to adjust the progress bar timing +global.fake_progress_limit = 0.7; +global.fake_progress_duration = 15.0; + +fun refresh_callback () + { + global.animation_frame++; + + # Animate fake progress to limit over time with easing + if (global.fake_progress_active == 1) + { + # Calculate elapsed time since start + elapsed_time = global.animation_frame / 50.0; # Convert frames to seconds (50 FPS) + + # Calculate linear progress ratio (0 to 1) based on time + time_ratio = elapsed_time / global.fake_progress_duration; + if (time_ratio > 1.0) + time_ratio = 1.0; + + # Apply easing curve: ease-out quadratic + eased_ratio = 1 - ((1 - time_ratio) * (1 - time_ratio)); + + # Calculate fake progress based on eased ratio + global.fake_progress = eased_ratio * global.fake_progress_limit; + + # Update progress bar with fake progress + update_progress_bar(global.fake_progress); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Helper Functions -------------------------------- + +fun update_progress_bar(progress) + { + # Only update if progress is moving forward + if (progress > global.max_progress) + { + global.max_progress = progress; + width = Math.Int(progress_bar.original_image.GetWidth() * progress); + if (width < 1) width = 1; + + progress_bar.image = progress_bar.original_image.Scale(width, progress_bar.original_image.GetHeight()); + progress_bar.sprite.SetImage(progress_bar.image); + } + } + +fun show_progress_bar() + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + } + +fun start_fake_progress() + { + if (global.max_progress == 0.0) + { + global.fake_progress = 0.0; + global.real_progress = 0.0; + update_progress_bar(0.0); + } + global.fake_progress_active = 1; + global.animation_frame = 0; + } + +fun stop_fake_progress() + { + global.fake_progress_active = 0; + } + +#----------------------------------------- Display Functions -------------------------------- + +fun display_normal_callback () + { + # Show progress bar immediately for boot/resume modes + mode = Plymouth.GetMode(); + if (mode == "boot" || mode == "resume") + { + show_progress_bar(); + start_fake_progress(); + } + } + +# No password dialog - we go straight to GDM +fun display_password_callback (prompt, bullets) + { + # Do nothing - let GDM handle authentication + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Progress Bar -------------------------------- + +progress_box.image = Image("progress_box.png"); +progress_box.sprite = Sprite(progress_box.image); + +progress_box.x = Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; +progress_box.y = logo.sprite.GetY() + logo.image.GetHeight() + 40; +progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); +progress_box.sprite.SetOpacity(0); + +progress_bar.original_image = Image("progress_bar.png"); +progress_bar.sprite = Sprite(); +progress_bar.image = progress_bar.original_image.Scale(1, progress_bar.original_image.GetHeight()); + +progress_bar.x = Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; +progress_bar.y = progress_box.y + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; +progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); +progress_bar.sprite.SetOpacity(0); + +fun progress_callback (duration, progress) + { + global.real_progress = progress; + + # If real progress is above limit, stop fake progress and use real progress + if (progress > global.fake_progress_limit) + { + stop_fake_progress(); + update_progress_bar(progress); + } + } + +Plymouth.SetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + # Keep logo visible until GDM takes over + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(10, 10, 10000); + +fun display_message_callback (text) +{ + # Show messages in white text at top-left + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); + message_sprite.SetOpacity(1); +} + +fun hide_message_callback (text) +{ + message_sprite.SetOpacity(0); +} + +Plymouth.SetDisplayMessageFunction (display_message_callback); +Plymouth.SetHideMessageFunction (hide_message_callback); diff --git a/default/plymouth/progress_bar.png b/default/plymouth/progress_bar.png new file mode 100644 index 0000000..dbb9fd7 Binary files /dev/null and b/default/plymouth/progress_bar.png differ diff --git a/default/plymouth/progress_box.png b/default/plymouth/progress_box.png new file mode 100644 index 0000000..6a263f2 Binary files /dev/null and b/default/plymouth/progress_box.png differ diff --git a/default/sway/bindings/tiling b/default/sway/bindings/tiling index 539a420..bb7b0df 100644 --- a/default/sway/bindings/tiling +++ b/default/sway/bindings/tiling @@ -45,6 +45,10 @@ bindsym $mod+Shift+4 move container to workspace number 4 bindsym $mod+Shift+5 move container to workspace number 5 bindsym $mod+Shift+6 move container to workspace number 6 +# Moving through workspaces +bindsym $mod+$alt+Right workspace next +bindsym $mod+$alt+Left workspace prev + # Make the current focus fullscreen bindsym $mod+f fullscreen @@ -75,4 +79,9 @@ mode "resize" { bindsym Return mode "default" bindsym Escape mode "default" } -bindsym $mod+r mode "resize" \ No newline at end of file +bindsym $mod+r mode "resize" + +# Gestures +bindgesture swipe:right workspace prev +bindgesture swipe:left workspace next +bindgesture swipe:down floating toggle \ No newline at end of file diff --git a/default/sway/input b/default/sway/input index 8c7a9eb..cddeff0 100644 --- a/default/sway/input +++ b/default/sway/input @@ -1,9 +1,11 @@ +# Keyboard input type:keyboard { xkb_layout us } +# Touchpad input type:touchpad { dwt enabled tap enabled natural_scroll disabled -} \ No newline at end of file +} diff --git a/default/sway/variables b/default/sway/variables index a0b6889..12a0a2f 100644 --- a/default/sway/variables +++ b/default/sway/variables @@ -24,19 +24,16 @@ set $menu wofi --show drun --sort-order=alphabetical --style="$HOME/.local/share # Browser set $browser firefox -set $browser_pwa --new-window --ozone-platform=wayland +set $browser_pwa chromium --new-window --ozone-platform=wayland # File Manager -set $fileManager = nautilus --new-window +set $fileManager nautilus --new-window # PolicyKit agent set $polkit_agent /usr/bin/mate-polkit # Autotiling script -set $autotiling '[ -x "$(command -v autotiling)" ] && autotiling -w 1 3 5 7 9' +set $autotiling '[ -x "$(command -v autotiling)" ] && autotiling -w 1 2 3 4 5 6' # Swaybg command set $swaybg swaybg -i ~/.config/omasway/current/background -m fill - -# Include Sway configuration files -include /etc/sway/config-vars.d/* \ No newline at end of file diff --git a/default/sway/windows b/default/sway/windows new file mode 100644 index 0000000..7d88774 --- /dev/null +++ b/default/sway/windows @@ -0,0 +1,63 @@ +# This settings are based on default settings from Ubuntu Sway Remix +# @source https://github.com/Ubuntu-Sway/ubuntu-sway-default-settings + +# set floating mode for specific application +for_window [app_id="[Ff]irefox" title="^Library$"] floating enable, border pixel 1 +for_window [app_id="thunderbird" title=".*Reminder"] floating enable +for_window [app_id="floating_shell_portrait"] floating enable, border pixel 1, sticky enable, resize set width 30 ppt height 40 ppt +for_window [app_id="floating_shell"] floating enable, border pixel 1, sticky enable +for_window [app_id="" title="Picture in picture"] floating enable, sticky enable +for_window [app_id="" title="Picture-in-Picture"] floating enable, sticky enable +for_window [instance="around"] floating enable, sticky enable +for_window [app_id="xsensors"] floating enable +for_window [app_id = "qt5ct"] floating enable +for_window [app_id = "qt6ct"] floating enable +for_window [app_id="nm-connection-editor"] floating enable +for_window [app_id="pavucontrol"] floating enable +for_window [app_id="nwg-look"] floating enable +for_window [app_id="engrampa"] floating enable +for_window [app_id="software-properties-gtk"] floating enable +for_window [app_id="wdisplays"] floating enable +for_window [app_id="gpk-update-viewer"] floating enable +for_window [app_id="gpk-application"] floating enable +for_window [app_id="nwg-displays"] floating enable +for_window [app_id="calamares"] floating enable +for_window [app_id="sway-input-config"] floating enable +for_window [title="Save File"] floating enable +for_window [title="[Ff]irefox .*— Sharing Indicator"] floating enable, sticky enable, move to scratchpad +for_window [app_id="" title=".* is sharing your screen."] floating enable + +# set floating mode for generated windows +for_window [window_role="pop-up"] floating enable +for_window [window_role="bubble"] floating enable +for_window [window_role="dialog"] floating enable +for_window [window_type="dialog"] floating enable +for_window [window_role = "task_dialog"] floating enable +for_window [window_type = "menu"] floating enable +for_window [window_role = "GtkFileChooserDialog"] resize set 600 400 +for_window [window_role = "GtkFiileChooserDialog"] move position center +for_window [window_role="Preferences"] floating enable +for_window [title="(?:Open|Save) (?:File|Folder|As)"] floating enable; +for_window [title="(?:Open|Save) (?:File|Folder|As)"] resize set 600 400 +for_window [title="Choose an Application"] floating enable +for_window [title="Removable medium is inserted"] floating enable + +# apply mark for Xwayland and wayland native browser windows +for_window [class="Chromium-browser"] mark Browser +for_window [class="Brave-browser"] mark Browser +for_window [app_id="Chromium-browser"] mark Browser +for_window [app_id="brave-browser"] mark Browser +for_window [app_id="[Ff]irefox"] mark Browser + +# inhibit scrensaver for fullscreen browser windows +for_window [con_mark="Browser"] { + inhibit_idle fullscreen +} + +# Don't allow applications to inhibit shortcuts, i.e. grab total control of the +# keyboard. Chrome currently abuses this by enabling it for all "--app=..." +# shortcuts. +seat * shortcuts_inhibitor disable + +# inhibit keyboard shortcuts for marked applications +for_window [con_mark="Grabbing"] shortcuts_inhibitor enable diff --git a/install.sh b/install.sh index 2afcb36..5f4c1cb 100644 --- a/install.sh +++ b/install.sh @@ -1,16 +1,80 @@ +#!/bin/bash + # Exit immediately if a command exits with a non-zero status -set -e +set -eE + +show_logo() { + clear + echo -e "\n\e[1;36m$(cat ~/.local/share/omasway/logo.txt)\e[0m" + echo +} + +show_subtext() { + echo "$1" + echo +} + +export PATH="$HOME/.local/share/omasway/bin:$PATH" +OMASWAY_INSTALL=~/.local/share/omasway/install + +# Preparation +source $OMASWAY_INSTALL/preflight/trap-errors.sh +source $OMASWAY_INSTALL/preflight/guard.sh +source $OMASWAY_INSTALL/preflight/migrations.sh +source $OMASWAY_INSTALL/preflight/presentation.sh + +# User Inputs +show_logo +show_subtext "Get ready to fill out some configuration... [1/5]" +source $OMASWAY_INSTALL/preflight/identification.sh +source $OMASWAY_INSTALL/preflight/timezone.sh + +# Packaging +show_logo +show_subtext "Installing packages [2/5]" +source $OMASWAY_INSTALL/packages.sh +source $OMASWAY_INSTALL/packaging/fonts.sh +source $OMASWAY_INSTALL/packaging/nvim.sh +source $OMASWAY_INSTALL/packaging/tools.sh +source $OMASWAY_INSTALL/packaging/apps.sh +source $OMASWAY_INSTALL/packaging/webapps.sh +source $OMASWAY_INSTALL/packaging/tuis.sh +source $OMASWAY_INSTALL/packaging/uwsm.sh + +# Configuration +show_logo +show_subtext "Apply Omasway configuration! [3/5]" +source $OMASWAY_INSTALL/config/config.sh +source $OMASWAY_INSTALL/config/theme.sh +source $OMASWAY_INSTALL/config/branding.sh +source $OMASWAY_INSTALL/config/git.sh +source $OMASWAY_INSTALL/config/increase-lockout-limit.sh +source $OMASWAY_INSTALL/config/detect-keyboard-layout.sh +source $OMASWAY_INSTALL/config/xcompose.sh +source $OMASWAY_INSTALL/config/mimetypes.sh +source $OMASWAY_INSTALL/config/firewall.sh +source $OMASWAY_INSTALL/config/localdb.sh +source $OMASWAY_INSTALL/config/hardware/fix-fkeys.sh +source $OMASWAY_INSTALL/config/hardware/bluetooth.sh +source $OMASWAY_INSTALL/config/hardware/printer.sh -# Give people a chance to retry running the installation -trap 'echo -e "\nOmasway installation failed! You can retry by running: source ~/.local/share/omasway/install.sh"' ERR +# Login +show_logo +show_subtext "Configuring login settings! [4/5]" +source $OMASWAY_INSTALL/login/plymouth.sh +source $OMASWAY_INSTALL/login/autologin.sh +source $OMASWAY_INSTALL/login/alt-bootloaders.sh -# Install everything -for f in ~/.local/share/omasway/install/*.sh; do - echo -e "\nRunning installer: $f" - source "$f" -done +# Landing +show_logo +show_subtext "Preparing system and cleaning up [5/5]" +source $OMASWAY_INSTALL/landing/cleanup.sh +source $OMASWAY_INSTALL/landing/battery-monitor.sh +source $OMASWAY_INSTALL/landing/network.sh -# Ensure locate is up to date now that everything has been installed -sudo updatedb +# Reboot +show_logo +show_subtext "You're done! So we'll be rebooting now..." -gum confirm "Reboot to apply all settings?" && reboot +sleep 5 +reboot \ No newline at end of file diff --git a/install/0-prerequisites.sh b/install/0-prerequisites.sh deleted file mode 100644 index 34780fa..0000000 --- a/install/0-prerequisites.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -if [ ! -f /etc/os-release ]; then - echo "$(tput setaf 1)Error: Unable to determine OS. /etc/os-release file not found." - echo "Installation stopped." - exit 1 -fi - -. /etc/os-release - -# Check if running on Ubuntu 24.04 or higher -if [ "$ID" != "ubuntu" ] || [ $(echo "$VERSION_ID >= 24.04" | bc) != 1 ]; then - echo "$(tput setaf 1)Error: OS requirement not met" - echo "You are currently running: $ID $VERSION_ID" - echo "OS required: Ubuntu 24.04 or higher" - 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/2-first-run-choices.sh b/install/2-first-run-choices.sh deleted file mode 100644 index 3a1680d..0000000 --- a/install/2-first-run-choices.sh +++ /dev/null @@ -1,28 +0,0 @@ -# Theme -AVAILABLE_THEMES=( - "Tokyo Night" - "Catppuccin" - "Nord" - "Everforest" - "Gruvbox" - "Kanagawa" -) -DEFAULT_THEME="Tokyo Night" -OMASWAY_FIRST_RUN_THEME=$(gum choose "${AVAILABLE_THEMES[@]}" --limit 1 --selected "$DEFAULT_THEME" --height 10 --header "Select your theme" | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') -if [[ -z "$OMASWAY_FIRST_RUN_THEME" ]]; then - OMASWAY_FIRST_RUN_THEME="tokyo-night" -fi -export OMASWAY_FIRST_RUN_THEME - -# Apps -OPTIONAL_APPS=( - "FlameShot" - "Libreoffice" - "LocalSend" - "Pinta" - "Spotify" - "Xournalpp" - "Visual Studio Code" -) -DEFAULT_OPTIONAL_APPS='FlameShot','LocalSend','Pinta','Spotify' -export OMASWAY_FIRST_RUN_OPTIONAL_APPS=$(gum choose "${OPTIONAL_APPS[@]}" --no-limit --selected $DEFAULT_OPTIONAL_APPS --height 10 --header "Select optional apps" | tr ' ' '-') diff --git a/install/4-terminal.sh b/install/4-terminal.sh deleted file mode 100644 index b898822..0000000 --- a/install/4-terminal.sh +++ /dev/null @@ -1,8 +0,0 @@ -# Needed for all installers -sudo apt update -y -sudo apt upgrade -y -sudo apt install -y \ - wget gpg curl unzip \ - fd-find eza fzf ripgrep zoxide bat \ - wl-clipboard btop \ - plocate whois tldr diff --git a/install/5-sway.sh b/install/5-sway.sh deleted file mode 100644 index 47d4d15..0000000 --- a/install/5-sway.sh +++ /dev/null @@ -1,18 +0,0 @@ -# Sway - A Wayland compositor -sudo apt install -y \ - sway swaybg swaylock swayidle mate-polkit-bin \ - waybar wofi mako-notifier \ - xwayland wayland-protocols wayland-utils xdg-desktop-portal-wlr xdg-desktop-portal-gtk \ - qtwayland5 qt6-wayland - -# Autotiling - a tiling script for Sway -sudo apt install -y python3-i3ipc - -cd /tmp -AUTOTILING_VERSION=$(curl -s "https://api.github.com/repos/nwg-piotr/autotiling/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') -curl -sLo autotiling.tar.gz "https://github.com/nwg-piotr/autotiling/archive/refs/tags/v${AUTOTILING_VERSION}.tar.gz" -tar -xf autotiling.tar.gz "autotiling-${AUTOTILING_VERSION}" -mv "autotiling-${AUTOTILING_VERSION}/autotiling/main.py" /usr/bin/autotiling -chmod +x ~/.local/bin/autotiling -rm -R autotiling.tar.gz "autotiling-${AUTOTILING_VERSION}" -cd - \ No newline at end of file diff --git a/install/6-config.sh b/install/6-config.sh deleted file mode 100644 index 2d89523..0000000 --- a/install/6-config.sh +++ /dev/null @@ -1,54 +0,0 @@ -# Copy over Omasway configs -mkdir -p ~/.config -cp -R ~/.local/share/omasway/config/* ~/.config/ - -# Ensure application directory exists for update-desktop-database -mkdir -p ~/.local/share/applications - -# Configure the bash shell using Omasway defaults -[ -f "~/.bashrc" ] && mv ~/.bashrc ~/.bashrc.bak -echo "source ~/.local/share/omasway/default/bash/rc" >~/.bashrc - -# Load the PATH for use later in the installers -source ~/.local/share/omasway/default/bash/shell - -# Configure the inputrc using Omasway defaults -[ -f "~/.inputrc" ] && mv ~/.inputrc ~/.inputrc.bak -echo "\$include ~/.local/share/omasway/default/bash/inputrc" >~/.inputrc - -# Start Sway on first session - Ubuntu compatible approach -echo '[ "$(tty)" = "/dev/tty1" ] && exec sway' >> ~/.bash_profile - -# Login directly as user -sudo mkdir -p /etc/systemd/system/getty@tty1.service.d -sudo tee /etc/systemd/system/getty@tty1.service.d/override.conf >/dev/null </dev/null < : "$OMASWAY_USER_NAME" - : "$OMASWAY_USER_EMAIL" -EOF - diff --git a/install/7-flatpak.sh b/install/7-flatpak.sh deleted file mode 100644 index 72061a6..0000000 --- a/install/7-flatpak.sh +++ /dev/null @@ -1,3 +0,0 @@ -# Add FlatHub -sudo apt install -y flatpak -sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo diff --git a/install/alacritty.sh b/install/alacritty.sh deleted file mode 100644 index 04d6546..0000000 --- a/install/alacritty.sh +++ /dev/null @@ -1,77 +0,0 @@ -# Alacritty is a GPU-powered and highly extensible terminal. See https://alacritty.org/ -sudo apt install -y alacritty - -# Migrate config format if needed -alacritty migrate 2>/dev/null || true - -# 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/backgrounds.sh b/install/backgrounds.sh deleted file mode 100644 index 6e6174f..0000000 --- a/install/backgrounds.sh +++ /dev/null @@ -1,9 +0,0 @@ -BACKGROUNDS_DIR=~/.config/omasway/backgrounds/ - -download_background_image() { - local url="$1" - local path="$2" - gum spin --title "Downloading $url as $path..." -- curl -sL -o "$BACKGROUNDS_DIR/$path" "$url" -} - -for t in ~/.local/share/omasway/themes/*; do source "$t/backgrounds.sh"; done diff --git a/install/bluetooth.sh b/install/bluetooth.sh deleted file mode 100644 index 4cb085e..0000000 --- a/install/bluetooth.sh +++ /dev/null @@ -1,3 +0,0 @@ -# Install bluetooth controls -sudo apt install -y bluez blueman -sudo systemctl enable --now bluetooth \ No newline at end of file diff --git a/install/chromium.sh b/install/chromium.sh deleted file mode 100644 index 300e942..0000000 --- a/install/chromium.sh +++ /dev/null @@ -1,4 +0,0 @@ -# Browse the web with the most popular browser. See https://www.google.com/chrome/ -sudo add-apt-repository -y ppa:xtradeb/apps -sudo apt update -y -sudo apt install -y chromium diff --git a/install/config/branding.sh b/install/config/branding.sh new file mode 100755 index 0000000..4266ae4 --- /dev/null +++ b/install/config/branding.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Allow the user to change the branding for fastfetch and screensaver +mkdir -p ~/.config/omasway/branding +cp ~/.local/share/omasway/logo.txt ~/.config/omasway/branding/screensaver.txt diff --git a/install/config/config.sh b/install/config/config.sh new file mode 100644 index 0000000..502c904 --- /dev/null +++ b/install/config/config.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Copy over Omasway configs +mkdir -p ~/.config +cp -R ~/.local/share/omasway/config/* ~/.config/ + +# Configure the bash shell using Omasway defaults +cp ~/.local/share/omasway/default/bashrc ~/.bashrc \ No newline at end of file diff --git a/install/config/detect-keyboard-layout.sh b/install/config/detect-keyboard-layout.sh new file mode 100755 index 0000000..84b30d5 --- /dev/null +++ b/install/config/detect-keyboard-layout.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Copy over the keyboard layout that's been set in Arch during install to Sway +conf="$HOME/.config/sway/input.conf" + +layout=$(localectl status | grep "X11 Layout" | awk '{print $3}') +variant=$(localectl status | grep "X11 Variant" | awk '{print $3}') + +if [[ -n "$layout" ]]; then + sed -i "/^[[:space:]]*kb_options *=/i\ kb_layout = $layout" "$conf" +fi + +if [[ -n "$variant" ]]; then + sed -i "/^[[:space:]]*kb_options *=/i\ kb_variant = $variant" "$conf" +fi diff --git a/install/config/firewall.sh b/install/config/firewall.sh new file mode 100644 index 0000000..7d0982a --- /dev/null +++ b/install/config/firewall.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Allow nothing in, everything out +sudo ufw default deny incoming +sudo ufw default allow outgoing + +# Allow ports for LocalSend +sudo ufw allow 53317/udp +sudo ufw allow 53317/tcp + +# Allow SSH in +sudo ufw allow 22/tcp + +# Allow Docker containers to use DNS on host +sudo ufw allow in on docker0 to any port 53 + +# Turn on the firewall +sudo ufw enable + +# Enable UFW systemd service to start on boot +sudo systemctl enable ufw + +# Install ufw-docker script to manage Docker firewall rules +sudo wget -O /usr/local/bin/ufw-docker https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker +sudo chmod +x /usr/local/bin/ufw-docker + +# Turn on Docker protections +sudo ufw-docker install +sudo ufw reload diff --git a/install/config/git.sh b/install/config/git.sh new file mode 100644 index 0000000..362fee4 --- /dev/null +++ b/install/config/git.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Ensure git settings live under ~/.config +mkdir -p ~/.config/git +touch ~/.config/git/config + +# Set common git aliases +git config --global alias.co checkout +git config --global alias.br branch +git config --global alias.ci commit +git config --global alias.st status +git config --global pull.rebase true + +# Set identification from install inputs +if [[ -n "${OMASWAY_USER_NAME//[[:space:]]/}" ]]; then + git config --global user.name "$OMASWAY_USER_NAME" +fi + +if [[ -n "${OMASWAY_USER_EMAIL//[[:space:]]/}" ]]; then + git config --global user.email "$OMASWAY_USER_EMAIL" +fi diff --git a/install/config/hardware/bluetooth.sh b/install/config/hardware/bluetooth.sh new file mode 100755 index 0000000..803bef1 --- /dev/null +++ b/install/config/hardware/bluetooth.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Turn on bluetooth by default +sudo systemctl enable bluetooth diff --git a/install/config/hardware/fix-fkeys.sh b/install/config/hardware/fix-fkeys.sh new file mode 100644 index 0000000..29f4b84 --- /dev/null +++ b/install/config/hardware/fix-fkeys.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then + echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf +fi diff --git a/install/config/hardware/printer.sh b/install/config/hardware/printer.sh new file mode 100644 index 0000000..640b40e --- /dev/null +++ b/install/config/hardware/printer.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +sudo systemctl enable --now cups.service + +# Disable multicast dns in resolved. Avahi will provide this for better network printer discovery +sudo mkdir -p /etc/systemd/resolved.conf.d +echo -e "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf +sudo systemctl enable --now avahi-daemon.service + +# Enable automatically adding remote printers +if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then + echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf +fi + +sudo systemctl enable --now cups-browsed.service \ No newline at end of file diff --git a/install/config/increase-lockout-limit.sh b/install/config/increase-lockout-limit.sh new file mode 100755 index 0000000..1fdbf7d --- /dev/null +++ b/install/config/increase-lockout-limit.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Increase lockout limit to 10 and decrease timeout to 2 minutes +sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth" +sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth" diff --git a/install/config/localdb.sh b/install/config/localdb.sh new file mode 100755 index 0000000..d7ee802 --- /dev/null +++ b/install/config/localdb.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Update localdb so that locate will find everything installed +sudo updatedb diff --git a/install/config/mimetypes.sh b/install/config/mimetypes.sh new file mode 100644 index 0000000..ec27d63 --- /dev/null +++ b/install/config/mimetypes.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Refresh applications .desktop files +omasway-refresh-applications +update-desktop-database ~/.local/share/applications + +# Open all images with imv +xdg-mime default imv.desktop image/png +xdg-mime default imv.desktop image/jpeg +xdg-mime default imv.desktop image/gif +xdg-mime default imv.desktop image/webp +xdg-mime default imv.desktop image/bmp +xdg-mime default imv.desktop image/tiff + +# Open PDFs with the Document Viewer +xdg-mime default org.gnome.Evince.desktop application/pdf + +# Use Firefox as the default browser +xdg-settings set default-web-browser firefox.desktop 2>/dev/null || true +xdg-mime default firefox.desktop x-scheme-handler/http +xdg-mime default firefox.desktop x-scheme-handler/https + +# Open video files with mpv +xdg-mime default mpv.desktop video/mp4 +xdg-mime default mpv.desktop video/x-msvideo +xdg-mime default mpv.desktop video/x-matroska +xdg-mime default mpv.desktop video/x-flv +xdg-mime default mpv.desktop video/x-ms-wmv +xdg-mime default mpv.desktop video/mpeg +xdg-mime default mpv.desktop video/ogg +xdg-mime default mpv.desktop video/webm +xdg-mime default mpv.desktop video/quicktime +xdg-mime default mpv.desktop video/3gpp +xdg-mime default mpv.desktop video/3gpp2 +xdg-mime default mpv.desktop video/x-ms-asf +xdg-mime default mpv.desktop video/x-ogm+ogg +xdg-mime default mpv.desktop video/x-theora+ogg +xdg-mime default mpv.desktop application/ogg diff --git a/install/config/theme.sh b/install/config/theme.sh new file mode 100644 index 0000000..1ccacfd --- /dev/null +++ b/install/config/theme.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" +gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" +gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue" + +# Set links for Nautilius action icons +sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-previous-symbolic.svg /usr/share/icons/Yaru/scalable/actions/go-previous-symbolic.svg +sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-next-symbolic.svg /usr/share/icons/Yaru/scalable/actions/go-next-symbolic.svg +sudo gtk-update-icon-cache /usr/share/icons/Yaru + +# Setup theme links +if [ -d ~/.config/omasway/themes ]; then + rm -rf ~/.config/omasway/themes +fi +mkdir -p ~/.config/omasway/themes +for f in ~/.local/share/omasway/themes/*; do ln -s "$f" ~/.config/omasway/themes/; done + +# Set initial theme +mkdir -p ~/.config/omasway/current +ln -snf ~/.config/omasway/themes/tokyo-night ~/.config/omasway/current/theme +ln -snf $(find "$HOME/.config/omasway/current/theme/backgrounds/" -type f | head -n 1) "$HOME/.config/omasway/current/background" + +# Set specific app links for current theme +ln -snf ~/.config/omasway/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua + +mkdir -p ~/.config/btop/themes +ln -snf ~/.config/omasway/current/theme/btop.theme ~/.config/btop/themes/current.theme + +mkdir -p ~/.config/mako +ln -snf ~/.config/omasway/current/theme/mako.ini ~/.config/mako/config \ No newline at end of file diff --git a/install/config/xcompose.sh b/install/config/xcompose.sh new file mode 100644 index 0000000..d255479 --- /dev/null +++ b/install/config/xcompose.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# Set XCompose +if [ -f ~/.XCompose ]; then + rm ~/.XCompose +fi + +tee ~/.XCompose >/dev/null < : "$OMASWAY_USER_NAME" + : "$OMASWAY_USER_EMAIL" +EOF diff --git a/install/desktop.sh b/install/desktop.sh deleted file mode 100644 index 0fa2204..0000000 --- a/install/desktop.sh +++ /dev/null @@ -1,6 +0,0 @@ -sudo apt update -y -sudo apt install -y \ - brightnessctl pipewire wireplumber pavucontrol \ - fcitx5 fcitx5-config-qt \ - nautilus gnome-sushi gnome-calculator \ - evince imv ffmpeg diff --git a/install/development.sh b/install/development.sh deleted file mode 100644 index 93e76bf..0000000 --- a/install/development.sh +++ /dev/null @@ -1,4 +0,0 @@ -sudo apt install -y \ - build-essential pkg-config autoconf bison clang rustc cargo \ - imagemagick \ - libmysqlclient-dev libpq-dev postgresql-client postgresql-client-common \ No newline at end of file diff --git a/install/docker.sh b/install/docker.sh deleted file mode 100644 index beb54b3..0000000 --- a/install/docker.sh +++ /dev/null @@ -1,17 +0,0 @@ -# Add the official Docker repo -if ! command -v "docker" &>/dev/null; then - sudo install -m 0755 -d /etc/apt/keyrings - sudo wget -qO /etc/apt/keyrings/docker.asc https://download.docker.com/linux/ubuntu/gpg - sudo chmod a+r /etc/apt/keyrings/docker.asc - 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 - sudo apt update - - # Install Docker engine and standard plugins - sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras - - # Give this user privileged Docker access - sudo usermod -aG docker ${USER} - - # Limit log size to avoid running out of disk - echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json -fi diff --git a/install/fastfetch.sh b/install/fastfetch.sh deleted file mode 100644 index 26b598b..0000000 --- a/install/fastfetch.sh +++ /dev/null @@ -1,5 +0,0 @@ -# Display system information in the terminal -sudo add-apt-repository -y ppa:zhangsongcui3371/fastfetch -sudo apt update -y -sudo apt install -y fastfetch - diff --git a/install/firefox.sh b/install/firefox.sh deleted file mode 100644 index c5fe0c3..0000000 --- a/install/firefox.sh +++ /dev/null @@ -1,14 +0,0 @@ -# Install latest version of Firefox https://www.mozilla.org/firefox/ -if ! grep -q "^deb .*\bmozillateam/ppa\b" /etc/apt/sources.list /etc/apt/sources.list.d/* 2>/dev/null; then - sudo add-apt-repository -y ppa:mozillateam/ppa -fi - -if [ ! -f /etc/apt/preferences.d/mozilla ]; then - sudo tee /etc/apt/preferences.d/mozilla > /dev/null </dev/null; then + # This computer runs on a battery + powerprofilesctl set balanced || true + + # Enable battery monitoring timer for low battery notifications + systemctl --user enable --now omasway-battery-monitor.timer +else + # This computer runs on power outlet + powerprofilesctl set performance || true +fi diff --git a/install/landing/cleanup.sh b/install/landing/cleanup.sh new file mode 100644 index 0000000..e80e711 --- /dev/null +++ b/install/landing/cleanup.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Update the package database +sudo updatedb + +# Update and upgrade system packages +sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y + +# Clean up unnecessary packages +sudo apt autoremove -y && sudo apt clean \ No newline at end of file diff --git a/install/landing/network.sh b/install/landing/network.sh new file mode 100644 index 0000000..4aaf82d --- /dev/null +++ b/install/landing/network.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Disable systemd-networkd services if present +sudo systemctl disable systemd-networkd.service systemd-networkd-wait-online.service 2>/dev/null || true + +# Stop networking service if running +sudo systemctl stop networking 2>/dev/null || true + +# Enable and start NetworkManager +sudo systemctl enable NetworkManager +sudo systemctl start NetworkManager \ No newline at end of file diff --git a/install/lazydocker.sh b/install/lazydocker.sh deleted file mode 100644 index 6f62afb..0000000 --- a/install/lazydocker.sh +++ /dev/null @@ -1,7 +0,0 @@ -cd /tmp -LAZYDOCKER_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazydocker/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') -curl -sLo lazydocker.tar.gz "https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_${LAZYDOCKER_VERSION}_Linux_x86_64.tar.gz" -tar -xf lazydocker.tar.gz lazydocker -sudo install lazydocker /usr/local/bin -rm lazydocker.tar.gz lazydocker -cd - diff --git a/install/lazygit.sh b/install/lazygit.sh deleted file mode 100644 index b7bd893..0000000 --- a/install/lazygit.sh +++ /dev/null @@ -1,8 +0,0 @@ -cd /tmp -LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | \grep -Po '"tag_name": *"v\K[^"]*') -curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz" -tar xf lazygit.tar.gz lazygit -sudo install lazygit -D -t /usr/local/bin/ -rm lazygit.tar.gz lazygit -cd - - diff --git a/install/login/alt-bootloaders.sh b/install/login/alt-bootloaders.sh new file mode 100644 index 0000000..f0e85cf --- /dev/null +++ b/install/login/alt-bootloaders.sh @@ -0,0 +1,111 @@ +#!/bin/bash + +# Check if Plymouth is available before proceeding +if ! command -v plymouth >/dev/null 2>&1 && ! dpkg -l | grep -q plymouth; then + echo "Plymouth not installed, skipping bootloader configuration" + exit 0 +fi + +if [ -d "/boot/loader/entries" ]; then # systemd-boot + echo "Detected systemd-boot" + + for entry in /boot/loader/entries/*.conf; do + if [ -f "$entry" ]; then + # Skip fallback entries + if [[ "$(basename "$entry")" == *"fallback"* ]]; then + echo "Skipped: $(basename "$entry") (fallback entry)" + continue + fi + + # Skip if splash it already present for some reason + if ! grep -q "splash" "$entry"; then + sudo sed -i '/^options/ s/$/ splash quiet/' "$entry" + else + echo "Skipped: $(basename "$entry") (splash already present)" + fi + fi + done +elif [ -f "/etc/default/grub" ]; then # GRUB (standard on Debian) + echo "Detected GRUB" + + # Backup GRUB config before modifying + backup_timestamp=$(date +"%Y%m%d%H%M%S") + sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}" + + # Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT + if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then + # Get current GRUB_CMDLINE_LINUX_DEFAULT value + current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2) + + # Add splash and quiet if not present + new_cmdline="$current_cmdline" + if [[ ! "$current_cmdline" =~ splash ]]; then + new_cmdline="$new_cmdline splash" + fi + if [[ ! "$current_cmdline" =~ quiet ]]; then + new_cmdline="$new_cmdline quiet" + fi + + # Trim any leading/trailing spaces + new_cmdline=$(echo "$new_cmdline" | xargs) + + sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub + + # Debian standard GRUB configuration + if command -v update-grub >/dev/null 2>&1; then + # Use Debian's update-grub wrapper (preferred) + sudo update-grub + elif command -v grub-mkconfig >/dev/null 2>&1; then + # Fallback to direct grub-mkconfig + sudo grub-mkconfig -o /boot/grub/grub.cfg + else + echo "Error: No GRUB update command found" + echo "Please install grub2-common package" + exit 1 + fi + else + echo "GRUB already configured with splash kernel parameters" + fi +elif [ -d "/etc/cmdline.d" ]; then # UKI + echo "Detected a UKI setup" + # Relying on mkinitcpio to assemble a UKI + # https://wiki.archlinux.org/title/Unified_kernel_image + if ! grep -q splash /etc/cmdline.d/*.conf; then + # Need splash, create the omasway file + echo "splash" | sudo tee -a /etc/cmdline.d/omasway.conf + fi + if ! grep -q quiet /etc/cmdline.d/*.conf; then + # Need quiet, create or append the omasway file + echo "quiet" | sudo tee -a /etc/cmdline.d/omasway.conf + fi +elif [ -f "/etc/kernel/cmdline" ]; then # UKI Alternate + # Alternate UKI kernel cmdline location + echo "Detected a UKI setup" + + # Backup kernel cmdline config before modifying + backup_timestamp=$(date +"%Y%m%d%H%M%S") + sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}" + + current_cmdline=$(cat /etc/kernel/cmdline) + + # Add splash and quiet if not present + new_cmdline="$current_cmdline" + if [[ ! "$current_cmdline" =~ splash ]]; then + new_cmdline="$new_cmdline splash" + fi + if [[ ! "$current_cmdline" =~ quiet ]]; then + new_cmdline="$new_cmdline quiet" + fi + + # Trim any leading/trailing spaces + new_cmdline=$(echo "$new_cmdline" | xargs) + + # Write new file + echo $new_cmdline | sudo tee /etc/kernel/cmdline +else + echo "" + echo " None of systemd-boot, GRUB, or UKI detected. Please manually add these kernel parameters:" + echo " - splash (to see the graphical splash screen)" + echo " - quiet (for silent boot)" + echo "" +fi \ No newline at end of file diff --git a/install/login/autologin.sh b/install/login/autologin.sh new file mode 100644 index 0000000..25c1882 --- /dev/null +++ b/install/login/autologin.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Temp Autologin Script for Omasway +# Start Sway on first session +echo '[ "$(tty)" = "/dev/tty1" ] && exec sway' >> ~/.bash_profile + +# Login directly as user +sudo mkdir -p /etc/systemd/system/getty@tty1.service.d +sudo tee /etc/systemd/system/getty@tty1.service.d/override.conf >/dev/null </dev/null; then + echo "plymouth" | sudo tee -a /etc/initramfs-tools/modules + fi +else + # Create the file if it doesn't exist + echo "plymouth" | sudo tee /etc/initramfs-tools/modules +fi + +# Update initramfs +sudo update-initramfs -u + +# Install and configure Omasway Plymouth theme +THEME_SOURCE_DIR="$(dirname "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")")/default/plymouth" + +if [ -d "$THEME_SOURCE_DIR" ]; then + sudo mkdir -p /usr/share/plymouth/themes/omasway/ + sudo cp -r "$THEME_SOURCE_DIR"/* /usr/share/plymouth/themes/omasway/ + + # Check if the theme is already set + current_theme=$(readlink /etc/alternatives/default.plymouth 2>/dev/null) + if [[ "$current_theme" != *"omasway"* ]]; then + # Install the theme as an alternative (Debian compatible) + if [ -f "/usr/share/plymouth/themes/omasway/omasway.plymouth" ]; then + sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth /usr/share/plymouth/themes/omasway/omasway.plymouth 100 + sudo update-alternatives --set default.plymouth /usr/share/plymouth/themes/omasway/omasway.plymouth + else + echo "Warning: Plymouth theme file not found" + fi + fi +else + echo "Warning: Plymouth theme source directory not found: $THEME_SOURCE_DIR" +fi + +if [ ! -f /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf ]; then + # Make plymouth remain until graphical.target + sudo mkdir -p /etc/systemd/system/plymouth-quit.service.d + sudo tee /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf <<'EOF' +[Unit] +After=multi-user.target +EOF +fi + +# Mask plymouth-quit-wait.service only if not already masked +if ! systemctl is-enabled plymouth-quit-wait.service | grep -q masked; then + sudo systemctl mask plymouth-quit-wait.service + sudo systemctl daemon-reload +fi + +# Final initramfs update to ensure all Plymouth changes are applied +sudo update-initramfs -u \ No newline at end of file diff --git a/install/mise.sh b/install/mise.sh deleted file mode 100644 index 93c10c3..0000000 --- a/install/mise.sh +++ /dev/null @@ -1,6 +0,0 @@ -# Install mise for managing multiple versions of languages. See https://mise.jdx.dev/ -sudo install -dm 755 /etc/apt/keyrings -wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1>/dev/null -echo "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 -sudo apt update -sudo apt install -y mise diff --git a/install/network.sh b/install/network.sh deleted file mode 100644 index 7e4b54a..0000000 --- a/install/network.sh +++ /dev/null @@ -1,3 +0,0 @@ -# Add network management tools -sudo apt install -y \ - network-manager network-manager-gnome \ No newline at end of file diff --git a/install/optional/app-mainline-kernels.sh b/install/optional/app-mainline-kernels.sh deleted file mode 100644 index bc47046..0000000 --- a/install/optional/app-mainline-kernels.sh +++ /dev/null @@ -1,3 +0,0 @@ -sudo add-apt-repository -y ppa:cappelikan/ppa -sudo apt update -y -sudo apt install -y mainline diff --git a/install/packages.sh b/install/packages.sh new file mode 100644 index 0000000..57f85da --- /dev/null +++ b/install/packages.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +# Base Packages +packages=( + acpi + acpid + alacritty + alsa-utils + apt-transport-https + autoconf + automake + autotiling + bat + bison + brightnessctl + bluez + blueman + btop + build-essential + ca-certificates + cargo + clang + cmake + curl + cups + cups-filters + dbus-user-session + evince + eza + fcitx5 + fcitx5-config-qt + fd-find + ffmpeg + ffmpegthumbnailer + flatpak + fonts-font-awesome + fonts-noto + fonts-dejavu-core + fonts-noto-color-emoji + fonts-liberation2 + fzf + git + gnome-calculator + gnome-keyring + gnome-sushi + gnome-themes-extra + gnupg + golang-go + gpg + grim + imagemagick + initramfs-tools + imv + jq + libnotify-bin + libnotify-dev + lsb-release + mako-notifier + mpv + mupdf + mupdf-tools + nautilus + network-manager + network-manager-gnome + python3-pip + pipewire + pipewire-pulse + pipx + pkg-config + playerctl + plocate + plymouth + plymouth-themes + polkitd + printer-driver-cups-pdf + rfkill + ripgrep + rustc + slurp + system-config-printer + sway + swaybg + swayidle + swaylock + tar + tlp + unzip + ufw + xdg-user-dirs + xdg-desktop-portal + xdg-desktop-portal-gtk + xdg-desktop-portal-wlr + xwayland + yaru-theme-gtk + yaru-theme-icon + waybar + wayland-protocols + wayland-utils + wget + wf-recorder + wireplumber + wl-clipboard + wofi + zoxide +) + +# Install packages +sudo apt install -y "${packages[@]}" \ No newline at end of file diff --git a/install/packaging/apps.sh b/install/packaging/apps.sh new file mode 100644 index 0000000..8901389 --- /dev/null +++ b/install/packaging/apps.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + +# Base Apps +apps=( + "Chromium" + "LocalSend" + "LibreOffice" + "Spotify" + "Pinta" +) + +# Install optional apps +for app in "${apps[@]}"; do + if [[ -f "$HOME/.local/share/omasway/applications/install/${app,,}.sh" ]]; then + source "$HOME/.local/share/omasway/applications/install/${app,,}.sh" + else + echo "Warning: Installation script for $app not found." + fi +done \ No newline at end of file diff --git a/install/packaging/fonts.sh b/install/packaging/fonts.sh new file mode 100644 index 0000000..7245846 --- /dev/null +++ b/install/packaging/fonts.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +mkdir -p ~/.local/share/fonts + +# Install Nerd Fonts +cd /tmp +wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip +unzip CascadiaMono.zip -d CascadiaFont +cp CascadiaFont/*.ttf ~/.local/share/fonts +rm -rf CascadiaMono.zip CascadiaFont + +fc-cache +cd - \ No newline at end of file diff --git a/install/packaging/nvim.sh b/install/packaging/nvim.sh new file mode 100644 index 0000000..1f5e5d3 --- /dev/null +++ b/install/packaging/nvim.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Install Neovim +source ~/.local/share/omasway/applications/install/neovim.sh \ No newline at end of file diff --git a/install/packaging/tools.sh b/install/packaging/tools.sh new file mode 100644 index 0000000..f34a4cc --- /dev/null +++ b/install/packaging/tools.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Install Fastfetch - Manual installation for Debian compatibility +cd /tmp +wget -O fastfetch.deb "https://github.com/fastfetch-cli/fastfetch/releases/latest/download/fastfetch-linux-amd64.deb" +sudo dpkg -i fastfetch.deb +sudo apt-get install -f -y # Fix any missing dependencies +rm fastfetch.deb +cd - + +# Install mise for managing multiple versions of languages. See https://mise.jdx.dev/ +sudo install -dm 755 /etc/apt/keyrings +wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1>/dev/null +echo "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 +sudo apt update +sudo apt install -y mise + +# Install Starship +source ~/.local/share/omasway/applications/install/starship.sh + +# Install Docker +source ~/.local/share/omasway/applications/install/docker.sh + +# Install GitHub CLI +source ~/.local/share/omasway/applications/install/github-cli.sh + +# Install GitLab CLI +source ~/.local/share/omasway/applications/install/gitlab-cli.sh + +# Install Terminal Text Effects +pipx install terminaltexteffects \ No newline at end of file diff --git a/install/packaging/tuis.sh b/install/packaging/tuis.sh new file mode 100644 index 0000000..d72ad31 --- /dev/null +++ b/install/packaging/tuis.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# LazyDocker +cd /tmp +LAZYDOCKER_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazydocker/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') +curl -sLo lazydocker.tar.gz "https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_${LAZYDOCKER_VERSION}_Linux_x86_64.tar.gz" +tar -xf lazydocker.tar.gz lazydocker +sudo install lazydocker /usr/local/bin +rm lazydocker.tar.gz lazydocker +cd - + +# LazyGit +cd /tmp +LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') +curl -sLo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz" +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 - \ No newline at end of file diff --git a/install/packaging/uwsm.sh b/install/packaging/uwsm.sh new file mode 100644 index 0000000..741d1b3 --- /dev/null +++ b/install/packaging/uwsm.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Install UWSM (Universal Wayland Session Manager) +cd /tmp +UWSM_VERSION="v0.23.3" # Tested version +curl -sLo uwsm.tar.gz "https://github.com/Vladimir-csp/uwsm/archive/refs/tags/${UWSM_VERSION}.tar.gz" +tar -xf uwsm.tar.gz "uwsm-${UWSM_VERSION#v}" +mv "uwsm-${UWSM_VERSION#v}" uwsm +sudo ./uwsm/build-deb.sh -i +rm -rf uwsm.tar.gz uwsm +cd - \ No newline at end of file diff --git a/install/packaging/webapps.sh b/install/packaging/webapps.sh new file mode 100644 index 0000000..c0f94a6 --- /dev/null +++ b/install/packaging/webapps.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +omasway-webapp-install "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png +omasway-webapp-install "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png +omasway-webapp-install "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png \ No newline at end of file diff --git a/install/preflight/guard.sh b/install/preflight/guard.sh new file mode 100644 index 0000000..8a1dc37 --- /dev/null +++ b/install/preflight/guard.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +#!/bin/bash + +abort() { + echo -e "\e[31mOmasway install requires: $1\e[0m" + echo + gum confirm "Proceed anyway on your own accord and without assistance?" || exit 1 +} + +# Must be a valid OS +[[ -f /etc/os-release ]] || abort "/etc/os-release" + +. /etc/os-release + +# Check if running on Debian 13 (Trixie) +[[ "$ID" != "debian" ]] && abort "Debian 13 (Trixie)" +[[ "$VERSION_ID" != "13" ]] && abort "Debian 13 (Trixie)" + +# Must be x86 only to fully work +ARCH=$(uname -m) +if [[ "$ARCH" != "x86_64" ]] && [[ "$ARCH" != "i686" ]]; then + abort "x86_64 CPU" +fi + +# Must not have a desktop environment installed +[[ -n "$XDG_CURRENT_DESKTOP" ]] && abort "No desktop environment should be installed" + +# Cleared all guards +echo "Guards: OK" diff --git a/install/3-identification.sh b/install/preflight/identification.sh similarity index 73% rename from install/3-identification.sh rename to install/preflight/identification.sh index d69a778..e1c2f67 100644 --- a/install/3-identification.sh +++ b/install/preflight/identification.sh @@ -1,5 +1,5 @@ -echo -e "\nEnter identification for git and autocomplete..." +#!/bin/bash + SYSTEM_NAME=$(getent passwd "$USER" | cut -d ':' -f 5 | cut -d ',' -f 1) export OMASWAY_USER_NAME=$(gum input --placeholder "Enter full name" --value "$SYSTEM_NAME" --prompt "Name> ") -export OMASWAY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ") - +export OMASWAY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ") \ No newline at end of file diff --git a/install/preflight/migrations.sh b/install/preflight/migrations.sh new file mode 100644 index 0000000..ec9318f --- /dev/null +++ b/install/preflight/migrations.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +omasway_migrations_state_path=~/.local/state/omasway/migrations +mkdir -p $omasway_migrations_state_path + +for file in ~/.local/share/omasway/migrations/*.sh; do + touch "$omasway_migrations_state_path/$(basename "$file")" +done diff --git a/install/1-gum.sh b/install/preflight/presentation.sh similarity index 57% rename from install/1-gum.sh rename to install/preflight/presentation.sh index 7635e8d..60e4144 100644 --- a/install/1-gum.sh +++ b/install/preflight/presentation.sh @@ -1,9 +1,18 @@ +#!/bin/bash + +export PATH="$PATH:$HOME/.local/bin" + # Gum is used for the Omasway commands for tailoring Omasway after the initial install if ! command -v gum &> /dev/null; then cd /tmp - GUM_VERSION="0.14.3" # Use known good version + GUM_VERSION="0.16.2" # Tested Version wget -qO gum.deb "https://github.com/charmbracelet/gum/releases/download/v${GUM_VERSION}/gum_${GUM_VERSION}_amd64.deb" sudo apt-get install -y --allow-downgrades ./gum.deb rm gum.deb cd - fi + +# Fzf is used for the Omasway commands for tailoring Omasway after the initial install +if ! command -v fzf &> /dev/null; then + sudo apt install -y fzf +fi \ No newline at end of file diff --git a/install/preflight/timezone.sh b/install/preflight/timezone.sh new file mode 100644 index 0000000..4014278 --- /dev/null +++ b/install/preflight/timezone.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo -e "\e[31mSelect your timezone:\e[0m" +timezone=$(timedatectl list-timezones | fzf --prompt="Timezone > " --height=40% --border) +if [ -n "$timezone" ]; then + sudo timedatectl set-timezone "$timezone" + echo -e "\e[32mTimezone set to: $timezone\e[0m" +else + echo -e "\e[31mNo timezone selected.\e[0m" +fi \ No newline at end of file diff --git a/install/preflight/trap-errors.sh b/install/preflight/trap-errors.sh new file mode 100755 index 0000000..89464f9 --- /dev/null +++ b/install/preflight/trap-errors.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Give people a chance to retry running the installation +catch_errors() { + echo -e "\n\e[31mOmasway installation failed!\e[0m" + echo + echo "This command halted with exit code $?:" + echo "$BASH_COMMAND" + echo + + if command -v gum >/dev/null && gum confirm "Retry installation?"; then + bash ~/.local/share/omasway/install.sh + else + echo "You can retry later by running: bash ~/.local/share/omasway/install.sh" + fi +} + +trap catch_errors ERR diff --git a/install/theme.sh b/install/theme.sh deleted file mode 100644 index 3526302..0000000 --- a/install/theme.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Prefer dark mode everything -gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" -gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" - -# Setup theme links -mkdir -p ~/.config/omasway/themes -for f in ~/.local/share/omasway/themes/*; do ln -s "$f" ~/.config/omasway/themes/; done - -# Set initial theme -mkdir -p ~/.config/omasway/current -ln -snf ~/.config/omasway/themes/$OMASWAY_FIRST_RUN_THEME ~/.config/omasway/current/theme -source ~/.local/share/omasway/themes/$OMASWAY_FIRST_RUN_THEME/backgrounds.sh -ln -snf ~/.config/omasway/backgrounds/$OMASWAY_FIRST_RUN_THEME ~/.config/omasway/current/backgrounds -ln -snf $(find "$HOME/.config/omasway/current/backgrounds/" -type f | head -n 1) "$HOME/.config/omasway/current/background" - -# Set specific app links for current theme -ln -snf ~/.config/omasway/current/theme/wofi.css ~/.config/wofi/style.css -ln -snf ~/.config/omasway/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua -mkdir -p ~/.config/btop/themes -ln -snf ~/.config/omasway/current/theme/btop.theme ~/.config/btop/themes/current.theme - -# Touch alacritty config to pickup the changed theme -touch "$HOME/.config/alacritty/alacritty.toml" diff --git a/install/xtras.sh b/install/xtras.sh deleted file mode 100644 index 90e91fd..0000000 --- a/install/xtras.sh +++ /dev/null @@ -1,29 +0,0 @@ -# Optional Apps -if [[ -v OMASWAY_FIRST_RUN_OPTIONAL_APPS ]]; then - apps=$OMASWAY_FIRST_RUN_OPTIONAL_APPS - - if [[ -n "$apps" ]]; then - for app in $apps; do - source "$OMASWAY_PATH/install/optional/app-${app,,}.sh" - done - fi -fi - -# Applications -for script in ~/.local/share/omasway/applications/*.sh; do source $script; done - -# Remove Btop entry for one that runs in alacritty -sudo rm -rf /usr/share/applications/btop.desktop - -# App doesn't do anything when started from the app grid -sudo rm -rf /usr/share/applications/org.flameshot.Flameshot.desktop - -# Remove the ImageMagick icon -sudo rm -rf /usr/share/applications/display-im6.q16.desktop - -# Replacing this with btop -sudo rm -rf /usr/share/applications/org.gnome.SystemMonitor.desktop - -# We added our own meant for Alacritty -sudo rm -rf /usr/local/share/applications/nvim.desktop -sudo rm -rf /usr/local/share/applications/vim.desktop diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..5f2d61f Binary files /dev/null and b/logo.png differ diff --git a/ascii.sh b/logo.txt old mode 100755 new mode 100644 similarity index 65% rename from ascii.sh rename to logo.txt index aa1a3fe..1387363 --- a/ascii.sh +++ b/logo.txt @@ -1,21 +1,8 @@ -ascii_art=' - ██████╗ ███╗ ███╗ █████╗ ███████╗██╗ ██╗ █████╗ ██╗ ██╗ -██╔═══██╗████╗ ████║██╔══██╗██╔════╝██║ ██║██╔══██╗╚██╗ ██╔╝ -██║ ██║██╔████╔██║███████║███████╗██║ █╗ ██║███████║ ╚████╔╝ -██║ ██║██║╚██╔╝██║██╔══██║╚════██║██║███╗██║██╔══██║ ╚██╔╝ -╚██████╔╝██║ ╚═╝ ██║██║ ██║███████║╚███╔███╔╝██║ ██║ ██║ - ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ -' - -# ANSI escape sequence per colore RGB #1b4a49 -color='\033[38;2;27;74;73m' -reset='\033[0m' -# Stampa riga per riga con colore uniforme -IFS=$'\n' read -rd '' -a lines <<<"$ascii_art" -for line in "${lines[@]}"; do - echo -e "${color}${line}" -done -# Reset colore -echo -e "$reset" + ██████╗ ███╗ ███╗ █████╗ ███████╗██╗ ██╗ █████╗ ██╗ ██╗ +██╔═══██╗████╗ ████║██╔══██╗██╔════╝██║ ██║██╔══██╗╚██╗ ██╔╝ +██║ ██║██╔████╔██║███████║███████╗██║ █╗ ██║███████║ ╚████╔╝ +██║ ██║██║╚██╔╝██║██╔══██║╚════██║██║███╗██║██╔══██║ ╚██╔╝ +╚██████╔╝██║ ╚═╝ ██║██║ ██║███████║╚███╔███╔╝██║ ██║ ██║ + ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ diff --git a/config/lazygit/config.yml b/migrations/.gitkeep similarity index 100% rename from config/lazygit/config.yml rename to migrations/.gitkeep diff --git a/themes/catppuccin-latte/alacritty.toml b/themes/catppuccin-latte/alacritty.toml new file mode 100644 index 0000000..3fcf61e --- /dev/null +++ b/themes/catppuccin-latte/alacritty.toml @@ -0,0 +1,67 @@ +# https://raw.githubusercontent.com/catppuccin/alacritty/main/catppuccin-latte.toml + +[colors.primary] +background = "#eff1f5" +foreground = "#4c4f69" +dim_foreground = "#8c8fa1" +bright_foreground = "#4c4f69" + +[colors.cursor] +text = "#eff1f5" +cursor = "#dc8a78" + +[colors.vi_mode_cursor] +text = "#eff1f5" +cursor = "#7287fd" + +[colors.search.matches] +foreground = "#eff1f5" +background = "#6c6f85" + +[colors.search.focused_match] +foreground = "#eff1f5" +background = "#40a02b" + +[colors.footer_bar] +foreground = "#eff1f5" +background = "#6c6f85" + +[colors.hints.start] +foreground = "#eff1f5" +background = "#df8e1d" + +[colors.hints.end] +foreground = "#eff1f5" +background = "#6c6f85" + +[colors.selection] +text = "#eff1f5" +background = "#dc8a78" + +[colors.normal] +black = "#bcc0cc" +red = "#d20f39" +green = "#40a02b" +yellow = "#df8e1d" +blue = "#1e66f5" +magenta = "#ea76cb" +cyan = "#179299" +white = "#5c5f77" + +[colors.bright] +black = "#acb0be" +red = "#d20f39" +green = "#40a02b" +yellow = "#df8e1d" +blue = "#1e66f5" +magenta = "#ea76cb" +cyan = "#179299" +white = "#6c6f85" + +[[colors.indexed_colors]] +index = 16 +color = "#fe640b" + +[[colors.indexed_colors]] +index = 17 +color = "#dc8a78" diff --git a/themes/catppuccin-latte/backgrounds/1-catppuccin-latte.png b/themes/catppuccin-latte/backgrounds/1-catppuccin-latte.png new file mode 100644 index 0000000..ee0cd94 Binary files /dev/null and b/themes/catppuccin-latte/backgrounds/1-catppuccin-latte.png differ diff --git a/themes/catppuccin-latte/btop.theme b/themes/catppuccin-latte/btop.theme new file mode 100644 index 0000000..87ed181 --- /dev/null +++ b/themes/catppuccin-latte/btop.theme @@ -0,0 +1,84 @@ +# https://github.com/catppuccin/btop/blob/main/themes/catppuccin_latte.theme +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="#eff1f5" + +# Main text color +theme[main_fg]="#4c4f69" + +# Title color for boxes +theme[title]="#4c4f69" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#1e66f5" + +# Background color of selected item in processes box +theme[selected_bg]="#bcc0cc" + +# Foreground color of selected item in processes box +theme[selected_fg]="#1e66f5" + +# Color of inactive/disabled text +theme[inactive_fg]="#8c8fa1" + +# Color of text appearing on top of graphs, i.e uptime and current network graph scaling +theme[graph_text]="#dc8a78" + +# Background color of the percentage meters +theme[meter_bg]="#bcc0cc" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#dc8a78" + +# CPU, Memory, Network, Proc box outline colors +theme[cpu_box]="#8839ef" #Mauve +theme[mem_box]="#40a02b" #Green +theme[net_box]="#e64553" #Maroon +theme[proc_box]="#1e66f5" #Blue + +# Box divider line and small boxes line color +theme[div_line]="#9ca0b0" + +# Temperature graph color (Green -> Yellow -> Red) +theme[temp_start]="#40a02b" +theme[temp_mid]="#df8e1d" +theme[temp_end]="#d20f39" + +# CPU graph colors (Teal -> Lavender) +theme[cpu_start]="#179299" +theme[cpu_mid]="#209fb5" +theme[cpu_end]="#7287fd" + +# Mem/Disk free meter (Mauve -> Lavender -> Blue) +theme[free_start]="#8839ef" +theme[free_mid]="#7287fd" +theme[free_end]="#1e66f5" + +# Mem/Disk cached meter (Sapphire -> Lavender) +theme[cached_start]="#209fb5" +theme[cached_mid]="#1e66f5" +theme[cached_end]="#7287fd" + +# Mem/Disk available meter (Peach -> Red) +theme[available_start]="#fe640b" +theme[available_mid]="#e64553" +theme[available_end]="#d20f39" + +# Mem/Disk used meter (Green -> Sky) +theme[used_start]="#40a02b" +theme[used_mid]="#179299" +theme[used_end]="#04a5e5" + +# Download graph colors (Peach -> Red) +theme[download_start]="#fe640b" +theme[download_mid]="#e64553" +theme[download_end]="#d20f39" + +# Upload graph colors (Green -> Sky) +theme[upload_start]="#40a02b" +theme[upload_mid]="#179299" +theme[upload_end]="#04a5e5" + +# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) +theme[process_start]="#209fb5" +theme[process_mid]="#7287fd" +theme[process_end]="#8839ef" diff --git a/themes/catppuccin-latte/chromium.theme b/themes/catppuccin-latte/chromium.theme new file mode 100644 index 0000000..8bd675b --- /dev/null +++ b/themes/catppuccin-latte/chromium.theme @@ -0,0 +1 @@ +239,241,245 diff --git a/themes/catppuccin-latte/gtk.theme b/themes/catppuccin-latte/gtk.theme new file mode 100644 index 0000000..f5ac3db --- /dev/null +++ b/themes/catppuccin-latte/gtk.theme @@ -0,0 +1 @@ +blue \ No newline at end of file diff --git a/themes/catppuccin-latte/icons.theme b/themes/catppuccin-latte/icons.theme new file mode 100644 index 0000000..6ce2f14 --- /dev/null +++ b/themes/catppuccin-latte/icons.theme @@ -0,0 +1 @@ +Yaru-blue diff --git a/themes/catppuccin-latte/light.mode b/themes/catppuccin-latte/light.mode new file mode 100644 index 0000000..66bb2d0 --- /dev/null +++ b/themes/catppuccin-latte/light.mode @@ -0,0 +1 @@ +# This will set "prefer-light" and use "Adwaita" as the theme diff --git a/themes/catppuccin-latte/mako.ini b/themes/catppuccin-latte/mako.ini new file mode 100644 index 0000000..6461da0 --- /dev/null +++ b/themes/catppuccin-latte/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#4c4f69 +border-color=#1e66f5 +background-color=#eff1f5 +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 \ No newline at end of file diff --git a/themes/catppuccin-latte/neovim.lua b/themes/catppuccin-latte/neovim.lua new file mode 100644 index 0000000..07a53cf --- /dev/null +++ b/themes/catppuccin-latte/neovim.lua @@ -0,0 +1,19 @@ +return { + { + "catppuccin/nvim", + name = "catppuccin", + priority = 1000, + config = function() + require("catppuccin").setup({ + flavour = "latte", -- other options: "mocha", "frappe", "macchiato" + }) + vim.cmd.colorscheme("catppuccin-latte") + end, + }, + { + "LazyVim/LazyVim", + opts = { + colorscheme = "catppuccin-latte", + }, + }, +} diff --git a/themes/catppuccin-latte/swayosd.css b/themes/catppuccin-latte/swayosd.css new file mode 100644 index 0000000..c5f23aa --- /dev/null +++ b/themes/catppuccin-latte/swayosd.css @@ -0,0 +1,5 @@ +@define-color background-color #eff1f5; +@define-color border-color #1e66f5; +@define-color label #4c4f69; +@define-color image #4c4f69; +@define-color progress #4c4f69; diff --git a/themes/catppuccin-latte/vscode.theme b/themes/catppuccin-latte/vscode.theme new file mode 100644 index 0000000..5820f04 --- /dev/null +++ b/themes/catppuccin-latte/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Catppuccin Latte" +vscode[extension]="Catppuccin.catppuccin-vsc" \ No newline at end of file diff --git a/themes/catppuccin-latte/waybar.css b/themes/catppuccin-latte/waybar.css new file mode 100644 index 0000000..5918ec6 --- /dev/null +++ b/themes/catppuccin-latte/waybar.css @@ -0,0 +1,4 @@ +@define-color foreground #4c4f69; /* text */ +@define-color background #eff1f5; /* base */ +@define-color border #dce0e8; /* crust */ +@define-color accent #1e66f5; /* blue */ diff --git a/themes/catppuccin-latte/wofi.css b/themes/catppuccin-latte/wofi.css new file mode 100644 index 0000000..864570c --- /dev/null +++ b/themes/catppuccin-latte/wofi.css @@ -0,0 +1,5 @@ +@define-color selected-text #1e66f5; +@define-color text #4c4f69; +@define-color base #eff1f5; +@define-color base-rgba rgba(239, 241, 245, 0.95); +@define-color border #dce0e8; diff --git a/themes/catppuccin/backgrounds.sh b/themes/catppuccin/backgrounds.sh deleted file mode 100644 index 462717e..0000000 --- a/themes/catppuccin/backgrounds.sh +++ /dev/null @@ -1,2 +0,0 @@ -mkdir -p "$BACKGROUNDS_DIR/catppuccin" -download_background_image "https://omakasui.lucapattocchio.dev/themes/catppuccin/background.png" "catppuccin/1-catppuccin.png" diff --git a/themes/catppuccin/backgrounds/1-catppuccin.png b/themes/catppuccin/backgrounds/1-catppuccin.png new file mode 100644 index 0000000..5fbcebc Binary files /dev/null and b/themes/catppuccin/backgrounds/1-catppuccin.png differ diff --git a/themes/catppuccin/backgrounds/2-cat-waves-mocha.png b/themes/catppuccin/backgrounds/2-cat-waves-mocha.png new file mode 100644 index 0000000..a0b5325 Binary files /dev/null and b/themes/catppuccin/backgrounds/2-cat-waves-mocha.png differ diff --git a/themes/catppuccin/backgrounds/3-cat-blue-eye-mocha.png b/themes/catppuccin/backgrounds/3-cat-blue-eye-mocha.png new file mode 100644 index 0000000..30b5963 Binary files /dev/null and b/themes/catppuccin/backgrounds/3-cat-blue-eye-mocha.png differ diff --git a/themes/catppuccin/chromium.theme b/themes/catppuccin/chromium.theme new file mode 100644 index 0000000..1d96599 --- /dev/null +++ b/themes/catppuccin/chromium.theme @@ -0,0 +1 @@ +24,24,36 diff --git a/themes/catppuccin/gtk.theme b/themes/catppuccin/gtk.theme new file mode 100644 index 0000000..fcf879f --- /dev/null +++ b/themes/catppuccin/gtk.theme @@ -0,0 +1 @@ +purple \ No newline at end of file diff --git a/themes/catppuccin/icons.theme b/themes/catppuccin/icons.theme new file mode 100644 index 0000000..24a4551 --- /dev/null +++ b/themes/catppuccin/icons.theme @@ -0,0 +1 @@ +Yaru-purple diff --git a/themes/catppuccin/mako.ini b/themes/catppuccin/mako.ini new file mode 100644 index 0000000..dc5f9c6 --- /dev/null +++ b/themes/catppuccin/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#cad3f5 +border-color=#c6d0f5 +background-color=#24273a +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 \ No newline at end of file diff --git a/themes/catppuccin/swayosd.css b/themes/catppuccin/swayosd.css new file mode 100644 index 0000000..0ff80d2 --- /dev/null +++ b/themes/catppuccin/swayosd.css @@ -0,0 +1,5 @@ +@define-color background-color #24273a; +@define-color border-color #c6d0f5; +@define-color label #cad3f5; +@define-color image #cad3f5; +@define-color progress #cad3f5; diff --git a/themes/catppuccin/vscode.theme b/themes/catppuccin/vscode.theme new file mode 100644 index 0000000..eacd1bf --- /dev/null +++ b/themes/catppuccin/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Catppuccin Macchiato" +vscode[extension]="Catppuccin.catppuccin-vsc" \ No newline at end of file diff --git a/themes/catppuccin/waybar.css b/themes/catppuccin/waybar.css index 20d1a8b..bf35a40 100644 --- a/themes/catppuccin/waybar.css +++ b/themes/catppuccin/waybar.css @@ -1,5 +1,2 @@ -* { - color: #cdd6f4; - background-color: #181824; -} - +@define-color foreground #cdd6f4; +@define-color background #181824; diff --git a/themes/catppuccin/wofi.css b/themes/catppuccin/wofi.css index 7dd3bb5..161833e 100644 --- a/themes/catppuccin/wofi.css +++ b/themes/catppuccin/wofi.css @@ -1,4 +1,5 @@ -@define-color selected-text #8caaee; -@define-color text #c6d0f5; -@define-color base #24273a; -@define-color border #c6d0f5; +@define-color selected-text #8caaee; +@define-color text #c6d0f5; +@define-color base #24273a; +@define-color base-rgba rgba(36, 39, 58, 0.95); +@define-color border #c6d0f5; diff --git a/themes/everforest/backgrounds.sh b/themes/everforest/backgrounds.sh deleted file mode 100644 index 7faad21..0000000 --- a/themes/everforest/backgrounds.sh +++ /dev/null @@ -1,2 +0,0 @@ -mkdir -p "$BACKGROUNDS_DIR/everforest" -download_background_image "https://omakasui.lucapattocchio.dev/themes/everforest/background.jpg" "everforest/1-everforest.jpg" diff --git a/themes/everforest/backgrounds/1-everforest.jpg b/themes/everforest/backgrounds/1-everforest.jpg new file mode 100644 index 0000000..6d75259 Binary files /dev/null and b/themes/everforest/backgrounds/1-everforest.jpg differ diff --git a/themes/everforest/chromium.theme b/themes/everforest/chromium.theme new file mode 100644 index 0000000..381b5ba --- /dev/null +++ b/themes/everforest/chromium.theme @@ -0,0 +1 @@ +45,53,59 diff --git a/themes/everforest/gtk.theme b/themes/everforest/gtk.theme new file mode 100644 index 0000000..2004c03 --- /dev/null +++ b/themes/everforest/gtk.theme @@ -0,0 +1 @@ +sage \ No newline at end of file diff --git a/themes/everforest/icons.theme b/themes/everforest/icons.theme new file mode 100644 index 0000000..140e422 --- /dev/null +++ b/themes/everforest/icons.theme @@ -0,0 +1 @@ +Yaru-sage diff --git a/themes/everforest/mako.ini b/themes/everforest/mako.ini new file mode 100644 index 0000000..05b50e8 --- /dev/null +++ b/themes/everforest/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#d3c6aa +border-color=#d3c6aa +background-color=#2d353b +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 \ No newline at end of file diff --git a/themes/everforest/swayosd.css b/themes/everforest/swayosd.css new file mode 100644 index 0000000..f0bff40 --- /dev/null +++ b/themes/everforest/swayosd.css @@ -0,0 +1,6 @@ +@define-color background-color #2d353b; +@define-color border-color #d3c6aa; +@define-color label #d3c6aa; +@define-color image #d3c6aa; +@define-color progress #d3c6aa; + diff --git a/themes/everforest/vscode.theme b/themes/everforest/vscode.theme new file mode 100644 index 0000000..5ead15b --- /dev/null +++ b/themes/everforest/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Everforest Dark" +vscode[extension]="sainnhe.everforest" \ No newline at end of file diff --git a/themes/everforest/waybar.css b/themes/everforest/waybar.css index dcf249a..e8249f7 100644 --- a/themes/everforest/waybar.css +++ b/themes/everforest/waybar.css @@ -1,5 +1,2 @@ - -* { - color: #d3c6aa; - background-color: #2d353b; -} +@define-color foreground #d3c6aa; +@define-color background #2d353b; diff --git a/themes/everforest/wofi.css b/themes/everforest/wofi.css index e4ea073..f42acb8 100644 --- a/themes/everforest/wofi.css +++ b/themes/everforest/wofi.css @@ -1,4 +1,5 @@ -@define-color selected-text #dbbc7f; -@define-color text #d3c6aa; -@define-color base #2d353b; -@define-color border #d3c6aa; +@define-color selected-text #dbbc7f; +@define-color text #d3c6aa; +@define-color base #2d353b; +@define-color base-rgba rgba(45, 53, 59, 0.95); +@define-color border #d3c6aa; diff --git a/themes/gruvbox/backgrounds.sh b/themes/gruvbox/backgrounds.sh deleted file mode 100644 index 27162ce..0000000 --- a/themes/gruvbox/backgrounds.sh +++ /dev/null @@ -1,2 +0,0 @@ -mkdir -p "$BACKGROUNDS_DIR/gruvbox" -download_background_image "https://omakasui.lucapattocchio.dev/themes/gruvbox/background.png" "gruvbox/1-grubox.png" diff --git a/themes/gruvbox/backgrounds/1-grubox.jpg b/themes/gruvbox/backgrounds/1-grubox.jpg new file mode 100644 index 0000000..fd31869 Binary files /dev/null and b/themes/gruvbox/backgrounds/1-grubox.jpg differ diff --git a/themes/gruvbox/chromium.theme b/themes/gruvbox/chromium.theme new file mode 100644 index 0000000..40520c9 --- /dev/null +++ b/themes/gruvbox/chromium.theme @@ -0,0 +1 @@ +40,40,40 diff --git a/themes/gruvbox/gtk.theme b/themes/gruvbox/gtk.theme new file mode 100644 index 0000000..d765af2 --- /dev/null +++ b/themes/gruvbox/gtk.theme @@ -0,0 +1 @@ +olive \ No newline at end of file diff --git a/themes/gruvbox/icons.theme b/themes/gruvbox/icons.theme new file mode 100644 index 0000000..7bb20fc --- /dev/null +++ b/themes/gruvbox/icons.theme @@ -0,0 +1 @@ +Yaru-olive diff --git a/themes/gruvbox/mako.ini b/themes/gruvbox/mako.ini new file mode 100644 index 0000000..669c6f5 --- /dev/null +++ b/themes/gruvbox/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#d4be98 +border-color=#a89984 +background-color=#282828 +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 \ No newline at end of file diff --git a/themes/gruvbox/swayosd.css b/themes/gruvbox/swayosd.css new file mode 100644 index 0000000..16240ae --- /dev/null +++ b/themes/gruvbox/swayosd.css @@ -0,0 +1,6 @@ +@define-color background-color #282828; +@define-color border-color #a89984; +@define-color label #ebdbb2; +@define-color image #ebdbb2; +@define-color progress #ebdbb2; + diff --git a/themes/gruvbox/vscode.theme b/themes/gruvbox/vscode.theme new file mode 100644 index 0000000..dc00b29 --- /dev/null +++ b/themes/gruvbox/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Gruvbox Dark Medium" +vscode[extension]="jdinhlife.gruvbox" \ No newline at end of file diff --git a/themes/gruvbox/waybar.css b/themes/gruvbox/waybar.css index be14dae..598de57 100644 --- a/themes/gruvbox/waybar.css +++ b/themes/gruvbox/waybar.css @@ -1,5 +1,2 @@ - -* { - color: #d4be98; - background-color: #282828; -} +@define-color foreground #d4be98; +@define-color background #282828; diff --git a/themes/gruvbox/wofi.css b/themes/gruvbox/wofi.css index 42d68ef..9fb9ff7 100644 --- a/themes/gruvbox/wofi.css +++ b/themes/gruvbox/wofi.css @@ -1,4 +1,5 @@ -@define-color selected-text #fabd2f; -@define-color text #ebdbb2; -@define-color base #282828; -@define-color border #ebdbb2; +@define-color selected-text #fabd2f; +@define-color text #ebdbb2; +@define-color base #282828; +@define-color base-rgba rgba(40, 40, 40, 0.95); +@define-color border #ebdbb2; diff --git a/themes/kanagawa/backgrounds.sh b/themes/kanagawa/backgrounds.sh deleted file mode 100644 index ab73d11..0000000 --- a/themes/kanagawa/backgrounds.sh +++ /dev/null @@ -1,2 +0,0 @@ -mkdir -p "$BACKGROUNDS_DIR/kanagawa" -download_background_image "https://omakasui.lucapattocchio.dev/themes/kanagawa/background.jpg" "kanagawa/1-kanagawa.jpg" diff --git a/themes/kanagawa/backgrounds/1-kanagawa.jpg b/themes/kanagawa/backgrounds/1-kanagawa.jpg new file mode 100644 index 0000000..197c48d Binary files /dev/null and b/themes/kanagawa/backgrounds/1-kanagawa.jpg differ diff --git a/themes/kanagawa/chromium.theme b/themes/kanagawa/chromium.theme new file mode 100644 index 0000000..ca40205 --- /dev/null +++ b/themes/kanagawa/chromium.theme @@ -0,0 +1 @@ +31,31,40 diff --git a/themes/kanagawa/gtk.theme b/themes/kanagawa/gtk.theme new file mode 100644 index 0000000..fcf879f --- /dev/null +++ b/themes/kanagawa/gtk.theme @@ -0,0 +1 @@ +purple \ No newline at end of file diff --git a/themes/kanagawa/icons.theme b/themes/kanagawa/icons.theme new file mode 100644 index 0000000..6ce2f14 --- /dev/null +++ b/themes/kanagawa/icons.theme @@ -0,0 +1 @@ +Yaru-blue diff --git a/themes/kanagawa/mako.ini b/themes/kanagawa/mako.ini new file mode 100644 index 0000000..fe944d8 --- /dev/null +++ b/themes/kanagawa/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#dcd7ba +border-color=#dcd7ba +background-color=#1f1f28 +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 \ No newline at end of file diff --git a/themes/kanagawa/swayosd.css b/themes/kanagawa/swayosd.css new file mode 100644 index 0000000..1eb5c85 --- /dev/null +++ b/themes/kanagawa/swayosd.css @@ -0,0 +1,6 @@ +@define-color background-color #1f1f28; +@define-color border-color #dcd7ba; +@define-color label #dcd7ba; +@define-color image #dcd7ba; +@define-color progress #dcd7ba; + diff --git a/themes/kanagawa/vscode.theme b/themes/kanagawa/vscode.theme new file mode 100644 index 0000000..3bb2725 --- /dev/null +++ b/themes/kanagawa/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Kanagawa" +vscode[extension]="qufiwefefwoyn.kanagawa" \ No newline at end of file diff --git a/themes/kanagawa/waybar.css b/themes/kanagawa/waybar.css index 46755eb..029cc07 100644 --- a/themes/kanagawa/waybar.css +++ b/themes/kanagawa/waybar.css @@ -1,5 +1,2 @@ - -* { - color: #dcd7ba; - background-color: #1f1f28; -} +@define-color foreground #dcd7ba; +@define-color background #1f1f28; diff --git a/themes/kanagawa/wofi.css b/themes/kanagawa/wofi.css index 8c45967..fd6c111 100644 --- a/themes/kanagawa/wofi.css +++ b/themes/kanagawa/wofi.css @@ -1,4 +1,5 @@ -@define-color selected-text #dca561; -@define-color text #dcd7ba; -@define-color base #1f1f28; -@define-color border #dcd7ba; +@define-color selected-text #dca561; +@define-color text #dcd7ba; +@define-color base #1f1f28; +@define-color base-rgba rgba(31, 31, 40, 0.95); +@define-color border #dcd7ba; diff --git a/themes/matte-black/alacritty.toml b/themes/matte-black/alacritty.toml new file mode 100644 index 0000000..2082409 --- /dev/null +++ b/themes/matte-black/alacritty.toml @@ -0,0 +1,53 @@ +# ──────────────────────────────────────────────────────────── +# Omarchy Matte Black Theme for Alacritty +# By tahayvr +# https://github.com/tahayvr +# ──────────────────────────────────────────────────────────── + +[window] +# window padding {px} +padding.x = 12 +padding.y = 12 + +[font] +size = 12.0 + + + +[colors] +[colors.primary] +background = "#121212" +foreground = "#bebebe" +dim_foreground = "#8a8a8d" + +[colors.cursor] +text = "#121212" +cursor = "#eaeaea" + +[colors.vi_mode_cursor] +text = "#121212" +cursor = "#eaeaea" + +[colors.selection] +text = "CellForeground" +background = "#333333" + +[colors.normal] +black = "#333333" +red = "#D35F5F" +green = "#FFC107" +yellow = "#b91c1c" +blue = "#e68e0d" +magenta = "#D35F5F" +cyan = "#bebebe" +white = "#bebebe" + +[colors.bright] +black = "#8a8a8d" +red = "#B91C1C" +green = "#FFC107" +yellow = "#b90a0a" +blue = "#f59e0b" +magenta = "#B91C1C" +cyan = "#eaeaea" +white = "#ffffff" \ No newline at end of file diff --git a/themes/matte-black/backgrounds/0-ship-at-sea.jpg b/themes/matte-black/backgrounds/0-ship-at-sea.jpg new file mode 100644 index 0000000..4375ee2 Binary files /dev/null and b/themes/matte-black/backgrounds/0-ship-at-sea.jpg differ diff --git a/themes/matte-black/backgrounds/1-matte-black.jpg b/themes/matte-black/backgrounds/1-matte-black.jpg new file mode 100644 index 0000000..2afb1bc Binary files /dev/null and b/themes/matte-black/backgrounds/1-matte-black.jpg differ diff --git a/themes/matte-black/btop.theme b/themes/matte-black/btop.theme new file mode 100644 index 0000000..c8cdcd0 --- /dev/null +++ b/themes/matte-black/btop.theme @@ -0,0 +1,92 @@ +# ──────────────────────────────────────────────────────────── +# Bashtop theme - Omarchy Matte Black +# by tahayvr +# https://github.com/tahayvr +# ──────────────────────────────────────────────────────────── + +# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255" +# example for white: "#ffffff", "#ff" or "255 255 255". + +# All graphs and meters can be gradients +# For single color graphs leave "mid" and "end" variable empty. +# Use "start" and "end" variables for two color gradient +# Use "start", "mid" and "end" for three color gradient + +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="" + +# Main text color +theme[main_fg]="#EAEAEA" + +# Title color for boxes +theme[title]="#8a8a8d" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#f59e0b" + +# Background color of selected item in processes box +theme[selected_bg]="#f59e0b" + +# Foreground color of selected item in processes box +theme[selected_fg]="#EAEAEA" + +# Color of inactive/disabled text +theme[inactive_fg]="#333333" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#8a8a8d" + +# Cpu box outline color +theme[cpu_box]="#8a8a8d" + +# Memory/disks box outline color +theme[mem_box]="#8a8a8d" + +# Net up/down box outline color +theme[net_box]="#8a8a8d" + +# Processes box outline color +theme[proc_box]="#8a8a8d" + +# Box divider line and small boxes line color +theme[div_line]="#8a8a8d" + +# Temperature graph colors +theme[temp_start]="#8a8a8d" +theme[temp_mid]="#f59e0b" +theme[temp_end]="#b91c1c" + +# CPU graph colors +theme[cpu_start]="#8a8a8d" +theme[cpu_mid]="#f59e0b" +theme[cpu_end]="#b91c1c" + +# Mem/Disk free meter +theme[free_start]="#8a8a8d" +theme[free_mid]="#f59e0b" +theme[free_end]="#b91c1c" + +# Mem/Disk cached meter +theme[cached_start]="#8a8a8d" +theme[cached_mid]="#f59e0b" +theme[cached_end]="#b91c1c" + +# Mem/Disk available meter +theme[available_start]="#8a8a8d" +theme[available_mid]="#f59e0b" +theme[available_end]="#b91c1c" + +# Mem/Disk used meter +theme[used_start]="#8a8a8d" +theme[used_mid]="#f59e0b" +theme[used_end]="#b91c1c" + +# Download graph colors +theme[download_start]="#8a8a8d" +theme[download_mid]="#f59e0b" +theme[download_end]="#b91c1c" + +# Upload graph colors +theme[upload_start]="#8a8a8d" +theme[upload_mid]="#f59e0b" +theme[upload_end]="#b91c1c" diff --git a/themes/matte-black/chromium.theme b/themes/matte-black/chromium.theme new file mode 100644 index 0000000..6e77e85 --- /dev/null +++ b/themes/matte-black/chromium.theme @@ -0,0 +1 @@ +30,30,30 diff --git a/themes/matte-black/gtk.theme b/themes/matte-black/gtk.theme new file mode 100644 index 0000000..46f29e8 --- /dev/null +++ b/themes/matte-black/gtk.theme @@ -0,0 +1 @@ +red \ No newline at end of file diff --git a/themes/matte-black/icons.theme b/themes/matte-black/icons.theme new file mode 100644 index 0000000..a3c0a4c --- /dev/null +++ b/themes/matte-black/icons.theme @@ -0,0 +1 @@ +Yaru-red diff --git a/themes/matte-black/mako.ini b/themes/matte-black/mako.ini new file mode 100644 index 0000000..a0e6653 --- /dev/null +++ b/themes/matte-black/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#8a8a8d +border-color=#8A8A8D +background-color=#1e1e1e +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 diff --git a/themes/matte-black/neovim.lua b/themes/matte-black/neovim.lua new file mode 100644 index 0000000..7b3f72b --- /dev/null +++ b/themes/matte-black/neovim.lua @@ -0,0 +1,9 @@ +return { + { "tahayvr/matteblack.nvim", lazy = false, priority = 1000 }, + { + "LazyVim/LazyVim", + opts = { + colorscheme = "matteblack", + }, + }, +} \ No newline at end of file diff --git a/themes/matte-black/swayosd.css b/themes/matte-black/swayosd.css new file mode 100644 index 0000000..3f24dbb --- /dev/null +++ b/themes/matte-black/swayosd.css @@ -0,0 +1,6 @@ +@define-color background-color #121212; +@define-color border-color #8A8A8D; +@define-color label #8A8A8D; +@define-color image #8A8A8D; +@define-color progress #8A8A8D; + diff --git a/themes/matte-black/vscode.theme b/themes/matte-black/vscode.theme new file mode 100644 index 0000000..3666c58 --- /dev/null +++ b/themes/matte-black/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Matte Black Theme" +vscode[extension]="CleanThemes.matte-black-theme" \ No newline at end of file diff --git a/themes/matte-black/waybar.css b/themes/matte-black/waybar.css new file mode 100644 index 0000000..1b8bb7f --- /dev/null +++ b/themes/matte-black/waybar.css @@ -0,0 +1,2 @@ +@define-color foreground #8a8a8d; +@define-color background #1e1e1e; diff --git a/themes/matte-black/wofi.css b/themes/matte-black/wofi.css new file mode 100644 index 0000000..9019e2c --- /dev/null +++ b/themes/matte-black/wofi.css @@ -0,0 +1,5 @@ +@define-color selected-text #B91C1C; +@define-color text #EAEAEA; +@define-color base #121212; +@define-color base-rgba rgba(18, 18, 18, 0.95); +@define-color border #EAEAEA88; diff --git a/themes/nord/backgrounds.sh b/themes/nord/backgrounds.sh deleted file mode 100644 index 04eeaa7..0000000 --- a/themes/nord/backgrounds.sh +++ /dev/null @@ -1,2 +0,0 @@ -mkdir -p "$BACKGROUNDS_DIR/nord" -download_background_image "https://omakasui.lucapattocchio.dev/themes/nord/background.jpg" "nord/1-nord.jpg" diff --git a/themes/nord/backgrounds/1-nord.png b/themes/nord/backgrounds/1-nord.png new file mode 100644 index 0000000..56dbc1d Binary files /dev/null and b/themes/nord/backgrounds/1-nord.png differ diff --git a/themes/nord/backgrounds/2-nord.png b/themes/nord/backgrounds/2-nord.png new file mode 100644 index 0000000..412eb52 Binary files /dev/null and b/themes/nord/backgrounds/2-nord.png differ diff --git a/themes/nord/chromium.theme b/themes/nord/chromium.theme new file mode 100644 index 0000000..33a45e4 --- /dev/null +++ b/themes/nord/chromium.theme @@ -0,0 +1 @@ +46,52,64 diff --git a/themes/nord/gtk.theme b/themes/nord/gtk.theme new file mode 100644 index 0000000..f5ac3db --- /dev/null +++ b/themes/nord/gtk.theme @@ -0,0 +1 @@ +blue \ No newline at end of file diff --git a/themes/nord/icons.theme b/themes/nord/icons.theme new file mode 100644 index 0000000..6ce2f14 --- /dev/null +++ b/themes/nord/icons.theme @@ -0,0 +1 @@ +Yaru-blue diff --git a/themes/nord/mako.ini b/themes/nord/mako.ini new file mode 100644 index 0000000..2976506 --- /dev/null +++ b/themes/nord/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#d8dee9 +border-color=#D8DEE9 +background-color=#2e3440 +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 \ No newline at end of file diff --git a/themes/nord/swayosd.css b/themes/nord/swayosd.css new file mode 100644 index 0000000..db1b40d --- /dev/null +++ b/themes/nord/swayosd.css @@ -0,0 +1,6 @@ +@define-color background-color #2E3440; +@define-color border-color #D8DEE9; +@define-color label #D8DEE9; +@define-color image #D8DEE9; +@define-color progress #D8DEE9; + diff --git a/themes/nord/vscode.theme b/themes/nord/vscode.theme new file mode 100644 index 0000000..0623191 --- /dev/null +++ b/themes/nord/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Nord" +vscode[extension]="arcticicestudio.nord-visual-studio-code" \ No newline at end of file diff --git a/themes/nord/waybar.css b/themes/nord/waybar.css index e826965..bc2a99d 100644 --- a/themes/nord/waybar.css +++ b/themes/nord/waybar.css @@ -1,5 +1,2 @@ - -* { - color: #d8dee9; - background-color: #2e3440; -} +@define-color foreground #d8dee9; +@define-color background #2e3440; diff --git a/themes/nord/wofi.css b/themes/nord/wofi.css index 17190dd..363c591 100644 --- a/themes/nord/wofi.css +++ b/themes/nord/wofi.css @@ -1,4 +1,5 @@ -@define-color selected-text #88C0D0; -@define-color text #D8DEE9; -@define-color base #2E3440; -@define-color border #D8DEE9; +@define-color selected-text #88C0D0; +@define-color text #D8DEE9; +@define-color base #2E3440; +@define-color base-rgba rgba(46, 52, 64, 0.95); +@define-color border #D8DEE9; diff --git a/themes/osaka-jade/alacritty.toml b/themes/osaka-jade/alacritty.toml new file mode 100644 index 0000000..6229daa --- /dev/null +++ b/themes/osaka-jade/alacritty.toml @@ -0,0 +1,28 @@ +[colors] +[colors.primary] +background = '#111c18' +foreground = '#C1C497' + +[colors.normal] +black = "#23372B" +red = "#FF5345" +green = "#549e6a" +yellow = "#459451" +blue = "#509475" +magenta = "#D2689C" +cyan = "#2DD5B7" +white = "#F6F5DD" + +[colors.bright] +black = "#53685B" +red = "#db9f9c" +green = "#143614" +yellow = "#E5C736" +blue = "#ACD4CF" +magenta = "#75bbb3" +cyan = "#8CD3CB" +white = "#9eebb3" + +[colors.cursor] +text = "#000000" +cursor = "#D7C995" diff --git a/themes/osaka-jade/backgrounds/1-osaka-jade-bg.jpg b/themes/osaka-jade/backgrounds/1-osaka-jade-bg.jpg new file mode 100644 index 0000000..be7d857 Binary files /dev/null and b/themes/osaka-jade/backgrounds/1-osaka-jade-bg.jpg differ diff --git a/themes/osaka-jade/backgrounds/2-osaka-jade-bg.jpg b/themes/osaka-jade/backgrounds/2-osaka-jade-bg.jpg new file mode 100644 index 0000000..9b97956 Binary files /dev/null and b/themes/osaka-jade/backgrounds/2-osaka-jade-bg.jpg differ diff --git a/themes/osaka-jade/backgrounds/3-osaka-jade-bg.jpg b/themes/osaka-jade/backgrounds/3-osaka-jade-bg.jpg new file mode 100644 index 0000000..729ccae Binary files /dev/null and b/themes/osaka-jade/backgrounds/3-osaka-jade-bg.jpg differ diff --git a/themes/osaka-jade/btop.theme b/themes/osaka-jade/btop.theme new file mode 100644 index 0000000..8e22ec9 --- /dev/null +++ b/themes/osaka-jade/btop.theme @@ -0,0 +1,87 @@ +# Main background +theme[main_bg]="#111c18" + +# Main text color +theme[main_fg]="#F7E8B2" + +# Title color for boxes +theme[title]="#D6D5BC" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#E67D64" + +# Background color of selected items +theme[selected_bg]="#364538" + +# Foreground color of selected items +theme[selected_fg]="#DEB266" + +# Color of inactive/disabled text +theme[inactive_fg]="#32473B" + +# Color of text appearing on top of graphs +theme[graph_text]="#E6D8BA" + +# Misc colors for processes box +theme[proc_misc]="#E6D8BA" + +# Cpu box outline color +theme[cpu_box]="#81B8A8" + +# Memory/disks box outline color +theme[mem_box]="#81B8A8" + +# Net up/down box outline color +theme[net_box]="#81B8A8" + +# Processes box outline color +theme[proc_box]="#81B8A8" + +# Box divider line and small boxes line color +theme[div_line]="#81B8A8" + +# Temperature graph colors +theme[temp_start]="#BFD99A" +theme[temp_mid]="#E1B55E" +theme[temp_end]="#DBB05C" + +# CPU graph colors +theme[cpu_start]="#5F8C86" +theme[cpu_mid]="#629C89" +theme[cpu_end]="#76AD98" + +# Mem/Disk free meter +theme[free_start]="#5F8C86" +theme[free_mid]="#629C89" +theme[free_end]="#76AD98" + +# Mem/Disk cached meter +theme[cached_start]="#5F8C86" +theme[cached_mid]="#629C89" +theme[cached_end]="#76AD98" + +# Mem/Disk available meter +theme[available_start]="#5F8C86" +theme[available_mid]="#629C89" +theme[available_end]="#76AD98" + +# Mem/Disk used meter +theme[used_start]="#5F8C86" +theme[used_mid]="#629C89" +theme[used_end]="#76AD98" + +# Download graph colors +theme[download_start]="#75BBB3" +theme[download_mid]="#61949A" +theme[download_end]="#215866" + +# Upload graph colors +theme[upload_start]="#215866" +theme[upload_mid]="#91C080" +theme[upload_end]="#549E6A" + +# Process box color gradient for threads, mem and cpu usage +theme[process_start]="#72CFA3" +theme[process_mid]="#D0D494" +theme[process_end]="#DB9F9C" + diff --git a/themes/osaka-jade/chromium.theme b/themes/osaka-jade/chromium.theme new file mode 100644 index 0000000..6524c76 --- /dev/null +++ b/themes/osaka-jade/chromium.theme @@ -0,0 +1 @@ +17,34,28 diff --git a/themes/osaka-jade/gtk.theme b/themes/osaka-jade/gtk.theme new file mode 100644 index 0000000..2004c03 --- /dev/null +++ b/themes/osaka-jade/gtk.theme @@ -0,0 +1 @@ +sage \ No newline at end of file diff --git a/themes/osaka-jade/icons.theme b/themes/osaka-jade/icons.theme new file mode 100644 index 0000000..140e422 --- /dev/null +++ b/themes/osaka-jade/icons.theme @@ -0,0 +1 @@ +Yaru-sage diff --git a/themes/osaka-jade/mako.ini b/themes/osaka-jade/mako.ini new file mode 100644 index 0000000..4489799 --- /dev/null +++ b/themes/osaka-jade/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#C1C497 +border-color=#214237 +background-color=#11221C +padding=10 +border-size=2 +font=Liberation Sans 12 +max-icon-size=32 +outer-margin=5 \ No newline at end of file diff --git a/themes/osaka-jade/neovim.lua b/themes/osaka-jade/neovim.lua new file mode 100644 index 0000000..3b25e9e --- /dev/null +++ b/themes/osaka-jade/neovim.lua @@ -0,0 +1,9 @@ +return { + "ribru17/bamboo.nvim", + lazy = false, + priority = 1000, + config = function() + require("bamboo").setup({}) + require("bamboo").load() + end, +} \ No newline at end of file diff --git a/themes/osaka-jade/swayosd.css b/themes/osaka-jade/swayosd.css new file mode 100644 index 0000000..1558ad4 --- /dev/null +++ b/themes/osaka-jade/swayosd.css @@ -0,0 +1,5 @@ +@define-color background-color #11221C; +@define-color border-color #589A5F; +@define-color label #C0C396; +@define-color image #C0C396; +@define-color progress #C0C396; diff --git a/themes/osaka-jade/waybar.css b/themes/osaka-jade/waybar.css new file mode 100644 index 0000000..7cfd537 --- /dev/null +++ b/themes/osaka-jade/waybar.css @@ -0,0 +1,2 @@ +@define-color foreground #e6d8ba; +@define-color background #11221C; diff --git a/themes/osaka-jade/wofi.css b/themes/osaka-jade/wofi.css new file mode 100644 index 0000000..30eac8e --- /dev/null +++ b/themes/osaka-jade/wofi.css @@ -0,0 +1,5 @@ +@define-color selected-text #e1b55e; +@define-color text #ebfff2; +@define-color base #11221C; +@define-color base-rgba rgba(17, 34, 28, 0.95); +@define-color border #214237; diff --git a/themes/ristretto/alacritty.toml b/themes/ristretto/alacritty.toml new file mode 100644 index 0000000..af24993 --- /dev/null +++ b/themes/ristretto/alacritty.toml @@ -0,0 +1,33 @@ +[colors] + +[colors.normal] +black = "#2c2525" +red = "#fd6883" +green = "#adda78" +yellow = "#f9cc6c" +blue = "#f38d70" +magenta = "#a8a9eb" +cyan = "#85dacc" +white = "#e6d9db" + +[colors.bright] +black = "#463a3a" +red = "#ff8297" +green = "#c8e292" +yellow = "#fcd675" +blue = "#f8a788" +magenta = "#bebffd" +cyan = "#9bf1e1" +white = "#f1e5e7" + +[colors.cursor] +cursor = '#c3b7b8' +text = '#2c252 + +[colors.primary] +background = '#2c2525' +foreground = '#e6d9db' + +[colors.selection] +background = '#403e41' +text = '#e6d9db' diff --git a/themes/ristretto/backgrounds/1-ristretto.jpg b/themes/ristretto/backgrounds/1-ristretto.jpg new file mode 100644 index 0000000..7618e1b Binary files /dev/null and b/themes/ristretto/backgrounds/1-ristretto.jpg differ diff --git a/themes/ristretto/backgrounds/2-ristretto.jpg b/themes/ristretto/backgrounds/2-ristretto.jpg new file mode 100644 index 0000000..faf63ea Binary files /dev/null and b/themes/ristretto/backgrounds/2-ristretto.jpg differ diff --git a/themes/ristretto/backgrounds/3-ristretto.jpg b/themes/ristretto/backgrounds/3-ristretto.jpg new file mode 100644 index 0000000..385b01d Binary files /dev/null and b/themes/ristretto/backgrounds/3-ristretto.jpg differ diff --git a/themes/ristretto/btop.theme b/themes/ristretto/btop.theme new file mode 100644 index 0000000..c241495 --- /dev/null +++ b/themes/ristretto/btop.theme @@ -0,0 +1,82 @@ +#Btop monokai pro ristretto theme +#Reconfigured from monokai theme + +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="#2c2421" + +# Main text color +theme[main_fg]="#e6d9db" + +# Title color for boxes +theme[title]="#e6d9db" + +# Higlight color for keyboard shortcuts +theme[hi_fg]="#fd6883" + +# Background color of selected item in processes box +theme[selected_bg]="#3d2f2a" + +# Foreground color of selected item in processes box +theme[selected_fg]="#e6d9db" + +# Color of inactive/disabled text +theme[inactive_fg]="#72696a" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#adda78" + +# Cpu box outline color +theme[cpu_box]="#5b4a45" + +# Memory/disks box outline color +theme[mem_box]="#5b4a45" + +# Net up/down box outline color +theme[net_box]="#5b4a45" + +# Processes box outline color +theme[proc_box]="#5b4a45" + +# Box divider line and small boxes line color +theme[div_line]="#72696a" + +# Temperature graph colors +theme[temp_start]="#a8a9eb" +theme[temp_mid]="#f38d70" +theme[temp_end]="#fd6a85" + +# CPU graph colors +theme[cpu_start]="#adda78" +theme[cpu_mid]="#f9cc6c" +theme[cpu_end]="#fd6883" + +# Mem/Disk free meter +theme[free_start]="#5b4a45" +theme[free_mid]="#adda78" +theme[free_end]="#c5e2a3" + +# Mem/Disk cached meter +theme[cached_start]="#5b4a45" +theme[cached_mid]="#85dacc" +theme[cached_end]="#b3e8dd" + +# Mem/Disk available meter +theme[available_start]="#5b4a45" +theme[available_mid]="#f9cc6c" +theme[available_end]="#fce2a3" + +# Mem/Disk used meter +theme[used_start]="#5b4a45" +theme[used_mid]="#fd6a85" +theme[used_end]="#feb5c7" + +# Download graph colors +theme[download_start]="#3d2f2a" +theme[download_mid]="#a8a9eb" +theme[download_end]="#c5c6f0" + +# Upload graph colors +theme[upload_start]="#3d2f2a" +theme[upload_mid]="#fd6a85" +theme[upload_end]="#feb5c7" + diff --git a/themes/ristretto/chromium.theme b/themes/ristretto/chromium.theme new file mode 100644 index 0000000..4b5c8eb --- /dev/null +++ b/themes/ristretto/chromium.theme @@ -0,0 +1 @@ +37,33,30 diff --git a/themes/ristretto/gtk.theme b/themes/ristretto/gtk.theme new file mode 100644 index 0000000..2ae6969 --- /dev/null +++ b/themes/ristretto/gtk.theme @@ -0,0 +1 @@ +yellow \ No newline at end of file diff --git a/themes/ristretto/icons.theme b/themes/ristretto/icons.theme new file mode 100644 index 0000000..e38b9ce --- /dev/null +++ b/themes/ristretto/icons.theme @@ -0,0 +1 @@ +Yaru-yellow diff --git a/themes/ristretto/mako.ini b/themes/ristretto/mako.ini new file mode 100644 index 0000000..a88e281 --- /dev/null +++ b/themes/ristretto/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#e6d9db +border-color=#e6d9db +background-color=#2c2525 +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 \ No newline at end of file diff --git a/themes/ristretto/neovim.lua b/themes/ristretto/neovim.lua new file mode 100644 index 0000000..8fae3b8 --- /dev/null +++ b/themes/ristretto/neovim.lua @@ -0,0 +1,22 @@ +return { + { + "gthelding/monokai-pro.nvim", + config = function() + require("monokai-pro").setup({ + filter = "ristretto", + override = function() + return { + NonText = { fg = "#948a8b" }, + } + end, + }) + vim.cmd([[colorscheme monokai-pro]]) + end, + }, + { + "LazyVim/LazyVim", + opts = { + colorscheme = "monokai-pro", + }, + }, +} diff --git a/themes/ristretto/swayosd.css b/themes/ristretto/swayosd.css new file mode 100644 index 0000000..cd9c576 --- /dev/null +++ b/themes/ristretto/swayosd.css @@ -0,0 +1,5 @@ +@define-color background-color #2c2525; +@define-color border-color #c3b7b8; +@define-color label #c3b7b8; +@define-color image #c3b7b8; +@define-color progress #c3b7b8; diff --git a/themes/ristretto/vscode.theme b/themes/ristretto/vscode.theme new file mode 100644 index 0000000..a996319 --- /dev/null +++ b/themes/ristretto/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Monokai Pro (Filter Ristretto)" +vscode[extension]="monokai.theme-monokai-pro-vscode" \ No newline at end of file diff --git a/themes/ristretto/waybar.css b/themes/ristretto/waybar.css new file mode 100644 index 0000000..a6be70a --- /dev/null +++ b/themes/ristretto/waybar.css @@ -0,0 +1,2 @@ +@define-color foreground #e6d9db; +@define-color background #2c2525; diff --git a/themes/ristretto/wofi.css b/themes/ristretto/wofi.css new file mode 100644 index 0000000..532383e --- /dev/null +++ b/themes/ristretto/wofi.css @@ -0,0 +1,5 @@ +@define-color selected-text #fabd2f; +@define-color text #e6d9db; +@define-color base #2c2525; +@define-color base-rgba rgba(44, 37, 37, 0.95); +@define-color border #e6d9db88; diff --git a/themes/rose-pine/alacritty.toml b/themes/rose-pine/alacritty.toml new file mode 100644 index 0000000..947e42d --- /dev/null +++ b/themes/rose-pine/alacritty.toml @@ -0,0 +1,72 @@ +[colors.primary] +foreground = "#575279" +background = "#faf4ed" +dim_foreground = "#797593" +bright_foreground = "#575279" + +[colors.cursor] +text = "#575279" +cursor = "#cecacd" + +[colors.vi_mode_cursor] +text = "#575279" +cursor = "#cecacd" + +[colors.search.matches] +foreground = "#797593" +background = "#f2e9e1" + +[colors.search.focused_match] +foreground = "#faf4ed" +background = "#d7827e" + +[colors.hints.start] +foreground = "#797593" +background = "#fffaf3" + +[colors.hints.end] +foreground = "#9893a5" +background = "#fffaf3" + +[colors.line_indicator] +foreground = "None" +background = "None" + +[colors.footer_bar] +foreground = "#575279" +background = "#fffaf3" + +[colors.selection] +text = "#575279" +background = "#dfdad9" + +[colors.normal] +black = "#f2e9e1" +red = "#b4637a" +green = "#286983" +yellow = "#ea9d34" +blue = "#56949f" +magenta = "#907aa9" +cyan = "#d7827e" +white = "#575279" + +[colors.bright] +black = "#9893a5" +red = "#b4637a" +green = "#286983" +yellow = "#ea9d34" +blue = "#56949f" +magenta = "#907aa9" +cyan = "#d7827e" +white = "#575279" + +[colors.dim] +black = "#9893a5" +red = "#b4637a" +green = "#286983" +yellow = "#ea9d34" +blue = "#56949f" +magenta = "#907aa9" +cyan = "#d7827e" +white = "#575279" + diff --git a/themes/rose-pine/backgrounds/1-rose-pine.jpg b/themes/rose-pine/backgrounds/1-rose-pine.jpg new file mode 100644 index 0000000..adfe242 Binary files /dev/null and b/themes/rose-pine/backgrounds/1-rose-pine.jpg differ diff --git a/themes/rose-pine/backgrounds/2-wave-light.png b/themes/rose-pine/backgrounds/2-wave-light.png new file mode 100644 index 0000000..53e136c Binary files /dev/null and b/themes/rose-pine/backgrounds/2-wave-light.png differ diff --git a/themes/rose-pine/btop.theme b/themes/rose-pine/btop.theme new file mode 100644 index 0000000..a992faa --- /dev/null +++ b/themes/rose-pine/btop.theme @@ -0,0 +1,119 @@ +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="#faf4ed" +# Base + +# Main text color +theme[main_fg]="#575279" +# Text + +# Title color for boxes +theme[title]="#908caa" +# Subtle + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#e0def4" +# Text + +# Background color of selected item in processes box +theme[selected_bg]="#524f67" +# HL High + +# Foreground color of selected item in processes box +theme[selected_fg]="#f6c177" +# Gold + +# Color of inactive/disabled text +theme[inactive_fg]="#403d52" +# HL Med + +# Color of text appearing on top of graphs, i.e uptime and current network graph scaling +theme[graph_text]="#9ccfd8" +# Foam + +# Background color of the percentage meters +theme[meter_bg]="#9ccfd8" +# Foam + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#c4a7e7" +# Iris + +# Cpu box outline color +theme[cpu_box]="#ebbcba" +# Rose + +# Memory/disks box outline color +theme[mem_box]="#31748f" +# Pine + +# Net up/down box outline color +theme[net_box]="#c4a7e7" +# Iris + +# Processes box outline color +theme[proc_box]="#eb6f92" +# Love + +# Box divider line and small boxes line color +theme[div_line]="#6e6a86" +# Muted + +# Temperature graph colors +theme[temp_start]="#ebbcba" +# Rose +theme[temp_mid]="#f6c177" +# Gold +theme[temp_end]="#eb6f92" +# Love + +# CPU graph colors +theme[cpu_start]="#f6c177" +# Gold +theme[cpu_mid]="#ebbcba" +# Rose +theme[cpu_end]="#eb6f92" +# Love + +# Mem/Disk free meter +# all love +theme[free_start]="#eb6f92" +theme[free_mid]="#eb6f92" +theme[free_end]="#eb6f92" + +# Mem/Disk cached meter +# all iris +theme[cached_start]="#c4a7e7" +theme[cached_mid]="#c4a7e7" +theme[cached_end]="#c4a7e7" + +# Mem/Disk available meter +# all pine +theme[available_start]="#31748f" +theme[available_mid]="#31748f" +theme[available_end]="#31748f" + +# Mem/Disk used meter +# all rose +theme[used_start]="#ebbcba" +theme[used_mid]="#ebbcba" +theme[used_end]="#ebbcba" + +# Download graph colors +# Pine for start, foam for the rest +theme[download_start]="#31748f" +theme[download_mid]="#9ccfd8" +theme[download_end]="#9ccfd8" + +# Upload graph colors +theme[upload_start]="#ebbcba" +# Rose for start +theme[upload_mid]="#eb6f92" +# Love for mid and end +theme[upload_end]="#eb6f92" + +# Process box color gradient for threads, mem and cpu usage +theme[process_start]="#31748f" +# Pine +theme[process_mid]="#9ccfd8" +# Foam for mid and end +theme[process_end]="#9ccfd8" diff --git a/themes/rose-pine/chromium.theme b/themes/rose-pine/chromium.theme new file mode 100644 index 0000000..072dd44 --- /dev/null +++ b/themes/rose-pine/chromium.theme @@ -0,0 +1 @@ +210,196,219 diff --git a/themes/rose-pine/gtk.theme b/themes/rose-pine/gtk.theme new file mode 100644 index 0000000..f5ac3db --- /dev/null +++ b/themes/rose-pine/gtk.theme @@ -0,0 +1 @@ +blue \ No newline at end of file diff --git a/themes/rose-pine/icons.theme b/themes/rose-pine/icons.theme new file mode 100644 index 0000000..6ce2f14 --- /dev/null +++ b/themes/rose-pine/icons.theme @@ -0,0 +1 @@ +Yaru-blue diff --git a/themes/rose-pine/light.mode b/themes/rose-pine/light.mode new file mode 100644 index 0000000..66bb2d0 --- /dev/null +++ b/themes/rose-pine/light.mode @@ -0,0 +1 @@ +# This will set "prefer-light" and use "Adwaita" as the theme diff --git a/themes/rose-pine/mako.ini b/themes/rose-pine/mako.ini new file mode 100644 index 0000000..10f76e5 --- /dev/null +++ b/themes/rose-pine/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#575279 +border-color=#575279 +background-color=#faf4ed +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 \ No newline at end of file diff --git a/themes/rose-pine/neovim.lua b/themes/rose-pine/neovim.lua new file mode 100644 index 0000000..591e8c7 --- /dev/null +++ b/themes/rose-pine/neovim.lua @@ -0,0 +1,9 @@ +return { + { "rose-pine/neovim", name = "rose-pine" }, + { + "LazyVim/LazyVim", + opts = { + colorscheme = "rose-pine-dawn", + }, + }, +} diff --git a/themes/rose-pine/swayosd.css b/themes/rose-pine/swayosd.css new file mode 100644 index 0000000..e58cc08 --- /dev/null +++ b/themes/rose-pine/swayosd.css @@ -0,0 +1,6 @@ +@define-color background-color #faf4ed; +@define-color border-color #575279; +@define-color label #575279; +@define-color image #575279; +@define-color progress #575279; + diff --git a/themes/rose-pine/vscode.theme b/themes/rose-pine/vscode.theme new file mode 100644 index 0000000..dc098e8 --- /dev/null +++ b/themes/rose-pine/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Rosé Pine Dawn" +vscode[extension]="mvllow.rose-pine" \ No newline at end of file diff --git a/themes/rose-pine/waybar.css b/themes/rose-pine/waybar.css new file mode 100644 index 0000000..d2e5942 --- /dev/null +++ b/themes/rose-pine/waybar.css @@ -0,0 +1,2 @@ +@define-color foreground #575279; +@define-color background #faf4ed; diff --git a/themes/rose-pine/wofi.css b/themes/rose-pine/wofi.css new file mode 100644 index 0000000..6502493 --- /dev/null +++ b/themes/rose-pine/wofi.css @@ -0,0 +1,5 @@ +@define-color selected-text #88C0D0; +@define-color text #575279; +@define-color base #faf4ed; +@define-color base-rgba rgba(250, 244, 237, 0.95); +@define-color border #575279; diff --git a/themes/tokyo-night/backgrounds.sh b/themes/tokyo-night/backgrounds.sh deleted file mode 100644 index e074832..0000000 --- a/themes/tokyo-night/backgrounds.sh +++ /dev/null @@ -1,2 +0,0 @@ -mkdir -p "$BACKGROUNDS_DIR/tokyo-night" -download_background_image "https://omakasui.lucapattocchio.dev/themes/tokyo-night/background.jpg" "tokyo-night/1-tokyo-night.jpg" diff --git a/themes/tokyo-night/backgrounds/1-tokyo-night.png b/themes/tokyo-night/backgrounds/1-tokyo-night.png new file mode 100644 index 0000000..d806728 Binary files /dev/null and b/themes/tokyo-night/backgrounds/1-tokyo-night.png differ diff --git a/themes/tokyo-night/backgrounds/2-tokyo-night.jpg b/themes/tokyo-night/backgrounds/2-tokyo-night.jpg new file mode 100644 index 0000000..825bb4b Binary files /dev/null and b/themes/tokyo-night/backgrounds/2-tokyo-night.jpg differ diff --git a/themes/tokyo-night/chromium.theme b/themes/tokyo-night/chromium.theme new file mode 100644 index 0000000..bf2774d --- /dev/null +++ b/themes/tokyo-night/chromium.theme @@ -0,0 +1 @@ +26,27,38 diff --git a/themes/tokyo-night/gtk.theme b/themes/tokyo-night/gtk.theme new file mode 100644 index 0000000..f5ac3db --- /dev/null +++ b/themes/tokyo-night/gtk.theme @@ -0,0 +1 @@ +blue \ No newline at end of file diff --git a/themes/tokyo-night/icons.theme b/themes/tokyo-night/icons.theme new file mode 100644 index 0000000..5d00638 --- /dev/null +++ b/themes/tokyo-night/icons.theme @@ -0,0 +1 @@ +Yaru-magenta diff --git a/themes/tokyo-night/mako.ini b/themes/tokyo-night/mako.ini new file mode 100644 index 0000000..c0fae2e --- /dev/null +++ b/themes/tokyo-night/mako.ini @@ -0,0 +1,10 @@ +include=~/.local/share/omarchy/default/mako/core.ini + +text-color=#a9b1d6 +border-color=#33ccff +background-color=#1a1b26 +padding=10 +border-size=2 +font=Liberation Sans 11 +max-icon-size=32 +outer-margin=20 \ No newline at end of file diff --git a/themes/tokyo-night/swayosd.css b/themes/tokyo-night/swayosd.css new file mode 100644 index 0000000..1300b6a --- /dev/null +++ b/themes/tokyo-night/swayosd.css @@ -0,0 +1,6 @@ +@define-color background-color #1a1b26; +@define-color border-color #33ccff; +@define-color label #a9b1d6; +@define-color image #a9b1d6; +@define-color progress #a9b1d6; + diff --git a/themes/tokyo-night/vscode.theme b/themes/tokyo-night/vscode.theme new file mode 100644 index 0000000..eac952b --- /dev/null +++ b/themes/tokyo-night/vscode.theme @@ -0,0 +1,2 @@ +vscode[theme]="Tokyo Night" +vscode[extension]="enkia.tokyo-night" \ No newline at end of file diff --git a/themes/tokyo-night/waybar.css b/themes/tokyo-night/waybar.css index 96aa9a4..ecd3da0 100644 --- a/themes/tokyo-night/waybar.css +++ b/themes/tokyo-night/waybar.css @@ -1,5 +1,2 @@ - -* { - color: #cdd6f4; - background-color: #1a1b26; -} +@define-color foreground #cdd6f4; +@define-color background #1a1b26; diff --git a/themes/tokyo-night/wofi.css b/themes/tokyo-night/wofi.css index 0c21483..873e56a 100644 --- a/themes/tokyo-night/wofi.css +++ b/themes/tokyo-night/wofi.css @@ -1,4 +1,5 @@ -@define-color selected-text #7dcfff; -@define-color text #cfc9c2; -@define-color base #1a1b26; -@define-color border #33ccff; +@define-color selected-text #7dcfff; +@define-color text #cfc9c2; +@define-color base #1a1b26; +@define-color base-rgba rgba(26, 27, 38, 0.95); +@define-color border #33ccff; diff --git a/uninstall/app-firefox.sh b/uninstall/app-firefox.sh deleted file mode 100644 index 6578d07..0000000 --- a/uninstall/app-firefox.sh +++ /dev/null @@ -1 +0,0 @@ -gum confirm "Delete it?! Are you a professional or not?!" && sudo apt remove -y firefox || echo "That's better!" diff --git a/uninstall/app-flameshot.sh b/uninstall/app-flameshot.sh deleted file mode 100644 index 47db99c..0000000 --- a/uninstall/app-flameshot.sh +++ /dev/null @@ -1 +0,0 @@ -sudo apt remove -y flameshot diff --git a/uninstall/app-github-cli.sh b/uninstall/app-github-cli.sh deleted file mode 100644 index 18ee29a..0000000 --- a/uninstall/app-github-cli.sh +++ /dev/null @@ -1 +0,0 @@ -sudo apt remove -y gh diff --git a/uninstall/app-google-chrome.sh b/uninstall/app-google-chrome.sh deleted file mode 100644 index a76d8ea..0000000 --- a/uninstall/app-google-chrome.sh +++ /dev/null @@ -1 +0,0 @@ -sudo apt remove -y google-chrome-stable \ No newline at end of file diff --git a/uninstall/app-libreoffice.sh b/uninstall/app-libreoffice.sh deleted file mode 100644 index 91b5ae5..0000000 --- a/uninstall/app-libreoffice.sh +++ /dev/null @@ -1,14 +0,0 @@ -sudo apt-get remove --purge -y "libreoffice*" -sudo apt-get -y clean -sudo apt-get -y autoremove - -# Remove LibreOffice folder from app-grid -if gsettings get org.gnome.desktop.app-folders folder-children | grep -q "LibreOffice"; then - # Get current folders list - current_folders=$(gsettings get org.gnome.desktop.app-folders folder-children) - - # Remove LibreOffice from the list - updated_folders=$(echo "$current_folders" | sed "s/'LibreOffice', //g" | sed "s/, 'LibreOffice'//g" | sed "s/'LibreOffice'//g") - gsettings set org.gnome.desktop.app-folders folder-children "$updated_folders" - gsettings reset-recursively org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/LibreOffice/ -fi diff --git a/uninstall/app-localsend.sh b/uninstall/app-localsend.sh deleted file mode 100644 index 4a5f3ca..0000000 --- a/uninstall/app-localsend.sh +++ /dev/null @@ -1 +0,0 @@ -sudo apt remove -y localsend diff --git a/uninstall/app-mainline-kernels.sh b/uninstall/app-mainline-kernels.sh deleted file mode 100644 index c76210a..0000000 --- a/uninstall/app-mainline-kernels.sh +++ /dev/null @@ -1 +0,0 @@ -sudo apt remove -y mainline diff --git a/uninstall/app-spotify.sh b/uninstall/app-spotify.sh deleted file mode 100644 index 923340f..0000000 --- a/uninstall/app-spotify.sh +++ /dev/null @@ -1 +0,0 @@ -sudo apt remove -y spotify-client diff --git a/uninstall/app-visual-studio-code.sh b/uninstall/app-visual-studio-code.sh deleted file mode 100644 index 18ef89b..0000000 --- a/uninstall/app-visual-studio-code.sh +++ /dev/null @@ -1,2 +0,0 @@ -sudo apt purge -y remove code -rm -rf ~/.config/Code/User diff --git a/uninstall/app-vlc.sh b/uninstall/app-vlc.sh deleted file mode 100644 index 16c8b57..0000000 --- a/uninstall/app-vlc.sh +++ /dev/null @@ -1 +0,0 @@ -sudo apt remove -y vlc diff --git a/uninstall/app-xournalpp.sh b/uninstall/app-xournalpp.sh deleted file mode 100644 index aee4fdf..0000000 --- a/uninstall/app-xournalpp.sh +++ /dev/null @@ -1 +0,0 @@ -sudo apt remove -y xournalpp diff --git a/version b/version deleted file mode 100644 index 8acdd82..0000000 --- a/version +++ /dev/null @@ -1 +0,0 @@ -0.0.1