Configurações, aliases e prompts centralizados para todos os seus ambientes de sistema, mantendo a experiência consistente seja no Desktop, Servidor, Contêiner ou WSL.
flowchart LR
subgraph OS ["🖥️ Plataformas"]
LNX["🐧 Linux"]
BSD["😈 FreeBSD"]
WIN["🪟 Windows"]
MAC["🍎 MacOS (Futuro)"]
end
subgraph CTX ["🎯 Contextos"]
DSK["💻 Desktop"]
SRV["🌐 Server"]
CNT["📦 Container"]
WSL["🧩 WSL"]
end
LNX --> DSK
LNX --> SRV
LNX --> CNT
LNX --> WSL
BSD --> DSK
BSD --> SRV
BSD --> CNT
WIN --> DSK
MAC -.->|futuro| DSK
Você pode escolher o contexto do ambiente passando o parâmetro --context (opções: desktop, server, container, wsl).
Por padrão, se não for informado, o script assumirá o contexto desktop.
1. Clone o repositório:
sudo git clone "https://github.com/GabrielFrigo4/Shell" "/usr/local/share/shell"2. Execute a instalação: Escolha o contexto desejado abaixo e copie o comando do seu shell de preferência:
💻 Desktop (Padrão)
bash "/usr/local/share/shell/install.sh" --context desktop
# ou
zsh "/usr/local/share/shell/install.sh" --context desktop
# ou
sh "/usr/local/share/shell/install.sh" --context desktop🌐 Server
bash "/usr/local/share/shell/install.sh" --context server
# ou
zsh "/usr/local/share/shell/install.sh" --context server
# ou
sh "/usr/local/share/shell/install.sh" --context server📦 Container
bash "/usr/local/share/shell/install.sh" --context container
# ou
zsh "/usr/local/share/shell/install.sh" --context container
# ou
sh "/usr/local/share/shell/install.sh" --context container🧩 WSL
bash "/usr/local/share/shell/install.sh" --context wsl
# ou
zsh "/usr/local/share/shell/install.sh" --context wsl
# ou
sh "/usr/local/share/shell/install.sh" --context wsl💡 Ambiente: No Windows, o projeto funciona utilizando o terminal do MSYS2.
1. Clone o repositório:
git clone "https://github.com/GabrielFrigo4/Shell" "${HOME}/.shell"2. Execute a instalação:
bash "${HOME}/.shell/install.sh" --context desktop
# ou
zsh "${HOME}/.shell/install.sh" --context desktopReinicie o shell ou recarregue o arquivo RC manualmente:
. ~/.bashrc
# ou
. ~/.zshrc
# ou
. ~/.shrc💡 Nota Importante: O script detecta automaticamente o seu OS, distribuição 🐧
Linuxe qual 🐚Shellestá rodando, e injeta as linhas desourceno arquivo RC correto de forma inteligente — tanto para o seu usuário atual como para oroot.
O projeto inclui aliases e funções inteligentes integrados para que você possa manter seu ambiente atualizado, gerenciado e controlado sem esforço, diretamente do terminal:
- 🔄
upsh(Update Shell): Sincroniza o seu repositório local (git pull) e recarrega as configurações atuais sem precisar fechar o terminal. - ♻️
resh(Reinstall Shell): Vai além da atualização. Ele baixa as novidades e reexecuta o scriptinstall.shpreservando o seu contexto atual (ex:desktopouserver). Ideal para quando há mudanças estruturais profundas no repositório. - 📡
upwf(Update Wi-Fi): Sincroniza automaticamente as credenciais de Wi-Fi definidas no ambiente (WIFI_SSID_*eWIFI_PASS_*) com o gerenciador nativo do sistema (nmclino Linux,wpa_supplicant/wifiboxno FreeBSD, ounetshno Windows). - 🌐
upnet(Update Network): Orquestra a inicialização e sincronização completa da rede chamando oupwf. - 📦
upsys(Update System): Atualiza os pacotes e repositórios nativos do sistema operacional chamando dinamicamente o gerenciador nativo da distribuição (upapt,upman,updnf,uppkg,upzyp,upxbpsouupapk). - 🚀
upall(Update All): Orquestrador universal de atualização completa. Executa oupsyse integra de forma encadeada todos os gerenciadores extras presentes no sistema (upyay,upflat,upsnap). - ⚡
poweroff&reboot: Atalhos multiplataforma inteligentes que adaptam o comando de desligamento e reinicialização para o sistema correto:- 🐧 Linux:
sudo shutdown -h now/sudo shutdown -r now - 😈 FreeBSD:
sudo shutdown -p now/sudo shutdown -r now(utiliza-ppara desligar a fonte de alimentação) - 🪟 Windows (MSYS2):
shutdown.exe /s /t 0/shutdown.exe /r /t 0
- 🐧 Linux:
flowchart TD
UPALL["🚀 upall<br/><i>(Orquestrador Global)</i>"]
UPSYS["📦 upsys<br/><i>(Sistema Base)</i>"]
UPALL --> UPSYS
UPALL -.->|se instalado| YAY["📦 upyay<br/><i>(Arch AUR)</i>"]
UPALL -.->|se instalado| FLAT["📦 upflat<br/><i>(Flatpak)</i>"]
UPALL -.->|se instalado| SNAP["📦 upsnap<br/><i>(Snap)</i>"]
UPSYS --> DNF["updnf<br/><i>(Fedora / RHEL)</i>"]
UPSYS --> APT["upapt<br/><i>(Debian / Ubuntu)</i>"]
UPSYS --> MAN["upman<br/><i>(Arch / MSYS2)</i>"]
UPSYS --> PKG["uppkg<br/><i>(FreeBSD)</i>"]
UPSYS --> ZYP["upzyp<br/><i>(OpenSUSE)</i>"]
UPSYS --> XBPS["upxbps<br/><i>(Void)</i>"]
UPSYS --> APK["upapk<br/><i>(Alpine)</i>"]
Para manter este repositório 100% público e seguro, o sistema possui uma integração nativa com um repositório de cofre privado (Vault).
Se o diretório ~/.vault for detectado, o shell carregará automaticamente:
- 🔑 Variáveis e Configurações: Credenciais, tokens, chaves de API, endereços de servidores e atalhos de conexão privados (
vault.sh). - 🛡️ Chaves SSH: O alias
vault-keysdetecta o seussh-agentrodando e adiciona automaticamente todas as suas chaves privadas contidas na pasta do cofre de forma segura e silenciosa. - 🔄
upvt(Update Vault): Sincroniza o repositório do seu cofre (git pullem~/.vault) e recarrega o terminal com as novas variáveis e chaves atualizadas.
O projeto conta com módulos avançados de reconhecimento em library/detect.sh que mapeiam perfeitamente o seu ecossistema:
- OS e Shell: Reconhece se você está no 🐧
Linux, 😈FreeBSD, 🍎MacOSou 🪟Windows(via MSYS2), e identifica o 🐚Shellrodando (📜bash, ⚡zsh, ⚙️sh). - Distribuição Linux e Família: Ao rodar no 🐧
Linuxou no 🧩WSL2, o módulo descobre a distribuição exata (detect_distro) e a agrupa pela família do gerenciador de pacotes base (detect_distro_family— ex:debian,arch,fedora,suse,void,alpine). Isso permite queupsyseupallchamem os comandos corretos (upapt,upman,updnf,uppkg, etc.) automaticamente sob os panos, sem conflitos. Gerenciadores isolados comoflatpak,snapeyay(AUR) ganham comandos modulares dedicados (upflat,upsnap,upyay) que são orquestrados dinamicamente peloupall. - Desktop Environment & Dark Mode (GTK, Qt, Electron, Java): Identifica o ambiente gráfico (
detect_desktop_environment— ex:kde,gnome,xfce,sway,hyprland), a preferência de esquema de cores do sistema (detect_color_scheme—darkoulightvia XDG Portal / D-Bus / GSettings / KDE Globals) e mapeia as variáveis de integração para todos os principais ecossistemas:- GTK: Mapeia
GTK_THEMEinteligentemente viadetect_gtk_theme(Breeze-Darkno KDE para alinhar ferramentas GTK à paleta do Plasma, integração nativa via GSettings no GNOME sem forçar overrides que degradem o Libadwaita GTK4, eadw-gtk3-dark/Adwaita:darkem WMs). - Qt: Mapeia
QT_QPA_PLATFORMTHEMEdinamicamente (xdgdesktopportalno GNOME/KDE/Sway/Hyprland,gtk3em XFCE/MATE/Cinnamon ouqt6ct/qt5ctviadetect_qt_platform_theme) e gerenciaQT_STYLE_OVERRIDE(Breeze-Dark/Breezeno KDE viadetect_qt_theme). Em desktops baseados em GTK, a presença do motor de estilo Plasma Breeze (Qt6) e do gerenciadorqt6ct(Qt6 Configuration Tool) garante paletas escuras perfeitas, fontes e ícones coerentes para ferramentas Qt puras (Wireshark, VLC, OBS) e do KDE (Kate, Krita). - Electron (Wayland): Define
ELECTRON_OZONE_PLATFORM_HINT="auto"para que apps como VSCode, Discord, Obsidian e Spotify rodem com renderização nítida nativa no Wayland. - Java / Swing: Exporta
_JAVA_AWT_WM_NONREPARENTING=1para garantir renderização perfeita de IDEs JetBrains, DBeaver e Ghidra sem telas cinzas.
- GTK: Mapeia
- Terminal TrueColor (24-bit RGB): Exporta globalmente
COLORTERM="truecolor"eMICRO_TRUECOLOR=1, garantindo renderização de 16 milhões de cores em utilitários CLI (micro,bat,eza,fzf,neovim).
flowchart TD
RC["🐚 Arquivo RC (~/.bashrc / ~/.zshrc / ~/.shrc)"] --> LIB["📚 1. library/*.sh"]
LIB --> CORE["⚙️ 2. core/*.sh"]
CORE --> TGT["🎨 3. target/{OS}/{SHELL}/prompt.sh"]
subgraph PROMPT_FLOW ["⚡ Orquestração por Sessão"]
TGT --> THM["🖌️ theme/{SHELL}.sh"]
TGT --> ENV["⚙️ target/{OS}/environment.sh"]
TGT --> CTX_COM["🧩 context/{CONTEXT}/common.sh"]
TGT --> CTX_OS["🎯 context/{CONTEXT}/{OS}.sh"]
end
- 🎨
target/: Configurações divididas por Sistema Operacional (🐧Linux, 😈FreeBSD, 🍎MacOS, 🪟Windows). Mantém a experiência visual e comportamental exata 1:1, gerenciando caminhos, variáveis e comandos do SO (comoincusno Linux eclearno FreeBSD). - 📚
library/: A biblioteca padrão do projeto. Fornece utilitários de sistema e módulos de inteligência (detect.shefunctions.sh), garantindo detecção precisa de SO, shell, distribuição, ambiente gráfico e esquemas de cores. - ⚙️
core/: O núcleo do projeto. Responsável por inicializar as fundações do ambiente, variáveis essenciais e a integração automática com o Universal Vault Environment (vault.sh). - 🎯
context/: O orquestrador de ambientes. Adapta dinamicamente as ferramentas com base no seu escopo atual através de uma camada comum (common.sh) e uma camada de SO ({OS}.sh):- 💻
desktop/: Ambiente de produtividade gráfica com editores de código (nvim,vim,kate,vscode), atalhos de janelas/sessões e integração comGTK_THEME. - 🌐
server/: Perfil extremamente enxuto, ágil e focado em estabilidade para servidores remotos e produção. - 📦
container/: Perfil rigorosamente otimizado para microambientes (LXC/Incusno Linux ouJails/Bastilleno FreeBSD). - 🧩
wsl/: Ambiente híbrido que integra o Linux do WSL2 diretamente com as ferramentas nativas do Windows (explorer.exe,powershell.exe,cmd.exe,win32yank.exe).
- 💻
- 🖌️
theme/: A camada de identidade visual. Unifica o prompt, paleta de cores ANSI/Zstyle, ícones Nerd Fonts e branch Git em todos os terminais.