mirror of
https://github.com/ChrisTitusTech/linutil.git
synced 2024-11-23 13:45:19 +00:00
Compare commits
1 Commits
7c751141a9
...
b64d8a464a
Author | SHA1 | Date | |
---|---|---|---|
|
b64d8a464a |
|
@ -1,3 +1,2 @@
|
|||
external-sources=true
|
||||
source=core/tabs/common-script.sh
|
||||
source=core/tabs/common-service-script.sh
|
5
Cargo.lock
generated
5
Cargo.lock
generated
|
@ -198,9 +198,9 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
|
|||
|
||||
[[package]]
|
||||
name = "ego-tree"
|
||||
version = "0.9.0"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c6ba7d4eec39eaa9ab24d44a0e73a7949a1095a8b3f3abb11eddf27dbb56a53"
|
||||
checksum = "12a0bb14ac04a9fcf170d0bbbef949b44cc492f4452bd20c095636956f653642"
|
||||
|
||||
[[package]]
|
||||
name = "either"
|
||||
|
@ -383,6 +383,7 @@ dependencies = [
|
|||
"ansi-to-tui",
|
||||
"anstyle",
|
||||
"clap",
|
||||
"ego-tree",
|
||||
"linutil_core",
|
||||
"oneshot",
|
||||
"portable-pty",
|
||||
|
|
|
@ -3,6 +3,9 @@ license = "MIT"
|
|||
version = "24.9.28"
|
||||
edition = "2021"
|
||||
|
||||
[workspace.dependencies]
|
||||
ego-tree = "0.6.2"
|
||||
|
||||
[workspace]
|
||||
members = ["tui", "core", "xtask"]
|
||||
default-members = ["tui", "core"]
|
||||
|
|
50
README.md
50
README.md
|
@ -24,26 +24,6 @@ curl -fsSL https://christitus.com/linux | sh
|
|||
```bash
|
||||
curl -fsSL https://christitus.com/linuxdev | sh
|
||||
```
|
||||
<details>
|
||||
<summary>CLI arguments</summary>
|
||||
|
||||
Linutil supports various command-line arguments to customize its behavior. Here are some common arguments you can use:
|
||||
|
||||
- `-t, --theme <THEME>` : Set the theme to use in the application [default: default] [possible values: default, compatible].
|
||||
- `--override-validation` : Show all available options, disregarding compatibility checks (UNSAFE).
|
||||
- `-h, --help` : Print help.
|
||||
|
||||
For more detailed usage, run:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://christitus.com/linux | sh -s -- --help
|
||||
```
|
||||
|
||||
```bash
|
||||
linutil --help
|
||||
```
|
||||
</details>
|
||||
|
||||
## ⬇️ Installation
|
||||
|
||||
Linutil is also available as a package in various repositories:
|
||||
|
@ -78,15 +58,7 @@ paru -S linutil
|
|||
Replace `paru` with your preferred helper and `linutil` with your preferred package.
|
||||
|
||||
</details>
|
||||
<details>
|
||||
<summary>OpenSUSE</summary>
|
||||
|
||||
Linutil can be installed on OpenSUSE with:
|
||||
```bash
|
||||
sudo zypper install linutil
|
||||
```
|
||||
|
||||
</details>
|
||||
<details>
|
||||
<summary>Cargo</summary>
|
||||
|
||||
|
@ -100,28 +72,6 @@ Note that crates installed using `cargo install` require manual updating with `c
|
|||
|
||||
</details>
|
||||
|
||||
## Configuration
|
||||
|
||||
Linutil supports configuration through a TOML config file. Path to the file can be specified with `--config` (or `-c`).
|
||||
|
||||
Available options:
|
||||
- `auto_execute` - a list of commands to execute automatically (can be combined with `--skip-confirmation`)
|
||||
|
||||
Example config:
|
||||
```toml
|
||||
# example_config.toml
|
||||
|
||||
auto_execute = [
|
||||
"Fastfetch",
|
||||
"Alacritty",
|
||||
"Kitty"
|
||||
]
|
||||
```
|
||||
|
||||
```bash
|
||||
linutil --config /path/to/example_config.toml
|
||||
```
|
||||
|
||||
## 💖 Support
|
||||
|
||||
If you find Linutil helpful, please consider giving it a ⭐️ to show your support!
|
||||
|
|
|
@ -5,7 +5,11 @@ repository = "https://github.com/ChrisTitusTech/linutil/tree/main/core"
|
|||
edition = "2021"
|
||||
version.workspace = true
|
||||
license.workspace = true
|
||||
include = ["src/*.rs", "Cargo.toml", "tabs/**"]
|
||||
include = [
|
||||
"src/*.rs",
|
||||
"Cargo.toml",
|
||||
"tabs/**",
|
||||
]
|
||||
|
||||
[dependencies]
|
||||
include_dir = "0.7.4"
|
||||
|
@ -13,4 +17,4 @@ temp-dir = "0.1.14"
|
|||
serde = { version = "1.0.205", features = ["derive"], default-features = false }
|
||||
toml = { version = "0.8.19", features = ["parse"], default-features = false }
|
||||
which = "6.0.3"
|
||||
ego-tree = "0.9.0"
|
||||
ego-tree = { workspace = true }
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
use serde::Deserialize;
|
||||
use std::path::Path;
|
||||
use std::process;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct Config {
|
||||
pub auto_execute: Vec<String>,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
pub fn from_file(path: &Path) -> Self {
|
||||
let content = match std::fs::read_to_string(path) {
|
||||
Ok(content) => content,
|
||||
Err(e) => {
|
||||
eprintln!("Failed to read config file {}: {}", path.display(), e);
|
||||
process::exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
match toml::from_str(&content) {
|
||||
Ok(config) => config,
|
||||
Err(e) => {
|
||||
eprintln!("Failed to parse config file: {}", e);
|
||||
process::exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,13 +1,10 @@
|
|||
mod config;
|
||||
mod inner;
|
||||
|
||||
use std::rc::Rc;
|
||||
|
||||
pub use ego_tree;
|
||||
use ego_tree::Tree;
|
||||
use std::path::PathBuf;
|
||||
|
||||
pub use config::Config;
|
||||
pub use inner::{get_tabs, TabList};
|
||||
|
||||
#[derive(Clone, Hash, Eq, PartialEq)]
|
||||
|
@ -36,16 +33,3 @@ pub struct ListNode {
|
|||
pub task_list: String,
|
||||
pub multi_select: bool,
|
||||
}
|
||||
|
||||
impl Tab {
|
||||
pub fn find_command(&self, name: &str) -> Option<Rc<ListNode>> {
|
||||
self.tree.root().descendants().find_map(|node| {
|
||||
let value = node.value();
|
||||
if value.name == name && !node.has_children() {
|
||||
Some(value.clone())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,9 +12,6 @@ installMeld() {
|
|||
apt-get|nala)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -y install meld
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add meld
|
||||
;;
|
||||
*)
|
||||
checkFlatpak
|
||||
flatpak install -y flathub org.gnome.meld
|
||||
|
|
|
@ -29,9 +29,6 @@ installNeovim() {
|
|||
dnf|zypper)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y neovim ripgrep fzf python3-virtualenv luarocks golang ShellCheck git
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add neovim ripgrep fzf py3-virtualenv luarocks go shellcheck git
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
. ../../common-script.sh
|
||||
|
||||
installVsCode() {
|
||||
if ! command_exists com.visualstudio.code && ! command_exists code; then
|
||||
if ! command_exists code; then
|
||||
printf "%b\n" "${YELLOW}Installing VS Code..${RC}."
|
||||
case "$PACKAGER" in
|
||||
apt-get|nala)
|
||||
|
@ -28,10 +28,6 @@ installVsCode() {
|
|||
printf "%b\n" '[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc' | "$ESCALATION_TOOL" tee /etc/yum.repos.d/vscode.repo > /dev/null
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y code
|
||||
;;
|
||||
apk)
|
||||
checkFlatpak
|
||||
flatpak install -y flathub com.visualstudio.code
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
. ../../common-script.sh
|
||||
|
||||
installVsCodium() {
|
||||
if ! command_exists com.vscodium.codium && ! command_exists codium; then
|
||||
if ! command_exists codium; then
|
||||
printf "%b\n" "${YELLOW}Installing VS Codium...${RC}"
|
||||
case "$PACKAGER" in
|
||||
apt-get|nala)
|
||||
|
@ -26,10 +26,6 @@ installVsCodium() {
|
|||
printf "%b\n" "[gitlab.com_paulcarroty_vscodium_repo]\nname=download.vscodium.com\nbaseurl=https://download.vscodium.com/rpms/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/-/raw/master/pub.gpg\nmetadata_expire=1h" | "$ESCALATION_TOOL" tee -a /etc/yum.repos.d/vscodium.repo
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y codium
|
||||
;;
|
||||
apk)
|
||||
checkFlatpak
|
||||
flatpak install -y flathub com.vscodium.codium
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -9,9 +9,6 @@ installAlacritty() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm alacritty
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add alacritty
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y alacritty
|
||||
;;
|
||||
|
|
|
@ -15,9 +15,6 @@ install_adb() {
|
|||
dnf|zypper)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y android-tools
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add android-tools
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
. ../../common-script.sh
|
||||
|
||||
installBrave() {
|
||||
if ! command_exists com.brave.Browser && ! command_exists brave; then
|
||||
if ! command_exists brave; then
|
||||
printf "%b\n" "${YELLOW}Installing Brave...${RC}"
|
||||
case "$PACKAGER" in
|
||||
apt-get|nala)
|
||||
|
@ -29,10 +29,6 @@ installBrave() {
|
|||
"$ESCALATION_TOOL" rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y brave-browser
|
||||
;;
|
||||
apk)
|
||||
checkFlatpak
|
||||
flatpak install -y flathub com.brave.Browser
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -9,9 +9,6 @@ if ! command_exists chromium; then
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm chromium
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add chromium
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y chromium
|
||||
;;
|
||||
|
|
|
@ -18,9 +18,6 @@ installFirefox() {
|
|||
dnf)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y firefox
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add firefox
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
. ../../common-script.sh
|
||||
|
||||
installLibreWolf() {
|
||||
if ! command_exists io.gitlab.librewolf-community && ! command_exists librewolf; then
|
||||
if ! command_exists librewolf; then
|
||||
printf "%b\n" "${YELLOW}Installing Librewolf...${RC}"
|
||||
case "$PACKAGER" in
|
||||
apt-get|nala)
|
||||
|
@ -32,10 +32,6 @@ Signed-By: /usr/share/keyrings/librewolf.gpg" | "$ESCALATION_TOOL" tee /etc/apt/
|
|||
pacman)
|
||||
"$AUR_HELPER" -S --needed --noconfirm librewolf-bin
|
||||
;;
|
||||
apk)
|
||||
checkFlatpak
|
||||
flatpak install flathub io.gitlab.librewolf-community
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -9,9 +9,6 @@ installLynx() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm lynx
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add lynx
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y lynx
|
||||
;;
|
||||
|
|
|
@ -22,7 +22,6 @@ installThrorium() {
|
|||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../../common-script.sh
|
||||
|
||||
installTorBrowser() {
|
||||
if ! command_exists torbrowser-launcher; then
|
||||
printf "%b\n" "${YELLOW}Installing Tor Browser...${RC}"
|
||||
case "$PACKAGER" in
|
||||
apt-get|nala)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y torbrowser-launcher
|
||||
;;
|
||||
zypper)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive install torbrowser-launcher
|
||||
;;
|
||||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm torbrowser-launcher
|
||||
;;
|
||||
dnf)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y torbrowser-launcher
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ${PACKAGER}${RC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
printf "%b\n" "${GREEN}Tor Browser is already installed.${RC}"
|
||||
fi
|
||||
}
|
||||
|
||||
checkEnv
|
||||
checkEscalationTool
|
||||
installTorBrowser
|
||||
|
|
@ -3,14 +3,14 @@
|
|||
. ../../common-script.sh
|
||||
|
||||
installWaterfox() {
|
||||
if ! command_exists net.waterfox.waterfox && ! command_exists waterfox; then
|
||||
if ! command_exists waterfox; then
|
||||
printf "%b\n" "${YELLOW}Installing waterfox...${RC}"
|
||||
case "$PACKAGER" in
|
||||
pacman)
|
||||
"$AUR_HELPER" -S --needed --noconfirm waterfox-bin
|
||||
"$AUR_HELPER" -S --needed --noconfirm waterfox-bin
|
||||
;;
|
||||
*)
|
||||
checkFlatpak
|
||||
. ../setup-flatpak.sh
|
||||
flatpak install -y flathub net.waterfox.waterfox
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
. ../../common-script.sh
|
||||
|
||||
installDiscord() {
|
||||
if ! command_exists com.discordapp.Discord && ! command_exists discord; then
|
||||
if ! command_exists discord; then
|
||||
printf "%b\n" "${YELLOW}Installing Discord...${RC}"
|
||||
case "$PACKAGER" in
|
||||
apt-get|nala)
|
||||
|
@ -20,10 +20,6 @@ installDiscord() {
|
|||
"$ESCALATION_TOOL" "$PACKAGER" install -y https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y discord
|
||||
;;
|
||||
apk)
|
||||
checkFlatpak
|
||||
flatpak install -y flathub com.discordapp.Discord
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
. ../../common-script.sh
|
||||
|
||||
installJitsi() {
|
||||
if ! command_exists org.jitsi.jitsi-meet && ! command_exists jitsi-meet; then
|
||||
if ! command_exists jitsi-meet; then
|
||||
printf "%b\n" "${YELLOW}Installing Jitsi meet...${RC}"
|
||||
case "$PACKAGER" in
|
||||
apt-get|nala)
|
||||
|
@ -21,10 +21,6 @@ installJitsi() {
|
|||
dnf)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y jitsi-meet
|
||||
;;
|
||||
apk)
|
||||
checkFlatpak
|
||||
flatpak install flathub org.jitsi.jitsi-meet
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -23,10 +23,6 @@ installSignal() {
|
|||
checkFlatpak
|
||||
flatpak install -y flathub org.signal.Signal
|
||||
;;
|
||||
apk)
|
||||
checkFlatpak
|
||||
flatpak install -y flathub org.signal.Signal
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -9,9 +9,6 @@ installTelegram() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm telegram-desktop
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add telegram-desktop
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y telegram-desktop
|
||||
;;
|
||||
|
|
|
@ -9,9 +9,6 @@ installThunderBird() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm thunderbird
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add thunderbird
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y thunderbird
|
||||
;;
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../../common-script.sh
|
||||
|
||||
installZapZap() {
|
||||
if ! command_exists com.rtosta.zapzap && ! command_exists zapzap; then
|
||||
printf "%b\n" "${YELLOW}Installing Zap-Zap...${RC}"
|
||||
case "$PACKAGER" in
|
||||
pacman)
|
||||
"$AUR_HELPER" -S --needed --noconfirm zapzap
|
||||
;;
|
||||
*)
|
||||
checkFlatpak
|
||||
flatpak install flathub com.rtosta.zapzap
|
||||
;;
|
||||
esac
|
||||
else
|
||||
printf "%b\n" "${GREEN}Zap-Zap is already installed.${RC}"
|
||||
fi
|
||||
}
|
||||
|
||||
checkEnv
|
||||
installZapZap
|
|
@ -1,10 +1,10 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../common-script.sh
|
||||
. ../common-service-script.sh
|
||||
|
||||
# Function to prompt the user for installation choice
|
||||
choose_installation() {
|
||||
clear
|
||||
printf "%b\n" "${YELLOW}Choose what to install:${RC}"
|
||||
printf "%b\n" "1. ${YELLOW}Docker${RC}"
|
||||
printf "%b\n" "2. ${YELLOW}Docker Compose${RC}"
|
||||
|
@ -34,20 +34,19 @@ install_docker() {
|
|||
;;
|
||||
zypper)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive install docker
|
||||
"$ESCALATION_TOOL" systemctl enable docker
|
||||
"$ESCALATION_TOOL" systemctl start docker
|
||||
;;
|
||||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm docker
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add docker
|
||||
"$ESCALATION_TOOL" systemctl enable docker
|
||||
"$ESCALATION_TOOL" systemctl start docker
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
startAndEnableService docker
|
||||
}
|
||||
|
||||
install_docker_compose() {
|
||||
|
@ -67,9 +66,6 @@ install_docker_compose() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm docker-compose
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add docker-cli-compose
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -6,7 +6,7 @@ setupDWM() {
|
|||
printf "%b\n" "${YELLOW}Installing DWM-Titus...${RC}"
|
||||
case "$PACKAGER" in # Install pre-Requisites
|
||||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm base-devel libx11 libxinerama libxft imlib2 libxcb git unzip flameshot lxappearance feh mate-polkit meson libev uthash libconfig
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm base-devel libx11 libxinerama libxft imlib2 libxcb git unzip flameshot lxappearance feh mate-polkit
|
||||
;;
|
||||
apt-get|nala)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y build-essential libx11-dev libxinerama-dev libxft-dev libimlib2-dev libx11-xcb-dev libfontconfig1 libx11-6 libxft2 libxinerama1 libxcb-res0-dev git unzip flameshot lxappearance feh mate-polkit
|
||||
|
|
|
@ -14,9 +14,6 @@ installFastfetch() {
|
|||
"$ESCALATION_TOOL" "$PACKAGER" install -y /tmp/fastfetch.deb
|
||||
rm /tmp/fastfetch.deb
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add fastfetch
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y fastfetch
|
||||
;;
|
||||
|
|
|
@ -9,9 +9,6 @@ installKitty() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm kitty
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add kitty
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y kitty
|
||||
;;
|
||||
|
|
|
@ -25,10 +25,6 @@ installLinutil() {
|
|||
esac
|
||||
printf "%b\n" "${GREEN}Installed successfully.${RC}"
|
||||
;;
|
||||
zypper)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install linutil -y
|
||||
printf "%b\n" "${GREEN}Installed successfully.${RC}"
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}There are no official packages for your distro.${RC}"
|
||||
printf "%b" "${YELLOW}Do you want to install the crates.io package? (y/N): ${RC}"
|
||||
|
@ -44,12 +40,10 @@ installLinutil() {
|
|||
dnf)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y curl rustup man-pages man-db man
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add build-base
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add rustup
|
||||
rustup-init
|
||||
# shellcheck disable=SC1091
|
||||
. "$HOME/.cargo/env"
|
||||
zypper)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -n curl gcc make
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
. $HOME/.cargo/env
|
||||
;;
|
||||
*)
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
|
|
|
@ -19,13 +19,6 @@ updateLinutil() {
|
|||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
. $HOME/.cargo/env
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add build-base
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add rustup
|
||||
rustup-init
|
||||
# shellcheck disable=SC1091
|
||||
. "$HOME/.cargo/env"
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y rustup
|
||||
;;
|
||||
|
|
|
@ -11,9 +11,6 @@ installDepend() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm bash bash-completion tar bat tree unzip fontconfig git
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add bash bash-completion tar bat tree unzip fontconfig git
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y bash bash-completion tar bat tree unzip fontconfig git
|
||||
;;
|
||||
|
@ -57,7 +54,7 @@ installStarshipAndFzf() {
|
|||
return
|
||||
fi
|
||||
|
||||
if ! curl -sSL https://starship.rs/install.sh | "$ESCALATION_TOOL" sh; then
|
||||
if ! curl -sSL https://starship.rs/install.sh | sh; then
|
||||
printf "%b\n" "${RED}Something went wrong during starship install!${RC}"
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -16,9 +16,6 @@ installLibreOffice() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm libreoffice-fresh
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add libreoffice
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -9,9 +9,6 @@ installEvince() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm evince
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add evince
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y evince
|
||||
;;
|
||||
|
|
|
@ -9,9 +9,6 @@ installOkular() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm okular
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add okular
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y okular
|
||||
;;
|
||||
|
|
|
@ -9,9 +9,6 @@ installRofi() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm rofi
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add rofi
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y rofi
|
||||
;;
|
||||
|
|
|
@ -84,17 +84,6 @@ description = "Sublime Text is a fast, lightweight, and customizable text editor
|
|||
script = "Developer-tools/sublime-setup.sh"
|
||||
task_list = "I"
|
||||
|
||||
[[data.entries]]
|
||||
name = "ZapZap"
|
||||
description = "ZapZap is an open source whatsapp desktop client for Linux users developed by rafatosta."
|
||||
script = "communication-apps/zapzap-setup.sh"
|
||||
task_list = "I"
|
||||
|
||||
[[data.entries]]
|
||||
name = "Zoom"
|
||||
description = "Zoom is a widely-used video conferencing platform that allows users to host virtual meetings, webinars, and online collaboration with features like screen sharing and recording."
|
||||
script = "communication-apps/zoom-setup.sh"
|
||||
|
||||
[[data.entries]]
|
||||
name = "VS Code"
|
||||
description = "Visual Studio Code (VS Code) is a lightweight, open-source code editor with built-in support for debugging, version control, and extensions for various programming languages and frameworks."
|
||||
|
@ -203,12 +192,6 @@ description = "Vivaldi is a freeware, cross-platform web browser developed by Vi
|
|||
script = "browsers/vivaldi.sh"
|
||||
task_list = "I"
|
||||
|
||||
[[data.entries]]
|
||||
name = "Tor Browser"
|
||||
description = "Tor Browser is a free and open-source firefox-based web browser designed for anonymity and censorship circumvention."
|
||||
script = "browsers/tor-browser.sh"
|
||||
task_list = "I"
|
||||
|
||||
[[data.entries]]
|
||||
name = "waterfox"
|
||||
description = "Waterfox is the privacy-focused web browser engineered to give you speed, control, and peace of mind on the internet."
|
||||
|
@ -296,7 +279,7 @@ task_list = "I"
|
|||
[[data.preconditions]]
|
||||
matches = false
|
||||
data = "command_exists"
|
||||
values = ["linutil"]
|
||||
values = [ "linutil" ]
|
||||
|
||||
[[data]]
|
||||
name = "Linutil Updater"
|
||||
|
@ -307,7 +290,7 @@ task_list = "I"
|
|||
[[data.preconditions]]
|
||||
matches = true
|
||||
data = "command_exists"
|
||||
values = ["linutil"]
|
||||
values = [ "linutil" ]
|
||||
|
||||
[[data]]
|
||||
name = "Rofi"
|
||||
|
@ -323,7 +306,7 @@ task_list = "I SS"
|
|||
[[data.preconditions]]
|
||||
matches = true
|
||||
data = { environment = "XDG_SESSION_TYPE" }
|
||||
values = ["wayland", "Wayland"]
|
||||
values = [ "wayland", "Wayland" ]
|
||||
|
||||
[[data]]
|
||||
name = "ZSH Prompt"
|
||||
|
|
|
@ -10,9 +10,6 @@ installZsh() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm zsh
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add zsh
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y zsh
|
||||
;;
|
||||
|
|
|
@ -123,12 +123,6 @@ checkPackageManager() {
|
|||
fi
|
||||
done
|
||||
|
||||
## Enable apk community packages
|
||||
if [ "$PACKAGER" = "apk" ] && grep -qE '^#.*community' /etc/apk/repositories; then
|
||||
"$ESCALATION_TOOL" sed -i '/community/s/^#//' /etc/apk/repositories
|
||||
"$ESCALATION_TOOL" "$PACKAGER" update
|
||||
fi
|
||||
|
||||
if [ -z "$PACKAGER" ]; then
|
||||
printf "%b\n" "${RED}Can't find a supported package manager${RC}"
|
||||
exit 1
|
||||
|
@ -175,7 +169,7 @@ checkEnv() {
|
|||
checkArch
|
||||
checkEscalationTool
|
||||
checkCommandRequirements "curl groups $ESCALATION_TOOL"
|
||||
checkPackageManager 'nala apt-get dnf pacman zypper apk'
|
||||
checkPackageManager 'nala apt-get dnf pacman zypper'
|
||||
checkCurrentDirectoryWritable
|
||||
checkSuperUser
|
||||
checkDistro
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
checkInitManager() {
|
||||
for manager in $1; do
|
||||
if command_exists "$manager"; then
|
||||
INIT_MANAGER="$manager"
|
||||
printf "%b\n" "${CYAN}Using ${manager} to interact with init system${RC}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$INIT_MANAGER" ]; then
|
||||
printf "%b\n" "${RED}Can't find a supported init system${RC}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
startService() {
|
||||
case "$INIT_MANAGER" in
|
||||
systemctl)
|
||||
"$ESCALATION_TOOL" "$INIT_MANAGER" start "$1"
|
||||
;;
|
||||
rc-service)
|
||||
"$ESCALATION_TOOL" "$INIT_MANAGER" "$1" start
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
stopService() {
|
||||
case "$INIT_MANAGER" in
|
||||
systemctl)
|
||||
"$ESCALATION_TOOL" "$INIT_MANAGER" stop "$1"
|
||||
;;
|
||||
rc-service)
|
||||
"$ESCALATION_TOOL" "$INIT_MANAGER" "$1" stop
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
enableService() {
|
||||
case "$INIT_MANAGER" in
|
||||
systemctl)
|
||||
"$ESCALATION_TOOL" "$INIT_MANAGER" enable "$1"
|
||||
;;
|
||||
rc-service)
|
||||
"$ESCALATION_TOOL" rc-update add "$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
disableService() {
|
||||
case "$INIT_MANAGER" in
|
||||
systemctl)
|
||||
"$ESCALATION_TOOL" "$INIT_MANAGER" disable "$1"
|
||||
;;
|
||||
rc-service)
|
||||
"$ESCALATION_TOOL" rc-update del "$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
startAndEnableService() {
|
||||
case "$INIT_MANAGER" in
|
||||
systemctl)
|
||||
"$ESCALATION_TOOL" "$INIT_MANAGER" enable --now "$1"
|
||||
;;
|
||||
rc-service)
|
||||
enableService "$1"
|
||||
startService "$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
isServiceActive() {
|
||||
case "$INIT_MANAGER" in
|
||||
systemctl)
|
||||
"$ESCALATION_TOOL" "$INIT_MANAGER" is-active --quiet "$1"
|
||||
;;
|
||||
rc-service)
|
||||
"$ESCALATION_TOOL" "$INIT_MANAGER" "$1" status --quiet
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
checkInitManager 'systemctl rc-service'
|
|
@ -9,9 +9,6 @@ installPkg() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm ufw
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add ufw
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y ufw
|
||||
;;
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../../common-script.sh
|
||||
|
||||
installQEMUDesktop() {
|
||||
if ! command_exists qemu-img; then
|
||||
printf "%b\n" "${YELLOW}Installing QEMU.${RC}"
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm qemu-desktop
|
||||
else
|
||||
printf "%b\n" "${GREEN}QEMU is already installed.${RC}"
|
||||
fi
|
||||
checkKVM
|
||||
}
|
||||
|
||||
installQEMUEmulators() {
|
||||
if ! "$PACKAGER" -Q | grep -q "qemu-emulators-full "; then
|
||||
printf "%b\n" "${YELLOW}Installing QEMU-Emulators.${RC}"
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm qemu-emulators-full swtpm
|
||||
else
|
||||
printf "%b\n" "${GREEN}QEMU-Emulators already installed.${RC}"
|
||||
fi
|
||||
}
|
||||
|
||||
installVirtManager() {
|
||||
if ! command_exists virt-manager; then
|
||||
printf "%b\n" "${YELLOW}Installing Virt-Manager.${RC}"
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm virt-manager
|
||||
else
|
||||
printf "%b\n" "${GREEN}Virt-Manager already installed.${RC}"
|
||||
fi
|
||||
}
|
||||
|
||||
checkKVM() {
|
||||
if [ ! -e "/dev/kvm" ]; then
|
||||
printf "%b\n" "${RED}KVM is not available. Make sure you have CPU virtualization support enabled in your BIOS/UEFI settings. Please refer https://wiki.archlinux.org/title/KVM for more information.${RC}"
|
||||
else
|
||||
"$ESCALATION_TOOL" usermod "$USER" -aG kvm
|
||||
fi
|
||||
}
|
||||
|
||||
setupLibvirt() {
|
||||
printf "%b\n" "${YELLOW}Configuring Libvirt.${RC}"
|
||||
if "$PACKAGER" -Q | grep -q "iptables "; then
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -Rdd --noconfirm iptables
|
||||
fi
|
||||
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm dnsmasq iptables-nft
|
||||
"$ESCALATION_TOOL" sed -i 's/^#\?firewall_backend\s*=\s*".*"/firewall_backend = "iptables"/' "/etc/libvirt/network.conf"
|
||||
|
||||
if systemctl is-active --quiet polkit; then
|
||||
"$ESCALATION_TOOL" sed -i 's/^#\?auth_unix_ro\s*=\s*".*"/auth_unix_ro = "polkit"/' "/etc/libvirt/libvirtd.conf"
|
||||
"$ESCALATION_TOOL" sed -i 's/^#\?auth_unix_rw\s*=\s*".*"/auth_unix_rw = "polkit"/' "/etc/libvirt/libvirtd.conf"
|
||||
fi
|
||||
|
||||
"$ESCALATION_TOOL" usermod "$USER" -aG libvirt
|
||||
|
||||
for value in libvirt libvirt_guest; do
|
||||
if ! grep -wq "$value" /etc/nsswitch.conf; then
|
||||
"$ESCALATION_TOOL" sed -i "/^hosts:/ s/$/ ${value}/" /etc/nsswitch.conf
|
||||
fi
|
||||
done
|
||||
|
||||
"$ESCALATION_TOOL" systemctl enable --now libvirtd.service
|
||||
"$ESCALATION_TOOL" virsh net-autostart default
|
||||
|
||||
checkKVM
|
||||
}
|
||||
|
||||
installLibvirt() {
|
||||
if ! command_exists libvirtd; then
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm libvirt dmidecode
|
||||
else
|
||||
printf "%b\n" "${GREEN}Libvirt is already installed.${RC}"
|
||||
fi
|
||||
setupLibvirt
|
||||
}
|
||||
|
||||
main() {
|
||||
printf "%b\n" "${YELLOW}Choose what to install:${RC}"
|
||||
printf "%b\n" "1. ${YELLOW}QEMU${RC}"
|
||||
printf "%b\n" "2. ${YELLOW}QEMU-Emulators ( Extended architectures )${RC}"
|
||||
printf "%b\n" "3. ${YELLOW}Libvirt${RC}"
|
||||
printf "%b\n" "4. ${YELLOW}Virtual-Manager${RC}"
|
||||
printf "%b\n" "5. ${YELLOW}All${RC}"
|
||||
printf "%b" "Enter your choice [1-5]: "
|
||||
read -r CHOICE
|
||||
case "$CHOICE" in
|
||||
1) installQEMUDesktop ;;
|
||||
2) installQEMUEmulators ;;
|
||||
3) installLibvirt ;;
|
||||
4) installVirtManager ;;
|
||||
5)
|
||||
installQEMUDesktop
|
||||
installQEMUEmulators
|
||||
installLibvirt
|
||||
installVirtManager
|
||||
;;
|
||||
*) printf "%b\n" "${RED}Invalid choice.${RC}" && exit 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
checkEnv
|
||||
checkEscalationTool
|
||||
main
|
|
@ -37,9 +37,6 @@ installDepend() {
|
|||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive install $DEPENDENCIES $COMPILEDEPS
|
||||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive install libgcc_s1-gcc7-32bit glibc-devel-32bit
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add build-base multitail tar tree trash-cli unzip cmake jq
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y $DEPENDENCIES
|
||||
;;
|
||||
|
|
|
@ -50,8 +50,7 @@ installDepend() {
|
|||
"$ESCALATION_TOOL" "$PACKAGER" -n install $DEPENDENCIES
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager ${PACKAGER}${RC}"
|
||||
exit 1
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y $DEPENDENCIES
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
@ -96,8 +95,6 @@ installAdditionalDepend() {
|
|||
"$ESCALATION_TOOL" "$PACKAGER" -n install $DISTRO_DEPS
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager ${PACKAGER}${RC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../common-script.sh
|
||||
. ../common-service-script.sh
|
||||
|
||||
cleanup_system() {
|
||||
printf "%b\n" "${YELLOW}Performing system cleanup...${RC}"
|
||||
|
@ -24,9 +23,6 @@ cleanup_system() {
|
|||
"$ESCALATION_TOOL" "$PACKAGER" -Sc --noconfirm
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -Rns $(pacman -Qtdq) --noconfirm > /dev/null 2>&1
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" cache clean
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ${PACKAGER}. Skipping.${RC}"
|
||||
;;
|
||||
|
@ -43,9 +39,7 @@ common_cleanup() {
|
|||
if [ -d /var/log ]; then
|
||||
"$ESCALATION_TOOL" find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
|
||||
fi
|
||||
if [ "$INIT_MANAGER" = "systemctl" ]; then
|
||||
"$ESCALATION_TOOL" journalctl --vacuum-time=3d
|
||||
fi
|
||||
"$ESCALATION_TOOL" journalctl --vacuum-time=3d
|
||||
}
|
||||
|
||||
clean_data() {
|
||||
|
|
|
@ -48,9 +48,6 @@ fastUpdate() {
|
|||
"$ESCALATION_TOOL" "$PACKAGER" ref
|
||||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive dup
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" update
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}"
|
||||
exit 1
|
||||
|
@ -77,9 +74,6 @@ updateSystem() {
|
|||
"$ESCALATION_TOOL" "$PACKAGER" ref
|
||||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive dup
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" upgrade
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -38,12 +38,6 @@ description = "Paru is your standard pacman wrapping AUR helper with lots of fea
|
|||
script = "arch/paru-setup.sh"
|
||||
task_list = "I"
|
||||
|
||||
[[data.entries]]
|
||||
name = "Virtualization"
|
||||
description = "QEMU, Libvirt, Virt-Manager installation and configuration."
|
||||
script = "arch/virtualization.sh"
|
||||
task_list = "FM I SS RP"
|
||||
|
||||
[[data.entries]]
|
||||
name = "Yay AUR Helper"
|
||||
description = "Yet Another Yogurt - An AUR Helper Written in Go. To know more about AUR helpers visit: https://wiki.archlinux.org/title/AUR_helpers"
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../common-script.sh
|
||||
. ../common-service-script.sh
|
||||
|
||||
# Function to check Bluez is installed
|
||||
setupBluetooth() {
|
||||
|
@ -11,9 +10,6 @@ setupBluetooth() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm bluez-utils
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add bluez
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y bluez
|
||||
;;
|
||||
|
@ -22,7 +18,15 @@ setupBluetooth() {
|
|||
printf "%b\n" "${GREEN}Bluez is already installed.${RC}"
|
||||
fi
|
||||
|
||||
startService bluetooth
|
||||
# Check if bluetooth service is running
|
||||
if ! systemctl is-active --quiet bluetooth; then
|
||||
printf "%b\n" "${YELLOW}Bluetooth service is not running. Starting it now...${RC}"
|
||||
"$ESCALATION_TOOL" systemctl start bluetooth
|
||||
|
||||
if systemctl is-active --quiet bluetooth; then
|
||||
printf "%b\n" "${GREEN}Bluetooth service started successfully.${RC}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to display the main menu
|
||||
|
|
|
@ -12,7 +12,6 @@ list_devices() {
|
|||
printf "\n"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
installDependencies() {
|
||||
DEPENDENCIES="xz gzip bzip2 jq"
|
||||
if ! command_exists ${DEPENDENCIES}; then
|
||||
|
@ -24,8 +23,6 @@ installDependencies() {
|
|||
"${ESCALATION_TOOL}" "${PACKAGER}" install -y ${DEPENDENCIES};;
|
||||
pacman)
|
||||
"${ESCALATION_TOOL}" "${PACKAGER}" -S --noconfirm --needed ${DEPENDENCIES};;
|
||||
apk)
|
||||
"${ESCALATION_TOOL}" "${PACKAGER}" add ${DEPENDENCIES};;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager.${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -19,9 +19,6 @@ if ! command_exists openssl; then
|
|||
zypper)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install openssl
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add openssl
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||
exit 1
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../common-script.sh
|
||||
. ../common-service-script.sh
|
||||
|
||||
create_file() {
|
||||
printf "%b\n" "Creating script..."
|
||||
"$ESCALATION_TOOL" tee "/usr/local/bin/numlock" >/dev/null <<'EOF'
|
||||
printf "%b\n" "Creating script..."
|
||||
"$ESCALATION_TOOL" tee "/usr/local/bin/numlock" >/dev/null <<'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
for tty in /dev/tty{1..6}
|
||||
|
@ -14,12 +13,12 @@ do
|
|||
done
|
||||
EOF
|
||||
|
||||
"$ESCALATION_TOOL" chmod +x /usr/local/bin/numlock
|
||||
"$ESCALATION_TOOL" chmod +x /usr/local/bin/numlock
|
||||
}
|
||||
|
||||
create_service() {
|
||||
printf "%b\n" "Creating service..."
|
||||
"$ESCALATION_TOOL" tee "/etc/systemd/system/numlock.service" >/dev/null <<'EOF'
|
||||
printf "%b\n" "Creating service..."
|
||||
"$ESCALATION_TOOL" tee "/etc/systemd/system/numlock.service" >/dev/null <<'EOF'
|
||||
[Unit]
|
||||
Description=numlock
|
||||
|
||||
|
@ -34,28 +33,23 @@ EOF
|
|||
}
|
||||
|
||||
numlockSetup() {
|
||||
if [ "$INIT_MANAGER" = "rc-service" ]; then
|
||||
printf "%b\n" "${RED}Unsupported init system.${RC}"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -f "/usr/local/bin/numlock" ]; then
|
||||
create_file
|
||||
fi
|
||||
|
||||
if [ ! -f "/usr/local/bin/numlock" ]; then
|
||||
create_file
|
||||
fi
|
||||
if [ ! -f "/etc/systemd/system/numlock.service" ]; then
|
||||
create_service
|
||||
fi
|
||||
|
||||
if [ ! -f "/etc/systemd/system/numlock.service" ]; then
|
||||
create_service
|
||||
fi
|
||||
|
||||
printf "%b" "Do you want to enable Numlock on boot? (y/N): "
|
||||
read -r confirm
|
||||
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||
enableService numlock
|
||||
printf "%b\n" "Numlock will be enabled on boot"
|
||||
else
|
||||
disableService numlock
|
||||
printf "%b\n" "Numlock will not be enabled on boot"
|
||||
fi
|
||||
printf "%b" "Do you want to enable Numlock on boot? (y/N): "
|
||||
read -r confirm
|
||||
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||
"$ESCALATION_TOOL" systemctl enable numlock.service --quiet
|
||||
printf "%b\n" "Numlock will be enabled on boot"
|
||||
else
|
||||
"$ESCALATION_TOOL" systemctl disable numlock.service --quiet
|
||||
printf "%b\n" "Numlock will not be enabled on boot"
|
||||
fi
|
||||
}
|
||||
|
||||
checkEnv
|
||||
|
|
|
@ -10,8 +10,8 @@ installollama() {
|
|||
printf "%b\n" "${GREEN}ollama is already installed.${RC}"
|
||||
else
|
||||
printf "%b\n" "${YELLOW}Installing ollama...${RC}"
|
||||
curl -fsSL https://ollama.com/install.sh | "$ESCALATION_TOOL" sh
|
||||
"$ESCALATION_TOOL" startService ollama
|
||||
curl -fsSL https://ollama.com/install.sh | sh
|
||||
"$ESCALATION_TOOL" systemctl start ollama
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -19,9 +19,6 @@ installAutoCpufreq() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm git
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add git
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y git
|
||||
;;
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../../common-script.sh
|
||||
|
||||
installCUPS() {
|
||||
clear
|
||||
|
||||
case "$PACKAGER" in
|
||||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm cups
|
||||
;;
|
||||
apt-get | nala)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y cups
|
||||
;;
|
||||
dnf)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y cups
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager ${PACKAGER}${RC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
checkEnv
|
||||
checkEscalationTool
|
||||
installCUPS
|
|
@ -1,30 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../../common-script.sh
|
||||
. ./install-cups.sh
|
||||
|
||||
installEpsonPrinterDriver() {
|
||||
clear
|
||||
|
||||
case "$PACKAGER" in
|
||||
pacman)
|
||||
"$AUR_HELPER" -S --noconfirm epson-inkjet-printer-escpr
|
||||
;;
|
||||
apt-get | nala)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y printer-driver-escpr
|
||||
;;
|
||||
dnf)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y epson-inkjet-printer-escpr
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager ${PACKAGER}${RC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
checkEnv
|
||||
checkEscalationTool
|
||||
checkAURHelper
|
||||
installCUPS
|
||||
installEpsonPrinterDriver
|
|
@ -11,9 +11,6 @@ install_package() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm "$PACKAGE"
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add "$PACKAGE"
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y "$PACKAGE"
|
||||
;;
|
||||
|
@ -37,23 +34,23 @@ setup_ssh() {
|
|||
install_package openssh
|
||||
SSH_SERVICE="sshd"
|
||||
;;
|
||||
apk)
|
||||
install_package openssh
|
||||
SSH_SERVICE="sshd"
|
||||
;;
|
||||
*)
|
||||
install_package openssh-server
|
||||
SSH_SERVICE="sshd"
|
||||
;;
|
||||
esac
|
||||
|
||||
startAndEnableService "$SSH_SERVICE"
|
||||
# Enable and start the appropriate SSH service
|
||||
"$ESCALATION_TOOL" systemctl enable "$SSH_SERVICE"
|
||||
"$ESCALATION_TOOL" systemctl start "$SSH_SERVICE"
|
||||
|
||||
# Get the local IP address
|
||||
LOCAL_IP=$(ip -4 addr show | awk '/inet / {print $2}' | tail -n 1)
|
||||
|
||||
printf "%b\n" "${GREEN}Your local IP address is: $LOCAL_IP${RC}"
|
||||
|
||||
if isServiceActive "$SSH_SERVICE"; then
|
||||
# Check if SSH is running
|
||||
if systemctl is-active --quiet "$SSH_SERVICE"; then
|
||||
printf "%b\n" "${GREEN}SSH is up and running.${RC}"
|
||||
else
|
||||
printf "%b\n" "${RED}Failed to start SSH.${RC}"
|
||||
|
@ -133,11 +130,12 @@ setup_samba() {
|
|||
EOL
|
||||
fi
|
||||
|
||||
for service in smb nmb; do
|
||||
startAndEnableService "$service"
|
||||
done
|
||||
# Enable and start Samba services
|
||||
"$ESCALATION_TOOL" systemctl enable smb nmb
|
||||
"$ESCALATION_TOOL" systemctl start smb nmb
|
||||
|
||||
if isServiceActive smb && isServiceActive nmb; then
|
||||
# Check if Samba is running
|
||||
if systemctl is-active --quiet smb && systemctl is-active --quiet nmb; then
|
||||
printf "%b\n" "${GREEN}Samba is up and running.${RC}"
|
||||
printf "%b\n" "${YELLOW}Samba share available at: $SHARED_DIR${RC}"
|
||||
else
|
||||
|
|
|
@ -76,21 +76,6 @@ name = "Set Resolution"
|
|||
description = "This script is designed to change the resolution of monitors connected to your system"
|
||||
script = "monitor-control/set_resolutions.sh"
|
||||
|
||||
[[data]]
|
||||
name = "Printers"
|
||||
|
||||
[[data.entries]]
|
||||
name = "CUPS"
|
||||
script = "printers/install-cups.sh"
|
||||
description = "This script will install the CUPS system, required for most printer drivers on Linux."
|
||||
task_list = "I"
|
||||
|
||||
[[data.entries]]
|
||||
name = "Epson printer drivers"
|
||||
script = "printers/install-epson-printer-drivers.sh"
|
||||
description = "This script will install the Epson printer drivers."
|
||||
task_list = "I"
|
||||
|
||||
[[data]]
|
||||
name = "User Account Manager"
|
||||
multi_select = false
|
||||
|
|
|
@ -12,11 +12,8 @@ install_timeshift() {
|
|||
pacman)
|
||||
"$ESCALATION_TOOL" "${PACKAGER}" -S --noconfirm timeshift
|
||||
;;
|
||||
dnf|zypper|apt-get|nala)
|
||||
"$ESCALATION_TOOL" "${PACKAGER}" install -y timeshift
|
||||
;;
|
||||
*)
|
||||
printf "%b\n" "${RED}Unsupported package manager.${RC}"
|
||||
"$ESCALATION_TOOL" "${PACKAGER}" install -y timeshift
|
||||
;;
|
||||
esac
|
||||
else
|
||||
|
|
|
@ -13,9 +13,6 @@ setup_xrandr() {
|
|||
apt-get|nala)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y x11-xserver-utils
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add xrandr
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y xorg-x11-server-utils
|
||||
;;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
. ../common-script.sh
|
||||
. ../common-service-script.sh
|
||||
|
||||
# Function to check if NetworkManager is installed
|
||||
setupNetworkManager() {
|
||||
|
@ -14,9 +13,6 @@ setupNetworkManager() {
|
|||
dnf)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y NetworkManager-1
|
||||
;;
|
||||
apk)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" add networkmanager-wifi iwd
|
||||
;;
|
||||
*)
|
||||
"$ESCALATION_TOOL" "$PACKAGER" install -y network-manager
|
||||
;;
|
||||
|
@ -26,11 +22,13 @@ setupNetworkManager() {
|
|||
fi
|
||||
|
||||
# Check if NetworkManager service is running
|
||||
if ! isServiceActive NetworkManager; then
|
||||
if ! systemctl is-active --quiet NetworkManager; then
|
||||
printf "%b\n" "${YELLOW}NetworkManager service is not running. Starting it now...${RC}"
|
||||
startService NetworkManager
|
||||
else
|
||||
printf "%b\n" "${GREEN}NetworkManager service started successfully.${RC}"
|
||||
"$ESCALATION_TOOL" systemctl start NetworkManager
|
||||
|
||||
if systemctl is-active --quiet NetworkManager; then
|
||||
printf "%b\n" "${GREEN}NetworkManager service started successfully.${RC}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
## Milestones
|
||||
### Q4 2024
|
||||
- [x] Finish the foundation of the project's CLI
|
||||
- [x] Implement CLI arguments and configuration support
|
||||
- [ ] Implement CLI arguments and configuration support
|
||||
- [ ] Add an option for logging script executions
|
||||
|
||||
### Q1 2025
|
||||
|
|
|
@ -44,7 +44,6 @@ https://github.com/ChrisTitusTech/neovim
|
|||
- **Mozilla Firefox**: Mozilla Firefox is a free and open-source web browser developed by the Mozilla Foundation.
|
||||
- **Thorium**: Thorium is a Chromium-based browser focused on privacy and performance.
|
||||
- **Vivaldi**: Vivaldi is a freeware, cross-platform web browser developed by Vivaldi Technologies.
|
||||
- **Tor Browser**: Tor Browser is a free and open-source firefox-based web browser designed for anonymity and censorship circumvention.
|
||||
- **waterfox**: Waterfox is the privacy-focused web browser engineered to give you speed, control, and peace of mind on the internet.
|
||||
- **Alacritty**: Alacritty is a modern terminal emulator that comes with sensible defaults, but allows for extensive configuration. By integrating with other applications, rather than reimplementing their functionality, it manages to provide a flexible set of features with high performance. The supported platforms currently consist of BSD, Linux, macOS and Windows. This command installs and configures alacritty terminal emulator.
|
||||
- **Android Debloater**: Universal Android Debloater (UAD) is a tool designed to help users remove bloatware and unnecessary pre-installed applications from Android devices, enhancing performance and user experience.
|
||||
|
@ -89,7 +88,6 @@ https://github.com/ChrisTitusTech/dwm-titus
|
|||
- **Linux Neptune for SteamDeck**: Valve's fork of Linux Kernel for the SteamDeck
|
||||
- **Nvidia Drivers && Hardware Acceleration**: This script installs and configures nvidia drivers with Hardware Acceleration.
|
||||
- **Paru AUR Helper**: Paru is your standard pacman wrapping AUR helper with lots of features and minimal interaction. To know more about AUR helpers visit: https://wiki.archlinux.org/title/AUR_helpers
|
||||
- **Virtualization**: QEMU, Libvirt, Virt-Manager installation and configuration.
|
||||
- **Yay AUR Helper**: Yet Another Yogurt - An AUR Helper Written in Go. To know more about AUR helpers visit: https://wiki.archlinux.org/title/AUR_helpers
|
||||
|
||||
### Fedora
|
||||
|
@ -127,11 +125,6 @@ https://github.com/ChrisTitusTech/dwm-titus
|
|||
- **Set Primary Monitor**: This script is designed to set a Primary monitor in your system
|
||||
- **Set Resolution**: This script is designed to change the resolution of monitors connected to your system
|
||||
|
||||
### Printers
|
||||
|
||||
- **CUPS**: This script will install the CUPS system, required for most printer drivers on Linux.
|
||||
- **Epson printer drivers**: This script will install the Epson printer drivers.
|
||||
|
||||
### User Account Manager
|
||||
|
||||
- **Auto Mount Drive**: This utility is designed to help with automating the process of mounting a drive on to your system.
|
||||
|
|
|
@ -22,10 +22,6 @@ curl -fsSL https://christitus.com/linux | sh
|
|||
curl -fsSL https://christitus.com/linuxdev | sh
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-c\fR, \fB\-\-config\fR \fI<path>\fR
|
||||
Path to the configuration file.
|
||||
|
||||
.TP
|
||||
\fB\-t\fR, \fB\-\-theme\fR \fI<theme>\fR
|
||||
Set the theme to use in the TUI.
|
||||
|
@ -36,10 +32,6 @@ Possible values:
|
|||
.br
|
||||
Defaults to \fIdefault\fR.
|
||||
|
||||
.TP
|
||||
\fB\-y\fR, \fB\-\-skip\-confirmation\fR
|
||||
Skip confirmation prompt before executing commands.
|
||||
|
||||
.TP
|
||||
\fB\-\-override\-validation\fR
|
||||
Show all available entries, disregarding compatibility checks. (\fBUNSAFE\fR)
|
||||
|
|
2
start.sh
2
start.sh
|
@ -43,7 +43,7 @@ check $? "Downloading linutil"
|
|||
chmod +x "$temp_file"
|
||||
check $? "Making linutil executable"
|
||||
|
||||
"$temp_file" "$@"
|
||||
"$temp_file"
|
||||
check $? "Executing linutil"
|
||||
|
||||
rm -f "$temp_file"
|
||||
|
|
|
@ -69,7 +69,7 @@ check $? "Downloading linutil"
|
|||
chmod +x "$TMPFILE"
|
||||
check $? "Making linutil executable"
|
||||
|
||||
"$TMPFILE" "$@"
|
||||
"$TMPFILE"
|
||||
check $? "Executing linutil"
|
||||
|
||||
rm -f "$TMPFILE"
|
||||
|
|
|
@ -15,6 +15,7 @@ tips = ["rand"]
|
|||
|
||||
[dependencies]
|
||||
clap = { version = "4.5.20", features = ["derive", "std"], default-features = false }
|
||||
ego-tree = { workspace = true }
|
||||
oneshot = { version = "0.1.8", features = ["std"], default-features = false }
|
||||
portable-pty = "0.8.1"
|
||||
ratatui = { version = "0.29.0", features = ["crossterm"], default-features = false }
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use crate::{state::ListEntry, theme::Theme};
|
||||
use linutil_core::{ego_tree::NodeId, Tab};
|
||||
use ego_tree::NodeId;
|
||||
use linutil_core::Tab;
|
||||
use ratatui::{
|
||||
crossterm::event::{KeyCode, KeyEvent, KeyModifiers},
|
||||
layout::{Position, Rect},
|
||||
|
|
|
@ -71,8 +71,8 @@ impl Shortcut {
|
|||
}
|
||||
|
||||
fn to_spans(&self) -> Vec<Span<'static>> {
|
||||
let description = Span::styled(self.desc, Style::default().italic());
|
||||
self.key_sequences
|
||||
let mut ret: Vec<_> = self
|
||||
.key_sequences
|
||||
.iter()
|
||||
.flat_map(|seq| {
|
||||
[
|
||||
|
@ -81,7 +81,8 @@ impl Shortcut {
|
|||
Span::default().content("] "),
|
||||
]
|
||||
})
|
||||
.chain(std::iter::once(description))
|
||||
.collect()
|
||||
.collect();
|
||||
ret.push(Span::styled(self.desc, Style::default().italic()));
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ mod theme;
|
|||
|
||||
use std::{
|
||||
io::{self, stdout},
|
||||
path::PathBuf,
|
||||
time::Duration,
|
||||
};
|
||||
|
||||
|
@ -31,18 +30,10 @@ use state::AppState;
|
|||
// Linux utility toolbox
|
||||
#[derive(Debug, Parser)]
|
||||
struct Args {
|
||||
#[arg(short, long, help = "Path to the configuration file")]
|
||||
config: Option<PathBuf>,
|
||||
#[arg(short, long, value_enum)]
|
||||
#[arg(default_value_t = Theme::Default)]
|
||||
#[arg(help = "Set the theme to use in the application")]
|
||||
theme: Theme,
|
||||
#[arg(
|
||||
short = 'y',
|
||||
long,
|
||||
help = "Skip confirmation prompt before executing commands"
|
||||
)]
|
||||
skip_confirmation: bool,
|
||||
#[arg(long, default_value_t = false)]
|
||||
#[clap(help = "Show all available options, disregarding compatibility checks (UNSAFE)")]
|
||||
override_validation: bool,
|
||||
|
@ -54,13 +45,7 @@ struct Args {
|
|||
fn main() -> io::Result<()> {
|
||||
let args = Args::parse();
|
||||
|
||||
let mut state = AppState::new(
|
||||
args.config,
|
||||
args.theme,
|
||||
args.override_validation,
|
||||
args.size_bypass,
|
||||
args.skip_confirmation,
|
||||
);
|
||||
let mut state = AppState::new(args.theme, args.override_validation, args.size_bypass);
|
||||
|
||||
stdout().execute(EnterAlternateScreen)?;
|
||||
enable_raw_mode()?;
|
||||
|
|
|
@ -255,7 +255,7 @@ impl RunningCommand {
|
|||
// Process the buffer with a parser with the current screen size
|
||||
// We don't actually need to create a new parser every time, but it is so much easier this
|
||||
// way, and doesn't cost that much
|
||||
let mut parser = vt100::Parser::new(size.height, size.width, 1000);
|
||||
let mut parser = vt100::Parser::new(size.height, size.width, 200);
|
||||
let mutex = self.buffer.lock();
|
||||
let buffer = mutex.as_ref().unwrap();
|
||||
parser.process(buffer);
|
||||
|
|
|
@ -7,8 +7,8 @@ use crate::{
|
|||
running_command::RunningCommand,
|
||||
theme::Theme,
|
||||
};
|
||||
|
||||
use linutil_core::{ego_tree::NodeId, Config, ListNode, TabList};
|
||||
use ego_tree::NodeId;
|
||||
use linutil_core::{ListNode, TabList};
|
||||
#[cfg(feature = "tips")]
|
||||
use rand::Rng;
|
||||
use ratatui::{
|
||||
|
@ -19,7 +19,6 @@ use ratatui::{
|
|||
widgets::{Block, Borders, List, ListState, Paragraph},
|
||||
Frame,
|
||||
};
|
||||
use std::path::PathBuf;
|
||||
use std::rc::Rc;
|
||||
|
||||
const MIN_WIDTH: u16 = 100;
|
||||
|
@ -62,7 +61,6 @@ pub struct AppState {
|
|||
#[cfg(feature = "tips")]
|
||||
tip: String,
|
||||
size_bypass: bool,
|
||||
skip_confirmation: bool,
|
||||
}
|
||||
|
||||
pub enum Focus {
|
||||
|
@ -87,18 +85,10 @@ enum SelectedItem {
|
|||
}
|
||||
|
||||
impl AppState {
|
||||
pub fn new(
|
||||
config_path: Option<PathBuf>,
|
||||
theme: Theme,
|
||||
override_validation: bool,
|
||||
size_bypass: bool,
|
||||
skip_confirmation: bool,
|
||||
) -> Self {
|
||||
pub fn new(theme: Theme, override_validation: bool, size_bypass: bool) -> Self {
|
||||
let tabs = linutil_core::get_tabs(!override_validation);
|
||||
let root_id = tabs[0].tree.root().id();
|
||||
|
||||
let auto_execute_commands = config_path.map(|path| Config::from_file(&path).auto_execute);
|
||||
|
||||
let mut state = Self {
|
||||
theme,
|
||||
focus: Focus::List,
|
||||
|
@ -113,35 +103,12 @@ impl AppState {
|
|||
#[cfg(feature = "tips")]
|
||||
tip: get_random_tip(),
|
||||
size_bypass,
|
||||
skip_confirmation,
|
||||
};
|
||||
|
||||
state.update_items();
|
||||
if let Some(auto_execute_commands) = auto_execute_commands {
|
||||
state.handle_initial_auto_execute(&auto_execute_commands);
|
||||
}
|
||||
|
||||
state
|
||||
}
|
||||
|
||||
fn handle_initial_auto_execute(&mut self, auto_execute_commands: &[String]) {
|
||||
self.selected_commands = auto_execute_commands
|
||||
.iter()
|
||||
.filter_map(|name| self.tabs.iter().find_map(|tab| tab.find_command(name)))
|
||||
.collect();
|
||||
|
||||
if !self.selected_commands.is_empty() {
|
||||
let cmd_names: Vec<_> = self
|
||||
.selected_commands
|
||||
.iter()
|
||||
.map(|node| node.name.as_str())
|
||||
.collect();
|
||||
|
||||
let prompt = ConfirmPrompt::new(&cmd_names);
|
||||
self.focus = Focus::ConfirmationPrompt(Float::new(Box::new(prompt), 40, 40));
|
||||
}
|
||||
}
|
||||
|
||||
fn get_list_item_shortcut(&self) -> Box<[Shortcut]> {
|
||||
if self.selected_item_is_dir() {
|
||||
Box::new([Shortcut::new("Go to selected dir", ["l", "Right", "Enter"])])
|
||||
|
@ -789,18 +756,14 @@ impl AppState {
|
|||
}
|
||||
}
|
||||
|
||||
if self.skip_confirmation {
|
||||
self.handle_confirm_command();
|
||||
} else {
|
||||
let cmd_names = self
|
||||
.selected_commands
|
||||
.iter()
|
||||
.map(|node| node.name.as_str())
|
||||
.collect::<Vec<_>>();
|
||||
let cmd_names = self
|
||||
.selected_commands
|
||||
.iter()
|
||||
.map(|node| node.name.as_str())
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let prompt = ConfirmPrompt::new(&cmd_names[..]);
|
||||
self.focus = Focus::ConfirmationPrompt(Float::new(Box::new(prompt), 40, 40));
|
||||
}
|
||||
let prompt = ConfirmPrompt::new(&cmd_names[..]);
|
||||
self.focus = Focus::ConfirmationPrompt(Float::new(Box::new(prompt), 40, 40));
|
||||
}
|
||||
SelectedItem::None => {}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user