You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jade/src/functions/desktops.rs

369 lines
8.5 KiB
Rust

use crate::args::DesktopSetup;
use crate::internal::exec::*;
use crate::internal::*;
pub fn install_desktop_setup(desktop_setup: DesktopSetup) {
log::debug!("Installing {:?}", desktop_setup);
match desktop_setup {
DesktopSetup::Onyx => install_onyx(),
DesktopSetup::Gnome => install_gnome(),
DesktopSetup::Kde => install_kde(),
DesktopSetup::Budgie => install_budgie(),
DesktopSetup::Cinnamon => install_cinnamon(),
DesktopSetup::Mate => install_mate(),
DesktopSetup::Xfce => install_xfce(),
DesktopSetup::Enlightenment => install_enlightenment(),
DesktopSetup::Lxqt => install_lxqt(),
DesktopSetup::Sway => install_sway(),
DesktopSetup::I3 => install_i3(),
DesktopSetup::Herbstluftwm => install_herbstluftwm(),
DesktopSetup::Awesome => install_awesome(),
DesktopSetup::Bspwm => install_bspwm(),
DesktopSetup::None => log::debug!("No desktop setup selected"),
}
install_networkmanager();
}
fn install_networkmanager() {
install(vec!["networkmanager"]);
exec_eval(
exec_chroot(
"systemctl",
vec![String::from("enable"), String::from("NetworkManager")],
),
"Enable network manager",
);
}
fn install_bspwm() {
install(vec![
"xorg",
"bspwm",
"sxhkd",
"xdo",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"xdg-user-dirs",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_awesome() {
install(vec![
"xorg",
"awesome",
"dex",
"rlwrap",
"vicious",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"xdg-user-dirs",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_herbstluftwm() {
install(vec![
"xorg",
"herbstluftwm",
"dmenu",
"dzen2",
"xorg-xsetroot",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"xdg-user-dirs",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_i3() {
install(vec![
"xorg",
"i3-wm",
"dmenu",
"i3lock",
"i3status",
"rxvt-unicode",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"xdg-user-dirs",
"dex",
"polkit-gnome",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
files_eval(
files::append_file("/mnt/etc/i3/config", "exec --no-startup-id dex -a\n"),
"Add dex to i3 config for autostart",
);
files_eval(
files::append_file(
"/mnt/etc/i3/config",
"exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1",
),
"Add polkit gnome to i3 config",
);
enable_dm("lightdm");
}
fn install_sway() {
install(vec![
"xorg-xwayland",
"sway",
"bemenu",
"foot",
"mako",
"polkit",
"swaybg",
"pipewire",
"pipewire-pulse",
"pipewire-alsa",
"pipewire-jack",
"wireplumber",
"sddm",
"xdg-user-dirs",
"dex",
"polkit-gnome",
]);
files_eval(
files::append_file("/mnt/etc/sway/config", "exec --no-startup-id dex -a\n"),
"Add dex to sway config for autostart",
);
files_eval(
files::append_file(
"/mnt/etc/sway/config",
"exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1",
),
"Add polkit gnome to sway config",
);
enable_dm("sddm");
}
fn install_lxqt() {
install(vec![
"xorg",
"lxqt",
"breeze-icons",
"nm-tray",
"xscreensaver",
"pipewire",
"pipewire-pulse",
"pipewire-alsa",
"pipewire-jack",
"wireplumber",
"sddm",
]);
enable_dm("sddm");
}
fn install_enlightenment() {
install(vec![
"xorg",
"enlightenment",
"terminology",
"pipewire",
"pipewire-pulse",
"pipewire-alsa",
"pipewire-jack",
"wireplumber",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_xfce() {
install(vec![
"xorg",
"xfce4",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"xfce4-goodies",
"pipewire",
"pipewire-pulse",
"pipewire-jack",
"pipewire-alsa",
"wireplumber",
"pavucontrol",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_mate() {
install(vec![
"xorg",
"mate",
"pipewire",
"pipewire-pulse",
"pipewire-alsa",
"pipewire-jack",
"wireplumber",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"mate-extra",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_cinnamon() {
install(vec![
"xorg",
"cinnamon",
"pipewire",
"pipewire-pulse",
"pipewire-alsa",
"pipewire-jack",
"wireplumber",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"metacity",
"gnome-shell",
"gnome-terminal",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_budgie() {
install(vec![
"xorg",
"budgie-desktop",
"gnome",
"pipewire",
"pipewire-pulse",
"pipewire-alsa",
"pipewire-jack",
"wireplumber",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"xdg-desktop-portal",
"xdg-desktop-portal-gtk",
"xdg-utils",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_kde() {
install(vec![
"xorg",
"plasma",
"plasma-wayland-session",
"kde-utilities",
"kde-system",
"pipewire",
"pipewire-pulse",
"pipewire-alsa",
"pipewire-jack",
"wireplumber",
"sddm",
]);
enable_dm("sddm");
}
fn install_gnome() {
install(vec![
"xorg",
"gnome",
"sushi",
"pipewire",
"pipewire-pulse",
"pipewire-alsa",
"pipewire-jack",
"wireplumber",
"gdm",
]);
enable_dm("gdm");
}
fn install_onyx() {
install(vec![
"xorg",
"onyx",
"sushi",
"pipewire",
"pipewire-pulse",
"pipewire-alsa",
"pipewire-jack",
"wireplumber",
"gdm",
]);
enable_dm("gdm");
}
fn enable_dm(dm: &str) {
log::debug!("Enabling {}", dm);
exec_eval(
exec_chroot("systemctl", vec![String::from("enable"), String::from(dm)]),
format!("Enable {}", dm).as_str(),
);
}