mirror of
https://github.com/ChrisTitusTech/linutil.git
synced 2024-11-23 21:51:56 +00:00
Compare commits
1 Commits
7c751141a9
...
b64d8a464a
Author | SHA1 | Date | |
---|---|---|---|
|
b64d8a464a |
|
@ -1,3 +1,2 @@
|
||||||
external-sources=true
|
external-sources=true
|
||||||
source=core/tabs/common-script.sh
|
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]]
|
[[package]]
|
||||||
name = "ego-tree"
|
name = "ego-tree"
|
||||||
version = "0.9.0"
|
version = "0.6.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7c6ba7d4eec39eaa9ab24d44a0e73a7949a1095a8b3f3abb11eddf27dbb56a53"
|
checksum = "12a0bb14ac04a9fcf170d0bbbef949b44cc492f4452bd20c095636956f653642"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "either"
|
name = "either"
|
||||||
|
@ -383,6 +383,7 @@ dependencies = [
|
||||||
"ansi-to-tui",
|
"ansi-to-tui",
|
||||||
"anstyle",
|
"anstyle",
|
||||||
"clap",
|
"clap",
|
||||||
|
"ego-tree",
|
||||||
"linutil_core",
|
"linutil_core",
|
||||||
"oneshot",
|
"oneshot",
|
||||||
"portable-pty",
|
"portable-pty",
|
||||||
|
|
|
@ -3,6 +3,9 @@ license = "MIT"
|
||||||
version = "24.9.28"
|
version = "24.9.28"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
[workspace.dependencies]
|
||||||
|
ego-tree = "0.6.2"
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = ["tui", "core", "xtask"]
|
members = ["tui", "core", "xtask"]
|
||||||
default-members = ["tui", "core"]
|
default-members = ["tui", "core"]
|
||||||
|
|
50
README.md
50
README.md
|
@ -24,26 +24,6 @@ curl -fsSL https://christitus.com/linux | sh
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://christitus.com/linuxdev | sh
|
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
|
## ⬇️ Installation
|
||||||
|
|
||||||
Linutil is also available as a package in various repositories:
|
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.
|
Replace `paru` with your preferred helper and `linutil` with your preferred package.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
<details>
|
|
||||||
<summary>OpenSUSE</summary>
|
|
||||||
|
|
||||||
Linutil can be installed on OpenSUSE with:
|
|
||||||
```bash
|
|
||||||
sudo zypper install linutil
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Cargo</summary>
|
<summary>Cargo</summary>
|
||||||
|
|
||||||
|
@ -100,28 +72,6 @@ Note that crates installed using `cargo install` require manual updating with `c
|
||||||
|
|
||||||
</details>
|
</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
|
## 💖 Support
|
||||||
|
|
||||||
If you find Linutil helpful, please consider giving it a ⭐️ to show your 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"
|
edition = "2021"
|
||||||
version.workspace = true
|
version.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
include = ["src/*.rs", "Cargo.toml", "tabs/**"]
|
include = [
|
||||||
|
"src/*.rs",
|
||||||
|
"Cargo.toml",
|
||||||
|
"tabs/**",
|
||||||
|
]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
include_dir = "0.7.4"
|
include_dir = "0.7.4"
|
||||||
|
@ -13,4 +17,4 @@ temp-dir = "0.1.14"
|
||||||
serde = { version = "1.0.205", features = ["derive"], default-features = false }
|
serde = { version = "1.0.205", features = ["derive"], default-features = false }
|
||||||
toml = { version = "0.8.19", features = ["parse"], default-features = false }
|
toml = { version = "0.8.19", features = ["parse"], default-features = false }
|
||||||
which = "6.0.3"
|
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;
|
mod inner;
|
||||||
|
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
pub use ego_tree;
|
|
||||||
use ego_tree::Tree;
|
use ego_tree::Tree;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
pub use config::Config;
|
|
||||||
pub use inner::{get_tabs, TabList};
|
pub use inner::{get_tabs, TabList};
|
||||||
|
|
||||||
#[derive(Clone, Hash, Eq, PartialEq)]
|
#[derive(Clone, Hash, Eq, PartialEq)]
|
||||||
|
@ -36,16 +33,3 @@ pub struct ListNode {
|
||||||
pub task_list: String,
|
pub task_list: String,
|
||||||
pub multi_select: bool,
|
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)
|
apt-get|nala)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -y install meld
|
"$ESCALATION_TOOL" "$PACKAGER" -y install meld
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add meld
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
checkFlatpak
|
checkFlatpak
|
||||||
flatpak install -y flathub org.gnome.meld
|
flatpak install -y flathub org.gnome.meld
|
||||||
|
|
|
@ -29,9 +29,6 @@ installNeovim() {
|
||||||
dnf|zypper)
|
dnf|zypper)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y neovim ripgrep fzf python3-virtualenv luarocks golang ShellCheck git
|
"$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}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
. ../../common-script.sh
|
. ../../common-script.sh
|
||||||
|
|
||||||
installVsCode() {
|
installVsCode() {
|
||||||
if ! command_exists com.visualstudio.code && ! command_exists code; then
|
if ! command_exists code; then
|
||||||
printf "%b\n" "${YELLOW}Installing VS Code..${RC}."
|
printf "%b\n" "${YELLOW}Installing VS Code..${RC}."
|
||||||
case "$PACKAGER" in
|
case "$PACKAGER" in
|
||||||
apt-get|nala)
|
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
|
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
|
"$ESCALATION_TOOL" "$PACKAGER" install -y code
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
checkFlatpak
|
|
||||||
flatpak install -y flathub com.visualstudio.code
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
. ../../common-script.sh
|
. ../../common-script.sh
|
||||||
|
|
||||||
installVsCodium() {
|
installVsCodium() {
|
||||||
if ! command_exists com.vscodium.codium && ! command_exists codium; then
|
if ! command_exists codium; then
|
||||||
printf "%b\n" "${YELLOW}Installing VS Codium...${RC}"
|
printf "%b\n" "${YELLOW}Installing VS Codium...${RC}"
|
||||||
case "$PACKAGER" in
|
case "$PACKAGER" in
|
||||||
apt-get|nala)
|
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
|
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
|
"$ESCALATION_TOOL" "$PACKAGER" install -y codium
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
checkFlatpak
|
|
||||||
flatpak install -y flathub com.vscodium.codium
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -9,9 +9,6 @@ installAlacritty() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm alacritty
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm alacritty
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add alacritty
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y alacritty
|
"$ESCALATION_TOOL" "$PACKAGER" install -y alacritty
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -15,9 +15,6 @@ install_adb() {
|
||||||
dnf|zypper)
|
dnf|zypper)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y android-tools
|
"$ESCALATION_TOOL" "$PACKAGER" install -y android-tools
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add android-tools
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
. ../../common-script.sh
|
. ../../common-script.sh
|
||||||
|
|
||||||
installBrave() {
|
installBrave() {
|
||||||
if ! command_exists com.brave.Browser && ! command_exists brave; then
|
if ! command_exists brave; then
|
||||||
printf "%b\n" "${YELLOW}Installing Brave...${RC}"
|
printf "%b\n" "${YELLOW}Installing Brave...${RC}"
|
||||||
case "$PACKAGER" in
|
case "$PACKAGER" in
|
||||||
apt-get|nala)
|
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" rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y brave-browser
|
"$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}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -9,9 +9,6 @@ if ! command_exists chromium; then
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm chromium
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm chromium
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add chromium
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y chromium
|
"$ESCALATION_TOOL" "$PACKAGER" install -y chromium
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -18,9 +18,6 @@ installFirefox() {
|
||||||
dnf)
|
dnf)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y firefox
|
"$ESCALATION_TOOL" "$PACKAGER" install -y firefox
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add firefox
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
. ../../common-script.sh
|
. ../../common-script.sh
|
||||||
|
|
||||||
installLibreWolf() {
|
installLibreWolf() {
|
||||||
if ! command_exists io.gitlab.librewolf-community && ! command_exists librewolf; then
|
if ! command_exists librewolf; then
|
||||||
printf "%b\n" "${YELLOW}Installing Librewolf...${RC}"
|
printf "%b\n" "${YELLOW}Installing Librewolf...${RC}"
|
||||||
case "$PACKAGER" in
|
case "$PACKAGER" in
|
||||||
apt-get|nala)
|
apt-get|nala)
|
||||||
|
@ -32,10 +32,6 @@ Signed-By: /usr/share/keyrings/librewolf.gpg" | "$ESCALATION_TOOL" tee /etc/apt/
|
||||||
pacman)
|
pacman)
|
||||||
"$AUR_HELPER" -S --needed --noconfirm librewolf-bin
|
"$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}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -9,9 +9,6 @@ installLynx() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm lynx
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm lynx
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add lynx
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y lynx
|
"$ESCALATION_TOOL" "$PACKAGER" install -y lynx
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -22,7 +22,6 @@ installThrorium() {
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
else
|
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
|
. ../../common-script.sh
|
||||||
|
|
||||||
installWaterfox() {
|
installWaterfox() {
|
||||||
if ! command_exists net.waterfox.waterfox && ! command_exists waterfox; then
|
if ! command_exists waterfox; then
|
||||||
printf "%b\n" "${YELLOW}Installing waterfox...${RC}"
|
printf "%b\n" "${YELLOW}Installing waterfox...${RC}"
|
||||||
case "$PACKAGER" in
|
case "$PACKAGER" in
|
||||||
pacman)
|
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
|
flatpak install -y flathub net.waterfox.waterfox
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
. ../../common-script.sh
|
. ../../common-script.sh
|
||||||
|
|
||||||
installDiscord() {
|
installDiscord() {
|
||||||
if ! command_exists com.discordapp.Discord && ! command_exists discord; then
|
if ! command_exists discord; then
|
||||||
printf "%b\n" "${YELLOW}Installing Discord...${RC}"
|
printf "%b\n" "${YELLOW}Installing Discord...${RC}"
|
||||||
case "$PACKAGER" in
|
case "$PACKAGER" in
|
||||||
apt-get|nala)
|
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 https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y discord
|
"$ESCALATION_TOOL" "$PACKAGER" install -y discord
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
checkFlatpak
|
|
||||||
flatpak install -y flathub com.discordapp.Discord
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
. ../../common-script.sh
|
. ../../common-script.sh
|
||||||
|
|
||||||
installJitsi() {
|
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}"
|
printf "%b\n" "${YELLOW}Installing Jitsi meet...${RC}"
|
||||||
case "$PACKAGER" in
|
case "$PACKAGER" in
|
||||||
apt-get|nala)
|
apt-get|nala)
|
||||||
|
@ -21,10 +21,6 @@ installJitsi() {
|
||||||
dnf)
|
dnf)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y jitsi-meet
|
"$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}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -23,10 +23,6 @@ installSignal() {
|
||||||
checkFlatpak
|
checkFlatpak
|
||||||
flatpak install -y flathub org.signal.Signal
|
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}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -9,9 +9,6 @@ installTelegram() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm telegram-desktop
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm telegram-desktop
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add telegram-desktop
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y telegram-desktop
|
"$ESCALATION_TOOL" "$PACKAGER" install -y telegram-desktop
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -9,9 +9,6 @@ installThunderBird() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm thunderbird
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm thunderbird
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add thunderbird
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y 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
|
#!/bin/sh -e
|
||||||
|
|
||||||
. ../common-script.sh
|
. ../common-script.sh
|
||||||
. ../common-service-script.sh
|
|
||||||
|
|
||||||
# Function to prompt the user for installation choice
|
# Function to prompt the user for installation choice
|
||||||
choose_installation() {
|
choose_installation() {
|
||||||
|
clear
|
||||||
printf "%b\n" "${YELLOW}Choose what to install:${RC}"
|
printf "%b\n" "${YELLOW}Choose what to install:${RC}"
|
||||||
printf "%b\n" "1. ${YELLOW}Docker${RC}"
|
printf "%b\n" "1. ${YELLOW}Docker${RC}"
|
||||||
printf "%b\n" "2. ${YELLOW}Docker Compose${RC}"
|
printf "%b\n" "2. ${YELLOW}Docker Compose${RC}"
|
||||||
|
@ -34,20 +34,19 @@ install_docker() {
|
||||||
;;
|
;;
|
||||||
zypper)
|
zypper)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive install docker
|
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive install docker
|
||||||
|
"$ESCALATION_TOOL" systemctl enable docker
|
||||||
|
"$ESCALATION_TOOL" systemctl start docker
|
||||||
;;
|
;;
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm docker
|
"$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm docker
|
||||||
;;
|
"$ESCALATION_TOOL" systemctl enable docker
|
||||||
apk)
|
"$ESCALATION_TOOL" systemctl start docker
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add docker
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
startAndEnableService docker
|
|
||||||
}
|
}
|
||||||
|
|
||||||
install_docker_compose() {
|
install_docker_compose() {
|
||||||
|
@ -67,9 +66,6 @@ install_docker_compose() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm docker-compose
|
"$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}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -6,7 +6,7 @@ setupDWM() {
|
||||||
printf "%b\n" "${YELLOW}Installing DWM-Titus...${RC}"
|
printf "%b\n" "${YELLOW}Installing DWM-Titus...${RC}"
|
||||||
case "$PACKAGER" in # Install pre-Requisites
|
case "$PACKAGER" in # Install pre-Requisites
|
||||||
pacman)
|
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)
|
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
|
"$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
|
"$ESCALATION_TOOL" "$PACKAGER" install -y /tmp/fastfetch.deb
|
||||||
rm /tmp/fastfetch.deb
|
rm /tmp/fastfetch.deb
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add fastfetch
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y fastfetch
|
"$ESCALATION_TOOL" "$PACKAGER" install -y fastfetch
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -9,9 +9,6 @@ installKitty() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm kitty
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm kitty
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add kitty
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y kitty
|
"$ESCALATION_TOOL" "$PACKAGER" install -y kitty
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -25,10 +25,6 @@ installLinutil() {
|
||||||
esac
|
esac
|
||||||
printf "%b\n" "${GREEN}Installed successfully.${RC}"
|
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\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}"
|
printf "%b" "${YELLOW}Do you want to install the crates.io package? (y/N): ${RC}"
|
||||||
|
@ -44,12 +40,10 @@ installLinutil() {
|
||||||
dnf)
|
dnf)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y curl rustup man-pages man-db man
|
"$ESCALATION_TOOL" "$PACKAGER" install -y curl rustup man-pages man-db man
|
||||||
;;
|
;;
|
||||||
apk)
|
zypper)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add build-base
|
"$ESCALATION_TOOL" "$PACKAGER" install -n curl gcc make
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add rustup
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
rustup-init
|
. $HOME/.cargo/env
|
||||||
# shellcheck disable=SC1091
|
|
||||||
. "$HOME/.cargo/env"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
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
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||||
. $HOME/.cargo/env
|
. $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
|
"$ESCALATION_TOOL" "$PACKAGER" install -y rustup
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -11,9 +11,6 @@ installDepend() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm bash bash-completion tar bat tree unzip fontconfig git
|
"$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
|
"$ESCALATION_TOOL" "$PACKAGER" install -y bash bash-completion tar bat tree unzip fontconfig git
|
||||||
;;
|
;;
|
||||||
|
@ -57,7 +54,7 @@ installStarshipAndFzf() {
|
||||||
return
|
return
|
||||||
fi
|
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}"
|
printf "%b\n" "${RED}Something went wrong during starship install!${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -16,9 +16,6 @@ installLibreOffice() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm libreoffice-fresh
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm libreoffice-fresh
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add libreoffice
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -9,9 +9,6 @@ installEvince() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm evince
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm evince
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add evince
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y evince
|
"$ESCALATION_TOOL" "$PACKAGER" install -y evince
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -9,9 +9,6 @@ installOkular() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm okular
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm okular
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add okular
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y okular
|
"$ESCALATION_TOOL" "$PACKAGER" install -y okular
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -9,9 +9,6 @@ installRofi() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm rofi
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm rofi
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add rofi
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y 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"
|
script = "Developer-tools/sublime-setup.sh"
|
||||||
task_list = "I"
|
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]]
|
[[data.entries]]
|
||||||
name = "VS Code"
|
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."
|
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"
|
script = "browsers/vivaldi.sh"
|
||||||
task_list = "I"
|
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]]
|
[[data.entries]]
|
||||||
name = "waterfox"
|
name = "waterfox"
|
||||||
description = "Waterfox is the privacy-focused web browser engineered to give you speed, control, and peace of mind on the internet."
|
description = "Waterfox is the privacy-focused web browser engineered to give you speed, control, and peace of mind on the internet."
|
||||||
|
|
|
@ -10,9 +10,6 @@ installZsh() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm zsh
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm zsh
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add zsh
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y zsh
|
"$ESCALATION_TOOL" "$PACKAGER" install -y zsh
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -123,12 +123,6 @@ checkPackageManager() {
|
||||||
fi
|
fi
|
||||||
done
|
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
|
if [ -z "$PACKAGER" ]; then
|
||||||
printf "%b\n" "${RED}Can't find a supported package manager${RC}"
|
printf "%b\n" "${RED}Can't find a supported package manager${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -175,7 +169,7 @@ checkEnv() {
|
||||||
checkArch
|
checkArch
|
||||||
checkEscalationTool
|
checkEscalationTool
|
||||||
checkCommandRequirements "curl groups $ESCALATION_TOOL"
|
checkCommandRequirements "curl groups $ESCALATION_TOOL"
|
||||||
checkPackageManager 'nala apt-get dnf pacman zypper apk'
|
checkPackageManager 'nala apt-get dnf pacman zypper'
|
||||||
checkCurrentDirectoryWritable
|
checkCurrentDirectoryWritable
|
||||||
checkSuperUser
|
checkSuperUser
|
||||||
checkDistro
|
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)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm ufw
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm ufw
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add ufw
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y 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 $DEPENDENCIES $COMPILEDEPS
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive install libgcc_s1-gcc7-32bit glibc-devel-32bit
|
"$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
|
"$ESCALATION_TOOL" "$PACKAGER" install -y $DEPENDENCIES
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -50,8 +50,7 @@ installDepend() {
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -n install $DEPENDENCIES
|
"$ESCALATION_TOOL" "$PACKAGER" -n install $DEPENDENCIES
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager ${PACKAGER}${RC}"
|
"$ESCALATION_TOOL" "$PACKAGER" install -y $DEPENDENCIES
|
||||||
exit 1
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
@ -96,8 +95,6 @@ installAdditionalDepend() {
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -n install $DISTRO_DEPS
|
"$ESCALATION_TOOL" "$PACKAGER" -n install $DISTRO_DEPS
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager ${PACKAGER}${RC}"
|
|
||||||
exit 1
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
. ../common-script.sh
|
. ../common-script.sh
|
||||||
. ../common-service-script.sh
|
|
||||||
|
|
||||||
cleanup_system() {
|
cleanup_system() {
|
||||||
printf "%b\n" "${YELLOW}Performing system cleanup...${RC}"
|
printf "%b\n" "${YELLOW}Performing system cleanup...${RC}"
|
||||||
|
@ -24,9 +23,6 @@ cleanup_system() {
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -Sc --noconfirm
|
"$ESCALATION_TOOL" "$PACKAGER" -Sc --noconfirm
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -Rns $(pacman -Qtdq) --noconfirm > /dev/null 2>&1
|
"$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}"
|
printf "%b\n" "${RED}Unsupported package manager: ${PACKAGER}. Skipping.${RC}"
|
||||||
;;
|
;;
|
||||||
|
@ -43,9 +39,7 @@ common_cleanup() {
|
||||||
if [ -d /var/log ]; then
|
if [ -d /var/log ]; then
|
||||||
"$ESCALATION_TOOL" find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
|
"$ESCALATION_TOOL" find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
|
||||||
fi
|
fi
|
||||||
if [ "$INIT_MANAGER" = "systemctl" ]; then
|
|
||||||
"$ESCALATION_TOOL" journalctl --vacuum-time=3d
|
"$ESCALATION_TOOL" journalctl --vacuum-time=3d
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clean_data() {
|
clean_data() {
|
||||||
|
|
|
@ -48,9 +48,6 @@ fastUpdate() {
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" ref
|
"$ESCALATION_TOOL" "$PACKAGER" ref
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive dup
|
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive dup
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" update
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -77,9 +74,6 @@ updateSystem() {
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" ref
|
"$ESCALATION_TOOL" "$PACKAGER" ref
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive dup
|
"$ESCALATION_TOOL" "$PACKAGER" --non-interactive dup
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" upgrade
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -38,12 +38,6 @@ description = "Paru is your standard pacman wrapping AUR helper with lots of fea
|
||||||
script = "arch/paru-setup.sh"
|
script = "arch/paru-setup.sh"
|
||||||
task_list = "I"
|
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]]
|
[[data.entries]]
|
||||||
name = "Yay AUR Helper"
|
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"
|
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
|
#!/bin/sh -e
|
||||||
|
|
||||||
. ../common-script.sh
|
. ../common-script.sh
|
||||||
. ../common-service-script.sh
|
|
||||||
|
|
||||||
# Function to check Bluez is installed
|
# Function to check Bluez is installed
|
||||||
setupBluetooth() {
|
setupBluetooth() {
|
||||||
|
@ -11,9 +10,6 @@ setupBluetooth() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm bluez-utils
|
"$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm bluez-utils
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add bluez
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y bluez
|
"$ESCALATION_TOOL" "$PACKAGER" install -y bluez
|
||||||
;;
|
;;
|
||||||
|
@ -22,7 +18,15 @@ setupBluetooth() {
|
||||||
printf "%b\n" "${GREEN}Bluez is already installed.${RC}"
|
printf "%b\n" "${GREEN}Bluez is already installed.${RC}"
|
||||||
fi
|
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
|
# Function to display the main menu
|
||||||
|
|
|
@ -12,7 +12,6 @@ list_devices() {
|
||||||
printf "\n"
|
printf "\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
installDependencies() {
|
installDependencies() {
|
||||||
DEPENDENCIES="xz gzip bzip2 jq"
|
DEPENDENCIES="xz gzip bzip2 jq"
|
||||||
if ! command_exists ${DEPENDENCIES}; then
|
if ! command_exists ${DEPENDENCIES}; then
|
||||||
|
@ -24,8 +23,6 @@ installDependencies() {
|
||||||
"${ESCALATION_TOOL}" "${PACKAGER}" install -y ${DEPENDENCIES};;
|
"${ESCALATION_TOOL}" "${PACKAGER}" install -y ${DEPENDENCIES};;
|
||||||
pacman)
|
pacman)
|
||||||
"${ESCALATION_TOOL}" "${PACKAGER}" -S --noconfirm --needed ${DEPENDENCIES};;
|
"${ESCALATION_TOOL}" "${PACKAGER}" -S --noconfirm --needed ${DEPENDENCIES};;
|
||||||
apk)
|
|
||||||
"${ESCALATION_TOOL}" "${PACKAGER}" add ${DEPENDENCIES};;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager.${RC}"
|
printf "%b\n" "${RED}Unsupported package manager.${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -19,9 +19,6 @@ if ! command_exists openssl; then
|
||||||
zypper)
|
zypper)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install openssl
|
"$ESCALATION_TOOL" "$PACKAGER" install openssl
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add openssl
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
. ../common-script.sh
|
. ../common-script.sh
|
||||||
. ../common-service-script.sh
|
|
||||||
|
|
||||||
create_file() {
|
create_file() {
|
||||||
printf "%b\n" "Creating script..."
|
printf "%b\n" "Creating script..."
|
||||||
|
@ -34,11 +33,6 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
numlockSetup() {
|
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
|
if [ ! -f "/usr/local/bin/numlock" ]; then
|
||||||
create_file
|
create_file
|
||||||
fi
|
fi
|
||||||
|
@ -50,10 +44,10 @@ numlockSetup() {
|
||||||
printf "%b" "Do you want to enable Numlock on boot? (y/N): "
|
printf "%b" "Do you want to enable Numlock on boot? (y/N): "
|
||||||
read -r confirm
|
read -r confirm
|
||||||
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||||
enableService numlock
|
"$ESCALATION_TOOL" systemctl enable numlock.service --quiet
|
||||||
printf "%b\n" "Numlock will be enabled on boot"
|
printf "%b\n" "Numlock will be enabled on boot"
|
||||||
else
|
else
|
||||||
disableService numlock
|
"$ESCALATION_TOOL" systemctl disable numlock.service --quiet
|
||||||
printf "%b\n" "Numlock will not be enabled on boot"
|
printf "%b\n" "Numlock will not be enabled on boot"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,8 @@ installollama() {
|
||||||
printf "%b\n" "${GREEN}ollama is already installed.${RC}"
|
printf "%b\n" "${GREEN}ollama is already installed.${RC}"
|
||||||
else
|
else
|
||||||
printf "%b\n" "${YELLOW}Installing ollama...${RC}"
|
printf "%b\n" "${YELLOW}Installing ollama...${RC}"
|
||||||
curl -fsSL https://ollama.com/install.sh | "$ESCALATION_TOOL" sh
|
curl -fsSL https://ollama.com/install.sh | sh
|
||||||
"$ESCALATION_TOOL" startService ollama
|
"$ESCALATION_TOOL" systemctl start ollama
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,9 +19,6 @@ installAutoCpufreq() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm git
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm git
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add git
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y 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)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm "$PACKAGE"
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm "$PACKAGE"
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add "$PACKAGE"
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y "$PACKAGE"
|
"$ESCALATION_TOOL" "$PACKAGER" install -y "$PACKAGE"
|
||||||
;;
|
;;
|
||||||
|
@ -37,23 +34,23 @@ setup_ssh() {
|
||||||
install_package openssh
|
install_package openssh
|
||||||
SSH_SERVICE="sshd"
|
SSH_SERVICE="sshd"
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
install_package openssh
|
|
||||||
SSH_SERVICE="sshd"
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
install_package openssh-server
|
install_package openssh-server
|
||||||
SSH_SERVICE="sshd"
|
SSH_SERVICE="sshd"
|
||||||
;;
|
;;
|
||||||
esac
|
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)
|
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}"
|
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}"
|
printf "%b\n" "${GREEN}SSH is up and running.${RC}"
|
||||||
else
|
else
|
||||||
printf "%b\n" "${RED}Failed to start SSH.${RC}"
|
printf "%b\n" "${RED}Failed to start SSH.${RC}"
|
||||||
|
@ -133,11 +130,12 @@ setup_samba() {
|
||||||
EOL
|
EOL
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for service in smb nmb; do
|
# Enable and start Samba services
|
||||||
startAndEnableService "$service"
|
"$ESCALATION_TOOL" systemctl enable smb nmb
|
||||||
done
|
"$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" "${GREEN}Samba is up and running.${RC}"
|
||||||
printf "%b\n" "${YELLOW}Samba share available at: $SHARED_DIR${RC}"
|
printf "%b\n" "${YELLOW}Samba share available at: $SHARED_DIR${RC}"
|
||||||
else
|
else
|
||||||
|
|
|
@ -76,21 +76,6 @@ name = "Set Resolution"
|
||||||
description = "This script is designed to change the resolution of monitors connected to your system"
|
description = "This script is designed to change the resolution of monitors connected to your system"
|
||||||
script = "monitor-control/set_resolutions.sh"
|
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]]
|
[[data]]
|
||||||
name = "User Account Manager"
|
name = "User Account Manager"
|
||||||
multi_select = false
|
multi_select = false
|
||||||
|
|
|
@ -12,11 +12,8 @@ install_timeshift() {
|
||||||
pacman)
|
pacman)
|
||||||
"$ESCALATION_TOOL" "${PACKAGER}" -S --noconfirm timeshift
|
"$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
|
esac
|
||||||
else
|
else
|
||||||
|
|
|
@ -13,9 +13,6 @@ setup_xrandr() {
|
||||||
apt-get|nala)
|
apt-get|nala)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y x11-xserver-utils
|
"$ESCALATION_TOOL" "$PACKAGER" install -y x11-xserver-utils
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add xrandr
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y xorg-x11-server-utils
|
"$ESCALATION_TOOL" "$PACKAGER" install -y xorg-x11-server-utils
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
. ../common-script.sh
|
. ../common-script.sh
|
||||||
. ../common-service-script.sh
|
|
||||||
|
|
||||||
# Function to check if NetworkManager is installed
|
# Function to check if NetworkManager is installed
|
||||||
setupNetworkManager() {
|
setupNetworkManager() {
|
||||||
|
@ -14,9 +13,6 @@ setupNetworkManager() {
|
||||||
dnf)
|
dnf)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y NetworkManager-1
|
"$ESCALATION_TOOL" "$PACKAGER" install -y NetworkManager-1
|
||||||
;;
|
;;
|
||||||
apk)
|
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" add networkmanager-wifi iwd
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
"$ESCALATION_TOOL" "$PACKAGER" install -y network-manager
|
"$ESCALATION_TOOL" "$PACKAGER" install -y network-manager
|
||||||
;;
|
;;
|
||||||
|
@ -26,12 +22,14 @@ setupNetworkManager() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if NetworkManager service is running
|
# 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}"
|
printf "%b\n" "${YELLOW}NetworkManager service is not running. Starting it now...${RC}"
|
||||||
startService NetworkManager
|
"$ESCALATION_TOOL" systemctl start NetworkManager
|
||||||
else
|
|
||||||
|
if systemctl is-active --quiet NetworkManager; then
|
||||||
printf "%b\n" "${GREEN}NetworkManager service started successfully.${RC}"
|
printf "%b\n" "${GREEN}NetworkManager service started successfully.${RC}"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to display the main menu
|
# Function to display the main menu
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
## Milestones
|
## Milestones
|
||||||
### Q4 2024
|
### Q4 2024
|
||||||
- [x] Finish the foundation of the project's CLI
|
- [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
|
- [ ] Add an option for logging script executions
|
||||||
|
|
||||||
### Q1 2025
|
### 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.
|
- **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.
|
- **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.
|
- **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.
|
- **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.
|
- **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.
|
- **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
|
- **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.
|
- **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
|
- **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
|
- **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
|
### 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 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
|
- **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
|
### User Account Manager
|
||||||
|
|
||||||
- **Auto Mount Drive**: This utility is designed to help with automating the process of mounting a drive on to your system.
|
- **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
|
curl -fsSL https://christitus.com/linuxdev | sh
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
|
||||||
\fB\-c\fR, \fB\-\-config\fR \fI<path>\fR
|
|
||||||
Path to the configuration file.
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\-t\fR, \fB\-\-theme\fR \fI<theme>\fR
|
\fB\-t\fR, \fB\-\-theme\fR \fI<theme>\fR
|
||||||
Set the theme to use in the TUI.
|
Set the theme to use in the TUI.
|
||||||
|
@ -36,10 +32,6 @@ Possible values:
|
||||||
.br
|
.br
|
||||||
Defaults to \fIdefault\fR.
|
Defaults to \fIdefault\fR.
|
||||||
|
|
||||||
.TP
|
|
||||||
\fB\-y\fR, \fB\-\-skip\-confirmation\fR
|
|
||||||
Skip confirmation prompt before executing commands.
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-override\-validation\fR
|
\fB\-\-override\-validation\fR
|
||||||
Show all available entries, disregarding compatibility checks. (\fBUNSAFE\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"
|
chmod +x "$temp_file"
|
||||||
check $? "Making linutil executable"
|
check $? "Making linutil executable"
|
||||||
|
|
||||||
"$temp_file" "$@"
|
"$temp_file"
|
||||||
check $? "Executing linutil"
|
check $? "Executing linutil"
|
||||||
|
|
||||||
rm -f "$temp_file"
|
rm -f "$temp_file"
|
||||||
|
|
|
@ -69,7 +69,7 @@ check $? "Downloading linutil"
|
||||||
chmod +x "$TMPFILE"
|
chmod +x "$TMPFILE"
|
||||||
check $? "Making linutil executable"
|
check $? "Making linutil executable"
|
||||||
|
|
||||||
"$TMPFILE" "$@"
|
"$TMPFILE"
|
||||||
check $? "Executing linutil"
|
check $? "Executing linutil"
|
||||||
|
|
||||||
rm -f "$TMPFILE"
|
rm -f "$TMPFILE"
|
||||||
|
|
|
@ -15,6 +15,7 @@ tips = ["rand"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = { version = "4.5.20", features = ["derive", "std"], default-features = false }
|
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 }
|
oneshot = { version = "0.1.8", features = ["std"], default-features = false }
|
||||||
portable-pty = "0.8.1"
|
portable-pty = "0.8.1"
|
||||||
ratatui = { version = "0.29.0", features = ["crossterm"], default-features = false }
|
ratatui = { version = "0.29.0", features = ["crossterm"], default-features = false }
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use crate::{state::ListEntry, theme::Theme};
|
use crate::{state::ListEntry, theme::Theme};
|
||||||
use linutil_core::{ego_tree::NodeId, Tab};
|
use ego_tree::NodeId;
|
||||||
|
use linutil_core::Tab;
|
||||||
use ratatui::{
|
use ratatui::{
|
||||||
crossterm::event::{KeyCode, KeyEvent, KeyModifiers},
|
crossterm::event::{KeyCode, KeyEvent, KeyModifiers},
|
||||||
layout::{Position, Rect},
|
layout::{Position, Rect},
|
||||||
|
|
|
@ -71,8 +71,8 @@ impl Shortcut {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_spans(&self) -> Vec<Span<'static>> {
|
fn to_spans(&self) -> Vec<Span<'static>> {
|
||||||
let description = Span::styled(self.desc, Style::default().italic());
|
let mut ret: Vec<_> = self
|
||||||
self.key_sequences
|
.key_sequences
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|seq| {
|
.flat_map(|seq| {
|
||||||
[
|
[
|
||||||
|
@ -81,7 +81,8 @@ impl Shortcut {
|
||||||
Span::default().content("] "),
|
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::{
|
use std::{
|
||||||
io::{self, stdout},
|
io::{self, stdout},
|
||||||
path::PathBuf,
|
|
||||||
time::Duration,
|
time::Duration,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -31,18 +30,10 @@ use state::AppState;
|
||||||
// Linux utility toolbox
|
// Linux utility toolbox
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
struct Args {
|
struct Args {
|
||||||
#[arg(short, long, help = "Path to the configuration file")]
|
|
||||||
config: Option<PathBuf>,
|
|
||||||
#[arg(short, long, value_enum)]
|
#[arg(short, long, value_enum)]
|
||||||
#[arg(default_value_t = Theme::Default)]
|
#[arg(default_value_t = Theme::Default)]
|
||||||
#[arg(help = "Set the theme to use in the application")]
|
#[arg(help = "Set the theme to use in the application")]
|
||||||
theme: Theme,
|
theme: Theme,
|
||||||
#[arg(
|
|
||||||
short = 'y',
|
|
||||||
long,
|
|
||||||
help = "Skip confirmation prompt before executing commands"
|
|
||||||
)]
|
|
||||||
skip_confirmation: bool,
|
|
||||||
#[arg(long, default_value_t = false)]
|
#[arg(long, default_value_t = false)]
|
||||||
#[clap(help = "Show all available options, disregarding compatibility checks (UNSAFE)")]
|
#[clap(help = "Show all available options, disregarding compatibility checks (UNSAFE)")]
|
||||||
override_validation: bool,
|
override_validation: bool,
|
||||||
|
@ -54,13 +45,7 @@ struct Args {
|
||||||
fn main() -> io::Result<()> {
|
fn main() -> io::Result<()> {
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
|
|
||||||
let mut state = AppState::new(
|
let mut state = AppState::new(args.theme, args.override_validation, args.size_bypass);
|
||||||
args.config,
|
|
||||||
args.theme,
|
|
||||||
args.override_validation,
|
|
||||||
args.size_bypass,
|
|
||||||
args.skip_confirmation,
|
|
||||||
);
|
|
||||||
|
|
||||||
stdout().execute(EnterAlternateScreen)?;
|
stdout().execute(EnterAlternateScreen)?;
|
||||||
enable_raw_mode()?;
|
enable_raw_mode()?;
|
||||||
|
|
|
@ -255,7 +255,7 @@ impl RunningCommand {
|
||||||
// Process the buffer with a parser with the current screen size
|
// 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
|
// 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
|
// 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 mutex = self.buffer.lock();
|
||||||
let buffer = mutex.as_ref().unwrap();
|
let buffer = mutex.as_ref().unwrap();
|
||||||
parser.process(buffer);
|
parser.process(buffer);
|
||||||
|
|
|
@ -7,8 +7,8 @@ use crate::{
|
||||||
running_command::RunningCommand,
|
running_command::RunningCommand,
|
||||||
theme::Theme,
|
theme::Theme,
|
||||||
};
|
};
|
||||||
|
use ego_tree::NodeId;
|
||||||
use linutil_core::{ego_tree::NodeId, Config, ListNode, TabList};
|
use linutil_core::{ListNode, TabList};
|
||||||
#[cfg(feature = "tips")]
|
#[cfg(feature = "tips")]
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
use ratatui::{
|
use ratatui::{
|
||||||
|
@ -19,7 +19,6 @@ use ratatui::{
|
||||||
widgets::{Block, Borders, List, ListState, Paragraph},
|
widgets::{Block, Borders, List, ListState, Paragraph},
|
||||||
Frame,
|
Frame,
|
||||||
};
|
};
|
||||||
use std::path::PathBuf;
|
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
const MIN_WIDTH: u16 = 100;
|
const MIN_WIDTH: u16 = 100;
|
||||||
|
@ -62,7 +61,6 @@ pub struct AppState {
|
||||||
#[cfg(feature = "tips")]
|
#[cfg(feature = "tips")]
|
||||||
tip: String,
|
tip: String,
|
||||||
size_bypass: bool,
|
size_bypass: bool,
|
||||||
skip_confirmation: bool,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum Focus {
|
pub enum Focus {
|
||||||
|
@ -87,18 +85,10 @@ enum SelectedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AppState {
|
impl AppState {
|
||||||
pub fn new(
|
pub fn new(theme: Theme, override_validation: bool, size_bypass: bool) -> Self {
|
||||||
config_path: Option<PathBuf>,
|
|
||||||
theme: Theme,
|
|
||||||
override_validation: bool,
|
|
||||||
size_bypass: bool,
|
|
||||||
skip_confirmation: bool,
|
|
||||||
) -> Self {
|
|
||||||
let tabs = linutil_core::get_tabs(!override_validation);
|
let tabs = linutil_core::get_tabs(!override_validation);
|
||||||
let root_id = tabs[0].tree.root().id();
|
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 {
|
let mut state = Self {
|
||||||
theme,
|
theme,
|
||||||
focus: Focus::List,
|
focus: Focus::List,
|
||||||
|
@ -113,35 +103,12 @@ impl AppState {
|
||||||
#[cfg(feature = "tips")]
|
#[cfg(feature = "tips")]
|
||||||
tip: get_random_tip(),
|
tip: get_random_tip(),
|
||||||
size_bypass,
|
size_bypass,
|
||||||
skip_confirmation,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
state.update_items();
|
state.update_items();
|
||||||
if let Some(auto_execute_commands) = auto_execute_commands {
|
|
||||||
state.handle_initial_auto_execute(&auto_execute_commands);
|
|
||||||
}
|
|
||||||
|
|
||||||
state
|
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]> {
|
fn get_list_item_shortcut(&self) -> Box<[Shortcut]> {
|
||||||
if self.selected_item_is_dir() {
|
if self.selected_item_is_dir() {
|
||||||
Box::new([Shortcut::new("Go to selected dir", ["l", "Right", "Enter"])])
|
Box::new([Shortcut::new("Go to selected dir", ["l", "Right", "Enter"])])
|
||||||
|
@ -789,9 +756,6 @@ impl AppState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.skip_confirmation {
|
|
||||||
self.handle_confirm_command();
|
|
||||||
} else {
|
|
||||||
let cmd_names = self
|
let cmd_names = self
|
||||||
.selected_commands
|
.selected_commands
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -801,7 +765,6 @@ impl AppState {
|
||||||
let prompt = ConfirmPrompt::new(&cmd_names[..]);
|
let prompt = ConfirmPrompt::new(&cmd_names[..]);
|
||||||
self.focus = Focus::ConfirmationPrompt(Float::new(Box::new(prompt), 40, 40));
|
self.focus = Focus::ConfirmationPrompt(Float::new(Box::new(prompt), 40, 40));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
SelectedItem::None => {}
|
SelectedItem::None => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user