commit 56b0de085b3eccac8117cf16b4ddf06a8e126028 Author: Your Name Date: Sun Aug 18 21:15:23 2024 +0000 first commit diff --git a/gentoo.sh b/gentoo.sh new file mode 100644 index 0000000..138491f --- /dev/null +++ b/gentoo.sh @@ -0,0 +1,1018 @@ +#!/usr/bin/bash +######################## +# What this script is: +# +# An automatic installer for Gentoo Stable with the following features: +# 1. Sway with SystemD +# 2. Full Disk Encryption +# 3. Encrypted Boot +# 4. Waybar, AutoLogin via Getty +# 5. The ability to build a custom and deployable image onto any machine +# 6. Easily create a bootable USB drive +# 7. Automatic Partitioning +# 8. Steam/Wine/Lutris Install +# +# INSTRUCTIONS +# +# For new disk installs, initialize the disk to setup partitions from the main menu. +# +# Before running the install, ensure that you have Internet access. +# +# Please be sure to change USER,USER_PASSWORD, DISK_PASSWORD, and ROOT_PASSWORD strings in this file +# +# To install a new OS to a disk, run gentoo.sh and choose option 1 from the main menu +# +######################## +#Configure this section +######################## +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +TARGET='/install' +mkdir $TARGET +###################################### +echo +HARD_DISK=$2 +###################################### +USER="verita84" +USER_PASSWORD="123456" +ROOT_PASSWORD="123456" +WIRELESS_PASSWORD='123456' +SSID='123456' +DISK_PASSWORD='123456' +AUTO_DECRYPT='True' +WIRELESS_INTERFACE='wlan0' +COMPRESSION='compress=zstd:10' +FLATPAKS+=() +SERVICES+=(cronie libvirtd smartd cronie cups NetworkManager dev-zram0.swap) +MAKEOPTS="-j$(cat /proc/cpuinfo | grep -i processor | grep -vi 'model' | wc -l)" +ROOT_PARTITION_SIZE="30GB" +FEATURES="-pid-sandbox getbinpkg -binpkg-request-signature" +EMERGE_DEFAULT_OPTS="--getbinpkg " +#USEFLAG CONFIGURATION +USE_FLAGS="webchannel qml -gpm plasma luks cryptsetup kernel-install boot proprietary-codecs libei gdk-pixbuf kernel-install gles2 pulseaudio keeshare gtk vpx bluray libaom libdrm libilbc libplacebo libsoxr libv4l libxml2 lv2 openh264 encode iconv ladspa libass libcaca mp3 openal opus theora v4l vorbis xvid x264 gstreamer networkmanager tray appindicator wayland alsa X sound-server screencast systemd firmware btrfs policykit networkmanager zlib pipewire minizip network browser " +VIDEO_CARDS="amdgpu radeon radeonsi" +# +#PACKAGE CONFIGURATION +BASE_PACKAGES=" net-misc/nyx app-emulation/virt-manager sys-power/powertop net-vpn/tor app-shells/bash-completion sys-apps/fwupd sys-power/cpupower net-p2p/syncthing media-libs/gexiv2 app-vim/airline mail-mta/postfix app-admin/sysstat sys-apps/smartmontools sys-process/cronie net-fs/nfs-utils net-firewall/nftables dev-python/pip sys-fs/inotify-tools net-analyzer/nmap app-misc/screen app-portage/gentoolkit sys-fs/dosfstools app-admin/sudo sys-apps/systemd sys-apps/zram-generator app-eselect/eselect-repository dev-vcs/git sys-block/parted sys-block/zram-init sys-process/btop net-vpn/wireguard-tools app-editors/vim app-misc/fastfetch net-misc/yt-dlp sys-fs/btrfs-progs net-print/cups " +#FIX=" dev-libs/libappindicator" +DESKTOP_APPS=" media-video/obs-studio media-video/handbrake xfce-base/thunar app-editors/vscodium app-office/libreoffice-bin media-video/vlc net-im/telegram-desktop-bin app-admin/keepassxc gui-apps/swayidle gui-apps/swaybg gui-apps/wl-clipboard gui-apps/grim gui-apps/slurp gnome-extra/nm-applet media-fonts/fontawesome media-sound/pavucontrol gui-wm/sway x11-terms/kitty gui-apps/waybar gui-apps/swaylock gui-apps/wofi gui-apps/mako sys-apps/xdg-desktop-portal-gtk sys-apps/xdg-desktop-portal-gtk ranger x11-themes/papirus-icon-theme media-gfx/krita " +# +PACKAGES="$BASE_PACKAGES $DESKTOP_APPS" +TMPFS_SIZE="32G" +CPU_TYPE="x86-64" +TAR_EXCLUDES="--exclude=/run/user/* --exclude=/run/media/* --exclude=/var/db/repos/* --exclude=/var/lib/systemd/coredump/* --exclude=/var/cache/distfiles --exclude=/var/lib/flatpak --exclude=/.snapshots --exclude=/snapshots --exclude=/var/backups --exclude=/volumes/* --exclude=/mnt/* --exclude=/var/tmp/* --exclude=/tmp/* --exclude=/raid/* --exclude=/root/* --exclude=/var/cache/apt/archives/* --exclude=/proc/* --exclude=/.snapshots/* --exclude=/var/lib/libvirt/* --exclude=/dev/* --exclude=/sys/* --exclude=/home/* --exclude=/var/lib/postgresql --exclude=/var/lib/containers " + +#Add Masked Packages to the Array +MASKED_PACKAGES+=(media-video/obs-studio net-misc/nyx net-libs/stem sys-libs/libudev-compat dev-libs/nss dev-libs/libappindicator media-video/ffmpeg games-util/game-device-udev-rules games-util/steam-launcher net-im/telegram-desktop-bin) + +partitionDetection() { + #This is used for the installer to do script-based actions + #/usr/sbin/blkid -p /dev/$HARD_DISK + EFI=$(blkid | grep $HARD_DISK | sort | cut -d ":" -f1 | head -1 | tail -1) + BTRFS=$(blkid | grep $HARD_DISK | sort | cut -d ":" -f1 | head -2 | tail -1) + SWAP=$(blkid | grep $HARD_DISK | sort | cut -d ":" -f1 | head -3 | tail -1) + ROOT_MAPPER_NAME="luks-$(/sbin/blkid -s UUID -o value $BTRFS)" +} + +partitionDetection + +torConfig() { + echo "Configuring TOR" + echo + echo "EntryNodes {us}" >/etc/tor/torrc + echo "ExitNodes {us}" >>/etc/tor/torrc + echo "AvoidDiskWrites 1" >>/etc/tor/torrc + echo "HardwareAccel 1" >>/etc/tor/torrc + echo "NumCPUs 4" >>/etc/tor/torrc + chown -R debian-tor:debian-tor /etc/tor +} + +decryptBoot() { + KEYFILE='keyfile.key' + echo + echo "Setting LUKS to use Keyfile for password entry" + + echo + echo "Clearing Old Keys" + echo + for i in 1 2 3 4 5 6; do + printf "$DISK_PASSWORD" | cryptsetup luksKillSlot $1 $i + done + dd if=/dev/urandom of=/boot/$KEYFILE bs=1024 count=4 + chown root:root /boot/$KEYFILE + chmod 0400 /boot/$KEYFILE + echo + echo "Adding new key......" + echo + printf "$DISK_PASSWORD" | cryptsetup luksAddKey $1 /boot/$KEYFILE + sed -i "s/none/\/boot\/$KEYFILE/" /etc/crypttab +} + +autoLogin() { + GETTY_DIR="$TARGET/etc/systemd/system/getty@tty1.service.d" + GETTY="$GETTY_DIR/override.conf" + mkdir -p $GETTY_DIR + echo "[Service]" >$GETTY + echo "ExecStart=" >>$GETTY + echo "ExecStart=-/sbin/agetty --autologin $USER --noclear %I /usr/bin/bash" >>$GETTY +} + +osSnapshots() { + echo + mkdir $2 + echo "[Creating new OS snapshot to $2/$3.tgz]" + echo + echo + NEW_TAR_EXCLUDES="$TAR_EXCLUDES --exclude=/minio --exclude=$TARGET/* --exclude=/var/lib/docker " + echo + rm -f $2/$3.tgz + time tar cpzvf $2/$3.tgz $NEW_TAR_EXCLUDES / + chown $USER:$USER $2/$3.tgz +} + +homeBackup() { + echo + echo "[Copying USER data from /home to $TARGET/@home]" + echo + rsync -a --delete /home/ --exclude=.cache --exclude=.local/share/flatpak --exclude=.local/share/containers $TARGET/\@home/ +} + +osBackup() { + umount $TARGET + printf "$DISK_PASSWORD" | cryptsetup open ${BTRFS} $ROOT_MAPPER_NAME + + if [[ -e "/dev/mapper/$ROOT_MAPPER_NAME" ]]; then + echo + echo "[Mounting.....]" + echo + mount -o $COMPRESSION /dev/mapper/$ROOT_MAPPER_NAME $TARGET + + if [[ -e "$TARGET/@$ROOT_NAME/usr/bin/bash" ]]; then + if [ "$1" = "home" ]; then + homeBackup + fi + + osSnapshots "$1" "$2" "$3" + else + echo + echo "Aborting Install, $TARGET/@$ROOT_MAPPER_NAME/usr/bin/bash not found!" + echo + echo + exit 1 + fi + + else + echo + echo "Aborting Install, /dev/mapper/$ROOT_MAPPER_NAME not found!" + echo + echo + exit 1 + fi + + ls $TARGET/ + umount $TARGET + cryptsetup close $ROOT_MAPPER_NAME +} + +osRestore() { + partitions + rm -rf $TARGET/usr $TARGET/sbin $TARGET/lib32 $TARGET/libx32 $TARGET/lib $TARGET/vmlinuz* $TARGET/initrd* $TARGET/bin $TARGET/var $TARGET/root $TARGET/opt $TARGET/etc $TARGET/run + clear + echo "[Restoring OS tarfile from $4/$2.tgz]" + echo + tar xfp $4/$2.tgz -C $TARGET/ + + if [ "$3" = "home" ]; then + echo "[Restoring /home]" + echo + rsync -a --delete /home/ $TARGET/home/ + fi + + fstab + cp -f gentoo.sh $TARGET/ + systemMounts + chmod +x $TARGET/gentoo.sh + chroot $TARGET /gentoo.sh bootloader + chroot $TARGET /gentoo.sh btrfsTweaks + chroot $TARGET /gentoo.sh accounts + chroot $TARGET /gentoo.sh hibernate + + chown -R $USER:$USER $TARGET/home/$USER + auto_login + rm -f $TARGET/gentoo.sh + #unmount +} + +systemMounts() { + echo + echo "[Checking for BTRFS Partition]" + + if [[ -e "$BTRFS" ]]; then + partitions + echo "BTRFS device found" + echo + echo "Mounting Boot,EFI,HOME" + echo + mount /dev/mapper/$ROOT_MAPPER_NAME $TARGET + mount $BTRFS $TARGET + btrfs_filesytem + mkdir -p $TARGET/boot/EFI + mount $EFI $TARGET/boot + #CONFIGURE DATA DIRS (HOME) + mkdir $TARGET/home + mount -o subvol=@home /dev/mapper/$ROOT_MAPPER_NAME $TARGET/home + mkdir $TARGET/home/$USER + + mkdir $TARGET/run + mkdir $TARGET/dev + mkdir $TARGET/proc + mkdir $TARGET/sys + mkdir -p $TARGET/var/tmp/portage + + mount --types proc /proc $TARGET/proc + mount --rbind /sys $TARGET/sys + mount --make-rslave $TARGET/sys + mount --rbind /dev $TARGET/dev + mount --make-rslave $TARGET/dev + mount --bind /run $TARGET/run + mount --make-slave $TARGET/run + mount -t efivarfs none $TARGET/sys/firmware/efi/efivars + mount -t tmpfs -o size=$TMPFS_SIZE tmpfs $TARGET/var/tmp/portage + else + echo + echo "Aborting Install, $BTRFS not found!" + echo + echo + exit 1 + fi +} + +unmaskPackages() { + mkdir -p /etc/portage/package.use + echo ">=dev-qt/qtmultimedia-5.0.0 -qml -openal" >/etc/portage/package.use/qtmultimedia + + for i in "${MASKED_PACKAGES[@]}"; do + echo "$i ~amd64" >>/etc/portage/package.accept_keywords + done + +} + +installNvidia() { + ACCEPT_KEYWORDS="~amd64" emerge x11-drivers/nvidia-drivers nvidia-cuda-toolkit www-apps/jellyfin net-im/coturn --autounmask-write + etc-update -q --automode -5 + ACCEPT_KEYWORDS="~amd64" emerge x11-drivers/nvidia-drivers nvidia-cuda-toolkit www-apps/jellyfin net-im/coturn +} + +configurePortage() { + + sed -i "s/-O2/-march=$CPU_TYPE -O2/i" $TARGET/etc/portage/make.conf + echo 'ACCEPT_KEYWORDS="amd64"' >>$TARGET/etc/portage/make.conf + echo "FEATURES=\"$FEATURES\"" >>$TARGET/etc/portage/make.conf + echo "EMERGE_DEFAULT_OPTS=\"$EMERGE_DEFAULT_OPTS\"" >>$TARGET/etc/portage/make.conf + echo "L10N=\"en en-US\"" >>$TARGET/etc/portage/make.conf + mkdir -p $TARGET/var/tmp/portage + + if [ -f "./repos.conf" ]; then + echo + echo "Found Local Gentoo Repo" + mkdir -p $TARGET/etc/portage/repos.conf + mkdir -p $TARGET/etc/portage/binrepos.conf + cp -f repos.conf $TARGET/etc/portage/repos.conf/ + cp -f gentoobinhost.conf $TARGET/etc/portage/binrepos.conf/gentoobinhost.conf + echo "GENTOO_MIRRORS=\"https://mirrors.poster.place/\"" >>$TARGET/etc/portage/make.conf + echo + echo + fi + + chroot $TARGET /usr/bin/emerge --sync + + echo + echo "Configuring Binary Package GPG keys" + echo + chroot $TARGET /usr/bin/getuto + + echo "USE=\"$USE_FLAGS\"" >>$TARGET/etc/portage/make.conf + + echo "MAKEOPTS=\"$MAKEOPTS\"" >>$TARGET/etc/portage/make.conf + + echo + echo + echo + echo "[Configuring Profiles]" + echo + echo + echo + GENTOO_PROFILE=$( + chroot $TARGET /usr/bin/eselect profile list | grep -i "desktop/systemd" | grep -Evi 'plasma|gnome' | grep systemd | grep -i stable | head -1 | cut -d '[' -f2 | cut -d ']' -f1 + ) + chroot $TARGET /usr/bin/eselect profile set $GENTOO_PROFILE + + mkdir -p $TARGET/etc/portage/package.license + echo "*/* *" >$TARGET/etc/portage/package.license/license + rm -rf $TARGET/etc/portage/package.accept_keywords + mkdir -p $TARGET/etc/portage/package.mask + echo "dev-lang/rust" >$TARGET/etc/portage/package.mask/rust +} + +buildGentoo() { + + echo "[Install Base System]" + echo + echo + + echo + echo + echo + echo "[Building Base System]" + echo + echo + chroot $TARGET /usr/bin/emerge --update --deep --newuse @world --autounmask-write + chroot $TARGET etc-update -q --automode -5 + chroot $TARGET /usr/bin/emerge --update --deep --newuse @world + locale + + chroot $TARGET /usr/sbin/systemd-machine-id-setup + + echo + echo + echo + echo "[Installing Kernel]" + echo + echo + chroot $TARGET /usr/bin/emerge -uDN dracut sys-kernel/gentoo-kernel-bin sys-kernel/linux-firmware --autounmask-write + chroot $TARGET etc-update -q --automode -5 + chroot $TARGET /usr/bin/emerge -uDN dracut sys-kernel/gentoo-kernel-bin sys-kernel/linux-firmware gentoo-sources + chroot $TARGET /usr/bin/eselect kernel set 1 + + echo + echo + echo + echo "[Installing Packages]" + echo + echo + cp -f gentoo.sh $TARGET/usr/bin/gentoo.sh + chroot $TARGET /usr/bin/bash /usr/bin/gentoo.sh install-packages + + echo + echo + echo + echo "[Installing the Boot Loader]" + echo + echo + cp -f /tmp/disk $TARGET/tmp/ + chroot $TARGET /usr/bin/bash /usr/bin/gentoo.sh bootloader + + echo + echo + echo "[Configuring Accounts and post-setup tasks]" + echo + echo + + echo 'bash /usr/bin/gentoo.sh accounts' >>$TARGET/setup.sh + echo 'bash /usr/bin/gentoo.sh desktop' >>$TARGET/setup.sh + echo 'bash /usr/bin/gentoo.sh btrfs-tweaks' >>$TARGET/setup.sh + echo 'bash /usr/bin/gentoo.sh hibernate' >>$TARGET/setup.sh + autoLogin + chmod +x $TARGET/usr/bin/gentoo.sh + chmod +x $TARGET/setup.sh + chroot $TARGET /setup.sh + rm -f $TARGET/setup.sh +} + +installPackages() { + unmaskPackages + /usr/bin/emerge -uDN $PACKAGES --autounmask-write + /usr/sbin/etc-update -q --automode -5 + /usr/bin/emerge -uDN $PACKAGES + eselect repository add librewolf git https://codeberg.org/librewolf/gentoo.git + emaint sync -r guru + emaint sync -r librewolf + emerge -uDN librewolf-bin + torConfig +} + +snapshots() { + echo + echo "Creating Snapshots....." + echo + DATE=$(echo $(date +%Y-%m-%d-%H-%M-%S)) + CURRENT_ROOT=$(cat /proc/cmdline | cut -d '@' -f2 | cut -d ' ' -f1) + if [[ "$CURRENT_ROOT" == *"previous"* ]]; then + echo "Already booted in Previous" + else + echo "Removing Previous Snapshot" + btrfs sub del /.snapshots/previous + btrfs sub snapshot / /.snapshots/previous + fi +} + +btrfsTweaks() { + DISABLE_COW=("/var/lib/docker" "/var/lib/containers" "/volumes" "/var/lib/mysql" "/var/lib/libvirt") + + for i in "${DISABLE_COW[@]}"; do + chattr -R +C $i + done +} + +liveOSrestore() { + clear + mkdir /tmp/live + LIVE_OS_DM="/dev/mapper/$(mount | grep -i ' / ' | cut -d '/' -f4 | cut -d ' ' -f1)" + LIVE_OS_SUBVOL="@$(mount | grep -i ' / ' | cut -d '@' -f2 | sed 's/)//g')" + partitions + systemMounts + clear + + echo "[Transferring Currenting Running OS from $LIVE_OS_DM to $HARD_DISK ]" + echo + mount $LIVE_OS_DM /tmp/live + cd /tmp/live/$LIVE_OS_SUBVOL + rsync -a --delete . --exclude=home/* --exclude=.snapshots/* --exclude=sys/* --exclude=dev/* --exclude=proc/* --exclude=run/* $TARGET/ + fstab + cp -f $SCRIPT/gentoo.sh $TARGET/usr/bin/ + echo "[Copying Boot Files ]" + echo + rm -f $TARGET/boot/* + rsync -av --delete /boot/ $TARGET/boot/ + + cp -f /tmp/disk $TARGET/tmp/ + echo "bash /usr/bin/gentoo.sh bootloader" >$TARGET/setup.sh + echo 'bash /usr/bin/gentoo.sh accounts' >>$TARGET/setup.sh + echo 'bash /usr/bin/gentoo.sh btrfs-tweaks' >>$TARGET/setup.sh + echo 'bash /usr/bin/gentoo.sh hibernate' >>$TARGET/setup.sh + + chmod +x $TARGET/usr/bin/gentoo.sh + chmod +x $TARGET/setup.sh + chroot $TARGET bash /setup.sh + rm -f $TARGET/setup.sh + + read -p 'Would you like to run your UserTweaks: ' -e -i 'y' user_tweaks + + autoLogin + + if [[ $user_tweaks = *y* ]]; then + userTweaks + else + echo + echo "Skipping User Tweaks" + fi + chown -R $USER:$USER $TARGET/home/$USER + cd + umount /tmp/live + #unmount +} + +flatpaks() { + echo + echo "Installing Flatpaks......" + echo + flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + for i in "${FLATPAKS[@]}"; do + echo $i + flatpak install --user $i -y + done +} + +btrfs_filesytem() { + btrfs sub create $TARGET/@$ROOT_NAME + btrfs sub create $TARGET/@.snapshots + btrfs sub create $TARGET/@libvirt + btrfs sub create $TARGET/@home + btrfs sub create $TARGET/@root + btrfs sub create $TARGET/@containers + btrfs sub create $TARGET/@flatpak + echo + echo "Binding BTRFS Root" + echo + umount $TARGET + mount -o $COMPRESSION,subvol=@$ROOT_NAME /dev/mapper/$ROOT_MAPPER_NAME $TARGET +} + +userTweaks() { + mkdir $TARGET/home/$USER/.librewolf + mkdir -p $TARGET/home/$USER/.config/waybar + mkdir -p $TARGET/home/$USER/Exodus-linux-x64 + mkdir -p $TARGET/home/$USER/.config/wofi + mkdir -p $TARGET/home/$USER/.config/sway + mkdir -p $TARGET/home/$USER/.config/autostart + mkdir -p $TARGET/home/$USER/.config/hypr + mkdir -p $TARGET/home/$USER/.config/rofi + mkdir -p $TARGET/home/$USER/Documents/keys/keepass + mkdir -p $TARGET/home/$USER/dotfiles + mkdir -p $TARGET/home/$USER/server + mkdir -p $TARGET/home/$USER/.config/Exodus + mkdir -p $TARGET/home/$USER/.config/evolution + mkdir -p $TARGET/home/$USER/.config/goa-1.0 + mkdir -p $TARGET/home/$USER/.local/share/fonts + $TARGET/home/$USER/.local/share/fonts/ + + cp -f /home/$USER/.bash* $TARGET/home/$USER/ + + rsync -av --delete /home/$USER/server/ $TARGET/home/$USER/server/ + rsync -av --delete /home/$USER/Exodus-linux-x64/ $TARGET/home/$USER/Exodus-linux-x64/ + rsync -av --delete /home/$USER/.local/share/fonts/ $TARGET/home/$USER/.local/share/fonts/ + rsync -av --delete /home/$USER/.config/hypr/ $TARGET/home/$USER/.config/hypr/ + rsync -av --delete /home/$USER/.config/wofi/ $TARGET/home/$USER/.config/wofi/ + rsync -av --delete /home/$USER/.config/sway/ $TARGET/home/$USER/.config/sway/ + rsync -av --delete /home/$USER/.config/waybar/ $TARGET/home/$USER/.config/waybar/ + rsync -av --delete /home/$USER/.config/rofi/ $TARGET/home/$USER/.config/rofi/ + rsync -av --delete /home/$USER/.config/Exodus/ $TARGET/home/$USER/.config/Exodus/ + rsync -av --delete /home/$USER/.config/evolution/ $TARGET/home/$USER/.config/evolution/ + rsync -av --delete /home/$USER/.config/goa-1.0/ $TARGET/home/$USER/.config/goa-1.0/ + rsync -av --delete /home/$USER/.librewolf/ $TARGET/home/$USER/.librewolf/ + rsync -av --delete /home/$USER/.config/autostart/ $TARGET/home/$USER/.config/autostart/ + rsync -av --delete /home/$USER/Documents/keys/keepass/ $TARGET/home/$USER/Documents/keys/keepass/ + rsync -av --delete /home/$USER/dotfiles/ $TARGET/home/$USER/dotfiles/ + rsync -av --delete /home/$USER/.config/keepassxc/ $TARGET/home/$USER/.config/keepassxc/ + chmod +x $TARGET/home/$USER/dotfiles/scripts/keepass.sh + chroot $TARGET /usr/bin/systemctl disable libvirtd libvirtd.socket firewall.service +} + +services() { + echo '[zram0]' >/etc/systemd/zram-generator.conf + echo 'zram-size = ram * 2' >>/etc/systemd/zram-generator.conf + + for i in "${SERVICES[@]}"; do + systemctl enable --now $i + done + + #Required for Audio to work + systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service + systemctl --user enable --now pipewire.service +} + +desktop() { + services +} + +installSteam() { + eselect repository enable steam-overlay + emerge --sync steam-overlay + emerge -uDN games-util/steam-launcher app-emulation/wine-vanilla --autounmask-write + etc-update -q --automode -5 + emerge -uDN @world + emerge -uDN games-util/steam-launcher app-emulation/wine-vanilla +} + +locale() { + echo "ln -sf /usr/share/zoneinfo/US/Mountain /etc/localtime" >>$TARGET/setup.sh + echo "hwclock --systohc" >>$TARGET/setup.sh + echo "en_US.UTF-8 UTF-8" >$TARGET/etc/locale.gen + echo "locale-gen" >>$TARGET/setup.sh +} + +fstab() { + mkdir $TARGET/etc + echo "UUID=$(/sbin/blkid -s UUID -o value ${EFI}) /boot vfat defaults,fmask=0077,dmask=0077 0 1" >$TARGET/etc/fstab + echo "/dev/mapper/$ROOT_MAPPER_NAME / btrfs noatime,nodiratime,autodefrag,$COMPRESSION,subvol=@$ROOT_NAME 0 1" >>$TARGET/etc/fstab + echo "/dev/mapper/$ROOT_MAPPER_NAME /.snapshots btrfs noatime,nodiratime,autodefrag,$COMPRESSION,subvol=@.snapshots 0 1" >>$TARGET/etc/fstab + echo "/dev/mapper/$ROOT_MAPPER_NAME /var/lib/libvirt btrfs noatime,nodiratime,autodefrag,$COMPRESSION,subvol=@libvirt 0 1" >>$TARGET/etc/fstab + echo "/dev/mapper/$ROOT_MAPPER_NAME /var/lib/flatpak btrfs noatime,nodiratime,autodefrag,$COMPRESSION,subvol=@flatpak 0 1" >>$TARGET/etc/fstab + echo "tmpfs /var/log tmpfs defaults,dev,exec 0 0" >>$TARGET/etc/fstab + echo "tmpfs /tmp tmpfs defaults 0 0" >>$TARGET/etc/fstab + echo "tmpfs /home/${USER}/.cache tmpfs rw,user,exec 0 0" >>$TARGET/etc/fstab + echo "tmpfs /home/${USER}/Downloads tmpfs rw,user,exec 0 0" >>$TARGET/etc/fstab + echo "/dev/mapper/$ROOT_MAPPER_NAME /home btrfs noatime,nodiratime,autodefrag,$COMPRESSION,subvol=@home 0 1" >>$TARGET/etc/fstab + echo "/dev/mapper/$ROOT_MAPPER_NAME /root btrfs noatime,nodiratime,autodefrag,$COMPRESSION,subvol=@root 0 1" >>$TARGET/etc/fstab + echo "/dev/mapper/$ROOT_MAPPER_NAME /var/lib/containers btrfs noatime,nodiratime,autodefrag,$COMPRESSION,subvol=@containers 0 1" >>$TARGET/etc/fstab + if [[ $SWAP_CHOICE = *y* ]]; then + echo "$SWAP none swap 0 0" >>$TARGET/etc/fstab + fi +} + +accounts() { + echo + echo "Set Password for $USER" + useradd -m -s /bin/bash $USER + echo "$USER:$USER_PASSWORD" | chpasswd + gpasswd -a $USER wheel + gpasswd -a $USER network + gpasswd -a $USER video + gpasswd -a $USER libvirt + gpasswd -a $USER netdev + gpasswd -a $USER adm + gpasswd -a $USER video + echo "$USER ALL=(ALL) ALL" >/etc/sudoers + echo "root ALL=(ALL) ALL" >>/etc/sudoers + echo + echo "Setting ROOT Password:" + echo "root:$ROOT_PASSWORD" | chpasswd + /usr/bin/hostnamectl set-hostname $ROOT_NAME +} + +btrfs-tweaks() { + DISABLE_COW=("/var/lib/docker" "/volumes" "/var/lib/mysql" "/var/lib/libvirt") + + for i in "${DISABLE_COW[@]}"; do + chattr -R +C $i + done +} + +initializeDisk() { + clear + echo + echo "[Gentoo Installer - Initialize Device]" + echo + + parted /dev/$HARD_DISK mklabel gpt + parted -a optimal /dev/$HARD_DISK mkpart primary fat32 1MiB 2024MiB + parted -a optimal /dev/$HARD_DISK set 1 esp on + + if [[ $SWAP_CHOICE = *y* ]]; then + parted -a optimal /dev/$HARD_DISK mkpart P2 ext3 2024MiB 98% + parted -a optimal /dev/$HARD_DISK mkpart P2 ext3 98% 100% + else + parted -a optimal /dev/$HARD_DISK mkpart P2 ext3 2024MiB 100% + fi + partitionDetection + printf "$DISK_PASSWORD\n$DISK_PASSWORD" | cryptsetup luksFormat ${BTRFS} + printf "$DISK_PASSWORD" | cryptsetup open ${BTRFS} $ROOT_MAPPER_NAME + echo + echo "Formatting....." + echo y | mkfs.btrfs /dev/mapper/$ROOT_MAPPER_NAME -f + echo + echo "Formatting $EFI" + echo + echo y | mkfs.vfat $EFI + + if [[ $SWAP_CHOICE = *y* ]]; then + mkswap -f $SWAP + fi + echo "Initialize Complete. Please reboot your machine to avoid any issues" + echo + cryptsetup close $ROOT_MAPPER_NAME +} + +wifi() { + iwctl --passphrase $WIRELESS_PASSWORD station $WIRELESS_INTERFACE connect $SSID +} + +show-help() { + clear + echo + echo "[gentoo.sh arguments]" + echo + echo "./gentoo.sh wifi" + echo "./gentoo.sh bootloader [disk] [ROOT_NAME] [ROOT_MAPPER_NAME]" + echo "./gentoo.sh initialize" + echo "./gentoo.sh tar [device name] [location]" + echo "./gentoo.sh snapshot" + echo "./gentoo.sh reomve-snapshot" + echo "./gentoo.sh btrfs-tweaks" + echo +} + +tweaks() { + clear + echo + echo "Gentoo Installer System Tweaks]" + echo + echo "[1] Reinstall Bootloader" + echo "[2] Chroot into existing OS" + echo "[3] Compile the Kernel" + echo "[4] Upgrade gentoo.sh" + echo "[5] Restore Live OS to removable media" + echo "[6] Enable/Disable Disk Password at Boot" + echo + read -p 'Your Choice: ' choice + if [[ $choice = 1 ]]; then + setDevices + bootloader + elif [[ $choice = 2 ]]; then + setDevices + systemMounts + /usr/bin/chroot $TARGET /bin/bash + elif [[ $choice = 3 ]]; then + compile-kernel + elif [[ $choice = 4 ]]; then + rm -f gentoo.sh + rm -f repos.conf + rm -f gentoobinhost.conf + rm -f /tmp/latest-stage3-amd64-desktop-systemd.txt + wget https://git.poster.place/verita84/hyprland/raw/branch/main/gentoo.sh + elif [[ $choice = 5 ]]; then + setDevices + liveOSrestore "$HARD_DISK" $ROOT_MAPPER_NAME "none" "none" "$ROOT_NAME" + elif [[ $choice = 6 ]]; then + clear + echo "[Password Protection at Boot]" + echo + echo + setDevices + read -p 'Unlock Disk without password at boot time? ' -e -i "y" pass_change + if [[ $pass_change = *n* ]]; then + AUTO_DECRYPT="False" + bootloader "$HARD_DISK" "$ROOT_NAME" "$ROOT_MAPPER_NAME" + else + AUTO_DECRYPT="True" + bootloader "$HARD_DISK" "$ROOT_NAME" "$ROOT_MAPPER_NAME" + fi + else + tweaks + fi +} + +download-setup() { + clear + echo "[Choose Deployment Type]" + echo + echo + setDevices + STAGE3_URL=$(curl https://www.gentoo.org/downloads/ | grep -i stage3-amd64-systemd | head -1 | cut -d '"' -f2-3 | cut -d '"' -f1) + STAGE3_FILE="/tmp/stage3.tar.xz" + if [ -f "$STAGE3_FILE" ]; then + echo + echo "Stage 3 already downloaded....." + echo + else + wget -O /tmp/stage3.tar.xz "$STAGE3_URL" + fi + + if [ -f "$STAGE3_FILE" ]; then + echo + echo + echo "Extracting Tar File.........." + echo + echo + systemMounts + echo + echo "Extracting $STAGE3_FILE" + echo + tar xf $STAGE3_FILE -C $TARGET/ + fstab + cp -f /etc/resolv.conf $TARGET/etc/ + configurePortage + cp -f gentoo.sh $TARGET/usr/bin/ + fi +} + +menu() { + clear + echo + echo "[Welcome to the Poster.place Gentoo Installer System]" + echo + echo "[1] Setup Disk" + echo "[2] Download Gentoo Installation Files" + echo "[3] Install System" + echo "[4] Automatic Install" + echo "[5] Backup" + echo "[6] Restore" + echo "[7] Tools and Tweaks" + echo "[8] Initialize Disk" + echo + read -p 'Your Choice: ' choice + + if [[ $choice = 1 ]]; then + setDevices + read -p "Press enter key to Continue" + menu + elif [[ $choice = 2 ]]; then + download-setup + read -p "Press enter key to Continue" + menu + elif [[ $choice = 3 ]]; then + setDevices + buildGentoo + read -p "Press enter key to Continue" + menu + elif [[ $choice = 4 ]]; then + setDevices + download-setup + buildGentoo + exit 1 + elif [[ $choice = 5 ]]; then + clear + echo "[Backup OS]" + echo + read -p 'Backup Home Directory? : ' -e -i 'n' home_backup + read -p 'OS Backup Directory Location : ' -e -i "/mnt" backup_directory + if [[ $home_backup = *n* ]]; then + osBackup "none" "$backup_directory" "$ROOT_NAME" + else + osBackup "home" "$backup_directory" "$ROOT_NAME" + fi + elif [[ $choice = 6 ]]; then + clear + echo "[Restore from Backup]" + echo + echo + rm -f /tmp/disk + setDevices + read -p 'Hostname for Restore: ' -e -i "gentoo" HOSTNAME + read -p 'Restore Directory Image Source: ' -e -i "/mnt" restore_directory + FILE_SCAN=$(ls $restore_directory/gentoo-$HOSTNAME-* | tail -1) + read -p 'Restore Home Directory? : ' -e -i 'n' home_restore + read -p 'Backup file name to restore: ' -e -i "$FILE_SCAN" backup_name + + if [[ $home_restore = *n* ]]; then + osRestore "$HARD_DISK" "$backup_name" "none" "$restore_directory" "$BTRFS" + else + osRestore "$HARD_DISK" "$backup_name" "home" "$restore_directory" "$BTRFS" + fi + elif [[ $choice = 7 ]]; then + tweaks + elif [[ $choice = 8 ]]; then + clear + echo "[Initialize Disk]" + echo + echo + setDevices + initializeDisk + read -p "Press enter key to Continue" + menu + else + menu + fi +} + +partitions() { + echo + echo "Setting Up Partitions....." + echo printf "$DISK_PASSWORD" | cryptsetup open ${BTRFS} $ROOT_MAPPER_NAME + printf "$DISK_PASSWORD" | cryptsetup open ${BTRFS} $ROOT_MAPPER_NAME + if [[ -e "/dev/mapper/$ROOT_MAPPER_NAME" ]]; then + fstab + else + echo + echo "Aborting Install, /dev/mapper/$ROOT_MAPPER_NAME not found!" + echo + echo + exit 1 + fi +} + +setDevices() { + if [ -f "/tmp/disk" ]; then + HARD_DISK=$(cat /tmp/disk | head -1) + ROOT_NAME=$(cat /tmp/disk | tail -3 | head -1) + SWAP_CHOICE=$(cat /tmp/disk | tail -1 | head -1) + else + i=0 + while [ $i != "n" ]; do + clear + echo + echo "Disks and Partitions:" + echo + cat /proc/partitions + echo + echo "Erase the line and press enter to skip to the next detected disk" + echo + i=$(expr $i + 1) + read -p 'Disk Device to Use: ' -e -i $(lsblk | grep -i disk | grep -Evi 'swap' | cut -d ' ' -f1 | head -$i | tail -1) device + if [[ ! -z $device ]]; then + i="n" + fi + done + + read -p 'BTRFS Root Volume name: ' -e -i "gentoo" root_name + read -p 'LUKS Device Mapper Name: ' -e -i "root" device_mapper_name + read -p 'Swap Partition for hibernation? (y/n): ' -e -i "y" SWAP_CHOICE + HARD_DISK=$device + echo $HARD_DISK >/tmp/disk + echo $root_name >>/tmp/disk + echo $device_mapper_name >>/tmp/disk + echo $SWAP_CHOICE >>/tmp/disk + setDevices + fi + partitionDetection +} + +hibernateSetup() { + echo "[Sleep]" >/etc/systemd/sleep.conf + echo "AllowSuspend=yes" >>/etc/systemd/sleep.conf + echo "AllowHibernation=yes" >>/etc/systemd/sleep.conf + echo "AllowSuspendThenHibernate=yes" >>/etc/systemd/sleep.conf + echo "HibernateState=disk" >>/etc/systemd/sleep.conf + echo "HibernateMode=platform" >>/etc/systemd/sleep.conf + echo "HibernateDelaySec=1800" >>/etc/systemd/sleep.conf + echo "HandleLidSwitch=suspend-then-hibernate" >>/etc/systemd/logind.conf + echo "HandleLidSwitchExternalPower=suspend-then-hibernate" >>/etc/systemd/logind.conf + unlink /usr/lib/systemd/system/systemd-suspend.service + rm -f /usr/lib/systemd/system/systemd-suspend.service + ln -s /usr/lib/systemd/system/systemd-suspend-then-hibernate.service /usr/lib/systemd/system/systemd-suspend.service +} + +bootloader() { + chmod -R 740 /boot/EFI + rm -rf /boot/loader/entries/* + #find /boot -type f -name initrd.\* -exec rm -f {} \; + #find /boot/* -type d -exec rm -rf {} \; + bootctl install + MACHINE_ID=$(cat /etc/machine-id) + KERNEL="kernel-$(ls /boot | grep kernel | cut -d '-' -f2-4 | head -1)" + KERNEL_VERSION=$(echo $KERNEL | cut -d '-' -f2-4) + LOADER_FILE="/boot/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" + PREVIOUS_LOADER_FILE="/boot/loader/entries/previous.conf" + clear + echo "$ROOT_MAPPER_NAME UUID=$(/sbin/blkid -s UUID -o value ${BTRFS}) none luks" >/etc/crypttab + + echo 'add_dracutmodules+=" crypt dm rootfs-block "' >/etc/dracut.conf + if [[ $SWAP_CHOICE = *y* ]]; then + echo "kernel_cmdline+=\" resume=UUID=$(/sbin/blkid -s UUID -o value ${SWAP}) mitigations=off rd.luks.uuid=$(/sbin/blkid -s UUID -o value ${BTRFS}) root=UUID=$(/sbin/blkid -s UUID -o value /dev/mapper/${ROOT_MAPPER_NAME}) rootflags=subvol=@$ROOT_NAME rw \"" >>/etc/dracut.conf + else + echo "kernel_cmdline+=\" mitigations=off rd.luks.uuid=$(/sbin/blkid -s UUID -o value ${BTRFS}) root=UUID=$(/sbin/blkid -s UUID -o value /dev/mapper/${ROOT_MAPPER_NAME}) rootflags=subvol=@$ROOT_NAME rw \"" >>/etc/dracut.conf + fi + + if [ "$AUTO_DECRYPT" == "True" ]; then + echo "install_items+=/boot/keyfile.key /boot/unlock.sh" >>/etc/dracut.conf + #echo "install_items+=/boot/unlock.sh" >>/etc/dracut.conf + #echo "#!/bin/bash" >/boot/unlock.sh + #echo "cryptsetup open UUID=$(/sbin/blkid -s UUID -o value ${BTRFS}) --key-file /boot/keyfile.key $ROOT_MAPPER_NAME " >>/boot/unlock.sh + #chmod +x /boot/unlock.sh + decryptBoot "${BTRFS}" + fi + + mkdir -p /boot/$MACHINE_ID/$KERNEL_VERSION + dracut --regenerate-all -f + + echo "MachineID=$MACHINE_ID" + echo "KERNEL IS $KERNEL" + echo "Root_Name=$ROOT_NAME" + echo "BTRFS=$BTRFS" + echo "UEFI Kernel: $KERNEL_VERSION" + + echo "default $MACHINE_ID" >/boot/loader/loader.conf + echo "timeout 1" >>/boot/loader/loader.conf + + #Generate Previous Boot Entry + echo "title Previous" >$PREVIOUS_LOADER_FILE + echo "version $KERNEL_VERSION" >>$PREVIOUS_LOADER_FILE + + if [[ $SWAP_CHOICE = *y* ]]; then + echo "options resume=UUID=$(/sbin/blkid -s UUID -o value ${SWAP}) mitigations=off rd.luks.uuid=$(/sbin/blkid -s UUID -o value ${BTRFS}) root=UUID=$(/sbin/blkid -s UUID -o value /dev/mapper/${ROOT_MAPPER_NAME}) rootflags=subvol=@.snapshots/previous rw " >>$PREVIOUS_LOADER_FILE + else + echo "options mitigations=off rd.luks.uuid=$(/sbin/blkid -s UUID -o value ${BTRFS}) root=UUID=$(/sbin/blkid -s UUID -o value /dev/mapper/${ROOT_MAPPER_NAME}) rootflags=subvol=@previous rw " >>$PREVIOUS_LOADER_FILE + fi + echo "machine-id $MACHINE_ID" >>$PREVIOUS_LOADER_FILE + echo "linux /$KERNEL" >>$PREVIOUS_LOADER_FILE + echo "initrd /$MACHINE_ID/$KERNEL_VERSION/initrd" >>$PREVIOUS_LOADER_FILE + + #Generate Main Boot Entry + echo "title Current" >$LOADER_FILE + echo "version $KERNEL_VERSION" >>$LOADER_FILE + if [[ $SWAP_CHOICE = *y* ]]; then + echo "options resume=UUID=$(/sbin/blkid -s UUID -o value ${SWAP}) mitigations=off rd.luks.uuid=$(/sbin/blkid -s UUID -o value ${BTRFS}) root=UUID=$(/sbin/blkid -s UUID -o value /dev/mapper/${ROOT_MAPPER_NAME}) rootflags=subvol=@${ROOT_NAME} rw " >>$LOADER_FILE + else + echo "options mitigations=off rd.luks.uuid=$(/sbin/blkid -s UUID -o value ${BTRFS}) root=UUID=$(/sbin/blkid -s UUID -o value /dev/mapper/${ROOT_MAPPER_NAME}) rootflags=subvol=@${ROOT_NAME} rw " >>$LOADER_FILE + fi + echo "machine-id $MACHINE_ID" >>$LOADER_FILE + echo "linux /$KERNEL" >>$LOADER_FILE + echo "initrd /$MACHINE_ID/$KERNEL_VERSION/initrd" >>$LOADER_FILE + bootctl set-default $MACHINE_ID-$KERNEL_VERSION.conf + #bootctl list +} + +compile-kernel() { + cd /usr/src + eselect kernel set 1 + cd /usr/src/linux + if [ -f "/usr/src/linux/.config" ]; then + make oldconfig + + else + make allyesconfig + fi + + time make -j$(cat /proc/cpuinfo | grep -i processor | grep -vi 'model' | wc -l) + time make -j$(cat /proc/cpuinfo | grep -i processor | grep -vi 'model' | wc -l) modules_install + time make install +} + +if [ "$1" = "desktop" ]; then + desktop +elif [ "$1" = "tar" ]; then + osSnapshots "$3" "$2" +elif [ "$1" = "upgrade-system" ]; then + upgrade-system +elif [ "$1" = "fstab" ]; then + setDevices + export TARGET=/ + fstab +elif [ "$1" = "wifi" ]; then + wifi +elif [ "$1" = "accounts" ]; then + accounts +elif [ "$1" = "hibernate" ]; then + hibernateSetup +elif [ "$1" = "flatpaks" ]; then + flatpaks +elif [ "$1" = "bootloader" ]; then + setDevices + partitionDetection + bootloader +elif [ "$1" = "snapshot" ]; then + snapshots +elif [ "$1" = "steam" ]; then + installSteam +elif [ "$1" = "install-packages" ]; then + installPackages +elif [ "$1" = "btrfs-tweaks" ]; then + btrfsTweaks +elif [ "$1" = "compile-kernel" ]; then + compile-kernel +elif [ "$1" = "remove-snapshot" ]; then + remove-snapshots +elif [ "$1" = "help" ]; then + show-help +else + menu +fi diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf new file mode 100644 index 0000000..b51f69a --- /dev/null +++ b/hypr/hyprland.conf @@ -0,0 +1,216 @@ +# This is an example Hyprland config file. +# +# Refer to the wiki for more information. + +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,1.3 +#monitor=eDP-1,1920x1080@70,auto,0.8 + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +exec-once = bash ~/dotfiles/scripts/hyprland-startup.sh & + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Some default env vars. +env = XCURSOR_SIZE,24 + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + natural_scroll = 1 + touchpad { + natural_scroll = true + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5 + gaps_out =5 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + layout = dwindle + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + + blur { + enabled = true + size = 3 + passes = 1 + + vibrancy = 0.1696 + } + + drop_shadow = true + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} + +animations { + enabled = true + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # you probably want this +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + new_is_master = true +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = false +} + +misc { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = -1 # Set to 0 to disable the anime mascot wallpapers + mouse_move_enables_dpms=true + key_press_enables_dpms=true +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device:epic-mouse-v1 { + sensitivity = -0.5 +} + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +windowrule = workspace 3, (krita.*)$ +windowrule = workspace 3, (Gimp-2.10.*)$ +windowrule = workspace 3, (xournalpp.*)$ +windowrule = workspace 4, (steam.*)$ +windowrule = workspace 4, (lutris.*)$ +windowrule = workspace 1, (Microsoft-edge.*)$ +windowrule = workspace 2, (nextcloud.*)$ +windowrule = workspace 2, (Element.*)$ +windowrule = workspace 2, (org.telegram.desktop.*)$ +windowrule = workspace 3, (org.kde.kate)$ + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + +#Mouse Binds +bindm=alt,mouse:272,movewindow +bindm=shift,mouse:273,wl-copy -p +bindm=shift,mouse:272,wl-paste -p -t text +bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy +bind = shift,Print, exec, grim - | wl-copy +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, return, exec, kitty +bind = $mainMod, w, exec, microsoft-edge-stable --enable-features=UseOzonePlatform -ozone-platform=wayland --use-cmd-decorder=validating --use-gl=desktop + +bind = $mainMod, f, exec, thunar +bind = $mainMod, r, exec, kitty --class=Ranger --name Ranger /usr/bin/ranger +bind = $mainMod, Q, killactive, +bind = $mainMod, E, exit, +#bind = $mainMod, E, exec, dolphin +bind = $mainMod, V, togglefloating, +bind = $mainMod, space, exec, wofi -s ~/.config/rofi/style.css --show drun +bind = $mainMod, P, pseudo, # dwindle +#bind = $mainMod, J, togglesplit, # dwindle + +# Move Windows like i3 +bind = SUPER SHIFT, H, movewindow, l +bind = SUPER SHIFT, L, movewindow, r +bind = SUPER SHIFT, K, movewindow, u +bind = SUPER SHIFT, J, movewindow, d + +# Move focus with mainMod + arrow keys +bind = $mainMod, h, movefocus, l +bind = $mainMod, l, movefocus, r +bind = $mainMod, k, movefocus, u +bind = $mainMod, j, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +#Brightness +bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%- +bind = , XF86MonBrightnessUp, exec, brightnessctl set 5%+ +# sound +bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + +#MuteMicrophone +#bind = , XF86AudioMute, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ toggle +# eXAMPLE SPECIAL WORKSPACE (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow diff --git a/kitty/kitty.conf b/kitty/kitty.conf new file mode 100644 index 0000000..11da42d --- /dev/null +++ b/kitty/kitty.conf @@ -0,0 +1,6 @@ +font_family Operator Mono Book +bold_font Operator Mono Medium +italic_font Operator Mono Book Italic +bold_italic_font Operator Mono Medium Italic +font_size 11.0 + diff --git a/repos.conf/gentoobinhost.conf b/repos.conf/gentoobinhost.conf new file mode 100644 index 0000000..b5ad2dc --- /dev/null +++ b/repos.conf/gentoobinhost.conf @@ -0,0 +1,7 @@ +# These settings were set by the catalyst build script that automatically +# built this stage. +# Please consider using a local mirror. + +[gentoobinhost] +priority = 9999 +sync-uri = https://mirrors.poster.place/releases/amd64/binpackages/17.1/x86-64-v3 diff --git a/repos.conf/repos.conf b/repos.conf/repos.conf new file mode 100644 index 0000000..40184ca --- /dev/null +++ b/repos.conf/repos.conf @@ -0,0 +1,19 @@ +[DEFAULT] +main-repo = gentoo + +[gentoo] +location = /var/db/repos/gentoo +sync-type = rsync +sync-uri = rsync://192.168.0.146/gentoo-portage +auto-sync = yes +sync-rsync-verify-jobs = 1 +sync-rsync-verify-metamanifest = yes +sync-rsync-verify-max-age = 3 +sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc +sync-openpgp-keyserver = hkps://keys.gentoo.org +sync-openpgp-key-refresh-retry-count = 40 +sync-openpgp-key-refresh-retry-overall-timeout = 1200 +sync-openpgp-key-refresh-retry-delay-exp-base = 2 +sync-openpgp-key-refresh-retry-delay-max = 60 +sync-openpgp-key-refresh-retry-delay-mult = 4 +sync-webrsync-verify-signature = yes diff --git a/sway/catppuccin-mocha b/sway/catppuccin-mocha new file mode 100644 index 0000000..77749f6 --- /dev/null +++ b/sway/catppuccin-mocha @@ -0,0 +1,26 @@ +set $rosewater #f5e0dc +set $flamingo #f2cdcd +set $pink #f5c2e7 +set $mauve #cba6f7 +set $red #f38ba8 +set $maroon #eba0ac +set $peach #fab387 +set $yellow #f9e2af +set $green #a6e3a1 +set $teal #94e2d5 +set $sky #89dceb +set $sapphire #74c7ec +set $blue #89b4fa +set $lavender #b4befe +set $text #cdd6f4 +set $subtext1 #bac2de +set $subtext0 #a6adc8 +set $overlay2 #9399b2 +set $overlay1 #7f849c +set $overlay0 #6c7086 +set $surface2 #585b70 +set $surface1 #45475a +set $surface0 #313244 +set $base #1e1e2e +set $mantle #181825 +set $crust #11111b diff --git a/sway/config b/sway/config new file mode 100644 index 0000000..f5a3ec2 --- /dev/null +++ b/sway/config @@ -0,0 +1,261 @@ +# Default config for sway +# +# Copy this to ~/.config/sway/config and edit it to your liking. +# +# Read `man 5 sway` for a complete reference. +#output eDP-1 scale 1.5 +output DP-1 pos 0 0 res 1920x1080 +output DP-2 pos 1920 0 res 1920x1080 +workspace 1 output DP-2 +workspace 2 output DP-1 +workspace 3 output DP-1 +workspace 4 output DP-2 +workspace 5 output DP-2 + +#Colors +client.focused #9aa5ce #16161d #c0caf5 #9aa5ce #9aa5ce +client.focused_inactive #16161d #16161d #c0caf5 #16161d #16161d +client.unfocused #16161d #16161d #c0caf5 #16161d #16161d + +# Borders +# Also removes all title bars +for_window [class="^.*"] border pixel 3 +default_border pixel 3 +default_floating_border pixel 3 +# Hide borders at the edge of the screen +#hide_edge_borders smart + +#Gaps +gaps outer 10 +gaps inner 10 + + +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +# Your preferred terminal emulator +set $term kitty -o font_size=10 +# Your preferred application launcher +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +set $menu pkill wofi || wofi --conf ~/.config/wofi/config/config --style ~/.config/wofi/src/mocha/style.css --show drun,dmenu,run + +include /etc/sway/config-vars.d/* +include /home/verita84/.config/sway/catppuccin-mocha + +#Sway Idle Debian 13 +#exec swayidle -w \ +# timeout 60 'swaymsg "output * power off"' \ +# resume 'swaymsg "output * power on"' \ +# timeout 1200 'systemctl suspend' + +#Sway Idle Debian 13 +exec swayidle -w \ + timeout 60 'swaymsg "output *" disable' \ + resume 'swaymsg "output *" enable' \ + timeout 1200 'systemctl suspend' + + +### Output configuration +# +# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) +output * bg /home/verita84/Pictures/Backgrounds/debian.jpg fill +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +### Input configuration +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+Shift+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace number 1 + bindsym $mod+2 workspace number 2 + bindsym $mod+3 workspace number 3 + bindsym $mod+4 workspace number 4 + bindsym $mod+5 workspace number 5 + bindsym $mod+6 workspace number 6 + bindsym $mod+7 workspace number 7 + bindsym $mod+8 workspace number 8 + bindsym $mod+9 workspace number 9 + bindsym $mod+0 workspace number 10 + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace number 1 + bindsym $mod+Shift+2 move container to workspace number 2 + bindsym $mod+Shift+3 move container to workspace number 3 + bindsym $mod+Shift+4 move container to workspace number 4 + bindsym $mod+Shift+5 move container to workspace number 5 + bindsym $mod+Shift+6 move container to workspace number 6 + bindsym $mod+Shift+7 move container to workspace number 7 + bindsym $mod+Shift+8 move container to workspace number 8 + bindsym $mod+Shift+9 move container to workspace number 9 + bindsym $mod+Shift+0 move container to workspace number 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + bindsym $mod+t exec thunar + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Screen Shots + bindsym Print exec grim -g "$(slurp -d)" - | wl-copy + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway + +#Window Rules +assign [class="krita"] workspace 4 +assign [app_id="org.keepassxc.KeePassXC"] workspace 2 +assign [app_id="virt-manager"] workspace 5 +assign [class="nyx"] workspace 3 +assign [app_id="org.telegram.desktop"] workspace 2 +assign [app_id="LibreWolf"] workspace 1 +assign [app_id="com.obsproject.Studio"] workspace 4 +assign [class="steam"] workspace 5 + +# Startup +exec nm-applet --indicator & +exec swaymsg "workspace 2; exec /home/verita84/dotfiles/scripts/keepass.sh" +exec swaymsg "workspace 1; exec librewolf-bin" +exec swaymsg "workspace 3; exec $term --class nyx -e nyx" +exec swaymsg "workspace 3; exec $term" +exec swaymsg "workspace 3; exec $term" +exec swaymsg "workspace 2; exec telegram-desktop" + +# Status Bar: +# +# Read `man 5 sway-bar` for more information about this section. + + +bar { + swaybar_command waybar +} + diff --git a/sway/sleep.sh b/sway/sleep.sh new file mode 100755 index 0000000..4e9111f --- /dev/null +++ b/sway/sleep.sh @@ -0,0 +1,5 @@ +#!/bin/bash + swayidle -w \ + timeout 10 'swaymsg "output * power off"' \ + resume 'swaymsg "output * power on"' \ + timeout 1200 'systemctl suspend' diff --git a/sway/startup.sh b/sway/startup.sh new file mode 100755 index 0000000..de30b33 --- /dev/null +++ b/sway/startup.sh @@ -0,0 +1,8 @@ +#!/bin/bash +nm-applet --indicator & +/home/verita84/dotfiles/scripts/keepass.sh& +librewolf& +foot& +foot& +foot -a nyx -e nyx& + diff --git a/systemd/powertop.service b/systemd/powertop.service new file mode 100644 index 0000000..791e796 --- /dev/null +++ b/systemd/powertop.service @@ -0,0 +1,12 @@ +[Unit] +Description=Powertop tunings +Requires=multi-user.target +After=multi-user.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/powertop --auto-tune + +[Install] +WantedBy=multi-user.target diff --git a/waybar/bk/config b/waybar/bk/config new file mode 100644 index 0000000..b854f20 --- /dev/null +++ b/waybar/bk/config @@ -0,0 +1,167 @@ +{ + "layer": "top", // Waybar at top layer + "position": "top", // Waybar position (top|bottom|left|right) + "height": 40, + "width":1900, + "margin": "0 0 0 0", + "spacing":10, + + // Choose the order of the modules + + "modules-left": ["hyprland/workspaces", "wlr/taskbar", "hyprland/window"], + "modules-center": ["custom/network_traffic"], + "modules-right": [ "temperature", "cpu", "memory", "battery", "battery#bat1","pulseaudio", "network", "clock", "tray"], + +// Modules configuration + +"hyprland/workspaces": { + "format": "{icon}", + "on-click": "activate", + "all-outputs": true, + "sort-by-number": true, + "format-icons": { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "10", + "focused": "", + "default": "" + }, + "on-scroll-up": "hyprctl dispatch workspace e+1", + "on-scroll-down": "hyprctl dispatch workspace e-1", + }, + "hyprland/window": { + "format": "{}", +"icon":true, +"icon-size" : 20 + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "wlr/taskbar": { + "format": "{icon}", + "on-click": "activate", + "on-click-right": "fullscreen", + "on-click-middle": "close", + }, + "tray": { + "icon-size": 20, + "spacing": 5 + }, + "clock": { + "tooltip-format": "{:%A, %d.%B %Y }\n{calendar}", + "format": " {:%a %d %b  %I:%M %p}", //12 hour format + //"format": " {:%a %d %b  %H:%M}", //24 hour format + "format-alt": " {:%d/%m/%Y  %H:%M:%S}", + "timezones": [ "America/Denver" ], + //"max-length": 200 + "interval": 1 + }, + "cpu": { + "format": "{icon0}{icon1}{icon2}{icon3} {usage:>2}% ", + "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"], + "on-click": "kitty -e btop" + }, + "memory": { + "format": "🖴 {: >3}%", + "on-click": "kitty -e btop" + }, + "battery": { + "bat": "BAT0", + "interval": 60, + "states": { + "good": 80, + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity: >3}%", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat1": { + "bat": "BAT1", + "interval": 60, + "states": { + "good": 80, + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity: >3}%", + "format-icons": ["", "", "", "", ""] + }, + "network": { + //"interface": "wlp0s20f3", // (Optional) To force the use of this interface "format-wifi": " {essid}", + "format": "⚠Disabled", + "format-wifi": "", + "format-ethernet": "", + "format-linked": "{ifname} (No IP)", + "format-disconnected": "⚠Disabled", + "format-alt": "{ifname}: {ipaddr}/{cidr}", + "family": "ipv4", + "tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}", + "tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}", + //"min-length": 2, + //"max-length": 2, + "on-click": "nm-connection-editor" + }, + "custom/updates": { + "format": "{} {icon}", + "return-type": "json", + "format-icons": { + "has-updates": "󱍷", + "updated": "󰂪", + "interval": 7200, + }, + "exec-if": "which waybar-module-pacman-updates", + "exec": "waybar-module-pacman-updates", + "on-click": "foot -e update" + }, + "custom/power": { + "format":"⏻", + "on-click": "nwgbar", + "tooltip": false, + }, + "custom/network_traffic": { + "exec": "~/.config/waybar/scripts/network_traffic.sh", + "return-type": "json", + "format-ethernet": "{icon} {ifname} ⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", // optional +}, + "pulseaudio": { + "scroll-step": 3, // %, can be a float + "format": "{icon} {volume}% {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + //"format-source": "{volume}% ", + //"format-source-muted": "", + "format-source": "", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol", + "on-click-right": "pactl set-source-mute @DEFAULT_SOURCE@ toggle" + }, + // https://github.com/chubin/wttr.in + "custom/weather": { + "exec": "curl 'https://wttr.in/Essen?format=2'", + "interval": 900, + "on-click": "yad --html --uri='https://wttr.in/Essen' --center --fixed --width=1000 --height=680 --timeout=60 --timeout-indicator=right" + }, + } + diff --git a/waybar/bk/style.css b/waybar/bk/style.css new file mode 100644 index 0000000..51cd58e --- /dev/null +++ b/waybar/bk/style.css @@ -0,0 +1,186 @@ +/* ============================================================================= + * + * Waybar configuration + * + * Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration + * + * =========================================================================== */ + +/* ----------------------------------------------------------------------------- + * Keyframes + * -------------------------------------------------------------------------- */ + + +/* +Polar Night +nord0 #2e3440 +nord1 #3b4252 +nord2 #434c5e +nord3 #4c566a +Snow Storm +nord4 #d8dee9 +nord5 #e5e9f0 +nord6 #eceff4 +Frost +nord7 #8fbcbb +nord8 #88c0d0 +nord9 #81a1c1 +nord10 #5e81ac +Aurora +nord11 #bf616a +nord12 #d08770 +nord13 #ebcb8b +nord14 #a3be8c +nord15 #b48ead +*/ + +/* ----------------------------------------------------------------------------- + * Base styles + * -------------------------------------------------------------------------- */ + +/* Reset all styles */ + +* { + color: #eceff4; + border: 0; + border-radius: 0; + padding: 0 0; + font-family:Symbols Nerd Font Mono; + font-size: 15px; + margin-right: 5px; + margin-left: 5px; + padding-bottom:2px; + } + +window#waybar { + background:rgba (0, 0, 0, 0.5); + border-radius: 20px 20px 20px 20px; +} + +#workspaces button { + padding: 2px 0px; + border-bottom: 2px; + color: #eceff4; + border-color: #d8dee9; + border-style: solid; + margin-top:2px; +} + +#workspaces button.active { + border-color: #81a1c1; +} + +#clock, #battery, #cpu, #memory,#idle_inhibitor, #temperature,#custom-keyboard-layout, #backlight, #network, #pulseaudio, #tray, #window,#custom-launcher,#custom-power,#custom-updates ,#custom-network_traffic,#custom-weather{ + padding: 0 3px; + border-bottom: 2px; + border-style: solid; +} + +/* ----------------------------------------------------------------------------- +* Module styles +* -------------------------------------------------------------------------- */ + + +#clock { +color:#a3be8c; +} + +#backlight { + color: #ebcb8b; +} + +#battery { + color: #d8dee9; +} + +#battery.charging { + color: #81a1c1; +} + +@keyframes blink { + to { + color: #4c566a; + background-color: #eceff4; + } +} + +#battery.critical:not(.charging) { + background: #bf616a; + color: #eceff4; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#cpu { + color:#a3be8c ; +} + +#memory { + color: #d3869b; +} + +#network.disabled { + color:#bf616a; +} + +#network{ + color:#a3be8c; +} + +#network.disconnected { + color: #bf616a; +} + +#pulseaudio { + color: #b48ead; +} + +#pulseaudio.muted { + color: #3b4252; +} + +#temperature { + color: #8fbcbb; +} + +#temperature.critical { + color: #bf616a; +} + +#idle_inhibitor { + color: #ebcb8b; +} + +#tray { +} + +#custom-launcher{ + font-size: 20px; + background-image: url('/home/USER/.config/waybar/launcher.png'); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + border-style: hidden; +} + +#custom-power{ + border-style: hidden; + margin-top:2px; +} + +#window{ + border-style: hidden; + margin-top:1px; +} +#custom-keyboard-layout{ + color:#d08770; +} +#custom-network_traffic{ + color:#d08770; +} + + + diff --git a/waybar/config b/waybar/config new file mode 100644 index 0000000..6efe909 --- /dev/null +++ b/waybar/config @@ -0,0 +1,167 @@ +{ + "layer": "top", // Waybar at top layer + "position": "top", // Waybar position (top|bottom|left|right) + "height": 40, + "width":1915, + "margin": "0 0 0 0", + "spacing":10, + + // Choose the order of the modules + + "modules-left": ["hyprland/workspaces", "wlr/taskbar", "hyprland/window"], + "modules-center": ["custom/network_traffic"], + "modules-right": [ "temperature", "cpu", "memory", "battery", "battery#bat1","pulseaudio", "network", "clock", "tray"], + +// Modules configuration + +"hyprland/workspaces": { + "format": "{icon}", + "on-click": "activate", + "all-outputs": true, + "sort-by-number": true, + "format-icons": { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "10", + "focused": "", + "default": "" + }, + "on-scroll-up": "hyprctl dispatch workspace e+1", + "on-scroll-down": "hyprctl dispatch workspace e-1", + }, + "hyprland/window": { + "format": "{}", +"icon":true, +"icon-size" : 20 + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "wlr/taskbar": { + "format": "{icon}", + "on-click": "activate", + "on-click-right": "fullscreen", + "on-click-middle": "close", + }, + "tray": { + "icon-size": 20, + "spacing": 5 + }, + "clock": { + "tooltip-format": "{:%A, %d.%B %Y }\n{calendar}", + "format": " {:%a %d %b  %I:%M %p}", //12 hour format + //"format": " {:%a %d %b  %H:%M}", //24 hour format + "format-alt": " {:%d/%m/%Y  %H:%M:%S}", + "timezones": [ "America/Denver" ], + //"max-length": 200 + "interval": 1 + }, + "cpu": { + "format": "{icon0}{icon1}{icon2}{icon3} {usage:>2}% ", + "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"], + "on-click": "kitty -e btop" + }, + "memory": { + "format": "🖴 {: >3}%", + "on-click": "kitty -e btop" + }, + "battery": { + "bat": "BAT0", + "interval": 60, + "states": { + "good": 80, + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity: >3}%", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat1": { + "bat": "BAT1", + "interval": 60, + "states": { + "good": 80, + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity: >3}%", + "format-icons": ["", "", "", "", ""] + }, + "network": { + //"interface": "wlp0s20f3", // (Optional) To force the use of this interface "format-wifi": " {essid}", + "format": "⚠Disabled", + "format-wifi": "", + "format-ethernet": "", + "format-linked": "{ifname} (No IP)", + "format-disconnected": "⚠Disabled", + "format-alt": "{ifname}: {ipaddr}/{cidr}", + "family": "ipv4", + "tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}", + "tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}", + //"min-length": 2, + //"max-length": 2, + "on-click": "nm-connection-editor" + }, + "custom/updates": { + "format": "{} {icon}", + "return-type": "json", + "format-icons": { + "has-updates": "󱍷", + "updated": "󰂪", + "interval": 7200, + }, + "exec-if": "which waybar-module-pacman-updates", + "exec": "waybar-module-pacman-updates", + "on-click": "foot -e update" + }, + "custom/power": { + "format":"⏻", + "on-click": "nwgbar", + "tooltip": false, + }, + "custom/network_traffic": { + "exec": "~/.config/waybar/scripts/network_traffic.sh", + "return-type": "json", + "format-ethernet": "{icon} {ifname} ⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", // optional +}, + "pulseaudio": { + "scroll-step": 3, // %, can be a float + "format": "{icon} {volume}% {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + //"format-source": "{volume}% ", + //"format-source-muted": "", + "format-source": "", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol", + "on-click-right": "pactl set-source-mute @DEFAULT_SOURCE@ toggle" + }, + // https://github.com/chubin/wttr.in + "custom/weather": { + "exec": "curl 'https://wttr.in/Essen?format=2'", + "interval": 900, + "on-click": "yad --html --uri='https://wttr.in/Essen' --center --fixed --width=1000 --height=680 --timeout=60 --timeout-indicator=right" + }, + } + diff --git a/waybar/style.css b/waybar/style.css new file mode 100644 index 0000000..c5131fd --- /dev/null +++ b/waybar/style.css @@ -0,0 +1,124 @@ +#waybar { + font-family: "SF Pro Display", Cantarell, Noto Sans, sans-serif; + font-size: 16px; +} + +#window { + padding: 0 10px; +} + +window#waybar { + border: none; + border-radius: 0; + box-shadow: none; + text-shadow: none; + transition-duration: 0s; + color: rgba(217, 216, 216, 1); + background: #1a1b26; +} + +#workspaces { + margin: 0 5px; +} + +#workspaces button { + padding: 0 8px; + color: #565f89; + border: 3px solid rgba(9, 85, 225, 0); + border-radius: 10px; + min-width: 33px; +} + +#workspaces button.visible { + color: #a9b1d6; +} + +#workspaces button.focused { + border-top: 3px solid #7aa2f7; + border-bottom: 3px solid #7aa2f7; +} + +#workspaces button.urgent { + background-color: #a96d1f; + color: white; +} + +#workspaces button:hover { + box-shadow: inherit; + border-color: #bb9af7; + color: #bb9af7; +} + +/* Repeat style here to ensure properties are overwritten as there's no !important and button:hover above resets the colour */ + +#workspaces button.focused { + color: #7aa2f7; +} +#workspaces button.focused:hover { + color: #bb9af7; +} + +#pulseaudio { + /* font-size: 26px; */ +} + +#custom-recorder { + font-size: 18px; + margin: 2px 7px 0px 7px; + color:#ee2e24; +} + +#tray, +#mode, +#battery, +#temperature, +#cpu, +#memory, +#network, +#pulseaudio, +#idle_inhibitor, +#sway-language, +#backlight, +#custom-storage, +#custom-cpu_speed, +#custom-powermenu, +#custom-spotify, +#custom-weather, +#custom-mail, +#custom-media { + margin: 0px 0px 0px 10px; + padding: 0 5px; + /* border-top: 3px solid rgba(217, 216, 216, 0.5); */ +} + +/* #clock { + margin: 0px 16px 0px 10px; + min-width: 140px; +} */ + +#battery.warning { + color: rgba(255, 210, 4, 1); +} + +#battery.critical { + color: rgba(238, 46, 36, 1); +} + +#battery.charging { + color: rgba(217, 216, 216, 1); +} + +#custom-storage.warning { + color: rgba(255, 210, 4, 1); +} + +#custom-storage.critical { + color: rgba(238, 46, 36, 1); +} + +@keyframes blink { + to { + background-color: #ffffff; + color: black; + } +} diff --git a/wofi/.current_wallpaper b/wofi/.current_wallpaper new file mode 120000 index 0000000..d6af5bf --- /dev/null +++ b/wofi/.current_wallpaper @@ -0,0 +1 @@ +/home/verita84/Pictures/wallpapers/Dynamic-Wallpapers/Dark/Fuji-Dark.png \ No newline at end of file diff --git a/wofi/LICENSE b/wofi/LICENSE new file mode 100644 index 0000000..006383b --- /dev/null +++ b/wofi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Catppuccin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/wofi/README.md b/wofi/README.md new file mode 100644 index 0000000..f6786d8 --- /dev/null +++ b/wofi/README.md @@ -0,0 +1,87 @@ +

+ Logo
+ + Catppuccin for Wofi + +

+ +

+ + + +

+ +

+ +

+ +## Previews + +
+🌻 Latte + +
+
+🪴 Frappé + +
+
+🌺 Macchiato + +
+
+🌿 Mocha + +
+ +## Usage + +1. Clone this repository locally to your desired location. Typically something like `~/.config/` +2. Launch Wofi with your desired flavor (e.g. `latte`, `frappe`, `macchiato` or `mocha`). + +```bash +wofi --conf /config --style //style.css + +``` + +I'm personally using a bash script: + +```bash +#!/usr/bin/env bash + +CONFIG="$HOME/.config/hypr/wofi/config/config" +STYLE="$HOME/.config/hypr/wofi/src/mocha/style.css" + +if [[ ! $(pidof wofi) ]]; then + wofi --conf "${CONFIG}" --style "${STYLE}" +else + pkill wofi +fi +``` + +- Q: **_"Which flavor of CSS is supported."_**\ + A: [GTK CSS](https://docs.gtk.org/gtk3/). Note that hsl-colors are not supported. + +- Q: **_"Where can I find CSS targets for theme customization."_**\ + A: On the [Wofi page](https://hg.sr.ht/~scoopta/wofi) and on the [man page](https://man.archlinux.org/man/wofi.7.en). + +- Q: **_"My CSS imports are not working."_**\ + A: Please read the [Wofi configuration](https://man.archlinux.org/man/wofi.5.en#CONFIG_OPTIONS) options. Especially in regards to `style` and `stylesheet`. We avoid import statements for simplicity. + +## 💝 Thanks to + +- [quantumfate](https://github.com/quantumfate) + +  + +

+ +

+ +

+ Copyright © 2021-present Catppuccin Org +

+ +

+ +

diff --git a/wofi/assets/frappe.webp b/wofi/assets/frappe.webp new file mode 100644 index 0000000..9de6678 Binary files /dev/null and b/wofi/assets/frappe.webp differ diff --git a/wofi/assets/latte.webp b/wofi/assets/latte.webp new file mode 100644 index 0000000..50990c6 Binary files /dev/null and b/wofi/assets/latte.webp differ diff --git a/wofi/assets/macchiato.webp b/wofi/assets/macchiato.webp new file mode 100644 index 0000000..279c04d Binary files /dev/null and b/wofi/assets/macchiato.webp differ diff --git a/wofi/assets/mocha.webp b/wofi/assets/mocha.webp new file mode 100644 index 0000000..482b71f Binary files /dev/null and b/wofi/assets/mocha.webp differ diff --git a/wofi/assets/preview.webp b/wofi/assets/preview.webp new file mode 100644 index 0000000..ef75cd7 Binary files /dev/null and b/wofi/assets/preview.webp differ diff --git a/wofi/colors.css b/wofi/colors.css new file mode 100644 index 0000000..0e914e2 --- /dev/null +++ b/wofi/colors.css @@ -0,0 +1,314 @@ +:root { + --ctp-latte-rosewater: #dc8a78; + --ctp-latte-rosewater-rgb: rgb(220, 138, 120); + --ctp-latte-rosewater-hsl: hsl(11, 59%, 67%); + --ctp-frappe-rosewater: #f2d5cf; + --ctp-frappe-rosewater-rgb: rgb(242, 213, 207); + --ctp-frappe-rosewater-hsl: hsl(10, 57%, 88%); + --ctp-macchiato-rosewater: #f4dbd6; + --ctp-macchiato-rosewater-rgb: rgb(244, 219, 214); + --ctp-macchiato-rosewater-hsl: hsl(10, 58%, 90%); + --ctp-mocha-rosewater: #f5e0dc; + --ctp-mocha-rosewater-rgb: rgb(245, 224, 220); + --ctp-mocha-rosewater-hsl: hsl(10, 56%, 91%); + --ctp-latte-flamingo: #dd7878; + --ctp-latte-flamingo-rgb: rgb(221, 120, 120); + --ctp-latte-flamingo-hsl: hsl(0, 60%, 67%); + --ctp-frappe-flamingo: #eebebe; + --ctp-frappe-flamingo-rgb: rgb(238, 190, 190); + --ctp-frappe-flamingo-hsl: hsl(0, 59%, 84%); + --ctp-macchiato-flamingo: #f0c6c6; + --ctp-macchiato-flamingo-rgb: rgb(240, 198, 198); + --ctp-macchiato-flamingo-hsl: hsl(0, 58%, 86%); + --ctp-mocha-flamingo: #f2cdcd; + --ctp-mocha-flamingo-rgb: rgb(242, 205, 205); + --ctp-mocha-flamingo-hsl: hsl(0, 59%, 88%); + --ctp-latte-pink: #ea76cb; + --ctp-latte-pink-rgb: rgb(234, 118, 203); + --ctp-latte-pink-hsl: hsl(316, 73%, 69%); + --ctp-frappe-pink: #f4b8e4; + --ctp-frappe-pink-rgb: rgb(244, 184, 228); + --ctp-frappe-pink-hsl: hsl(316, 73%, 84%); + --ctp-macchiato-pink: #f5bde6; + --ctp-macchiato-pink-rgb: rgb(245, 189, 230); + --ctp-macchiato-pink-hsl: hsl(316, 74%, 85%); + --ctp-mocha-pink: #f5c2e7; + --ctp-mocha-pink-rgb: rgb(245, 194, 231); + --ctp-mocha-pink-hsl: hsl(316, 72%, 86%); + --ctp-latte-mauve: #8839ef; + --ctp-latte-mauve-rgb: rgb(136, 57, 239); + --ctp-latte-mauve-hsl: hsl(266, 85%, 58%); + --ctp-frappe-mauve: #ca9ee6; + --ctp-frappe-mauve-rgb: rgb(202, 158, 230); + --ctp-frappe-mauve-hsl: hsl(277, 59%, 76%); + --ctp-macchiato-mauve: #c6a0f6; + --ctp-macchiato-mauve-rgb: rgb(198, 160, 246); + --ctp-macchiato-mauve-hsl: hsl(267, 83%, 80%); + --ctp-mocha-mauve: #cba6f7; + --ctp-mocha-mauve-rgb: rgb(203, 166, 247); + --ctp-mocha-mauve-hsl: hsl(267, 84%, 81%); + --ctp-latte-red: #d20f39; + --ctp-latte-red-rgb: rgb(210, 15, 57); + --ctp-latte-red-hsl: hsl(347, 87%, 44%); + --ctp-frappe-red: #e78284; + --ctp-frappe-red-rgb: rgb(231, 130, 132); + --ctp-frappe-red-hsl: hsl(359, 68%, 71%); + --ctp-macchiato-red: #ed8796; + --ctp-macchiato-red-rgb: rgb(237, 135, 150); + --ctp-macchiato-red-hsl: hsl(351, 74%, 73%); + --ctp-mocha-red: #f38ba8; + --ctp-mocha-red-rgb: rgb(243, 139, 168); + --ctp-mocha-red-hsl: hsl(343, 81%, 75%); + --ctp-latte-maroon: #e64553; + --ctp-latte-maroon-rgb: rgb(230, 69, 83); + --ctp-latte-maroon-hsl: hsl(355, 76%, 59%); + --ctp-frappe-maroon: #ea999c; + --ctp-frappe-maroon-rgb: rgb(234, 153, 156); + --ctp-frappe-maroon-hsl: hsl(358, 66%, 76%); + --ctp-macchiato-maroon: #ee99a0; + --ctp-macchiato-maroon-rgb: rgb(238, 153, 160); + --ctp-macchiato-maroon-hsl: hsl(355, 71%, 77%); + --ctp-mocha-maroon: #eba0ac; + --ctp-mocha-maroon-rgb: rgb(235, 160, 172); + --ctp-mocha-maroon-hsl: hsl(350, 65%, 77%); + --ctp-latte-peach: #fe640b; + --ctp-latte-peach-rgb: rgb(254, 100, 11); + --ctp-latte-peach-hsl: hsl(22, 99%, 52%); + --ctp-frappe-peach: #ef9f76; + --ctp-frappe-peach-rgb: rgb(239, 159, 118); + --ctp-frappe-peach-hsl: hsl(20, 79%, 70%); + --ctp-macchiato-peach: #f5a97f; + --ctp-macchiato-peach-rgb: rgb(245, 169, 127); + --ctp-macchiato-peach-hsl: hsl(21, 86%, 73%); + --ctp-mocha-peach: #fab387; + --ctp-mocha-peach-rgb: rgb(250, 179, 135); + --ctp-mocha-peach-hsl: hsl(23, 92%, 75%); + --ctp-latte-yellow: #df8e1d; + --ctp-latte-yellow-rgb: rgb(223, 142, 29); + --ctp-latte-yellow-hsl: hsl(35, 77%, 49%); + --ctp-frappe-yellow: #e5c890; + --ctp-frappe-yellow-rgb: rgb(229, 200, 144); + --ctp-frappe-yellow-hsl: hsl(40, 62%, 73%); + --ctp-macchiato-yellow: #eed49f; + --ctp-macchiato-yellow-rgb: rgb(238, 212, 159); + --ctp-macchiato-yellow-hsl: hsl(40, 70%, 78%); + --ctp-mocha-yellow: #f9e2af; + --ctp-mocha-yellow-rgb: rgb(249, 226, 175); + --ctp-mocha-yellow-hsl: hsl(41, 86%, 83%); + --ctp-latte-green: #40a02b; + --ctp-latte-green-rgb: rgb(64, 160, 43); + --ctp-latte-green-hsl: hsl(109, 58%, 40%); + --ctp-frappe-green: #a6d189; + --ctp-frappe-green-rgb: rgb(166, 209, 137); + --ctp-frappe-green-hsl: hsl(96, 44%, 68%); + --ctp-macchiato-green: #a6da95; + --ctp-macchiato-green-rgb: rgb(166, 218, 149); + --ctp-macchiato-green-hsl: hsl(105, 48%, 72%); + --ctp-mocha-green: #a6e3a1; + --ctp-mocha-green-rgb: rgb(166, 227, 161); + --ctp-mocha-green-hsl: hsl(115, 54%, 76%); + --ctp-latte-teal: #179299; + --ctp-latte-teal-rgb: rgb(23, 146, 153); + --ctp-latte-teal-hsl: hsl(183, 74%, 35%); + --ctp-frappe-teal: #81c8be; + --ctp-frappe-teal-rgb: rgb(129, 200, 190); + --ctp-frappe-teal-hsl: hsl(172, 39%, 65%); + --ctp-macchiato-teal: #8bd5ca; + --ctp-macchiato-teal-rgb: rgb(139, 213, 202); + --ctp-macchiato-teal-hsl: hsl(171, 47%, 69%); + --ctp-mocha-teal: #94e2d5; + --ctp-mocha-teal-rgb: rgb(148, 226, 213); + --ctp-mocha-teal-hsl: hsl(170, 57%, 73%); + --ctp-latte-sky: #04a5e5; + --ctp-latte-sky-rgb: rgb(4, 165, 229); + --ctp-latte-sky-hsl: hsl(197, 97%, 46%); + --ctp-frappe-sky: #99d1db; + --ctp-frappe-sky-rgb: rgb(153, 209, 219); + --ctp-frappe-sky-hsl: hsl(189, 48%, 73%); + --ctp-macchiato-sky: #91d7e3; + --ctp-macchiato-sky-rgb: rgb(145, 215, 227); + --ctp-macchiato-sky-hsl: hsl(189, 59%, 73%); + --ctp-mocha-sky: #89dceb; + --ctp-mocha-sky-rgb: rgb(137, 220, 235); + --ctp-mocha-sky-hsl: hsl(189, 71%, 73%); + --ctp-latte-sapphire: #209fb5; + --ctp-latte-sapphire-rgb: rgb(32, 159, 181); + --ctp-latte-sapphire-hsl: hsl(189, 70%, 42%); + --ctp-frappe-sapphire: #85c1dc; + --ctp-frappe-sapphire-rgb: rgb(133, 193, 220); + --ctp-frappe-sapphire-hsl: hsl(199, 55%, 69%); + --ctp-macchiato-sapphire: #7dc4e4; + --ctp-macchiato-sapphire-rgb: rgb(125, 196, 228); + --ctp-macchiato-sapphire-hsl: hsl(199, 66%, 69%); + --ctp-mocha-sapphire: #74c7ec; + --ctp-mocha-sapphire-rgb: rgb(116, 199, 236); + --ctp-mocha-sapphire-hsl: hsl(199, 76%, 69%); + --ctp-latte-blue: #1e66f5; + --ctp-latte-blue-rgb: rgb(30, 102, 245); + --ctp-latte-blue-hsl: hsl(220, 91%, 54%); + --ctp-frappe-blue: #8caaee; + --ctp-frappe-blue-rgb: rgb(140, 170, 238); + --ctp-frappe-blue-hsl: hsl(222, 74%, 74%); + --ctp-macchiato-blue: #8aadf4; + --ctp-macchiato-blue-rgb: rgb(138, 173, 244); + --ctp-macchiato-blue-hsl: hsl(220, 83%, 75%); + --ctp-mocha-blue: #89b4fa; + --ctp-mocha-blue-rgb: rgb(137, 180, 250); + --ctp-mocha-blue-hsl: hsl(217, 92%, 76%); + --ctp-latte-lavender: #7287fd; + --ctp-latte-lavender-rgb: rgb(114, 135, 253); + --ctp-latte-lavender-hsl: hsl(231, 97%, 72%); + --ctp-frappe-lavender: #babbf1; + --ctp-frappe-lavender-rgb: rgb(186, 187, 241); + --ctp-frappe-lavender-hsl: hsl(239, 66%, 84%); + --ctp-macchiato-lavender: #b7bdf8; + --ctp-macchiato-lavender-rgb: rgb(183, 189, 248); + --ctp-macchiato-lavender-hsl: hsl(234, 82%, 85%); + --ctp-mocha-lavender: #b4befe; + --ctp-mocha-lavender-rgb: rgb(180, 190, 254); + --ctp-mocha-lavender-hsl: hsl(232, 97%, 85%); + --ctp-latte-text: #4c4f69; + --ctp-latte-text-rgb: rgb(76, 79, 105); + --ctp-latte-text-hsl: hsl(234, 16%, 35%); + --ctp-frappe-text: #c6d0f5; + --ctp-frappe-text-rgb: rgb(198, 208, 245); + --ctp-frappe-text-hsl: hsl(227, 70%, 87%); + --ctp-macchiato-text: #cad3f5; + --ctp-macchiato-text-rgb: rgb(202, 211, 245); + --ctp-macchiato-text-hsl: hsl(227, 68%, 88%); + --ctp-mocha-text: #cdd6f4; + --ctp-mocha-text-rgb: rgb(205, 214, 244); + --ctp-mocha-text-hsl: hsl(226, 64%, 88%); + --ctp-latte-subtext1: #5c5f77; + --ctp-latte-subtext1-rgb: rgb(92, 95, 119); + --ctp-latte-subtext1-hsl: hsl(233, 13%, 41%); + --ctp-frappe-subtext1: #b5bfe2; + --ctp-frappe-subtext1-rgb: rgb(181, 191, 226); + --ctp-frappe-subtext1-hsl: hsl(227, 44%, 80%); + --ctp-macchiato-subtext1: #b8c0e0; + --ctp-macchiato-subtext1-rgb: rgb(184, 192, 224); + --ctp-macchiato-subtext1-hsl: hsl(228, 39%, 80%); + --ctp-mocha-subtext1: #bac2de; + --ctp-mocha-subtext1-rgb: rgb(186, 194, 222); + --ctp-mocha-subtext1-hsl: hsl(227, 35%, 80%); + --ctp-latte-subtext0: #6c6f85; + --ctp-latte-subtext0-rgb: rgb(108, 111, 133); + --ctp-latte-subtext0-hsl: hsl(233, 10%, 47%); + --ctp-frappe-subtext0: #a5adce; + --ctp-frappe-subtext0-rgb: rgb(165, 173, 206); + --ctp-frappe-subtext0-hsl: hsl(228, 29%, 73%); + --ctp-macchiato-subtext0: #a5adcb; + --ctp-macchiato-subtext0-rgb: rgb(165, 173, 203); + --ctp-macchiato-subtext0-hsl: hsl(227, 27%, 72%); + --ctp-mocha-subtext0: #a6adc8; + --ctp-mocha-subtext0-rgb: rgb(166, 173, 200); + --ctp-mocha-subtext0-hsl: hsl(228, 24%, 72%); + --ctp-latte-overlay2: #7c7f93; + --ctp-latte-overlay2-rgb: rgb(124, 127, 147); + --ctp-latte-overlay2-hsl: hsl(232, 10%, 53%); + --ctp-frappe-overlay2: #949cbb; + --ctp-frappe-overlay2-rgb: rgb(148, 156, 187); + --ctp-frappe-overlay2-hsl: hsl(228, 22%, 66%); + --ctp-macchiato-overlay2: #939ab7; + --ctp-macchiato-overlay2-rgb: rgb(147, 154, 183); + --ctp-macchiato-overlay2-hsl: hsl(228, 20%, 65%); + --ctp-mocha-overlay2: #9399b2; + --ctp-mocha-overlay2-rgb: rgb(147, 153, 178); + --ctp-mocha-overlay2-hsl: hsl(228, 17%, 64%); + --ctp-latte-overlay1: #8c8fa1; + --ctp-latte-overlay1-rgb: rgb(140, 143, 161); + --ctp-latte-overlay1-hsl: hsl(231, 10%, 59%); + --ctp-frappe-overlay1: #838ba7; + --ctp-frappe-overlay1-rgb: rgb(131, 139, 167); + --ctp-frappe-overlay1-hsl: hsl(227, 17%, 58%); + --ctp-macchiato-overlay1: #8087a2; + --ctp-macchiato-overlay1-rgb: rgb(128, 135, 162); + --ctp-macchiato-overlay1-hsl: hsl(228, 15%, 57%); + --ctp-mocha-overlay1: #7f849c; + --ctp-mocha-overlay1-rgb: rgb(127, 132, 156); + --ctp-mocha-overlay1-hsl: hsl(230, 13%, 55%); + --ctp-latte-overlay0: #9ca0b0; + --ctp-latte-overlay0-rgb: rgb(156, 160, 176); + --ctp-latte-overlay0-hsl: hsl(228, 11%, 65%); + --ctp-frappe-overlay0: #737994; + --ctp-frappe-overlay0-rgb: rgb(115, 121, 148); + --ctp-frappe-overlay0-hsl: hsl(229, 13%, 52%); + --ctp-macchiato-overlay0: #6e738d; + --ctp-macchiato-overlay0-rgb: rgb(110, 115, 141); + --ctp-macchiato-overlay0-hsl: hsl(230, 12%, 49%); + --ctp-mocha-overlay0: #6c7086; + --ctp-mocha-overlay0-rgb: rgb(108, 112, 134); + --ctp-mocha-overlay0-hsl: hsl(231, 11%, 47%); + --ctp-latte-surface2: #acb0be; + --ctp-latte-surface2-rgb: rgb(172, 176, 190); + --ctp-latte-surface2-hsl: hsl(227, 12%, 71%); + --ctp-frappe-surface2: #626880; + --ctp-frappe-surface2-rgb: rgb(98, 104, 128); + --ctp-frappe-surface2-hsl: hsl(228, 13%, 44%); + --ctp-macchiato-surface2: #5b6078; + --ctp-macchiato-surface2-rgb: rgb(91, 96, 120); + --ctp-macchiato-surface2-hsl: hsl(230, 14%, 41%); + --ctp-mocha-surface2: #585b70; + --ctp-mocha-surface2-rgb: rgb(88, 91, 112); + --ctp-mocha-surface2-hsl: hsl(233, 12%, 39%); + --ctp-latte-surface1: #bcc0cc; + --ctp-latte-surface1-rgb: rgb(188, 192, 204); + --ctp-latte-surface1-hsl: hsl(225, 14%, 77%); + --ctp-frappe-surface1: #51576d; + --ctp-frappe-surface1-rgb: rgb(81, 87, 109); + --ctp-frappe-surface1-hsl: hsl(227, 15%, 37%); + --ctp-macchiato-surface1: #494d64; + --ctp-macchiato-surface1-rgb: rgb(73, 77, 100); + --ctp-macchiato-surface1-hsl: hsl(231, 16%, 34%); + --ctp-mocha-surface1: #45475a; + --ctp-mocha-surface1-rgb: rgb(69, 71, 90); + --ctp-mocha-surface1-hsl: hsl(234, 13%, 31%); + --ctp-latte-surface0: #ccd0da; + --ctp-latte-surface0-rgb: rgb(204, 208, 218); + --ctp-latte-surface0-hsl: hsl(223, 16%, 83%); + --ctp-frappe-surface0: #414559; + --ctp-frappe-surface0-rgb: rgb(65, 69, 89); + --ctp-frappe-surface0-hsl: hsl(230, 16%, 30%); + --ctp-macchiato-surface0: #363a4f; + --ctp-macchiato-surface0-rgb: rgb(54, 58, 79); + --ctp-macchiato-surface0-hsl: hsl(230, 19%, 26%); + --ctp-mocha-surface0: #313244; + --ctp-mocha-surface0-rgb: rgb(49, 50, 68); + --ctp-mocha-surface0-hsl: hsl(237, 16%, 23%); + --ctp-latte-base: #eff1f5; + --ctp-latte-base-rgb: rgb(239, 241, 245); + --ctp-latte-base-hsl: hsl(220, 23%, 95%); + --ctp-frappe-base: #303446; + --ctp-frappe-base-rgb: rgb(48, 52, 70); + --ctp-frappe-base-hsl: hsl(229, 19%, 23%); + --ctp-macchiato-base: #24273a; + --ctp-macchiato-base-rgb: rgb(36, 39, 58); + --ctp-macchiato-base-hsl: hsl(232, 23%, 18%); + --ctp-mocha-base: #1e1e2e; + --ctp-mocha-base-rgb: rgb(30, 30, 46); + --ctp-mocha-base-hsl: hsl(240, 21%, 15%); + --ctp-latte-mantle: #e6e9ef; + --ctp-latte-mantle-rgb: rgb(230, 233, 239); + --ctp-latte-mantle-hsl: hsl(220, 22%, 92%); + --ctp-frappe-mantle: #292c3c; + --ctp-frappe-mantle-rgb: rgb(41, 44, 60); + --ctp-frappe-mantle-hsl: hsl(231, 19%, 20%); + --ctp-macchiato-mantle: #1e2030; + --ctp-macchiato-mantle-rgb: rgb(30, 32, 48); + --ctp-macchiato-mantle-hsl: hsl(233, 23%, 15%); + --ctp-mocha-mantle: #181825; + --ctp-mocha-mantle-rgb: rgb(24, 24, 37); + --ctp-mocha-mantle-hsl: hsl(240, 21%, 12%); + --ctp-latte-crust: #dce0e8; + --ctp-latte-crust-rgb: rgb(220, 224, 232); + --ctp-latte-crust-hsl: hsl(220, 21%, 89%); + --ctp-frappe-crust: #232634; + --ctp-frappe-crust-rgb: rgb(35, 38, 52); + --ctp-frappe-crust-hsl: hsl(229, 20%, 17%); + --ctp-macchiato-crust: #181926; + --ctp-macchiato-crust-rgb: rgb(24, 25, 38); + --ctp-macchiato-crust-hsl: hsl(236, 23%, 12%); + --ctp-mocha-crust: #11111b; + --ctp-mocha-crust-rgb: rgb(17, 17, 27); + --ctp-mocha-crust-hsl: hsl(240, 23%, 9%); +} diff --git a/wofi/config/config b/wofi/config/config new file mode 100644 index 0000000..eb34489 --- /dev/null +++ b/wofi/config/config @@ -0,0 +1,11 @@ +show=drun +width=750 +height=400 +always_parse_args=true +show_all=false +term=kitty +hide_scroll=true +print_command=true +insensitive=true +prompt= +columns=2 diff --git a/wofi/src/frappe/style.css b/wofi/src/frappe/style.css new file mode 100644 index 0000000..85742ae --- /dev/null +++ b/wofi/src/frappe/style.css @@ -0,0 +1,164 @@ +@define-color rosewater #f2d5cf; +@define-color rosewater-rgb rgb(242, 213, 207); +@define-color flamingo #eebebe; +@define-color flamingo-rgb rgb(238, 190, 190); +@define-color pink #f4b8e4; +@define-color pink-rgb rgb(244, 184, 228); +@define-color mauve #ca9ee6; +@define-color mauve-rgb rgb(202, 158, 230); +@define-color red #e78284; +@define-color red-rgb rgb(231, 130, 132); +@define-color maroon #ea999c; +@define-color maroon-rgb rgb(234, 153, 156); +@define-color peach #ef9f76; +@define-color peach-rgb rgb(239, 159, 118); +@define-color yellow #e5c890; +@define-color yellow-rgb rgb(229, 200, 144); +@define-color green #a6d189; +@define-color green-rgb rgb(166, 209, 137); +@define-color teal #81c8be; +@define-color teal-rgb rgb(129, 200, 190); +@define-color sky #99d1db; +@define-color sky-rgb rgb(153, 209, 219); +@define-color sapphire #85c1dc; +@define-color sapphire-rgb rgb(133, 193, 220); +@define-color blue #8caaee; +@define-color blue-rgb rgb(140, 170, 238); +@define-color lavender #babbf1; +@define-color lavender-rgb rgb(186, 187, 241); +@define-color text #c6d0f5; +@define-color text-rgb rgb(198, 208, 245); +@define-color subtext1 #b5bfe2; +@define-color subtext1-rgb rgb(181, 191, 226); +@define-color subtext0 #a5adce; +@define-color subtext0-rgb rgb(165, 173, 206); +@define-color overlay2 #949cbb; +@define-color overlay2-rgb rgb(148, 156, 187); +@define-color overlay1 #838ba7; +@define-color overlay1-rgb rgb(131, 139, 167); +@define-color overlay0 #737994; +@define-color overlay0-rgb rgb(115, 121, 148); +@define-color surface2 #626880; +@define-color surface2-rgb rgb(98, 104, 128); +@define-color surface1 #51576d; +@define-color surface1-rgb rgb(81, 87, 109); +@define-color surface0 #414559; +@define-color surface0-rgb rgb(65, 69, 89); +@define-color base #303446; +@define-color base-rgb rgb(48, 52, 70); +@define-color mantle #292c3c; +@define-color mantle-rgb rgb(41, 44, 60); +@define-color crust #232634; +@define-color crust-rgb rgb(35, 38, 52); + +* { + font-family: 'Inconsolata Nerd Font', monospace; + font-size: 14px; +} + +/* Window */ +window { + margin: 0px; + padding: 10px; + border: 0.16em solid @lavender; + border-radius: 0.1em; + background-color: @base; + animation: slideIn 0.5s ease-in-out both; +} + +/* Slide In */ +@keyframes slideIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/* Inner Box */ +#inner-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; +} + +/* Fade In */ +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/* Outer Box */ +#outer-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; +} + +/* Scroll */ +#scroll { + margin: 0px; + padding: 10px; + border: none; + background-color: @base; +} + +/* Input */ +#input { + margin: 5px 20px; + padding: 10px; + border: none; + border-radius: 0.1em; + color: @text; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; +} + +#input image { + border: none; + color: @red; +} + +#input * { + outline: 4px solid @red!important; +} + +/* Text */ +#text { + margin: 5px; + border: none; + color: @text; + animation: fadeIn 0.5s ease-in-out both; +} + +#entry { + background-color: @base; +} + +#entry arrow { + border: none; + color: @lavender; +} + +/* Selected Entry */ +#entry:selected { + border: 0.11em solid @lavender; +} + +#entry:selected #text { + color: @mauve; +} + +#entry:drop(active) { + background-color: @lavender!important; +} diff --git a/wofi/src/latte/style.css b/wofi/src/latte/style.css new file mode 100644 index 0000000..dc37414 --- /dev/null +++ b/wofi/src/latte/style.css @@ -0,0 +1,164 @@ +@define-color rosewater #dc8a78; +@define-color rosewater-rgb rgb(220, 138, 120); +@define-color flamingo #dd7878; +@define-color flamingo-rgb rgb(221, 120, 120); +@define-color pink #ea76cb; +@define-color pink-rgb rgb(234, 118, 203); +@define-color mauve #8839ef; +@define-color mauve-rgb rgb(136, 57, 239); +@define-color red #d20f39; +@define-color red-rgb rgb(210, 15, 57); +@define-color maroon #e64553; +@define-color maroon-rgb rgb(230, 69, 83); +@define-color peach #fe640b; +@define-color peach-rgb rgb(254, 100, 11); +@define-color yellow #df8e1d; +@define-color yellow-rgb rgb(223, 142, 29); +@define-color green #40a02b; +@define-color green-rgb rgb(64, 160, 43); +@define-color teal #179299; +@define-color teal-rgb rgb(23, 146, 153); +@define-color sky #04a5e5; +@define-color sky-rgb rgb(4, 165, 229); +@define-color sapphire #209fb5; +@define-color sapphire-rgb rgb(32, 159, 181); +@define-color blue #1e66f5; +@define-color blue-rgb rgb(30, 102, 245); +@define-color lavender #7287fd; +@define-color lavender-rgb rgb(114, 135, 253); +@define-color text #4c4f69; +@define-color text-rgb rgb(76, 79, 105); +@define-color subtext1 #5c5f77; +@define-color subtext1-rgb rgb(92, 95, 119); +@define-color subtext0 #6c6f85; +@define-color subtext0-rgb rgb(108, 111, 133); +@define-color overlay2 #7c7f93; +@define-color overlay2-rgb rgb(124, 127, 147); +@define-color overlay1 #8c8fa1; +@define-color overlay1-rgb rgb(140, 143, 161); +@define-color overlay0 #9ca0b0; +@define-color overlay0-rgb rgb(156, 160, 176); +@define-color surface2 #acb0be; +@define-color surface2-rgb rgb(172, 176, 190); +@define-color surface1 #bcc0cc; +@define-color surface1-rgb rgb(188, 192, 204); +@define-color surface0 #ccd0da; +@define-color surface0-rgb rgb(204, 208, 218); +@define-color base #eff1f5; +@define-color base-rgb rgb(239, 241, 245); +@define-color mantle #e6e9ef; +@define-color mantle-rgb rgb(230, 233, 239); +@define-color crust #dce0e8; +@define-color crust-rgb rgb(220, 224, 232); + +* { + font-family: 'Inconsolata Nerd Font', monospace; + font-size: 14px; +} + +/* Window */ +window { + margin: 0px; + padding: 10px; + border: 0.16em solid @lavender; + border-radius: 0.1em; + background-color: @base; + animation: slideIn 0.5s ease-in-out both; +} + +/* Slide In */ +@keyframes slideIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/* Inner Box */ +#inner-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; +} + +/* Fade In */ +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/* Outer Box */ +#outer-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; +} + +/* Scroll */ +#scroll { + margin: 0px; + padding: 10px; + border: none; + background-color: @base; +} + +/* Input */ +#input { + margin: 5px 20px; + padding: 10px; + border: none; + border-radius: 0.1em; + color: @text; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; +} + +#input image { + border: none; + color: @red; +} + +#input * { + outline: 4px solid @red!important; +} + +/* Text */ +#text { + margin: 5px; + border: none; + color: @text; + animation: fadeIn 0.5s ease-in-out both; +} + +#entry { + background-color: @base; +} + +#entry arrow { + border: none; + color: @lavender; +} + +/* Selected Entry */ +#entry:selected { + border: 0.11em solid @lavender; +} + +#entry:selected #text { + color: @mauve; +} + +#entry:drop(active) { + background-color: @lavender!important; +} diff --git a/wofi/src/macchiato/style.css b/wofi/src/macchiato/style.css new file mode 100644 index 0000000..3aa9a07 --- /dev/null +++ b/wofi/src/macchiato/style.css @@ -0,0 +1,164 @@ +@define-color rosewater #f4dbd6; +@define-color rosewater-rgb rgb(244, 219, 214); +@define-color flamingo #f0c6c6; +@define-color flamingo-rgb rgb(240, 198, 198); +@define-color pink #f5bde6; +@define-color pink-rgb rgb(245, 189, 230); +@define-color mauve #c6a0f6; +@define-color mauve-rgb rgb(198, 160, 246); +@define-color red #ed8796; +@define-color red-rgb rgb(237, 135, 150); +@define-color maroon #ee99a0; +@define-color maroon-rgb rgb(238, 153, 160); +@define-color peach #f5a97f; +@define-color peach-rgb rgb(245, 169, 127); +@define-color yellow #eed49f; +@define-color yellow-rgb rgb(238, 212, 159); +@define-color green #a6da95; +@define-color green-rgb rgb(166, 218, 149); +@define-color teal #8bd5ca; +@define-color teal-rgb rgb(139, 213, 202); +@define-color sky #91d7e3; +@define-color sky-rgb rgb(145, 215, 227); +@define-color sapphire #7dc4e4; +@define-color sapphire-rgb rgb(125, 196, 228); +@define-color blue #8aadf4; +@define-color blue-rgb rgb(138, 173, 244); +@define-color lavender #b7bdf8; +@define-color lavender-rgb rgb(183, 189, 248); +@define-color text #cad3f5; +@define-color text-rgb rgb(202, 211, 245); +@define-color subtext1 #b8c0e0; +@define-color subtext1-rgb rgb(184, 192, 224); +@define-color subtext0 #a5adcb; +@define-color subtext0-rgb rgb(165, 173, 203); +@define-color overlay2 #939ab7; +@define-color overlay2-rgb rgb(147, 154, 183); +@define-color overlay1 #8087a2; +@define-color overlay1-rgb rgb(128, 135, 162); +@define-color overlay0 #6e738d; +@define-color overlay0-rgb rgb(110, 115, 141); +@define-color surface2 #5b6078; +@define-color surface2-rgb rgb(91, 96, 120); +@define-color surface1 #494d64; +@define-color surface1-rgb rgb(73, 77, 100); +@define-color surface0 #363a4f; +@define-color surface0-rgb rgb(54, 58, 79); +@define-color base #24273a; +@define-color base-rgb rgb(36, 39, 58); +@define-color mantle #1e2030; +@define-color mantle-rgb rgb(30, 32, 48); +@define-color crust #181926; +@define-color crust-rgb rgb(24, 25, 38); + +* { + font-family: 'Inconsolata Nerd Font', monospace; + font-size: 14px; +} + +/* Window */ +window { + margin: 0px; + padding: 10px; + border: 0.16em solid @lavender; + border-radius: 0.1em; + background-color: @base; + animation: slideIn 0.5s ease-in-out both; +} + +/* Slide In */ +@keyframes slideIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/* Inner Box */ +#inner-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; +} + +/* Fade In */ +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/* Outer Box */ +#outer-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; +} + +/* Scroll */ +#scroll { + margin: 0px; + padding: 10px; + border: none; + background-color: @base; +} + +/* Input */ +#input { + margin: 5px 20px; + padding: 10px; + border: none; + border-radius: 0.1em; + color: @text; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; +} + +#input image { + border: none; + color: @red; +} + +#input * { + outline: 4px solid @red!important; +} + +/* Text */ +#text { + margin: 5px; + border: none; + color: @text; + animation: fadeIn 0.5s ease-in-out both; +} + +#entry { + background-color: @base; +} + +#entry arrow { + border: none; + color: @lavender; +} + +/* Selected Entry */ +#entry:selected { + border: 0.11em solid @lavender; +} + +#entry:selected #text { + color: @mauve; +} + +#entry:drop(active) { + background-color: @lavender!important; +} diff --git a/wofi/src/mocha/style.css b/wofi/src/mocha/style.css new file mode 100644 index 0000000..e8c0124 --- /dev/null +++ b/wofi/src/mocha/style.css @@ -0,0 +1,164 @@ +@define-color rosewater #f5e0dc; +@define-color rosewater-rgb rgb(245, 224, 220); +@define-color flamingo #f2cdcd; +@define-color flamingo-rgb rgb(242, 205, 205); +@define-color pink #f5c2e7; +@define-color pink-rgb rgb(245, 194, 231); +@define-color mauve #cba6f7; +@define-color mauve-rgb rgb(203, 166, 247); +@define-color red #f38ba8; +@define-color red-rgb rgb(243, 139, 168); +@define-color maroon #eba0ac; +@define-color maroon-rgb rgb(235, 160, 172); +@define-color peach #fab387; +@define-color peach-rgb rgb(250, 179, 135); +@define-color yellow #f9e2af; +@define-color yellow-rgb rgb(249, 226, 175); +@define-color green #a6e3a1; +@define-color green-rgb rgb(166, 227, 161); +@define-color teal #94e2d5; +@define-color teal-rgb rgb(148, 226, 213); +@define-color sky #89dceb; +@define-color sky-rgb rgb(137, 220, 235); +@define-color sapphire #74c7ec; +@define-color sapphire-rgb rgb(116, 199, 236); +@define-color blue #89b4fa; +@define-color blue-rgb rgb(137, 180, 250); +@define-color lavender #b4befe; +@define-color lavender-rgb rgb(180, 190, 254); +@define-color text #cdd6f4; +@define-color text-rgb rgb(205, 214, 244); +@define-color subtext1 #bac2de; +@define-color subtext1-rgb rgb(186, 194, 222); +@define-color subtext0 #a6adc8; +@define-color subtext0-rgb rgb(166, 173, 200); +@define-color overlay2 #9399b2; +@define-color overlay2-rgb rgb(147, 153, 178); +@define-color overlay1 #7f849c; +@define-color overlay1-rgb rgb(127, 132, 156); +@define-color overlay0 #6c7086; +@define-color overlay0-rgb rgb(108, 112, 134); +@define-color surface2 #585b70; +@define-color surface2-rgb rgb(88, 91, 112); +@define-color surface1 #45475a; +@define-color surface1-rgb rgb(69, 71, 90); +@define-color surface0 #313244; +@define-color surface0-rgb rgb(49, 50, 68); +@define-color base #1e1e2e; +@define-color base-rgb rgb(30, 30, 46); +@define-color mantle #181825; +@define-color mantle-rgb rgb(24, 24, 37); +@define-color crust #11111b; +@define-color crust-rgb rgb(17, 17, 27); + +* { + font-family: 'Inconsolata Nerd Font', monospace; + font-size: 14px; +} + +/* Window */ +window { + margin: 0px; + padding: 10px; + border: 0.16em solid @lavender; + border-radius: 0.1em; + background-color: @base; + animation: slideIn 0.5s ease-in-out both; +} + +/* Slide In */ +@keyframes slideIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/* Inner Box */ +#inner-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; +} + +/* Fade In */ +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/* Outer Box */ +#outer-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; +} + +/* Scroll */ +#scroll { + margin: 0px; + padding: 10px; + border: none; + background-color: @base; +} + +/* Input */ +#input { + margin: 5px 20px; + padding: 10px; + border: none; + border-radius: 0.1em; + color: @text; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; +} + +#input image { + border: none; + color: @red; +} + +#input * { + outline: 4px solid @red!important; +} + +/* Text */ +#text { + margin: 5px; + border: none; + color: @text; + animation: fadeIn 0.5s ease-in-out both; +} + +#entry { + background-color: @base; +} + +#entry arrow { + border: none; + color: @lavender; +} + +/* Selected Entry */ +#entry:selected { + border: 0.11em solid @lavender; +} + +#entry:selected #text { + color: @mauve; +} + +#entry:drop(active) { + background-color: @lavender!important; +}