From 5bfcc65f0ca20f048e626ae41d007df02bfac00a Mon Sep 17 00:00:00 2001 From: "Eshan Roy (Eshanized)" Date: Sat, 23 Mar 2024 05:24:24 +0530 Subject: [PATCH] no changes has been made to this file --- .gitignore | 3 + usr/bin/sofi | 1 + usr/bin/sofirem | 51 + usr/share/applications/sofirem.desktop | 12 + .../icons/hicolor/scalable/apps/sofirem.svg | 69 + .../actions/org.arcolinux.sofirem.policy | 104 + usr/share/sofirem/Functions.py | 2789 +++++++++++++++++ .../sofirem/Functions_Ref_DO_NOT_MODIFY.py | 728 +++++ usr/share/sofirem/Package.py | 19 + usr/share/sofirem/Settings.py | 132 + .../cache/a-candy-beauty-icon-theme-git | 1 + usr/share/sofirem/cache/abiword | 1 + usr/share/sofirem/cache/acpilight | 1 + usr/share/sofirem/cache/adapta-gtk-theme | 1 + .../sofirem/cache/adobe-source-code-pro-fonts | 1 + .../sofirem/cache/adobe-source-sans-fonts | 1 + .../sofirem/cache/adobe-source-serif-fonts | 1 + usr/share/sofirem/cache/airdroid-nativefier | 1 + usr/share/sofirem/cache/aisleriot | 1 + usr/share/sofirem/cache/alacritty | 1 + usr/share/sofirem/cache/alacritty-themes | 1 + usr/share/sofirem/cache/albert | 1 + usr/share/sofirem/cache/alsi | 1 + usr/share/sofirem/cache/amberol | 1 + usr/share/sofirem/cache/amd-ucode | 1 + usr/share/sofirem/cache/android-file-transfer | 1 + .../sofirem/cache/android-sdk-platform-tools | 1 + usr/share/sofirem/cache/android-tools | 1 + usr/share/sofirem/cache/anydesk-bin | 1 + usr/share/sofirem/cache/appimagelauncher | 1 + usr/share/sofirem/cache/arc-darkest-theme-git | 1 + usr/share/sofirem/cache/arc-icon-theme | 1 + usr/share/sofirem/cache/arc-x-icons-theme | 1 + usr/share/sofirem/cache/archey3 | 1 + .../cache/archlinux-login-backgrounds-git | 1 + usr/share/sofirem/cache/archlinux-logout-git | 1 + .../sofirem/cache/archlinux-tweak-tool-git | 1 + .../sofirem/cache/arcolinux-arc-aqua-git | 1 + .../cache/arcolinux-arc-archlinux-blue-git | 1 + .../cache/arcolinux-arc-arcolinux-blue-git | 1 + .../sofirem/cache/arcolinux-arc-azul-git | 1 + .../cache/arcolinux-arc-azure-dodger-blue-git | 1 + .../sofirem/cache/arcolinux-arc-azure-git | 1 + .../sofirem/cache/arcolinux-arc-blood-git | 1 + .../sofirem/cache/arcolinux-arc-blue-sky-git | 1 + .../cache/arcolinux-arc-botticelli-git | 1 + .../cache/arcolinux-arc-bright-lilac-git | 1 + .../cache/arcolinux-arc-bright-lime-green-git | 1 + .../sofirem/cache/arcolinux-arc-carnation-git | 1 + .../cache/arcolinux-arc-carolina-blue-git | 1 + .../cache/arcolinux-arc-casablanca-git | 1 + .../sofirem/cache/arcolinux-arc-crimson-git | 1 + .../sofirem/cache/arcolinux-arc-dawn-git | 1 + .../cache/arcolinux-arc-dodger-blue-git | 1 + .../sofirem/cache/arcolinux-arc-emerald-git | 1 + .../sofirem/cache/arcolinux-arc-evopop-git | 1 + .../sofirem/cache/arcolinux-arc-fern-git | 1 + .../sofirem/cache/arcolinux-arc-fire-git | 1 + .../sofirem/cache/arcolinux-arc-froly-git | 1 + .../sofirem/cache/arcolinux-arc-havelock-git | 1 + .../sofirem/cache/arcolinux-arc-hibiscus-git | 1 + usr/share/sofirem/cache/arcolinux-arc-kde | 1 + .../cache/arcolinux-arc-light-blue-grey-git | 1 + .../cache/arcolinux-arc-light-blue-surfn-git | 1 + .../cache/arcolinux-arc-light-salmon-git | 1 + .../sofirem/cache/arcolinux-arc-mandy-git | 1 + .../sofirem/cache/arcolinux-arc-mantis-git | 1 + .../cache/arcolinux-arc-medium-blue-git | 1 + .../sofirem/cache/arcolinux-arc-niagara-git | 1 + .../sofirem/cache/arcolinux-arc-nice-blue-git | 1 + .../sofirem/cache/arcolinux-arc-numix-git | 1 + .../sofirem/cache/arcolinux-arc-orchid-git | 1 + .../sofirem/cache/arcolinux-arc-pale-grey-git | 1 + .../sofirem/cache/arcolinux-arc-paper-git | 1 + .../sofirem/cache/arcolinux-arc-pink-git | 1 + .../sofirem/cache/arcolinux-arc-polo-git | 1 + .../sofirem/cache/arcolinux-arc-punch-git | 1 + .../cache/arcolinux-arc-red-orange-git | 1 + .../cache/arcolinux-arc-rusty-orange-git | 1 + .../sofirem/cache/arcolinux-arc-sky-blue-git | 1 + .../cache/arcolinux-arc-slate-grey-git | 1 + .../sofirem/cache/arcolinux-arc-smoke-git | 1 + .../sofirem/cache/arcolinux-arc-soft-blue-git | 1 + .../sofirem/cache/arcolinux-arc-tacao-git | 1 + .../sofirem/cache/arcolinux-arc-tangerine-git | 1 + .../arcolinux-arc-themes-2021-creative-git | 1 + .../cache/arcolinux-arc-themes-2021-git | 1 + .../cache/arcolinux-arc-themes-2021-sky-git | 1 + .../sofirem/cache/arcolinux-arc-themes-git | 1 + .../sofirem/cache/arcolinux-arc-tory-git | 1 + .../sofirem/cache/arcolinux-arc-warm-pink-git | 1 + usr/share/sofirem/cache/arcolinux-awesome-git | 1 + usr/share/sofirem/cache/arcolinux-berry-git | 1 + usr/share/sofirem/cache/arcolinux-bspwm-git | 1 + .../sofirem/cache/arcolinux-budgie-dconf-git | 1 + usr/share/sofirem/cache/arcolinux-budgie-git | 1 + usr/share/sofirem/cache/arcolinux-chadwm-git | 1 + .../cache/arcolinux-cinnamon-dconf-git | 1 + .../sofirem/cache/arcolinux-cinnamon-git | 1 + usr/share/sofirem/cache/arcolinux-common-git | 1 + .../cache/arcolinux-config-all-desktops-git | 1 + .../sofirem/cache/arcolinux-config-plasma-git | 1 + .../cache/arcolinux-conky-collection-git | 1 + .../arcolinux-conky-collection-plasma-git | 1 + .../cache/arcolinux-cutefish-dconf-git | 1 + .../sofirem/cache/arcolinux-cutefish-git | 1 + usr/share/sofirem/cache/arcolinux-cwm-git | 1 + .../cache/arcolinux-dconf-all-desktops-git | 1 + .../sofirem/cache/arcolinux-deepin-dconf-git | 1 + usr/share/sofirem/cache/arcolinux-deepin-git | 1 + .../cache/arcolinux-desktop-trasher-git | 1 + usr/share/sofirem/cache/arcolinux-docs-git | 1 + usr/share/sofirem/cache/arcolinux-dusk-git | 1 + usr/share/sofirem/cache/arcolinux-dwm-git | 1 + .../sofirem/cache/arcolinux-dwm-slstatus-git | 1 + usr/share/sofirem/cache/arcolinux-dwm-st-git | 1 + usr/share/sofirem/cache/arcolinux-fvwm3-git | 1 + usr/share/sofirem/cache/arcolinux-geany-git | 1 + .../sofirem/cache/arcolinux-gnome-dconf-git | 1 + usr/share/sofirem/cache/arcolinux-gnome-git | 1 + .../arcolinux-gtk3-arcolinux-candy-beauty-git | 1 + .../cache/arcolinux-gtk3-sardi-arc-git | 1 + .../cache/arcolinux-gtk3-surfn-arc-breeze-git | 1 + .../cache/arcolinux-gtk3-surfn-arc-git | 1 + .../cache/arcolinux-guake-autostart-git | 1 + .../sofirem/cache/arcolinux-herbstluftwm-git | 1 + usr/share/sofirem/cache/arcolinux-hypr-git | 1 + .../sofirem/cache/arcolinux-hyprland-git | 1 + .../cache/arcolinux-hyprland-profile-git | 1 + usr/share/sofirem/cache/arcolinux-i3wm-git | 1 + usr/share/sofirem/cache/arcolinux-icewm-git | 1 + usr/share/sofirem/cache/arcolinux-jwm-git | 1 + usr/share/sofirem/cache/arcolinux-leftwm-git | 1 + .../sofirem/cache/arcolinux-local-xfce4-git | 1 + usr/share/sofirem/cache/arcolinux-lxqt-git | 1 + .../sofirem/cache/arcolinux-mate-dconf-git | 1 + usr/share/sofirem/cache/arcolinux-mate-git | 1 + .../sofirem/cache/arcolinux-meta-arc-theme | 1 + .../sofirem/cache/arcolinux-meta-asian-fonts | 1 + usr/share/sofirem/cache/arcolinux-meta-fun | 1 + usr/share/sofirem/cache/arcolinux-meta-log | 1 + usr/share/sofirem/cache/arcolinux-meta-samba | 1 + .../sofirem/cache/arcolinux-meta-sddm-themes | 1 + .../sofirem/cache/arcolinux-meta-steam-amd | 1 + .../sofirem/cache/arcolinux-meta-steam-intel | 1 + .../sofirem/cache/arcolinux-meta-steam-nvidia | 1 + .../sofirem/cache/arcolinux-meta-utilities | 1 + usr/share/sofirem/cache/arcolinux-meta-wine | 1 + .../sofirem/cache/arcolinux-mint-y-icons-git | 1 + .../sofirem/cache/arcolinux-nitrogen-git | 1 + .../cache/arcolinux-obmenu-generator-git | 1 + usr/share/sofirem/cache/arcolinux-openbox-git | 1 + .../cache/arcolinux-openbox-themes-git | 1 + .../sofirem/cache/arcolinux-paleofetch-git | 1 + usr/share/sofirem/cache/arcolinux-pamac-all | 1 + .../sofirem/cache/arcolinux-pipemenus-git | 1 + usr/share/sofirem/cache/arcolinux-plank-git | 1 + .../sofirem/cache/arcolinux-plank-themes-git | 1 + .../sofirem/cache/arcolinux-plasma-dconf-git | 1 + usr/share/sofirem/cache/arcolinux-plasma-git | 1 + .../cache/arcolinux-plasma-keybindings-git | 1 + .../cache/arcolinux-plasma-kservices-git | 1 + .../cache/arcolinux-plasma-servicemenus-git | 1 + ...nux-plasma-theme-candy-beauty-arc-dark-git | 1 + ...linux-plasma-theme-candy-beauty-nordic-git | 1 + .../arcolinux-plasma-theme-surfn-arc-dark-git | 1 + .../arcolinux-plasma-theme-surfn-nordic-git | 1 + usr/share/sofirem/cache/arcolinux-polybar-git | 1 + .../sofirem/cache/arcolinux-powermenu-git | 1 + usr/share/sofirem/cache/arcolinux-qt5-git | 1 + usr/share/sofirem/cache/arcolinux-qtile-git | 1 + .../cache/arcolinux-reflector-simple-git | 1 + usr/share/sofirem/cache/arcolinux-rofi-git | 1 + .../sofirem/cache/arcolinux-rofi-themes-git | 1 + usr/share/sofirem/cache/arcolinux-root-git | 1 + .../cache/arcolinux-sddm-backgrounds-git | 1 + .../sofirem/cache/arcolinux-sddm-breeze-git | 1 + .../cache/arcolinux-sddm-breeze-minimal-git | 1 + .../sofirem/cache/arcolinux-sddm-chili-git | 1 + .../sofirem/cache/arcolinux-sddm-fralonra-git | 1 + .../cache/arcolinux-sddm-futuristic-git | 1 + .../sofirem/cache/arcolinux-sddm-materia-git | 1 + .../sofirem/cache/arcolinux-sddm-redrock-git | 1 + .../cache/arcolinux-sddm-simplicity-git | 1 + .../sofirem/cache/arcolinux-sddm-slice-git | 1 + .../cache/arcolinux-sddm-sugar-candy-git | 1 + .../cache/arcolinux-sddm-urbanlifestyle-git | 1 + .../sofirem/cache/arcolinux-spectrwm-git | 1 + usr/share/sofirem/cache/arcolinux-sway-git | 1 + .../sofirem/cache/arcolinux-sway-profile-git | 1 + .../sofirem/cache/arcolinux-sweet-mars-git | 1 + usr/share/sofirem/cache/arcolinux-teamviewer | 1 + usr/share/sofirem/cache/arcolinux-tellme-git | 1 + usr/share/sofirem/cache/arcolinux-tint2-git | 1 + .../sofirem/cache/arcolinux-tint2-themes-git | 1 + .../sofirem/cache/arcolinux-ukui-dconf-git | 1 + usr/share/sofirem/cache/arcolinux-ukui-git | 1 + .../sofirem/cache/arcolinux-volumeicon-git | 1 + .../cache/arcolinux-wallpapers-candy-git | 1 + .../cache/arcolinux-wallpapers-dual-git | 1 + .../sofirem/cache/arcolinux-wallpapers-git | 1 + .../cache/arcolinux-wayland-profile-git | 1 + .../sofirem/cache/arcolinux-wmderland-git | 1 + usr/share/sofirem/cache/arcolinux-worm-git | 1 + usr/share/sofirem/cache/arcolinux-xfce-git | 1 + usr/share/sofirem/cache/arcolinux-xlunch-git | 1 + .../cache/arcolinux-xmonad-polybar-git | 1 + usr/share/sofirem/cache/arcolinux-zsh-git | 1 + usr/share/sofirem/cache/ardour | 1 + usr/share/sofirem/cache/arduino | 1 + usr/share/sofirem/cache/aria2 | 1 + usr/share/sofirem/cache/ark | 1 + usr/share/sofirem/cache/armagetronad | 1 + usr/share/sofirem/cache/asciiquarium | 1 + usr/share/sofirem/cache/astromenace | 1 + usr/share/sofirem/cache/atom | 1 + usr/share/sofirem/cache/atril | 1 + usr/share/sofirem/cache/audacious | 1 + usr/share/sofirem/cache/audacious-plugins | 1 + usr/share/sofirem/cache/audacity | 1 + usr/share/sofirem/cache/aura-bin | 1 + usr/share/sofirem/cache/auto-cpufreq | 1 + usr/share/sofirem/cache/autorandr | 1 + usr/share/sofirem/cache/autotiling | 1 + usr/share/sofirem/cache/awesome | 1 + .../sofirem/cache/awesome-terminal-fonts | 1 + usr/share/sofirem/cache/ayu-theme | 1 + usr/share/sofirem/cache/baobab | 1 + usr/share/sofirem/cache/base16-alacritty-git | 1 + usr/share/sofirem/cache/bash-pipes | 1 + usr/share/sofirem/cache/bauh | 1 + usr/share/sofirem/cache/berry-dev-git | 1 + usr/share/sofirem/cache/betterlockscreen | 1 + usr/share/sofirem/cache/betterlockscreen-git | 1 + .../sofirem/cache/bibata-cursor-theme-bin | 1 + .../sofirem/cache/bibata-cursor-translucent | 1 + .../sofirem/cache/bibata-extra-cursor-theme | 1 + .../sofirem/cache/bibata-rainbow-cursor-theme | 1 + usr/share/sofirem/cache/bitwarden | 1 + usr/share/sofirem/cache/bleachbit | 1 + usr/share/sofirem/cache/blender | 1 + usr/share/sofirem/cache/blender-benchmark | 1 + usr/share/sofirem/cache/bluefish | 1 + usr/share/sofirem/cache/bottom | 1 + usr/share/sofirem/cache/boxes | 1 + usr/share/sofirem/cache/bpytop | 1 + usr/share/sofirem/cache/brackets-bin | 1 + usr/share/sofirem/cache/brasero | 1 + usr/share/sofirem/cache/brave-bin | 1 + usr/share/sofirem/cache/breeze | 1 + usr/share/sofirem/cache/breeze-icons | 1 + usr/share/sofirem/cache/brightnessctl | 1 + usr/share/sofirem/cache/brillo | 1 + usr/share/sofirem/cache/brltty | 1 + usr/share/sofirem/cache/bspwm | 1 + usr/share/sofirem/cache/btop | 1 + usr/share/sofirem/cache/btrbk | 1 + usr/share/sofirem/cache/btrfs-assistant | 1 + usr/share/sofirem/cache/btrfsmaintenance | 1 + usr/share/sofirem/cache/budgie-desktop | 1 + usr/share/sofirem/cache/budgie-extras | 1 + usr/share/sofirem/cache/bumblebee | 1 + usr/share/sofirem/cache/bumblebee-status | 1 + usr/share/sofirem/cache/bumblebee-status-git | 1 + usr/share/sofirem/cache/byte | 1 + usr/share/sofirem/cache/c-lolcat | 1 + usr/share/sofirem/cache/caffeine | 1 + usr/share/sofirem/cache/caffeine-ng | 1 + usr/share/sofirem/cache/caja | 1 + usr/share/sofirem/cache/calibre | 1 + usr/share/sofirem/cache/calligra | 1 + usr/share/sofirem/cache/calligra-plan | 1 + usr/share/sofirem/cache/capitaine-cursors | 1 + usr/share/sofirem/cache/catfish | 1 + .../sofirem/cache/catppuccin-cursors-git | 1 + usr/share/sofirem/cache/cava | 1 + usr/share/sofirem/cache/celluloid | 1 + usr/share/sofirem/cache/cheese | 1 + usr/share/sofirem/cache/chrome-gnome-shell | 1 + usr/share/sofirem/cache/chromium | 1 + usr/share/sofirem/cache/chromium-bsu | 1 + usr/share/sofirem/cache/chromium-widevine | 1 + usr/share/sofirem/cache/cinnamon | 1 + usr/share/sofirem/cache/cinnamon-translations | 1 + usr/share/sofirem/cache/ckb-next-git | 1 + usr/share/sofirem/cache/clapper | 1 + usr/share/sofirem/cache/clementine | 1 + usr/share/sofirem/cache/cmatrix-git | 1 + usr/share/sofirem/cache/code | 1 + usr/share/sofirem/cache/codeblocks | 1 + usr/share/sofirem/cache/conky-lua-archers | 1 + usr/share/sofirem/cache/cool-retro-term | 1 + usr/share/sofirem/cache/corrections/acpilight | 1 + usr/share/sofirem/cache/corrections/aisleriot | 1 + .../cache/corrections/arc-x-icons-theme | 1 + .../arcolinux-conky-collection-plasma-git | 1 + .../corrections/arcolinux-desktop-trasher-git | 1 + .../cache/corrections/arcolinux-pamac-all | 1 + .../corrections/arcolinux-sddm-simplicity-git | 1 + usr/share/sofirem/cache/corrections/aura-bin | 1 + usr/share/sofirem/cache/corrections/bauh | 1 + .../cache/corrections/blender-benchmark | 1 + usr/share/sofirem/cache/corrections/bpytop | 1 + usr/share/sofirem/cache/corrections/breeze | 1 + usr/share/sofirem/cache/corrections/btrbk | 1 + .../sofirem/cache/corrections/caffeine-ng | 1 + .../sofirem/cache/corrections/calligra-plan | 1 + usr/share/sofirem/cache/corrections/clapper | 1 + .../cache/corrections/conky-lua-archers | 1 + usr/share/sofirem/cache/corrections/cpu-x | 1 + usr/share/sofirem/cache/corrections/debtap | 1 + usr/share/sofirem/cache/corrections/deja-dup | 1 + .../cache/corrections/discord_arch_electron | 1 + usr/share/sofirem/cache/corrections/disper | 1 + .../sofirem/cache/corrections/doublecmd-qt5 | 1 + usr/share/sofirem/cache/corrections/downgrade | 1 + usr/share/sofirem/cache/corrections/dropbox | 1 + .../cache/corrections/faba-icon-theme-git | 1 + .../cache/corrections/faba-mono-icons-git | 1 + .../cache/corrections/find-the-command-git | 1 + .../sofirem/cache/corrections/fingerprint-gui | 1 + usr/share/sofirem/cache/corrections/flatpak | 1 + usr/share/sofirem/cache/corrections/florence | 1 + .../sofirem/cache/corrections/freeoffice | 1 + usr/share/sofirem/cache/corrections/gamemode | 1 + usr/share/sofirem/cache/corrections/geekbench | 1 + .../cache/corrections/google-earth-pro | 1 + usr/share/sofirem/cache/corrections/gputest | 1 + .../sofirem/cache/corrections/gsmartcontrol | 1 + .../sofirem/cache/corrections/halo-icons-git | 1 + usr/share/sofirem/cache/corrections/hddtemp | 1 + usr/share/sofirem/cache/corrections/hw-probe | 1 + usr/share/sofirem/cache/corrections/insync | 1 + .../intellij-idea-community-edition | 1 + .../sofirem/cache/corrections/jdownloader2 | 1 + .../sofirem/cache/corrections/kodi-addons | 1 + usr/share/sofirem/cache/corrections/kodi-x11 | 1 + .../cache/corrections/layan-cursor-theme-git | 1 + usr/share/sofirem/cache/corrections/linux-rt | 1 + .../cache/corrections/linux-rt-headers | 1 + .../sofirem/cache/corrections/linux-rt-lts | 1 + .../cache/corrections/linux-rt-lts-headers | 1 + .../cache/corrections/linux-xanmod-anbox | 1 + .../corrections/linux-xanmod-anbox-headers | 1 + .../cache/corrections/linux-xanmod-headers | 1 + .../corrections/linux-xanmod-lts-headers | 1 + .../cache/corrections/linux-xanmod-rt-headers | 1 + .../cache/corrections/linux-xanmod-tt-headers | 1 + .../sofirem/cache/corrections/lm_sensors | 1 + usr/share/sofirem/cache/corrections/lshw | 1 + .../sofirem/cache/corrections/mailspring | 1 + .../cache/corrections/materia-gtk-theme | 1 + usr/share/sofirem/cache/corrections/mcomix | 1 + .../sofirem/cache/corrections/mintstick-bin | 1 + .../cache/corrections/moka-icon-theme-git | 1 + .../sofirem/cache/corrections/multimc-git | 1 + usr/share/sofirem/cache/corrections/neofetch | 1 + .../cache/corrections/nordzy-icon-theme-git | 1 + .../cache/corrections/numix-gtk-theme-git | 1 + .../sofirem/cache/corrections/oh-my-zsh-git | 1 + .../sofirem/cache/corrections/open-vm-tools | 1 + .../cache/corrections/optimus-manager-qt | 1 + .../corrections/oranchelo-icon-theme-git | 1 + .../cache/corrections/orchis-theme-git | 1 + usr/share/sofirem/cache/corrections/oxy-neon | 1 + .../sofirem/cache/corrections/pacseek-bin | 1 + usr/share/sofirem/cache/corrections/pacui | 1 + usr/share/sofirem/cache/corrections/pacui-git | 1 + .../cache/corrections/papirus-linux-universe | 1 + .../cache/corrections/phoronix-test-suite | 1 + .../cache/corrections/picom-ibhagwan-git | 1 + .../cache/corrections/picom-jonaburg-git | 1 + .../sofirem/cache/corrections/pikaur-git | 1 + .../sofirem/cache/corrections/protonup-qt-bin | 1 + .../sofirem/cache/corrections/qbittorrent | 1 + usr/share/sofirem/cache/corrections/qtox | 1 + .../sofirem/cache/corrections/qtwebflix-git | 1 + usr/share/sofirem/cache/corrections/remmina | 1 + usr/share/sofirem/cache/corrections/ripgrep | 1 + .../sofirem/cache/corrections/ripgrep-all | 1 + .../sardi-colora-variations-icons-git | 1 + .../sardi-flat-colora-variations-icons-git | 1 + .../corrections/sardi-flat-mint-y-icons-git | 1 + .../corrections/sardi-flat-mixing-icons-git | 1 + ...sardi-flexible-colora-variations-icons-git | 1 + ...i-flexible-luv-colora-variations-icons-git | 1 + .../sardi-flexible-mint-y-icons-git | 1 + .../sardi-flexible-mixing-icons-git | 1 + .../sardi-flexible-variations-icons-git | 1 + ...ghost-flexible-colora-variations-icons-git | 1 + .../sardi-ghost-flexible-mint-y-icons-git | 1 + .../sardi-ghost-flexible-mixing-icons-git | 1 + .../sardi-ghost-flexible-variations-icons-git | 1 + .../sofirem/cache/corrections/sardi-icons | 1 + .../cache/corrections/sardi-mint-y-icons-git | 1 + .../cache/corrections/sardi-mixing-icons-git | 1 + .../sardi-mono-colora-variations-icons-git | 1 + .../corrections/sardi-mono-mint-y-icons-git | 1 + .../corrections/sardi-mono-mixing-icons-git | 1 + ...rdi-mono-numix-colora-variations-icons-git | 1 + ...i-mono-papirus-colora-variations-icons-git | 1 + .../sardi-orb-colora-mint-y-icons-git | 1 + .../sardi-orb-colora-mixing-icons-git | 1 + .../sardi-orb-colora-variations-icons-git | 1 + .../sofirem/cache/corrections/sayonara-player | 1 + .../sofirem/cache/corrections/screenkey-git | 1 + .../sofirem/cache/corrections/shairport-sync | 1 + usr/share/sofirem/cache/corrections/snap-pac | 1 + usr/share/sofirem/cache/corrections/snapper | 1 + .../sofirem/cache/corrections/spotifywm-git | 1 + .../cache/corrections/surfn-mint-y-icons-git | 1 + .../cache/corrections/systemd-manager-git | 1 + usr/share/sofirem/cache/corrections/tabby-bin | 1 + .../sofirem/cache/corrections/tor-browser | 1 + .../sofirem/cache/corrections/ttf-dejavu | 1 + usr/share/sofirem/cache/corrections/ttf-eurof | 1 + usr/share/sofirem/cache/corrections/ttf-hack | 1 + .../sofirem/cache/corrections/ttf-hactor | 1 + .../sofirem/cache/corrections/ttf-liberation | 1 + .../cache/corrections/ttf-linux-libertine | 1 + .../sofirem/cache/corrections/ttf-mac-fonts | 1 + .../ttf-nerd-fonts-symbols-1000-em | 1 + .../ttf-nerd-fonts-symbols-1000-em-mono | 1 + .../sofirem/cache/corrections/ttf-roboto-mono | 1 + usr/share/sofirem/cache/corrections/tuxboot | 1 + .../sofirem/cache/corrections/tuxboot-git | 1 + .../sofirem/cache/corrections/unimatrix-git | 1 + usr/share/sofirem/cache/corrections/upower | 1 + usr/share/sofirem/cache/corrections/variety | 1 + .../sofirem/cache/corrections/vim-runtime | 1 + .../sofirem/cache/corrections/vimix-cursors | 1 + .../cache/corrections/visual-studio-code-bin | 1 + .../cache/corrections/vivaldi-widevine | 1 + .../cache/corrections/vmware-workstation | 1 + usr/share/sofirem/cache/corrections/waydroid | 1 + usr/share/sofirem/cache/corrections/woeusb | 1 + usr/share/sofirem/cache/corrections/wttr | 1 + .../corrections/xcursor-arch-cursor-complete | 1 + .../sofirem/cache/corrections/xcursor-breeze | 1 + usr/share/sofirem/cache/corrections/xdman | 1 + usr/share/sofirem/cache/corrections/yad | 1 + usr/share/sofirem/cache/corrections/yay | 1 + usr/share/sofirem/cache/corrections/yay-bin | 1 + usr/share/sofirem/cache/corrections/yay-git | 1 + .../zsh-history-substring-search-git | 1 + .../corrections/zsh-theme-powerlevel10k-git | 1 + usr/share/sofirem/cache/cowfortune | 1 + usr/share/sofirem/cache/cpu-x | 1 + usr/share/sofirem/cache/cpufetch-git | 1 + usr/share/sofirem/cache/cpuid | 1 + usr/share/sofirem/cache/cryfs | 1 + usr/share/sofirem/cache/cuda | 1 + usr/share/sofirem/cache/curseradio-git | 1 + usr/share/sofirem/cache/cwm | 1 + usr/share/sofirem/cache/cxxmatrix-git | 1 + usr/share/sofirem/cache/darktable | 1 + usr/share/sofirem/cache/deadbeef | 1 + usr/share/sofirem/cache/debtap | 1 + usr/share/sofirem/cache/deezer | 1 + usr/share/sofirem/cache/deja-dup | 1 + usr/share/sofirem/cache/deluge | 1 + usr/share/sofirem/cache/digikam | 1 + usr/share/sofirem/cache/discord | 1 + usr/share/sofirem/cache/discord_arch_electron | 1 + usr/share/sofirem/cache/discover | 1 + usr/share/sofirem/cache/disper | 1 + usr/share/sofirem/cache/dmenu | 1 + usr/share/sofirem/cache/dmidecode | 1 + usr/share/sofirem/cache/dolphin | 1 + usr/share/sofirem/cache/dolphin-plugins | 1 + usr/share/sofirem/cache/doublecmd-qt5 | 1 + usr/share/sofirem/cache/downgrade | 1 + usr/share/sofirem/cache/dracula-cursors-git | 1 + usr/share/sofirem/cache/dracula-gtk-theme | 1 + usr/share/sofirem/cache/dracula-icons-git | 1 + usr/share/sofirem/cache/droidcam | 1 + usr/share/sofirem/cache/dropbox | 1 + usr/share/sofirem/cache/duf | 1 + usr/share/sofirem/cache/duf-bin | 1 + usr/share/sofirem/cache/edid-decode-git | 1 + usr/share/sofirem/cache/element-desktop | 1 + usr/share/sofirem/cache/elisa | 1 + usr/share/sofirem/cache/emacs | 1 + usr/share/sofirem/cache/encfs | 1 + usr/share/sofirem/cache/enlightenment | 1 + usr/share/sofirem/cache/enpass-bin | 1 + usr/share/sofirem/cache/envycontrol | 1 + usr/share/sofirem/cache/epdfview | 1 + usr/share/sofirem/cache/espeak-ng | 1 + usr/share/sofirem/cache/etcher-bin | 1 + usr/share/sofirem/cache/evince | 1 + usr/share/sofirem/cache/evolution | 1 + usr/share/sofirem/cache/extremetuxracer | 1 + usr/share/sofirem/cache/faba-icon-theme-git | 1 + usr/share/sofirem/cache/faba-mono-icons-git | 1 + usr/share/sofirem/cache/falkon | 1 + usr/share/sofirem/cache/fancontrol-gui-git | 1 + usr/share/sofirem/cache/fastfetch | 1 + usr/share/sofirem/cache/fastfetch-git | 1 + usr/share/sofirem/cache/feh | 1 + usr/share/sofirem/cache/ffmpegthumbs | 1 + usr/share/sofirem/cache/figlet | 1 + usr/share/sofirem/cache/filebot | 1 + usr/share/sofirem/cache/filezilla | 1 + usr/share/sofirem/cache/find-the-command-git | 1 + usr/share/sofirem/cache/fingerprint-gui | 1 + usr/share/sofirem/cache/firefox | 1 + usr/share/sofirem/cache/firefox-adblock-plus | 1 + usr/share/sofirem/cache/firefox-ublock-origin | 1 + usr/share/sofirem/cache/flameshot-git | 1 + usr/share/sofirem/cache/flat-remix-git | 1 + usr/share/sofirem/cache/flatpak | 1 + usr/share/sofirem/cache/flavours | 1 + usr/share/sofirem/cache/florence | 1 + usr/share/sofirem/cache/fluent-gtk-theme | 1 + usr/share/sofirem/cache/fluent-icon-theme-git | 1 + usr/share/sofirem/cache/fluent-kde-theme-git | 1 + usr/share/sofirem/cache/focuswriter | 1 + usr/share/sofirem/cache/font-manager | 1 + usr/share/sofirem/cache/font-manager-git | 1 + usr/share/sofirem/cache/fragments | 1 + usr/share/sofirem/cache/freeciv | 1 + usr/share/sofirem/cache/freedownloadmanager | 1 + usr/share/sofirem/cache/freeoffice | 1 + usr/share/sofirem/cache/freetube-bin | 1 + usr/share/sofirem/cache/fvwm3-git | 1 + usr/share/sofirem/cache/g4music | 1 + usr/share/sofirem/cache/galculator | 1 + usr/share/sofirem/cache/game-devices-udev | 1 + usr/share/sofirem/cache/gamehub-bin | 1 + usr/share/sofirem/cache/gamemode | 1 + usr/share/sofirem/cache/gammy | 1 + usr/share/sofirem/cache/gdm | 1 + usr/share/sofirem/cache/gdown | 1 + usr/share/sofirem/cache/geany | 1 + usr/share/sofirem/cache/geany-plugins | 1 + usr/share/sofirem/cache/geary | 1 + usr/share/sofirem/cache/geekbench | 1 + usr/share/sofirem/cache/ghostwriter | 1 + usr/share/sofirem/cache/gimp | 1 + usr/share/sofirem/cache/gitahead | 1 + usr/share/sofirem/cache/gitahead-bin | 1 + usr/share/sofirem/cache/gitfiend | 1 + usr/share/sofirem/cache/gitg | 1 + usr/share/sofirem/cache/github-desktop-bin | 1 + usr/share/sofirem/cache/gitkraken | 1 + usr/share/sofirem/cache/gksu | 1 + usr/share/sofirem/cache/glade | 1 + usr/share/sofirem/cache/glances | 1 + usr/share/sofirem/cache/gmusicbrowser | 1 + usr/share/sofirem/cache/gnome-chess | 1 + usr/share/sofirem/cache/gnome-disk-utility | 1 + usr/share/sofirem/cache/gnome-screenshot | 1 + .../gnome-shell-extension-appindicator-git | 1 + .../cache/gnome-shell-extension-dash-to-dock | 1 + .../cache/gnome-shell-extension-pop-shell-git | 1 + usr/share/sofirem/cache/gnome-software | 1 + .../cache/gnome-software-packagekit-plugin | 1 + usr/share/sofirem/cache/gnome-system-monitor | 1 + usr/share/sofirem/cache/gnome-system-tools | 1 + usr/share/sofirem/cache/gnome-terminal | 1 + .../sofirem/cache/gnome-terminal-transparency | 1 + usr/share/sofirem/cache/gnuchess | 1 + usr/share/sofirem/cache/gnumeric | 1 + usr/share/sofirem/cache/gocryptfs | 1 + usr/share/sofirem/cache/google-chat-linux-bin | 1 + usr/share/sofirem/cache/google-chrome | 1 + usr/share/sofirem/cache/google-earth-pro | 1 + usr/share/sofirem/cache/gotop-bin | 1 + usr/share/sofirem/cache/goverlay-bin | 1 + usr/share/sofirem/cache/gpick | 1 + usr/share/sofirem/cache/gputest | 1 + .../sofirem/cache/graphite-gtk-theme-git | 1 + usr/share/sofirem/cache/grsync | 1 + usr/share/sofirem/cache/grub-btrfs | 1 + usr/share/sofirem/cache/grub-customizer | 1 + usr/share/sofirem/cache/gsimplecal | 1 + usr/share/sofirem/cache/gsmartcontrol | 1 + usr/share/sofirem/cache/gtk2-perl | 1 + usr/share/sofirem/cache/gtop | 1 + usr/share/sofirem/cache/guake | 1 + usr/share/sofirem/cache/gufw | 1 + usr/share/sofirem/cache/gummy | 1 + usr/share/sofirem/cache/guvcview | 1 + usr/share/sofirem/cache/gvfs | 1 + usr/share/sofirem/cache/gwe | 1 + usr/share/sofirem/cache/gwenview | 1 + usr/share/sofirem/cache/halo-icons-git | 1 + usr/share/sofirem/cache/handbrake | 1 + usr/share/sofirem/cache/hardcode-fixer-git | 1 + usr/share/sofirem/cache/hardinfo-gtk3 | 1 + usr/share/sofirem/cache/haskell-dbus | 1 + usr/share/sofirem/cache/hddtemp | 1 + usr/share/sofirem/cache/hedgewars | 1 + usr/share/sofirem/cache/herbstluftwm | 1 + .../sofirem/cache/heroic-games-launcher-bin | 1 + usr/share/sofirem/cache/hexchat | 1 + usr/share/sofirem/cache/hplip | 1 + usr/share/sofirem/cache/htop | 1 + usr/share/sofirem/cache/hunspell | 1 + usr/share/sofirem/cache/hw-probe | 1 + usr/share/sofirem/cache/hypnotix | 1 + usr/share/sofirem/cache/hypr-dev-git | 1 + usr/share/sofirem/cache/i3-gaps | 1 + usr/share/sofirem/cache/i3-wm | 1 + usr/share/sofirem/cache/i3blocks | 1 + usr/share/sofirem/cache/i3status | 1 + usr/share/sofirem/cache/icecat | 1 + usr/share/sofirem/cache/icewm | 1 + usr/share/sofirem/cache/ifuse | 1 + usr/share/sofirem/cache/imagewriter | 1 + usr/share/sofirem/cache/inetutils | 1 + usr/share/sofirem/cache/inkscape | 1 + usr/share/sofirem/cache/insync | 1 + usr/share/sofirem/cache/intel-ucode | 1 + .../cache/intellij-idea-community-edition | 1 + usr/share/sofirem/cache/inxi | 1 + usr/share/sofirem/cache/iso-flag-png | 1 + usr/share/sofirem/cache/itch | 1 + usr/share/sofirem/cache/jdownloader2 | 1 + .../sofirem/cache/jitsi-meet-desktop-bin | 1 + usr/share/sofirem/cache/joshuto | 1 + usr/share/sofirem/cache/juk | 1 + usr/share/sofirem/cache/jwm | 1 + usr/share/sofirem/cache/kate | 1 + usr/share/sofirem/cache/kazam | 1 + usr/share/sofirem/cache/kbackup | 1 + usr/share/sofirem/cache/kbreakout | 1 + .../sofirem/cache/kde-accessibility-meta | 1 + usr/share/sofirem/cache/kde-applications-meta | 1 + usr/share/sofirem/cache/kde-dev-utils | 1 + usr/share/sofirem/cache/kde-education-meta | 1 + usr/share/sofirem/cache/kde-games-meta | 1 + usr/share/sofirem/cache/kde-graphics-meta | 1 + usr/share/sofirem/cache/kde-gtk-config | 1 + usr/share/sofirem/cache/kde-multimedia-meta | 1 + usr/share/sofirem/cache/kde-network-meta | 1 + usr/share/sofirem/cache/kde-pim-meta | 1 + usr/share/sofirem/cache/kde-sdk-meta | 1 + usr/share/sofirem/cache/kde-system-meta | 1 + usr/share/sofirem/cache/kde-utilities-meta | 1 + usr/share/sofirem/cache/kdeconnect | 1 + .../sofirem/cache/kdenetwork-filesharing | 1 + usr/share/sofirem/cache/kdenlive | 1 + usr/share/sofirem/cache/kdevelop | 1 + usr/share/sofirem/cache/keepassxc | 1 + usr/share/sofirem/cache/kitty | 1 + usr/share/sofirem/cache/knights | 1 + usr/share/sofirem/cache/kodi | 1 + usr/share/sofirem/cache/konsave | 1 + usr/share/sofirem/cache/konsole | 1 + usr/share/sofirem/cache/krdc | 1 + usr/share/sofirem/cache/kripton-theme-git | 1 + usr/share/sofirem/cache/krita | 1 + usr/share/sofirem/cache/ktorrent | 1 + usr/share/sofirem/cache/kvantum | 1 + usr/share/sofirem/cache/kvantum-qt5-git | 1 + usr/share/sofirem/cache/kvantum-qt6-git | 1 + usr/share/sofirem/cache/kvantum-theme-materia | 1 + .../sofirem/cache/kvantum-theme-qogir-git | 1 + usr/share/sofirem/cache/kwave | 1 + .../sofirem/cache/la-capitaine-icon-theme-git | 1 + usr/share/sofirem/cache/lastpass | 1 + .../sofirem/cache/layan-cursor-theme-git | 1 + usr/share/sofirem/cache/layan-gtk-theme-git | 1 + usr/share/sofirem/cache/layan-kde-git | 1 + usr/share/sofirem/cache/leafpad | 1 + usr/share/sofirem/cache/leftwm-dev-git | 1 + usr/share/sofirem/cache/leftwm-theme-git | 1 + usr/share/sofirem/cache/legendary | 1 + usr/share/sofirem/cache/lf | 1 + usr/share/sofirem/cache/libertinus-font | 1 + usr/share/sofirem/cache/libreoffice-fresh | 1 + usr/share/sofirem/cache/libreoffice-still | 1 + usr/share/sofirem/cache/librewolf-bin | 1 + usr/share/sofirem/cache/liferea | 1 + usr/share/sofirem/cache/light | 1 + usr/share/sofirem/cache/lightdm | 1 + usr/share/sofirem/cache/lightdm-gtk-greeter | 1 + .../cache/lightdm-gtk-greeter-settings | 1 + usr/share/sofirem/cache/lightdm-slick-greeter | 1 + .../sofirem/cache/lightdm-webkit-theme-aether | 1 + .../cache/lightdm-webkit2-theme-reactive | 1 + usr/share/sofirem/cache/linux | 1 + usr/share/sofirem/cache/linux-hardened | 1 + .../sofirem/cache/linux-hardened-headers | 1 + usr/share/sofirem/cache/linux-headers | 1 + usr/share/sofirem/cache/linux-lts | 1 + usr/share/sofirem/cache/linux-lts-headers | 1 + usr/share/sofirem/cache/linux-rt | 1 + usr/share/sofirem/cache/linux-rt-headers | 1 + usr/share/sofirem/cache/linux-rt-lts | 1 + usr/share/sofirem/cache/linux-rt-lts-headers | 1 + usr/share/sofirem/cache/linux-wifi-hotspot | 1 + usr/share/sofirem/cache/linux-xanmod | 1 + usr/share/sofirem/cache/linux-xanmod-anbox | 1 + .../sofirem/cache/linux-xanmod-anbox-headers | 1 + usr/share/sofirem/cache/linux-xanmod-headers | 1 + usr/share/sofirem/cache/linux-xanmod-lts | 1 + .../sofirem/cache/linux-xanmod-lts-headers | 1 + usr/share/sofirem/cache/linux-xanmod-rt | 1 + .../sofirem/cache/linux-xanmod-rt-headers | 1 + usr/share/sofirem/cache/linux-xanmod-tt | 1 + .../sofirem/cache/linux-xanmod-tt-headers | 1 + usr/share/sofirem/cache/linux-zen | 1 + usr/share/sofirem/cache/linux-zen-headers | 1 + usr/share/sofirem/cache/lm_sensors | 1 + usr/share/sofirem/cache/lmms | 1 + usr/share/sofirem/cache/lohit-fonts | 1 + usr/share/sofirem/cache/lolcat | 1 + usr/share/sofirem/cache/lollypop | 1 + usr/share/sofirem/cache/losslesscut-bin | 1 + usr/share/sofirem/cache/lshw | 1 + usr/share/sofirem/cache/luna-icon-theme-git | 1 + usr/share/sofirem/cache/lutris | 1 + usr/share/sofirem/cache/lxappearance | 1 + usr/share/sofirem/cache/lxappearance-obconf | 1 + usr/share/sofirem/cache/lxdm | 1 + usr/share/sofirem/cache/lxmusic | 1 + .../sofirem/cache/lxqt-arc-dark-theme-git | 1 + usr/share/sofirem/cache/lxrandr | 1 + usr/share/sofirem/cache/lxterminal | 1 + usr/share/sofirem/cache/ly | 1 + usr/share/sofirem/cache/mailspring | 1 + usr/share/sofirem/cache/makemkv | 1 + usr/share/sofirem/cache/mangohud | 1 + usr/share/sofirem/cache/mari0 | 1 + usr/share/sofirem/cache/mate-control-center | 1 + usr/share/sofirem/cache/mate-desktop | 1 + usr/share/sofirem/cache/mate-menus | 1 + usr/share/sofirem/cache/mate-system-monitor | 1 + usr/share/sofirem/cache/mate-terminal | 1 + usr/share/sofirem/cache/mate-tweak | 1 + usr/share/sofirem/cache/materia-gtk-theme | 1 + usr/share/sofirem/cache/materia-kde | 1 + usr/share/sofirem/cache/mc | 1 + usr/share/sofirem/cache/mcomix | 1 + usr/share/sofirem/cache/mediainfo-gui | 1 + usr/share/sofirem/cache/megasync-bin | 1 + usr/share/sofirem/cache/meld | 1 + usr/share/sofirem/cache/micro | 1 + usr/share/sofirem/cache/midori | 1 + usr/share/sofirem/cache/min | 1 + usr/share/sofirem/cache/minecraft-launcher | 1 + usr/share/sofirem/cache/minigalaxy | 1 + usr/share/sofirem/cache/mintlocale | 1 + usr/share/sofirem/cache/mintstick-git | 1 + usr/share/sofirem/cache/mkinitcpio-firmware | 1 + usr/share/sofirem/cache/mkvtoolnix-gui | 1 + usr/share/sofirem/cache/modprobed-db | 1 + usr/share/sofirem/cache/modprobed-db-git | 1 + usr/share/sofirem/cache/moka-icon-theme-git | 1 + usr/share/sofirem/cache/moneydance | 1 + usr/share/sofirem/cache/mousetweaks | 1 + usr/share/sofirem/cache/mpc | 1 + usr/share/sofirem/cache/mpd | 1 + usr/share/sofirem/cache/mpv | 1 + usr/share/sofirem/cache/ms-office-online | 1 + usr/share/sofirem/cache/mullvad-vpn-bin | 1 + usr/share/sofirem/cache/multimc-git | 1 + usr/share/sofirem/cache/mumble | 1 + usr/share/sofirem/cache/nautilus | 1 + .../sofirem/cache/nautilus-open-any-terminal | 1 + usr/share/sofirem/cache/ncmpcpp | 1 + usr/share/sofirem/cache/nemo | 1 + usr/share/sofirem/cache/nemo-fileroller | 1 + usr/share/sofirem/cache/neochat | 1 + usr/share/sofirem/cache/neofetch | 1 + .../sofirem/cache/nerd-fonts-source-code-pro | 1 + usr/share/sofirem/cache/netbeans | 1 + usr/share/sofirem/cache/netsurf | 1 + usr/share/sofirem/cache/neverball | 1 + usr/share/sofirem/cache/nextcloud-client | 1 + usr/share/sofirem/cache/nitrogen | 1 + usr/share/sofirem/cache/nixieclock | 1 + usr/share/sofirem/cache/nnn | 1 + usr/share/sofirem/cache/noisetorch | 1 + usr/share/sofirem/cache/nomachine | 1 + usr/share/sofirem/cache/nomacs | 1 + usr/share/sofirem/cache/nomacs-git | 1 + usr/share/sofirem/cache/nomacs-qt6-git | 1 + usr/share/sofirem/cache/nordic-kde-git | 1 + usr/share/sofirem/cache/nordpass-bin | 1 + usr/share/sofirem/cache/nordtray-bin | 1 + usr/share/sofirem/cache/nordvpn-bin | 1 + usr/share/sofirem/cache/nordzy-icon-theme-git | 1 + usr/share/sofirem/cache/notepadqq | 1 + usr/share/sofirem/cache/noto-fonts | 1 + usr/share/sofirem/cache/noto-fonts-emoji | 1 + .../sofirem/cache/numix-circle-arc-icons-git | 1 + .../sofirem/cache/numix-circle-icon-theme-git | 1 + usr/share/sofirem/cache/numix-gtk-theme-git | 1 + usr/share/sofirem/cache/numix-icon-theme-git | 1 + usr/share/sofirem/cache/numix-kde-theme-git | 1 + usr/share/sofirem/cache/nvflash | 1 + usr/share/sofirem/cache/nvidia | 1 + usr/share/sofirem/cache/nvidia-dkms | 1 + usr/share/sofirem/cache/nvidia-lts | 1 + usr/share/sofirem/cache/nvidia-open | 1 + usr/share/sofirem/cache/nvidia-open-dkms | 1 + usr/share/sofirem/cache/nvidia-prime | 1 + usr/share/sofirem/cache/nvidia-settings | 1 + usr/share/sofirem/cache/nvidia-utils | 1 + usr/share/sofirem/cache/nvidia-xrun | 1 + usr/share/sofirem/cache/nvtop | 1 + usr/share/sofirem/cache/nvtop-git | 1 + usr/share/sofirem/cache/obconf | 1 + usr/share/sofirem/cache/obconf-qt | 1 + usr/share/sofirem/cache/obkey | 1 + usr/share/sofirem/cache/obmenu-generator | 1 + usr/share/sofirem/cache/obmenu3 | 1 + usr/share/sofirem/cache/obs-studio | 1 + usr/share/sofirem/cache/obsidian-icon-theme | 1 + usr/share/sofirem/cache/ocs-url | 1 + usr/share/sofirem/cache/octopi | 1 + usr/share/sofirem/cache/octopi-notifier-qt5 | 1 + usr/share/sofirem/cache/oh-my-zsh-git | 1 + .../cache/oh-my-zsh-powerline-theme-git | 1 + usr/share/sofirem/cache/okular | 1 + usr/share/sofirem/cache/olivia | 1 + usr/share/sofirem/cache/onboard | 1 + usr/share/sofirem/cache/onlyoffice-bin | 1 + usr/share/sofirem/cache/ookla-speedtest-bin | 1 + usr/share/sofirem/cache/open-vm-tools | 1 + usr/share/sofirem/cache/openbox | 1 + usr/share/sofirem/cache/openbox-arc-git | 1 + .../sofirem/cache/openbox-themes-pambudi-git | 1 + usr/share/sofirem/cache/openoffice-bin | 1 + usr/share/sofirem/cache/openscad | 1 + usr/share/sofirem/cache/openshot | 1 + usr/share/sofirem/cache/opera | 1 + usr/share/sofirem/cache/optimus-manager | 1 + usr/share/sofirem/cache/optimus-manager-qt | 1 + .../sofirem/cache/oranchelo-icon-theme-git | 1 + usr/share/sofirem/cache/orca | 1 + usr/share/sofirem/cache/orchis-kde-theme-git | 1 + usr/share/sofirem/cache/orchis-theme-git | 1 + usr/share/sofirem/cache/oxy-neon | 1 + usr/share/sofirem/cache/pacback | 1 + usr/share/sofirem/cache/pace | 1 + usr/share/sofirem/cache/pace-git | 1 + usr/share/sofirem/cache/packagekit-qt5 | 1 + usr/share/sofirem/cache/pacseek-bin | 1 + usr/share/sofirem/cache/pacui | 1 + usr/share/sofirem/cache/pacui-git | 1 + usr/share/sofirem/cache/paper-icon-theme | 1 + usr/share/sofirem/cache/papirus-folders-git | 1 + .../sofirem/cache/papirus-folders-gui-bin | 1 + .../sofirem/cache/papirus-folders-nordic | 1 + usr/share/sofirem/cache/papirus-icon-theme | 1 + .../sofirem/cache/papirus-linux-universe | 1 + usr/share/sofirem/cache/papirus-nord | 1 + usr/share/sofirem/cache/parcellite | 1 + usr/share/sofirem/cache/partitionmanager | 1 + usr/share/sofirem/cache/paru | 1 + usr/share/sofirem/cache/paru-bin | 1 + usr/share/sofirem/cache/paru-git | 1 + usr/share/sofirem/cache/pavucontrol-qt | 1 + usr/share/sofirem/cache/pcmanfm | 1 + usr/share/sofirem/cache/pdfarranger | 1 + usr/share/sofirem/cache/peek | 1 + usr/share/sofirem/cache/perl-checkupdates-aur | 1 + .../sofirem/cache/perl-linux-desktopfiles | 1 + usr/share/sofirem/cache/perl-www-aur | 1 + usr/share/sofirem/cache/persepolis | 1 + usr/share/sofirem/cache/pfetch | 1 + usr/share/sofirem/cache/phinger-cursors | 1 + usr/share/sofirem/cache/phoronix-test-suite | 1 + usr/share/sofirem/cache/picom | 1 + usr/share/sofirem/cache/picom-git | 1 + usr/share/sofirem/cache/picom-ibhagwan-git | 1 + usr/share/sofirem/cache/picom-jonaburg-git | 1 + usr/share/sofirem/cache/pidgin | 1 + usr/share/sofirem/cache/pikaur-git | 1 + usr/share/sofirem/cache/piper | 1 + usr/share/sofirem/cache/pipes.sh | 1 + usr/share/sofirem/cache/pitivi | 1 + usr/share/sofirem/cache/plank | 1 + usr/share/sofirem/cache/plata-theme | 1 + usr/share/sofirem/cache/playonlinux | 1 + usr/share/sofirem/cache/plex-media-player | 1 + usr/share/sofirem/cache/plex-media-server | 1 + usr/share/sofirem/cache/polkit-gnome | 1 + usr/share/sofirem/cache/polybar | 1 + usr/share/sofirem/cache/power-profiles-daemon | 1 + usr/share/sofirem/cache/powerpill | 1 + usr/share/sofirem/cache/powertop | 1 + usr/share/sofirem/cache/pragha | 1 + usr/share/sofirem/cache/privoxy | 1 + usr/share/sofirem/cache/prot16-xfce4-terminal | 1 + .../sofirem/cache/proton-community-updater | 1 + usr/share/sofirem/cache/proton-ge-custom-bin | 1 + usr/share/sofirem/cache/protontricks | 1 + usr/share/sofirem/cache/protontricks-git | 1 + usr/share/sofirem/cache/protonup-git | 1 + usr/share/sofirem/cache/protonup-qt-bin | 1 + usr/share/sofirem/cache/pulsar-bin | 1 + usr/share/sofirem/cache/putty | 1 + .../sofirem/cache/pycharm-community-edition | 1 + usr/share/sofirem/cache/python-psutil | 1 + usr/share/sofirem/cache/python-pywal | 1 + usr/share/sofirem/cache/python-setuptools | 1 + usr/share/sofirem/cache/qbittorrent | 1 + usr/share/sofirem/cache/qemu-base | 1 + usr/share/sofirem/cache/qemu-full | 1 + usr/share/sofirem/cache/qogir-gtk-theme-git | 1 + usr/share/sofirem/cache/qogir-icon-theme | 1 + usr/share/sofirem/cache/qogir-kde-theme-git | 1 + usr/share/sofirem/cache/qt5-quickcontrols | 1 + usr/share/sofirem/cache/qt5-tools | 1 + usr/share/sofirem/cache/qtcreator | 1 + usr/share/sofirem/cache/qtile | 1 + usr/share/sofirem/cache/qtox | 1 + usr/share/sofirem/cache/qtscrcpy | 1 + usr/share/sofirem/cache/qtwebflix-git | 1 + usr/share/sofirem/cache/quickemu | 1 + usr/share/sofirem/cache/quickemu-git | 1 + usr/share/sofirem/cache/quickgui-bin | 1 + usr/share/sofirem/cache/qutebrowser | 1 + usr/share/sofirem/cache/radiotray | 1 + usr/share/sofirem/cache/ranger | 1 + usr/share/sofirem/cache/rare | 1 + usr/share/sofirem/cache/rate-mirrors | 1 + usr/share/sofirem/cache/rate-mirrors-bin | 1 + usr/share/sofirem/cache/realvnc-vnc-server | 1 + usr/share/sofirem/cache/realvnc-vnc-viewer | 1 + usr/share/sofirem/cache/redshift | 1 + usr/share/sofirem/cache/remmina | 1 + usr/share/sofirem/cache/replay-sorcery | 1 + usr/share/sofirem/cache/rhythmbox | 1 + usr/share/sofirem/cache/ripgrep | 1 + usr/share/sofirem/cache/ripgrep-all | 1 + usr/share/sofirem/cache/rofi | 1 + usr/share/sofirem/cache/rofi-theme-fonts | 1 + usr/share/sofirem/cache/rxvt-unicode | 1 + usr/share/sofirem/cache/s-tui | 1 + usr/share/sofirem/cache/sakura | 1 + .../cache/sardi-colora-variations-icons-git | 1 + .../sardi-flat-colora-variations-icons-git | 1 + .../sofirem/cache/sardi-flat-mint-y-icons-git | 1 + .../sofirem/cache/sardi-flat-mixing-icons-git | 1 + ...sardi-flexible-colora-variations-icons-git | 1 + ...i-flexible-luv-colora-variations-icons-git | 1 + .../cache/sardi-flexible-mint-y-icons-git | 1 + .../cache/sardi-flexible-mixing-icons-git | 1 + .../cache/sardi-flexible-variations-icons-git | 1 + ...ghost-flexible-colora-variations-icons-git | 1 + .../sardi-ghost-flexible-mint-y-icons-git | 1 + .../sardi-ghost-flexible-mixing-icons-git | 1 + .../sardi-ghost-flexible-variations-icons-git | 1 + usr/share/sofirem/cache/sardi-icons | 1 + .../sofirem/cache/sardi-mint-y-icons-git | 1 + .../sofirem/cache/sardi-mixing-icons-git | 1 + .../sardi-mono-colora-variations-icons-git | 1 + .../sofirem/cache/sardi-mono-mint-y-icons-git | 1 + .../sofirem/cache/sardi-mono-mixing-icons-git | 1 + ...rdi-mono-numix-colora-variations-icons-git | 1 + ...i-mono-papirus-colora-variations-icons-git | 1 + .../cache/sardi-orb-colora-mint-y-icons-git | 1 + .../cache/sardi-orb-colora-mixing-icons-git | 1 + .../sardi-orb-colora-variations-icons-git | 1 + usr/share/sofirem/cache/sauerbraten | 1 + usr/share/sofirem/cache/sauerbraten-data | 1 + usr/share/sofirem/cache/sayonara-player | 1 + usr/share/sofirem/cache/scrcpy | 1 + usr/share/sofirem/cache/screenfetch | 1 + usr/share/sofirem/cache/screenkey-git | 1 + usr/share/sofirem/cache/scribus | 1 + usr/share/sofirem/cache/scrot | 1 + usr/share/sofirem/cache/sddm | 1 + usr/share/sofirem/cache/sddm-kcm | 1 + usr/share/sofirem/cache/shairport-sync | 1 + usr/share/sofirem/cache/shortwave | 1 + usr/share/sofirem/cache/sigil | 1 + usr/share/sofirem/cache/signal-desktop | 1 + .../sofirem/cache/signal-desktop-beta-bin | 1 + usr/share/sofirem/cache/signal-desktop-git | 1 + usr/share/sofirem/cache/simple-scan | 1 + usr/share/sofirem/cache/simplescreenrecorder | 1 + .../sofirem/cache/simplescreenrecorder-git | 1 + .../sofirem/cache/simplicity-sddm-theme-git | 1 + usr/share/sofirem/cache/skippy-xd-git | 1 + .../sofirem/cache/skypeforlinux-stable-bin | 1 + usr/share/sofirem/cache/sl | 1 + usr/share/sofirem/cache/slack-desktop | 1 + usr/share/sofirem/cache/slimbookbattery | 1 + usr/share/sofirem/cache/slurm | 1 + usr/share/sofirem/cache/smplayer | 1 + usr/share/sofirem/cache/snap-pac | 1 + usr/share/sofirem/cache/snapd | 1 + usr/share/sofirem/cache/snapper | 1 + usr/share/sofirem/cache/snapper-gui-git | 1 + usr/share/sofirem/cache/snapper-support | 1 + usr/share/sofirem/cache/snapper-tools | 1 + usr/share/sofirem/cache/solaar | 1 + usr/share/sofirem/cache/soundconverter | 1 + usr/share/sofirem/cache/sparklines-git | 1 + usr/share/sofirem/cache/spectacle | 1 + usr/share/sofirem/cache/spectrwm | 1 + usr/share/sofirem/cache/speedtest-cli-git | 1 + usr/share/sofirem/cache/spotify | 1 + usr/share/sofirem/cache/spotify-adblock-git | 1 + usr/share/sofirem/cache/spotifywm-git | 1 + usr/share/sofirem/cache/stacer | 1 + usr/share/sofirem/cache/stacer-bin | 1 + usr/share/sofirem/cache/steam-buddy | 1 + usr/share/sofirem/cache/steam-tweaks | 1 + usr/share/sofirem/cache/steamtinkerlaunch | 1 + usr/share/sofirem/cache/sublime-text-4 | 1 + usr/share/sofirem/cache/supertux | 1 + usr/share/sofirem/cache/supertuxkart | 1 + .../sofirem/cache/surfn-arc-breeze-icons-git | 1 + usr/share/sofirem/cache/surfn-icons-git | 1 + .../sofirem/cache/surfn-mint-y-icons-git | 1 + .../sofirem/cache/surfn-plasma-dark-icons-git | 1 + .../cache/surfn-plasma-dark-tela-icons-git | 1 + .../cache/surfn-plasma-light-icons-git | 1 + usr/share/sofirem/cache/sutils-git | 1 + .../sofirem/cache/sweet-cursor-theme-git | 1 + usr/share/sofirem/cache/sweet-gtk-theme-dark | 1 + .../sofirem/cache/sweet-kde-theme-mars-git | 1 + usr/share/sofirem/cache/sweet-theme-git | 1 + usr/share/sofirem/cache/sxhkd | 1 + usr/share/sofirem/cache/synapse | 1 + usr/share/sofirem/cache/sysprof | 1 + usr/share/sofirem/cache/system76-power | 1 + usr/share/sofirem/cache/systemd-kcm | 1 + usr/share/sofirem/cache/systemd-manager | 1 + usr/share/sofirem/cache/systemd-manager-git | 1 + usr/share/sofirem/cache/tabby-bin | 1 + usr/share/sofirem/cache/tauon-music-box | 1 + usr/share/sofirem/cache/teams | 1 + .../sofirem/cache/tela-circle-icon-theme-git | 1 + usr/share/sofirem/cache/telegram-desktop | 1 + usr/share/sofirem/cache/telegram-desktop-bin | 1 + .../cache/tempus-themes-xfce4-terminal-git | 1 + usr/share/sofirem/cache/terminator | 1 + usr/share/sofirem/cache/termite | 1 + .../sofirem/cache/the_platinum_searcher-bin | 1 + usr/share/sofirem/cache/the_silver_searcher | 1 + usr/share/sofirem/cache/thunar | 1 + usr/share/sofirem/cache/thunar-archive-plugin | 1 + usr/share/sofirem/cache/thunar-extended | 1 + .../sofirem/cache/thunar-media-tags-plugin | 1 + usr/share/sofirem/cache/thunar-shares-plugin | 1 + usr/share/sofirem/cache/thunar-volman | 1 + usr/share/sofirem/cache/thunderbird | 1 + usr/share/sofirem/cache/tigervnc | 1 + usr/share/sofirem/cache/tilda | 1 + usr/share/sofirem/cache/tilix | 1 + usr/share/sofirem/cache/timeshift | 1 + usr/share/sofirem/cache/timeshift-autosnap | 1 + usr/share/sofirem/cache/tint2 | 1 + usr/share/sofirem/cache/tlp | 1 + usr/share/sofirem/cache/tmux | 1 + usr/share/sofirem/cache/toilet | 1 + usr/share/sofirem/cache/topgrade | 1 + usr/share/sofirem/cache/topgrade-bin | 1 + usr/share/sofirem/cache/topgrade-git | 1 + usr/share/sofirem/cache/tor | 1 + usr/share/sofirem/cache/tor-browser | 1 + usr/share/sofirem/cache/torbrowser-launcher | 1 + usr/share/sofirem/cache/transmission-gtk | 1 + usr/share/sofirem/cache/trizen | 1 + usr/share/sofirem/cache/ttf-anonymous-pro | 1 + usr/share/sofirem/cache/ttf-bitstream-vera | 1 + usr/share/sofirem/cache/ttf-caladea | 1 + usr/share/sofirem/cache/ttf-carlito | 1 + usr/share/sofirem/cache/ttf-cascadia-code | 1 + usr/share/sofirem/cache/ttf-cormorant | 1 + usr/share/sofirem/cache/ttf-croscore | 1 + usr/share/sofirem/cache/ttf-dejavu | 1 + usr/share/sofirem/cache/ttf-droid | 1 + usr/share/sofirem/cache/ttf-eurof | 1 + .../sofirem/cache/ttf-fantasque-sans-mono | 1 + usr/share/sofirem/cache/ttf-fira-code | 1 + usr/share/sofirem/cache/ttf-fira-mono | 1 + usr/share/sofirem/cache/ttf-fira-sans | 1 + usr/share/sofirem/cache/ttf-font-awesome | 1 + usr/share/sofirem/cache/ttf-hack | 1 + usr/share/sofirem/cache/ttf-hactor | 1 + usr/share/sofirem/cache/ttf-hellvetica | 1 + usr/share/sofirem/cache/ttf-ibm-plex | 1 + usr/share/sofirem/cache/ttf-inconsolata | 1 + usr/share/sofirem/cache/ttf-iosevka-nerd | 1 + usr/share/sofirem/cache/ttf-jetbrains-mono | 1 + .../sofirem/cache/ttf-jetbrains-mono-nerd | 1 + usr/share/sofirem/cache/ttf-joypixels | 1 + usr/share/sofirem/cache/ttf-lato | 1 + usr/share/sofirem/cache/ttf-liberation | 1 + usr/share/sofirem/cache/ttf-linux-libertine | 1 + usr/share/sofirem/cache/ttf-linux-libertine-g | 1 + usr/share/sofirem/cache/ttf-mac-fonts | 1 + .../cache/ttf-material-design-iconic-font | 1 + .../cache/ttf-meslo-nerd-font-powerlevel10k | 1 + usr/share/sofirem/cache/ttf-monofur | 1 + usr/share/sofirem/cache/ttf-ms-fonts | 1 + .../sofirem/cache/ttf-nerd-fonts-symbols | 1 + .../cache/ttf-nerd-fonts-symbols-1000-em | 1 + .../cache/ttf-nerd-fonts-symbols-1000-em-mono | 1 + .../sofirem/cache/ttf-nerd-fonts-symbols-mono | 1 + usr/share/sofirem/cache/ttf-opensans | 1 + usr/share/sofirem/cache/ttf-proggy-clean | 1 + usr/share/sofirem/cache/ttf-roboto | 1 + usr/share/sofirem/cache/ttf-roboto-mono | 1 + .../sofirem/cache/ttf-sourcecodepro-nerd | 1 + .../sofirem/cache/ttf-ubuntu-font-family | 1 + usr/share/sofirem/cache/ttf-wps-fonts | 1 + usr/share/sofirem/cache/tty-clock | 1 + usr/share/sofirem/cache/tty-clock-git | 1 + usr/share/sofirem/cache/tuxboot | 1 + usr/share/sofirem/cache/tuxboot-git | 1 + usr/share/sofirem/cache/tweetdeck-desktop | 1 + usr/share/sofirem/cache/ufetch-arco-git | 1 + usr/share/sofirem/cache/ufetch-git | 1 + usr/share/sofirem/cache/ulauncher | 1 + usr/share/sofirem/cache/unimatrix-git | 1 + usr/share/sofirem/cache/upower | 1 + usr/share/sofirem/cache/urxvt-fullscreen | 1 + usr/share/sofirem/cache/urxvt-perls | 1 + usr/share/sofirem/cache/urxvt-resize-font-git | 1 + usr/share/sofirem/cache/variety | 1 + usr/share/sofirem/cache/ventoy-bin | 1 + usr/share/sofirem/cache/viber | 1 + usr/share/sofirem/cache/vicious | 1 + usr/share/sofirem/cache/vim | 1 + usr/share/sofirem/cache/vim-runtime | 1 + usr/share/sofirem/cache/vimix-cursors | 1 + usr/share/sofirem/cache/vimix-icon-theme-git | 1 + usr/share/sofirem/cache/virtualbox | 1 + usr/share/sofirem/cache/virtualbox-host-dkms | 1 + .../sofirem/cache/visual-studio-code-bin | 1 + usr/share/sofirem/cache/vivaldi | 1 + usr/share/sofirem/cache/vivaldi-ffmpeg-codecs | 1 + usr/share/sofirem/cache/vivaldi-widevine | 1 + usr/share/sofirem/cache/vkbasalt | 1 + usr/share/sofirem/cache/vlc | 1 + usr/share/sofirem/cache/vmware-keymaps | 1 + usr/share/sofirem/cache/vmware-workstation | 1 + usr/share/sofirem/cache/vnstat | 1 + usr/share/sofirem/cache/volumeicon | 1 + usr/share/sofirem/cache/vscodium-bin | 1 + usr/share/sofirem/cache/wacom-settings-git | 1 + usr/share/sofirem/cache/wacom-utility | 1 + usr/share/sofirem/cache/warsow | 1 + usr/share/sofirem/cache/waydroid | 1 + usr/share/sofirem/cache/we10x-icon-theme-git | 1 + usr/share/sofirem/cache/wesnoth | 1 + usr/share/sofirem/cache/whatsapp-nativefier | 1 + .../sofirem/cache/whitesur-icon-theme-git | 1 + usr/share/sofirem/cache/wire-desktop | 1 + usr/share/sofirem/cache/wireshark-qt | 1 + usr/share/sofirem/cache/wmderland-git | 1 + usr/share/sofirem/cache/woeusb | 1 + usr/share/sofirem/cache/workrave | 1 + usr/share/sofirem/cache/worm-dev-git | 1 + usr/share/sofirem/cache/wps-office | 1 + usr/share/sofirem/cache/wps-office-mime | 1 + usr/share/sofirem/cache/wttr | 1 + usr/share/sofirem/cache/xcape | 1 + .../cache/xcursor-arch-cursor-complete | 1 + usr/share/sofirem/cache/xcursor-breeze | 1 + usr/share/sofirem/cache/xcursor-comix | 1 + usr/share/sofirem/cache/xcursor-flatbed | 1 + usr/share/sofirem/cache/xcursor-neutral | 1 + usr/share/sofirem/cache/xcursor-premium | 1 + usr/share/sofirem/cache/xcursor-simpleandsoft | 1 + usr/share/sofirem/cache/xdgmenumaker | 1 + usr/share/sofirem/cache/xdman | 1 + usr/share/sofirem/cache/xdo | 1 + usr/share/sofirem/cache/xf86-video-amdgpu | 1 + usr/share/sofirem/cache/xf86-video-ati | 1 + usr/share/sofirem/cache/xf86-video-intel | 1 + usr/share/sofirem/cache/xf86-video-nouveau | 1 + usr/share/sofirem/cache/xf86-video-openchrome | 1 + usr/share/sofirem/cache/xf86-video-vesa | 1 + usr/share/sofirem/cache/xfburn | 1 + usr/share/sofirem/cache/xfce4-notifyd | 1 + usr/share/sofirem/cache/xfce4-power-manager | 1 + usr/share/sofirem/cache/xfce4-screenshooter | 1 + usr/share/sofirem/cache/xfce4-settings | 1 + usr/share/sofirem/cache/xfce4-taskmanager | 1 + usr/share/sofirem/cache/xfce4-terminal | 1 + .../cache/xfce4-terminal-base16-colors-git | 1 + usr/share/sofirem/cache/xlunch-git | 1 + usr/share/sofirem/cache/xmonad | 1 + usr/share/sofirem/cache/xmonad-contrib | 1 + usr/share/sofirem/cache/xmonad-log | 1 + usr/share/sofirem/cache/xmonad-utils | 1 + usr/share/sofirem/cache/xonotic | 1 + usr/share/sofirem/cache/xonotic-data | 1 + usr/share/sofirem/cache/xpdf | 1 + usr/share/sofirem/cache/xreader | 1 + usr/share/sofirem/cache/xscreensaver | 1 + usr/share/sofirem/cache/xtitle-git | 1 + usr/share/sofirem/cache/yad | 1 + usr/share/sofirem/cache/yakuake | 1 + usr/share/sofirem/cache/yay | 1 + usr/share/sofirem/cache/yay-bin | 1 + usr/share/sofirem/cache/yay-git | 1 + usr/share/sofirem/cache/yin-yang-git | 1 + usr/share/sofirem/cache/youtube-dl | 1 + usr/share/sofirem/cache/youtube-dl-gui-git | 1 + usr/share/sofirem/cache/yt-dlp | 1 + usr/share/sofirem/cache/zafiro-icon-theme | 1 + usr/share/sofirem/cache/zoom | 1 + usr/share/sofirem/cache/zsh | 1 + .../sofirem/cache/zsh-autosuggestions-git | 1 + usr/share/sofirem/cache/zsh-completions | 1 + .../cache/zsh-fast-syntax-highlighting | 1 + .../cache/zsh-history-substring-search-git | 1 + .../sofirem/cache/zsh-syntax-highlighting | 1 + .../sofirem/cache/zsh-syntax-highlighting-git | 1 + .../sofirem/cache/zsh-theme-powerlevel10k-git | 1 + usr/share/sofirem/defaults/sofirem.yaml | 11 + usr/share/sofirem/images/credits.png | Bin 0 -> 10791 bytes usr/share/sofirem/images/panel.png | Bin 0 -> 5394 bytes usr/share/sofirem/images/sofirem.png | 62 + usr/share/sofirem/images/splash.png | Bin 0 -> 551050 bytes ...colinux-keyring-20251209-3-any.pkg.tar.zst | Bin 0 -> 30962 bytes ...ux-mirrorlist-git-24.03-12-any.pkg.tar.zst | Bin 0 -> 14319 bytes ...rlist-nemesis-git-24.03-12-any.pkg.tar.zst | Bin 0 -> 14326 bytes .../sofirem/scripts/get-the-keys-and-repos.sh | 42 + usr/share/sofirem/sofirem.css | 61 + usr/share/sofirem/sofirem.py | 1290 ++++++++ usr/share/sofirem/ui/AboutDialog.py | 192 ++ usr/share/sofirem/ui/AppFrameGUI.py | 523 ++++ usr/share/sofirem/ui/GUI.py | 726 +++++ usr/share/sofirem/ui/ISOPackagesWindow.py | 429 +++ usr/share/sofirem/ui/MessageDialog.py | 118 + usr/share/sofirem/ui/PackageListDialog.py | 283 ++ usr/share/sofirem/ui/PackageSearchWindow.py | 543 ++++ usr/share/sofirem/ui/PackagesImportDialog.py | 228 ++ usr/share/sofirem/ui/PacmanLogWindow.py | 71 + usr/share/sofirem/ui/ProgressBarWindow.py | 87 + usr/share/sofirem/ui/ProgressDialog.py | 400 +++ usr/share/sofirem/ui/SplashScreen.py | 30 + .../yaml-awesome/netinstall-applications.yaml | 111 + .../yaml-awesome/netinstall-arcolinux.yaml | 154 + .../yaml-awesome/netinstall-arcolinuxdev.yaml | 23 + .../netinstall-communication.yaml | 44 + .../netinstall-desktop-wayland.yaml | 85 + .../yaml-awesome/netinstall-desktop.yaml | 1175 +++++++ .../yaml-awesome/netinstall-development.yaml | 34 + .../yaml-awesome/netinstall-drivers.yaml | 41 + .../yaml-awesome/netinstall-filemanagers.yaml | 23 + .../yaml-awesome/netinstall-fonts.yaml | 55 + .../yaml-awesome/netinstall-gaming.yaml | 64 + .../yaml-awesome/netinstall-graphics.yaml | 13 + .../yaml-awesome/netinstall-internet.yaml | 79 + .../yaml-awesome/netinstall-login.yaml | 50 + .../yaml-awesome/netinstall-multimedia.yaml | 77 + .../yaml-awesome/netinstall-nvidia.yaml | 74 + .../yaml-awesome/netinstall-office.yaml | 123 + .../yaml-awesome/netinstall-terminals.yaml | 101 + .../yaml-awesome/netinstall-theming.yaml | 150 + .../sofirem/yaml-awesome/netinstall-usb.yaml | 36 + .../yaml-awesome/netinstall-utilities.yaml | 224 ++ .../sofirem/yaml/netinstall-applications.yaml | 63 + .../yaml/netinstall-arcolinux-dev.yaml | 23 + .../sofirem/yaml/netinstall-arcolinux.yaml | 128 + .../yaml/netinstall-communication.yaml | 44 + .../sofirem/yaml/netinstall-development.yaml | 34 + .../sofirem/yaml/netinstall-filemanagers.yaml | 24 + usr/share/sofirem/yaml/netinstall-fonts.yaml | 55 + usr/share/sofirem/yaml/netinstall-gaming.yaml | 64 + .../sofirem/yaml/netinstall-graphics.yaml | 13 + .../sofirem/yaml/netinstall-internet.yaml | 77 + usr/share/sofirem/yaml/netinstall-login.yaml | 50 + .../sofirem/yaml/netinstall-multimedia.yaml | 78 + usr/share/sofirem/yaml/netinstall-nvidia.yaml | 27 + usr/share/sofirem/yaml/netinstall-office.yaml | 32 + .../sofirem/yaml/netinstall-terminals.yaml | 94 + .../sofirem/yaml/netinstall-theming.yaml | 142 + .../sofirem/yaml/netinstall-utilities.yaml | 158 + usr/share/sofirem/yaml/netinstall-vm.yaml | 17 + 1276 files changed, 14067 insertions(+) create mode 100644 .gitignore create mode 120000 usr/bin/sofi create mode 100755 usr/bin/sofirem create mode 100644 usr/share/applications/sofirem.desktop create mode 100644 usr/share/icons/hicolor/scalable/apps/sofirem.svg create mode 100644 usr/share/polkit-1/actions/org.arcolinux.sofirem.policy create mode 100644 usr/share/sofirem/Functions.py create mode 100644 usr/share/sofirem/Functions_Ref_DO_NOT_MODIFY.py create mode 100644 usr/share/sofirem/Package.py create mode 100644 usr/share/sofirem/Settings.py create mode 100644 usr/share/sofirem/cache/a-candy-beauty-icon-theme-git create mode 100644 usr/share/sofirem/cache/abiword create mode 100644 usr/share/sofirem/cache/acpilight create mode 100644 usr/share/sofirem/cache/adapta-gtk-theme create mode 100644 usr/share/sofirem/cache/adobe-source-code-pro-fonts create mode 100644 usr/share/sofirem/cache/adobe-source-sans-fonts create mode 100644 usr/share/sofirem/cache/adobe-source-serif-fonts create mode 100644 usr/share/sofirem/cache/airdroid-nativefier create mode 100644 usr/share/sofirem/cache/aisleriot create mode 100644 usr/share/sofirem/cache/alacritty create mode 100644 usr/share/sofirem/cache/alacritty-themes create mode 100644 usr/share/sofirem/cache/albert create mode 100644 usr/share/sofirem/cache/alsi create mode 100644 usr/share/sofirem/cache/amberol create mode 100644 usr/share/sofirem/cache/amd-ucode create mode 100644 usr/share/sofirem/cache/android-file-transfer create mode 100644 usr/share/sofirem/cache/android-sdk-platform-tools create mode 100644 usr/share/sofirem/cache/android-tools create mode 100644 usr/share/sofirem/cache/anydesk-bin create mode 100644 usr/share/sofirem/cache/appimagelauncher create mode 100644 usr/share/sofirem/cache/arc-darkest-theme-git create mode 100644 usr/share/sofirem/cache/arc-icon-theme create mode 100644 usr/share/sofirem/cache/arc-x-icons-theme create mode 100644 usr/share/sofirem/cache/archey3 create mode 100644 usr/share/sofirem/cache/archlinux-login-backgrounds-git create mode 100644 usr/share/sofirem/cache/archlinux-logout-git create mode 100644 usr/share/sofirem/cache/archlinux-tweak-tool-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-aqua-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-archlinux-blue-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-arcolinux-blue-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-azul-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-azure-dodger-blue-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-azure-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-blood-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-blue-sky-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-botticelli-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-bright-lilac-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-bright-lime-green-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-carnation-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-carolina-blue-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-casablanca-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-crimson-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-dawn-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-dodger-blue-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-emerald-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-evopop-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-fern-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-fire-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-froly-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-havelock-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-hibiscus-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-kde create mode 100644 usr/share/sofirem/cache/arcolinux-arc-light-blue-grey-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-light-blue-surfn-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-light-salmon-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-mandy-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-mantis-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-medium-blue-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-niagara-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-nice-blue-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-numix-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-orchid-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-pale-grey-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-paper-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-pink-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-polo-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-punch-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-red-orange-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-rusty-orange-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-sky-blue-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-slate-grey-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-smoke-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-soft-blue-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-tacao-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-tangerine-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-themes-2021-creative-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-themes-2021-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-themes-2021-sky-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-themes-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-tory-git create mode 100644 usr/share/sofirem/cache/arcolinux-arc-warm-pink-git create mode 100644 usr/share/sofirem/cache/arcolinux-awesome-git create mode 100644 usr/share/sofirem/cache/arcolinux-berry-git create mode 100644 usr/share/sofirem/cache/arcolinux-bspwm-git create mode 100644 usr/share/sofirem/cache/arcolinux-budgie-dconf-git create mode 100644 usr/share/sofirem/cache/arcolinux-budgie-git create mode 100644 usr/share/sofirem/cache/arcolinux-chadwm-git create mode 100644 usr/share/sofirem/cache/arcolinux-cinnamon-dconf-git create mode 100644 usr/share/sofirem/cache/arcolinux-cinnamon-git create mode 100644 usr/share/sofirem/cache/arcolinux-common-git create mode 100644 usr/share/sofirem/cache/arcolinux-config-all-desktops-git create mode 100644 usr/share/sofirem/cache/arcolinux-config-plasma-git create mode 100644 usr/share/sofirem/cache/arcolinux-conky-collection-git create mode 100644 usr/share/sofirem/cache/arcolinux-conky-collection-plasma-git create mode 100644 usr/share/sofirem/cache/arcolinux-cutefish-dconf-git create mode 100644 usr/share/sofirem/cache/arcolinux-cutefish-git create mode 100644 usr/share/sofirem/cache/arcolinux-cwm-git create mode 100644 usr/share/sofirem/cache/arcolinux-dconf-all-desktops-git create mode 100644 usr/share/sofirem/cache/arcolinux-deepin-dconf-git create mode 100644 usr/share/sofirem/cache/arcolinux-deepin-git create mode 100644 usr/share/sofirem/cache/arcolinux-desktop-trasher-git create mode 100644 usr/share/sofirem/cache/arcolinux-docs-git create mode 100644 usr/share/sofirem/cache/arcolinux-dusk-git create mode 100644 usr/share/sofirem/cache/arcolinux-dwm-git create mode 100644 usr/share/sofirem/cache/arcolinux-dwm-slstatus-git create mode 100644 usr/share/sofirem/cache/arcolinux-dwm-st-git create mode 100644 usr/share/sofirem/cache/arcolinux-fvwm3-git create mode 100644 usr/share/sofirem/cache/arcolinux-geany-git create mode 100644 usr/share/sofirem/cache/arcolinux-gnome-dconf-git create mode 100644 usr/share/sofirem/cache/arcolinux-gnome-git create mode 100644 usr/share/sofirem/cache/arcolinux-gtk3-arcolinux-candy-beauty-git create mode 100644 usr/share/sofirem/cache/arcolinux-gtk3-sardi-arc-git create mode 100644 usr/share/sofirem/cache/arcolinux-gtk3-surfn-arc-breeze-git create mode 100644 usr/share/sofirem/cache/arcolinux-gtk3-surfn-arc-git create mode 100644 usr/share/sofirem/cache/arcolinux-guake-autostart-git create mode 100644 usr/share/sofirem/cache/arcolinux-herbstluftwm-git create mode 100644 usr/share/sofirem/cache/arcolinux-hypr-git create mode 100644 usr/share/sofirem/cache/arcolinux-hyprland-git create mode 100644 usr/share/sofirem/cache/arcolinux-hyprland-profile-git create mode 100644 usr/share/sofirem/cache/arcolinux-i3wm-git create mode 100644 usr/share/sofirem/cache/arcolinux-icewm-git create mode 100644 usr/share/sofirem/cache/arcolinux-jwm-git create mode 100644 usr/share/sofirem/cache/arcolinux-leftwm-git create mode 100644 usr/share/sofirem/cache/arcolinux-local-xfce4-git create mode 100644 usr/share/sofirem/cache/arcolinux-lxqt-git create mode 100644 usr/share/sofirem/cache/arcolinux-mate-dconf-git create mode 100644 usr/share/sofirem/cache/arcolinux-mate-git create mode 100644 usr/share/sofirem/cache/arcolinux-meta-arc-theme create mode 100644 usr/share/sofirem/cache/arcolinux-meta-asian-fonts create mode 100644 usr/share/sofirem/cache/arcolinux-meta-fun create mode 100644 usr/share/sofirem/cache/arcolinux-meta-log create mode 100644 usr/share/sofirem/cache/arcolinux-meta-samba create mode 100644 usr/share/sofirem/cache/arcolinux-meta-sddm-themes create mode 100644 usr/share/sofirem/cache/arcolinux-meta-steam-amd create mode 100644 usr/share/sofirem/cache/arcolinux-meta-steam-intel create mode 100644 usr/share/sofirem/cache/arcolinux-meta-steam-nvidia create mode 100644 usr/share/sofirem/cache/arcolinux-meta-utilities create mode 100644 usr/share/sofirem/cache/arcolinux-meta-wine create mode 100644 usr/share/sofirem/cache/arcolinux-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/arcolinux-nitrogen-git create mode 100644 usr/share/sofirem/cache/arcolinux-obmenu-generator-git create mode 100644 usr/share/sofirem/cache/arcolinux-openbox-git create mode 100644 usr/share/sofirem/cache/arcolinux-openbox-themes-git create mode 100644 usr/share/sofirem/cache/arcolinux-paleofetch-git create mode 100644 usr/share/sofirem/cache/arcolinux-pamac-all create mode 100644 usr/share/sofirem/cache/arcolinux-pipemenus-git create mode 100644 usr/share/sofirem/cache/arcolinux-plank-git create mode 100644 usr/share/sofirem/cache/arcolinux-plank-themes-git create mode 100644 usr/share/sofirem/cache/arcolinux-plasma-dconf-git create mode 100644 usr/share/sofirem/cache/arcolinux-plasma-git create mode 100644 usr/share/sofirem/cache/arcolinux-plasma-keybindings-git create mode 100644 usr/share/sofirem/cache/arcolinux-plasma-kservices-git create mode 100644 usr/share/sofirem/cache/arcolinux-plasma-servicemenus-git create mode 100644 usr/share/sofirem/cache/arcolinux-plasma-theme-candy-beauty-arc-dark-git create mode 100644 usr/share/sofirem/cache/arcolinux-plasma-theme-candy-beauty-nordic-git create mode 100644 usr/share/sofirem/cache/arcolinux-plasma-theme-surfn-arc-dark-git create mode 100644 usr/share/sofirem/cache/arcolinux-plasma-theme-surfn-nordic-git create mode 100644 usr/share/sofirem/cache/arcolinux-polybar-git create mode 100644 usr/share/sofirem/cache/arcolinux-powermenu-git create mode 100644 usr/share/sofirem/cache/arcolinux-qt5-git create mode 100644 usr/share/sofirem/cache/arcolinux-qtile-git create mode 100644 usr/share/sofirem/cache/arcolinux-reflector-simple-git create mode 100644 usr/share/sofirem/cache/arcolinux-rofi-git create mode 100644 usr/share/sofirem/cache/arcolinux-rofi-themes-git create mode 100644 usr/share/sofirem/cache/arcolinux-root-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-backgrounds-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-breeze-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-breeze-minimal-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-chili-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-fralonra-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-futuristic-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-materia-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-redrock-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-simplicity-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-slice-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-sugar-candy-git create mode 100644 usr/share/sofirem/cache/arcolinux-sddm-urbanlifestyle-git create mode 100644 usr/share/sofirem/cache/arcolinux-spectrwm-git create mode 100644 usr/share/sofirem/cache/arcolinux-sway-git create mode 100644 usr/share/sofirem/cache/arcolinux-sway-profile-git create mode 100644 usr/share/sofirem/cache/arcolinux-sweet-mars-git create mode 100644 usr/share/sofirem/cache/arcolinux-teamviewer create mode 100644 usr/share/sofirem/cache/arcolinux-tellme-git create mode 100644 usr/share/sofirem/cache/arcolinux-tint2-git create mode 100644 usr/share/sofirem/cache/arcolinux-tint2-themes-git create mode 100644 usr/share/sofirem/cache/arcolinux-ukui-dconf-git create mode 100644 usr/share/sofirem/cache/arcolinux-ukui-git create mode 100644 usr/share/sofirem/cache/arcolinux-volumeicon-git create mode 100644 usr/share/sofirem/cache/arcolinux-wallpapers-candy-git create mode 100644 usr/share/sofirem/cache/arcolinux-wallpapers-dual-git create mode 100644 usr/share/sofirem/cache/arcolinux-wallpapers-git create mode 100644 usr/share/sofirem/cache/arcolinux-wayland-profile-git create mode 100644 usr/share/sofirem/cache/arcolinux-wmderland-git create mode 100644 usr/share/sofirem/cache/arcolinux-worm-git create mode 100644 usr/share/sofirem/cache/arcolinux-xfce-git create mode 100644 usr/share/sofirem/cache/arcolinux-xlunch-git create mode 100644 usr/share/sofirem/cache/arcolinux-xmonad-polybar-git create mode 100644 usr/share/sofirem/cache/arcolinux-zsh-git create mode 100644 usr/share/sofirem/cache/ardour create mode 100644 usr/share/sofirem/cache/arduino create mode 100644 usr/share/sofirem/cache/aria2 create mode 100644 usr/share/sofirem/cache/ark create mode 100644 usr/share/sofirem/cache/armagetronad create mode 100644 usr/share/sofirem/cache/asciiquarium create mode 100644 usr/share/sofirem/cache/astromenace create mode 100644 usr/share/sofirem/cache/atom create mode 100644 usr/share/sofirem/cache/atril create mode 100644 usr/share/sofirem/cache/audacious create mode 100644 usr/share/sofirem/cache/audacious-plugins create mode 100644 usr/share/sofirem/cache/audacity create mode 100644 usr/share/sofirem/cache/aura-bin create mode 100644 usr/share/sofirem/cache/auto-cpufreq create mode 100644 usr/share/sofirem/cache/autorandr create mode 100644 usr/share/sofirem/cache/autotiling create mode 100644 usr/share/sofirem/cache/awesome create mode 100644 usr/share/sofirem/cache/awesome-terminal-fonts create mode 100644 usr/share/sofirem/cache/ayu-theme create mode 100644 usr/share/sofirem/cache/baobab create mode 100644 usr/share/sofirem/cache/base16-alacritty-git create mode 100644 usr/share/sofirem/cache/bash-pipes create mode 100644 usr/share/sofirem/cache/bauh create mode 100644 usr/share/sofirem/cache/berry-dev-git create mode 100644 usr/share/sofirem/cache/betterlockscreen create mode 100644 usr/share/sofirem/cache/betterlockscreen-git create mode 100644 usr/share/sofirem/cache/bibata-cursor-theme-bin create mode 100644 usr/share/sofirem/cache/bibata-cursor-translucent create mode 100644 usr/share/sofirem/cache/bibata-extra-cursor-theme create mode 100644 usr/share/sofirem/cache/bibata-rainbow-cursor-theme create mode 100644 usr/share/sofirem/cache/bitwarden create mode 100644 usr/share/sofirem/cache/bleachbit create mode 100644 usr/share/sofirem/cache/blender create mode 100644 usr/share/sofirem/cache/blender-benchmark create mode 100644 usr/share/sofirem/cache/bluefish create mode 100644 usr/share/sofirem/cache/bottom create mode 100644 usr/share/sofirem/cache/boxes create mode 100644 usr/share/sofirem/cache/bpytop create mode 100644 usr/share/sofirem/cache/brackets-bin create mode 100644 usr/share/sofirem/cache/brasero create mode 100644 usr/share/sofirem/cache/brave-bin create mode 100644 usr/share/sofirem/cache/breeze create mode 100644 usr/share/sofirem/cache/breeze-icons create mode 100644 usr/share/sofirem/cache/brightnessctl create mode 100644 usr/share/sofirem/cache/brillo create mode 100644 usr/share/sofirem/cache/brltty create mode 100644 usr/share/sofirem/cache/bspwm create mode 100644 usr/share/sofirem/cache/btop create mode 100644 usr/share/sofirem/cache/btrbk create mode 100644 usr/share/sofirem/cache/btrfs-assistant create mode 100644 usr/share/sofirem/cache/btrfsmaintenance create mode 100644 usr/share/sofirem/cache/budgie-desktop create mode 100644 usr/share/sofirem/cache/budgie-extras create mode 100644 usr/share/sofirem/cache/bumblebee create mode 100644 usr/share/sofirem/cache/bumblebee-status create mode 100644 usr/share/sofirem/cache/bumblebee-status-git create mode 100644 usr/share/sofirem/cache/byte create mode 100644 usr/share/sofirem/cache/c-lolcat create mode 100644 usr/share/sofirem/cache/caffeine create mode 100644 usr/share/sofirem/cache/caffeine-ng create mode 100644 usr/share/sofirem/cache/caja create mode 100644 usr/share/sofirem/cache/calibre create mode 100644 usr/share/sofirem/cache/calligra create mode 100644 usr/share/sofirem/cache/calligra-plan create mode 100644 usr/share/sofirem/cache/capitaine-cursors create mode 100644 usr/share/sofirem/cache/catfish create mode 100644 usr/share/sofirem/cache/catppuccin-cursors-git create mode 100644 usr/share/sofirem/cache/cava create mode 100644 usr/share/sofirem/cache/celluloid create mode 100644 usr/share/sofirem/cache/cheese create mode 100644 usr/share/sofirem/cache/chrome-gnome-shell create mode 100644 usr/share/sofirem/cache/chromium create mode 100644 usr/share/sofirem/cache/chromium-bsu create mode 100644 usr/share/sofirem/cache/chromium-widevine create mode 100644 usr/share/sofirem/cache/cinnamon create mode 100644 usr/share/sofirem/cache/cinnamon-translations create mode 100644 usr/share/sofirem/cache/ckb-next-git create mode 100644 usr/share/sofirem/cache/clapper create mode 100644 usr/share/sofirem/cache/clementine create mode 100644 usr/share/sofirem/cache/cmatrix-git create mode 100644 usr/share/sofirem/cache/code create mode 100644 usr/share/sofirem/cache/codeblocks create mode 100644 usr/share/sofirem/cache/conky-lua-archers create mode 100644 usr/share/sofirem/cache/cool-retro-term create mode 100644 usr/share/sofirem/cache/corrections/acpilight create mode 100644 usr/share/sofirem/cache/corrections/aisleriot create mode 100644 usr/share/sofirem/cache/corrections/arc-x-icons-theme create mode 100644 usr/share/sofirem/cache/corrections/arcolinux-conky-collection-plasma-git create mode 100644 usr/share/sofirem/cache/corrections/arcolinux-desktop-trasher-git create mode 100644 usr/share/sofirem/cache/corrections/arcolinux-pamac-all create mode 100644 usr/share/sofirem/cache/corrections/arcolinux-sddm-simplicity-git create mode 100644 usr/share/sofirem/cache/corrections/aura-bin create mode 100644 usr/share/sofirem/cache/corrections/bauh create mode 100644 usr/share/sofirem/cache/corrections/blender-benchmark create mode 100644 usr/share/sofirem/cache/corrections/bpytop create mode 100644 usr/share/sofirem/cache/corrections/breeze create mode 100644 usr/share/sofirem/cache/corrections/btrbk create mode 100644 usr/share/sofirem/cache/corrections/caffeine-ng create mode 100644 usr/share/sofirem/cache/corrections/calligra-plan create mode 100644 usr/share/sofirem/cache/corrections/clapper create mode 100644 usr/share/sofirem/cache/corrections/conky-lua-archers create mode 100644 usr/share/sofirem/cache/corrections/cpu-x create mode 100644 usr/share/sofirem/cache/corrections/debtap create mode 100644 usr/share/sofirem/cache/corrections/deja-dup create mode 100644 usr/share/sofirem/cache/corrections/discord_arch_electron create mode 100644 usr/share/sofirem/cache/corrections/disper create mode 100644 usr/share/sofirem/cache/corrections/doublecmd-qt5 create mode 100644 usr/share/sofirem/cache/corrections/downgrade create mode 100644 usr/share/sofirem/cache/corrections/dropbox create mode 100644 usr/share/sofirem/cache/corrections/faba-icon-theme-git create mode 100644 usr/share/sofirem/cache/corrections/faba-mono-icons-git create mode 100644 usr/share/sofirem/cache/corrections/find-the-command-git create mode 100644 usr/share/sofirem/cache/corrections/fingerprint-gui create mode 100644 usr/share/sofirem/cache/corrections/flatpak create mode 100644 usr/share/sofirem/cache/corrections/florence create mode 100644 usr/share/sofirem/cache/corrections/freeoffice create mode 100644 usr/share/sofirem/cache/corrections/gamemode create mode 100644 usr/share/sofirem/cache/corrections/geekbench create mode 100644 usr/share/sofirem/cache/corrections/google-earth-pro create mode 100644 usr/share/sofirem/cache/corrections/gputest create mode 100644 usr/share/sofirem/cache/corrections/gsmartcontrol create mode 100644 usr/share/sofirem/cache/corrections/halo-icons-git create mode 100644 usr/share/sofirem/cache/corrections/hddtemp create mode 100644 usr/share/sofirem/cache/corrections/hw-probe create mode 100644 usr/share/sofirem/cache/corrections/insync create mode 100644 usr/share/sofirem/cache/corrections/intellij-idea-community-edition create mode 100644 usr/share/sofirem/cache/corrections/jdownloader2 create mode 100644 usr/share/sofirem/cache/corrections/kodi-addons create mode 100644 usr/share/sofirem/cache/corrections/kodi-x11 create mode 100644 usr/share/sofirem/cache/corrections/layan-cursor-theme-git create mode 100644 usr/share/sofirem/cache/corrections/linux-rt create mode 100644 usr/share/sofirem/cache/corrections/linux-rt-headers create mode 100644 usr/share/sofirem/cache/corrections/linux-rt-lts create mode 100644 usr/share/sofirem/cache/corrections/linux-rt-lts-headers create mode 100644 usr/share/sofirem/cache/corrections/linux-xanmod-anbox create mode 100644 usr/share/sofirem/cache/corrections/linux-xanmod-anbox-headers create mode 100644 usr/share/sofirem/cache/corrections/linux-xanmod-headers create mode 100644 usr/share/sofirem/cache/corrections/linux-xanmod-lts-headers create mode 100644 usr/share/sofirem/cache/corrections/linux-xanmod-rt-headers create mode 100644 usr/share/sofirem/cache/corrections/linux-xanmod-tt-headers create mode 100644 usr/share/sofirem/cache/corrections/lm_sensors create mode 100644 usr/share/sofirem/cache/corrections/lshw create mode 100644 usr/share/sofirem/cache/corrections/mailspring create mode 100644 usr/share/sofirem/cache/corrections/materia-gtk-theme create mode 100644 usr/share/sofirem/cache/corrections/mcomix create mode 100644 usr/share/sofirem/cache/corrections/mintstick-bin create mode 100644 usr/share/sofirem/cache/corrections/moka-icon-theme-git create mode 100644 usr/share/sofirem/cache/corrections/multimc-git create mode 100644 usr/share/sofirem/cache/corrections/neofetch create mode 100644 usr/share/sofirem/cache/corrections/nordzy-icon-theme-git create mode 100644 usr/share/sofirem/cache/corrections/numix-gtk-theme-git create mode 100644 usr/share/sofirem/cache/corrections/oh-my-zsh-git create mode 100644 usr/share/sofirem/cache/corrections/open-vm-tools create mode 100644 usr/share/sofirem/cache/corrections/optimus-manager-qt create mode 100644 usr/share/sofirem/cache/corrections/oranchelo-icon-theme-git create mode 100644 usr/share/sofirem/cache/corrections/orchis-theme-git create mode 100644 usr/share/sofirem/cache/corrections/oxy-neon create mode 100644 usr/share/sofirem/cache/corrections/pacseek-bin create mode 100644 usr/share/sofirem/cache/corrections/pacui create mode 100644 usr/share/sofirem/cache/corrections/pacui-git create mode 100644 usr/share/sofirem/cache/corrections/papirus-linux-universe create mode 100644 usr/share/sofirem/cache/corrections/phoronix-test-suite create mode 100644 usr/share/sofirem/cache/corrections/picom-ibhagwan-git create mode 100644 usr/share/sofirem/cache/corrections/picom-jonaburg-git create mode 100644 usr/share/sofirem/cache/corrections/pikaur-git create mode 100644 usr/share/sofirem/cache/corrections/protonup-qt-bin create mode 100644 usr/share/sofirem/cache/corrections/qbittorrent create mode 100644 usr/share/sofirem/cache/corrections/qtox create mode 100644 usr/share/sofirem/cache/corrections/qtwebflix-git create mode 100644 usr/share/sofirem/cache/corrections/remmina create mode 100644 usr/share/sofirem/cache/corrections/ripgrep create mode 100644 usr/share/sofirem/cache/corrections/ripgrep-all create mode 100644 usr/share/sofirem/cache/corrections/sardi-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-flat-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-flat-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-flat-mixing-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-flexible-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-flexible-luv-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-flexible-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-flexible-mixing-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-flexible-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-ghost-flexible-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-ghost-flexible-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-ghost-flexible-mixing-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-ghost-flexible-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-icons create mode 100644 usr/share/sofirem/cache/corrections/sardi-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-mixing-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-mono-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-mono-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-mono-mixing-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-mono-numix-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-mono-papirus-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-orb-colora-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-orb-colora-mixing-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sardi-orb-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/corrections/sayonara-player create mode 100644 usr/share/sofirem/cache/corrections/screenkey-git create mode 100644 usr/share/sofirem/cache/corrections/shairport-sync create mode 100644 usr/share/sofirem/cache/corrections/snap-pac create mode 100644 usr/share/sofirem/cache/corrections/snapper create mode 100644 usr/share/sofirem/cache/corrections/spotifywm-git create mode 100644 usr/share/sofirem/cache/corrections/surfn-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/corrections/systemd-manager-git create mode 100644 usr/share/sofirem/cache/corrections/tabby-bin create mode 100644 usr/share/sofirem/cache/corrections/tor-browser create mode 100644 usr/share/sofirem/cache/corrections/ttf-dejavu create mode 100644 usr/share/sofirem/cache/corrections/ttf-eurof create mode 100644 usr/share/sofirem/cache/corrections/ttf-hack create mode 100644 usr/share/sofirem/cache/corrections/ttf-hactor create mode 100644 usr/share/sofirem/cache/corrections/ttf-liberation create mode 100644 usr/share/sofirem/cache/corrections/ttf-linux-libertine create mode 100644 usr/share/sofirem/cache/corrections/ttf-mac-fonts create mode 100644 usr/share/sofirem/cache/corrections/ttf-nerd-fonts-symbols-1000-em create mode 100644 usr/share/sofirem/cache/corrections/ttf-nerd-fonts-symbols-1000-em-mono create mode 100644 usr/share/sofirem/cache/corrections/ttf-roboto-mono create mode 100644 usr/share/sofirem/cache/corrections/tuxboot create mode 100644 usr/share/sofirem/cache/corrections/tuxboot-git create mode 100644 usr/share/sofirem/cache/corrections/unimatrix-git create mode 100644 usr/share/sofirem/cache/corrections/upower create mode 100644 usr/share/sofirem/cache/corrections/variety create mode 100644 usr/share/sofirem/cache/corrections/vim-runtime create mode 100644 usr/share/sofirem/cache/corrections/vimix-cursors create mode 100644 usr/share/sofirem/cache/corrections/visual-studio-code-bin create mode 100644 usr/share/sofirem/cache/corrections/vivaldi-widevine create mode 100644 usr/share/sofirem/cache/corrections/vmware-workstation create mode 100644 usr/share/sofirem/cache/corrections/waydroid create mode 100644 usr/share/sofirem/cache/corrections/woeusb create mode 100644 usr/share/sofirem/cache/corrections/wttr create mode 100644 usr/share/sofirem/cache/corrections/xcursor-arch-cursor-complete create mode 100644 usr/share/sofirem/cache/corrections/xcursor-breeze create mode 100644 usr/share/sofirem/cache/corrections/xdman create mode 100644 usr/share/sofirem/cache/corrections/yad create mode 100644 usr/share/sofirem/cache/corrections/yay create mode 100644 usr/share/sofirem/cache/corrections/yay-bin create mode 100644 usr/share/sofirem/cache/corrections/yay-git create mode 100644 usr/share/sofirem/cache/corrections/zsh-history-substring-search-git create mode 100644 usr/share/sofirem/cache/corrections/zsh-theme-powerlevel10k-git create mode 100644 usr/share/sofirem/cache/cowfortune create mode 100644 usr/share/sofirem/cache/cpu-x create mode 100644 usr/share/sofirem/cache/cpufetch-git create mode 100644 usr/share/sofirem/cache/cpuid create mode 100644 usr/share/sofirem/cache/cryfs create mode 100644 usr/share/sofirem/cache/cuda create mode 100644 usr/share/sofirem/cache/curseradio-git create mode 100644 usr/share/sofirem/cache/cwm create mode 100644 usr/share/sofirem/cache/cxxmatrix-git create mode 100644 usr/share/sofirem/cache/darktable create mode 100644 usr/share/sofirem/cache/deadbeef create mode 100644 usr/share/sofirem/cache/debtap create mode 100644 usr/share/sofirem/cache/deezer create mode 100644 usr/share/sofirem/cache/deja-dup create mode 100644 usr/share/sofirem/cache/deluge create mode 100644 usr/share/sofirem/cache/digikam create mode 100644 usr/share/sofirem/cache/discord create mode 100644 usr/share/sofirem/cache/discord_arch_electron create mode 100644 usr/share/sofirem/cache/discover create mode 100644 usr/share/sofirem/cache/disper create mode 100644 usr/share/sofirem/cache/dmenu create mode 100644 usr/share/sofirem/cache/dmidecode create mode 100644 usr/share/sofirem/cache/dolphin create mode 100644 usr/share/sofirem/cache/dolphin-plugins create mode 100644 usr/share/sofirem/cache/doublecmd-qt5 create mode 100644 usr/share/sofirem/cache/downgrade create mode 100644 usr/share/sofirem/cache/dracula-cursors-git create mode 100644 usr/share/sofirem/cache/dracula-gtk-theme create mode 100644 usr/share/sofirem/cache/dracula-icons-git create mode 100644 usr/share/sofirem/cache/droidcam create mode 100644 usr/share/sofirem/cache/dropbox create mode 100644 usr/share/sofirem/cache/duf create mode 100644 usr/share/sofirem/cache/duf-bin create mode 100644 usr/share/sofirem/cache/edid-decode-git create mode 100644 usr/share/sofirem/cache/element-desktop create mode 100644 usr/share/sofirem/cache/elisa create mode 100644 usr/share/sofirem/cache/emacs create mode 100644 usr/share/sofirem/cache/encfs create mode 100644 usr/share/sofirem/cache/enlightenment create mode 100644 usr/share/sofirem/cache/enpass-bin create mode 100644 usr/share/sofirem/cache/envycontrol create mode 100644 usr/share/sofirem/cache/epdfview create mode 100644 usr/share/sofirem/cache/espeak-ng create mode 100644 usr/share/sofirem/cache/etcher-bin create mode 100644 usr/share/sofirem/cache/evince create mode 100644 usr/share/sofirem/cache/evolution create mode 100644 usr/share/sofirem/cache/extremetuxracer create mode 100644 usr/share/sofirem/cache/faba-icon-theme-git create mode 100644 usr/share/sofirem/cache/faba-mono-icons-git create mode 100644 usr/share/sofirem/cache/falkon create mode 100644 usr/share/sofirem/cache/fancontrol-gui-git create mode 100644 usr/share/sofirem/cache/fastfetch create mode 100644 usr/share/sofirem/cache/fastfetch-git create mode 100644 usr/share/sofirem/cache/feh create mode 100644 usr/share/sofirem/cache/ffmpegthumbs create mode 100644 usr/share/sofirem/cache/figlet create mode 100644 usr/share/sofirem/cache/filebot create mode 100644 usr/share/sofirem/cache/filezilla create mode 100644 usr/share/sofirem/cache/find-the-command-git create mode 100644 usr/share/sofirem/cache/fingerprint-gui create mode 100644 usr/share/sofirem/cache/firefox create mode 100644 usr/share/sofirem/cache/firefox-adblock-plus create mode 100644 usr/share/sofirem/cache/firefox-ublock-origin create mode 100644 usr/share/sofirem/cache/flameshot-git create mode 100644 usr/share/sofirem/cache/flat-remix-git create mode 100644 usr/share/sofirem/cache/flatpak create mode 100644 usr/share/sofirem/cache/flavours create mode 100644 usr/share/sofirem/cache/florence create mode 100644 usr/share/sofirem/cache/fluent-gtk-theme create mode 100644 usr/share/sofirem/cache/fluent-icon-theme-git create mode 100644 usr/share/sofirem/cache/fluent-kde-theme-git create mode 100644 usr/share/sofirem/cache/focuswriter create mode 100644 usr/share/sofirem/cache/font-manager create mode 100644 usr/share/sofirem/cache/font-manager-git create mode 100644 usr/share/sofirem/cache/fragments create mode 100644 usr/share/sofirem/cache/freeciv create mode 100644 usr/share/sofirem/cache/freedownloadmanager create mode 100644 usr/share/sofirem/cache/freeoffice create mode 100644 usr/share/sofirem/cache/freetube-bin create mode 100644 usr/share/sofirem/cache/fvwm3-git create mode 100644 usr/share/sofirem/cache/g4music create mode 100644 usr/share/sofirem/cache/galculator create mode 100644 usr/share/sofirem/cache/game-devices-udev create mode 100644 usr/share/sofirem/cache/gamehub-bin create mode 100644 usr/share/sofirem/cache/gamemode create mode 100644 usr/share/sofirem/cache/gammy create mode 100644 usr/share/sofirem/cache/gdm create mode 100644 usr/share/sofirem/cache/gdown create mode 100644 usr/share/sofirem/cache/geany create mode 100644 usr/share/sofirem/cache/geany-plugins create mode 100644 usr/share/sofirem/cache/geary create mode 100644 usr/share/sofirem/cache/geekbench create mode 100644 usr/share/sofirem/cache/ghostwriter create mode 100644 usr/share/sofirem/cache/gimp create mode 100644 usr/share/sofirem/cache/gitahead create mode 100644 usr/share/sofirem/cache/gitahead-bin create mode 100644 usr/share/sofirem/cache/gitfiend create mode 100644 usr/share/sofirem/cache/gitg create mode 100644 usr/share/sofirem/cache/github-desktop-bin create mode 100644 usr/share/sofirem/cache/gitkraken create mode 100644 usr/share/sofirem/cache/gksu create mode 100644 usr/share/sofirem/cache/glade create mode 100644 usr/share/sofirem/cache/glances create mode 100644 usr/share/sofirem/cache/gmusicbrowser create mode 100644 usr/share/sofirem/cache/gnome-chess create mode 100644 usr/share/sofirem/cache/gnome-disk-utility create mode 100644 usr/share/sofirem/cache/gnome-screenshot create mode 100644 usr/share/sofirem/cache/gnome-shell-extension-appindicator-git create mode 100644 usr/share/sofirem/cache/gnome-shell-extension-dash-to-dock create mode 100644 usr/share/sofirem/cache/gnome-shell-extension-pop-shell-git create mode 100644 usr/share/sofirem/cache/gnome-software create mode 100644 usr/share/sofirem/cache/gnome-software-packagekit-plugin create mode 100644 usr/share/sofirem/cache/gnome-system-monitor create mode 100644 usr/share/sofirem/cache/gnome-system-tools create mode 100644 usr/share/sofirem/cache/gnome-terminal create mode 100644 usr/share/sofirem/cache/gnome-terminal-transparency create mode 100644 usr/share/sofirem/cache/gnuchess create mode 100644 usr/share/sofirem/cache/gnumeric create mode 100644 usr/share/sofirem/cache/gocryptfs create mode 100644 usr/share/sofirem/cache/google-chat-linux-bin create mode 100644 usr/share/sofirem/cache/google-chrome create mode 100644 usr/share/sofirem/cache/google-earth-pro create mode 100644 usr/share/sofirem/cache/gotop-bin create mode 100644 usr/share/sofirem/cache/goverlay-bin create mode 100644 usr/share/sofirem/cache/gpick create mode 100644 usr/share/sofirem/cache/gputest create mode 100644 usr/share/sofirem/cache/graphite-gtk-theme-git create mode 100644 usr/share/sofirem/cache/grsync create mode 100644 usr/share/sofirem/cache/grub-btrfs create mode 100644 usr/share/sofirem/cache/grub-customizer create mode 100644 usr/share/sofirem/cache/gsimplecal create mode 100644 usr/share/sofirem/cache/gsmartcontrol create mode 100644 usr/share/sofirem/cache/gtk2-perl create mode 100644 usr/share/sofirem/cache/gtop create mode 100644 usr/share/sofirem/cache/guake create mode 100644 usr/share/sofirem/cache/gufw create mode 100644 usr/share/sofirem/cache/gummy create mode 100644 usr/share/sofirem/cache/guvcview create mode 100644 usr/share/sofirem/cache/gvfs create mode 100644 usr/share/sofirem/cache/gwe create mode 100644 usr/share/sofirem/cache/gwenview create mode 100644 usr/share/sofirem/cache/halo-icons-git create mode 100644 usr/share/sofirem/cache/handbrake create mode 100644 usr/share/sofirem/cache/hardcode-fixer-git create mode 100644 usr/share/sofirem/cache/hardinfo-gtk3 create mode 100644 usr/share/sofirem/cache/haskell-dbus create mode 100644 usr/share/sofirem/cache/hddtemp create mode 100644 usr/share/sofirem/cache/hedgewars create mode 100644 usr/share/sofirem/cache/herbstluftwm create mode 100644 usr/share/sofirem/cache/heroic-games-launcher-bin create mode 100644 usr/share/sofirem/cache/hexchat create mode 100644 usr/share/sofirem/cache/hplip create mode 100644 usr/share/sofirem/cache/htop create mode 100644 usr/share/sofirem/cache/hunspell create mode 100644 usr/share/sofirem/cache/hw-probe create mode 100644 usr/share/sofirem/cache/hypnotix create mode 100644 usr/share/sofirem/cache/hypr-dev-git create mode 100644 usr/share/sofirem/cache/i3-gaps create mode 100644 usr/share/sofirem/cache/i3-wm create mode 100644 usr/share/sofirem/cache/i3blocks create mode 100644 usr/share/sofirem/cache/i3status create mode 100644 usr/share/sofirem/cache/icecat create mode 100644 usr/share/sofirem/cache/icewm create mode 100644 usr/share/sofirem/cache/ifuse create mode 100644 usr/share/sofirem/cache/imagewriter create mode 100644 usr/share/sofirem/cache/inetutils create mode 100644 usr/share/sofirem/cache/inkscape create mode 100644 usr/share/sofirem/cache/insync create mode 100644 usr/share/sofirem/cache/intel-ucode create mode 100644 usr/share/sofirem/cache/intellij-idea-community-edition create mode 100644 usr/share/sofirem/cache/inxi create mode 100644 usr/share/sofirem/cache/iso-flag-png create mode 100644 usr/share/sofirem/cache/itch create mode 100644 usr/share/sofirem/cache/jdownloader2 create mode 100644 usr/share/sofirem/cache/jitsi-meet-desktop-bin create mode 100644 usr/share/sofirem/cache/joshuto create mode 100644 usr/share/sofirem/cache/juk create mode 100644 usr/share/sofirem/cache/jwm create mode 100644 usr/share/sofirem/cache/kate create mode 100644 usr/share/sofirem/cache/kazam create mode 100644 usr/share/sofirem/cache/kbackup create mode 100644 usr/share/sofirem/cache/kbreakout create mode 100644 usr/share/sofirem/cache/kde-accessibility-meta create mode 100644 usr/share/sofirem/cache/kde-applications-meta create mode 100644 usr/share/sofirem/cache/kde-dev-utils create mode 100644 usr/share/sofirem/cache/kde-education-meta create mode 100644 usr/share/sofirem/cache/kde-games-meta create mode 100644 usr/share/sofirem/cache/kde-graphics-meta create mode 100644 usr/share/sofirem/cache/kde-gtk-config create mode 100644 usr/share/sofirem/cache/kde-multimedia-meta create mode 100644 usr/share/sofirem/cache/kde-network-meta create mode 100644 usr/share/sofirem/cache/kde-pim-meta create mode 100644 usr/share/sofirem/cache/kde-sdk-meta create mode 100644 usr/share/sofirem/cache/kde-system-meta create mode 100644 usr/share/sofirem/cache/kde-utilities-meta create mode 100644 usr/share/sofirem/cache/kdeconnect create mode 100644 usr/share/sofirem/cache/kdenetwork-filesharing create mode 100644 usr/share/sofirem/cache/kdenlive create mode 100644 usr/share/sofirem/cache/kdevelop create mode 100644 usr/share/sofirem/cache/keepassxc create mode 100644 usr/share/sofirem/cache/kitty create mode 100644 usr/share/sofirem/cache/knights create mode 100644 usr/share/sofirem/cache/kodi create mode 100644 usr/share/sofirem/cache/konsave create mode 100644 usr/share/sofirem/cache/konsole create mode 100644 usr/share/sofirem/cache/krdc create mode 100644 usr/share/sofirem/cache/kripton-theme-git create mode 100644 usr/share/sofirem/cache/krita create mode 100644 usr/share/sofirem/cache/ktorrent create mode 100644 usr/share/sofirem/cache/kvantum create mode 100644 usr/share/sofirem/cache/kvantum-qt5-git create mode 100644 usr/share/sofirem/cache/kvantum-qt6-git create mode 100644 usr/share/sofirem/cache/kvantum-theme-materia create mode 100644 usr/share/sofirem/cache/kvantum-theme-qogir-git create mode 100644 usr/share/sofirem/cache/kwave create mode 100644 usr/share/sofirem/cache/la-capitaine-icon-theme-git create mode 100644 usr/share/sofirem/cache/lastpass create mode 100644 usr/share/sofirem/cache/layan-cursor-theme-git create mode 100644 usr/share/sofirem/cache/layan-gtk-theme-git create mode 100644 usr/share/sofirem/cache/layan-kde-git create mode 100644 usr/share/sofirem/cache/leafpad create mode 100644 usr/share/sofirem/cache/leftwm-dev-git create mode 100644 usr/share/sofirem/cache/leftwm-theme-git create mode 100644 usr/share/sofirem/cache/legendary create mode 100644 usr/share/sofirem/cache/lf create mode 100644 usr/share/sofirem/cache/libertinus-font create mode 100644 usr/share/sofirem/cache/libreoffice-fresh create mode 100644 usr/share/sofirem/cache/libreoffice-still create mode 100644 usr/share/sofirem/cache/librewolf-bin create mode 100644 usr/share/sofirem/cache/liferea create mode 100644 usr/share/sofirem/cache/light create mode 100644 usr/share/sofirem/cache/lightdm create mode 100644 usr/share/sofirem/cache/lightdm-gtk-greeter create mode 100644 usr/share/sofirem/cache/lightdm-gtk-greeter-settings create mode 100644 usr/share/sofirem/cache/lightdm-slick-greeter create mode 100644 usr/share/sofirem/cache/lightdm-webkit-theme-aether create mode 100644 usr/share/sofirem/cache/lightdm-webkit2-theme-reactive create mode 100644 usr/share/sofirem/cache/linux create mode 100644 usr/share/sofirem/cache/linux-hardened create mode 100644 usr/share/sofirem/cache/linux-hardened-headers create mode 100644 usr/share/sofirem/cache/linux-headers create mode 100644 usr/share/sofirem/cache/linux-lts create mode 100644 usr/share/sofirem/cache/linux-lts-headers create mode 100644 usr/share/sofirem/cache/linux-rt create mode 100644 usr/share/sofirem/cache/linux-rt-headers create mode 100644 usr/share/sofirem/cache/linux-rt-lts create mode 100644 usr/share/sofirem/cache/linux-rt-lts-headers create mode 100644 usr/share/sofirem/cache/linux-wifi-hotspot create mode 100644 usr/share/sofirem/cache/linux-xanmod create mode 100644 usr/share/sofirem/cache/linux-xanmod-anbox create mode 100644 usr/share/sofirem/cache/linux-xanmod-anbox-headers create mode 100644 usr/share/sofirem/cache/linux-xanmod-headers create mode 100644 usr/share/sofirem/cache/linux-xanmod-lts create mode 100644 usr/share/sofirem/cache/linux-xanmod-lts-headers create mode 100644 usr/share/sofirem/cache/linux-xanmod-rt create mode 100644 usr/share/sofirem/cache/linux-xanmod-rt-headers create mode 100644 usr/share/sofirem/cache/linux-xanmod-tt create mode 100644 usr/share/sofirem/cache/linux-xanmod-tt-headers create mode 100644 usr/share/sofirem/cache/linux-zen create mode 100644 usr/share/sofirem/cache/linux-zen-headers create mode 100644 usr/share/sofirem/cache/lm_sensors create mode 100644 usr/share/sofirem/cache/lmms create mode 100644 usr/share/sofirem/cache/lohit-fonts create mode 100644 usr/share/sofirem/cache/lolcat create mode 100644 usr/share/sofirem/cache/lollypop create mode 100644 usr/share/sofirem/cache/losslesscut-bin create mode 100644 usr/share/sofirem/cache/lshw create mode 100644 usr/share/sofirem/cache/luna-icon-theme-git create mode 100644 usr/share/sofirem/cache/lutris create mode 100644 usr/share/sofirem/cache/lxappearance create mode 100644 usr/share/sofirem/cache/lxappearance-obconf create mode 100644 usr/share/sofirem/cache/lxdm create mode 100644 usr/share/sofirem/cache/lxmusic create mode 100644 usr/share/sofirem/cache/lxqt-arc-dark-theme-git create mode 100644 usr/share/sofirem/cache/lxrandr create mode 100644 usr/share/sofirem/cache/lxterminal create mode 100644 usr/share/sofirem/cache/ly create mode 100644 usr/share/sofirem/cache/mailspring create mode 100644 usr/share/sofirem/cache/makemkv create mode 100644 usr/share/sofirem/cache/mangohud create mode 100644 usr/share/sofirem/cache/mari0 create mode 100644 usr/share/sofirem/cache/mate-control-center create mode 100644 usr/share/sofirem/cache/mate-desktop create mode 100644 usr/share/sofirem/cache/mate-menus create mode 100644 usr/share/sofirem/cache/mate-system-monitor create mode 100644 usr/share/sofirem/cache/mate-terminal create mode 100644 usr/share/sofirem/cache/mate-tweak create mode 100644 usr/share/sofirem/cache/materia-gtk-theme create mode 100644 usr/share/sofirem/cache/materia-kde create mode 100644 usr/share/sofirem/cache/mc create mode 100644 usr/share/sofirem/cache/mcomix create mode 100644 usr/share/sofirem/cache/mediainfo-gui create mode 100644 usr/share/sofirem/cache/megasync-bin create mode 100644 usr/share/sofirem/cache/meld create mode 100644 usr/share/sofirem/cache/micro create mode 100644 usr/share/sofirem/cache/midori create mode 100644 usr/share/sofirem/cache/min create mode 100644 usr/share/sofirem/cache/minecraft-launcher create mode 100644 usr/share/sofirem/cache/minigalaxy create mode 100644 usr/share/sofirem/cache/mintlocale create mode 100644 usr/share/sofirem/cache/mintstick-git create mode 100644 usr/share/sofirem/cache/mkinitcpio-firmware create mode 100644 usr/share/sofirem/cache/mkvtoolnix-gui create mode 100644 usr/share/sofirem/cache/modprobed-db create mode 100644 usr/share/sofirem/cache/modprobed-db-git create mode 100644 usr/share/sofirem/cache/moka-icon-theme-git create mode 100644 usr/share/sofirem/cache/moneydance create mode 100644 usr/share/sofirem/cache/mousetweaks create mode 100644 usr/share/sofirem/cache/mpc create mode 100644 usr/share/sofirem/cache/mpd create mode 100644 usr/share/sofirem/cache/mpv create mode 100644 usr/share/sofirem/cache/ms-office-online create mode 100644 usr/share/sofirem/cache/mullvad-vpn-bin create mode 100644 usr/share/sofirem/cache/multimc-git create mode 100644 usr/share/sofirem/cache/mumble create mode 100644 usr/share/sofirem/cache/nautilus create mode 100644 usr/share/sofirem/cache/nautilus-open-any-terminal create mode 100644 usr/share/sofirem/cache/ncmpcpp create mode 100644 usr/share/sofirem/cache/nemo create mode 100644 usr/share/sofirem/cache/nemo-fileroller create mode 100644 usr/share/sofirem/cache/neochat create mode 100644 usr/share/sofirem/cache/neofetch create mode 100644 usr/share/sofirem/cache/nerd-fonts-source-code-pro create mode 100644 usr/share/sofirem/cache/netbeans create mode 100644 usr/share/sofirem/cache/netsurf create mode 100644 usr/share/sofirem/cache/neverball create mode 100644 usr/share/sofirem/cache/nextcloud-client create mode 100644 usr/share/sofirem/cache/nitrogen create mode 100644 usr/share/sofirem/cache/nixieclock create mode 100644 usr/share/sofirem/cache/nnn create mode 100644 usr/share/sofirem/cache/noisetorch create mode 100644 usr/share/sofirem/cache/nomachine create mode 100644 usr/share/sofirem/cache/nomacs create mode 100644 usr/share/sofirem/cache/nomacs-git create mode 100644 usr/share/sofirem/cache/nomacs-qt6-git create mode 100644 usr/share/sofirem/cache/nordic-kde-git create mode 100644 usr/share/sofirem/cache/nordpass-bin create mode 100644 usr/share/sofirem/cache/nordtray-bin create mode 100644 usr/share/sofirem/cache/nordvpn-bin create mode 100644 usr/share/sofirem/cache/nordzy-icon-theme-git create mode 100644 usr/share/sofirem/cache/notepadqq create mode 100644 usr/share/sofirem/cache/noto-fonts create mode 100644 usr/share/sofirem/cache/noto-fonts-emoji create mode 100644 usr/share/sofirem/cache/numix-circle-arc-icons-git create mode 100644 usr/share/sofirem/cache/numix-circle-icon-theme-git create mode 100644 usr/share/sofirem/cache/numix-gtk-theme-git create mode 100644 usr/share/sofirem/cache/numix-icon-theme-git create mode 100644 usr/share/sofirem/cache/numix-kde-theme-git create mode 100644 usr/share/sofirem/cache/nvflash create mode 100644 usr/share/sofirem/cache/nvidia create mode 100644 usr/share/sofirem/cache/nvidia-dkms create mode 100644 usr/share/sofirem/cache/nvidia-lts create mode 100644 usr/share/sofirem/cache/nvidia-open create mode 100644 usr/share/sofirem/cache/nvidia-open-dkms create mode 100644 usr/share/sofirem/cache/nvidia-prime create mode 100644 usr/share/sofirem/cache/nvidia-settings create mode 100644 usr/share/sofirem/cache/nvidia-utils create mode 100644 usr/share/sofirem/cache/nvidia-xrun create mode 100644 usr/share/sofirem/cache/nvtop create mode 100644 usr/share/sofirem/cache/nvtop-git create mode 100644 usr/share/sofirem/cache/obconf create mode 100644 usr/share/sofirem/cache/obconf-qt create mode 100644 usr/share/sofirem/cache/obkey create mode 100644 usr/share/sofirem/cache/obmenu-generator create mode 100644 usr/share/sofirem/cache/obmenu3 create mode 100644 usr/share/sofirem/cache/obs-studio create mode 100644 usr/share/sofirem/cache/obsidian-icon-theme create mode 100644 usr/share/sofirem/cache/ocs-url create mode 100644 usr/share/sofirem/cache/octopi create mode 100644 usr/share/sofirem/cache/octopi-notifier-qt5 create mode 100644 usr/share/sofirem/cache/oh-my-zsh-git create mode 100644 usr/share/sofirem/cache/oh-my-zsh-powerline-theme-git create mode 100644 usr/share/sofirem/cache/okular create mode 100644 usr/share/sofirem/cache/olivia create mode 100644 usr/share/sofirem/cache/onboard create mode 100644 usr/share/sofirem/cache/onlyoffice-bin create mode 100644 usr/share/sofirem/cache/ookla-speedtest-bin create mode 100644 usr/share/sofirem/cache/open-vm-tools create mode 100644 usr/share/sofirem/cache/openbox create mode 100644 usr/share/sofirem/cache/openbox-arc-git create mode 100644 usr/share/sofirem/cache/openbox-themes-pambudi-git create mode 100644 usr/share/sofirem/cache/openoffice-bin create mode 100644 usr/share/sofirem/cache/openscad create mode 100644 usr/share/sofirem/cache/openshot create mode 100644 usr/share/sofirem/cache/opera create mode 100644 usr/share/sofirem/cache/optimus-manager create mode 100644 usr/share/sofirem/cache/optimus-manager-qt create mode 100644 usr/share/sofirem/cache/oranchelo-icon-theme-git create mode 100644 usr/share/sofirem/cache/orca create mode 100644 usr/share/sofirem/cache/orchis-kde-theme-git create mode 100644 usr/share/sofirem/cache/orchis-theme-git create mode 100644 usr/share/sofirem/cache/oxy-neon create mode 100644 usr/share/sofirem/cache/pacback create mode 100644 usr/share/sofirem/cache/pace create mode 100644 usr/share/sofirem/cache/pace-git create mode 100644 usr/share/sofirem/cache/packagekit-qt5 create mode 100644 usr/share/sofirem/cache/pacseek-bin create mode 100644 usr/share/sofirem/cache/pacui create mode 100644 usr/share/sofirem/cache/pacui-git create mode 100644 usr/share/sofirem/cache/paper-icon-theme create mode 100644 usr/share/sofirem/cache/papirus-folders-git create mode 100644 usr/share/sofirem/cache/papirus-folders-gui-bin create mode 100644 usr/share/sofirem/cache/papirus-folders-nordic create mode 100644 usr/share/sofirem/cache/papirus-icon-theme create mode 100644 usr/share/sofirem/cache/papirus-linux-universe create mode 100644 usr/share/sofirem/cache/papirus-nord create mode 100644 usr/share/sofirem/cache/parcellite create mode 100644 usr/share/sofirem/cache/partitionmanager create mode 100644 usr/share/sofirem/cache/paru create mode 100644 usr/share/sofirem/cache/paru-bin create mode 100644 usr/share/sofirem/cache/paru-git create mode 100644 usr/share/sofirem/cache/pavucontrol-qt create mode 100644 usr/share/sofirem/cache/pcmanfm create mode 100644 usr/share/sofirem/cache/pdfarranger create mode 100644 usr/share/sofirem/cache/peek create mode 100644 usr/share/sofirem/cache/perl-checkupdates-aur create mode 100644 usr/share/sofirem/cache/perl-linux-desktopfiles create mode 100644 usr/share/sofirem/cache/perl-www-aur create mode 100644 usr/share/sofirem/cache/persepolis create mode 100644 usr/share/sofirem/cache/pfetch create mode 100644 usr/share/sofirem/cache/phinger-cursors create mode 100644 usr/share/sofirem/cache/phoronix-test-suite create mode 100644 usr/share/sofirem/cache/picom create mode 100644 usr/share/sofirem/cache/picom-git create mode 100644 usr/share/sofirem/cache/picom-ibhagwan-git create mode 100644 usr/share/sofirem/cache/picom-jonaburg-git create mode 100644 usr/share/sofirem/cache/pidgin create mode 100644 usr/share/sofirem/cache/pikaur-git create mode 100644 usr/share/sofirem/cache/piper create mode 100644 usr/share/sofirem/cache/pipes.sh create mode 100644 usr/share/sofirem/cache/pitivi create mode 100644 usr/share/sofirem/cache/plank create mode 100644 usr/share/sofirem/cache/plata-theme create mode 100644 usr/share/sofirem/cache/playonlinux create mode 100644 usr/share/sofirem/cache/plex-media-player create mode 100644 usr/share/sofirem/cache/plex-media-server create mode 100644 usr/share/sofirem/cache/polkit-gnome create mode 100644 usr/share/sofirem/cache/polybar create mode 100644 usr/share/sofirem/cache/power-profiles-daemon create mode 100644 usr/share/sofirem/cache/powerpill create mode 100644 usr/share/sofirem/cache/powertop create mode 100644 usr/share/sofirem/cache/pragha create mode 100644 usr/share/sofirem/cache/privoxy create mode 100644 usr/share/sofirem/cache/prot16-xfce4-terminal create mode 100644 usr/share/sofirem/cache/proton-community-updater create mode 100644 usr/share/sofirem/cache/proton-ge-custom-bin create mode 100644 usr/share/sofirem/cache/protontricks create mode 100644 usr/share/sofirem/cache/protontricks-git create mode 100644 usr/share/sofirem/cache/protonup-git create mode 100644 usr/share/sofirem/cache/protonup-qt-bin create mode 100644 usr/share/sofirem/cache/pulsar-bin create mode 100644 usr/share/sofirem/cache/putty create mode 100644 usr/share/sofirem/cache/pycharm-community-edition create mode 100644 usr/share/sofirem/cache/python-psutil create mode 100644 usr/share/sofirem/cache/python-pywal create mode 100644 usr/share/sofirem/cache/python-setuptools create mode 100644 usr/share/sofirem/cache/qbittorrent create mode 100644 usr/share/sofirem/cache/qemu-base create mode 100644 usr/share/sofirem/cache/qemu-full create mode 100644 usr/share/sofirem/cache/qogir-gtk-theme-git create mode 100644 usr/share/sofirem/cache/qogir-icon-theme create mode 100644 usr/share/sofirem/cache/qogir-kde-theme-git create mode 100644 usr/share/sofirem/cache/qt5-quickcontrols create mode 100644 usr/share/sofirem/cache/qt5-tools create mode 100644 usr/share/sofirem/cache/qtcreator create mode 100644 usr/share/sofirem/cache/qtile create mode 100644 usr/share/sofirem/cache/qtox create mode 100644 usr/share/sofirem/cache/qtscrcpy create mode 100644 usr/share/sofirem/cache/qtwebflix-git create mode 100644 usr/share/sofirem/cache/quickemu create mode 100644 usr/share/sofirem/cache/quickemu-git create mode 100644 usr/share/sofirem/cache/quickgui-bin create mode 100644 usr/share/sofirem/cache/qutebrowser create mode 100644 usr/share/sofirem/cache/radiotray create mode 100644 usr/share/sofirem/cache/ranger create mode 100644 usr/share/sofirem/cache/rare create mode 100644 usr/share/sofirem/cache/rate-mirrors create mode 100644 usr/share/sofirem/cache/rate-mirrors-bin create mode 100644 usr/share/sofirem/cache/realvnc-vnc-server create mode 100644 usr/share/sofirem/cache/realvnc-vnc-viewer create mode 100644 usr/share/sofirem/cache/redshift create mode 100644 usr/share/sofirem/cache/remmina create mode 100644 usr/share/sofirem/cache/replay-sorcery create mode 100644 usr/share/sofirem/cache/rhythmbox create mode 100644 usr/share/sofirem/cache/ripgrep create mode 100644 usr/share/sofirem/cache/ripgrep-all create mode 100644 usr/share/sofirem/cache/rofi create mode 100644 usr/share/sofirem/cache/rofi-theme-fonts create mode 100644 usr/share/sofirem/cache/rxvt-unicode create mode 100644 usr/share/sofirem/cache/s-tui create mode 100644 usr/share/sofirem/cache/sakura create mode 100644 usr/share/sofirem/cache/sardi-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-flat-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-flat-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/sardi-flat-mixing-icons-git create mode 100644 usr/share/sofirem/cache/sardi-flexible-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-flexible-luv-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-flexible-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/sardi-flexible-mixing-icons-git create mode 100644 usr/share/sofirem/cache/sardi-flexible-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-ghost-flexible-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-ghost-flexible-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/sardi-ghost-flexible-mixing-icons-git create mode 100644 usr/share/sofirem/cache/sardi-ghost-flexible-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-icons create mode 100644 usr/share/sofirem/cache/sardi-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/sardi-mixing-icons-git create mode 100644 usr/share/sofirem/cache/sardi-mono-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-mono-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/sardi-mono-mixing-icons-git create mode 100644 usr/share/sofirem/cache/sardi-mono-numix-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-mono-papirus-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/sardi-orb-colora-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/sardi-orb-colora-mixing-icons-git create mode 100644 usr/share/sofirem/cache/sardi-orb-colora-variations-icons-git create mode 100644 usr/share/sofirem/cache/sauerbraten create mode 100644 usr/share/sofirem/cache/sauerbraten-data create mode 100644 usr/share/sofirem/cache/sayonara-player create mode 100644 usr/share/sofirem/cache/scrcpy create mode 100644 usr/share/sofirem/cache/screenfetch create mode 100644 usr/share/sofirem/cache/screenkey-git create mode 100644 usr/share/sofirem/cache/scribus create mode 100644 usr/share/sofirem/cache/scrot create mode 100644 usr/share/sofirem/cache/sddm create mode 100644 usr/share/sofirem/cache/sddm-kcm create mode 100644 usr/share/sofirem/cache/shairport-sync create mode 100644 usr/share/sofirem/cache/shortwave create mode 100644 usr/share/sofirem/cache/sigil create mode 100644 usr/share/sofirem/cache/signal-desktop create mode 100644 usr/share/sofirem/cache/signal-desktop-beta-bin create mode 100644 usr/share/sofirem/cache/signal-desktop-git create mode 100644 usr/share/sofirem/cache/simple-scan create mode 100644 usr/share/sofirem/cache/simplescreenrecorder create mode 100644 usr/share/sofirem/cache/simplescreenrecorder-git create mode 100644 usr/share/sofirem/cache/simplicity-sddm-theme-git create mode 100644 usr/share/sofirem/cache/skippy-xd-git create mode 100644 usr/share/sofirem/cache/skypeforlinux-stable-bin create mode 100644 usr/share/sofirem/cache/sl create mode 100644 usr/share/sofirem/cache/slack-desktop create mode 100644 usr/share/sofirem/cache/slimbookbattery create mode 100644 usr/share/sofirem/cache/slurm create mode 100644 usr/share/sofirem/cache/smplayer create mode 100644 usr/share/sofirem/cache/snap-pac create mode 100644 usr/share/sofirem/cache/snapd create mode 100644 usr/share/sofirem/cache/snapper create mode 100644 usr/share/sofirem/cache/snapper-gui-git create mode 100644 usr/share/sofirem/cache/snapper-support create mode 100644 usr/share/sofirem/cache/snapper-tools create mode 100644 usr/share/sofirem/cache/solaar create mode 100644 usr/share/sofirem/cache/soundconverter create mode 100644 usr/share/sofirem/cache/sparklines-git create mode 100644 usr/share/sofirem/cache/spectacle create mode 100644 usr/share/sofirem/cache/spectrwm create mode 100644 usr/share/sofirem/cache/speedtest-cli-git create mode 100644 usr/share/sofirem/cache/spotify create mode 100644 usr/share/sofirem/cache/spotify-adblock-git create mode 100644 usr/share/sofirem/cache/spotifywm-git create mode 100644 usr/share/sofirem/cache/stacer create mode 100644 usr/share/sofirem/cache/stacer-bin create mode 100644 usr/share/sofirem/cache/steam-buddy create mode 100644 usr/share/sofirem/cache/steam-tweaks create mode 100644 usr/share/sofirem/cache/steamtinkerlaunch create mode 100644 usr/share/sofirem/cache/sublime-text-4 create mode 100644 usr/share/sofirem/cache/supertux create mode 100644 usr/share/sofirem/cache/supertuxkart create mode 100644 usr/share/sofirem/cache/surfn-arc-breeze-icons-git create mode 100644 usr/share/sofirem/cache/surfn-icons-git create mode 100644 usr/share/sofirem/cache/surfn-mint-y-icons-git create mode 100644 usr/share/sofirem/cache/surfn-plasma-dark-icons-git create mode 100644 usr/share/sofirem/cache/surfn-plasma-dark-tela-icons-git create mode 100644 usr/share/sofirem/cache/surfn-plasma-light-icons-git create mode 100644 usr/share/sofirem/cache/sutils-git create mode 100644 usr/share/sofirem/cache/sweet-cursor-theme-git create mode 100644 usr/share/sofirem/cache/sweet-gtk-theme-dark create mode 100644 usr/share/sofirem/cache/sweet-kde-theme-mars-git create mode 100644 usr/share/sofirem/cache/sweet-theme-git create mode 100644 usr/share/sofirem/cache/sxhkd create mode 100644 usr/share/sofirem/cache/synapse create mode 100644 usr/share/sofirem/cache/sysprof create mode 100644 usr/share/sofirem/cache/system76-power create mode 100644 usr/share/sofirem/cache/systemd-kcm create mode 100644 usr/share/sofirem/cache/systemd-manager create mode 100644 usr/share/sofirem/cache/systemd-manager-git create mode 100644 usr/share/sofirem/cache/tabby-bin create mode 100644 usr/share/sofirem/cache/tauon-music-box create mode 100644 usr/share/sofirem/cache/teams create mode 100644 usr/share/sofirem/cache/tela-circle-icon-theme-git create mode 100644 usr/share/sofirem/cache/telegram-desktop create mode 100644 usr/share/sofirem/cache/telegram-desktop-bin create mode 100644 usr/share/sofirem/cache/tempus-themes-xfce4-terminal-git create mode 100644 usr/share/sofirem/cache/terminator create mode 100644 usr/share/sofirem/cache/termite create mode 100644 usr/share/sofirem/cache/the_platinum_searcher-bin create mode 100644 usr/share/sofirem/cache/the_silver_searcher create mode 100644 usr/share/sofirem/cache/thunar create mode 100644 usr/share/sofirem/cache/thunar-archive-plugin create mode 100644 usr/share/sofirem/cache/thunar-extended create mode 100644 usr/share/sofirem/cache/thunar-media-tags-plugin create mode 100644 usr/share/sofirem/cache/thunar-shares-plugin create mode 100644 usr/share/sofirem/cache/thunar-volman create mode 100644 usr/share/sofirem/cache/thunderbird create mode 100644 usr/share/sofirem/cache/tigervnc create mode 100644 usr/share/sofirem/cache/tilda create mode 100644 usr/share/sofirem/cache/tilix create mode 100644 usr/share/sofirem/cache/timeshift create mode 100644 usr/share/sofirem/cache/timeshift-autosnap create mode 100644 usr/share/sofirem/cache/tint2 create mode 100644 usr/share/sofirem/cache/tlp create mode 100644 usr/share/sofirem/cache/tmux create mode 100644 usr/share/sofirem/cache/toilet create mode 100644 usr/share/sofirem/cache/topgrade create mode 100644 usr/share/sofirem/cache/topgrade-bin create mode 100644 usr/share/sofirem/cache/topgrade-git create mode 100644 usr/share/sofirem/cache/tor create mode 100644 usr/share/sofirem/cache/tor-browser create mode 100644 usr/share/sofirem/cache/torbrowser-launcher create mode 100644 usr/share/sofirem/cache/transmission-gtk create mode 100644 usr/share/sofirem/cache/trizen create mode 100644 usr/share/sofirem/cache/ttf-anonymous-pro create mode 100644 usr/share/sofirem/cache/ttf-bitstream-vera create mode 100644 usr/share/sofirem/cache/ttf-caladea create mode 100644 usr/share/sofirem/cache/ttf-carlito create mode 100644 usr/share/sofirem/cache/ttf-cascadia-code create mode 100644 usr/share/sofirem/cache/ttf-cormorant create mode 100644 usr/share/sofirem/cache/ttf-croscore create mode 100644 usr/share/sofirem/cache/ttf-dejavu create mode 100644 usr/share/sofirem/cache/ttf-droid create mode 100644 usr/share/sofirem/cache/ttf-eurof create mode 100644 usr/share/sofirem/cache/ttf-fantasque-sans-mono create mode 100644 usr/share/sofirem/cache/ttf-fira-code create mode 100644 usr/share/sofirem/cache/ttf-fira-mono create mode 100644 usr/share/sofirem/cache/ttf-fira-sans create mode 100644 usr/share/sofirem/cache/ttf-font-awesome create mode 100644 usr/share/sofirem/cache/ttf-hack create mode 100644 usr/share/sofirem/cache/ttf-hactor create mode 100644 usr/share/sofirem/cache/ttf-hellvetica create mode 100644 usr/share/sofirem/cache/ttf-ibm-plex create mode 100644 usr/share/sofirem/cache/ttf-inconsolata create mode 100644 usr/share/sofirem/cache/ttf-iosevka-nerd create mode 100644 usr/share/sofirem/cache/ttf-jetbrains-mono create mode 100644 usr/share/sofirem/cache/ttf-jetbrains-mono-nerd create mode 100644 usr/share/sofirem/cache/ttf-joypixels create mode 100644 usr/share/sofirem/cache/ttf-lato create mode 100644 usr/share/sofirem/cache/ttf-liberation create mode 100644 usr/share/sofirem/cache/ttf-linux-libertine create mode 100644 usr/share/sofirem/cache/ttf-linux-libertine-g create mode 100644 usr/share/sofirem/cache/ttf-mac-fonts create mode 100644 usr/share/sofirem/cache/ttf-material-design-iconic-font create mode 100644 usr/share/sofirem/cache/ttf-meslo-nerd-font-powerlevel10k create mode 100644 usr/share/sofirem/cache/ttf-monofur create mode 100644 usr/share/sofirem/cache/ttf-ms-fonts create mode 100644 usr/share/sofirem/cache/ttf-nerd-fonts-symbols create mode 100644 usr/share/sofirem/cache/ttf-nerd-fonts-symbols-1000-em create mode 100644 usr/share/sofirem/cache/ttf-nerd-fonts-symbols-1000-em-mono create mode 100644 usr/share/sofirem/cache/ttf-nerd-fonts-symbols-mono create mode 100644 usr/share/sofirem/cache/ttf-opensans create mode 100644 usr/share/sofirem/cache/ttf-proggy-clean create mode 100644 usr/share/sofirem/cache/ttf-roboto create mode 100644 usr/share/sofirem/cache/ttf-roboto-mono create mode 100644 usr/share/sofirem/cache/ttf-sourcecodepro-nerd create mode 100644 usr/share/sofirem/cache/ttf-ubuntu-font-family create mode 100644 usr/share/sofirem/cache/ttf-wps-fonts create mode 100644 usr/share/sofirem/cache/tty-clock create mode 100644 usr/share/sofirem/cache/tty-clock-git create mode 100644 usr/share/sofirem/cache/tuxboot create mode 100644 usr/share/sofirem/cache/tuxboot-git create mode 100644 usr/share/sofirem/cache/tweetdeck-desktop create mode 100644 usr/share/sofirem/cache/ufetch-arco-git create mode 100644 usr/share/sofirem/cache/ufetch-git create mode 100644 usr/share/sofirem/cache/ulauncher create mode 100644 usr/share/sofirem/cache/unimatrix-git create mode 100644 usr/share/sofirem/cache/upower create mode 100644 usr/share/sofirem/cache/urxvt-fullscreen create mode 100644 usr/share/sofirem/cache/urxvt-perls create mode 100644 usr/share/sofirem/cache/urxvt-resize-font-git create mode 100644 usr/share/sofirem/cache/variety create mode 100644 usr/share/sofirem/cache/ventoy-bin create mode 100644 usr/share/sofirem/cache/viber create mode 100644 usr/share/sofirem/cache/vicious create mode 100644 usr/share/sofirem/cache/vim create mode 100644 usr/share/sofirem/cache/vim-runtime create mode 100644 usr/share/sofirem/cache/vimix-cursors create mode 100644 usr/share/sofirem/cache/vimix-icon-theme-git create mode 100644 usr/share/sofirem/cache/virtualbox create mode 100644 usr/share/sofirem/cache/virtualbox-host-dkms create mode 100644 usr/share/sofirem/cache/visual-studio-code-bin create mode 100644 usr/share/sofirem/cache/vivaldi create mode 100644 usr/share/sofirem/cache/vivaldi-ffmpeg-codecs create mode 100644 usr/share/sofirem/cache/vivaldi-widevine create mode 100644 usr/share/sofirem/cache/vkbasalt create mode 100644 usr/share/sofirem/cache/vlc create mode 100644 usr/share/sofirem/cache/vmware-keymaps create mode 100644 usr/share/sofirem/cache/vmware-workstation create mode 100644 usr/share/sofirem/cache/vnstat create mode 100644 usr/share/sofirem/cache/volumeicon create mode 100644 usr/share/sofirem/cache/vscodium-bin create mode 100644 usr/share/sofirem/cache/wacom-settings-git create mode 100644 usr/share/sofirem/cache/wacom-utility create mode 100644 usr/share/sofirem/cache/warsow create mode 100644 usr/share/sofirem/cache/waydroid create mode 100644 usr/share/sofirem/cache/we10x-icon-theme-git create mode 100644 usr/share/sofirem/cache/wesnoth create mode 100644 usr/share/sofirem/cache/whatsapp-nativefier create mode 100644 usr/share/sofirem/cache/whitesur-icon-theme-git create mode 100644 usr/share/sofirem/cache/wire-desktop create mode 100644 usr/share/sofirem/cache/wireshark-qt create mode 100644 usr/share/sofirem/cache/wmderland-git create mode 100644 usr/share/sofirem/cache/woeusb create mode 100644 usr/share/sofirem/cache/workrave create mode 100644 usr/share/sofirem/cache/worm-dev-git create mode 100644 usr/share/sofirem/cache/wps-office create mode 100644 usr/share/sofirem/cache/wps-office-mime create mode 100644 usr/share/sofirem/cache/wttr create mode 100644 usr/share/sofirem/cache/xcape create mode 100644 usr/share/sofirem/cache/xcursor-arch-cursor-complete create mode 100644 usr/share/sofirem/cache/xcursor-breeze create mode 100644 usr/share/sofirem/cache/xcursor-comix create mode 100644 usr/share/sofirem/cache/xcursor-flatbed create mode 100644 usr/share/sofirem/cache/xcursor-neutral create mode 100644 usr/share/sofirem/cache/xcursor-premium create mode 100644 usr/share/sofirem/cache/xcursor-simpleandsoft create mode 100644 usr/share/sofirem/cache/xdgmenumaker create mode 100644 usr/share/sofirem/cache/xdman create mode 100644 usr/share/sofirem/cache/xdo create mode 100644 usr/share/sofirem/cache/xf86-video-amdgpu create mode 100644 usr/share/sofirem/cache/xf86-video-ati create mode 100644 usr/share/sofirem/cache/xf86-video-intel create mode 100644 usr/share/sofirem/cache/xf86-video-nouveau create mode 100644 usr/share/sofirem/cache/xf86-video-openchrome create mode 100644 usr/share/sofirem/cache/xf86-video-vesa create mode 100644 usr/share/sofirem/cache/xfburn create mode 100644 usr/share/sofirem/cache/xfce4-notifyd create mode 100644 usr/share/sofirem/cache/xfce4-power-manager create mode 100644 usr/share/sofirem/cache/xfce4-screenshooter create mode 100644 usr/share/sofirem/cache/xfce4-settings create mode 100644 usr/share/sofirem/cache/xfce4-taskmanager create mode 100644 usr/share/sofirem/cache/xfce4-terminal create mode 100644 usr/share/sofirem/cache/xfce4-terminal-base16-colors-git create mode 100644 usr/share/sofirem/cache/xlunch-git create mode 100644 usr/share/sofirem/cache/xmonad create mode 100644 usr/share/sofirem/cache/xmonad-contrib create mode 100644 usr/share/sofirem/cache/xmonad-log create mode 100644 usr/share/sofirem/cache/xmonad-utils create mode 100644 usr/share/sofirem/cache/xonotic create mode 100644 usr/share/sofirem/cache/xonotic-data create mode 100644 usr/share/sofirem/cache/xpdf create mode 100644 usr/share/sofirem/cache/xreader create mode 100644 usr/share/sofirem/cache/xscreensaver create mode 100644 usr/share/sofirem/cache/xtitle-git create mode 100644 usr/share/sofirem/cache/yad create mode 100644 usr/share/sofirem/cache/yakuake create mode 100644 usr/share/sofirem/cache/yay create mode 100644 usr/share/sofirem/cache/yay-bin create mode 100644 usr/share/sofirem/cache/yay-git create mode 100644 usr/share/sofirem/cache/yin-yang-git create mode 100644 usr/share/sofirem/cache/youtube-dl create mode 100644 usr/share/sofirem/cache/youtube-dl-gui-git create mode 100644 usr/share/sofirem/cache/yt-dlp create mode 100644 usr/share/sofirem/cache/zafiro-icon-theme create mode 100644 usr/share/sofirem/cache/zoom create mode 100644 usr/share/sofirem/cache/zsh create mode 100644 usr/share/sofirem/cache/zsh-autosuggestions-git create mode 100644 usr/share/sofirem/cache/zsh-completions create mode 100644 usr/share/sofirem/cache/zsh-fast-syntax-highlighting create mode 100644 usr/share/sofirem/cache/zsh-history-substring-search-git create mode 100644 usr/share/sofirem/cache/zsh-syntax-highlighting create mode 100644 usr/share/sofirem/cache/zsh-syntax-highlighting-git create mode 100644 usr/share/sofirem/cache/zsh-theme-powerlevel10k-git create mode 100644 usr/share/sofirem/defaults/sofirem.yaml create mode 100644 usr/share/sofirem/images/credits.png create mode 100644 usr/share/sofirem/images/panel.png create mode 100644 usr/share/sofirem/images/sofirem.png create mode 100644 usr/share/sofirem/images/splash.png create mode 100644 usr/share/sofirem/packages/arcolinux-keyring/arcolinux-keyring-20251209-3-any.pkg.tar.zst create mode 100644 usr/share/sofirem/packages/arcolinux-mirrorlist/arcolinux-mirrorlist-git-24.03-12-any.pkg.tar.zst create mode 100644 usr/share/sofirem/packages/arcolinux-mirrorlist/arcolinux-mirrorlist-nemesis-git-24.03-12-any.pkg.tar.zst create mode 100755 usr/share/sofirem/scripts/get-the-keys-and-repos.sh create mode 100644 usr/share/sofirem/sofirem.css create mode 100755 usr/share/sofirem/sofirem.py create mode 100644 usr/share/sofirem/ui/AboutDialog.py create mode 100644 usr/share/sofirem/ui/AppFrameGUI.py create mode 100644 usr/share/sofirem/ui/GUI.py create mode 100644 usr/share/sofirem/ui/ISOPackagesWindow.py create mode 100644 usr/share/sofirem/ui/MessageDialog.py create mode 100644 usr/share/sofirem/ui/PackageListDialog.py create mode 100644 usr/share/sofirem/ui/PackageSearchWindow.py create mode 100644 usr/share/sofirem/ui/PackagesImportDialog.py create mode 100644 usr/share/sofirem/ui/PacmanLogWindow.py create mode 100644 usr/share/sofirem/ui/ProgressBarWindow.py create mode 100644 usr/share/sofirem/ui/ProgressDialog.py create mode 100644 usr/share/sofirem/ui/SplashScreen.py create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-applications.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-arcolinux.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-arcolinuxdev.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-communication.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-desktop-wayland.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-desktop.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-development.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-drivers.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-filemanagers.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-fonts.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-gaming.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-graphics.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-internet.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-login.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-multimedia.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-nvidia.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-office.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-terminals.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-theming.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-usb.yaml create mode 100644 usr/share/sofirem/yaml-awesome/netinstall-utilities.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-applications.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-arcolinux-dev.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-arcolinux.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-communication.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-development.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-filemanagers.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-fonts.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-gaming.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-graphics.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-internet.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-login.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-multimedia.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-nvidia.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-office.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-terminals.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-theming.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-utilities.yaml create mode 100644 usr/share/sofirem/yaml/netinstall-vm.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1c42b80 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/usr/share/sofirem/__pycache__/ +__pycache__/ +**.lst \ No newline at end of file diff --git a/usr/bin/sofi b/usr/bin/sofi new file mode 120000 index 0000000..80313c7 --- /dev/null +++ b/usr/bin/sofi @@ -0,0 +1 @@ +sofirem \ No newline at end of file diff --git a/usr/bin/sofirem b/usr/bin/sofirem new file mode 100755 index 0000000..44fb7a1 --- /dev/null +++ b/usr/bin/sofirem @@ -0,0 +1,51 @@ +#!/usr/bin/env sh + +# this script should not be run as root +# the polkit agent running on the desktop environment should prompt for root password + +echo "---------------------------------------------------------------------------" +echo "[INFO] Checking session" +test $(whoami) == "root" && echo "[ERROR] Do not run this script as root." && exit 1 +test -z $DISPLAY && echo "[ERROR] DISPLAY variable is not set." && exit 1 + +# check session is either one of X11, Wayland or TTY +session=$(loginctl show-session $(loginctl|grep $(whoami) | awk '{print $1}') -p Type | awk -F= '{print $2}' | grep "x11\|wayland\|tty") + +test -z "$session" && echo "[ERROR] Failed to verify session for user." && exit 1 + +xauth_file=$(xauth info | awk -F"Authority file:" '{print $2}' | tr -d ' ') +test -s "$xauth_file" || touch "$xauth_file" + +case "$session" in + "wayland") + # Wayland session, generate Xauth session cookie for $DISPLAY + xauth gen $DISPLAY &> /dev/null + echo "[INFO] Display = $DISPLAY" + echo "[INFO] Session = $session" + + test -z "$(xauth list)" || echo "[INFO] Xauth session = OK" + ;; + "x11") + # X11 session, don't do anything here + echo "[INFO] Display = $DISPLAY" + echo "[INFO] Session = $session" + + # just show msg on whether the Xauth session cookie is setup + test -z "$(xauth list)" || echo "[INFO] Xauth session = OK" + ;; + "tty") + # TTY session, as user may not use a display manager + echo "[INFO] Display = $DISPLAY" + echo "[INFO] Session = $session" + + test -z "$(xauth list)" || echo "[INFO] Xauth session = OK" + ;; + *) + # anything here is an unknown session, most likely Sofirem will fail to load + echo "[WARN] Cannot verify session for user." + ;; +esac +echo "---------------------------------------------------------------------------" + +echo "[INFO] Starting Sofirem" +pkexec '/usr/share/sofirem/sofirem.py' diff --git a/usr/share/applications/sofirem.desktop b/usr/share/applications/sofirem.desktop new file mode 100644 index 0000000..b6d8334 --- /dev/null +++ b/usr/share/applications/sofirem.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=Sofirem - Software installer/remover for Arch Linux based systems +GenericName=Sofirem +X-GNOME-FullName=Sofirem +Comment=Software installer/remover for Arch Linux based systems +Exec=/usr/bin/sofirem +Icon=sofirem +Terminal=false +Type=Application +Categories=GTK;GNOME;Utility;Settings;Security;X-GNOME-Settings-Panel;X-GNOME-SystemSettings;X-Unity-Settings-Panel;X-XFCE-SettingsDialog;X-XFCE-SystemSettings; +Keywords=application;installer; +StartupNotify=true diff --git a/usr/share/icons/hicolor/scalable/apps/sofirem.svg b/usr/share/icons/hicolor/scalable/apps/sofirem.svg new file mode 100644 index 0000000..42aae40 --- /dev/null +++ b/usr/share/icons/hicolor/scalable/apps/sofirem.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + diff --git a/usr/share/polkit-1/actions/org.arcolinux.sofirem.policy b/usr/share/polkit-1/actions/org.arcolinux.sofirem.policy new file mode 100644 index 0000000..2ee0e43 --- /dev/null +++ b/usr/share/polkit-1/actions/org.arcolinux.sofirem.policy @@ -0,0 +1,104 @@ + + + + ArcoLinux + http://arcolinux.info/ + package-x-generic + + Change your own user data + 變更您自身的使用者資料 + 修改您的用户数据 + Зміна даних вашого користувача + Kullanıcı bilgilerinizi değiştirin + Ändra ditt egna användardata + Измените ваше личне корисничке податке + Izmenite vaše lične korisničke podatke + Spremenite lastne uporabniške podatke + Zmeniť svoje vlastné používateľské údaje + Изменить личные пользовательские данные + Alterar os seus próprios dados + Alterar dados do próprio usuário + Zmiana własnych danych + ਆਪਣਾ ਯੂਜ਼ਰ ਡਾਟਾ ਬਦਲੋ + Modificar sas pròprias donadas + Uw eigen gebruikersgegevens bewerken + Mainīt pašam savus lietotāja datus + Keisti savo naudotojo duomenis + 개인 사용자 데이터 변경 + Өзіңіздің пайдаланушы ақпаратыңызды өзгерту + თქვენი პირადი ინფორმაციის შეცვლა + 自身のユーザーデータを変更する + Cambia i propri dati utente + Ubah data penggunamu sendiri + Modificar tu proprie datos de usator + Saját felhasználói adatainak módosítása + Promijenite vlastite korisničke podatke + Cambiar os seus propios datos de usuario + Cambie i tiei dâts utent + Modifier ses propres données + Muuta omia käyttäjätietojasi + Aldatu zure erabiltzaile-datuak + Cambie sus propios datos de usuario + Ŝanĝi viajn proprajn uzantodatumojn + Change your own user data + Change your own user data + Αλλάξτε τα δεδομένα χρήστη σας + Ändern Sie Ihre eigenen Benutzerdaten + Skift data for din egen bruger + Změnit své vlastní údaje + Canvieu les dades d'usuari pròpies + Camudacia de los tos datos d'usuariu + غيّر بيانات المستخدم خاصتك + Authentication is required to change your own user data + 若要變更您自身的使用者資料需要核對身分 + 需要授权以修改您的用户数据 + Для зміни даних вашого користувача потрібно пройти розпізнавання + Kendi kullanıcı bilginizi değiştirmek için kimlik kanıtlaması gereklidir + Autentisering krävs för att ändra ditt egna användardata + Потребно је потврђивање идентитета за промену ваших личних корисничких података + Potrebno je potvrđivanje identiteta za promenu vaših ličnih korisničkih podataka + Za spremembo lastnih podatkov je zahtevana overitev + Na zmenu vlastných používateľských údajov je potrebné overenie totožnosti + Для изменения личных пользовательских данных требуется аутентификация + É necessária autenticação para alterar os seus próprios dados de utilizador + Autenticação é necessária para alterar dados do próprio usuário + Wymagane jest uwierzytelnienie, aby zmienić własne dane + ਤੁਹਾਡਾ ਯੂਜ਼ਰ ਡਾਟਾ ਬਦਲਣ ਲਈ ਪਰਮਾਣਿਤ ਹੋਣ ਦੀ ਲੋੜ ਹੈ + Vos cal vos autentificar per modificar vòstras pròprias donadas d'utilizaire + Authenticatie vereist om uw eigen gebruikersgegevens te kunnen veranderen + Nepieciešama autentifikācija, lai mainītu pats savus lietotāja datus + Norint keisti savo naudotojo duomenis, reikia patvirtinti tapatybę + 내 사용자 데이터를 변경하려면 인증해야 합니다 + Өзіңіздің пайдаланушы ақпаратыңызды өзгерту үшін аутентификация керек + თქვენი პირადი მონაცემების შესაცვლელად აუცილებელია ავთენტიფიკაციის გავლა. + 自分自身のユーザーデータを変更するには認証が必要です + È richiesto autenticarsi per cambiare i propri dati utente + Otentikasi diperlukan untuk mengubah data pengguna milikmu + Authentication es necessari pro modificar tu proprie datos de usator + Hitelesítés szükséges a saját felhasználói adatai módosításához + Potrebna je ovjera za promjenu vlastitih korisničkih podataka + Requírese autenticación para cambiar os seus propios datos de usuario + La autenticazion e je necssarie par cambiâ i propris dâts utent + Vous devez vous authentifier pour modifier vos propres données utilisateur + Omien käyttäjätietojen muuttaminen vaatii tunnistautumisen + Derrigorrezkoa da autentifikatzea zure erabiltzaile-datuak aldatzeko + Se necesita autenticación para cambiar sus datos de usuario + Aŭtentigo bezonatas por ŝanĝi viajn proprajn uzantodatumojn + Authentication is required to change your own user data + Authentication is required to change your own user data + Απαιτείται πιστοποίηση για αλλαγή των δικών σας δεδομένων χρήστη + Zur Änderung Ihrer eigenen Benutzerdaten ist eine Authentifizierung erforderlich + Der kræves autentifikation for at skifte data for din egen bruger + Pro změnu svých vlastních údajů je vyžadována autentizace + Es requereix autenticació per canviar les vostres dades d'usuari + Ríquese l'autenticación pa camudar los tos datos d'usuairu + الاستيثاق مطلوب لتغيير بيانات المستخدم التي تملكها + + auth_admin + auth_admin + auth_admin + + /usr/share/sofirem/sofirem.py + true + + diff --git a/usr/share/sofirem/Functions.py b/usr/share/sofirem/Functions.py new file mode 100644 index 0000000..82da3aa --- /dev/null +++ b/usr/share/sofirem/Functions.py @@ -0,0 +1,2789 @@ +# ================================================================= +# = Author: Cameron Percival = +# ================================================================= + +import os +import sys +import psutil +import time +import datetime +from datetime import datetime, timedelta +import subprocess +import threading +import gi +import logging +from logging.handlers import TimedRotatingFileHandler +import shutil +from threading import Thread +from Package import Package +from Settings import Settings +from ui.MessageDialog import MessageDialog +from distro import id +from os import makedirs + +gi.require_version("Gtk", "3.0") +from gi.repository import GLib, Gtk + +# ===================================================== +# Base Directory +# ===================================================== + +base_dir = os.path.dirname(os.path.realpath(__file__)) + +# ===================================================== +# Global Variables +# ===================================================== +sudo_username = os.getlogin() +home = "/home/" + str(sudo_username) +path_dir_cache = base_dir + "/cache/" +packages = [] +distr = id() +sofirem_lockfile = "/tmp/sofirem.lock" +sofirem_pidfile = "/tmp/sofirem.pid" +# 10m timeout +process_timeout = 600 + +arcolinux_mirrorlist = "/etc/pacman.d/arcolinux-mirrorlist" +pacman_conf = "/etc/pacman.conf" +pacman_conf_backup = "/etc/pacman.conf.bak" +pacman_logfile = "/var/log/pacman.log" +pacman_lockfile = "/var/lib/pacman/db.lck" +pacman_cache_dir = "/var/cache/pacman/pkg/" + +arco_test_repo = [ + "#[arcolinux_repo_testing]", + "#SigLevel = PackageRequired DatabaseNever", + "#Include = /etc/pacman.d/arcolinux-mirrorlist", +] + +arco_repo = [ + "[arcolinux_repo]", + "SigLevel = PackageRequired DatabaseNever", + "Include = /etc/pacman.d/arcolinux-mirrorlist", +] + +arco_3rd_party_repo = [ + "[arcolinux_repo_3party]", + "SigLevel = PackageRequired DatabaseNever", + "Include = /etc/pacman.d/arcolinux-mirrorlist", +] + +arco_xlrepo = [ + "[arcolinux_repo_xlarge]", + "SigLevel = PackageRequired DatabaseNever", + "Include = /etc/pacman.d/arcolinux-mirrorlist", +] + + +log_dir = "/var/log/sofirem/" +config_dir = "%s/.config/sofirem" % home +config_file = "%s/sofirem.yaml" % config_dir + + +event_log_file = "%s/event.log" % log_dir + +export_dir = "%s/sofirem-exports" % home + + +# ===================================================== +# PERMISSIONS +# ===================================================== + + +def permissions(dst): + try: + groups = subprocess.run( + ["sh", "-c", "id " + sudo_username], + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + for x in groups.stdout.decode().split(" "): + if "gid" in x: + g = x.split("(")[1] + group = g.replace(")", "").strip() + subprocess.call(["chown", "-R", sudo_username + ":" + group, dst], shell=False) + + except Exception as e: + logger.error(e) + + +# Create log, export, conf directory +try: + if not os.path.exists(log_dir): + makedirs(log_dir) + + if not os.path.exists(export_dir): + makedirs(export_dir) + + if not os.path.exists(config_dir): + makedirs(config_dir) + + permissions(export_dir) + permissions(config_dir) + + print("[INFO] Log directory = %s" % log_dir) + print("[INFO] Export directory = %s" % export_dir) + print("[INFO] Config directory = %s" % config_dir) + + +except os.error as oe: + print("[ERROR] Exception in setup log/export directory: %s" % oe) + sys.exit(1) + +# read in conf file from $HOME/.config/sofirem/sofirem.yaml +# initialize logger +try: + settings = Settings(False, False) + settings_config = settings.read_config_file() + + logger = logging.getLogger("logger") + + # create console handler and set level to debug + ch = logging.StreamHandler() + + # rotate the events log every Friday + tfh = TimedRotatingFileHandler( + event_log_file, encoding="utf-8", delay=False, when="W4" + ) + + if settings_config: + debug_logging_enabled = None + debug_logging_enabled = settings_config["Debug Logging"] + + if debug_logging_enabled is not None and debug_logging_enabled is True: + logger.setLevel(logging.DEBUG) + ch.setLevel(logging.DEBUG) + tfh.setLevel(level=logging.DEBUG) + + else: + logger.setLevel(logging.INFO) + ch.setLevel(logging.INFO) + tfh.setLevel(level=logging.INFO) + else: + logger.setLevel(logging.INFO) + ch.setLevel(logging.INFO) + tfh.setLevel(level=logging.INFO) + + # create formatter + formatter = logging.Formatter( + "%(asctime)s:%(levelname)s > %(message)s", "%Y-%m-%d %H:%M:%S" + ) + # add formatter to ch + ch.setFormatter(formatter) + tfh.setFormatter(formatter) + + # add ch to logger + logger.addHandler(ch) + + # add fh to logger + logger.addHandler(tfh) + +except Exception as e: + print("[ERROR] Failed to setup logger, exception: %s" % e) + + +# on app close create file of installed packages +def _on_close_create_packages_file(): + try: + logger.info("App closing saving currently installed packages to file") + packages_file = "%s-packages.txt" % datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + logger.info("Saving in %s%s" % (log_dir, packages_file)) + cmd = ["pacman", "-Q"] + + with subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + with open("%s/%s" % (log_dir, packages_file), "w") as f: + for line in process.stdout: + f.write("%s" % line) + except Exception as e: + logger.error("Exception in on_close_create_packages_file(): %s" % e) + + +# ===================================================== +# GLOBAL FUNCTIONS +# ===================================================== + + +def _get_position(lists, value): + data = [string for string in lists if value in string] + position = lists.index(data[0]) + return position + + +def is_file_stale(filepath, stale_days, stale_hours, stale_minutes): + # first, lets obtain the datetime of the day that we determine data to be "stale" + now = datetime.now() + # For the purposes of this, we are assuming that one would have the app open longer than 5 minutes if installing. + stale_datetime = now - timedelta( + days=stale_days, hours=stale_hours, minutes=stale_minutes + ) + # Check to see if the file path is in existence. + if os.path.exists(filepath): + # if the file exists, when was it made? + file_created = datetime.fromtimestamp(os.path.getctime(filepath)) + # file is older than the time delta identified above + if file_created < stale_datetime: + return True + return False + + +# ===================================================== +# PACMAN SYNC PACKAGE DB +# ===================================================== +def sync_package_db(): + try: + sync_str = ["pacman", "-Sy"] + logger.info("Synchronizing pacman package databases") + process_sync = subprocess.run( + sync_str, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + timeout=process_timeout, + ) + + if process_sync.returncode == 0: + return None + else: + if process_sync.stdout: + out = str(process_sync.stdout.decode("utf-8")) + logger.error(out) + + return out + + except Exception as e: + logger.error("Exception in sync_package_db(): %s" % e) + + +# ===================================================== +# PACMAN SYNC FILES DB +# ===================================================== + + +def sync_file_db(): + try: + sync_str = ["pacman", "-Fy"] + logger.info("Synchronizing pacman file database") + process_sync = subprocess.run( + sync_str, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + timeout=process_timeout, + ) + + if process_sync.returncode == 0: + return None + else: + if process_sync.stdout: + out = str(process_sync.stdout.decode("utf-8")) + logger.error(out) + + return out + + except Exception as e: + logger.error("Exception in sync_file_db(): %s" % e) + + +# ===================================================== +# PACMAN INSTALL/UNINSTALL PROCESS +# ===================================================== + + +# this is run inside a separate thread +def start_subprocess(self, cmd, progress_dialog, action, pkg, widget): + try: + self.switch_package_version.set_sensitive(False) + self.switch_arco_keyring.set_sensitive(False) + self.switch_arco_mirrorlist.set_sensitive(False) + + widget.set_sensitive(False) + + # store process std out into a list, if there are errors display to user once the process completes + process_stdout_lst = [] + process_stdout_lst.append("Command = %s\n\n" % " ".join(cmd)) + + with subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + if progress_dialog is not None: + progress_dialog.pkg_dialog_closed = False + + self.in_progress = True + + if ( + progress_dialog is not None + and progress_dialog.pkg_dialog_closed is False + ): + line = ( + "Pacman is processing the %s of package %s \n\nCommand running = %s\n\n" + % (action, pkg.name, " ".join(cmd)) + ) + GLib.idle_add( + update_progress_textview, + self, + line, + progress_dialog, + priority=GLib.PRIORITY_DEFAULT, + ) + + logger.debug("Pacman is now processing the request") + + # poll for the process to complete + # read stdout as it comes in, update the progress textview + + # poll() Check if child process has terminated. + # Set and return returncode attribute. Otherwise, returns None. + + while True: + if process.poll() is not None: + break + + if ( + progress_dialog is not None + and progress_dialog.pkg_dialog_closed is False + ): + for line in process.stdout: + GLib.idle_add( + update_progress_textview, + self, + line, + progress_dialog, + priority=GLib.PRIORITY_DEFAULT, + ) + process_stdout_lst.append(line) + + time.sleep(0.3) + else: + # increase wait time to reduce cpu load, no textview updates required since dialog is closed + # since the progress dialog window is closed, capture errors and then later display it + for line in process.stdout: + process_stdout_lst.append(line) + time.sleep(1) + + returncode = None + returncode = process.poll() + + # logger.debug("Pacman process return code = %s" % returncode) + + if returncode is not None: + logger.info("Pacman process completed running = [ %s ]" % " ".join(cmd)) + + GLib.idle_add( + refresh_ui, + self, + action, + widget, + pkg, + progress_dialog, + process_stdout_lst, + priority=GLib.PRIORITY_DEFAULT, + ) + else: + # an error happened during the pacman transaction + logger.error( + "Pacman process failed when running = [ %s ]" % " ".join(cmd) + ) + + except TimeoutError as t: + logger.error("TimeoutError in %s start_subprocess(): %s" % (action, t)) + process.terminate() + if progress_dialog is not None: + progress_dialog.btn_package_progress_close.set_sensitive(True) + self.switch_package_version.set_sensitive(True) + self.switch_arco_keyring.set_sensitive(True) + self.switch_arco_mirrorlist.set_sensitive(True) + + except SystemError as s: + logger.error("SystemError in %s start_subprocess(): %s" % (action, s)) + process.terminate() + if progress_dialog is not None: + progress_dialog.btn_package_progress_close.set_sensitive(True) + self.switch_package_version.set_sensitive(True) + self.switch_arco_keyring.set_sensitive(True) + self.switch_arco_mirrorlist.set_sensitive(True) + + +# refresh ui components, once the process completes +# show notification dialog to user if errors are encountered during package install/uninstall +def refresh_ui(self, action, switch, pkg, progress_dialog, process_stdout_lst): + self.switch_package_version.set_sensitive(True) + self.switch_arco_keyring.set_sensitive(True) + self.switch_arco_mirrorlist.set_sensitive(True) + + logger.debug("Checking if package %s is installed" % pkg.name) + installed = check_package_installed(pkg.name) + + if progress_dialog is not None: + progress_dialog.btn_package_progress_close.set_sensitive(True) + + if installed is True and action == "install": + logger.debug("Toggle switch state = True") + switch.set_sensitive(True) + switch.set_state(True) + switch.set_active(True) + + if progress_dialog is not None: + if progress_dialog.pkg_dialog_closed is False: + progress_dialog.set_title("Package install for %s completed" % pkg.name) + + progress_dialog.infobar.set_name("infobar_info") + + content = progress_dialog.infobar.get_content_area() + if content is not None: + for widget in content.get_children(): + content.remove(widget) + + lbl_install = Gtk.Label(xalign=0, yalign=0) + lbl_install.set_markup("Package %s installed" % pkg.name) + + content.add(lbl_install) + + if self.timeout_id is not None: + GLib.source_remove(self.timeout_id) + self.timeout_id = None + + self.timeout_id = GLib.timeout_add( + 100, reveal_infobar, self, progress_dialog + ) + + if installed is False and action == "install": + logger.debug("Toggle switch state = False") + + if progress_dialog is not None: + # install failed/terminated + switch.set_sensitive(True) + switch.set_state(False) + switch.set_active(False) + + if progress_dialog.pkg_dialog_closed is False: + progress_dialog.set_title("Package install for %s failed" % pkg.name) + + progress_dialog.infobar.set_name("infobar_error") + + content = progress_dialog.infobar.get_content_area() + if content is not None: + for widget in content.get_children(): + content.remove(widget) + + lbl_install = Gtk.Label(xalign=0, yalign=0) + lbl_install.set_markup( + "Package %s install failed" % pkg.name + ) + + content.add(lbl_install) + + if self.timeout_id is not None: + GLib.source_remove(self.timeout_id) + self.timeout_id = None + + self.timeout_id = GLib.timeout_add( + 100, reveal_infobar, self, progress_dialog + ) + else: + logger.debug(" ".join(process_stdout_lst)) + + message_dialog = MessageDialog( + "Errors occurred during install", + "Errors occurred install for %s failed" % pkg.name, + "Pacman failed to install package %s\n" % pkg.name, + " ".join(process_stdout_lst), + "error", + True, + ) + + message_dialog.show_all() + result = message_dialog.run() + message_dialog.destroy() + elif progress_dialog is None or progress_dialog.pkg_dialog_closed is True: + # the package progress dialog has been closed, but notify user package failed to install + + if ( + "error: failed to init transaction (unable to lock database)\n" + in process_stdout_lst + ): + # at this point the package install is stuck behind another pacman transaction so put this onto the holding queue + + # logger.debug(" ".join(process_stdout_lst)) + + if progress_dialog is None: + logger.debug("Adding package to holding queue") + if self.display_package_progress is False: + inst_str = [ + "pacman", + "-S", + pkg.name, + "--needed", + "--noconfirm", + ] + self.pkg_holding_queue.put( + ( + pkg, + action, + switch, + inst_str, + progress_dialog, + ), + ) + else: + logger.debug(" ".join(process_stdout_lst)) + switch.set_sensitive(True) + switch.set_state(False) + switch.set_active(False) + + proc = fn.get_pacman_process() + + message_dialog = MessageDialog( + "Warning", + "Sofirem cannot proceed pacman lockfile found", + "Pacman cannot lock the db, a lockfile is found inside %s" + % fn.pacman_lockfile, + "Pacman is running: %s" % proc, + "warning", + False, + ) + + message_dialog.show_all() + result = message_dialog.run() + message_dialog.destroy() + + # progress dialog is closed show message dialog with error + elif "error: target not found: %s\n" % pkg.name in process_stdout_lst: + switch.set_sensitive(True) + switch.set_state(False) + switch.set_active(False) + + message_dialog = MessageDialog( + "Error", + "Pacman repository error: package '%s' was not found" % pkg.name, + "Sofirem cannot process the request", + "Are the correct pacman mirrorlists configured ?", + "error", + False, + ) + + message_dialog.show_all() + result = message_dialog.run() + message_dialog.destroy() + + else: + # logger.debug(" ".join(process_stdout_lst)) + + switch.set_sensitive(True) + switch.set_state(False) + switch.set_active(False) + + message_dialog = MessageDialog( + "Errors occurred during install", + "Errors occurred install for %s failed" % pkg.name, + "Pacman failed to install package %s\n" % pkg.name, + " ".join(process_stdout_lst), + "error", + True, + ) + + message_dialog.show_all() + result = message_dialog.run() + message_dialog.destroy() + + if installed is False and action == "uninstall": + logger.debug("Toggle switch state = False") + switch.set_sensitive(True) + switch.set_state(False) + switch.set_active(False) + + if progress_dialog is not None: + if progress_dialog.pkg_dialog_closed is False: + progress_dialog.set_title( + "Package uninstall for %s completed" % pkg.name + ) + progress_dialog.infobar.set_name("infobar_info") + content = progress_dialog.infobar.get_content_area() + if content is not None: + for widget in content.get_children(): + content.remove(widget) + + lbl_install = Gtk.Label(xalign=0, yalign=0) + lbl_install.set_markup("Package %s uninstalled" % pkg.name) + + content.add(lbl_install) + + if self.timeout_id is not None: + GLib.source_remove(self.timeout_id) + self.timeout_id = None + + self.timeout_id = GLib.timeout_add( + 100, reveal_infobar, self, progress_dialog + ) + + if installed is True and action == "uninstall": + # uninstall failed/terminated + switch.set_sensitive(True) + switch.set_state(True) + switch.set_active(True) + + if progress_dialog is not None: + if progress_dialog.pkg_dialog_closed is False: + progress_dialog.set_title("Package uninstall for %s failed" % pkg.name) + progress_dialog.infobar.set_name("infobar_error") + + content = progress_dialog.infobar.get_content_area() + if content is not None: + for widget in content.get_children(): + content.remove(widget) + + lbl_install = Gtk.Label(xalign=0, yalign=0) + lbl_install.set_markup( + "Package %s uninstall failed" % pkg.name + ) + + content.add(lbl_install) + + if self.timeout_id is not None: + GLib.source_remove(self.timeout_id) + self.timeout_id = None + + self.timeout_id = GLib.timeout_add( + 100, reveal_infobar, self, progress_dialog + ) + + elif progress_dialog is None or progress_dialog.pkg_dialog_closed is True: + # the package progress dialog has been closed, but notify user package failed to uninstall + + if ( + "error: failed to init transaction (unable to lock database)\n" + in process_stdout_lst + ): + logger.error(" ".join(process_stdout_lst)) + + else: + message_dialog = MessageDialog( + "Errors occurred during uninstall", + "Errors occurred uninstall of %s failed" % pkg.name, + "Pacman failed to uninstall package %s\n" % pkg.name, + " ".join(process_stdout_lst), + "error", + True, + ) + + message_dialog.show_all() + result = message_dialog.run() + message_dialog.destroy() + + +# update progress textview using stdout from the pacman process running + + +def update_progress_textview(self, line, progress_dialog): + if ( + progress_dialog is not None + and progress_dialog.pkg_dialog_closed is False + and self.in_progress is True + ): + buffer = progress_dialog.package_progress_textview.get_buffer() + if len(line) > 0 or buffer is None: + buffer.insert(buffer.get_end_iter(), "%s" % line, len("%s" % line)) + + text_mark_end = buffer.create_mark("\nend", buffer.get_end_iter(), False) + + # scroll to the end of the textview + progress_dialog.package_progress_textview.scroll_mark_onscreen( + text_mark_end + ) + else: + # dialog window is closed + line = None + return False + + +# ===================================================== +# APP INSTALLATION +# ===================================================== +def install(self): + pkg, action, widget, inst_str, progress_dialog = self.pkg_queue.get() + + try: + if action == "install": + # path = base_dir + "/cache/installed.lst" + logger.debug("Running inside install thread") + logger.info("Installing package %s" % pkg.name) + logger.debug(inst_str) + + # run pacman process inside a thread + + th_subprocess_install = Thread( + name="thread_subprocess", + target=start_subprocess, + args=( + self, + inst_str, + progress_dialog, + action, + pkg, + widget, + ), + daemon=True, + ) + + th_subprocess_install.start() + + logger.debug("Thread: subprocess install started") + + except Exception as e: + # deactivate switch widget, install failed + widget.set_state(False) + if progress_dialog is not None: + progress_dialog.btn_package_progress_close.set_sensitive(True) + logger.error("Exception in install(): %s" % e) + finally: + # task completed + self.pkg_queue.task_done() + + +# ===================================================== +# APP UNINSTALLATION +# ===================================================== +def uninstall(self): + pkg, action, widget, uninst_str, progress_dialog = self.pkg_queue.get() + + try: + if action == "uninstall": + # path = base_dir + "/cache/installed.lst" + logger.debug("Running inside uninstall thread") + logger.info("Uninstalling package %s" % pkg.name) + logger.debug(uninst_str) + + # run pacman process inside a thread + + th_subprocess_uninstall = Thread( + name="thread_subprocess", + target=start_subprocess, + args=( + self, + uninst_str, + progress_dialog, + action, + pkg, + widget, + ), + daemon=True, + ) + + # is there a pacman lockfile, wait for it before uninstalling + # while check_pacman_lockfile(): + # time.sleep(0.2) + + th_subprocess_uninstall.start() + + logger.debug("Thread: subprocess uninstall started") + + except Exception as e: + widget.set_state(True) + if progress_dialog is not None: + progress_dialog.btn_package_progress_close.set_sensitive(True) + logger.error("Exception in uninstall(): %s" % e) + finally: + self.pkg_queue.task_done() + + +# ===================================================== +# SEARCH INDEXING +# ===================================================== + + +# store a list of package metadata into memory for fast retrieval +def store_packages(): + path = base_dir + "/yaml/" + cache = base_dir + "/cache/yaml-packages.lst" + yaml_files = [] + packages = [] + + category_dict = {} + + try: + # get latest package version info + + package_metadata = get_all_package_info() + + # get a list of yaml files + for file in os.listdir(path): + if file.endswith(".yaml"): + yaml_files.append(file) + + if len(yaml_files) > 0: + for yaml_file in yaml_files: + cat_desc = "" + package_name = "" + package_cat = "" + + category_name = yaml_file[11:-5].strip().capitalize() + + # read contents of each yaml file + + with open(path + yaml_file, "r") as yaml: + content = yaml.readlines() + for line in content: + if line.startswith(" packages:"): + continue + elif line.startswith(" description: "): + # Set the label text for the description line + subcat_desc = ( + line.strip(" description: ") + .strip() + .strip('"') + .strip("\n") + .strip() + ) + elif line.startswith("- name:"): + # category + + subcat_name = ( + line.strip("- name: ") + .strip() + .strip('"') + .strip("\n") + .strip() + ) + elif line.startswith(" - "): + # add the package to the packages list + + package_name = line.strip(" - ").strip() + + # get the package description + # package_desc = obtain_pkg_description(package_name) + + package_version = "Unknown" + package_description = "Unknown" + + for data in package_metadata: + if data["name"] == package_name: + package_version = data["version"] + package_description = data["description"] + + break + + if package_description == "Unknown": + package_description = obtain_pkg_description(package_name) + + package = Package( + package_name, + package_description, + category_name, + subcat_name, + subcat_desc, + package_version, + ) + + packages.append(package) + + # filter the results so that each category holds a list of package + + category_name = None + packages_cat_lst = [] + for pkg in packages: + if category_name == pkg.category: + packages_cat_lst.append(pkg) + category_dict[category_name] = packages_cat_lst + elif category_name is None: + packages_cat_lst.append(pkg) + category_dict[pkg.category] = packages_cat_lst + else: + # reset packages, new category + packages_cat_lst = [] + + packages_cat_lst.append(pkg) + + category_dict[pkg.category] = packages_cat_lst + + category_name = pkg.category + + # Print dictionary for debugging + + # for key in category_dict.keys(): + # print("Category = %s" % key) + # pkg_list = category_dict[key] + # + # for pkg in pkg_list: + # print("%s" % pkg.name) + + sorted_dict = None + + sorted_dict = dict(sorted(category_dict.items())) + + if sorted_dict is None: + logger.error( + "An error occurred during sort of stored packages in store_packages()" + ) + else: + with open(cache, "w", encoding="UTF-8") as f: + for key in category_dict.keys(): + pkg_list = category_dict[key] + + for pkg in pkg_list: + f.write("%s\n" % pkg.name) + + return sorted_dict + except Exception as e: + logger.error("Exception in store_packages() : %s" % e) + sys.exit(1) + + +def get_package_description(package): + query_str = ["pacman", "-Si", package] + + try: + with subprocess.Popen( + query_str, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + while True: + if process.poll() is not None: + break + + returncode = None + returncode = process.poll() + + if returncode is not None: + for line in process.stdout: + if "Description :" in line.strip(): + return line.replace(" ", "").split("Description:")[1].strip() + + except Exception as e: + logger.error("Exception in get_package_description(): %s" % e) + + +# ===================================================== +# PACKAGE VERSIONS +# ===================================================== + + +# get live package name, version info and repo name +# used in store_packages() and get_installed_package_data() +def get_all_package_info(): + query_str = ["pacman", "-Si"] + + try: + process_pkg_query = subprocess.Popen( + query_str, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE + ) + + out, err = process_pkg_query.communicate(timeout=process_timeout) + + if process_pkg_query.returncode == 0: + if out: + package_data = [] + package_name = "Unknown" + package_version = "Unknown" + package_description = "Unknown" + package_repository = "Unknown" + + for line in out.decode("utf-8").splitlines(): + package_dict = {} + if "Name :" in line.strip(): + package_name = line.replace(" ", "").split("Name:")[1].strip() + + if "Version :" in line.strip(): + package_version = ( + line.replace(" ", "").split("Version:")[1].strip() + ) + + if "Description :" in line.strip(): + package_description = line.split("Description :")[1].strip() + + if "Repository :" in line.strip(): + package_repository = line.split("Repository :")[1].strip() + + package_dict["name"] = package_name + package_dict["version"] = package_version + package_dict["description"] = package_description + package_dict["repository"] = package_repository + + package_data.append(package_dict) + + return package_data + else: + logger.error("Failed to extract package version information.") + + except Exception as e: + logger.error("Exception in get_all_package_info() : %s" % e) + + +# get installed package version, installed date, name to be displayed inside PackageListDialog +# for export and later import +def get_installed_package_data(self): + # to capture the latest package version + latest_package_data = get_all_package_info() + + # query_str = ["pacman", "-Qi"] + # query_str = ["pacman", "-Qien"] + + try: + installed_packages_list = [] + pkg_name = None + pkg_version = None + pkg_install_date = None + pkg_installed_size = None + pkg_latest_version = None + + with subprocess.Popen( + self.pacman_export_cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + for line in process.stdout: + if "Name :" in line.strip(): + pkg_name = line.replace(" ", "").split("Name:")[1].strip() + + if "Version :" in line.strip(): + pkg_version = line.replace(" ", "").split("Version:")[1].strip() + + if "Installed Size :" in line.strip(): + pkg_installed_size = line.split("Installed Size :")[1].strip() + + if "Install Date :" in line.strip(): + pkg_install_date = line.split("Install Date :")[1].strip() + + # get the latest version lookup dictionary + + found = False + pkg_latest_version = None + + for i in latest_package_data: + if i["name"] == pkg_name: + pkg_latest_version = i["version"] + break + + installed_packages_list.append( + ( + pkg_name, + pkg_version, + pkg_latest_version, + pkg_installed_size, + pkg_install_date, + ) + ) + + self.pkg_export_queue.put(installed_packages_list) + + # return installed_packages_list + + except Exception as e: + logger.error("Exception in get_installed_package_data() : %s" % e) + + +# get list of files installed by a package +def get_package_files(package_name): + try: + query_str = ["pacman", "-Fl", package_name] + process = subprocess.run( + query_str, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + timeout=process_timeout, + ) + + if process.returncode == 0: + package_files = [] + for line in process.stdout.decode("utf-8").splitlines(): + package_files.append((line.split(" ")[1], None)) + + return package_files + else: + return None + except Exception as e: + logger.error("Exception in get_package_files(): %s" % e) + + +# get key package information which is to be shown inside ProgressDialog + + +def get_package_information(package_name): + logger.info("Fetching package information for %s" % package_name) + + try: + pkg_name = "Unknown" + pkg_version = "Unknown" + pkg_repository = "Unknown / pacman mirrorlist not configured" + pkg_description = "Unknown" + pkg_arch = "Unknown" + pkg_url = "Unknown" + pkg_depends_on = [] + pkg_conflicts_with = [] + pkg_download_size = "Unknown" + pkg_installed_size = "Unknown" + pkg_build_date = "Unknown" + pkg_packager = "Unknown" + package_metadata = {} + + query_local_cmd = ["pacman", "-Qi", package_name] + query_remote_cmd = ["pacman", "-Si", package_name] + + process_query_remote = subprocess.run( + query_remote_cmd, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + timeout=process_timeout, + ) + + # added validation on process result + if process_query_remote.returncode == 0: + for line in process_query_remote.stdout.decode("utf-8").splitlines(): + if "Name :" in line.strip(): + pkg_name = line.replace(" ", "").split("Name:")[1].strip() + + if "Version :" in line.strip(): + pkg_version = line.replace(" ", "").split("Version:")[1].strip() + + if "Repository :" in line.strip(): + pkg_repository = line.split("Repository :")[1].strip() + + if "Description :" in line.strip(): + pkg_description = line.split("Description :")[1].strip() + + if "Architecture :" in line.strip(): + pkg_arch = line.split("Architecture :")[1].strip() + + if "URL :" in line.strip(): + pkg_url = line.split("URL :")[1].strip() + + if "Depends On :" in line.strip(): + if line.split("Depends On :")[1].strip() != "None": + pkg_depends_on_str = line.split("Depends On :")[1].strip() + + for pkg_dep in pkg_depends_on_str.split(" "): + pkg_depends_on.append((pkg_dep, None)) + else: + pkg_depends_on = [] + + if "Conflicts With :" in line.strip(): + if line.split("Conflicts With :")[1].strip() != "None": + pkg_conflicts_with_str = line.split("Conflicts With :")[ + 1 + ].strip() + + for pkg_con in pkg_conflicts_with_str.split(" "): + pkg_conflicts_with.append((pkg_con, None)) + else: + pkg_conflicts_with = [] + + if "Download Size :" in line.strip(): + pkg_download_size = line.split("Download Size :")[1].strip() + + if "Installed Size :" in line.strip(): + pkg_installed_size = line.split("Installed Size :")[1].strip() + + if "Build Date :" in line.strip(): + pkg_build_date = line.split("Build Date :")[1].strip() + + if "Packager :" in line.strip(): + pkg_packager = line.split("Packager :")[1].strip() + + package_metadata["name"] = pkg_name + package_metadata["version"] = pkg_version + package_metadata["repository"] = pkg_repository + package_metadata["description"] = pkg_description + package_metadata["arch"] = pkg_arch + package_metadata["url"] = pkg_url + package_metadata["depends_on"] = pkg_depends_on + package_metadata["conflicts_with"] = pkg_conflicts_with + package_metadata["download_size"] = pkg_download_size + package_metadata["installed_size"] = pkg_installed_size + package_metadata["build_date"] = pkg_build_date + package_metadata["packager"] = pkg_packager + + return package_metadata + + elif ( + "error: package '%s' was not found\n" % package_name + in process_query_remote.stdout.decode("utf-8") + ): + return "error: package '%s' was not found" % package_name + else: + process_query_local = subprocess.run( + query_local_cmd, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + timeout=process_timeout, + ) + + # added validation on process result + if process_query_local.returncode == 0: + for line in process_query_local.stdout.decode("utf-8").splitlines(): + if "Name :" in line.strip(): + pkg_name = line.replace(" ", "").split("Name:")[1].strip() + + if "Version :" in line.strip(): + pkg_version = line.replace(" ", "").split("Version:")[1].strip() + + if "Repository :" in line.strip(): + pkg_repository = line.split("Repository :")[1].strip() + + if "Description :" in line.strip(): + pkg_description = line.split("Description :")[1].strip() + + if "Architecture :" in line.strip(): + pkg_arch = line.split("Architecture :")[1].strip() + + if "URL :" in line.strip(): + pkg_url = line.split("URL :")[1].strip() + + if "Depends On :" in line.strip(): + if line.split("Depends On :")[1].strip() != "None": + pkg_depends_on_str = line.split("Depends On :")[ + 1 + ].strip() + + for pkg_dep in pkg_depends_on_str.split(" "): + pkg_depends_on.append((pkg_dep, None)) + else: + pkg_depends_on = [] + + if "Conflicts With :" in line.strip(): + if line.split("Conflicts With :")[1].strip() != "None": + pkg_conflicts_with_str = line.split("Conflicts With :")[ + 1 + ].strip() + + for pkg_con in pkg_conflicts_with_str.split(" "): + pkg_conflicts_with.append((pkg_con, None)) + else: + pkg_conflicts_with = [] + + if "Download Size :" in line.strip(): + pkg_download_size = line.split("Download Size :")[1].strip() + + if "Installed Size :" in line.strip(): + pkg_installed_size = line.split("Installed Size :")[1].strip() + + if "Build Date :" in line.strip(): + pkg_build_date = line.split("Build Date :")[1].strip() + + if "Packager :" in line.strip(): + pkg_packager = line.split("Packager :")[1].strip() + + package_metadata["name"] = pkg_name + package_metadata["version"] = pkg_version + package_metadata["repository"] = pkg_repository + package_metadata["description"] = pkg_description + package_metadata["arch"] = pkg_arch + package_metadata["url"] = pkg_url + package_metadata["depends_on"] = pkg_depends_on + package_metadata["conflicts_with"] = pkg_conflicts_with + package_metadata["download_size"] = pkg_download_size + package_metadata["installed_size"] = pkg_installed_size + package_metadata["build_date"] = pkg_build_date + package_metadata["packager"] = pkg_packager + + return package_metadata + else: + return None + except Exception as e: + logger.error("Exception in get_package_information(): %s" % e) + + +# ===================================================== +# APP QUERY +# ===================================================== + + +def get_current_installed(): + logger.debug("Get currently installed packages") + path = base_dir + "/cache/installed.lst" + + # query_str = "pacman -Q > " + path + query_str = ["pacman", "-Q"] + + # run the query - using Popen because it actually suits this use case a bit better. + + subprocess_query = subprocess.Popen( + query_str, + shell=False, + stdout=subprocess.PIPE, + ) + + out, err = subprocess_query.communicate(timeout=process_timeout) + + # added validation on process result + if subprocess_query.returncode == 0: + file = open(path, "w") + for line in out.decode("utf-8"): + file.write(line) + file.close() + else: + logger.warning("Failed to run %s" % query_str) + + +def query_pkg(package): + try: + package = package.strip() + path = base_dir + "/cache/installed.lst" + + pacman_localdb = base_dir + "/cache/pacman-localdb" + + if os.path.exists(path): + if is_file_stale(path, 0, 0, 30): + get_current_installed() + # file does NOT exist; + else: + get_current_installed() + # then, open the resulting list in read mode + with open(path, "r") as f: + # first we need to strip the new line escape sequence to ensure we don't get incorrect outcome + pkg = package.strip("\n") + + # If the pkg name appears in the list, then it is installed + for line in f: + installed = line.split(" ") + # We only compare against the name of the package, NOT the version number. + if pkg == installed[0]: + # file.close() + return True + # We will only hit here, if the pkg does not match anything in the file. + # file.close() + + return False + except Exception as e: + logger.error("Exception in query_pkg(): %s " % e) + + +# ===================================================== +# PACKAGE DESCRIPTION CACHE AND SEARCH +# ===================================================== + + +def cache(package, path_dir_cache): + try: + # first we need to strip the new line escape sequence to ensure we don't get incorrect outcome + pkg = package.strip() + # create the query + query_str = ["pacman", "-Si", pkg, " --noconfirm"] + + # run the query - using Popen because it actually suits this use case a bit better. + + process = subprocess.Popen( + query_str, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE + ) + out, err = process.communicate() + + # validate the process result + if process.returncode == 0: + # out, err = process.communicate() + + output = out.decode("utf-8") + + if len(output) > 0: + split = output.splitlines() + + # Currently the output of the pacman command above always puts the description on the 4th line. + desc = str(split[3]) + # Ok, so this is a little fancy: there is formatting from the output which we wish to ignore (ends at 19th character) + # and there is a remenant of it as the last character - usually a single or double quotation mark, which we also need to ignore + description = desc[18:] + # writing to a caching file with filename matching the package name + filename = path_dir_cache + pkg + + file = open(filename, "w") + file.write(description) + file.close() + + return description + # There are several packages that do not return a valid process return code + # Cathing those manually via corrections folder + if process.returncode != 0: + exceptions = [ + "florence", + "mintstick-bin", + "arcolinux-conky-collection-plasma-git", + "arcolinux-desktop-trasher-git", + "arcolinux-pamac-all", + "arcolinux-sddm-simplicity-git", + "ttf-hack", + "ttf-roboto-mono", + "aisleriot", + "mailspring", + "linux-rt", + "linux-rt-headers", + "linux-rt-lts", + "linux-rt-lts-headers", + "arcolinux-sddm-simplicity-git", + "kodi-x11", + "kodi-addons", + "sardi-icons", + ] + if pkg in exceptions: + description = file_lookup(pkg, path_dir_cache + "corrections/") + return description + return "No Description Found" + + except Exception as e: + logger.error("Exception in cache(): %s " % e) + + +# Creating an over-load so that we can use the same function, with slightly different code to get the results we need +def cache_btn(): + # fraction = 1 / len(packages) + # Non Multithreaded version. + packages.sort() + number = 1 + for pkg in packages: + logger.debug(str(number) + "/" + str(len(packages)) + ": Caching " + pkg) + cache(pkg, path_dir_cache) + number = number + 1 + # progressbar.timeout_id = GLib.timeout_add(50, progressbar.update, fraction) + + logger.debug("Caching applications finished") + + # This will need to be coded to be running multiple processes eventually, since it will be manually invoked. + # process the file list + # for each file in the list, open the file + # process the file ignoring what is not what we need + # for each file line processed, we need to invoke the cache function that is not over-ridden. + + +def file_lookup(package, path): + # first we need to strip the new line escape sequence to ensure we don't get incorrect outcome + pkg = package.strip("\n") + output = "" + if os.path.exists(path + "corrections/" + pkg): + filename = path + "corrections/" + pkg + else: + filename = path + pkg + file = open(filename, "r") + output = file.read() + file.close() + if len(output) > 0: + return output + return "No Description Found" + + +def obtain_pkg_description(package): + # This is a pretty simple function now, decide how to get the information, then get it. + # processing variables. + output = "" + path = base_dir + "/cache/" + + # First we need to determine whether to pull from cache or pacman. + if os.path.exists(path + package.strip("\n")): + output = file_lookup(package, path) + + # file doesn't exist, so create a blank copy + else: + output = cache(package, path) + # Add the package in question to the global variable, in case recache is needed + packages.append(package) + return output + + +def restart_program(): + os.unlink("/tmp/sofirem.lock") + python = sys.executable + os.execl(python, python, *sys.argv) + + +# ===================================================== +# MONITOR PACMAN LOG FILE +# ===================================================== + + +# write lines from the pacman log onto a queue, this is called from a non-blocking thread +def add_pacmanlog_queue(self): + try: + lines = [] + with open(pacman_logfile, "r", encoding="utf-8") as f: + while True: + line = f.readline() + if line: + lines.append(line.encode("utf-8")) + self.pacmanlog_queue.put(lines) + else: + time.sleep(0.5) + + except Exception as e: + logger.error("Exception in add_pacmanlog_queue() : %s" % e) + finally: + logger.debug("No new lines found inside the pacman log file") + + +# start log timer to update the textview called from a non-blocking thread +def start_log_timer(self, window_pacmanlog): + while True: + if window_pacmanlog.start_logtimer is False: + logger.debug("Stopping Pacman log monitoring timer") + return False + + GLib.idle_add(update_textview_pacmanlog, self, priority=GLib.PRIORITY_DEFAULT) + time.sleep(2) + + +# update the textview component with new lines from the pacman log file + + +# To fix: Gtk-CRITICAL **: gtk_text_buffer_emit_insert: assertion 'g_utf8_validate (text, len, NULL)' failed +# Make sure the line read from the pacman log file is encoded in utf-8 +# Then decode the line when inserting inside the buffer + + +def update_textview_pacmanlog(self): + lines = self.pacmanlog_queue.get() + + try: + buffer = self.textbuffer_pacmanlog + if len(lines) > 0: + end_iter = buffer.get_end_iter() + for line in lines: + if len(line) > 0: + buffer.insert( + end_iter, + line.decode("utf-8"), + len(line), + ) + + except Exception as e: + logger.error("Exception in update_textview_pacmanlog() : %s" % e) + finally: + self.pacmanlog_queue.task_done() + + if len(lines) > 0: + text_mark_end = buffer.create_mark("end", buffer.get_end_iter(), False) + # auto-scroll the textview to the bottom as new content is added + + self.textview_pacmanlog.scroll_mark_onscreen(text_mark_end) + + lines.clear() + + +# ===================================================== +# USER SEARCH +# ===================================================== + + +def search(self, term): + try: + logger.info('Searching for: "%s"' % term) + + pkg_matches = [] + + category_dict = {} + + whitespace = False + + if term.strip(): + whitespace = True + + for pkg_list in self.packages.values(): + for pkg in pkg_list: + if whitespace: + for te in term.split(" "): + if ( + te.lower() in pkg.name.lower() + or te.lower() in pkg.description.lower() + ): + # only unique name matches + if pkg not in pkg_matches: + pkg_matches.append( + pkg, + ) + else: + if ( + term.lower() in pkg.name.lower() + or term.lower() in pkg.description.lower() + ): + pkg_matches.append( + pkg, + ) + + # filter the results so that each category holds a list of package + + category_name = None + packages_cat = [] + for pkg_match in pkg_matches: + if category_name == pkg_match.category: + packages_cat.append(pkg_match) + category_dict[category_name] = packages_cat + elif category_name is None: + packages_cat.append(pkg_match) + category_dict[pkg_match.category] = packages_cat + else: + # reset packages, new category + packages_cat = [] + + packages_cat.append(pkg_match) + + category_dict[pkg_match.category] = packages_cat + + category_name = pkg_match.category + + # debug console output to display package info + """ + # print out number of results found from each category + print("[DEBUG] %s Search results.." % datetime.now().strftime("%H:%M:%S")) + + for category in sorted(category_dict): + category_res_len = len(category_dict[category]) + print("[DEBUG] %s %s = %s" %( + datetime.now().strftime("%H:%M:%S"), + category, + category_res_len, + ) + ) + """ + + # sort dictionary so the category names are displayed in alphabetical order + sorted_dict = None + + if len(category_dict) > 0: + sorted_dict = dict(sorted(category_dict.items())) + self.search_queue.put( + sorted_dict, + ) + else: + self.search_queue.put( + None, + ) + + except Exception as e: + logger.error("Exception in search(): %s", e) + + +# ===================================================== +# ARCOLINUX REPOS, KEYS AND MIRRORS +# ===================================================== + + +def append_repo(text): + """Append a new repo""" + try: + with open(pacman_conf, "a", encoding="utf-8") as f: + f.write("\n\n") + f.write(text) + except Exception as e: + logger.error("Exception in append_repo(): %s" % e) + + +def repo_exist(value): + """check repo_exists""" + with open(pacman_conf, "r", encoding="utf-8") as f: + lines = f.readlines() + f.close() + + for line in lines: + if value in line: + return True + return False + + +def install_arco_keyring(): + try: + keyring = base_dir + "/packages/arcolinux-keyring/" + file = os.listdir(keyring) + cmd_str = [ + "pacman", + "-U", + keyring + str(file).strip("[]'"), + "--noconfirm", + ] + + logger.debug("%s" % " ".join(cmd_str)) + + with subprocess.Popen( + cmd_str, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + process.wait(process_timeout) + + output = [] + + for line in process.stdout: + output.append(line) + + if process.returncode == 0: + return 0 + + else: + if len(output) == 0: + output.append("Error: install of ArcoLinux keyring failed") + + logger.error(" ".join(output)) + + result_err = {} + + result_err["cmd_str"] = cmd_str + result_err["output"] = output + + return result_err + except Exception as e: + logger.error("Exception in install_arco_keyring(): %s" % e) + result_err = {} + + result_err["cmd_str"] = cmd_str + result_err["output"] = e + + return result_err + + +def remove_arco_keyring(): + try: + cmd_str = ["pacman", "-Rdd", "arcolinux-keyring", "--noconfirm"] + with subprocess.Popen( + cmd_str, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + process.wait(process_timeout) + + output = [] + + for line in process.stdout: + output.append(line) + + if process.returncode == 0: + return 0 + + else: + if len(output) == 0: + output.append("Error: removal of ArcoLinux keyring failed") + + logger.error(" ".join(output)) + + result_err = {} + + result_err["cmd_str"] = cmd_str + result_err["output"] = output + + return result_err + + except Exception as e: + logger.error("Exception in remove_arco_keyring(): %s" % e) + + result_err = {} + + result_err["cmd_str"] = cmd_str + result_err["output"] = e + + return result_err + + +def install_arco_mirrorlist(): + try: + mirrorlist = base_dir + "/packages/arcolinux-mirrorlist/" + file = os.listdir(mirrorlist) + cmd_str = [ + "pacman", + "-U", + mirrorlist + str(file).strip("[]'"), + "--noconfirm", + ] + + logger.debug("%s" % " ".join(cmd_str)) + with subprocess.Popen( + cmd_str, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + process.wait(process_timeout) + + output = [] + + for line in process.stdout: + output.append(line) + + if process.returncode == 0: + return 0 + + else: + if len(output) == 0: + output.append("Error: install of ArcoLinux mirrorlist failed") + + logger.error(" ".join(output)) + + result_err = {} + + result_err["cmd_str"] = cmd_str + result_err["output"] = output + + return result_err + except Exception as e: + logger.error("Exception in install_arco_mirrorlist(): %s" % e) + + result_err = {} + + result_err["cmd_str"] = cmd_str + result_err["output"] = output + + return result_err + + +def remove_arco_mirrorlist(): + try: + cmd_str = ["pacman", "-Rdd", "arcolinux-mirrorlist-git", "--noconfirm"] + logger.debug("%s" % " ".join(cmd_str)) + with subprocess.Popen( + cmd_str, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + process.wait(process_timeout) + + output = [] + + for line in process.stdout: + output.append(line) + + if process.returncode == 0: + return 0 + + else: + if len(output) == 0: + output.append("Error: removal of ArcoLinux mirrorlist failed") + + logger.error(" ".join(output)) + + result_err = {} + + result_err["cmd_str"] = cmd_str + result_err["output"] = output + + return result_err + + except Exception as e: + logger.error("Exception in remove_arco_mirrorlist(): %s" % e) + + result_err = {} + + result_err["cmd_str"] = cmd_str + result_err["output"] = e + + return result_err + + +def add_arco_repos(): + logger.info("Adding ArcoLinux repos on %s" % distr) + try: + # first check if arco repos are already inside pacman conf file + + if verify_arco_pacman_conf() is False: + # take backup of existing pacman.conf file + + if os.path.exists(pacman_conf): + shutil.copy(pacman_conf, pacman_conf_backup) + + # read existing contents from pacman.conf file + + logger.info("Reading from %s" % pacman_conf) + + lines = [] + + with open(pacman_conf, "r", encoding="utf-8") as r: + lines = r.readlines() + + # check for existing ArcoLinux entries + if len(lines) > 0: + arco_test_repo_found = False + arco_repo_found = False + arco_3rd_party_repo_found = False + arco_xlrepo_found = False + + for line in lines: + if "#" in line.strip(): + if arco_test_repo[0].replace("#", "") in line.strip(): + arco_test_repo_found = True + + if arco_repo[0].replace("#", "") in line.strip(): + arco_repo_found = True + index = lines.index(line) + + del lines[index] + lines.insert(index, arco_repo[0]) + + index += 1 + + del lines[index] + lines.insert(index, arco_repo[1]) + + index += 1 + + del lines[index] + lines.insert(index, arco_repo[2]) + + if arco_3rd_party_repo[0].replace("#", "") in line.strip(): + arco_3rd_party_repo_found = True + index = lines.index(line) + + del lines[index] + lines.insert(index, arco_3rd_party_repo[0]) + + index += 1 + + del lines[index] + lines.insert(index, arco_3rd_party_repo[1]) + + index += 1 + + del lines[index] + lines.insert(index, arco_3rd_party_repo[2]) + + if arco_xlrepo[0].replace("#", "") in line.strip(): + arco_xlrepo_found = True + index = lines.index(line) + + del lines[index] + lines.insert(index, arco_xlrepo[0]) + + index += 1 + + del lines[index] + lines.insert(index, arco_xlrepo[1]) + + index += 1 + + del lines[index] + lines.insert(index, arco_xlrepo[2]) + + if line.strip() == arco_test_repo[0]: + arco_test_repo_found = True + + if line.strip() == arco_repo[0]: + arco_repo_found = True + + if line.strip() == arco_3rd_party_repo[0]: + arco_3rd_party_repo_found = True + + if line.strip() == arco_xlrepo[0]: + arco_xlrepo_found = True + + if arco_test_repo_found is False: + lines.append("\n") + + for arco_test_repo_line in arco_test_repo: + lines.append(arco_test_repo_line) + + if arco_repo_found is False: + lines.append("\n") + + for arco_repo_line in arco_repo: + lines.append(arco_repo_line) + + if arco_3rd_party_repo_found is False: + lines.append("\n") + + for arco_3rd_party_repo_line in arco_3rd_party_repo: + lines.append(arco_3rd_party_repo_line) + + if arco_xlrepo_found is False: + lines.append("\n") + + for arco_xlrepo_line in arco_xlrepo: + lines.append(arco_xlrepo_line) + + logger.info("[Add ArcoLinux repos] Writing to %s" % pacman_conf) + + if len(lines) > 0: + with open(pacman_conf, "w", encoding="utf-8") as w: + for l in lines: + w.write(l.strip() + "\n") + + w.flush() + + return 0 + + else: + logger.error("Failed to process %s" % pacman_conf) + + else: + logger.error("Failed to read %s" % pacman_conf) + else: + logger.info("ArcoLinux repos already setup inside pacman conf file") + return 0 + + except Exception as e: + logger.error("Exception in add_arco_repos(): %s" % e) + return e + + +def remove_arco_repos(): + # remove the ArcoLinux repos in /etc/pacman.conf + try: + # check for existing ArcoLinux entries and remove + if verify_arco_pacman_conf() is True: + if os.path.exists(pacman_conf): + shutil.copy(pacman_conf, pacman_conf_backup) + + logger.info("Reading from %s" % pacman_conf) + + lines = [] + + with open(pacman_conf, "r", encoding="utf-8") as r: + lines = r.readlines() + + if len(lines) > 0: + index = 0 + + for line in lines: + if arco_test_repo[0] == line.strip().replace(" ", ""): + index = lines.index(line) + + if index > 0: + if distr != "arcolinux": + del lines[index] + del lines[index] + del lines[index] + + # make sure the arco testing repo is disabled, if absolutely required update the pacman conf file manually and enable them + + if "%s" % arco_test_repo[0].replace("#", "") == line.strip(): + index = lines.index( + "%s\n" % arco_test_repo[0].replace("#", "") + ) + if distr != "arcolinux": + del lines[index] + del lines[index] + del lines[index] + else: + # comment out the testing repo + + lines[index] = "%s\n" % arco_test_repo[0] + lines[index + 1] = "%s\n" % arco_test_repo[1] + lines[index + 2] = "%s\n" % arco_test_repo[2] + + if "%s\n" % arco_repo[0] == line: + index = lines.index("%s\n" % arco_repo[0]) + + if index > 0: + if distr != "arcolinux": + del lines[index] + del lines[index] + del lines[index] + else: + lines[index] = "#%s\n" % arco_repo[0] + lines[index + 1] = "#%s\n" % arco_repo[1] + lines[index + 2] = "#%s\n" % arco_repo[2] + elif ( + "#" in line.strip() + and arco_repo[0] == line.replace("#", "").strip() + and distr != "arcolinux" + ): + # check if already commented + + index = lines.index(line) + del lines[index] + del lines[index] + del lines[index] + + if "%s\n" % arco_3rd_party_repo[0] == line: + index = lines.index("%s\n" % arco_3rd_party_repo[0]) + + if index > 0: + if distr != "arcolinux": + del lines[index] + del lines[index] + del lines[index] + else: + lines[index] = "#%s\n" % arco_3rd_party_repo[0] + lines[index + 1] = "#%s\n" % arco_3rd_party_repo[1] + lines[index + 2] = "#%s\n" % arco_3rd_party_repo[2] + elif ( + "#" in line.strip() + and arco_3rd_party_repo[0] == line.replace("#", "").strip() + and distr != "arcolinux" + ): + # check if already commented + + index = lines.index(line) + del lines[index] + del lines[index] + del lines[index] + + if "%s\n" % arco_xlrepo[0] == line: + index = lines.index("%s\n" % arco_xlrepo[0]) + + if index > 0: + if distr != "arcolinux": + del lines[index] + del lines[index] + del lines[index] + else: + lines[index] = "#%s\n" % arco_xlrepo[0] + lines[index + 1] = "#%s\n" % arco_xlrepo[1] + lines[index + 2] = "#%s\n" % arco_xlrepo[2] + elif ( + "#" in line.strip() + and arco_xlrepo[0] == line.replace("#", "").strip() + and distr != "arcolinux" + ): + # check if already commented + + index = lines.index(line) + del lines[index] + del lines[index] + del lines[index] + + # remove any white spaces from end of the file only if on non arcolinux system + # on any non arcolinux distro lines are deleted which leaves empty lines in the file + # causing the file to grow in size + if distr != "arcolinux": + if lines[-1] == "\n": + del lines[-1] + + if lines[-2] == "\n": + del lines[-2] + + if lines[-3] == "\n": + del lines[-3] + + if lines[-4] == "\n": + del lines[-4] + + logger.info("[Remove ArcoLinux Repos] Writing to %s" % pacman_conf) + + if len(lines) > 0: + with open(pacman_conf, "w") as w: + w.writelines(lines) + + w.flush() + + return 0 + + else: + logger.error("Failed to process %s" % pacman_conf) + + else: + logger.error("Failed to read %s" % pacman_conf) + else: + logger.info("No ArcoLinux repos setup inside pacman conf file") + return 0 + + except Exception as e: + logger.error("Exception in remove_arco_repos(): %s" % e) + return e + + +# check if pacman.conf has arco repos setup + + +def verify_arco_pacman_conf(): + try: + lines = None + arco_repo_setup = False + arco_3rd_party_repo_setup = False + arco_xlrepo_setup = False + with open(pacman_conf, "r") as r: + lines = r.readlines() + + if lines is not None: + for line in lines: + if arco_repo[0] in line.strip(): + if "#" not in line.strip(): + arco_repo_setup = True + else: + return False + + if arco_3rd_party_repo[0] in line.strip(): + if "#" not in line.strip(): + arco_3rd_party_repo_setup = True + else: + return False + + if arco_xlrepo[0] in line.strip(): + if "#" not in line.strip(): + arco_xlrepo_setup = True + else: + return False + + if ( + arco_repo_setup is True + and arco_3rd_party_repo_setup is True + and arco_xlrepo_setup is True + ): + return True + else: + return False + except Exception as e: + logger.error("Exception in check_arco_pacman(): %s" % e) + + +# ===================================================== +# CHECK IF PACKAGE IS INSTALLED +# ===================================================== + + +# check if package is installed or not +def check_package_installed(package_name): + # query_str = ["pacman", "-Qi", package] + query_str = ["pacman", "-Qq"] + try: + process_pkg_installed = subprocess.run( + query_str, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + timeout=process_timeout, + universal_newlines=True, + ) + + if package_name in process_pkg_installed.stdout.splitlines(): + return True + else: + # check if the package is in the local pacman db + if check_pacman_localdb(package_name): + return True + else: + return False + + except subprocess.CalledProcessError: + # package is not installed + return False + + +# ===================================================== +# QUERY THE LOCAL PACMAN DB FOR PACKAGE +# ===================================================== + +# This is used to validate a package install/uninstall + + +# check if package is installed or not +def check_pacman_localdb(package_name): + query_str = ["pacman", "-Qi", package_name] + + try: + process_pkg_installed = subprocess.run( + query_str, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + timeout=process_timeout, + ) + + if process_pkg_installed.returncode == 0: + for line in process_pkg_installed.stdout.decode("utf-8").splitlines(): + if line.startswith("Name :"): + if line.replace(" ", "").split("Name:")[1].strip() == package_name: + return True + + if line.startswith("Replaces :"): + replaces = line.split("Replaces :")[1].strip() + if len(replaces) > 0: + if package_name in replaces: + return True + + else: + return False + + except subprocess.CalledProcessError: + # package is not installed + return False + + +# ===================================================== +# CHECK RUNNING PROCESS +# ===================================================== + + +def check_if_process_running(process_name): + for proc in psutil.process_iter(): + try: + pinfo = proc.as_dict(attrs=["pid", "name", "create_time"]) + if process_name == pinfo["pid"]: + return True + except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): + pass + return False + + +# ===================================================== +# NOTIFICATIONS +# ===================================================== + + +def show_in_app_notification(self, message, err): + if self.timeout_id is not None: + GLib.source_remove(self.timeout_id) + self.timeout_id = None + + if err is True: + self.notification_label.set_markup( + '' + message + "" + ) + else: + self.notification_label.set_markup( + '' + message + "" + ) + self.notification_revealer.set_reveal_child(True) + self.timeout_id = GLib.timeout_add(3000, timeout, self) + + +def timeout(self): + close_in_app_notification(self) + + +def close_in_app_notification(self): + self.notification_revealer.set_reveal_child(False) + GLib.source_remove(self.timeout_id) + self.timeout_id = None + + +def reveal_infobar(self, progress_dialog): + progress_dialog.infobar.set_revealed(True) + progress_dialog.infobar.show_all() + GLib.source_remove(self.timeout_id) + self.timeout_id = None + + +""" + Since the app could be quit/terminated at any time during a pacman transaction. + The pacman process spawned by the install/uninstall threads, needs to be terminated too. + Otherwise the app may hang waiting for pacman to complete its transaction. +""" +# ===================================================== +# PACMAN +# ===================================================== + + +def terminate_pacman(): + try: + process_found = False + for proc in psutil.process_iter(): + try: + pinfo = proc.as_dict(attrs=["pid", "name", "create_time"]) + if pinfo["name"] == "pacman": + process_found = True + logger.debug("Killing pacman process = %s" % pinfo["name"]) + + proc.kill() + + except (psutil.NoSuchProcess, psutil.AccessDenied): + continue + + if process_found is True: + if check_pacman_lockfile(): + os.unlink(pacman_lockfile) + except Exception as e: + logger.error("Exception in terminate_pacman() : %s" % e) + + +def is_thread_alive(thread_name): + for thread in threading.enumerate(): + if thread.name == thread_name and thread.is_alive(): + return True + + return False + + +def print_running_threads(): + threads_alive = [] + for thread in threading.enumerate(): + if thread.is_alive(): + threads_alive.append(thread.name) + + for th in threads_alive: + logger.debug("Thread = %s status = alive" % th) + + +# this keeps monitoring for items on the package holding queue +# items are added to the queue if a package install is stuck behind another pacman transaction +def check_holding_queue(self): + while True: + ( + package, + action, + widget, + cmd_str, + progress_dialog, + ) = self.pkg_holding_queue.get() + + try: + # logger.debug("Enqueued package = %s" % package.name) + + while check_pacman_lockfile() is True: + # logger.debug("Pacman is processing a transaction") + time.sleep(0.2) + + th_subprocess = Thread( + name="thread_subprocess", + target=start_subprocess, + args=( + self, + cmd_str, + progress_dialog, + action, + package, + widget, + ), + daemon=True, + ) + + th_subprocess.start() + + finally: + self.pkg_holding_queue.task_done() + + +# check if pacman lock file exists +def check_pacman_lockfile(): + try: + if os.path.exists(pacman_lockfile): + # logger.debug("Pacman lockfile found inside %s" % pacman_lockfile) + # logger.debug("Another pacman process is running") + return True + else: + # logger.info("No pacman lockfile found, OK to proceed") + return False + except Exception as e: + logger.error("Exception in check_pacman_lockfile() : %s" % e) + + +# this gets info on the pacman process currently running +def get_pacman_process(): + try: + for proc in psutil.process_iter(): + try: + pinfo = proc.as_dict(attrs=["pid", "name", "create_time"]) + if pinfo["name"] == "pacman": + return " ".join(proc.cmdline()) + + except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): + pass + + except Exception as e: + logger.error("Exception in get_pacman_process() : %s" % e) + + +# used inside PackageImportDialog to display package installation progress +def update_package_import_textview(self, line): + try: + if len(line) > 0: + self.msg_buffer.insert( + self.msg_buffer.get_end_iter(), + " %s" % line, + len(" %s" % line), + ) + + except Exception as e: + logger.error("Exception in update_progress_textview(): %s" % e) + finally: + self.pkg_import_queue.task_done() + text_mark_end = self.msg_buffer.create_mark( + "end", self.msg_buffer.get_end_iter(), False + ) + # scroll to the end of the textview + self.textview.scroll_mark_onscreen(text_mark_end) + + +def monitor_package_import(self): + while True: + if self.stop_thread is True: + break + message = self.pkg_import_queue.get() + GLib.idle_add( + update_package_import_textview, + self, + message, + priority=GLib.PRIORITY_DEFAULT, + ) + + # time.sleep(0.2) + + +# update the package install status label called from outside the main thread +def update_package_status_label(label, text): + label.set_markup(text) + + +def import_packages(self): + try: + packages_status_list = [] + package_failed = False + package_err = {} + + count = 0 + + # clean pacman cache + + if os.path.exists(pacman_cache_dir): + query_pacman_clean_cache_str = ["pacman", "-Sc", "--noconfirm"] + + logger.info("Cleaning Pacman cache directory = %s" % pacman_cache_dir) + + event = "%s [INFO]: Cleaning pacman cache\n" % datetime.now().strftime( + "%Y-%m-%d-%H-%M-%S" + ) + + self.pkg_import_queue.put(event) + + GLib.idle_add( + update_package_status_label, + self.label_package_status, + "Status: Cleaning pacman cache", + ) + + # clean the pacman cache, so we don't run into any invalid/corrupt package errors during install + process_pacman_cc = subprocess.Popen( + query_pacman_clean_cache_str, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True, + ) + + out, err = process_pacman_cc.communicate(timeout=process_timeout) + + self.pkg_import_queue.put(out) + + if process_pacman_cc.returncode == 0: + logger.info("Pacman cache directory cleaned") + else: + logger.error("Failed to clean Pacman cache directory") + + logger.info("Running full system upgrade") + # run full system upgrade, Arch does not allow partial package updates + query_str = ["pacman", "-Syu", "--noconfirm"] + # query_str = ["pacman", "-Qqen"] + logger.info("Running %s" % " ".join(query_str)) + + event = "%s [INFO]:Running full system upgrade\n" % datetime.now().strftime( + "%Y-%m-%d-%H-%M-%S" + ) + + self.pkg_import_queue.put(event) + + GLib.idle_add( + update_package_status_label, + self.label_package_status, + "Status: Performing full system upgrade - do not power off your system", + ) + + output = [] + + with subprocess.Popen( + query_str, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + while True: + if process.poll() is not None: + break + + for line in process.stdout: + # print(line.strip()) + + self.pkg_import_queue.put(line) + + output.append(line) + + # time.sleep(0.2) + + if process.returncode == 0: + logger.info("Pacman system upgrade completed") + GLib.idle_add( + update_package_status_label, + self.label_package_status, + "Status: Full system upgrade - completed", + ) + else: + if len(output) > 0: + if "there is nothing to do" not in output: + logger.error("Pacman system upgrade failed") + GLib.idle_add( + update_package_status_label, + self.label_package_status, + "Status: Full system upgrade - failed", + ) + + print("%s" % " ".join(output)) + + event = "%s [ERROR]: Installation of packages aborted due to errors\n" % datetime.now().strftime( + "%Y-%m-%d-%H-%M-%S" + ) + + self.pkg_import_queue.put(event) + + logger.error("Installation of packages aborted due to errors") + + return + + # do not proceed with package installs if system upgrade fails + else: + return + + # iterate through list of packages, calling pacman -S on each one + for package in self.packages_list: + process_output = [] + package = package.strip() + if len(package) > 0: + if "#" not in package: + query_str = ["pacman", "-S", package, "--needed", "--noconfirm"] + + count += 1 + + logger.info("Running %s" % " ".join(query_str)) + + event = "%s [INFO]: Running %s\n" % ( + datetime.now().strftime("%Y-%m-%d-%H-%M-%S"), + " ".join(query_str), + ) + + self.pkg_import_queue.put(event) + + with subprocess.Popen( + query_str, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + bufsize=1, + universal_newlines=True, + ) as process: + while True: + if process.poll() is not None: + break + for line in process.stdout: + process_output.append(line.strip()) + + self.pkg_import_queue.put(line) + + # time.sleep(0.2) + + if process.returncode == 0: + # since this is being run in another thread outside of main, use GLib to update UI component + GLib.idle_add( + update_package_status_label, + self.label_package_status, + "Status: %s -> Installed" % package, + ) + + GLib.idle_add( + update_package_status_label, + self.label_package_count, + "Progress: %s/%s" + % (count, len(self.packages_list)), + ) + + packages_status_list.append("%s -> Installed" % package) + + else: + logger.error("%s --> Install failed" % package) + GLib.idle_add( + update_package_status_label, + self.label_package_status, + "Status: %s -> Install failed" % package, + ) + + GLib.idle_add( + update_package_status_label, + self.label_package_count, + "Progress: %s/%s" + % (count, len(self.packages_list)), + ) + + if len(process_output) > 0: + if "there is nothing to do" not in process_output: + logger.error("%s" % " ".join(process_output)) + # store package error in dict + package_err[package] = " ".join(process_output) + + package_failed = True + + packages_status_list.append("%s -> Failed" % package) + + if len(packages_status_list) > 0: + self.pkg_status_queue.put(packages_status_list) + + if package_failed is True: + GLib.idle_add( + update_package_status_label, + self.label_package_status, + "Some packages have failed to install see %s" % self.logfile, + ) + + # end + event = "%s [INFO]: Completed, check the logfile for any errors\n" % ( + datetime.now().strftime("%Y-%m-%d-%H-%M-%S"), + ) + + self.pkg_import_queue.put(event) + + except Exception as e: + logger.error("Exception in import_packages(): %s" % e) + finally: + self.pkg_err_queue.put(package_err) + + +# package install completed now log status to log file +def log_package_status(self): + logger.info("Logging package status") + packages_status_list = None + package_err = None + while True: + try: + time.sleep(0.2) + packages_status_list = self.pkg_status_queue.get() + package_err = self.pkg_err_queue.get() + + finally: + self.pkg_status_queue.task_done() + self.pkg_err_queue.task_done() + with open(self.logfile, "w") as f: + f.write( + "# This file was auto-generated by Sofirem on %s at %s\n" + % ( + datetime.today().date(), + datetime.now().strftime("%H:%M:%S"), + ), + ) + if packages_status_list is not None: + for package in packages_status_list: + if package.split("->")[0].strip() in package_err: + f.write("%s\n" % package) + f.write( + "\tERROR: %s\n" + % package_err[package.split("->")[0].strip()] + ) + else: + f.write("%s\n" % package) + + break + + +# open sofirem log directory +def open_log_dir(): + try: + subprocess.Popen( + ["sudo", "-u", sudo_username, "xdg-open", log_dir], + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + except Exception as e: + logger.error("Exception in open_log_dir(): %s" % e) + + +# ANYTHING UNDER THIS LINE IS CURRENTLY UNUSED! diff --git a/usr/share/sofirem/Functions_Ref_DO_NOT_MODIFY.py b/usr/share/sofirem/Functions_Ref_DO_NOT_MODIFY.py new file mode 100644 index 0000000..b64e4d2 --- /dev/null +++ b/usr/share/sofirem/Functions_Ref_DO_NOT_MODIFY.py @@ -0,0 +1,728 @@ +# ================================================================= +# = Author: Cameron Percival = +# ================================================================= + + +import os +import sys +import shutil +import psutil +import datetime + +# import time +import subprocess +import threading # noqa +import gi + +# import configparser +gi.require_version("Gtk", "3.0") +from gi.repository import GLib, Gtk # noqa + + +# ===================================================== +# Create log file +# ===================================================== + +log_dir = "/var/log/arcolinux/" +aai_log_dir = "/var/log/arcolinux/aai/" + + +def create_log(self): + print("Making log in /var/log/arcolinux") + now = datetime.datetime.now() + time = now.strftime("%Y-%m-%d-%H-%M-%S") + destination = aai_log_dir + "aai-log-" + time + command = "sudo pacman -Q > " + destination + subprocess.call( + command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT + ) + # GLib.idle_add(show_in_app_notification, self, "Log file created") + + +# ===================================================== +# GLOBAL FUNCTIONS +# ===================================================== + + +def _get_position(lists, value): + data = [string for string in lists if value in string] + position = lists.index(data[0]) + return position + + +# ===================================================== +# PERMISSIONS +# ===================================================== + + +def permissions(dst): + try: + groups = subprocess.run( + ["sh", "-c", "id " + sudo_username], + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + for x in groups.stdout.decode().split(" "): + if "gid" in x: + g = x.split("(")[1] + group = g.replace(")", "").strip() + subprocess.call(["chown", "-R", sudo_username + ":" + group, dst], shell=False) + + except Exception as e: + print(e) + + +#######ANYTHING UNDER THIS LINE IS CURRENTLY UNUSED! + +sudo_username = os.getlogin() +home = "/home/" + str(sudo_username) + +sddm_default = "/etc/sddm.conf" +sddm_default_original = "/usr/local/share/arcolinux/sddm/sddm.conf" + +sddm_default_d1 = "/etc/sddm.conf" +sddm_default_d2 = "/etc/sddm.conf.d/kde_settings.conf" +sddm_default_d2_dir = "/etc/sddm.conf.d/" +sddm_default_d_sddm_original_1 = "/usr/local/share/arcolinux/sddm.conf.d/sddm.conf" +sddm_default_d_sddm_original_2 = ( + "/usr/local/share/arcolinux/sddm.conf.d/kde_settings.conf" +) + +if os.path.exists("/etc/sddm.conf.d/kde_settings.conf"): + sddm_conf = "/etc/sddm.conf.d/kde_settings.conf" +else: + sddm_conf = "/etc/sddm.conf" + +arcolinux_mirrorlist = "/etc/pacman.d/arcolinux-mirrorlist" +arcolinux_mirrorlist_original = "/usr/local/share/arcolinux/arcolinux-mirrorlist" +pacman = "/etc/pacman.conf" +oblogout_conf = "/etc/oblogout.conf" +# oblogout_conf = home + "/oblogout.conf" +gtk3_settings = home + "/.config/gtk-3.0/settings.ini" +gtk2_settings = home + "/.gtkrc-2.0" +grub_theme_conf = "/boot/grub/themes/Vimix/theme.txt" +xfce_config = home + "/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml" +slimlock_conf = "/etc/slim.conf" +termite_config = home + "/.config/termite/config" +neofetch_config = home + "/.config/neofetch/config.conf" +lightdm_conf = "/etc/lightdm/lightdm.conf" +bd = ".att_backups" +config = home + "/.config/archlinux-tweak-tool/settings.ini" +config_dir = home + "/.config/archlinux-tweak-tool/" +polybar = home + "/.config/polybar/" +desktop = "" +autostart = home + "/.config/autostart/" +zsh_config = home + "/.zshrc" +account_list = ["Standard", "Administrator"] +i3wm_config = home + "/.config/i3/config" +awesome_config = home + "/.config/awesome/rc.lua" +qtile_config = home + "/.config/qtile/config.py" + +seedhostmirror = "Server = https://ant.seedhost.eu/arcolinux/$repo/$arch" + +arepo_test = "[arcolinux_repo_testing]\n\ +SigLevel = Required DatabaseOptional\n\ +Include = /etc/pacman.d/arcolinux-mirrorlist" + +arepo = "[arcolinux_repo]\n\ +SigLevel = Required DatabaseOptional\n\ +Include = /etc/pacman.d/arcolinux-mirrorlist" + +a3drepo = "[arcolinux_repo_3party]\n\ +SigLevel = Required DatabaseOptional\n\ +Include = /etc/pacman.d/arcolinux-mirrorlist" + +axlrepo = "[arcolinux_repo_xlarge]\n\ +SigLevel = Required DatabaseOptional\n\ +Include = /etc/pacman.d/arcolinux-mirrorlist" + +hefftor_repo = "[hefftor-repo]\n\ +SigLevel = Optional TrustedOnly\n\ +Include = /etc/pacman.d/arcolinux-mirrorlist-bradheff" + +bobo_repo = "[chaotic-aur]\n\ +SigLevel = Required DatabaseOptional\n\ +Include = /etc/pacman.d/chaotic-mirrorlist" + +# ===================================================== +# NOTIFICATIONS +# ===================================================== + + +def show_in_app_notification(self, message): + if self.timeout_id is not None: + GLib.source_remove(self.timeout_id) + self.timeout_id = None + + self.notification_label.set_markup( + '' + message + "" + ) + self.notification_revealer.set_reveal_child(True) + self.timeout_id = GLib.timeout_add(3000, timeOut, self) + + +def timeOut(self): + close_in_app_notification(self) + + +def close_in_app_notification(self): + self.notification_revealer.set_reveal_child(False) + GLib.source_remove(self.timeout_id) + self.timeout_id = None + + +# ===================================================== +# PERMISSIONS +# ===================================================== + + +def test(dst): + for root, dirs, filesr in os.walk(dst): + # print(root) + for folder in dirs: + pass + # print(dst + "/" + folder) + for file in filesr: + pass + # print(dst + "/" + folder + "/" + file) + for file in filesr: + pass + # print(dst + "/" + file) + + +# ===================================================== +# COPY FUNCTION +# ===================================================== + + +def copy_func(src, dst, isdir=False): + if isdir: + subprocess.run(["cp", "-Rp", src, dst], shell=False) + else: + subprocess.run(["cp", "-p", src, dst], shell=False) + # permissions(dst) + + +# ===================================================== +# SOURCE +# ===================================================== + + +def source_shell(self): + process = subprocess.run(["sh", "-c", 'echo "$SHELL"'], stdout=subprocess.PIPE) + + output = process.stdout.decode().strip() + print(output) + if output == "/bin/bash": + subprocess.run( + [ + "bash", + "-c", + "su - " + sudo_username + ' -c "source ' + home + '/.bashrc"', + ], + stdout=subprocess.PIPE, + ) + elif output == "/bin/zsh": + subprocess.run( + ["zsh", "-c", "su - " + sudo_username + ' -c "source ' + home + '/.zshrc"'], + stdout=subprocess.PIPE, + ) + + +def run_as_user(script): + subprocess.call(["su - " + sudo_username + " -c " + script], shell=False) + + +# ===================================================== +# MESSAGEBOX +# ===================================================== + + +def MessageBox(self, title, message): + md2 = Gtk.MessageDialog( + parent=self, + flags=0, + message_type=Gtk.MessageType.INFO, + buttons=Gtk.ButtonsType.OK, + text=title, + ) + md2.format_secondary_markup(message) + md2.run() + md2.destroy() + + +# ===================================================== +# CONVERT COLOR +# ===================================================== + + +def rgb_to_hex(rgb): + if "rgb" in rgb: + rgb = rgb.replace("rgb(", "").replace(")", "") + vals = rgb.split(",") + return "#{0:02x}{1:02x}{2:02x}".format( + clamp(int(vals[0])), clamp(int(vals[1])), clamp(int(vals[2])) + ) + return rgb + + +def clamp(x): + return max(0, min(x, 255)) + + +# ===================================================== +# GLOBAL FUNCTIONS +# ===================================================== + + +def _get_variable(lists, value): + data = [string for string in lists if value in string] + + if len(data) >= 1: + + data1 = [string for string in data if "#" in string] + + for i in data1: + if i[:4].find("#") != -1: + data.remove(i) + if data: + data_clean = [data[0].strip("\n").replace(" ", "")][0].split("=") + return data_clean + + +# Check value exists + + +def check_value(list, value): + data = [string for string in list if value in string] + if len(data) >= 1: + data1 = [string for string in data if "#" in string] + for i in data1: + if i[:4].find("#") != -1: + data.remove(i) + return data + + +def check_backups(now): + if not os.path.exists(home + "/" + bd + "/Backup-" + now.strftime("%Y-%m-%d %H")): + os.makedirs(home + "/" + bd + "/Backup-" + now.strftime("%Y-%m-%d %H"), 0o777) + permissions(home + "/" + bd + "/Backup-" + now.strftime("%Y-%m-%d %H")) + + +# ===================================================== +# Check if File Exists +# ===================================================== + + +def file_check(file): + if os.path.isfile(file): + return True + + return False + + +def path_check(path): + if os.path.isdir(path): + return True + + return False + + +# ===================================================== +# GTK3 CONF +# ===================================================== + + +def gtk_check_value(my_list, value): + data = [string for string in my_list if value in string] + if len(data) >= 1: + data1 = [string for string in data if "#" in string] + for i in data1: + if i[:4].find("#") != -1: + data.remove(i) + return data + + +def gtk_get_position(my_list, value): + data = [string for string in my_list if value in string] + position = my_list.index(data[0]) + return position + + +# ===================================================== +# OBLOGOUT CONF +# ===================================================== +# Get shortcuts index + + +def get_shortcuts(conflist): + sortcuts = _get_variable(conflist, "shortcuts") + shortcuts_index = _get_position(conflist, sortcuts[0]) + return int(shortcuts_index) + + +# Get commands index + + +def get_commands(conflist): + commands = _get_variable(conflist, "commands") + commands_index = _get_position(conflist, commands[0]) + return int(commands_index) + + +# ===================================================== +# LIGHTDM CONF +# ===================================================== + + +def check_lightdm_value(list, value): + data = [string for string in list if value in string] + # if len(data) >= 1: + # data1 = [string for string in data if "#" in string] + + return data + + +# ===================================================== +# SDDM CONF +# ===================================================== + + +def check_sddm_value(list, value): + data = [string for string in list if value in string] + return data + + +# ===================================================== +# HBLOCK CONF +# ===================================================== + + +def hblock_get_state(self): + lines = int( + subprocess.check_output("wc -l /etc/hosts", shell=True).strip().split()[0] + ) + if os.path.exists("/usr/local/bin/hblock") and lines > 100: + return True + + self.firstrun = False + return False + + +def do_pulse(data, prog): + prog.pulse() + return True + + +def set_hblock(self, toggle, state): + GLib.idle_add(toggle.set_sensitive, False) + GLib.idle_add(self.label7.set_text, "Run..") + GLib.idle_add(self.progress.set_fraction, 0.2) + + timeout_id = None + timeout_id = GLib.timeout_add(100, do_pulse, None, self.progress) + + try: + + install = "pacman -S arcolinux-hblock-git --needed --noconfirm" + enable = "/usr/local/bin/hblock" + + if state: + if os.path.exists("/usr/local/bin/hblock"): + GLib.idle_add(self.label7.set_text, "Database update...") + subprocess.call( + [enable], + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + else: + GLib.idle_add(self.label7.set_text, "Install Hblock......") + subprocess.call( + install.split(" "), + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + GLib.idle_add(self.label7.set_text, "Database update...") + subprocess.call( + [enable], + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + + else: + GLib.idle_add(self.label7.set_text, "Remove update...") + subprocess.run( + ["sh", "-c", "HBLOCK_SOURCES='' /usr/local/bin/hblock"], + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + + GLib.idle_add(self.label7.set_text, "Complete") + GLib.source_remove(timeout_id) + timeout_id = None + GLib.idle_add(self.progress.set_fraction, 0) + + GLib.idle_add(toggle.set_sensitive, True) + if state: + GLib.idle_add(self.label7.set_text, "HBlock Active") + else: + GLib.idle_add(self.label7.set_text, "HBlock Inactive") + + except Exception as e: + MessageBox(self, "ERROR!!", str(e)) + print(e) + + +# ===================================================== +# UBLOCK ORIGIN +# ===================================================== + + +def ublock_get_state(self): + if os.path.exists( + "/usr/lib/firefox/browser/extensions/uBlock0@raymondhill.net.xpi" + ): + return True + return False + + +def set_firefox_ublock(self, toggle, state): + GLib.idle_add(toggle.set_sensitive, False) + GLib.idle_add(self.label7.set_text, "Run..") + GLib.idle_add(self.progress.set_fraction, 0.2) + + timeout_id = None + timeout_id = GLib.timeout_add(100, do_pulse, None, self.progress) + + try: + + install_ublock = "pacman -S firefox-ublock-origin --needed --noconfirm" + uninstall_ublock = "pacman -Rs firefox-ublock-origin --noconfirm" + + if state: + GLib.idle_add(self.label7.set_text, "Installing ublock Origin...") + subprocess.call( + install_ublock.split(" "), + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + else: + GLib.idle_add(self.label7.set_text, "Removing ublock Origin...") + subprocess.call( + uninstall_ublock.split(" "), + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + + GLib.idle_add(self.label7.set_text, "Complete") + GLib.source_remove(timeout_id) + timeout_id = None + GLib.idle_add(self.progress.set_fraction, 0) + + GLib.idle_add(toggle.set_sensitive, True) + if state: + GLib.idle_add(self.label7.set_text, "uBlock Origin installed") + else: + GLib.idle_add(self.label7.set_text, "uBlock Origin removed") + + except Exception as e: + MessageBox(self, "ERROR!!", str(e)) + print(e) + + +# ===================================================== +# ALACRITTY +# ===================================================== + + +def install_alacritty(self): + install = "pacman -S alacritty --needed --noconfirm" + + if os.path.exists("/usr/bin/alacritty"): + pass + else: + subprocess.call( + install.split(" "), + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + + +# ===================================================== +# ARCOLINUX-DESKTOP-TRASHER +# ===================================================== + + +def install_adt(self): + install = "pacman -S arcolinux-desktop-trasher-git --noconfirm" + + if os.path.exists("/usr/local/bin/arcolinux-desktop-trasher"): + pass + else: + subprocess.call( + install.split(" "), + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + + +# ===================================================== +# GRUB CONF +# ===================================================== + + +def get_grub_wallpapers(): + if os.path.isdir("/boot/grub/themes/Vimix"): + lists = os.listdir("/boot/grub/themes/Vimix") + + rems = [ + "select_e.png", + "terminal_box_se.png", + "select_c.png", + "terminal_box_c.png", + "terminal_box_s.png", + "select_w.png", + "terminal_box_nw.png", + "terminal_box_w.png", + "terminal_box_ne.png", + "terminal_box_sw.png", + "terminal_box_n.png", + "terminal_box_e.png", + ] + + ext = [".png", ".jpeg", ".jpg"] + + new_list = [x for x in lists if x not in rems for y in ext if y in x] + + new_list.sort() + return new_list + + +def set_grub_wallpaper(self, image): + if os.path.isfile(grub_theme_conf): + if not os.path.isfile(grub_theme_conf + ".bak"): + shutil.copy(grub_theme_conf, grub_theme_conf + ".bak") + try: + with open(grub_theme_conf, "r") as f: + lists = f.readlines() + f.close() + + val = _get_position(lists, "desktop-image: ") + lists[val] = 'desktop-image: "' + os.path.basename(image) + '"' + "\n" + + with open(grub_theme_conf, "w") as f: + f.writelines(lists) + f.close() + + show_in_app_notification(self, "Settings Saved Successfully") + # MessageBox(self, "Success!!", "Settings Saved Successfully") + except: # noqa + pass + + +# ===================================================== +# NEOFETCH CONF +# ===================================================== + + +def neofetch_set_value(lists, pos, text, state): + if state: + if text in lists[pos]: + if "#" in lists[pos]: + lists[pos] = lists[pos].replace("#", "") + else: + if text in lists[pos]: + if "#" not in lists[pos]: + lists[pos] = "#" + lists[pos] + + return lists + + +def neofetch_set_backend_value(lists, pos, text, value): + if text in lists[pos] and "#" not in lists[pos]: + lists[pos] = text + value + '"\n' + + +# ==================================================================== +# CUSTOM FUNCTION +# ==================================================================== + + +def get_desktop(self): + base_dir = os.path.dirname(os.path.realpath(__file__)) + + desktop = subprocess.run( + ["sh", base_dir + "/get_desktop.sh", "-n"], + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + dsk = desktop.stdout.decode().strip().split("\n") + self.desktop = dsk[-1].strip() + + +def copytree(self, src, dst, symlinks=False, ignore=None): # noqa + + if not os.path.exists(dst): + os.makedirs(dst) + for item in os.listdir(src): + s = os.path.join(src, item) + d = os.path.join(dst, item) + if os.path.exists(d): + try: + shutil.rmtree(d) + except Exception as e: + print(e) + os.unlink(d) + if os.path.isdir(s): + try: + shutil.copytree(s, d, symlinks, ignore) + except Exception as e: + print(e) + print("ERROR2") + self.ecode = 1 + else: + try: + shutil.copy2(s, d) + except: # noqa + print("ERROR3") + self.ecode = 1 + + +# ===================================================== +# CHECK RUNNING PROCESS +# ===================================================== + + +def checkIfProcessRunning(processName): + for proc in psutil.process_iter(): + try: + pinfo = proc.as_dict(attrs=["pid", "name", "create_time"]) + if processName == pinfo["pid"]: + return True + except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): + pass + return False + + +def restart_program(): + python = sys.executable + os.execl(python, python, *sys.argv) + + +# JUNK CODE FOR LEARNING PROGRESS BARS: +# from tqdm import tqdm +# loop = tqdm(total = 1000, position = 0, leave = False) +# for k in range(1001): +# loop.set_description("Loading...".format(k)) +# loop.update(1) +# loop.close diff --git a/usr/share/sofirem/Package.py b/usr/share/sofirem/Package.py new file mode 100644 index 0000000..67a33cb --- /dev/null +++ b/usr/share/sofirem/Package.py @@ -0,0 +1,19 @@ +# This class is to encapsulate package metadata, taken from the yaml files stored inside the sofirem github repository + + +class Package(object): + def __init__( + self, + name, + description, + category, + subcategory, + subcategory_description, + version, + ): + self.name = name + self.description = description + self.category = category + self.subcategory = subcategory + self.subcategory_description = subcategory_description + self.version = version diff --git a/usr/share/sofirem/Settings.py b/usr/share/sofirem/Settings.py new file mode 100644 index 0000000..13992a7 --- /dev/null +++ b/usr/share/sofirem/Settings.py @@ -0,0 +1,132 @@ +# This class is used to process configuration data for the app + +import os +import Functions as fn +from string import Template + +base_dir = os.path.dirname(os.path.realpath(__file__)) +# a default configuration file if one doesn't exist is copied over from /usr/share/sofirem/defaults to $HOME/.config +default_file = "%s/defaults/sofirem.yaml" % base_dir + + +class Settings(object): + def __init__(self, display_versions, display_package_progress): + self.display_versions = display_versions + self.display_package_progress = display_package_progress + + def write_config_file(self): + try: + content = [] + with open(fn.config_file, "r", encoding="UTF-8") as f: + contents = f.readlines() + + if len(contents) > 0: + self.read(contents) + + conf_settings = {} + + conf_settings["Display Package Versions"] = self.display_versions + + conf_settings[ + "Display Package Progress" + ] = self.display_package_progress + + index = 0 + for line in contents: + if line.startswith("- name:"): + if ( + line.strip("- name: ") + .strip() + .strip('"') + .strip("\n") + .strip() + == "Display Package Versions" + ): + index = contents.index(line) + + index += 2 + + if contents[index].startswith(" enabled: "): + del contents[index] + contents.insert( + index, + " enabled: %s\n" + % conf_settings["Display Package Versions"], + ) + + if ( + line.strip("- name: ") + .strip() + .strip('"') + .strip("\n") + .strip() + == "Display Package Progress" + ): + index += 4 + if contents[index].startswith(" enabled: "): + del contents[index] + contents.insert( + index, + " enabled: %s\n" + % conf_settings["Display Package Progress"], + ) + + if len(contents) > 0: + with open(fn.config_file, "w", encoding="UTF-8") as f: + f.writelines(contents) + + fn.permissions(fn.config_dir) + + except Exception as e: + fn.logger.error("Exception in write_config_file(): %s" % e) + + def read_config_file(self): + try: + if os.path.exists(fn.config_file): + contents = [] + with open(fn.config_file, "r", encoding="UTF-8") as f: + contents = f.readlines() + + # file is empty, string replace template file + if len(contents) == 0: + fn.shutil.copy(default_file, fn.config_file) + fn.permissions(fn.config_dir) + else: + return self.read(contents) + + else: + # config file doesn't exist, string replace template file + fn.shutil.copy(default_file, fn.config_file) + fn.permissions(fn.config_dir) + + with open(fn.config_file, "r", encoding="UTF-8") as f: + contents = f.readlines() + + return self.read(contents) + + except Exception as e: + print("Exception in read_config_file(): %s" % e) + + def read(self, contents): + setting_name = None + setting_value_enabled = None + conf_settings = {} + for line in contents: + if line.startswith("- name:"): + setting_name = ( + line.strip("- name: ").strip().strip('"').strip("\n").strip() + ) + elif line.startswith(" enabled: "): + setting_value_enabled = ( + line.strip(" enabled: ").strip().strip('"').strip("\n").strip() + ) + + if setting_value_enabled == "False": + conf_settings[setting_name] = False + else: + conf_settings[setting_name] = True + + if len(conf_settings) > 0: + return conf_settings + else: + print("[ERROR] Failed to read settings into memory") diff --git a/usr/share/sofirem/cache/a-candy-beauty-icon-theme-git b/usr/share/sofirem/cache/a-candy-beauty-icon-theme-git new file mode 100644 index 0000000..4aac38b --- /dev/null +++ b/usr/share/sofirem/cache/a-candy-beauty-icon-theme-git @@ -0,0 +1 @@ +Beautyline icons completed for ArcoLinux + Candy icons \ No newline at end of file diff --git a/usr/share/sofirem/cache/abiword b/usr/share/sofirem/cache/abiword new file mode 100644 index 0000000..8f8d117 --- /dev/null +++ b/usr/share/sofirem/cache/abiword @@ -0,0 +1 @@ +Fully-featured word processor \ No newline at end of file diff --git a/usr/share/sofirem/cache/acpilight b/usr/share/sofirem/cache/acpilight new file mode 100644 index 0000000..b799eca --- /dev/null +++ b/usr/share/sofirem/cache/acpilight @@ -0,0 +1 @@ +a backward-compatible xbacklight replacement based on ACPI \ No newline at end of file diff --git a/usr/share/sofirem/cache/adapta-gtk-theme b/usr/share/sofirem/cache/adapta-gtk-theme new file mode 100644 index 0000000..e73da1e --- /dev/null +++ b/usr/share/sofirem/cache/adapta-gtk-theme @@ -0,0 +1 @@ +An adaptive Gtk+ theme based on Material Design Guidelines \ No newline at end of file diff --git a/usr/share/sofirem/cache/adobe-source-code-pro-fonts b/usr/share/sofirem/cache/adobe-source-code-pro-fonts new file mode 100644 index 0000000..28db9af --- /dev/null +++ b/usr/share/sofirem/cache/adobe-source-code-pro-fonts @@ -0,0 +1 @@ +Monospaced font family for user interface and coding environment \ No newline at end of file diff --git a/usr/share/sofirem/cache/adobe-source-sans-fonts b/usr/share/sofirem/cache/adobe-source-sans-fonts new file mode 100644 index 0000000..8fe16ee --- /dev/null +++ b/usr/share/sofirem/cache/adobe-source-sans-fonts @@ -0,0 +1 @@ +Sans-serif font family for user interface environments \ No newline at end of file diff --git a/usr/share/sofirem/cache/adobe-source-serif-fonts b/usr/share/sofirem/cache/adobe-source-serif-fonts new file mode 100644 index 0000000..56b3a7e --- /dev/null +++ b/usr/share/sofirem/cache/adobe-source-serif-fonts @@ -0,0 +1 @@ +Serif typeface designed to complement Source Sans \ No newline at end of file diff --git a/usr/share/sofirem/cache/airdroid-nativefier b/usr/share/sofirem/cache/airdroid-nativefier new file mode 100644 index 0000000..4701725 --- /dev/null +++ b/usr/share/sofirem/cache/airdroid-nativefier @@ -0,0 +1 @@ +An Airdroid client build with nativefier \ No newline at end of file diff --git a/usr/share/sofirem/cache/aisleriot b/usr/share/sofirem/cache/aisleriot new file mode 100644 index 0000000..dda611f --- /dev/null +++ b/usr/share/sofirem/cache/aisleriot @@ -0,0 +1 @@ +A collection of patience games written in guile scheme \ No newline at end of file diff --git a/usr/share/sofirem/cache/alacritty b/usr/share/sofirem/cache/alacritty new file mode 100644 index 0000000..b03dccf --- /dev/null +++ b/usr/share/sofirem/cache/alacritty @@ -0,0 +1 @@ +A cross-platform, GPU-accelerated terminal emulator \ No newline at end of file diff --git a/usr/share/sofirem/cache/alacritty-themes b/usr/share/sofirem/cache/alacritty-themes new file mode 100644 index 0000000..2554fb6 --- /dev/null +++ b/usr/share/sofirem/cache/alacritty-themes @@ -0,0 +1 @@ +A utility for choosing and applying Alacritty terminal themes. \ No newline at end of file diff --git a/usr/share/sofirem/cache/albert b/usr/share/sofirem/cache/albert new file mode 100644 index 0000000..157f5aa --- /dev/null +++ b/usr/share/sofirem/cache/albert @@ -0,0 +1 @@ +A sophisticated standalone keyboard launcher \ No newline at end of file diff --git a/usr/share/sofirem/cache/alsi b/usr/share/sofirem/cache/alsi new file mode 100644 index 0000000..d3ede41 --- /dev/null +++ b/usr/share/sofirem/cache/alsi @@ -0,0 +1 @@ +ALSI: a configurable system information tool for Arch Linux. \ No newline at end of file diff --git a/usr/share/sofirem/cache/amberol b/usr/share/sofirem/cache/amberol new file mode 100644 index 0000000..ed551a8 --- /dev/null +++ b/usr/share/sofirem/cache/amberol @@ -0,0 +1 @@ +Plays music, and nothing else \ No newline at end of file diff --git a/usr/share/sofirem/cache/amd-ucode b/usr/share/sofirem/cache/amd-ucode new file mode 100644 index 0000000..07431ab --- /dev/null +++ b/usr/share/sofirem/cache/amd-ucode @@ -0,0 +1 @@ +Microcode update image for AMD CPUs \ No newline at end of file diff --git a/usr/share/sofirem/cache/android-file-transfer b/usr/share/sofirem/cache/android-file-transfer new file mode 100644 index 0000000..1eccd8f --- /dev/null +++ b/usr/share/sofirem/cache/android-file-transfer @@ -0,0 +1 @@ +Android MTP client with minimalistic UI \ No newline at end of file diff --git a/usr/share/sofirem/cache/android-sdk-platform-tools b/usr/share/sofirem/cache/android-sdk-platform-tools new file mode 100644 index 0000000..6991d62 --- /dev/null +++ b/usr/share/sofirem/cache/android-sdk-platform-tools @@ -0,0 +1 @@ +Platform-Tools for Google Android SDK (adb and fastboot) \ No newline at end of file diff --git a/usr/share/sofirem/cache/android-tools b/usr/share/sofirem/cache/android-tools new file mode 100644 index 0000000..cc6f778 --- /dev/null +++ b/usr/share/sofirem/cache/android-tools @@ -0,0 +1 @@ +Android platform tools \ No newline at end of file diff --git a/usr/share/sofirem/cache/anydesk-bin b/usr/share/sofirem/cache/anydesk-bin new file mode 100644 index 0000000..e18f842 --- /dev/null +++ b/usr/share/sofirem/cache/anydesk-bin @@ -0,0 +1 @@ +Fast remote desktop application \ No newline at end of file diff --git a/usr/share/sofirem/cache/appimagelauncher b/usr/share/sofirem/cache/appimagelauncher new file mode 100644 index 0000000..85153d4 --- /dev/null +++ b/usr/share/sofirem/cache/appimagelauncher @@ -0,0 +1 @@ +A Helper application for running and integrating AppImages. \ No newline at end of file diff --git a/usr/share/sofirem/cache/arc-darkest-theme-git b/usr/share/sofirem/cache/arc-darkest-theme-git new file mode 100644 index 0000000..81603bd --- /dev/null +++ b/usr/share/sofirem/cache/arc-darkest-theme-git @@ -0,0 +1 @@ +A darker version of famous Arc theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/arc-icon-theme b/usr/share/sofirem/cache/arc-icon-theme new file mode 100644 index 0000000..8eaac3d --- /dev/null +++ b/usr/share/sofirem/cache/arc-icon-theme @@ -0,0 +1 @@ +Arc icon theme. Official releases only. \ No newline at end of file diff --git a/usr/share/sofirem/cache/arc-x-icons-theme b/usr/share/sofirem/cache/arc-x-icons-theme new file mode 100644 index 0000000..be05047 --- /dev/null +++ b/usr/share/sofirem/cache/arc-x-icons-theme @@ -0,0 +1 @@ +Modern free desktop icon theme whose design is based around the use of bold colours and simple geometric shapes to compose icons with pixel perfect rendering. \ No newline at end of file diff --git a/usr/share/sofirem/cache/archey3 b/usr/share/sofirem/cache/archey3 new file mode 100644 index 0000000..c2c0041 --- /dev/null +++ b/usr/share/sofirem/cache/archey3 @@ -0,0 +1 @@ +Output a logo and various system information \ No newline at end of file diff --git a/usr/share/sofirem/cache/archlinux-login-backgrounds-git b/usr/share/sofirem/cache/archlinux-login-backgrounds-git new file mode 100644 index 0000000..b755329 --- /dev/null +++ b/usr/share/sofirem/cache/archlinux-login-backgrounds-git @@ -0,0 +1 @@ +Backgrounds for any login manager - sddm, lightdm, ... \ No newline at end of file diff --git a/usr/share/sofirem/cache/archlinux-logout-git b/usr/share/sofirem/cache/archlinux-logout-git new file mode 100644 index 0000000..d0ebf44 --- /dev/null +++ b/usr/share/sofirem/cache/archlinux-logout-git @@ -0,0 +1 @@ +Arch Linux logout diff --git a/usr/share/sofirem/cache/archlinux-tweak-tool-git b/usr/share/sofirem/cache/archlinux-tweak-tool-git new file mode 100644 index 0000000..b3401a4 --- /dev/null +++ b/usr/share/sofirem/cache/archlinux-tweak-tool-git @@ -0,0 +1 @@ +Arch Linux Tweak Tool or ATT \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-aqua-git b/usr/share/sofirem/cache/arcolinux-arc-aqua-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-aqua-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-archlinux-blue-git b/usr/share/sofirem/cache/arcolinux-arc-archlinux-blue-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-archlinux-blue-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-arcolinux-blue-git b/usr/share/sofirem/cache/arcolinux-arc-arcolinux-blue-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-arcolinux-blue-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-azul-git b/usr/share/sofirem/cache/arcolinux-arc-azul-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-azul-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-azure-dodger-blue-git b/usr/share/sofirem/cache/arcolinux-arc-azure-dodger-blue-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-azure-dodger-blue-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-azure-git b/usr/share/sofirem/cache/arcolinux-arc-azure-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-azure-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-blood-git b/usr/share/sofirem/cache/arcolinux-arc-blood-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-blood-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-blue-sky-git b/usr/share/sofirem/cache/arcolinux-arc-blue-sky-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-blue-sky-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-botticelli-git b/usr/share/sofirem/cache/arcolinux-arc-botticelli-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-botticelli-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-bright-lilac-git b/usr/share/sofirem/cache/arcolinux-arc-bright-lilac-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-bright-lilac-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-bright-lime-green-git b/usr/share/sofirem/cache/arcolinux-arc-bright-lime-green-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-bright-lime-green-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-carnation-git b/usr/share/sofirem/cache/arcolinux-arc-carnation-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-carnation-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-carolina-blue-git b/usr/share/sofirem/cache/arcolinux-arc-carolina-blue-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-carolina-blue-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-casablanca-git b/usr/share/sofirem/cache/arcolinux-arc-casablanca-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-casablanca-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-crimson-git b/usr/share/sofirem/cache/arcolinux-arc-crimson-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-crimson-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-dawn-git b/usr/share/sofirem/cache/arcolinux-arc-dawn-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-dawn-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-dodger-blue-git b/usr/share/sofirem/cache/arcolinux-arc-dodger-blue-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-dodger-blue-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-emerald-git b/usr/share/sofirem/cache/arcolinux-arc-emerald-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-emerald-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-evopop-git b/usr/share/sofirem/cache/arcolinux-arc-evopop-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-evopop-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-fern-git b/usr/share/sofirem/cache/arcolinux-arc-fern-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-fern-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-fire-git b/usr/share/sofirem/cache/arcolinux-arc-fire-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-fire-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-froly-git b/usr/share/sofirem/cache/arcolinux-arc-froly-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-froly-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-havelock-git b/usr/share/sofirem/cache/arcolinux-arc-havelock-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-havelock-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-hibiscus-git b/usr/share/sofirem/cache/arcolinux-arc-hibiscus-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-hibiscus-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-kde b/usr/share/sofirem/cache/arcolinux-arc-kde new file mode 100644 index 0000000..862b128 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-kde @@ -0,0 +1 @@ +Arc theme for KDE Plasma 5 \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-light-blue-grey-git b/usr/share/sofirem/cache/arcolinux-arc-light-blue-grey-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-light-blue-grey-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-light-blue-surfn-git b/usr/share/sofirem/cache/arcolinux-arc-light-blue-surfn-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-light-blue-surfn-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-light-salmon-git b/usr/share/sofirem/cache/arcolinux-arc-light-salmon-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-light-salmon-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-mandy-git b/usr/share/sofirem/cache/arcolinux-arc-mandy-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-mandy-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-mantis-git b/usr/share/sofirem/cache/arcolinux-arc-mantis-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-mantis-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-medium-blue-git b/usr/share/sofirem/cache/arcolinux-arc-medium-blue-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-medium-blue-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-niagara-git b/usr/share/sofirem/cache/arcolinux-arc-niagara-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-niagara-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-nice-blue-git b/usr/share/sofirem/cache/arcolinux-arc-nice-blue-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-nice-blue-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-numix-git b/usr/share/sofirem/cache/arcolinux-arc-numix-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-numix-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-orchid-git b/usr/share/sofirem/cache/arcolinux-arc-orchid-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-orchid-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-pale-grey-git b/usr/share/sofirem/cache/arcolinux-arc-pale-grey-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-pale-grey-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-paper-git b/usr/share/sofirem/cache/arcolinux-arc-paper-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-paper-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-pink-git b/usr/share/sofirem/cache/arcolinux-arc-pink-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-pink-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-polo-git b/usr/share/sofirem/cache/arcolinux-arc-polo-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-polo-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-punch-git b/usr/share/sofirem/cache/arcolinux-arc-punch-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-punch-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-red-orange-git b/usr/share/sofirem/cache/arcolinux-arc-red-orange-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-red-orange-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-rusty-orange-git b/usr/share/sofirem/cache/arcolinux-arc-rusty-orange-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-rusty-orange-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-sky-blue-git b/usr/share/sofirem/cache/arcolinux-arc-sky-blue-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-sky-blue-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-slate-grey-git b/usr/share/sofirem/cache/arcolinux-arc-slate-grey-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-slate-grey-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-smoke-git b/usr/share/sofirem/cache/arcolinux-arc-smoke-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-smoke-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-soft-blue-git b/usr/share/sofirem/cache/arcolinux-arc-soft-blue-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-soft-blue-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-tacao-git b/usr/share/sofirem/cache/arcolinux-arc-tacao-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-tacao-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-tangerine-git b/usr/share/sofirem/cache/arcolinux-arc-tangerine-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-tangerine-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-themes-2021-creative-git b/usr/share/sofirem/cache/arcolinux-arc-themes-2021-creative-git new file mode 100644 index 0000000..139c1ed --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-themes-2021-creative-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux with Arc Colora script \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-themes-2021-git b/usr/share/sofirem/cache/arcolinux-arc-themes-2021-git new file mode 100644 index 0000000..139c1ed --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-themes-2021-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux with Arc Colora script \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-themes-2021-sky-git b/usr/share/sofirem/cache/arcolinux-arc-themes-2021-sky-git new file mode 100644 index 0000000..139c1ed --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-themes-2021-sky-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux with Arc Colora script \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-themes-git b/usr/share/sofirem/cache/arcolinux-arc-themes-git new file mode 100644 index 0000000..4f80141 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-themes-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux with Arc Colora scrip \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-tory-git b/usr/share/sofirem/cache/arcolinux-arc-tory-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-tory-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-arc-warm-pink-git b/usr/share/sofirem/cache/arcolinux-arc-warm-pink-git new file mode 100644 index 0000000..7f379e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-arc-warm-pink-git @@ -0,0 +1 @@ +Arc themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-awesome-git b/usr/share/sofirem/cache/arcolinux-awesome-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-awesome-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-berry-git b/usr/share/sofirem/cache/arcolinux-berry-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-berry-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-bspwm-git b/usr/share/sofirem/cache/arcolinux-bspwm-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-bspwm-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-budgie-dconf-git b/usr/share/sofirem/cache/arcolinux-budgie-dconf-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-budgie-dconf-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-budgie-git b/usr/share/sofirem/cache/arcolinux-budgie-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-budgie-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-chadwm-git b/usr/share/sofirem/cache/arcolinux-chadwm-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-chadwm-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-cinnamon-dconf-git b/usr/share/sofirem/cache/arcolinux-cinnamon-dconf-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-cinnamon-dconf-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-cinnamon-git b/usr/share/sofirem/cache/arcolinux-cinnamon-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-cinnamon-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-common-git b/usr/share/sofirem/cache/arcolinux-common-git new file mode 100644 index 0000000..e0c16e8 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-common-git @@ -0,0 +1 @@ +ArcoLinux common files \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-config-all-desktops-git b/usr/share/sofirem/cache/arcolinux-config-all-desktops-git new file mode 100644 index 0000000..594dc6a --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-config-all-desktops-git @@ -0,0 +1 @@ +Configuration files for all desktops from ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-config-plasma-git b/usr/share/sofirem/cache/arcolinux-config-plasma-git new file mode 100644 index 0000000..cf9a4de --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-config-plasma-git @@ -0,0 +1 @@ +Configuration files for ArcoLinuxB Plasma \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-conky-collection-git b/usr/share/sofirem/cache/arcolinux-conky-collection-git new file mode 100644 index 0000000..3eb1ce5 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-conky-collection-git @@ -0,0 +1 @@ +Conky themes from ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-conky-collection-plasma-git b/usr/share/sofirem/cache/arcolinux-conky-collection-plasma-git new file mode 100644 index 0000000..3fdd22c --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-conky-collection-plasma-git @@ -0,0 +1 @@ +Conky themes from ArcoLinux for Plasma only \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-cutefish-dconf-git b/usr/share/sofirem/cache/arcolinux-cutefish-dconf-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-cutefish-dconf-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-cutefish-git b/usr/share/sofirem/cache/arcolinux-cutefish-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-cutefish-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-cwm-git b/usr/share/sofirem/cache/arcolinux-cwm-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-cwm-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-dconf-all-desktops-git b/usr/share/sofirem/cache/arcolinux-dconf-all-desktops-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-dconf-all-desktops-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-deepin-dconf-git b/usr/share/sofirem/cache/arcolinux-deepin-dconf-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-deepin-dconf-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-deepin-git b/usr/share/sofirem/cache/arcolinux-deepin-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-deepin-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-desktop-trasher-git b/usr/share/sofirem/cache/arcolinux-desktop-trasher-git new file mode 100644 index 0000000..8ffdcd2 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-desktop-trasher-git @@ -0,0 +1 @@ +ArcoLinux Desktop Trasher \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-docs-git b/usr/share/sofirem/cache/arcolinux-docs-git new file mode 100644 index 0000000..5dabcb0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-docs-git @@ -0,0 +1 @@ +Documentation created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-dusk-git b/usr/share/sofirem/cache/arcolinux-dusk-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-dusk-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-dwm-git b/usr/share/sofirem/cache/arcolinux-dwm-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-dwm-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-dwm-slstatus-git b/usr/share/sofirem/cache/arcolinux-dwm-slstatus-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-dwm-slstatus-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-dwm-st-git b/usr/share/sofirem/cache/arcolinux-dwm-st-git new file mode 100644 index 0000000..e708097 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-dwm-st-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Dwm \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-fvwm3-git b/usr/share/sofirem/cache/arcolinux-fvwm3-git new file mode 100644 index 0000000..19d76f2 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-fvwm3-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Fvwm3 \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-geany-git b/usr/share/sofirem/cache/arcolinux-geany-git new file mode 100644 index 0000000..bf92a0a --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-geany-git @@ -0,0 +1 @@ +geany config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-gnome-dconf-git b/usr/share/sofirem/cache/arcolinux-gnome-dconf-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-gnome-dconf-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-gnome-git b/usr/share/sofirem/cache/arcolinux-gnome-git new file mode 100644 index 0000000..42eb9ea --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-gnome-git @@ -0,0 +1 @@ +ArcoLinuxB Gnome Desktop Settings \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-gtk3-arcolinux-candy-beauty-git b/usr/share/sofirem/cache/arcolinux-gtk3-arcolinux-candy-beauty-git new file mode 100644 index 0000000..5cc608c --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-gtk3-arcolinux-candy-beauty-git @@ -0,0 +1 @@ +Gtk3 config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-gtk3-sardi-arc-git b/usr/share/sofirem/cache/arcolinux-gtk3-sardi-arc-git new file mode 100644 index 0000000..5cc608c --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-gtk3-sardi-arc-git @@ -0,0 +1 @@ +Gtk3 config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-gtk3-surfn-arc-breeze-git b/usr/share/sofirem/cache/arcolinux-gtk3-surfn-arc-breeze-git new file mode 100644 index 0000000..5cc608c --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-gtk3-surfn-arc-breeze-git @@ -0,0 +1 @@ +Gtk3 config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-gtk3-surfn-arc-git b/usr/share/sofirem/cache/arcolinux-gtk3-surfn-arc-git new file mode 100644 index 0000000..5cc608c --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-gtk3-surfn-arc-git @@ -0,0 +1 @@ +Gtk3 config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-guake-autostart-git b/usr/share/sofirem/cache/arcolinux-guake-autostart-git new file mode 100644 index 0000000..092f3c6 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-guake-autostart-git @@ -0,0 +1 @@ +guake autostart for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-herbstluftwm-git b/usr/share/sofirem/cache/arcolinux-herbstluftwm-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-herbstluftwm-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-hypr-git b/usr/share/sofirem/cache/arcolinux-hypr-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-hypr-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-hyprland-git b/usr/share/sofirem/cache/arcolinux-hyprland-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-hyprland-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-hyprland-profile-git b/usr/share/sofirem/cache/arcolinux-hyprland-profile-git new file mode 100644 index 0000000..d13f730 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-hyprland-profile-git @@ -0,0 +1 @@ +Profile for ArcoLinux Hyprland \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-i3wm-git b/usr/share/sofirem/cache/arcolinux-i3wm-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-i3wm-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-icewm-git b/usr/share/sofirem/cache/arcolinux-icewm-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-icewm-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-jwm-git b/usr/share/sofirem/cache/arcolinux-jwm-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-jwm-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-leftwm-git b/usr/share/sofirem/cache/arcolinux-leftwm-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-leftwm-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-local-xfce4-git b/usr/share/sofirem/cache/arcolinux-local-xfce4-git new file mode 100644 index 0000000..41194b8 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-local-xfce4-git @@ -0,0 +1 @@ +Configuration for .local folder \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-lxqt-git b/usr/share/sofirem/cache/arcolinux-lxqt-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-lxqt-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-mate-dconf-git b/usr/share/sofirem/cache/arcolinux-mate-dconf-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-mate-dconf-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-mate-git b/usr/share/sofirem/cache/arcolinux-mate-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-mate-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-arc-theme b/usr/share/sofirem/cache/arcolinux-meta-arc-theme new file mode 100644 index 0000000..19fcb5e --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-arc-theme @@ -0,0 +1 @@ +Installs all ArcoLinux Arc Themes \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-asian-fonts b/usr/share/sofirem/cache/arcolinux-meta-asian-fonts new file mode 100644 index 0000000..8629a05 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-asian-fonts @@ -0,0 +1 @@ +Installs asian fonts on ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-fun b/usr/share/sofirem/cache/arcolinux-meta-fun new file mode 100644 index 0000000..65625f5 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-fun @@ -0,0 +1 @@ +Installs fun applications on ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-log b/usr/share/sofirem/cache/arcolinux-meta-log new file mode 100644 index 0000000..baf936f --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-log @@ -0,0 +1 @@ +Installs logging utilities on ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-samba b/usr/share/sofirem/cache/arcolinux-meta-samba new file mode 100644 index 0000000..23d401b --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-samba @@ -0,0 +1 @@ +Meta package for samba support. \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-sddm-themes b/usr/share/sofirem/cache/arcolinux-meta-sddm-themes new file mode 100644 index 0000000..ced89e0 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-sddm-themes @@ -0,0 +1 @@ +ArcoLinux Sddm themes \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-steam-amd b/usr/share/sofirem/cache/arcolinux-meta-steam-amd new file mode 100644 index 0000000..60b2c99 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-steam-amd @@ -0,0 +1 @@ +Installs steam on ArcoLinux for amd \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-steam-intel b/usr/share/sofirem/cache/arcolinux-meta-steam-intel new file mode 100644 index 0000000..c93f929 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-steam-intel @@ -0,0 +1 @@ +Installs steam on ArcoLinux for intel \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-steam-nvidia b/usr/share/sofirem/cache/arcolinux-meta-steam-nvidia new file mode 100644 index 0000000..edd4835 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-steam-nvidia @@ -0,0 +1 @@ +Installs steam on ArcoLinux for nvidia \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-utilities b/usr/share/sofirem/cache/arcolinux-meta-utilities new file mode 100644 index 0000000..b4d0ab2 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-utilities @@ -0,0 +1 @@ +Installs utilities on ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-meta-wine b/usr/share/sofirem/cache/arcolinux-meta-wine new file mode 100644 index 0000000..4099747 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-meta-wine @@ -0,0 +1 @@ +Installs utilities for Wine on ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-mint-y-icons-git b/usr/share/sofirem/cache/arcolinux-mint-y-icons-git new file mode 100644 index 0000000..158076d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-mint-y-icons-git @@ -0,0 +1 @@ +Icon theme built for Linux Mint. Uses elements of Vibrancy and Moka. \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-nitrogen-git b/usr/share/sofirem/cache/arcolinux-nitrogen-git new file mode 100644 index 0000000..ea60cc8 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-nitrogen-git @@ -0,0 +1 @@ +nitrogen config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-obmenu-generator-git b/usr/share/sofirem/cache/arcolinux-obmenu-generator-git new file mode 100644 index 0000000..84db5ac --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-obmenu-generator-git @@ -0,0 +1 @@ +obmenu-generator configs from ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-openbox-git b/usr/share/sofirem/cache/arcolinux-openbox-git new file mode 100644 index 0000000..f822a0c --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-openbox-git @@ -0,0 +1 @@ +Openbox configs from ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-openbox-themes-git b/usr/share/sofirem/cache/arcolinux-openbox-themes-git new file mode 100644 index 0000000..e795924 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-openbox-themes-git @@ -0,0 +1 @@ +Openbox themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-paleofetch-git b/usr/share/sofirem/cache/arcolinux-paleofetch-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-paleofetch-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-pamac-all b/usr/share/sofirem/cache/arcolinux-pamac-all new file mode 100644 index 0000000..a7927a2 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-pamac-all @@ -0,0 +1 @@ +Pamac from Manjaro - packaged for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-pipemenus-git b/usr/share/sofirem/cache/arcolinux-pipemenus-git new file mode 100644 index 0000000..26e4ac2 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-pipemenus-git @@ -0,0 +1 @@ +Pipemenu's for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plank-git b/usr/share/sofirem/cache/arcolinux-plank-git new file mode 100644 index 0000000..f8f295e --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plank-git @@ -0,0 +1 @@ +Plank config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plank-themes-git b/usr/share/sofirem/cache/arcolinux-plank-themes-git new file mode 100644 index 0000000..e16e061 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plank-themes-git @@ -0,0 +1 @@ +Plank themes for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plasma-dconf-git b/usr/share/sofirem/cache/arcolinux-plasma-dconf-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plasma-dconf-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plasma-git b/usr/share/sofirem/cache/arcolinux-plasma-git new file mode 100644 index 0000000..4d9900a --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plasma-git @@ -0,0 +1 @@ +ArcoLinuxB Plasma Desktop Settings \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plasma-keybindings-git b/usr/share/sofirem/cache/arcolinux-plasma-keybindings-git new file mode 100644 index 0000000..4d9900a --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plasma-keybindings-git @@ -0,0 +1 @@ +ArcoLinuxB Plasma Desktop Settings \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plasma-kservices-git b/usr/share/sofirem/cache/arcolinux-plasma-kservices-git new file mode 100644 index 0000000..771ebe2 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plasma-kservices-git @@ -0,0 +1 @@ +Kservice files for ArcoLinuxB Plasma \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plasma-servicemenus-git b/usr/share/sofirem/cache/arcolinux-plasma-servicemenus-git new file mode 100644 index 0000000..4d9900a --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plasma-servicemenus-git @@ -0,0 +1 @@ +ArcoLinuxB Plasma Desktop Settings \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plasma-theme-candy-beauty-arc-dark-git b/usr/share/sofirem/cache/arcolinux-plasma-theme-candy-beauty-arc-dark-git new file mode 100644 index 0000000..3401b22 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plasma-theme-candy-beauty-arc-dark-git @@ -0,0 +1 @@ +ArcoLinuxB Plasma Theme settings \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plasma-theme-candy-beauty-nordic-git b/usr/share/sofirem/cache/arcolinux-plasma-theme-candy-beauty-nordic-git new file mode 100644 index 0000000..3401b22 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plasma-theme-candy-beauty-nordic-git @@ -0,0 +1 @@ +ArcoLinuxB Plasma Theme settings \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plasma-theme-surfn-arc-dark-git b/usr/share/sofirem/cache/arcolinux-plasma-theme-surfn-arc-dark-git new file mode 100644 index 0000000..3401b22 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plasma-theme-surfn-arc-dark-git @@ -0,0 +1 @@ +ArcoLinuxB Plasma Theme settings \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-plasma-theme-surfn-nordic-git b/usr/share/sofirem/cache/arcolinux-plasma-theme-surfn-nordic-git new file mode 100644 index 0000000..3401b22 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-plasma-theme-surfn-nordic-git @@ -0,0 +1 @@ +ArcoLinuxB Plasma Theme settings \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-polybar-git b/usr/share/sofirem/cache/arcolinux-polybar-git new file mode 100644 index 0000000..4bd2555 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-polybar-git @@ -0,0 +1 @@ +polybar config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-powermenu-git b/usr/share/sofirem/cache/arcolinux-powermenu-git new file mode 100644 index 0000000..21ebd0f --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-powermenu-git @@ -0,0 +1 @@ +Powermenu to logout, exit etc... \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-qt5-git b/usr/share/sofirem/cache/arcolinux-qt5-git new file mode 100644 index 0000000..36d67a2 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-qt5-git @@ -0,0 +1 @@ +configuration files for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-qtile-git b/usr/share/sofirem/cache/arcolinux-qtile-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-qtile-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-reflector-simple-git b/usr/share/sofirem/cache/arcolinux-reflector-simple-git new file mode 100644 index 0000000..84597b2 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-reflector-simple-git @@ -0,0 +1 @@ +Simple GUI wrapper for 'reflector' \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-rofi-git b/usr/share/sofirem/cache/arcolinux-rofi-git new file mode 100644 index 0000000..0266875 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-rofi-git @@ -0,0 +1 @@ +rofi config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-rofi-themes-git b/usr/share/sofirem/cache/arcolinux-rofi-themes-git new file mode 100644 index 0000000..f53197e --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-rofi-themes-git @@ -0,0 +1 @@ +Rofi themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-root-git b/usr/share/sofirem/cache/arcolinux-root-git new file mode 100644 index 0000000..8e1aee5 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-root-git @@ -0,0 +1 @@ +root configs from ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-backgrounds-git b/usr/share/sofirem/cache/arcolinux-sddm-backgrounds-git new file mode 100644 index 0000000..4e33b27 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-backgrounds-git @@ -0,0 +1 @@ +Backgrounds for Sddm and Wallpaper \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-breeze-git b/usr/share/sofirem/cache/arcolinux-sddm-breeze-git new file mode 100644 index 0000000..8369834 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-breeze-git @@ -0,0 +1 @@ +Breeze adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-breeze-minimal-git b/usr/share/sofirem/cache/arcolinux-sddm-breeze-minimal-git new file mode 100644 index 0000000..8369834 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-breeze-minimal-git @@ -0,0 +1 @@ +Breeze adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-chili-git b/usr/share/sofirem/cache/arcolinux-sddm-chili-git new file mode 100644 index 0000000..eba8371 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-chili-git @@ -0,0 +1 @@ +Chili adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-fralonra-git b/usr/share/sofirem/cache/arcolinux-sddm-fralonra-git new file mode 100644 index 0000000..37d8632 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-fralonra-git @@ -0,0 +1 @@ +Chinese Painting SDDM theme adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-futuristic-git b/usr/share/sofirem/cache/arcolinux-sddm-futuristic-git new file mode 100644 index 0000000..50f0ba9 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-futuristic-git @@ -0,0 +1 @@ +Futuristic SDDM theme adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-materia-git b/usr/share/sofirem/cache/arcolinux-sddm-materia-git new file mode 100644 index 0000000..5592900 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-materia-git @@ -0,0 +1 @@ +Materia SDDM theme adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-redrock-git b/usr/share/sofirem/cache/arcolinux-sddm-redrock-git new file mode 100644 index 0000000..2ccaf0c --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-redrock-git @@ -0,0 +1 @@ +Redrock SDDM theme adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-simplicity-git b/usr/share/sofirem/cache/arcolinux-sddm-simplicity-git new file mode 100644 index 0000000..9a06b46 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-simplicity-git @@ -0,0 +1 @@ +Simplicity theme from isseigx on gitlab \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-slice-git b/usr/share/sofirem/cache/arcolinux-sddm-slice-git new file mode 100644 index 0000000..4a6e7e7 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-slice-git @@ -0,0 +1 @@ +Slice SDDM theme adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-sugar-candy-git b/usr/share/sofirem/cache/arcolinux-sddm-sugar-candy-git new file mode 100644 index 0000000..91312fc --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-sugar-candy-git @@ -0,0 +1 @@ +Sugar Candy SDDM theme adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sddm-urbanlifestyle-git b/usr/share/sofirem/cache/arcolinux-sddm-urbanlifestyle-git new file mode 100644 index 0000000..05ba08c --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sddm-urbanlifestyle-git @@ -0,0 +1 @@ +Urbanlifestyle SDDM theme adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-spectrwm-git b/usr/share/sofirem/cache/arcolinux-spectrwm-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-spectrwm-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sway-git b/usr/share/sofirem/cache/arcolinux-sway-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sway-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sway-profile-git b/usr/share/sofirem/cache/arcolinux-sway-profile-git new file mode 100644 index 0000000..071053a --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sway-profile-git @@ -0,0 +1 @@ +Profile for ArcoLinux Sway \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-sweet-mars-git b/usr/share/sofirem/cache/arcolinux-sweet-mars-git new file mode 100644 index 0000000..6872b52 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-sweet-mars-git @@ -0,0 +1 @@ +Sweet mars themes adapted for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-teamviewer b/usr/share/sofirem/cache/arcolinux-teamviewer new file mode 100644 index 0000000..e2f33ed --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-teamviewer @@ -0,0 +1 @@ +All-In-One Software for Remote Support and Online Meetings \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-tellme-git b/usr/share/sofirem/cache/arcolinux-tellme-git new file mode 100644 index 0000000..344018e --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-tellme-git @@ -0,0 +1 @@ +ArcoLinux package for cowsay and cowfortune \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-tint2-git b/usr/share/sofirem/cache/arcolinux-tint2-git new file mode 100644 index 0000000..39a51f3 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-tint2-git @@ -0,0 +1 @@ +tint2 config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-tint2-themes-git b/usr/share/sofirem/cache/arcolinux-tint2-themes-git new file mode 100644 index 0000000..6279165 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-tint2-themes-git @@ -0,0 +1 @@ +Tint2 Themes created for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-ukui-dconf-git b/usr/share/sofirem/cache/arcolinux-ukui-dconf-git new file mode 100644 index 0000000..737cb00 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-ukui-dconf-git @@ -0,0 +1 @@ +Configuration files for ArcoLinux Iso \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-ukui-git b/usr/share/sofirem/cache/arcolinux-ukui-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-ukui-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-volumeicon-git b/usr/share/sofirem/cache/arcolinux-volumeicon-git new file mode 100644 index 0000000..c9e09b6 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-volumeicon-git @@ -0,0 +1 @@ +volumeicon config for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-wallpapers-candy-git b/usr/share/sofirem/cache/arcolinux-wallpapers-candy-git new file mode 100644 index 0000000..dff848e --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-wallpapers-candy-git @@ -0,0 +1 @@ +Wallpapers for ArcoLinux candy \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-wallpapers-dual-git b/usr/share/sofirem/cache/arcolinux-wallpapers-dual-git new file mode 100644 index 0000000..971bfbf --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-wallpapers-dual-git @@ -0,0 +1 @@ +Wallpapers for ArcoLinux - dual screen \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-wallpapers-git b/usr/share/sofirem/cache/arcolinux-wallpapers-git new file mode 100644 index 0000000..c95dc12 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-wallpapers-git @@ -0,0 +1 @@ +Wallpapers for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-wayland-profile-git b/usr/share/sofirem/cache/arcolinux-wayland-profile-git new file mode 100644 index 0000000..7a3e786 --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-wayland-profile-git @@ -0,0 +1 @@ +Profile for ArcoLinux Wayland \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-wmderland-git b/usr/share/sofirem/cache/arcolinux-wmderland-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-wmderland-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-worm-git b/usr/share/sofirem/cache/arcolinux-worm-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-worm-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-xfce-git b/usr/share/sofirem/cache/arcolinux-xfce-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-xfce-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-xlunch-git b/usr/share/sofirem/cache/arcolinux-xlunch-git new file mode 100644 index 0000000..d2fab2b --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-xlunch-git @@ -0,0 +1 @@ +Xlunch configuration for ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-xmonad-polybar-git b/usr/share/sofirem/cache/arcolinux-xmonad-polybar-git new file mode 100644 index 0000000..f2c635d --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-xmonad-polybar-git @@ -0,0 +1 @@ +Desktop configuration for ArcoLinux -D -B \ No newline at end of file diff --git a/usr/share/sofirem/cache/arcolinux-zsh-git b/usr/share/sofirem/cache/arcolinux-zsh-git new file mode 100644 index 0000000..2f9a31f --- /dev/null +++ b/usr/share/sofirem/cache/arcolinux-zsh-git @@ -0,0 +1 @@ +zsh configs from ArcoLinux \ No newline at end of file diff --git a/usr/share/sofirem/cache/ardour b/usr/share/sofirem/cache/ardour new file mode 100644 index 0000000..f47ab15 --- /dev/null +++ b/usr/share/sofirem/cache/ardour @@ -0,0 +1 @@ +Professional-grade digital audio workstation \ No newline at end of file diff --git a/usr/share/sofirem/cache/arduino b/usr/share/sofirem/cache/arduino new file mode 100644 index 0000000..535c123 --- /dev/null +++ b/usr/share/sofirem/cache/arduino @@ -0,0 +1 @@ +Arduino prototyping platform SDK \ No newline at end of file diff --git a/usr/share/sofirem/cache/aria2 b/usr/share/sofirem/cache/aria2 new file mode 100644 index 0000000..31ccfd5 --- /dev/null +++ b/usr/share/sofirem/cache/aria2 @@ -0,0 +1 @@ +Download utility that supports HTTP(S), FTP, BitTorrent, and Metalink \ No newline at end of file diff --git a/usr/share/sofirem/cache/ark b/usr/share/sofirem/cache/ark new file mode 100644 index 0000000..b2d223d --- /dev/null +++ b/usr/share/sofirem/cache/ark @@ -0,0 +1 @@ +Archiving Tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/armagetronad b/usr/share/sofirem/cache/armagetronad new file mode 100644 index 0000000..0feb497 --- /dev/null +++ b/usr/share/sofirem/cache/armagetronad @@ -0,0 +1 @@ +A Tron Clone in 3D. \ No newline at end of file diff --git a/usr/share/sofirem/cache/asciiquarium b/usr/share/sofirem/cache/asciiquarium new file mode 100644 index 0000000..72327a5 --- /dev/null +++ b/usr/share/sofirem/cache/asciiquarium @@ -0,0 +1 @@ +An aquarium/sea animation in ASCII art \ No newline at end of file diff --git a/usr/share/sofirem/cache/astromenace b/usr/share/sofirem/cache/astromenace new file mode 100644 index 0000000..ff09aad --- /dev/null +++ b/usr/share/sofirem/cache/astromenace @@ -0,0 +1 @@ +Hardcore 3D space shooter with spaceship upgrade possibilities \ No newline at end of file diff --git a/usr/share/sofirem/cache/atom b/usr/share/sofirem/cache/atom new file mode 100644 index 0000000..dfce8bb --- /dev/null +++ b/usr/share/sofirem/cache/atom @@ -0,0 +1 @@ +A hackable text editor for the 21st Century \ No newline at end of file diff --git a/usr/share/sofirem/cache/atril b/usr/share/sofirem/cache/atril new file mode 100644 index 0000000..88baab4 --- /dev/null +++ b/usr/share/sofirem/cache/atril @@ -0,0 +1 @@ +MATE document viewer \ No newline at end of file diff --git a/usr/share/sofirem/cache/audacious b/usr/share/sofirem/cache/audacious new file mode 100644 index 0000000..bae87d6 --- /dev/null +++ b/usr/share/sofirem/cache/audacious @@ -0,0 +1 @@ +Lightweight, advanced audio player focused on audio quality \ No newline at end of file diff --git a/usr/share/sofirem/cache/audacious-plugins b/usr/share/sofirem/cache/audacious-plugins new file mode 100644 index 0000000..81d5b48 --- /dev/null +++ b/usr/share/sofirem/cache/audacious-plugins @@ -0,0 +1 @@ +Plugins for Audacious \ No newline at end of file diff --git a/usr/share/sofirem/cache/audacity b/usr/share/sofirem/cache/audacity new file mode 100644 index 0000000..a04dd5a --- /dev/null +++ b/usr/share/sofirem/cache/audacity @@ -0,0 +1 @@ +A program that lets you manipulate digital audio waveforms \ No newline at end of file diff --git a/usr/share/sofirem/cache/aura-bin b/usr/share/sofirem/cache/aura-bin new file mode 100644 index 0000000..9d20e90 --- /dev/null +++ b/usr/share/sofirem/cache/aura-bin @@ -0,0 +1 @@ +A secure package manager for Arch Linux and the AUR - Prebuilt binary \ No newline at end of file diff --git a/usr/share/sofirem/cache/auto-cpufreq b/usr/share/sofirem/cache/auto-cpufreq new file mode 100644 index 0000000..fee862d --- /dev/null +++ b/usr/share/sofirem/cache/auto-cpufreq @@ -0,0 +1 @@ +Automatic CPU speed & power optimizer \ No newline at end of file diff --git a/usr/share/sofirem/cache/autorandr b/usr/share/sofirem/cache/autorandr new file mode 100644 index 0000000..7b3f26d --- /dev/null +++ b/usr/share/sofirem/cache/autorandr @@ -0,0 +1 @@ +Auto-detect connected display hardware and load appropiate X11 setup using xrandr \ No newline at end of file diff --git a/usr/share/sofirem/cache/autotiling b/usr/share/sofirem/cache/autotiling new file mode 100644 index 0000000..fdc26fc --- /dev/null +++ b/usr/share/sofirem/cache/autotiling @@ -0,0 +1 @@ +Script for sway and i3 to automatically switch the horizontal / vertical window split orientation \ No newline at end of file diff --git a/usr/share/sofirem/cache/awesome b/usr/share/sofirem/cache/awesome new file mode 100644 index 0000000..ff9e912 --- /dev/null +++ b/usr/share/sofirem/cache/awesome @@ -0,0 +1 @@ +Highly configurable framework window manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/awesome-terminal-fonts b/usr/share/sofirem/cache/awesome-terminal-fonts new file mode 100644 index 0000000..4699114 --- /dev/null +++ b/usr/share/sofirem/cache/awesome-terminal-fonts @@ -0,0 +1 @@ +fonts/icons for powerlines \ No newline at end of file diff --git a/usr/share/sofirem/cache/ayu-theme b/usr/share/sofirem/cache/ayu-theme new file mode 100644 index 0000000..f98ecef --- /dev/null +++ b/usr/share/sofirem/cache/ayu-theme @@ -0,0 +1 @@ +Ayu themes \ No newline at end of file diff --git a/usr/share/sofirem/cache/baobab b/usr/share/sofirem/cache/baobab new file mode 100644 index 0000000..86752c0 --- /dev/null +++ b/usr/share/sofirem/cache/baobab @@ -0,0 +1 @@ +A graphical directory tree analyzer \ No newline at end of file diff --git a/usr/share/sofirem/cache/base16-alacritty-git b/usr/share/sofirem/cache/base16-alacritty-git new file mode 100644 index 0000000..e5850ec --- /dev/null +++ b/usr/share/sofirem/cache/base16-alacritty-git @@ -0,0 +1 @@ +Base16 templates for the alacritty terminal emulator \ No newline at end of file diff --git a/usr/share/sofirem/cache/bash-pipes b/usr/share/sofirem/cache/bash-pipes new file mode 100644 index 0000000..fddadce --- /dev/null +++ b/usr/share/sofirem/cache/bash-pipes @@ -0,0 +1 @@ +pipes.sh (animated pipes terminal screensaver) with additional better names (soft links) \ No newline at end of file diff --git a/usr/share/sofirem/cache/bauh b/usr/share/sofirem/cache/bauh new file mode 100644 index 0000000..026cab6 --- /dev/null +++ b/usr/share/sofirem/cache/bauh @@ -0,0 +1 @@ +Graphical interface for managing your applications (AppImage, Flatpak, Snap, Arch/AUR, Web) \ No newline at end of file diff --git a/usr/share/sofirem/cache/berry-dev-git b/usr/share/sofirem/cache/berry-dev-git new file mode 100644 index 0000000..a6d38a8 --- /dev/null +++ b/usr/share/sofirem/cache/berry-dev-git @@ -0,0 +1 @@ +A healthy, bite-sized window manager written over the XLib Library \ No newline at end of file diff --git a/usr/share/sofirem/cache/betterlockscreen b/usr/share/sofirem/cache/betterlockscreen new file mode 100644 index 0000000..758275a --- /dev/null +++ b/usr/share/sofirem/cache/betterlockscreen @@ -0,0 +1 @@ +A simple, minimal lockscreen \ No newline at end of file diff --git a/usr/share/sofirem/cache/betterlockscreen-git b/usr/share/sofirem/cache/betterlockscreen-git new file mode 100644 index 0000000..f704900 --- /dev/null +++ b/usr/share/sofirem/cache/betterlockscreen-git @@ -0,0 +1 @@ +A simple lock script for i3lock-color \ No newline at end of file diff --git a/usr/share/sofirem/cache/bibata-cursor-theme-bin b/usr/share/sofirem/cache/bibata-cursor-theme-bin new file mode 100644 index 0000000..b0f660f --- /dev/null +++ b/usr/share/sofirem/cache/bibata-cursor-theme-bin @@ -0,0 +1 @@ +Material Based Cursor Theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/bibata-cursor-translucent b/usr/share/sofirem/cache/bibata-cursor-translucent new file mode 100644 index 0000000..78ec2be --- /dev/null +++ b/usr/share/sofirem/cache/bibata-cursor-translucent @@ -0,0 +1 @@ +Translucent Material Based Cursor Theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/bibata-extra-cursor-theme b/usr/share/sofirem/cache/bibata-extra-cursor-theme new file mode 100644 index 0000000..4ffb1c0 --- /dev/null +++ b/usr/share/sofirem/cache/bibata-extra-cursor-theme @@ -0,0 +1 @@ +Material Based Cursor Theme: More Bibata! \ No newline at end of file diff --git a/usr/share/sofirem/cache/bibata-rainbow-cursor-theme b/usr/share/sofirem/cache/bibata-rainbow-cursor-theme new file mode 100644 index 0000000..aada770 --- /dev/null +++ b/usr/share/sofirem/cache/bibata-rainbow-cursor-theme @@ -0,0 +1 @@ +Material Based Cursor Theme: Rainbow \ No newline at end of file diff --git a/usr/share/sofirem/cache/bitwarden b/usr/share/sofirem/cache/bitwarden new file mode 100644 index 0000000..4268470 --- /dev/null +++ b/usr/share/sofirem/cache/bitwarden @@ -0,0 +1 @@ +A secure and free password manager for all of your devices \ No newline at end of file diff --git a/usr/share/sofirem/cache/bleachbit b/usr/share/sofirem/cache/bleachbit new file mode 100644 index 0000000..f87c801 --- /dev/null +++ b/usr/share/sofirem/cache/bleachbit @@ -0,0 +1 @@ +Deletes unneeded files to free disk space and maintain privacy \ No newline at end of file diff --git a/usr/share/sofirem/cache/blender b/usr/share/sofirem/cache/blender new file mode 100644 index 0000000..4c80d7d --- /dev/null +++ b/usr/share/sofirem/cache/blender @@ -0,0 +1 @@ +A fully integrated 3D graphics creation suite \ No newline at end of file diff --git a/usr/share/sofirem/cache/blender-benchmark b/usr/share/sofirem/cache/blender-benchmark new file mode 100644 index 0000000..1639b7c --- /dev/null +++ b/usr/share/sofirem/cache/blender-benchmark @@ -0,0 +1 @@ +Benchmark based on Blender to perform hardware and software performance tests \ No newline at end of file diff --git a/usr/share/sofirem/cache/bluefish b/usr/share/sofirem/cache/bluefish new file mode 100644 index 0000000..5b0f80f --- /dev/null +++ b/usr/share/sofirem/cache/bluefish @@ -0,0 +1 @@ +A powerful HTML editor for experienced web designers and programmers \ No newline at end of file diff --git a/usr/share/sofirem/cache/bottom b/usr/share/sofirem/cache/bottom new file mode 100644 index 0000000..5bfb40d --- /dev/null +++ b/usr/share/sofirem/cache/bottom @@ -0,0 +1 @@ +A graphical process/system monitor \ No newline at end of file diff --git a/usr/share/sofirem/cache/boxes b/usr/share/sofirem/cache/boxes new file mode 100644 index 0000000..bb6a756 --- /dev/null +++ b/usr/share/sofirem/cache/boxes @@ -0,0 +1 @@ +Text mode box and comment drawing filter \ No newline at end of file diff --git a/usr/share/sofirem/cache/bpytop b/usr/share/sofirem/cache/bpytop new file mode 100644 index 0000000..a6adf72 --- /dev/null +++ b/usr/share/sofirem/cache/bpytop @@ -0,0 +1 @@ +Resource monitor that shows usage and stats for processor, memory, disks, network and processes \ No newline at end of file diff --git a/usr/share/sofirem/cache/brackets-bin b/usr/share/sofirem/cache/brackets-bin new file mode 100644 index 0000000..af10ccb --- /dev/null +++ b/usr/share/sofirem/cache/brackets-bin @@ -0,0 +1 @@ +A code editor for HTML, CSS and JavaScript. \ No newline at end of file diff --git a/usr/share/sofirem/cache/brasero b/usr/share/sofirem/cache/brasero new file mode 100644 index 0000000..dc25f97 --- /dev/null +++ b/usr/share/sofirem/cache/brasero @@ -0,0 +1 @@ +CD/DVD mastering tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/brave-bin b/usr/share/sofirem/cache/brave-bin new file mode 100644 index 0000000..12548dc --- /dev/null +++ b/usr/share/sofirem/cache/brave-bin @@ -0,0 +1 @@ +Web browser that blocks ads and trackers by default (binary release) \ No newline at end of file diff --git a/usr/share/sofirem/cache/breeze b/usr/share/sofirem/cache/breeze new file mode 100644 index 0000000..596e967 --- /dev/null +++ b/usr/share/sofirem/cache/breeze @@ -0,0 +1 @@ +Artwork, styles and assets for the Breeze visual style for the Plasma Desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/breeze-icons b/usr/share/sofirem/cache/breeze-icons new file mode 100644 index 0000000..cffdc27 --- /dev/null +++ b/usr/share/sofirem/cache/breeze-icons @@ -0,0 +1 @@ +Breeze icon themes \ No newline at end of file diff --git a/usr/share/sofirem/cache/brightnessctl b/usr/share/sofirem/cache/brightnessctl new file mode 100644 index 0000000..ab4cec5 --- /dev/null +++ b/usr/share/sofirem/cache/brightnessctl @@ -0,0 +1 @@ +Lightweight brightness control tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/brillo b/usr/share/sofirem/cache/brillo new file mode 100644 index 0000000..498503c --- /dev/null +++ b/usr/share/sofirem/cache/brillo @@ -0,0 +1 @@ +Control the brightness of backlight and keyboard LED devices \ No newline at end of file diff --git a/usr/share/sofirem/cache/brltty b/usr/share/sofirem/cache/brltty new file mode 100644 index 0000000..810d433 --- /dev/null +++ b/usr/share/sofirem/cache/brltty @@ -0,0 +1 @@ +Braille display driver for Linux/Unix \ No newline at end of file diff --git a/usr/share/sofirem/cache/bspwm b/usr/share/sofirem/cache/bspwm new file mode 100644 index 0000000..e65ac5d --- /dev/null +++ b/usr/share/sofirem/cache/bspwm @@ -0,0 +1 @@ +Tiling window manager based on binary space partitioning \ No newline at end of file diff --git a/usr/share/sofirem/cache/btop b/usr/share/sofirem/cache/btop new file mode 100644 index 0000000..e8150d0 --- /dev/null +++ b/usr/share/sofirem/cache/btop @@ -0,0 +1 @@ +A monitor of system resources, bpytop ported to C++ \ No newline at end of file diff --git a/usr/share/sofirem/cache/btrbk b/usr/share/sofirem/cache/btrbk new file mode 100644 index 0000000..df11c73 --- /dev/null +++ b/usr/share/sofirem/cache/btrbk @@ -0,0 +1 @@ +Backup tool for btrfs subvolumes, taking advantage of btrfs specific capabilities to create atomic snapshots and transfer them incrementally to your backup locations \ No newline at end of file diff --git a/usr/share/sofirem/cache/btrfs-assistant b/usr/share/sofirem/cache/btrfs-assistant new file mode 100644 index 0000000..1ede31b --- /dev/null +++ b/usr/share/sofirem/cache/btrfs-assistant @@ -0,0 +1 @@ +An application for managing BTRFS subvolumes and Snapper snapshots \ No newline at end of file diff --git a/usr/share/sofirem/cache/btrfsmaintenance b/usr/share/sofirem/cache/btrfsmaintenance new file mode 100644 index 0000000..1342779 --- /dev/null +++ b/usr/share/sofirem/cache/btrfsmaintenance @@ -0,0 +1 @@ +btrfs maintenance scripts \ No newline at end of file diff --git a/usr/share/sofirem/cache/budgie-desktop b/usr/share/sofirem/cache/budgie-desktop new file mode 100644 index 0000000..de0860f --- /dev/null +++ b/usr/share/sofirem/cache/budgie-desktop @@ -0,0 +1 @@ +Modern desktop environment from the Solus Project \ No newline at end of file diff --git a/usr/share/sofirem/cache/budgie-extras b/usr/share/sofirem/cache/budgie-extras new file mode 100644 index 0000000..f97c3ba --- /dev/null +++ b/usr/share/sofirem/cache/budgie-extras @@ -0,0 +1 @@ +Additional Budgie Desktop enhancements for the user experience \ No newline at end of file diff --git a/usr/share/sofirem/cache/bumblebee b/usr/share/sofirem/cache/bumblebee new file mode 100644 index 0000000..1d1188e --- /dev/null +++ b/usr/share/sofirem/cache/bumblebee @@ -0,0 +1 @@ +NVIDIA Optimus support for Linux through VirtualGL \ No newline at end of file diff --git a/usr/share/sofirem/cache/bumblebee-status b/usr/share/sofirem/cache/bumblebee-status new file mode 100644 index 0000000..7ef5094 --- /dev/null +++ b/usr/share/sofirem/cache/bumblebee-status @@ -0,0 +1 @@ +Modular, theme-able status line generator for the i3 window manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/bumblebee-status-git b/usr/share/sofirem/cache/bumblebee-status-git new file mode 100644 index 0000000..7ef5094 --- /dev/null +++ b/usr/share/sofirem/cache/bumblebee-status-git @@ -0,0 +1 @@ +Modular, theme-able status line generator for the i3 window manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/byte b/usr/share/sofirem/cache/byte new file mode 100644 index 0000000..c6f3b6f --- /dev/null +++ b/usr/share/sofirem/cache/byte @@ -0,0 +1 @@ +A Music Player designed for elementary OS \ No newline at end of file diff --git a/usr/share/sofirem/cache/c-lolcat b/usr/share/sofirem/cache/c-lolcat new file mode 100644 index 0000000..e96bc17 --- /dev/null +++ b/usr/share/sofirem/cache/c-lolcat @@ -0,0 +1 @@ +High-performance implementation of lolcat \ No newline at end of file diff --git a/usr/share/sofirem/cache/caffeine b/usr/share/sofirem/cache/caffeine new file mode 100644 index 0000000..6976131 --- /dev/null +++ b/usr/share/sofirem/cache/caffeine @@ -0,0 +1 @@ +Keep your computer awake. \ No newline at end of file diff --git a/usr/share/sofirem/cache/caffeine-ng b/usr/share/sofirem/cache/caffeine-ng new file mode 100644 index 0000000..638f1ce --- /dev/null +++ b/usr/share/sofirem/cache/caffeine-ng @@ -0,0 +1 @@ +Status bar application able to temporarily inhibit the screensaver and sleep mode. \ No newline at end of file diff --git a/usr/share/sofirem/cache/caja b/usr/share/sofirem/cache/caja new file mode 100644 index 0000000..efc5001 --- /dev/null +++ b/usr/share/sofirem/cache/caja @@ -0,0 +1 @@ +File manager for the MATE desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/calibre b/usr/share/sofirem/cache/calibre new file mode 100644 index 0000000..a25e58b --- /dev/null +++ b/usr/share/sofirem/cache/calibre @@ -0,0 +1 @@ +Ebook management application \ No newline at end of file diff --git a/usr/share/sofirem/cache/calligra b/usr/share/sofirem/cache/calligra new file mode 100644 index 0000000..957ae8d --- /dev/null +++ b/usr/share/sofirem/cache/calligra @@ -0,0 +1 @@ +A set of applications for productivity and creative usage \ No newline at end of file diff --git a/usr/share/sofirem/cache/calligra-plan b/usr/share/sofirem/cache/calligra-plan new file mode 100644 index 0000000..a3f6bfd --- /dev/null +++ b/usr/share/sofirem/cache/calligra-plan @@ -0,0 +1 @@ +A project management application intended for managing moderately large projects with multiple resources \ No newline at end of file diff --git a/usr/share/sofirem/cache/capitaine-cursors b/usr/share/sofirem/cache/capitaine-cursors new file mode 100644 index 0000000..c71c2bf --- /dev/null +++ b/usr/share/sofirem/cache/capitaine-cursors @@ -0,0 +1 @@ +An x-cursor theme inspired by macOS and based on KDE Breeze \ No newline at end of file diff --git a/usr/share/sofirem/cache/catfish b/usr/share/sofirem/cache/catfish new file mode 100644 index 0000000..5ab398b --- /dev/null +++ b/usr/share/sofirem/cache/catfish @@ -0,0 +1 @@ +Versatile file searching tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/catppuccin-cursors-git b/usr/share/sofirem/cache/catppuccin-cursors-git new file mode 100644 index 0000000..9175541 --- /dev/null +++ b/usr/share/sofirem/cache/catppuccin-cursors-git @@ -0,0 +1 @@ +Cursor-Theme for amos \ No newline at end of file diff --git a/usr/share/sofirem/cache/cava b/usr/share/sofirem/cache/cava new file mode 100644 index 0000000..9fd0733 --- /dev/null +++ b/usr/share/sofirem/cache/cava @@ -0,0 +1 @@ +Console-based Audio Visualizer for Alsa \ No newline at end of file diff --git a/usr/share/sofirem/cache/celluloid b/usr/share/sofirem/cache/celluloid new file mode 100644 index 0000000..f23966f --- /dev/null +++ b/usr/share/sofirem/cache/celluloid @@ -0,0 +1 @@ +Simple GTK+ frontend for mpv \ No newline at end of file diff --git a/usr/share/sofirem/cache/cheese b/usr/share/sofirem/cache/cheese new file mode 100644 index 0000000..f633376 --- /dev/null +++ b/usr/share/sofirem/cache/cheese @@ -0,0 +1 @@ +Take photos and videos with your webcam, with fun graphical effects \ No newline at end of file diff --git a/usr/share/sofirem/cache/chrome-gnome-shell b/usr/share/sofirem/cache/chrome-gnome-shell new file mode 100644 index 0000000..6925076 --- /dev/null +++ b/usr/share/sofirem/cache/chrome-gnome-shell @@ -0,0 +1 @@ +Native browser connector for integration with extensions.gnome.org \ No newline at end of file diff --git a/usr/share/sofirem/cache/chromium b/usr/share/sofirem/cache/chromium new file mode 100644 index 0000000..daa9844 --- /dev/null +++ b/usr/share/sofirem/cache/chromium @@ -0,0 +1 @@ +A web browser built for speed, simplicity, and security \ No newline at end of file diff --git a/usr/share/sofirem/cache/chromium-bsu b/usr/share/sofirem/cache/chromium-bsu new file mode 100644 index 0000000..491e093 --- /dev/null +++ b/usr/share/sofirem/cache/chromium-bsu @@ -0,0 +1 @@ +A fast paced top scrolling shooter \ No newline at end of file diff --git a/usr/share/sofirem/cache/chromium-widevine b/usr/share/sofirem/cache/chromium-widevine new file mode 100644 index 0000000..250539d --- /dev/null +++ b/usr/share/sofirem/cache/chromium-widevine @@ -0,0 +1 @@ +A browser plugin designed for the viewing of premium video content \ No newline at end of file diff --git a/usr/share/sofirem/cache/cinnamon b/usr/share/sofirem/cache/cinnamon new file mode 100644 index 0000000..c5acf1c --- /dev/null +++ b/usr/share/sofirem/cache/cinnamon @@ -0,0 +1 @@ +Linux desktop which provides advanced innovative features and a traditional user experience \ No newline at end of file diff --git a/usr/share/sofirem/cache/cinnamon-translations b/usr/share/sofirem/cache/cinnamon-translations new file mode 100644 index 0000000..98ce8fe --- /dev/null +++ b/usr/share/sofirem/cache/cinnamon-translations @@ -0,0 +1 @@ +Translations for Cinnamon and Nemo \ No newline at end of file diff --git a/usr/share/sofirem/cache/ckb-next-git b/usr/share/sofirem/cache/ckb-next-git new file mode 100644 index 0000000..172c82e --- /dev/null +++ b/usr/share/sofirem/cache/ckb-next-git @@ -0,0 +1 @@ +Corsair Keyboard and Mouse Input Driver, git master branch \ No newline at end of file diff --git a/usr/share/sofirem/cache/clapper b/usr/share/sofirem/cache/clapper new file mode 100644 index 0000000..f3b138a --- /dev/null +++ b/usr/share/sofirem/cache/clapper @@ -0,0 +1 @@ +A GNOME media player built using GJS with GTK4 toolkit and powered by GStreamer with OpenGL rendering. \ No newline at end of file diff --git a/usr/share/sofirem/cache/clementine b/usr/share/sofirem/cache/clementine new file mode 100644 index 0000000..1795ae2 --- /dev/null +++ b/usr/share/sofirem/cache/clementine @@ -0,0 +1 @@ +A modern music player and library organizer \ No newline at end of file diff --git a/usr/share/sofirem/cache/cmatrix-git b/usr/share/sofirem/cache/cmatrix-git new file mode 100644 index 0000000..0b0a85e --- /dev/null +++ b/usr/share/sofirem/cache/cmatrix-git @@ -0,0 +1 @@ +A curses-based scrolling 'Matrix'-like screen \ No newline at end of file diff --git a/usr/share/sofirem/cache/code b/usr/share/sofirem/cache/code new file mode 100644 index 0000000..502c806 --- /dev/null +++ b/usr/share/sofirem/cache/code @@ -0,0 +1 @@ +The Open Source build of Visual Studio Code (vscode) editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/codeblocks b/usr/share/sofirem/cache/codeblocks new file mode 100644 index 0000000..2c6def0 --- /dev/null +++ b/usr/share/sofirem/cache/codeblocks @@ -0,0 +1 @@ +Cross-platform C/C++ IDE \ No newline at end of file diff --git a/usr/share/sofirem/cache/conky-lua-archers b/usr/share/sofirem/cache/conky-lua-archers new file mode 100644 index 0000000..ff3cfa6 --- /dev/null +++ b/usr/share/sofirem/cache/conky-lua-archers @@ -0,0 +1 @@ +A free, light-weight system monitor for X with lua enabled for Arch based distros \ No newline at end of file diff --git a/usr/share/sofirem/cache/cool-retro-term b/usr/share/sofirem/cache/cool-retro-term new file mode 100644 index 0000000..3a68d4e --- /dev/null +++ b/usr/share/sofirem/cache/cool-retro-term @@ -0,0 +1 @@ +A good looking terminal emulator which mimics the old cathode display \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/acpilight b/usr/share/sofirem/cache/corrections/acpilight new file mode 100644 index 0000000..3ba67f1 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/acpilight @@ -0,0 +1 @@ +A backward-compatible xbacklight replacement based on ACPI \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/aisleriot b/usr/share/sofirem/cache/corrections/aisleriot new file mode 100644 index 0000000..bb2e80d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/aisleriot @@ -0,0 +1 @@ +Play many different solitaire games \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/arc-x-icons-theme b/usr/share/sofirem/cache/corrections/arc-x-icons-theme new file mode 100644 index 0000000..a6d1da0 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/arc-x-icons-theme @@ -0,0 +1 @@ +Modern free desktop icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/arcolinux-conky-collection-plasma-git b/usr/share/sofirem/cache/corrections/arcolinux-conky-collection-plasma-git new file mode 100644 index 0000000..74fb57f --- /dev/null +++ b/usr/share/sofirem/cache/corrections/arcolinux-conky-collection-plasma-git @@ -0,0 +1 @@ +Conky collection for ArcoLinuxB Plasma \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/arcolinux-desktop-trasher-git b/usr/share/sofirem/cache/corrections/arcolinux-desktop-trasher-git new file mode 100644 index 0000000..8ffdcd2 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/arcolinux-desktop-trasher-git @@ -0,0 +1 @@ +ArcoLinux Desktop Trasher \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/arcolinux-pamac-all b/usr/share/sofirem/cache/corrections/arcolinux-pamac-all new file mode 100644 index 0000000..1df0262 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/arcolinux-pamac-all @@ -0,0 +1 @@ +A gtk3 frontend for Libalpm - Manjaro software installer \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/arcolinux-sddm-simplicity-git b/usr/share/sofirem/cache/corrections/arcolinux-sddm-simplicity-git new file mode 100644 index 0000000..4d8dc80 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/arcolinux-sddm-simplicity-git @@ -0,0 +1 @@ +Simplicity theme from Isseigx on Gitlab \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/aura-bin b/usr/share/sofirem/cache/corrections/aura-bin new file mode 100644 index 0000000..aace8a5 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/aura-bin @@ -0,0 +1 @@ +A secure package manager for Arch Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/bauh b/usr/share/sofirem/cache/corrections/bauh new file mode 100644 index 0000000..b33f5f4 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/bauh @@ -0,0 +1 @@ +Graphical interface for managing your applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/blender-benchmark b/usr/share/sofirem/cache/corrections/blender-benchmark new file mode 100644 index 0000000..4fc2cac --- /dev/null +++ b/usr/share/sofirem/cache/corrections/blender-benchmark @@ -0,0 +1 @@ +Benchmark based on Blender \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/bpytop b/usr/share/sofirem/cache/corrections/bpytop new file mode 100644 index 0000000..6be5c5a --- /dev/null +++ b/usr/share/sofirem/cache/corrections/bpytop @@ -0,0 +1 @@ +Resource monitor that shows hardware info \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/breeze b/usr/share/sofirem/cache/corrections/breeze new file mode 100644 index 0000000..953273d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/breeze @@ -0,0 +1 @@ +Breeze visual style for the Plasma Desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/btrbk b/usr/share/sofirem/cache/corrections/btrbk new file mode 100644 index 0000000..90ffc10 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/btrbk @@ -0,0 +1 @@ +Backup tool for btrfs subvolumes \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/caffeine-ng b/usr/share/sofirem/cache/corrections/caffeine-ng new file mode 100644 index 0000000..4c35f5a --- /dev/null +++ b/usr/share/sofirem/cache/corrections/caffeine-ng @@ -0,0 +1 @@ +Inhibit the screensaver and sleep mode. \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/calligra-plan b/usr/share/sofirem/cache/corrections/calligra-plan new file mode 100644 index 0000000..fd4087f --- /dev/null +++ b/usr/share/sofirem/cache/corrections/calligra-plan @@ -0,0 +1 @@ +A project management application \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/clapper b/usr/share/sofirem/cache/corrections/clapper new file mode 100644 index 0000000..5608a2a --- /dev/null +++ b/usr/share/sofirem/cache/corrections/clapper @@ -0,0 +1 @@ +A GTK4 GNOME media player \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/conky-lua-archers b/usr/share/sofirem/cache/corrections/conky-lua-archers new file mode 100644 index 0000000..2965ea1 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/conky-lua-archers @@ -0,0 +1 @@ +A free, light-weight system monitor \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/cpu-x b/usr/share/sofirem/cache/corrections/cpu-x new file mode 100644 index 0000000..8dbbfb3 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/cpu-x @@ -0,0 +1 @@ +Information on CPU, motherboard and more \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/debtap b/usr/share/sofirem/cache/corrections/debtap new file mode 100644 index 0000000..f7e1487 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/debtap @@ -0,0 +1 @@ +A script to convert .deb packages to Arch Linux packages \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/deja-dup b/usr/share/sofirem/cache/corrections/deja-dup new file mode 100644 index 0000000..95285f8 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/deja-dup @@ -0,0 +1 @@ +Backup tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/discord_arch_electron b/usr/share/sofirem/cache/corrections/discord_arch_electron new file mode 100644 index 0000000..f1bf48a --- /dev/null +++ b/usr/share/sofirem/cache/corrections/discord_arch_electron @@ -0,0 +1 @@ +Discord (popular voice + video app) \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/disper b/usr/share/sofirem/cache/corrections/disper new file mode 100644 index 0000000..de74946 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/disper @@ -0,0 +1 @@ +An on-the-fly display switch utility (Nvidia laptops) \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/doublecmd-qt5 b/usr/share/sofirem/cache/corrections/doublecmd-qt5 new file mode 100644 index 0000000..625a500 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/doublecmd-qt5 @@ -0,0 +1 @@ +Twin-panel (commander-style) file manager (Qt5) \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/downgrade b/usr/share/sofirem/cache/corrections/downgrade new file mode 100644 index 0000000..855be9f --- /dev/null +++ b/usr/share/sofirem/cache/corrections/downgrade @@ -0,0 +1 @@ +Bash script for downgrading one or more packages \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/dropbox b/usr/share/sofirem/cache/corrections/dropbox new file mode 100644 index 0000000..2a7bb18 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/dropbox @@ -0,0 +1 @@ +Dropbox lets you bring your photos, docs, and videos anywhere \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/faba-icon-theme-git b/usr/share/sofirem/cache/corrections/faba-icon-theme-git new file mode 100644 index 0000000..8fd14b3 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/faba-icon-theme-git @@ -0,0 +1 @@ +A sexy and modern FreeDesktop icon set \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/faba-mono-icons-git b/usr/share/sofirem/cache/corrections/faba-mono-icons-git new file mode 100644 index 0000000..550f78c --- /dev/null +++ b/usr/share/sofirem/cache/corrections/faba-mono-icons-git @@ -0,0 +1 @@ +Supplementary theme to Faba Icon Theme - monochrome \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/find-the-command-git b/usr/share/sofirem/cache/corrections/find-the-command-git new file mode 100644 index 0000000..7ed1c18 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/find-the-command-git @@ -0,0 +1 @@ +Advanced command-not-found hook \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/fingerprint-gui b/usr/share/sofirem/cache/corrections/fingerprint-gui new file mode 100644 index 0000000..761929c --- /dev/null +++ b/usr/share/sofirem/cache/corrections/fingerprint-gui @@ -0,0 +1 @@ +Fingerprint-based authentication \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/flatpak b/usr/share/sofirem/cache/corrections/flatpak new file mode 100644 index 0000000..d08ed51 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/flatpak @@ -0,0 +1 @@ +Linux application sandboxing \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/florence b/usr/share/sofirem/cache/corrections/florence new file mode 100644 index 0000000..d86b850 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/florence @@ -0,0 +1 @@ +A configurable on-screen virtual keyboard \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/freeoffice b/usr/share/sofirem/cache/corrections/freeoffice new file mode 100644 index 0000000..847d335 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/freeoffice @@ -0,0 +1 @@ +Microsoft Office-compatible office suite (word - excel - powerpoint alternative) \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/gamemode b/usr/share/sofirem/cache/corrections/gamemode new file mode 100644 index 0000000..026a732 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/gamemode @@ -0,0 +1 @@ +A daemon/lib combo to set optimisations for gaming \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/geekbench b/usr/share/sofirem/cache/corrections/geekbench new file mode 100644 index 0000000..93da03a --- /dev/null +++ b/usr/share/sofirem/cache/corrections/geekbench @@ -0,0 +1 @@ +A cross-platform benchmark \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/google-earth-pro b/usr/share/sofirem/cache/corrections/google-earth-pro new file mode 100644 index 0000000..be8875b --- /dev/null +++ b/usr/share/sofirem/cache/corrections/google-earth-pro @@ -0,0 +1 @@ +3D interface to explore the globe \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/gputest b/usr/share/sofirem/cache/corrections/gputest new file mode 100644 index 0000000..538e066 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/gputest @@ -0,0 +1 @@ +Cross-platform GPU stress test and OpenGL benchmark \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/gsmartcontrol b/usr/share/sofirem/cache/corrections/gsmartcontrol new file mode 100644 index 0000000..2825f4e --- /dev/null +++ b/usr/share/sofirem/cache/corrections/gsmartcontrol @@ -0,0 +1 @@ +GUI for smartctl hard disk drive health inspection tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/halo-icons-git b/usr/share/sofirem/cache/corrections/halo-icons-git new file mode 100644 index 0000000..5d57139 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/halo-icons-git @@ -0,0 +1 @@ +Halo is an icon theme for Linux desktops \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/hddtemp b/usr/share/sofirem/cache/corrections/hddtemp new file mode 100644 index 0000000..5c30888 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/hddtemp @@ -0,0 +1 @@ +Gives you the temperature of your hard drive \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/hw-probe b/usr/share/sofirem/cache/corrections/hw-probe new file mode 100644 index 0000000..30c0a8b --- /dev/null +++ b/usr/share/sofirem/cache/corrections/hw-probe @@ -0,0 +1 @@ +Tool to probe for hardware \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/insync b/usr/share/sofirem/cache/corrections/insync new file mode 100644 index 0000000..0ae829b --- /dev/null +++ b/usr/share/sofirem/cache/corrections/insync @@ -0,0 +1 @@ +An unofficial Google Drive and OneDrive client \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/intellij-idea-community-edition b/usr/share/sofirem/cache/corrections/intellij-idea-community-edition new file mode 100644 index 0000000..b0c2a5a --- /dev/null +++ b/usr/share/sofirem/cache/corrections/intellij-idea-community-edition @@ -0,0 +1 @@ +IDE for Java, Groovy and other programming languages \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/jdownloader2 b/usr/share/sofirem/cache/corrections/jdownloader2 new file mode 100644 index 0000000..4515246 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/jdownloader2 @@ -0,0 +1 @@ +Download manager, written in Java \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/kodi-addons b/usr/share/sofirem/cache/corrections/kodi-addons new file mode 100644 index 0000000..42e6b02 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/kodi-addons @@ -0,0 +1 @@ +Group package for all kodi-addons \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/kodi-x11 b/usr/share/sofirem/cache/corrections/kodi-x11 new file mode 100644 index 0000000..a4c967c --- /dev/null +++ b/usr/share/sofirem/cache/corrections/kodi-x11 @@ -0,0 +1 @@ +Group package for Kodi X11 \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/layan-cursor-theme-git b/usr/share/sofirem/cache/corrections/layan-cursor-theme-git new file mode 100644 index 0000000..dcc8205 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/layan-cursor-theme-git @@ -0,0 +1 @@ +A x-cursor theme based on Capitaine Cursors. \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-rt b/usr/share/sofirem/cache/corrections/linux-rt new file mode 100644 index 0000000..967e01f --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-rt @@ -0,0 +1 @@ +The Linux RT kernel and modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-rt-headers b/usr/share/sofirem/cache/corrections/linux-rt-headers new file mode 100644 index 0000000..dbd2d13 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-rt-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for Linux RT kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-rt-lts b/usr/share/sofirem/cache/corrections/linux-rt-lts new file mode 100644 index 0000000..d2f4a1f --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-rt-lts @@ -0,0 +1 @@ +The Linux RT LTS kernel and modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-rt-lts-headers b/usr/share/sofirem/cache/corrections/linux-rt-lts-headers new file mode 100644 index 0000000..cc1cd4d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-rt-lts-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for Linux RT LTS kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-xanmod-anbox b/usr/share/sofirem/cache/corrections/linux-xanmod-anbox new file mode 100644 index 0000000..3d6cbfb --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-xanmod-anbox @@ -0,0 +1 @@ +The Linux kernel and modules with Xanmod patches \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-xanmod-anbox-headers b/usr/share/sofirem/cache/corrections/linux-xanmod-anbox-headers new file mode 100644 index 0000000..6caf2c3 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-xanmod-anbox-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux Xanmod Anbox \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-xanmod-headers b/usr/share/sofirem/cache/corrections/linux-xanmod-headers new file mode 100644 index 0000000..0414b8c --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-xanmod-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for Linux Xanmod \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-xanmod-lts-headers b/usr/share/sofirem/cache/corrections/linux-xanmod-lts-headers new file mode 100644 index 0000000..5a21521 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-xanmod-lts-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for Linux Xanmod LTS \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-xanmod-rt-headers b/usr/share/sofirem/cache/corrections/linux-xanmod-rt-headers new file mode 100644 index 0000000..cf9a4ce --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-xanmod-rt-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux Xanmod RT \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/linux-xanmod-tt-headers b/usr/share/sofirem/cache/corrections/linux-xanmod-tt-headers new file mode 100644 index 0000000..55797f3 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/linux-xanmod-tt-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux Xanmod TT \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/lm_sensors b/usr/share/sofirem/cache/corrections/lm_sensors new file mode 100644 index 0000000..819f69d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/lm_sensors @@ -0,0 +1 @@ +Hardware monitoring - sensors \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/lshw b/usr/share/sofirem/cache/corrections/lshw new file mode 100644 index 0000000..a86970d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/lshw @@ -0,0 +1 @@ +Provide detailed information on the hardware configuration \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/mailspring b/usr/share/sofirem/cache/corrections/mailspring new file mode 100644 index 0000000..0bed720 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/mailspring @@ -0,0 +1 @@ +The best email app for people and teams at work \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/materia-gtk-theme b/usr/share/sofirem/cache/corrections/materia-gtk-theme new file mode 100644 index 0000000..63f1206 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/materia-gtk-theme @@ -0,0 +1 @@ +A Material Design theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/mcomix b/usr/share/sofirem/cache/corrections/mcomix new file mode 100644 index 0000000..ecd057e --- /dev/null +++ b/usr/share/sofirem/cache/corrections/mcomix @@ -0,0 +1 @@ +Viewer specifically designed to handle comic books \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/mintstick-bin b/usr/share/sofirem/cache/corrections/mintstick-bin new file mode 100644 index 0000000..6689e00 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/mintstick-bin @@ -0,0 +1 @@ +A GUI to write .iso files to a usb or format the usb \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/moka-icon-theme-git b/usr/share/sofirem/cache/corrections/moka-icon-theme-git new file mode 100644 index 0000000..a3a451b --- /dev/null +++ b/usr/share/sofirem/cache/corrections/moka-icon-theme-git @@ -0,0 +1 @@ +An icon theme designed with a minimal and flat style \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/multimc-git b/usr/share/sofirem/cache/corrections/multimc-git new file mode 100644 index 0000000..f89d332 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/multimc-git @@ -0,0 +1 @@ +Minecraft launcher with ability to manage multiple instances \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/neofetch b/usr/share/sofirem/cache/corrections/neofetch new file mode 100644 index 0000000..2a1c7de --- /dev/null +++ b/usr/share/sofirem/cache/corrections/neofetch @@ -0,0 +1 @@ +A CLI system information tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/nordzy-icon-theme-git b/usr/share/sofirem/cache/corrections/nordzy-icon-theme-git new file mode 100644 index 0000000..5b34d6d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/nordzy-icon-theme-git @@ -0,0 +1 @@ +Icon theme using the Nord color palette and based on WhiteSur and Numix Icon Theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/numix-gtk-theme-git b/usr/share/sofirem/cache/corrections/numix-gtk-theme-git new file mode 100644 index 0000000..caa1589 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/numix-gtk-theme-git @@ -0,0 +1 @@ +A flat and light theme with a modern look \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/oh-my-zsh-git b/usr/share/sofirem/cache/corrections/oh-my-zsh-git new file mode 100644 index 0000000..72960b4 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/oh-my-zsh-git @@ -0,0 +1 @@ +A community-driven framework for managing your zsh configuration \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/open-vm-tools b/usr/share/sofirem/cache/corrections/open-vm-tools new file mode 100644 index 0000000..d1f4028 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/open-vm-tools @@ -0,0 +1 @@ +The Open Virtual Machine Tools \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/optimus-manager-qt b/usr/share/sofirem/cache/corrections/optimus-manager-qt new file mode 100644 index 0000000..254f84e --- /dev/null +++ b/usr/share/sofirem/cache/corrections/optimus-manager-qt @@ -0,0 +1 @@ +A Qt interface for Optimus Manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/oranchelo-icon-theme-git b/usr/share/sofirem/cache/corrections/oranchelo-icon-theme-git new file mode 100644 index 0000000..fed416f --- /dev/null +++ b/usr/share/sofirem/cache/corrections/oranchelo-icon-theme-git @@ -0,0 +1 @@ +Oranchelo is a flat-design icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/orchis-theme-git b/usr/share/sofirem/cache/corrections/orchis-theme-git new file mode 100644 index 0000000..63f1206 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/orchis-theme-git @@ -0,0 +1 @@ +A Material Design theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/oxy-neon b/usr/share/sofirem/cache/corrections/oxy-neon new file mode 100644 index 0000000..f59123d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/oxy-neon @@ -0,0 +1 @@ +Stylized oxygen mouse theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/pacseek-bin b/usr/share/sofirem/cache/corrections/pacseek-bin new file mode 100644 index 0000000..dd5544c --- /dev/null +++ b/usr/share/sofirem/cache/corrections/pacseek-bin @@ -0,0 +1 @@ +Cli for searching and installing Arch Linux packages \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/pacui b/usr/share/sofirem/cache/corrections/pacui new file mode 100644 index 0000000..7065b41 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/pacui @@ -0,0 +1 @@ +Bash script providing advanced Pacman and Yay/Paru functionality \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/pacui-git b/usr/share/sofirem/cache/corrections/pacui-git new file mode 100644 index 0000000..7065b41 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/pacui-git @@ -0,0 +1 @@ +Bash script providing advanced Pacman and Yay/Paru functionality \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/papirus-linux-universe b/usr/share/sofirem/cache/corrections/papirus-linux-universe new file mode 100644 index 0000000..447ae61 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/papirus-linux-universe @@ -0,0 +1 @@ +Papirus Linux universe icon set \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/phoronix-test-suite b/usr/share/sofirem/cache/corrections/phoronix-test-suite new file mode 100644 index 0000000..11afc72 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/phoronix-test-suite @@ -0,0 +1 @@ +The most comprehensive testing and benchmarking platform \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/picom-ibhagwan-git b/usr/share/sofirem/cache/corrections/picom-ibhagwan-git new file mode 100644 index 0000000..5c3732f --- /dev/null +++ b/usr/share/sofirem/cache/corrections/picom-ibhagwan-git @@ -0,0 +1 @@ +iBhagwan's picom fork (dual_kawase blur and rounded corners) \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/picom-jonaburg-git b/usr/share/sofirem/cache/corrections/picom-jonaburg-git new file mode 100644 index 0000000..2e0a35b --- /dev/null +++ b/usr/share/sofirem/cache/corrections/picom-jonaburg-git @@ -0,0 +1 @@ +Jonaburg's picom fork (dual_kawase blur - rounded corners) \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/pikaur-git b/usr/share/sofirem/cache/corrections/pikaur-git new file mode 100644 index 0000000..c1432f6 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/pikaur-git @@ -0,0 +1 @@ +AUR helper which asks all questions before installing/building \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/protonup-qt-bin b/usr/share/sofirem/cache/corrections/protonup-qt-bin new file mode 100644 index 0000000..2b53be4 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/protonup-qt-bin @@ -0,0 +1 @@ +GUI to install and manage Proton-GE for Steam,... \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/qbittorrent b/usr/share/sofirem/cache/corrections/qbittorrent new file mode 100644 index 0000000..d1d23d3 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/qbittorrent @@ -0,0 +1 @@ +BitTorrent client programmed in C++ (Qt - libtorrent-rasterbar) \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/qtox b/usr/share/sofirem/cache/corrections/qtox new file mode 100644 index 0000000..043a260 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/qtox @@ -0,0 +1 @@ +A chat, voice, video, and file transfer IM client \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/qtwebflix-git b/usr/share/sofirem/cache/corrections/qtwebflix-git new file mode 100644 index 0000000..ef06692 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/qtwebflix-git @@ -0,0 +1 @@ +Standalone HD Netflix Browser using qt5-webengine \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/remmina b/usr/share/sofirem/cache/corrections/remmina new file mode 100644 index 0000000..7517a4e --- /dev/null +++ b/usr/share/sofirem/cache/corrections/remmina @@ -0,0 +1 @@ +Remote desktop client written in GTK+ \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ripgrep b/usr/share/sofirem/cache/corrections/ripgrep new file mode 100644 index 0000000..522fe4f --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ripgrep @@ -0,0 +1 @@ +A search tool that combines the usability of ag \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ripgrep-all b/usr/share/sofirem/cache/corrections/ripgrep-all new file mode 100644 index 0000000..62196a3 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ripgrep-all @@ -0,0 +1 @@ +rga: ripgrep, but also search in zip, tar.gz, etc. \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-colora-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-colora-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-flat-colora-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-flat-colora-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-flat-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-flat-mint-y-icons-git b/usr/share/sofirem/cache/corrections/sardi-flat-mint-y-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-flat-mint-y-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-flat-mixing-icons-git b/usr/share/sofirem/cache/corrections/sardi-flat-mixing-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-flat-mixing-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-flexible-colora-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-flexible-colora-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-flexible-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-flexible-luv-colora-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-flexible-luv-colora-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-flexible-luv-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-flexible-mint-y-icons-git b/usr/share/sofirem/cache/corrections/sardi-flexible-mint-y-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-flexible-mint-y-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-flexible-mixing-icons-git b/usr/share/sofirem/cache/corrections/sardi-flexible-mixing-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-flexible-mixing-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-flexible-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-flexible-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-flexible-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-colora-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-colora-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-mint-y-icons-git b/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-mint-y-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-mint-y-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-mixing-icons-git b/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-mixing-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-mixing-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-ghost-flexible-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-icons b/usr/share/sofirem/cache/corrections/sardi-icons new file mode 100644 index 0000000..4a20578 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-icons @@ -0,0 +1 @@ +Sardi icons is an icon collection for any linux distro \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-mint-y-icons-git b/usr/share/sofirem/cache/corrections/sardi-mint-y-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-mint-y-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-mixing-icons-git b/usr/share/sofirem/cache/corrections/sardi-mixing-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-mixing-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-mono-colora-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-mono-colora-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-mono-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-mono-mint-y-icons-git b/usr/share/sofirem/cache/corrections/sardi-mono-mint-y-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-mono-mint-y-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-mono-mixing-icons-git b/usr/share/sofirem/cache/corrections/sardi-mono-mixing-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-mono-mixing-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-mono-numix-colora-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-mono-numix-colora-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-mono-numix-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-mono-papirus-colora-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-mono-papirus-colora-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-mono-papirus-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-orb-colora-mint-y-icons-git b/usr/share/sofirem/cache/corrections/sardi-orb-colora-mint-y-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-orb-colora-mint-y-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-orb-colora-mixing-icons-git b/usr/share/sofirem/cache/corrections/sardi-orb-colora-mixing-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-orb-colora-mixing-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sardi-orb-colora-variations-icons-git b/usr/share/sofirem/cache/corrections/sardi-orb-colora-variations-icons-git new file mode 100644 index 0000000..0a81f3d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sardi-orb-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon is a circular icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/sayonara-player b/usr/share/sofirem/cache/corrections/sayonara-player new file mode 100644 index 0000000..5b352a0 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/sayonara-player @@ -0,0 +1 @@ +Small audio player for Linux written in C++ for Qt \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/screenkey-git b/usr/share/sofirem/cache/corrections/screenkey-git new file mode 100644 index 0000000..75e6760 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/screenkey-git @@ -0,0 +1 @@ +Screencast tool to show your keys \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/shairport-sync b/usr/share/sofirem/cache/corrections/shairport-sync new file mode 100644 index 0000000..8d583a7 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/shairport-sync @@ -0,0 +1 @@ +AirPort Express - streaming music Apple \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/snap-pac b/usr/share/sofirem/cache/corrections/snap-pac new file mode 100644 index 0000000..5cf52e5 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/snap-pac @@ -0,0 +1 @@ +Pacman hooks that use snapper to create pre/post btrfs snapshots \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/snapper b/usr/share/sofirem/cache/corrections/snapper new file mode 100644 index 0000000..6e1d098 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/snapper @@ -0,0 +1 @@ +A tool for managing BTRFS and LVM snapshots. \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/spotifywm-git b/usr/share/sofirem/cache/corrections/spotifywm-git new file mode 100644 index 0000000..583f4ba --- /dev/null +++ b/usr/share/sofirem/cache/corrections/spotifywm-git @@ -0,0 +1 @@ +Creates a class name for Spotify (TWMs) \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/surfn-mint-y-icons-git b/usr/share/sofirem/cache/corrections/surfn-mint-y-icons-git new file mode 100644 index 0000000..9ee8b25 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/surfn-mint-y-icons-git @@ -0,0 +1 @@ +Surfn icons with Linux Mint folders \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/systemd-manager-git b/usr/share/sofirem/cache/corrections/systemd-manager-git new file mode 100644 index 0000000..f4d69ae --- /dev/null +++ b/usr/share/sofirem/cache/corrections/systemd-manager-git @@ -0,0 +1 @@ +A systemd service manager written in Rust \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/tabby-bin b/usr/share/sofirem/cache/corrections/tabby-bin new file mode 100644 index 0000000..53716d8 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/tabby-bin @@ -0,0 +1 @@ +Tabby is a highly configurable terminal emulator \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/tor-browser b/usr/share/sofirem/cache/corrections/tor-browser new file mode 100644 index 0000000..7057183 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/tor-browser @@ -0,0 +1 @@ +Tor Browser Bundle: anonymous browsing using Firefox and Tor \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-dejavu b/usr/share/sofirem/cache/corrections/ttf-dejavu new file mode 100644 index 0000000..511e2ed --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-dejavu @@ -0,0 +1 @@ +Font family based on the Bitstream Vera Fonts \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-eurof b/usr/share/sofirem/cache/corrections/ttf-eurof new file mode 100644 index 0000000..faca990 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-eurof @@ -0,0 +1 @@ +The original eurofurence font \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-hack b/usr/share/sofirem/cache/corrections/ttf-hack new file mode 100644 index 0000000..67488de --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-hack @@ -0,0 +1 @@ +A hand groomed and optically balanced typeface \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-hactor b/usr/share/sofirem/cache/corrections/ttf-hactor new file mode 100644 index 0000000..abb5303 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-hactor @@ -0,0 +1 @@ +A font alternative to Operator Mono \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-liberation b/usr/share/sofirem/cache/corrections/ttf-liberation new file mode 100644 index 0000000..535b198 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-liberation @@ -0,0 +1 @@ +Font compatible with Arial, Times New Roman and Courier New \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-linux-libertine b/usr/share/sofirem/cache/corrections/ttf-linux-libertine new file mode 100644 index 0000000..9e6e930 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-linux-libertine @@ -0,0 +1 @@ +Serif (Libertine) and Sans Serif (Biolinum) OpenType fonts \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-mac-fonts b/usr/share/sofirem/cache/corrections/ttf-mac-fonts new file mode 100644 index 0000000..1066a29 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-mac-fonts @@ -0,0 +1 @@ +Mac fonts including Lucida Grande, Apple Garamond, ... \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-nerd-fonts-symbols-1000-em b/usr/share/sofirem/cache/corrections/ttf-nerd-fonts-symbols-1000-em new file mode 100644 index 0000000..82be977 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-nerd-fonts-symbols-1000-em @@ -0,0 +1 @@ +High number of extra glyphs from popular 'iconic fonts' \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-nerd-fonts-symbols-1000-em-mono b/usr/share/sofirem/cache/corrections/ttf-nerd-fonts-symbols-1000-em-mono new file mode 100644 index 0000000..82be977 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-nerd-fonts-symbols-1000-em-mono @@ -0,0 +1 @@ +High number of extra glyphs from popular 'iconic fonts' \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/ttf-roboto-mono b/usr/share/sofirem/cache/corrections/ttf-roboto-mono new file mode 100644 index 0000000..6499ae3 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/ttf-roboto-mono @@ -0,0 +1 @@ +A monospaced addition to the Roboto type family \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/tuxboot b/usr/share/sofirem/cache/corrections/tuxboot new file mode 100644 index 0000000..39f8c29 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/tuxboot @@ -0,0 +1 @@ +Create a bootable Live USB drive \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/tuxboot-git b/usr/share/sofirem/cache/corrections/tuxboot-git new file mode 100644 index 0000000..39f8c29 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/tuxboot-git @@ -0,0 +1 @@ +Create a bootable Live USB drive \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/unimatrix-git b/usr/share/sofirem/cache/corrections/unimatrix-git new file mode 100644 index 0000000..f4f1aa2 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/unimatrix-git @@ -0,0 +1 @@ +Python script to simulate the display from "The Matrix" in terminal. \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/upower b/usr/share/sofirem/cache/corrections/upower new file mode 100644 index 0000000..d5c4040 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/upower @@ -0,0 +1 @@ +Abstraction for enumerating power devices \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/variety b/usr/share/sofirem/cache/corrections/variety new file mode 100644 index 0000000..26bebda --- /dev/null +++ b/usr/share/sofirem/cache/corrections/variety @@ -0,0 +1 @@ +Changes the wallpaper on a regular interval \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/vim-runtime b/usr/share/sofirem/cache/corrections/vim-runtime new file mode 100644 index 0000000..18e9e5b --- /dev/null +++ b/usr/share/sofirem/cache/corrections/vim-runtime @@ -0,0 +1 @@ +Vi Improved, a highly configurable, improved version of vi \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/vimix-cursors b/usr/share/sofirem/cache/corrections/vimix-cursors new file mode 100644 index 0000000..2b75421 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/vimix-cursors @@ -0,0 +1 @@ +An X Cursor theme inspired by Material design \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/visual-studio-code-bin b/usr/share/sofirem/cache/corrections/visual-studio-code-bin new file mode 100644 index 0000000..2d1f242 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/visual-studio-code-bin @@ -0,0 +1 @@ +Visual Studio Code (official binary version) \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/vivaldi-widevine b/usr/share/sofirem/cache/corrections/vivaldi-widevine new file mode 100644 index 0000000..250539d --- /dev/null +++ b/usr/share/sofirem/cache/corrections/vivaldi-widevine @@ -0,0 +1 @@ +A browser plugin designed for the viewing of premium video content \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/vmware-workstation b/usr/share/sofirem/cache/corrections/vmware-workstation new file mode 100644 index 0000000..8842739 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/vmware-workstation @@ -0,0 +1 @@ +Vmware - virtual machines on a PC \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/waydroid b/usr/share/sofirem/cache/corrections/waydroid new file mode 100644 index 0000000..bb7c05f --- /dev/null +++ b/usr/share/sofirem/cache/corrections/waydroid @@ -0,0 +1 @@ +Boot a full Android system on a regular Linux system \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/woeusb b/usr/share/sofirem/cache/corrections/woeusb new file mode 100644 index 0000000..66310ed --- /dev/null +++ b/usr/share/sofirem/cache/corrections/woeusb @@ -0,0 +1 @@ +Create Windows USB stick \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/wttr b/usr/share/sofirem/cache/corrections/wttr new file mode 100644 index 0000000..4d5956a --- /dev/null +++ b/usr/share/sofirem/cache/corrections/wttr @@ -0,0 +1 @@ +A simple script that helps you check the weather condition \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/xcursor-arch-cursor-complete b/usr/share/sofirem/cache/corrections/xcursor-arch-cursor-complete new file mode 100644 index 0000000..886aa0b --- /dev/null +++ b/usr/share/sofirem/cache/corrections/xcursor-arch-cursor-complete @@ -0,0 +1 @@ +Expansion of Arch Cursor Simple theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/xcursor-breeze b/usr/share/sofirem/cache/corrections/xcursor-breeze new file mode 100644 index 0000000..d4a5420 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/xcursor-breeze @@ -0,0 +1 @@ +KDE Plasma 5 'Breeze' cursor theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/xdman b/usr/share/sofirem/cache/corrections/xdman new file mode 100644 index 0000000..7f8bf54 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/xdman @@ -0,0 +1 @@ +Xtreme Download Manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/yad b/usr/share/sofirem/cache/corrections/yad new file mode 100644 index 0000000..8496f24 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/yad @@ -0,0 +1 @@ +A fork of zenity - display graphical dialogs \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/yay b/usr/share/sofirem/cache/corrections/yay new file mode 100644 index 0000000..379b6d9 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/yay @@ -0,0 +1 @@ +Yet another yogurt. Pacman wrapper and AUR helper written in go. \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/yay-bin b/usr/share/sofirem/cache/corrections/yay-bin new file mode 100644 index 0000000..ec03903 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/yay-bin @@ -0,0 +1 @@ +Yet another yogurt. Pacman wrapper and AUR helper \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/yay-git b/usr/share/sofirem/cache/corrections/yay-git new file mode 100644 index 0000000..ec03903 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/yay-git @@ -0,0 +1 @@ +Yet another yogurt. Pacman wrapper and AUR helper \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/zsh-history-substring-search-git b/usr/share/sofirem/cache/corrections/zsh-history-substring-search-git new file mode 100644 index 0000000..3a34cc6 --- /dev/null +++ b/usr/share/sofirem/cache/corrections/zsh-history-substring-search-git @@ -0,0 +1 @@ +A ZSH plugin to search history \ No newline at end of file diff --git a/usr/share/sofirem/cache/corrections/zsh-theme-powerlevel10k-git b/usr/share/sofirem/cache/corrections/zsh-theme-powerlevel10k-git new file mode 100644 index 0000000..546d80c --- /dev/null +++ b/usr/share/sofirem/cache/corrections/zsh-theme-powerlevel10k-git @@ -0,0 +1 @@ +Powerlevel10k is a theme for Zsh \ No newline at end of file diff --git a/usr/share/sofirem/cache/cowfortune b/usr/share/sofirem/cache/cowfortune new file mode 100644 index 0000000..a721596 --- /dev/null +++ b/usr/share/sofirem/cache/cowfortune @@ -0,0 +1 @@ +Configurable fortune cookie proclaiming cow (and a few other creatures) \ No newline at end of file diff --git a/usr/share/sofirem/cache/cpu-x b/usr/share/sofirem/cache/cpu-x new file mode 100644 index 0000000..661418b --- /dev/null +++ b/usr/share/sofirem/cache/cpu-x @@ -0,0 +1 @@ +A Free software that gathers information on CPU, motherboard and more \ No newline at end of file diff --git a/usr/share/sofirem/cache/cpufetch-git b/usr/share/sofirem/cache/cpufetch-git new file mode 100644 index 0000000..512e717 --- /dev/null +++ b/usr/share/sofirem/cache/cpufetch-git @@ -0,0 +1 @@ +Simple yet fancy CPU architecture fetching tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/cpuid b/usr/share/sofirem/cache/cpuid new file mode 100644 index 0000000..d27a0ec --- /dev/null +++ b/usr/share/sofirem/cache/cpuid @@ -0,0 +1 @@ +Linux tool to dump x86 CPUID information about the CPU(s) \ No newline at end of file diff --git a/usr/share/sofirem/cache/cryfs b/usr/share/sofirem/cache/cryfs new file mode 100644 index 0000000..4385867 --- /dev/null +++ b/usr/share/sofirem/cache/cryfs @@ -0,0 +1 @@ +Cryptographic filesystem for the cloud \ No newline at end of file diff --git a/usr/share/sofirem/cache/cuda b/usr/share/sofirem/cache/cuda new file mode 100644 index 0000000..33f8220 --- /dev/null +++ b/usr/share/sofirem/cache/cuda @@ -0,0 +1 @@ +NVIDIA's GPU programming toolkit \ No newline at end of file diff --git a/usr/share/sofirem/cache/curseradio-git b/usr/share/sofirem/cache/curseradio-git new file mode 100644 index 0000000..f6d2a8a --- /dev/null +++ b/usr/share/sofirem/cache/curseradio-git @@ -0,0 +1 @@ +Command line radio player \ No newline at end of file diff --git a/usr/share/sofirem/cache/cwm b/usr/share/sofirem/cache/cwm new file mode 100644 index 0000000..bfa1002 --- /dev/null +++ b/usr/share/sofirem/cache/cwm @@ -0,0 +1 @@ +OpenBSD fork of calmwm, a clean and lightweight window manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/cxxmatrix-git b/usr/share/sofirem/cache/cxxmatrix-git new file mode 100644 index 0000000..c5437dd --- /dev/null +++ b/usr/share/sofirem/cache/cxxmatrix-git @@ -0,0 +1 @@ +A C++ based scrolling Matrix digital rain along with other scenes. \ No newline at end of file diff --git a/usr/share/sofirem/cache/darktable b/usr/share/sofirem/cache/darktable new file mode 100644 index 0000000..b671629 --- /dev/null +++ b/usr/share/sofirem/cache/darktable @@ -0,0 +1 @@ +Utility to organize and develop raw images \ No newline at end of file diff --git a/usr/share/sofirem/cache/deadbeef b/usr/share/sofirem/cache/deadbeef new file mode 100644 index 0000000..d7708fb --- /dev/null +++ b/usr/share/sofirem/cache/deadbeef @@ -0,0 +1 @@ +Modular GTK audio player for GNU/Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/debtap b/usr/share/sofirem/cache/debtap new file mode 100644 index 0000000..16f191b --- /dev/null +++ b/usr/share/sofirem/cache/debtap @@ -0,0 +1 @@ +A script to convert .deb packages to Arch Linux packages, focused on accuracy. Do not use it to convert packages that already exist on official repositories or can be built from AUR! \ No newline at end of file diff --git a/usr/share/sofirem/cache/deezer b/usr/share/sofirem/cache/deezer new file mode 100644 index 0000000..a1acc5f --- /dev/null +++ b/usr/share/sofirem/cache/deezer @@ -0,0 +1 @@ +A proprietary music streaming service \ No newline at end of file diff --git a/usr/share/sofirem/cache/deja-dup b/usr/share/sofirem/cache/deja-dup new file mode 100644 index 0000000..17f0175 --- /dev/null +++ b/usr/share/sofirem/cache/deja-dup @@ -0,0 +1 @@ +A trivial-to-use personal backup tool to protect against accidental data loss \ No newline at end of file diff --git a/usr/share/sofirem/cache/deluge b/usr/share/sofirem/cache/deluge new file mode 100644 index 0000000..0b8c9be --- /dev/null +++ b/usr/share/sofirem/cache/deluge @@ -0,0 +1 @@ +BitTorrent client with multiple user interfaces in a client/server model \ No newline at end of file diff --git a/usr/share/sofirem/cache/digikam b/usr/share/sofirem/cache/digikam new file mode 100644 index 0000000..59d872e --- /dev/null +++ b/usr/share/sofirem/cache/digikam @@ -0,0 +1 @@ +An advanced digital photo management application \ No newline at end of file diff --git a/usr/share/sofirem/cache/discord b/usr/share/sofirem/cache/discord new file mode 100644 index 0000000..e4c9893 --- /dev/null +++ b/usr/share/sofirem/cache/discord @@ -0,0 +1 @@ +All-in-one voice and text chat for gamers that's free and secure. \ No newline at end of file diff --git a/usr/share/sofirem/cache/discord_arch_electron b/usr/share/sofirem/cache/discord_arch_electron new file mode 100644 index 0000000..6d22c12 --- /dev/null +++ b/usr/share/sofirem/cache/discord_arch_electron @@ -0,0 +1 @@ +Discord (popular voice + video app) using the system provided electron for increased security and performance \ No newline at end of file diff --git a/usr/share/sofirem/cache/discover b/usr/share/sofirem/cache/discover new file mode 100644 index 0000000..247dbce --- /dev/null +++ b/usr/share/sofirem/cache/discover @@ -0,0 +1 @@ +KDE and Plasma resources management GUI \ No newline at end of file diff --git a/usr/share/sofirem/cache/disper b/usr/share/sofirem/cache/disper new file mode 100644 index 0000000..b4f09f5 --- /dev/null +++ b/usr/share/sofirem/cache/disper @@ -0,0 +1 @@ +An on-the-fly display switch utility, intended to be used on laptops, especially with nVidia cards. \ No newline at end of file diff --git a/usr/share/sofirem/cache/dmenu b/usr/share/sofirem/cache/dmenu new file mode 100644 index 0000000..c3b0f0b --- /dev/null +++ b/usr/share/sofirem/cache/dmenu @@ -0,0 +1 @@ +Generic menu for X \ No newline at end of file diff --git a/usr/share/sofirem/cache/dmidecode b/usr/share/sofirem/cache/dmidecode new file mode 100644 index 0000000..f98e726 --- /dev/null +++ b/usr/share/sofirem/cache/dmidecode @@ -0,0 +1 @@ +Desktop Management Interface table related utilities \ No newline at end of file diff --git a/usr/share/sofirem/cache/dolphin b/usr/share/sofirem/cache/dolphin new file mode 100644 index 0000000..95f7549 --- /dev/null +++ b/usr/share/sofirem/cache/dolphin @@ -0,0 +1 @@ +KDE File Manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/dolphin-plugins b/usr/share/sofirem/cache/dolphin-plugins new file mode 100644 index 0000000..2b0ecd3 --- /dev/null +++ b/usr/share/sofirem/cache/dolphin-plugins @@ -0,0 +1 @@ +Extra Dolphin plugins \ No newline at end of file diff --git a/usr/share/sofirem/cache/doublecmd-qt5 b/usr/share/sofirem/cache/doublecmd-qt5 new file mode 100644 index 0000000..48ab248 --- /dev/null +++ b/usr/share/sofirem/cache/doublecmd-qt5 @@ -0,0 +1 @@ +twin-panel (commander-style) file manager (Qt5) \ No newline at end of file diff --git a/usr/share/sofirem/cache/downgrade b/usr/share/sofirem/cache/downgrade new file mode 100644 index 0000000..3574b20 --- /dev/null +++ b/usr/share/sofirem/cache/downgrade @@ -0,0 +1 @@ +Bash script for downgrading one or more packages to a version in your cache or the A.L.A. \ No newline at end of file diff --git a/usr/share/sofirem/cache/dracula-cursors-git b/usr/share/sofirem/cache/dracula-cursors-git new file mode 100644 index 0000000..16895da --- /dev/null +++ b/usr/share/sofirem/cache/dracula-cursors-git @@ -0,0 +1 @@ +Dracula theme cursors \ No newline at end of file diff --git a/usr/share/sofirem/cache/dracula-gtk-theme b/usr/share/sofirem/cache/dracula-gtk-theme new file mode 100644 index 0000000..5be85a9 --- /dev/null +++ b/usr/share/sofirem/cache/dracula-gtk-theme @@ -0,0 +1 @@ +Dark theme for GTK \ No newline at end of file diff --git a/usr/share/sofirem/cache/dracula-icons-git b/usr/share/sofirem/cache/dracula-icons-git new file mode 100644 index 0000000..5aff350 --- /dev/null +++ b/usr/share/sofirem/cache/dracula-icons-git @@ -0,0 +1 @@ +Dark Icons Theme for Linux Desktops \ No newline at end of file diff --git a/usr/share/sofirem/cache/droidcam b/usr/share/sofirem/cache/droidcam new file mode 100644 index 0000000..b7b4ea6 --- /dev/null +++ b/usr/share/sofirem/cache/droidcam @@ -0,0 +1 @@ +A tool for using your android device as a wireless/usb webcam \ No newline at end of file diff --git a/usr/share/sofirem/cache/dropbox b/usr/share/sofirem/cache/dropbox new file mode 100644 index 0000000..8fee612 --- /dev/null +++ b/usr/share/sofirem/cache/dropbox @@ -0,0 +1 @@ +A free service that lets you bring your photos, docs, and videos anywhere and share them easily. \ No newline at end of file diff --git a/usr/share/sofirem/cache/duf b/usr/share/sofirem/cache/duf new file mode 100644 index 0000000..4710f52 --- /dev/null +++ b/usr/share/sofirem/cache/duf @@ -0,0 +1 @@ +Disk Usage/Free Utility \ No newline at end of file diff --git a/usr/share/sofirem/cache/duf-bin b/usr/share/sofirem/cache/duf-bin new file mode 100644 index 0000000..4710f52 --- /dev/null +++ b/usr/share/sofirem/cache/duf-bin @@ -0,0 +1 @@ +Disk Usage/Free Utility \ No newline at end of file diff --git a/usr/share/sofirem/cache/edid-decode-git b/usr/share/sofirem/cache/edid-decode-git new file mode 100644 index 0000000..531149c --- /dev/null +++ b/usr/share/sofirem/cache/edid-decode-git @@ -0,0 +1 @@ +EDID decoder and conformance tester \ No newline at end of file diff --git a/usr/share/sofirem/cache/element-desktop b/usr/share/sofirem/cache/element-desktop new file mode 100644 index 0000000..f2c3760 --- /dev/null +++ b/usr/share/sofirem/cache/element-desktop @@ -0,0 +1 @@ +Glossy Matrix collaboration client — desktop version. \ No newline at end of file diff --git a/usr/share/sofirem/cache/elisa b/usr/share/sofirem/cache/elisa new file mode 100644 index 0000000..398e03f --- /dev/null +++ b/usr/share/sofirem/cache/elisa @@ -0,0 +1 @@ +A simple music player aiming to provide a nice experience for its users \ No newline at end of file diff --git a/usr/share/sofirem/cache/emacs b/usr/share/sofirem/cache/emacs new file mode 100644 index 0000000..ae440e3 --- /dev/null +++ b/usr/share/sofirem/cache/emacs @@ -0,0 +1 @@ +The extensible, customizable, self-documenting real-time display editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/encfs b/usr/share/sofirem/cache/encfs new file mode 100644 index 0000000..8d31cb2 --- /dev/null +++ b/usr/share/sofirem/cache/encfs @@ -0,0 +1 @@ +Encrypted filesystem in user-space \ No newline at end of file diff --git a/usr/share/sofirem/cache/enlightenment b/usr/share/sofirem/cache/enlightenment new file mode 100644 index 0000000..62d4b63 --- /dev/null +++ b/usr/share/sofirem/cache/enlightenment @@ -0,0 +1 @@ +Enlightenment window manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/enpass-bin b/usr/share/sofirem/cache/enpass-bin new file mode 100644 index 0000000..3f42d59 --- /dev/null +++ b/usr/share/sofirem/cache/enpass-bin @@ -0,0 +1 @@ +A multiplatform password manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/envycontrol b/usr/share/sofirem/cache/envycontrol new file mode 100644 index 0000000..477c297 --- /dev/null +++ b/usr/share/sofirem/cache/envycontrol @@ -0,0 +1 @@ +Easy GPU switching for Nvidia Optimus laptops under Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/epdfview b/usr/share/sofirem/cache/epdfview new file mode 100644 index 0000000..8d6bc84 --- /dev/null +++ b/usr/share/sofirem/cache/epdfview @@ -0,0 +1 @@ +Lightweight PDF document viewer \ No newline at end of file diff --git a/usr/share/sofirem/cache/espeak-ng b/usr/share/sofirem/cache/espeak-ng new file mode 100644 index 0000000..1af1bfc --- /dev/null +++ b/usr/share/sofirem/cache/espeak-ng @@ -0,0 +1 @@ +Multi-lingual software speech synthesizer \ No newline at end of file diff --git a/usr/share/sofirem/cache/etcher-bin b/usr/share/sofirem/cache/etcher-bin new file mode 100644 index 0000000..89d5a6e --- /dev/null +++ b/usr/share/sofirem/cache/etcher-bin @@ -0,0 +1 @@ +Flash OS images to SD cards & USB drives, safely and easily \ No newline at end of file diff --git a/usr/share/sofirem/cache/evince b/usr/share/sofirem/cache/evince new file mode 100644 index 0000000..e3a4f0c --- /dev/null +++ b/usr/share/sofirem/cache/evince @@ -0,0 +1 @@ +Document viewer (PDF, PostScript, XPS, djvu, dvi, tiff, cbr, cbz, cb7, cbt) \ No newline at end of file diff --git a/usr/share/sofirem/cache/evolution b/usr/share/sofirem/cache/evolution new file mode 100644 index 0000000..69a297d --- /dev/null +++ b/usr/share/sofirem/cache/evolution @@ -0,0 +1 @@ +Manage your email, contacts and schedule \ No newline at end of file diff --git a/usr/share/sofirem/cache/extremetuxracer b/usr/share/sofirem/cache/extremetuxracer new file mode 100644 index 0000000..62b21b0 --- /dev/null +++ b/usr/share/sofirem/cache/extremetuxracer @@ -0,0 +1 @@ +Downhill racing game starring Tux \ No newline at end of file diff --git a/usr/share/sofirem/cache/faba-icon-theme-git b/usr/share/sofirem/cache/faba-icon-theme-git new file mode 100644 index 0000000..66873d1 --- /dev/null +++ b/usr/share/sofirem/cache/faba-icon-theme-git @@ -0,0 +1 @@ +A sexy and modern FreeDesktop icon set with Tango and elementary influences \ No newline at end of file diff --git a/usr/share/sofirem/cache/faba-mono-icons-git b/usr/share/sofirem/cache/faba-mono-icons-git new file mode 100644 index 0000000..53cf6fa --- /dev/null +++ b/usr/share/sofirem/cache/faba-mono-icons-git @@ -0,0 +1 @@ +Supplementary theme to Faba Icon Theme - consists only of monochrome panel icons \ No newline at end of file diff --git a/usr/share/sofirem/cache/falkon b/usr/share/sofirem/cache/falkon new file mode 100644 index 0000000..7cb142c --- /dev/null +++ b/usr/share/sofirem/cache/falkon @@ -0,0 +1 @@ +Cross-platform QtWebEngine browser \ No newline at end of file diff --git a/usr/share/sofirem/cache/fancontrol-gui-git b/usr/share/sofirem/cache/fancontrol-gui-git new file mode 100644 index 0000000..c796499 --- /dev/null +++ b/usr/share/sofirem/cache/fancontrol-gui-git @@ -0,0 +1 @@ +GUI for the fancontrol script and systemd service \ No newline at end of file diff --git a/usr/share/sofirem/cache/fastfetch b/usr/share/sofirem/cache/fastfetch new file mode 100644 index 0000000..39b89e5 --- /dev/null +++ b/usr/share/sofirem/cache/fastfetch @@ -0,0 +1 @@ + Like neofetch, but much faster because written in c \ No newline at end of file diff --git a/usr/share/sofirem/cache/fastfetch-git b/usr/share/sofirem/cache/fastfetch-git new file mode 100644 index 0000000..39b89e5 --- /dev/null +++ b/usr/share/sofirem/cache/fastfetch-git @@ -0,0 +1 @@ + Like neofetch, but much faster because written in c \ No newline at end of file diff --git a/usr/share/sofirem/cache/feh b/usr/share/sofirem/cache/feh new file mode 100644 index 0000000..738e234 --- /dev/null +++ b/usr/share/sofirem/cache/feh @@ -0,0 +1 @@ +Fast and light imlib2-based image viewer \ No newline at end of file diff --git a/usr/share/sofirem/cache/ffmpegthumbs b/usr/share/sofirem/cache/ffmpegthumbs new file mode 100644 index 0000000..9425f11 --- /dev/null +++ b/usr/share/sofirem/cache/ffmpegthumbs @@ -0,0 +1 @@ +FFmpeg-based thumbnail creator for video files \ No newline at end of file diff --git a/usr/share/sofirem/cache/figlet b/usr/share/sofirem/cache/figlet new file mode 100644 index 0000000..a22f0b6 --- /dev/null +++ b/usr/share/sofirem/cache/figlet @@ -0,0 +1 @@ +A program for making large letters out of ordinary text \ No newline at end of file diff --git a/usr/share/sofirem/cache/filebot b/usr/share/sofirem/cache/filebot new file mode 100644 index 0000000..7ee1dd2 --- /dev/null +++ b/usr/share/sofirem/cache/filebot @@ -0,0 +1 @@ +The ultimate TV and Movie Renamer \ No newline at end of file diff --git a/usr/share/sofirem/cache/filezilla b/usr/share/sofirem/cache/filezilla new file mode 100644 index 0000000..4afc94d --- /dev/null +++ b/usr/share/sofirem/cache/filezilla @@ -0,0 +1 @@ +Fast and reliable FTP, FTPS and SFTP client \ No newline at end of file diff --git a/usr/share/sofirem/cache/find-the-command-git b/usr/share/sofirem/cache/find-the-command-git new file mode 100644 index 0000000..7b082fb --- /dev/null +++ b/usr/share/sofirem/cache/find-the-command-git @@ -0,0 +1 @@ +Advanced command-not-found hook for bash, fish and zsh using the power of pacman \ No newline at end of file diff --git a/usr/share/sofirem/cache/fingerprint-gui b/usr/share/sofirem/cache/fingerprint-gui new file mode 100644 index 0000000..72a3388 --- /dev/null +++ b/usr/share/sofirem/cache/fingerprint-gui @@ -0,0 +1 @@ +Fingerprint-based authentication, supports UPEK readers with non-free library \ No newline at end of file diff --git a/usr/share/sofirem/cache/firefox b/usr/share/sofirem/cache/firefox new file mode 100644 index 0000000..3498a87 --- /dev/null +++ b/usr/share/sofirem/cache/firefox @@ -0,0 +1 @@ +Standalone web browser from mozilla.org \ No newline at end of file diff --git a/usr/share/sofirem/cache/firefox-adblock-plus b/usr/share/sofirem/cache/firefox-adblock-plus new file mode 100644 index 0000000..3ccdb47 --- /dev/null +++ b/usr/share/sofirem/cache/firefox-adblock-plus @@ -0,0 +1 @@ +Extension for firefox which block ads and banners \ No newline at end of file diff --git a/usr/share/sofirem/cache/firefox-ublock-origin b/usr/share/sofirem/cache/firefox-ublock-origin new file mode 100644 index 0000000..50e441c --- /dev/null +++ b/usr/share/sofirem/cache/firefox-ublock-origin @@ -0,0 +1 @@ +Efficient blocker add-on for various browsers. Fast, potent, and lean \ No newline at end of file diff --git a/usr/share/sofirem/cache/flameshot-git b/usr/share/sofirem/cache/flameshot-git new file mode 100644 index 0000000..e9f5a88 --- /dev/null +++ b/usr/share/sofirem/cache/flameshot-git @@ -0,0 +1 @@ +Powerful yet simple to use screenshot software \ No newline at end of file diff --git a/usr/share/sofirem/cache/flat-remix-git b/usr/share/sofirem/cache/flat-remix-git new file mode 100644 index 0000000..739e292 --- /dev/null +++ b/usr/share/sofirem/cache/flat-remix-git @@ -0,0 +1 @@ +An icon theme inspired by material design. \ No newline at end of file diff --git a/usr/share/sofirem/cache/flatpak b/usr/share/sofirem/cache/flatpak new file mode 100644 index 0000000..580db7e --- /dev/null +++ b/usr/share/sofirem/cache/flatpak @@ -0,0 +1 @@ +Linux application sandboxing and distribution framework (formerly xdg-app) \ No newline at end of file diff --git a/usr/share/sofirem/cache/flavours b/usr/share/sofirem/cache/flavours new file mode 100644 index 0000000..ed6d713 --- /dev/null +++ b/usr/share/sofirem/cache/flavours @@ -0,0 +1 @@ +A simple and easy cli to build and use base16 schemes \ No newline at end of file diff --git a/usr/share/sofirem/cache/florence b/usr/share/sofirem/cache/florence new file mode 100644 index 0000000..d86b850 --- /dev/null +++ b/usr/share/sofirem/cache/florence @@ -0,0 +1 @@ +A configurable on-screen virtual keyboard \ No newline at end of file diff --git a/usr/share/sofirem/cache/fluent-gtk-theme b/usr/share/sofirem/cache/fluent-gtk-theme new file mode 100644 index 0000000..e40d88f --- /dev/null +++ b/usr/share/sofirem/cache/fluent-gtk-theme @@ -0,0 +1 @@ +Fluent design GTK theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/fluent-icon-theme-git b/usr/share/sofirem/cache/fluent-icon-theme-git new file mode 100644 index 0000000..680cbe4 --- /dev/null +++ b/usr/share/sofirem/cache/fluent-icon-theme-git @@ -0,0 +1 @@ +A Fluent design icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/fluent-kde-theme-git b/usr/share/sofirem/cache/fluent-kde-theme-git new file mode 100644 index 0000000..6a2ba6a --- /dev/null +++ b/usr/share/sofirem/cache/fluent-kde-theme-git @@ -0,0 +1 @@ +Fluent design theme for kde plasma \ No newline at end of file diff --git a/usr/share/sofirem/cache/focuswriter b/usr/share/sofirem/cache/focuswriter new file mode 100644 index 0000000..f268545 --- /dev/null +++ b/usr/share/sofirem/cache/focuswriter @@ -0,0 +1 @@ +Simple, distraction-free word processor \ No newline at end of file diff --git a/usr/share/sofirem/cache/font-manager b/usr/share/sofirem/cache/font-manager new file mode 100644 index 0000000..a62f2ac --- /dev/null +++ b/usr/share/sofirem/cache/font-manager @@ -0,0 +1 @@ +A simple font management application for GTK+ Desktop Environments \ No newline at end of file diff --git a/usr/share/sofirem/cache/font-manager-git b/usr/share/sofirem/cache/font-manager-git new file mode 100644 index 0000000..a62f2ac --- /dev/null +++ b/usr/share/sofirem/cache/font-manager-git @@ -0,0 +1 @@ +A simple font management application for GTK+ Desktop Environments \ No newline at end of file diff --git a/usr/share/sofirem/cache/fragments b/usr/share/sofirem/cache/fragments new file mode 100644 index 0000000..ba27852 --- /dev/null +++ b/usr/share/sofirem/cache/fragments @@ -0,0 +1 @@ +BitTorrent client for GNOME \ No newline at end of file diff --git a/usr/share/sofirem/cache/freeciv b/usr/share/sofirem/cache/freeciv new file mode 100644 index 0000000..4a35632 --- /dev/null +++ b/usr/share/sofirem/cache/freeciv @@ -0,0 +1 @@ +A multiuser clone of the famous Microprose game of Civilization \ No newline at end of file diff --git a/usr/share/sofirem/cache/freedownloadmanager b/usr/share/sofirem/cache/freedownloadmanager new file mode 100644 index 0000000..267bff3 --- /dev/null +++ b/usr/share/sofirem/cache/freedownloadmanager @@ -0,0 +1 @@ +FDM is a powerful modern download accelerator and organizer. \ No newline at end of file diff --git a/usr/share/sofirem/cache/freeoffice b/usr/share/sofirem/cache/freeoffice new file mode 100644 index 0000000..88b9620 --- /dev/null +++ b/usr/share/sofirem/cache/freeoffice @@ -0,0 +1 @@ +A complete, reliable, lightning-fast and Microsoft Office-compatible office suite with a word processor, spreadsheet, and presentation graphics software. \ No newline at end of file diff --git a/usr/share/sofirem/cache/freetube-bin b/usr/share/sofirem/cache/freetube-bin new file mode 100644 index 0000000..9cade67 --- /dev/null +++ b/usr/share/sofirem/cache/freetube-bin @@ -0,0 +1 @@ +An open source desktop YouTube player built with privacy in mind. \ No newline at end of file diff --git a/usr/share/sofirem/cache/fvwm3-git b/usr/share/sofirem/cache/fvwm3-git new file mode 100644 index 0000000..13304ee --- /dev/null +++ b/usr/share/sofirem/cache/fvwm3-git @@ -0,0 +1 @@ +A powerful ICCCM2 compliant multiple virtual desktop window manager for X11 \ No newline at end of file diff --git a/usr/share/sofirem/cache/g4music b/usr/share/sofirem/cache/g4music new file mode 100644 index 0000000..724004e --- /dev/null +++ b/usr/share/sofirem/cache/g4music @@ -0,0 +1 @@ +Play your music \ No newline at end of file diff --git a/usr/share/sofirem/cache/galculator b/usr/share/sofirem/cache/galculator new file mode 100644 index 0000000..e8964e7 --- /dev/null +++ b/usr/share/sofirem/cache/galculator @@ -0,0 +1 @@ +GTK+ based scientific calculator \ No newline at end of file diff --git a/usr/share/sofirem/cache/game-devices-udev b/usr/share/sofirem/cache/game-devices-udev new file mode 100644 index 0000000..2e8eabe --- /dev/null +++ b/usr/share/sofirem/cache/game-devices-udev @@ -0,0 +1 @@ +Udev rules for controllers \ No newline at end of file diff --git a/usr/share/sofirem/cache/gamehub-bin b/usr/share/sofirem/cache/gamehub-bin new file mode 100644 index 0000000..f57c7fa --- /dev/null +++ b/usr/share/sofirem/cache/gamehub-bin @@ -0,0 +1 @@ +Games manager, downloader, library that supports GOG, Steam and Humble Bundle \ No newline at end of file diff --git a/usr/share/sofirem/cache/gamemode b/usr/share/sofirem/cache/gamemode new file mode 100644 index 0000000..f34ae63 --- /dev/null +++ b/usr/share/sofirem/cache/gamemode @@ -0,0 +1 @@ +A daemon/lib combo that allows games to request a set of optimisations be temporarily applied to the host OS \ No newline at end of file diff --git a/usr/share/sofirem/cache/gammy b/usr/share/sofirem/cache/gammy new file mode 100644 index 0000000..5d9e77e --- /dev/null +++ b/usr/share/sofirem/cache/gammy @@ -0,0 +1 @@ +Adaptive screen brightness/temperature tool. \ No newline at end of file diff --git a/usr/share/sofirem/cache/gdm b/usr/share/sofirem/cache/gdm new file mode 100644 index 0000000..c2b13f0 --- /dev/null +++ b/usr/share/sofirem/cache/gdm @@ -0,0 +1 @@ +Display manager and login screen \ No newline at end of file diff --git a/usr/share/sofirem/cache/gdown b/usr/share/sofirem/cache/gdown new file mode 100644 index 0000000..d1e4582 --- /dev/null +++ b/usr/share/sofirem/cache/gdown @@ -0,0 +1 @@ +Download a large file from Google Drive \ No newline at end of file diff --git a/usr/share/sofirem/cache/geany b/usr/share/sofirem/cache/geany new file mode 100644 index 0000000..ceca5de --- /dev/null +++ b/usr/share/sofirem/cache/geany @@ -0,0 +1 @@ +Fast and lightweight IDE \ No newline at end of file diff --git a/usr/share/sofirem/cache/geany-plugins b/usr/share/sofirem/cache/geany-plugins new file mode 100644 index 0000000..8c4bb24 --- /dev/null +++ b/usr/share/sofirem/cache/geany-plugins @@ -0,0 +1 @@ +Plugins for Geany \ No newline at end of file diff --git a/usr/share/sofirem/cache/geary b/usr/share/sofirem/cache/geary new file mode 100644 index 0000000..dbce1cb --- /dev/null +++ b/usr/share/sofirem/cache/geary @@ -0,0 +1 @@ +A lightweight email client for the GNOME desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/geekbench b/usr/share/sofirem/cache/geekbench new file mode 100644 index 0000000..ea7e1ee --- /dev/null +++ b/usr/share/sofirem/cache/geekbench @@ -0,0 +1 @@ +A cross-platform benchmark that measures processor and memory performance \ No newline at end of file diff --git a/usr/share/sofirem/cache/ghostwriter b/usr/share/sofirem/cache/ghostwriter new file mode 100644 index 0000000..a839e18 --- /dev/null +++ b/usr/share/sofirem/cache/ghostwriter @@ -0,0 +1 @@ +Aesthetic, distraction-free Markdown editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/gimp b/usr/share/sofirem/cache/gimp new file mode 100644 index 0000000..6f4f19c --- /dev/null +++ b/usr/share/sofirem/cache/gimp @@ -0,0 +1 @@ +GNU Image Manipulation Program \ No newline at end of file diff --git a/usr/share/sofirem/cache/gitahead b/usr/share/sofirem/cache/gitahead new file mode 100644 index 0000000..d3e8991 --- /dev/null +++ b/usr/share/sofirem/cache/gitahead @@ -0,0 +1 @@ +Understand your Git history! \ No newline at end of file diff --git a/usr/share/sofirem/cache/gitahead-bin b/usr/share/sofirem/cache/gitahead-bin new file mode 100644 index 0000000..d3e8991 --- /dev/null +++ b/usr/share/sofirem/cache/gitahead-bin @@ -0,0 +1 @@ +Understand your Git history! \ No newline at end of file diff --git a/usr/share/sofirem/cache/gitfiend b/usr/share/sofirem/cache/gitfiend new file mode 100644 index 0000000..a4d50d4 --- /dev/null +++ b/usr/share/sofirem/cache/gitfiend @@ -0,0 +1 @@ +A Git client designed for humans \ No newline at end of file diff --git a/usr/share/sofirem/cache/gitg b/usr/share/sofirem/cache/gitg new file mode 100644 index 0000000..22fa627 --- /dev/null +++ b/usr/share/sofirem/cache/gitg @@ -0,0 +1 @@ +GNOME GUI client to view git repositories \ No newline at end of file diff --git a/usr/share/sofirem/cache/github-desktop-bin b/usr/share/sofirem/cache/github-desktop-bin new file mode 100644 index 0000000..fd0e04d --- /dev/null +++ b/usr/share/sofirem/cache/github-desktop-bin @@ -0,0 +1 @@ +GUI for managing Git and GitHub. \ No newline at end of file diff --git a/usr/share/sofirem/cache/gitkraken b/usr/share/sofirem/cache/gitkraken new file mode 100644 index 0000000..ec0c93c --- /dev/null +++ b/usr/share/sofirem/cache/gitkraken @@ -0,0 +1 @@ +The intuitive, fast, and beautiful cross-platform Git client. \ No newline at end of file diff --git a/usr/share/sofirem/cache/gksu b/usr/share/sofirem/cache/gksu new file mode 100644 index 0000000..c19cb4c --- /dev/null +++ b/usr/share/sofirem/cache/gksu @@ -0,0 +1 @@ +A graphical frontend for su \ No newline at end of file diff --git a/usr/share/sofirem/cache/glade b/usr/share/sofirem/cache/glade new file mode 100644 index 0000000..d3eb2ac --- /dev/null +++ b/usr/share/sofirem/cache/glade @@ -0,0 +1 @@ +User Interface Builder for GTK+ applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/glances b/usr/share/sofirem/cache/glances new file mode 100644 index 0000000..803240f --- /dev/null +++ b/usr/share/sofirem/cache/glances @@ -0,0 +1 @@ +CLI curses-based monitoring tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/gmusicbrowser b/usr/share/sofirem/cache/gmusicbrowser new file mode 100644 index 0000000..710b7ce --- /dev/null +++ b/usr/share/sofirem/cache/gmusicbrowser @@ -0,0 +1 @@ +Open-source jukebox for large collections of mp3/ogg/flac files, written in perl. \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-chess b/usr/share/sofirem/cache/gnome-chess new file mode 100644 index 0000000..4b7c56e --- /dev/null +++ b/usr/share/sofirem/cache/gnome-chess @@ -0,0 +1 @@ +Play the classic two-player boardgame of chess \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-disk-utility b/usr/share/sofirem/cache/gnome-disk-utility new file mode 100644 index 0000000..fc662f9 --- /dev/null +++ b/usr/share/sofirem/cache/gnome-disk-utility @@ -0,0 +1 @@ +Disk Management Utility for GNOME \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-screenshot b/usr/share/sofirem/cache/gnome-screenshot new file mode 100644 index 0000000..9395ab2 --- /dev/null +++ b/usr/share/sofirem/cache/gnome-screenshot @@ -0,0 +1 @@ +Take pictures of your screen \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-shell-extension-appindicator-git b/usr/share/sofirem/cache/gnome-shell-extension-appindicator-git new file mode 100644 index 0000000..3f26ecd --- /dev/null +++ b/usr/share/sofirem/cache/gnome-shell-extension-appindicator-git @@ -0,0 +1 @@ +AppIndicator/KStatusNotifierItem support for GNOME Shell \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-shell-extension-dash-to-dock b/usr/share/sofirem/cache/gnome-shell-extension-dash-to-dock new file mode 100644 index 0000000..face16a --- /dev/null +++ b/usr/share/sofirem/cache/gnome-shell-extension-dash-to-dock @@ -0,0 +1 @@ +Move the dash out of the overview transforming it in a dock \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-shell-extension-pop-shell-git b/usr/share/sofirem/cache/gnome-shell-extension-pop-shell-git new file mode 100644 index 0000000..0b0bb37 --- /dev/null +++ b/usr/share/sofirem/cache/gnome-shell-extension-pop-shell-git @@ -0,0 +1 @@ +Pop Shell - Tiling window management in Gnome (WIP) \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-software b/usr/share/sofirem/cache/gnome-software new file mode 100644 index 0000000..c607ec4 --- /dev/null +++ b/usr/share/sofirem/cache/gnome-software @@ -0,0 +1 @@ +GNOME Software Tools \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-software-packagekit-plugin b/usr/share/sofirem/cache/gnome-software-packagekit-plugin new file mode 100644 index 0000000..2203708 --- /dev/null +++ b/usr/share/sofirem/cache/gnome-software-packagekit-plugin @@ -0,0 +1 @@ +PackageKit support plugin for GNOME Software \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-system-monitor b/usr/share/sofirem/cache/gnome-system-monitor new file mode 100644 index 0000000..1dcb406 --- /dev/null +++ b/usr/share/sofirem/cache/gnome-system-monitor @@ -0,0 +1 @@ +View current processes and monitor system state \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-system-tools b/usr/share/sofirem/cache/gnome-system-tools new file mode 100644 index 0000000..08e2262 --- /dev/null +++ b/usr/share/sofirem/cache/gnome-system-tools @@ -0,0 +1 @@ +Cross-platform configuration utilities for GNOME \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-terminal b/usr/share/sofirem/cache/gnome-terminal new file mode 100644 index 0000000..173c75e --- /dev/null +++ b/usr/share/sofirem/cache/gnome-terminal @@ -0,0 +1 @@ +The GNOME Terminal Emulator \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnome-terminal-transparency b/usr/share/sofirem/cache/gnome-terminal-transparency new file mode 100644 index 0000000..b5986b3 --- /dev/null +++ b/usr/share/sofirem/cache/gnome-terminal-transparency @@ -0,0 +1 @@ +The GNOME Terminal Emulator with background transparency \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnuchess b/usr/share/sofirem/cache/gnuchess new file mode 100644 index 0000000..0a6e1e8 --- /dev/null +++ b/usr/share/sofirem/cache/gnuchess @@ -0,0 +1 @@ +Play chess against the computer on a terminal and an engine for graphical chess frontends \ No newline at end of file diff --git a/usr/share/sofirem/cache/gnumeric b/usr/share/sofirem/cache/gnumeric new file mode 100644 index 0000000..7856f8d --- /dev/null +++ b/usr/share/sofirem/cache/gnumeric @@ -0,0 +1 @@ +A GNOME Spreadsheet Program \ No newline at end of file diff --git a/usr/share/sofirem/cache/gocryptfs b/usr/share/sofirem/cache/gocryptfs new file mode 100644 index 0000000..1a3a8a9 --- /dev/null +++ b/usr/share/sofirem/cache/gocryptfs @@ -0,0 +1 @@ +Encrypted overlay filesystem written in Go. \ No newline at end of file diff --git a/usr/share/sofirem/cache/google-chat-linux-bin b/usr/share/sofirem/cache/google-chat-linux-bin new file mode 100644 index 0000000..fd68245 --- /dev/null +++ b/usr/share/sofirem/cache/google-chat-linux-bin @@ -0,0 +1 @@ +Unofficial electron-based desktop client for Google Chat, electron included \ No newline at end of file diff --git a/usr/share/sofirem/cache/google-chrome b/usr/share/sofirem/cache/google-chrome new file mode 100644 index 0000000..c3fa77b --- /dev/null +++ b/usr/share/sofirem/cache/google-chrome @@ -0,0 +1 @@ +The popular and trusted web browser by Google (Stable Channel) \ No newline at end of file diff --git a/usr/share/sofirem/cache/google-earth-pro b/usr/share/sofirem/cache/google-earth-pro new file mode 100644 index 0000000..8a0819d --- /dev/null +++ b/usr/share/sofirem/cache/google-earth-pro @@ -0,0 +1 @@ +3D interface to explore the globe, terrain, streets, buildings and other planets (Pro version) \ No newline at end of file diff --git a/usr/share/sofirem/cache/gotop-bin b/usr/share/sofirem/cache/gotop-bin new file mode 100644 index 0000000..46f77b6 --- /dev/null +++ b/usr/share/sofirem/cache/gotop-bin @@ -0,0 +1 @@ +A terminal based graphical activity monitor inspired by gtop and vtop \ No newline at end of file diff --git a/usr/share/sofirem/cache/goverlay-bin b/usr/share/sofirem/cache/goverlay-bin new file mode 100644 index 0000000..9c017ce --- /dev/null +++ b/usr/share/sofirem/cache/goverlay-bin @@ -0,0 +1 @@ +A GUI to help manage Vulkan/OpenGL overlays \ No newline at end of file diff --git a/usr/share/sofirem/cache/gpick b/usr/share/sofirem/cache/gpick new file mode 100644 index 0000000..3753235 --- /dev/null +++ b/usr/share/sofirem/cache/gpick @@ -0,0 +1 @@ +Advanced color picker written in C++ using GTK+ toolkit \ No newline at end of file diff --git a/usr/share/sofirem/cache/gputest b/usr/share/sofirem/cache/gputest new file mode 100644 index 0000000..f41d522 --- /dev/null +++ b/usr/share/sofirem/cache/gputest @@ -0,0 +1 @@ +cross-platform GPU stress test and OpenGL benchmark. Contains FurMark, TessMark \ No newline at end of file diff --git a/usr/share/sofirem/cache/graphite-gtk-theme-git b/usr/share/sofirem/cache/graphite-gtk-theme-git new file mode 100644 index 0000000..736a6c7 --- /dev/null +++ b/usr/share/sofirem/cache/graphite-gtk-theme-git @@ -0,0 +1 @@ +Graphite gtk theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/grsync b/usr/share/sofirem/cache/grsync new file mode 100644 index 0000000..ff6ade3 --- /dev/null +++ b/usr/share/sofirem/cache/grsync @@ -0,0 +1 @@ +GTK+ GUI for rsync to synchronize folders, files and make backups \ No newline at end of file diff --git a/usr/share/sofirem/cache/grub-btrfs b/usr/share/sofirem/cache/grub-btrfs new file mode 100644 index 0000000..0980fc5 --- /dev/null +++ b/usr/share/sofirem/cache/grub-btrfs @@ -0,0 +1 @@ +Include btrfs snapshots in GRUB boot options \ No newline at end of file diff --git a/usr/share/sofirem/cache/grub-customizer b/usr/share/sofirem/cache/grub-customizer new file mode 100644 index 0000000..4c03e3e --- /dev/null +++ b/usr/share/sofirem/cache/grub-customizer @@ -0,0 +1 @@ +A graphical grub2 settings manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/gsimplecal b/usr/share/sofirem/cache/gsimplecal new file mode 100644 index 0000000..217316f --- /dev/null +++ b/usr/share/sofirem/cache/gsimplecal @@ -0,0 +1 @@ +Simple and lightweight GTK calendar \ No newline at end of file diff --git a/usr/share/sofirem/cache/gsmartcontrol b/usr/share/sofirem/cache/gsmartcontrol new file mode 100644 index 0000000..0cc7c50 --- /dev/null +++ b/usr/share/sofirem/cache/gsmartcontrol @@ -0,0 +1 @@ +A graphical user interface for the smartctl hard disk drive health inspection tool. \ No newline at end of file diff --git a/usr/share/sofirem/cache/gtk2-perl b/usr/share/sofirem/cache/gtk2-perl new file mode 100644 index 0000000..bfc92ec --- /dev/null +++ b/usr/share/sofirem/cache/gtk2-perl @@ -0,0 +1 @@ +Perl bindings for GTK+ 2.x \ No newline at end of file diff --git a/usr/share/sofirem/cache/gtop b/usr/share/sofirem/cache/gtop new file mode 100644 index 0000000..07e21b4 --- /dev/null +++ b/usr/share/sofirem/cache/gtop @@ -0,0 +1 @@ +System monitoring dashboard for terminal \ No newline at end of file diff --git a/usr/share/sofirem/cache/guake b/usr/share/sofirem/cache/guake new file mode 100644 index 0000000..a341e22 --- /dev/null +++ b/usr/share/sofirem/cache/guake @@ -0,0 +1 @@ +Drop-down terminal for GNOME \ No newline at end of file diff --git a/usr/share/sofirem/cache/gufw b/usr/share/sofirem/cache/gufw new file mode 100644 index 0000000..d1af6cb --- /dev/null +++ b/usr/share/sofirem/cache/gufw @@ -0,0 +1 @@ +Uncomplicated way to manage your Linux firewall \ No newline at end of file diff --git a/usr/share/sofirem/cache/gummy b/usr/share/sofirem/cache/gummy new file mode 100644 index 0000000..ae6acf3 --- /dev/null +++ b/usr/share/sofirem/cache/gummy @@ -0,0 +1 @@ +Linux brightness/temperature manager for X11 \ No newline at end of file diff --git a/usr/share/sofirem/cache/guvcview b/usr/share/sofirem/cache/guvcview new file mode 100644 index 0000000..d380ccb --- /dev/null +++ b/usr/share/sofirem/cache/guvcview @@ -0,0 +1 @@ +Simple GTK+ interface for capturing and viewing video from v4l2 devices \ No newline at end of file diff --git a/usr/share/sofirem/cache/gvfs b/usr/share/sofirem/cache/gvfs new file mode 100644 index 0000000..682f14c --- /dev/null +++ b/usr/share/sofirem/cache/gvfs @@ -0,0 +1 @@ +Virtual filesystem implementation for GIO \ No newline at end of file diff --git a/usr/share/sofirem/cache/gwe b/usr/share/sofirem/cache/gwe new file mode 100644 index 0000000..abcb678 --- /dev/null +++ b/usr/share/sofirem/cache/gwe @@ -0,0 +1 @@ +A system utility for controlling NVIDIA GPUs \ No newline at end of file diff --git a/usr/share/sofirem/cache/gwenview b/usr/share/sofirem/cache/gwenview new file mode 100644 index 0000000..a79cb8a --- /dev/null +++ b/usr/share/sofirem/cache/gwenview @@ -0,0 +1 @@ +A fast and easy to use image viewer \ No newline at end of file diff --git a/usr/share/sofirem/cache/halo-icons-git b/usr/share/sofirem/cache/halo-icons-git new file mode 100644 index 0000000..1c9f7dd --- /dev/null +++ b/usr/share/sofirem/cache/halo-icons-git @@ -0,0 +1 @@ +Halo is an icon theme for Linux desktops, the set is inspired by the latest flat design trend from Alejandro Camarena \ No newline at end of file diff --git a/usr/share/sofirem/cache/handbrake b/usr/share/sofirem/cache/handbrake new file mode 100644 index 0000000..ff69b62 --- /dev/null +++ b/usr/share/sofirem/cache/handbrake @@ -0,0 +1 @@ +Multithreaded video transcoder \ No newline at end of file diff --git a/usr/share/sofirem/cache/hardcode-fixer-git b/usr/share/sofirem/cache/hardcode-fixer-git new file mode 100644 index 0000000..c75c2f0 --- /dev/null +++ b/usr/share/sofirem/cache/hardcode-fixer-git @@ -0,0 +1 @@ +Fixes Hardcoded Icons \ No newline at end of file diff --git a/usr/share/sofirem/cache/hardinfo-gtk3 b/usr/share/sofirem/cache/hardinfo-gtk3 new file mode 100644 index 0000000..04da148 --- /dev/null +++ b/usr/share/sofirem/cache/hardinfo-gtk3 @@ -0,0 +1 @@ +A system information and benchmark tool. (GTK3 version) \ No newline at end of file diff --git a/usr/share/sofirem/cache/haskell-dbus b/usr/share/sofirem/cache/haskell-dbus new file mode 100644 index 0000000..41287e5 --- /dev/null +++ b/usr/share/sofirem/cache/haskell-dbus @@ -0,0 +1 @@ +A client library for the D-Bus IPC system \ No newline at end of file diff --git a/usr/share/sofirem/cache/hddtemp b/usr/share/sofirem/cache/hddtemp new file mode 100644 index 0000000..0844531 --- /dev/null +++ b/usr/share/sofirem/cache/hddtemp @@ -0,0 +1 @@ +Gives you the temperature of your hard drive by reading S.M.A.R.T. information \ No newline at end of file diff --git a/usr/share/sofirem/cache/hedgewars b/usr/share/sofirem/cache/hedgewars new file mode 100644 index 0000000..0090be0 --- /dev/null +++ b/usr/share/sofirem/cache/hedgewars @@ -0,0 +1 @@ +Turn-based strategy artillery game similiar to Worms \ No newline at end of file diff --git a/usr/share/sofirem/cache/herbstluftwm b/usr/share/sofirem/cache/herbstluftwm new file mode 100644 index 0000000..28c0acb --- /dev/null +++ b/usr/share/sofirem/cache/herbstluftwm @@ -0,0 +1 @@ +Manual tiling window manager for X \ No newline at end of file diff --git a/usr/share/sofirem/cache/heroic-games-launcher-bin b/usr/share/sofirem/cache/heroic-games-launcher-bin new file mode 100644 index 0000000..e13e271 --- /dev/null +++ b/usr/share/sofirem/cache/heroic-games-launcher-bin @@ -0,0 +1 @@ +HGL, a Native alternative Linux Launcher for Epic Games \ No newline at end of file diff --git a/usr/share/sofirem/cache/hexchat b/usr/share/sofirem/cache/hexchat new file mode 100644 index 0000000..6621707 --- /dev/null +++ b/usr/share/sofirem/cache/hexchat @@ -0,0 +1 @@ +A popular and easy to use graphical IRC (chat) client \ No newline at end of file diff --git a/usr/share/sofirem/cache/hplip b/usr/share/sofirem/cache/hplip new file mode 100644 index 0000000..ebf0cdd --- /dev/null +++ b/usr/share/sofirem/cache/hplip @@ -0,0 +1 @@ +Drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet \ No newline at end of file diff --git a/usr/share/sofirem/cache/htop b/usr/share/sofirem/cache/htop new file mode 100644 index 0000000..72e2fe5 --- /dev/null +++ b/usr/share/sofirem/cache/htop @@ -0,0 +1 @@ +Interactive process viewer \ No newline at end of file diff --git a/usr/share/sofirem/cache/hunspell b/usr/share/sofirem/cache/hunspell new file mode 100644 index 0000000..70ea18f --- /dev/null +++ b/usr/share/sofirem/cache/hunspell @@ -0,0 +1 @@ +Spell checker and morphological analyzer library and program \ No newline at end of file diff --git a/usr/share/sofirem/cache/hw-probe b/usr/share/sofirem/cache/hw-probe new file mode 100644 index 0000000..832fa06 --- /dev/null +++ b/usr/share/sofirem/cache/hw-probe @@ -0,0 +1 @@ +Tool to probe for hardware, check its operability and upload result to the Linux hardware DB: http://linux-hardware.org \ No newline at end of file diff --git a/usr/share/sofirem/cache/hypnotix b/usr/share/sofirem/cache/hypnotix new file mode 100644 index 0000000..a56420d --- /dev/null +++ b/usr/share/sofirem/cache/hypnotix @@ -0,0 +1 @@ +An IPTV streaming application \ No newline at end of file diff --git a/usr/share/sofirem/cache/hypr-dev-git b/usr/share/sofirem/cache/hypr-dev-git new file mode 100644 index 0000000..9a2b70c --- /dev/null +++ b/usr/share/sofirem/cache/hypr-dev-git @@ -0,0 +1 @@ +Hypr is a Linux tiling window manager for Xorg. It's written in XCB with modern C++ and aims to provide easily readable and expandable code. \ No newline at end of file diff --git a/usr/share/sofirem/cache/i3-gaps b/usr/share/sofirem/cache/i3-gaps new file mode 100644 index 0000000..66690dc --- /dev/null +++ b/usr/share/sofirem/cache/i3-gaps @@ -0,0 +1 @@ +A fork of i3wm tiling window manager with more features, including gaps \ No newline at end of file diff --git a/usr/share/sofirem/cache/i3-wm b/usr/share/sofirem/cache/i3-wm new file mode 100644 index 0000000..ce7fa94 --- /dev/null +++ b/usr/share/sofirem/cache/i3-wm @@ -0,0 +1 @@ +Improved dynamic tiling window manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/i3blocks b/usr/share/sofirem/cache/i3blocks new file mode 100644 index 0000000..381140a --- /dev/null +++ b/usr/share/sofirem/cache/i3blocks @@ -0,0 +1 @@ +Define blocks for your i3bar status line \ No newline at end of file diff --git a/usr/share/sofirem/cache/i3status b/usr/share/sofirem/cache/i3status new file mode 100644 index 0000000..ab59532 --- /dev/null +++ b/usr/share/sofirem/cache/i3status @@ -0,0 +1 @@ +Generates status bar to use with i3bar, dzen2 or xmobar \ No newline at end of file diff --git a/usr/share/sofirem/cache/icecat b/usr/share/sofirem/cache/icecat new file mode 100644 index 0000000..c7a1d8c --- /dev/null +++ b/usr/share/sofirem/cache/icecat @@ -0,0 +1 @@ +GNU version of the Firefox browser. \ No newline at end of file diff --git a/usr/share/sofirem/cache/icewm b/usr/share/sofirem/cache/icewm new file mode 100644 index 0000000..614df5d --- /dev/null +++ b/usr/share/sofirem/cache/icewm @@ -0,0 +1 @@ +Window Manager designed for speed, usability, and consistency \ No newline at end of file diff --git a/usr/share/sofirem/cache/ifuse b/usr/share/sofirem/cache/ifuse new file mode 100644 index 0000000..b066566 --- /dev/null +++ b/usr/share/sofirem/cache/ifuse @@ -0,0 +1 @@ +A fuse filesystem to access the contents of an iPhone or iPod Touch \ No newline at end of file diff --git a/usr/share/sofirem/cache/imagewriter b/usr/share/sofirem/cache/imagewriter new file mode 100644 index 0000000..df17309 --- /dev/null +++ b/usr/share/sofirem/cache/imagewriter @@ -0,0 +1 @@ +A graphical utility for writing raw disk images & hybrid isos to USB keys \ No newline at end of file diff --git a/usr/share/sofirem/cache/inetutils b/usr/share/sofirem/cache/inetutils new file mode 100644 index 0000000..dfe137a --- /dev/null +++ b/usr/share/sofirem/cache/inetutils @@ -0,0 +1 @@ +A collection of common network programs \ No newline at end of file diff --git a/usr/share/sofirem/cache/inkscape b/usr/share/sofirem/cache/inkscape new file mode 100644 index 0000000..fbb637a --- /dev/null +++ b/usr/share/sofirem/cache/inkscape @@ -0,0 +1 @@ +Professional vector graphics editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/insync b/usr/share/sofirem/cache/insync new file mode 100644 index 0000000..d532133 --- /dev/null +++ b/usr/share/sofirem/cache/insync @@ -0,0 +1 @@ +An unofficial Google Drive and OneDrive client that runs on Linux, with support for various desktops \ No newline at end of file diff --git a/usr/share/sofirem/cache/intel-ucode b/usr/share/sofirem/cache/intel-ucode new file mode 100644 index 0000000..3c445c3 --- /dev/null +++ b/usr/share/sofirem/cache/intel-ucode @@ -0,0 +1 @@ +Microcode update files for Intel CPUs \ No newline at end of file diff --git a/usr/share/sofirem/cache/intellij-idea-community-edition b/usr/share/sofirem/cache/intellij-idea-community-edition new file mode 100644 index 0000000..d805754 --- /dev/null +++ b/usr/share/sofirem/cache/intellij-idea-community-edition @@ -0,0 +1 @@ +IDE for Java, Groovy and other programming languages with advanced refactoring features \ No newline at end of file diff --git a/usr/share/sofirem/cache/inxi b/usr/share/sofirem/cache/inxi new file mode 100644 index 0000000..aaee222 --- /dev/null +++ b/usr/share/sofirem/cache/inxi @@ -0,0 +1 @@ +Full featured CLI system information tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/iso-flag-png b/usr/share/sofirem/cache/iso-flag-png new file mode 100644 index 0000000..4e75689 --- /dev/null +++ b/usr/share/sofirem/cache/iso-flag-png @@ -0,0 +1 @@ +ISO country flags in PNG format \ No newline at end of file diff --git a/usr/share/sofirem/cache/itch b/usr/share/sofirem/cache/itch new file mode 100644 index 0000000..3a8931f --- /dev/null +++ b/usr/share/sofirem/cache/itch @@ -0,0 +1 @@ +The best way to play itch.io games. \ No newline at end of file diff --git a/usr/share/sofirem/cache/jdownloader2 b/usr/share/sofirem/cache/jdownloader2 new file mode 100644 index 0000000..b897513 --- /dev/null +++ b/usr/share/sofirem/cache/jdownloader2 @@ -0,0 +1 @@ +Download manager, written in Java, for one-click hosting sites like Rapidshare and Megaupload. Uses its own updater. \ No newline at end of file diff --git a/usr/share/sofirem/cache/jitsi-meet-desktop-bin b/usr/share/sofirem/cache/jitsi-meet-desktop-bin new file mode 100644 index 0000000..37ce363 --- /dev/null +++ b/usr/share/sofirem/cache/jitsi-meet-desktop-bin @@ -0,0 +1 @@ +Jitsi Meet desktop application powered by Electron \ No newline at end of file diff --git a/usr/share/sofirem/cache/joshuto b/usr/share/sofirem/cache/joshuto new file mode 100644 index 0000000..6f8c700 --- /dev/null +++ b/usr/share/sofirem/cache/joshuto @@ -0,0 +1 @@ +ranger-like terminal file manager written in Rust \ No newline at end of file diff --git a/usr/share/sofirem/cache/juk b/usr/share/sofirem/cache/juk new file mode 100644 index 0000000..c540a72 --- /dev/null +++ b/usr/share/sofirem/cache/juk @@ -0,0 +1 @@ +A jukebox, tagger and music collection manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/jwm b/usr/share/sofirem/cache/jwm new file mode 100644 index 0000000..83866bc --- /dev/null +++ b/usr/share/sofirem/cache/jwm @@ -0,0 +1 @@ +A lightweight window manager for the X11 Window System \ No newline at end of file diff --git a/usr/share/sofirem/cache/kate b/usr/share/sofirem/cache/kate new file mode 100644 index 0000000..216b957 --- /dev/null +++ b/usr/share/sofirem/cache/kate @@ -0,0 +1 @@ +Advanced Text Editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/kazam b/usr/share/sofirem/cache/kazam new file mode 100644 index 0000000..15b8a0c --- /dev/null +++ b/usr/share/sofirem/cache/kazam @@ -0,0 +1 @@ +Screencast and screenshot application created with design in mind \ No newline at end of file diff --git a/usr/share/sofirem/cache/kbackup b/usr/share/sofirem/cache/kbackup new file mode 100644 index 0000000..a03d2f6 --- /dev/null +++ b/usr/share/sofirem/cache/kbackup @@ -0,0 +1 @@ +A program that lets you back up any directories or files \ No newline at end of file diff --git a/usr/share/sofirem/cache/kbreakout b/usr/share/sofirem/cache/kbreakout new file mode 100644 index 0000000..62b9642 --- /dev/null +++ b/usr/share/sofirem/cache/kbreakout @@ -0,0 +1 @@ +A Breakout-like game \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-accessibility-meta b/usr/share/sofirem/cache/kde-accessibility-meta new file mode 100644 index 0000000..9ccdb0e --- /dev/null +++ b/usr/share/sofirem/cache/kde-accessibility-meta @@ -0,0 +1 @@ +Meta package for KDE accessibility applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-applications-meta b/usr/share/sofirem/cache/kde-applications-meta new file mode 100644 index 0000000..720f8e9 --- /dev/null +++ b/usr/share/sofirem/cache/kde-applications-meta @@ -0,0 +1 @@ +Meta package for KDE Applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-dev-utils b/usr/share/sofirem/cache/kde-dev-utils new file mode 100644 index 0000000..6fcf670 --- /dev/null +++ b/usr/share/sofirem/cache/kde-dev-utils @@ -0,0 +1 @@ +Small utilities for developers using KDE/Qt libs/frameworks \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-education-meta b/usr/share/sofirem/cache/kde-education-meta new file mode 100644 index 0000000..9ef061b --- /dev/null +++ b/usr/share/sofirem/cache/kde-education-meta @@ -0,0 +1 @@ +Meta package for KDE education applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-games-meta b/usr/share/sofirem/cache/kde-games-meta new file mode 100644 index 0000000..72a7595 --- /dev/null +++ b/usr/share/sofirem/cache/kde-games-meta @@ -0,0 +1 @@ +Meta package for KDE games \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-graphics-meta b/usr/share/sofirem/cache/kde-graphics-meta new file mode 100644 index 0000000..f5b76b7 --- /dev/null +++ b/usr/share/sofirem/cache/kde-graphics-meta @@ -0,0 +1 @@ +Meta package for KDE graphics applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-gtk-config b/usr/share/sofirem/cache/kde-gtk-config new file mode 100644 index 0000000..b12a9db --- /dev/null +++ b/usr/share/sofirem/cache/kde-gtk-config @@ -0,0 +1 @@ +GTK2 and GTK3 Configurator for KDE \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-multimedia-meta b/usr/share/sofirem/cache/kde-multimedia-meta new file mode 100644 index 0000000..51d507a --- /dev/null +++ b/usr/share/sofirem/cache/kde-multimedia-meta @@ -0,0 +1 @@ +Meta package for KDE multimedia applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-network-meta b/usr/share/sofirem/cache/kde-network-meta new file mode 100644 index 0000000..0580575 --- /dev/null +++ b/usr/share/sofirem/cache/kde-network-meta @@ -0,0 +1 @@ +Meta package for KDE network applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-pim-meta b/usr/share/sofirem/cache/kde-pim-meta new file mode 100644 index 0000000..48241b9 --- /dev/null +++ b/usr/share/sofirem/cache/kde-pim-meta @@ -0,0 +1 @@ +Meta package for KDE PIM applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-sdk-meta b/usr/share/sofirem/cache/kde-sdk-meta new file mode 100644 index 0000000..dc13210 --- /dev/null +++ b/usr/share/sofirem/cache/kde-sdk-meta @@ -0,0 +1 @@ +Meta package for KDE SDK applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-system-meta b/usr/share/sofirem/cache/kde-system-meta new file mode 100644 index 0000000..3e39892 --- /dev/null +++ b/usr/share/sofirem/cache/kde-system-meta @@ -0,0 +1 @@ +Meta package for KDE system applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kde-utilities-meta b/usr/share/sofirem/cache/kde-utilities-meta new file mode 100644 index 0000000..93ee2d0 --- /dev/null +++ b/usr/share/sofirem/cache/kde-utilities-meta @@ -0,0 +1 @@ +Meta package for KDE utilities applications \ No newline at end of file diff --git a/usr/share/sofirem/cache/kdeconnect b/usr/share/sofirem/cache/kdeconnect new file mode 100644 index 0000000..7cf2f33 --- /dev/null +++ b/usr/share/sofirem/cache/kdeconnect @@ -0,0 +1 @@ +Adds communication between KDE and your smartphone \ No newline at end of file diff --git a/usr/share/sofirem/cache/kdenetwork-filesharing b/usr/share/sofirem/cache/kdenetwork-filesharing new file mode 100644 index 0000000..61bd807 --- /dev/null +++ b/usr/share/sofirem/cache/kdenetwork-filesharing @@ -0,0 +1 @@ +Properties dialog plugin to share a directory with the local network \ No newline at end of file diff --git a/usr/share/sofirem/cache/kdenlive b/usr/share/sofirem/cache/kdenlive new file mode 100644 index 0000000..ff1c61e --- /dev/null +++ b/usr/share/sofirem/cache/kdenlive @@ -0,0 +1 @@ +A non-linear video editor for Linux using the MLT video framework \ No newline at end of file diff --git a/usr/share/sofirem/cache/kdevelop b/usr/share/sofirem/cache/kdevelop new file mode 100644 index 0000000..482660c --- /dev/null +++ b/usr/share/sofirem/cache/kdevelop @@ -0,0 +1 @@ +C++ IDE using KDE technologies \ No newline at end of file diff --git a/usr/share/sofirem/cache/keepassxc b/usr/share/sofirem/cache/keepassxc new file mode 100644 index 0000000..3f5af83 --- /dev/null +++ b/usr/share/sofirem/cache/keepassxc @@ -0,0 +1 @@ +Cross-platform community-driven port of Keepass password manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/kitty b/usr/share/sofirem/cache/kitty new file mode 100644 index 0000000..d55f503 --- /dev/null +++ b/usr/share/sofirem/cache/kitty @@ -0,0 +1 @@ +A modern, hackable, featureful, OpenGL-based terminal emulator \ No newline at end of file diff --git a/usr/share/sofirem/cache/knights b/usr/share/sofirem/cache/knights new file mode 100644 index 0000000..b803388 --- /dev/null +++ b/usr/share/sofirem/cache/knights @@ -0,0 +1 @@ +Chess board by KDE with XBoard protocol support \ No newline at end of file diff --git a/usr/share/sofirem/cache/kodi b/usr/share/sofirem/cache/kodi new file mode 100644 index 0000000..a94e5b3 --- /dev/null +++ b/usr/share/sofirem/cache/kodi @@ -0,0 +1 @@ +A software media player and entertainment hub for digital media \ No newline at end of file diff --git a/usr/share/sofirem/cache/konsave b/usr/share/sofirem/cache/konsave new file mode 100644 index 0000000..9b4ce34 --- /dev/null +++ b/usr/share/sofirem/cache/konsave @@ -0,0 +1 @@ +Save and apply your KDE Plasma customizations with just one command! \ No newline at end of file diff --git a/usr/share/sofirem/cache/konsole b/usr/share/sofirem/cache/konsole new file mode 100644 index 0000000..2c8b96f --- /dev/null +++ b/usr/share/sofirem/cache/konsole @@ -0,0 +1 @@ +KDE terminal emulator \ No newline at end of file diff --git a/usr/share/sofirem/cache/krdc b/usr/share/sofirem/cache/krdc new file mode 100644 index 0000000..def1600 --- /dev/null +++ b/usr/share/sofirem/cache/krdc @@ -0,0 +1 @@ +Remote Desktop Client \ No newline at end of file diff --git a/usr/share/sofirem/cache/kripton-theme-git b/usr/share/sofirem/cache/kripton-theme-git new file mode 100644 index 0000000..7cc4f23 --- /dev/null +++ b/usr/share/sofirem/cache/kripton-theme-git @@ -0,0 +1 @@ +A dark theme with flat style for GNOME \ No newline at end of file diff --git a/usr/share/sofirem/cache/krita b/usr/share/sofirem/cache/krita new file mode 100644 index 0000000..4c130f5 --- /dev/null +++ b/usr/share/sofirem/cache/krita @@ -0,0 +1 @@ +Edit and paint images \ No newline at end of file diff --git a/usr/share/sofirem/cache/ktorrent b/usr/share/sofirem/cache/ktorrent new file mode 100644 index 0000000..e9021c0 --- /dev/null +++ b/usr/share/sofirem/cache/ktorrent @@ -0,0 +1 @@ +A powerful BitTorrent client for KDE \ No newline at end of file diff --git a/usr/share/sofirem/cache/kvantum b/usr/share/sofirem/cache/kvantum new file mode 100644 index 0000000..0cb1a9f --- /dev/null +++ b/usr/share/sofirem/cache/kvantum @@ -0,0 +1 @@ +SVG-based theme engine for Qt5/6 (including config tool and extra themes) \ No newline at end of file diff --git a/usr/share/sofirem/cache/kvantum-qt5-git b/usr/share/sofirem/cache/kvantum-qt5-git new file mode 100644 index 0000000..b035d79 --- /dev/null +++ b/usr/share/sofirem/cache/kvantum-qt5-git @@ -0,0 +1 @@ +SVG-based Qt5 theme engine plus a config tool and extra themes \ No newline at end of file diff --git a/usr/share/sofirem/cache/kvantum-qt6-git b/usr/share/sofirem/cache/kvantum-qt6-git new file mode 100644 index 0000000..90b8438 --- /dev/null +++ b/usr/share/sofirem/cache/kvantum-qt6-git @@ -0,0 +1 @@ +Qt6 component of the Kvantum theme engine \ No newline at end of file diff --git a/usr/share/sofirem/cache/kvantum-theme-materia b/usr/share/sofirem/cache/kvantum-theme-materia new file mode 100644 index 0000000..57aaa48 --- /dev/null +++ b/usr/share/sofirem/cache/kvantum-theme-materia @@ -0,0 +1 @@ +Materia theme for KDE Plasma 5 \ No newline at end of file diff --git a/usr/share/sofirem/cache/kvantum-theme-qogir-git b/usr/share/sofirem/cache/kvantum-theme-qogir-git new file mode 100644 index 0000000..57132f6 --- /dev/null +++ b/usr/share/sofirem/cache/kvantum-theme-qogir-git @@ -0,0 +1 @@ +Qogir theme for Kvantum \ No newline at end of file diff --git a/usr/share/sofirem/cache/kwave b/usr/share/sofirem/cache/kwave new file mode 100644 index 0000000..21f3e5d --- /dev/null +++ b/usr/share/sofirem/cache/kwave @@ -0,0 +1 @@ +A sound editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/la-capitaine-icon-theme-git b/usr/share/sofirem/cache/la-capitaine-icon-theme-git new file mode 100644 index 0000000..8768fdf --- /dev/null +++ b/usr/share/sofirem/cache/la-capitaine-icon-theme-git @@ -0,0 +1 @@ +An icon pack designed to integrate with most desktop environments \ No newline at end of file diff --git a/usr/share/sofirem/cache/lastpass b/usr/share/sofirem/cache/lastpass new file mode 100644 index 0000000..5b6e507 --- /dev/null +++ b/usr/share/sofirem/cache/lastpass @@ -0,0 +1 @@ +The Universal LastPass installer for Firefox, Chrome, and Opera \ No newline at end of file diff --git a/usr/share/sofirem/cache/layan-cursor-theme-git b/usr/share/sofirem/cache/layan-cursor-theme-git new file mode 100644 index 0000000..834ec16 --- /dev/null +++ b/usr/share/sofirem/cache/layan-cursor-theme-git @@ -0,0 +1 @@ +A x-cursor theme inspired by the Layan GTK Theme and based on Capitaine Cursors. \ No newline at end of file diff --git a/usr/share/sofirem/cache/layan-gtk-theme-git b/usr/share/sofirem/cache/layan-gtk-theme-git new file mode 100644 index 0000000..56dbd9d --- /dev/null +++ b/usr/share/sofirem/cache/layan-gtk-theme-git @@ -0,0 +1 @@ +An Flat Gtk+ theme based on Material Design \ No newline at end of file diff --git a/usr/share/sofirem/cache/layan-kde-git b/usr/share/sofirem/cache/layan-kde-git new file mode 100644 index 0000000..8f279ef --- /dev/null +++ b/usr/share/sofirem/cache/layan-kde-git @@ -0,0 +1 @@ +A flat Design theme for KDE Plasma desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/leafpad b/usr/share/sofirem/cache/leafpad new file mode 100644 index 0000000..7a07995 --- /dev/null +++ b/usr/share/sofirem/cache/leafpad @@ -0,0 +1 @@ +A notepad clone for GTK+ 2.0 \ No newline at end of file diff --git a/usr/share/sofirem/cache/leftwm-dev-git b/usr/share/sofirem/cache/leftwm-dev-git new file mode 100644 index 0000000..876a845 --- /dev/null +++ b/usr/share/sofirem/cache/leftwm-dev-git @@ -0,0 +1 @@ +Leftwm - A tiling window manager for the adventurer \ No newline at end of file diff --git a/usr/share/sofirem/cache/leftwm-theme-git b/usr/share/sofirem/cache/leftwm-theme-git new file mode 100644 index 0000000..5feb078 --- /dev/null +++ b/usr/share/sofirem/cache/leftwm-theme-git @@ -0,0 +1 @@ +Theme manager for LeftWM \ No newline at end of file diff --git a/usr/share/sofirem/cache/legendary b/usr/share/sofirem/cache/legendary new file mode 100644 index 0000000..adfef39 --- /dev/null +++ b/usr/share/sofirem/cache/legendary @@ -0,0 +1 @@ +A free and open-source replacement for the Epic Games Launcher \ No newline at end of file diff --git a/usr/share/sofirem/cache/lf b/usr/share/sofirem/cache/lf new file mode 100644 index 0000000..84c747c --- /dev/null +++ b/usr/share/sofirem/cache/lf @@ -0,0 +1 @@ +A terminal file manager inspired by ranger \ No newline at end of file diff --git a/usr/share/sofirem/cache/libertinus-font b/usr/share/sofirem/cache/libertinus-font new file mode 100644 index 0000000..e147e83 --- /dev/null +++ b/usr/share/sofirem/cache/libertinus-font @@ -0,0 +1 @@ +Fonts based on Linux Libertine/Biolinum, with extended math support \ No newline at end of file diff --git a/usr/share/sofirem/cache/libreoffice-fresh b/usr/share/sofirem/cache/libreoffice-fresh new file mode 100644 index 0000000..b9ab4af --- /dev/null +++ b/usr/share/sofirem/cache/libreoffice-fresh @@ -0,0 +1 @@ +LibreOffice branch which contains new features and program enhancements \ No newline at end of file diff --git a/usr/share/sofirem/cache/libreoffice-still b/usr/share/sofirem/cache/libreoffice-still new file mode 100644 index 0000000..89ef654 --- /dev/null +++ b/usr/share/sofirem/cache/libreoffice-still @@ -0,0 +1 @@ +LibreOffice maintenance branch \ No newline at end of file diff --git a/usr/share/sofirem/cache/librewolf-bin b/usr/share/sofirem/cache/librewolf-bin new file mode 100644 index 0000000..408f62f --- /dev/null +++ b/usr/share/sofirem/cache/librewolf-bin @@ -0,0 +1 @@ +Community-maintained fork of Firefox, focused on privacy, security and freedom. \ No newline at end of file diff --git a/usr/share/sofirem/cache/liferea b/usr/share/sofirem/cache/liferea new file mode 100644 index 0000000..b99389d --- /dev/null +++ b/usr/share/sofirem/cache/liferea @@ -0,0 +1 @@ +A desktop news aggregator for online news feeds and weblogs \ No newline at end of file diff --git a/usr/share/sofirem/cache/light b/usr/share/sofirem/cache/light new file mode 100644 index 0000000..b4b9330 --- /dev/null +++ b/usr/share/sofirem/cache/light @@ -0,0 +1 @@ +Program to easily change brightness on backlight-controllers. \ No newline at end of file diff --git a/usr/share/sofirem/cache/lightdm b/usr/share/sofirem/cache/lightdm new file mode 100644 index 0000000..bbfaf50 --- /dev/null +++ b/usr/share/sofirem/cache/lightdm @@ -0,0 +1 @@ +A lightweight display manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/lightdm-gtk-greeter b/usr/share/sofirem/cache/lightdm-gtk-greeter new file mode 100644 index 0000000..0f87125 --- /dev/null +++ b/usr/share/sofirem/cache/lightdm-gtk-greeter @@ -0,0 +1 @@ +GTK+ greeter for LightDM \ No newline at end of file diff --git a/usr/share/sofirem/cache/lightdm-gtk-greeter-settings b/usr/share/sofirem/cache/lightdm-gtk-greeter-settings new file mode 100644 index 0000000..45ca438 --- /dev/null +++ b/usr/share/sofirem/cache/lightdm-gtk-greeter-settings @@ -0,0 +1 @@ +Settings editor for the LightDM GTK+ Greeter \ No newline at end of file diff --git a/usr/share/sofirem/cache/lightdm-slick-greeter b/usr/share/sofirem/cache/lightdm-slick-greeter new file mode 100644 index 0000000..bdde780 --- /dev/null +++ b/usr/share/sofirem/cache/lightdm-slick-greeter @@ -0,0 +1 @@ +A slick-looking LightDM greeter \ No newline at end of file diff --git a/usr/share/sofirem/cache/lightdm-webkit-theme-aether b/usr/share/sofirem/cache/lightdm-webkit-theme-aether new file mode 100644 index 0000000..81f0ba4 --- /dev/null +++ b/usr/share/sofirem/cache/lightdm-webkit-theme-aether @@ -0,0 +1 @@ +A sleek, customizable Archlinux theme for lightdm. \ No newline at end of file diff --git a/usr/share/sofirem/cache/lightdm-webkit2-theme-reactive b/usr/share/sofirem/cache/lightdm-webkit2-theme-reactive new file mode 100644 index 0000000..6fcee66 --- /dev/null +++ b/usr/share/sofirem/cache/lightdm-webkit2-theme-reactive @@ -0,0 +1 @@ +Reactive, A Simple and fast lightdm webkit2 theme for linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux b/usr/share/sofirem/cache/linux new file mode 100644 index 0000000..1c0f6ea --- /dev/null +++ b/usr/share/sofirem/cache/linux @@ -0,0 +1 @@ +The Linux kernel and modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-hardened b/usr/share/sofirem/cache/linux-hardened new file mode 100644 index 0000000..98f0b81 --- /dev/null +++ b/usr/share/sofirem/cache/linux-hardened @@ -0,0 +1 @@ +The Security-Hardened Linux kernel and modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-hardened-headers b/usr/share/sofirem/cache/linux-hardened-headers new file mode 100644 index 0000000..da9df14 --- /dev/null +++ b/usr/share/sofirem/cache/linux-hardened-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Security-Hardened Linux kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-headers b/usr/share/sofirem/cache/linux-headers new file mode 100644 index 0000000..4064a2b --- /dev/null +++ b/usr/share/sofirem/cache/linux-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-lts b/usr/share/sofirem/cache/linux-lts new file mode 100644 index 0000000..e423cba --- /dev/null +++ b/usr/share/sofirem/cache/linux-lts @@ -0,0 +1 @@ +The LTS Linux kernel and modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-lts-headers b/usr/share/sofirem/cache/linux-lts-headers new file mode 100644 index 0000000..09ed7f4 --- /dev/null +++ b/usr/share/sofirem/cache/linux-lts-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the LTS Linux kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-rt b/usr/share/sofirem/cache/linux-rt new file mode 100644 index 0000000..967e01f --- /dev/null +++ b/usr/share/sofirem/cache/linux-rt @@ -0,0 +1 @@ +The Linux RT kernel and modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-rt-headers b/usr/share/sofirem/cache/linux-rt-headers new file mode 100644 index 0000000..cbeade6 --- /dev/null +++ b/usr/share/sofirem/cache/linux-rt-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux RT kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-rt-lts b/usr/share/sofirem/cache/linux-rt-lts new file mode 100644 index 0000000..d2f4a1f --- /dev/null +++ b/usr/share/sofirem/cache/linux-rt-lts @@ -0,0 +1 @@ +The Linux RT LTS kernel and modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-rt-lts-headers b/usr/share/sofirem/cache/linux-rt-lts-headers new file mode 100644 index 0000000..5bd9be8 --- /dev/null +++ b/usr/share/sofirem/cache/linux-rt-lts-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux RT LTS kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-wifi-hotspot b/usr/share/sofirem/cache/linux-wifi-hotspot new file mode 100644 index 0000000..1d42f23 --- /dev/null +++ b/usr/share/sofirem/cache/linux-wifi-hotspot @@ -0,0 +1 @@ +Feature-rich wifi hotspot creator \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod b/usr/share/sofirem/cache/linux-xanmod new file mode 100644 index 0000000..3d6cbfb --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod @@ -0,0 +1 @@ +The Linux kernel and modules with Xanmod patches \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod-anbox b/usr/share/sofirem/cache/linux-xanmod-anbox new file mode 100644 index 0000000..e8df66c --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod-anbox @@ -0,0 +1 @@ +The Linux kernel and modules with Xanmod patches and ashmem and binder enabled \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod-anbox-headers b/usr/share/sofirem/cache/linux-xanmod-anbox-headers new file mode 100644 index 0000000..c4390f7 --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod-anbox-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux Xanmod with ashmem and binder enabled for Anbox - Current Stable (CURRENT) kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod-headers b/usr/share/sofirem/cache/linux-xanmod-headers new file mode 100644 index 0000000..20e98c1 --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux Xanmod - Current Stable (CURRENT) kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod-lts b/usr/share/sofirem/cache/linux-xanmod-lts new file mode 100644 index 0000000..3d6cbfb --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod-lts @@ -0,0 +1 @@ +The Linux kernel and modules with Xanmod patches \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod-lts-headers b/usr/share/sofirem/cache/linux-xanmod-lts-headers new file mode 100644 index 0000000..3c201e9 --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod-lts-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux Xanmod LTS kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod-rt b/usr/share/sofirem/cache/linux-xanmod-rt new file mode 100644 index 0000000..3d6cbfb --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod-rt @@ -0,0 +1 @@ +The Linux kernel and modules with Xanmod patches \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod-rt-headers b/usr/share/sofirem/cache/linux-xanmod-rt-headers new file mode 100644 index 0000000..6423e36 --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod-rt-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux Xanmod real-time version kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod-tt b/usr/share/sofirem/cache/linux-xanmod-tt new file mode 100644 index 0000000..3d6cbfb --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod-tt @@ -0,0 +1 @@ +The Linux kernel and modules with Xanmod patches \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-xanmod-tt-headers b/usr/share/sofirem/cache/linux-xanmod-tt-headers new file mode 100644 index 0000000..18fb1cc --- /dev/null +++ b/usr/share/sofirem/cache/linux-xanmod-tt-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux Xanmod. Development branch with the Task Type CPU Scheduler by Hamad Al Marri kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-zen b/usr/share/sofirem/cache/linux-zen new file mode 100644 index 0000000..c530b6c --- /dev/null +++ b/usr/share/sofirem/cache/linux-zen @@ -0,0 +1 @@ +The Linux ZEN kernel and modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/linux-zen-headers b/usr/share/sofirem/cache/linux-zen-headers new file mode 100644 index 0000000..4228aa9 --- /dev/null +++ b/usr/share/sofirem/cache/linux-zen-headers @@ -0,0 +1 @@ +Headers and scripts for building modules for the Linux ZEN kernel \ No newline at end of file diff --git a/usr/share/sofirem/cache/lm_sensors b/usr/share/sofirem/cache/lm_sensors new file mode 100644 index 0000000..253ea66 --- /dev/null +++ b/usr/share/sofirem/cache/lm_sensors @@ -0,0 +1 @@ +Collection of user space tools for general SMBus access and hardware monitoring \ No newline at end of file diff --git a/usr/share/sofirem/cache/lmms b/usr/share/sofirem/cache/lmms new file mode 100644 index 0000000..1657618 --- /dev/null +++ b/usr/share/sofirem/cache/lmms @@ -0,0 +1 @@ +The Linux MultiMedia Studio \ No newline at end of file diff --git a/usr/share/sofirem/cache/lohit-fonts b/usr/share/sofirem/cache/lohit-fonts new file mode 100644 index 0000000..f58085c --- /dev/null +++ b/usr/share/sofirem/cache/lohit-fonts @@ -0,0 +1 @@ +Indic TrueType fonts from Fedora Project \ No newline at end of file diff --git a/usr/share/sofirem/cache/lolcat b/usr/share/sofirem/cache/lolcat new file mode 100644 index 0000000..16d0486 --- /dev/null +++ b/usr/share/sofirem/cache/lolcat @@ -0,0 +1 @@ +Okay, no unicorns. But rainbows!! \ No newline at end of file diff --git a/usr/share/sofirem/cache/lollypop b/usr/share/sofirem/cache/lollypop new file mode 100644 index 0000000..4213dfe --- /dev/null +++ b/usr/share/sofirem/cache/lollypop @@ -0,0 +1 @@ +Music player for GNOME \ No newline at end of file diff --git a/usr/share/sofirem/cache/losslesscut-bin b/usr/share/sofirem/cache/losslesscut-bin new file mode 100644 index 0000000..69a3115 --- /dev/null +++ b/usr/share/sofirem/cache/losslesscut-bin @@ -0,0 +1 @@ +Crossplatform GUI tool for lossless trimming/cutting of video/audio files \ No newline at end of file diff --git a/usr/share/sofirem/cache/lshw b/usr/share/sofirem/cache/lshw new file mode 100644 index 0000000..1f47800 --- /dev/null +++ b/usr/share/sofirem/cache/lshw @@ -0,0 +1 @@ +A small tool to provide detailed information on the hardware configuration of the machine. \ No newline at end of file diff --git a/usr/share/sofirem/cache/luna-icon-theme-git b/usr/share/sofirem/cache/luna-icon-theme-git new file mode 100644 index 0000000..8aea893 --- /dev/null +++ b/usr/share/sofirem/cache/luna-icon-theme-git @@ -0,0 +1 @@ +Icon pack based on marwaita and papirus icons. \ No newline at end of file diff --git a/usr/share/sofirem/cache/lutris b/usr/share/sofirem/cache/lutris new file mode 100644 index 0000000..d0860cb --- /dev/null +++ b/usr/share/sofirem/cache/lutris @@ -0,0 +1 @@ +Open Gaming Platform \ No newline at end of file diff --git a/usr/share/sofirem/cache/lxappearance b/usr/share/sofirem/cache/lxappearance new file mode 100644 index 0000000..3b203b3 --- /dev/null +++ b/usr/share/sofirem/cache/lxappearance @@ -0,0 +1 @@ +Feature-rich GTK+ theme switcher of the LXDE Desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/lxappearance-obconf b/usr/share/sofirem/cache/lxappearance-obconf new file mode 100644 index 0000000..710faf2 --- /dev/null +++ b/usr/share/sofirem/cache/lxappearance-obconf @@ -0,0 +1 @@ +Plugin for LXAppearance to configure Openbox \ No newline at end of file diff --git a/usr/share/sofirem/cache/lxdm b/usr/share/sofirem/cache/lxdm new file mode 100644 index 0000000..62e0e11 --- /dev/null +++ b/usr/share/sofirem/cache/lxdm @@ -0,0 +1 @@ +Lightweight X11 Display Manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/lxmusic b/usr/share/sofirem/cache/lxmusic new file mode 100644 index 0000000..01cfce7 --- /dev/null +++ b/usr/share/sofirem/cache/lxmusic @@ -0,0 +1 @@ +Lightweight music player (XMMS2 client) \ No newline at end of file diff --git a/usr/share/sofirem/cache/lxqt-arc-dark-theme-git b/usr/share/sofirem/cache/lxqt-arc-dark-theme-git new file mode 100644 index 0000000..9fe90cc --- /dev/null +++ b/usr/share/sofirem/cache/lxqt-arc-dark-theme-git @@ -0,0 +1 @@ +A dark theme for LXQt based on Arc \ No newline at end of file diff --git a/usr/share/sofirem/cache/lxrandr b/usr/share/sofirem/cache/lxrandr new file mode 100644 index 0000000..dbeab43 --- /dev/null +++ b/usr/share/sofirem/cache/lxrandr @@ -0,0 +1 @@ +Monitor configuration tool (part of LXDE) \ No newline at end of file diff --git a/usr/share/sofirem/cache/lxterminal b/usr/share/sofirem/cache/lxterminal new file mode 100644 index 0000000..e625a92 --- /dev/null +++ b/usr/share/sofirem/cache/lxterminal @@ -0,0 +1 @@ +VTE-based terminal emulator (part of LXDE) \ No newline at end of file diff --git a/usr/share/sofirem/cache/ly b/usr/share/sofirem/cache/ly new file mode 100644 index 0000000..594eb76 --- /dev/null +++ b/usr/share/sofirem/cache/ly @@ -0,0 +1 @@ +TUI display manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/mailspring b/usr/share/sofirem/cache/mailspring new file mode 100644 index 0000000..744d358 --- /dev/null +++ b/usr/share/sofirem/cache/mailspring @@ -0,0 +1 @@ +A beautiful, fast and maintained fork of Nylas Mail by one of the original authors. \ No newline at end of file diff --git a/usr/share/sofirem/cache/makemkv b/usr/share/sofirem/cache/makemkv new file mode 100644 index 0000000..f4769c1 --- /dev/null +++ b/usr/share/sofirem/cache/makemkv @@ -0,0 +1 @@ +DVD and Blu-ray to MKV converter \ No newline at end of file diff --git a/usr/share/sofirem/cache/mangohud b/usr/share/sofirem/cache/mangohud new file mode 100644 index 0000000..0b9467d --- /dev/null +++ b/usr/share/sofirem/cache/mangohud @@ -0,0 +1 @@ +A Vulkan overlay layer for monitoring FPS, temperatures, CPU/GPU load and more. \ No newline at end of file diff --git a/usr/share/sofirem/cache/mari0 b/usr/share/sofirem/cache/mari0 new file mode 100644 index 0000000..0de3981 --- /dev/null +++ b/usr/share/sofirem/cache/mari0 @@ -0,0 +1 @@ +The Mario game with Portal gun mechanics \ No newline at end of file diff --git a/usr/share/sofirem/cache/mate-control-center b/usr/share/sofirem/cache/mate-control-center new file mode 100644 index 0000000..25aa221 --- /dev/null +++ b/usr/share/sofirem/cache/mate-control-center @@ -0,0 +1 @@ +The Control Center for MATE \ No newline at end of file diff --git a/usr/share/sofirem/cache/mate-desktop b/usr/share/sofirem/cache/mate-desktop new file mode 100644 index 0000000..f20c0da --- /dev/null +++ b/usr/share/sofirem/cache/mate-desktop @@ -0,0 +1 @@ +Library with common API for various MATE modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/mate-menus b/usr/share/sofirem/cache/mate-menus new file mode 100644 index 0000000..4f8f302 --- /dev/null +++ b/usr/share/sofirem/cache/mate-menus @@ -0,0 +1 @@ +MATE menu specifications \ No newline at end of file diff --git a/usr/share/sofirem/cache/mate-system-monitor b/usr/share/sofirem/cache/mate-system-monitor new file mode 100644 index 0000000..c24772e --- /dev/null +++ b/usr/share/sofirem/cache/mate-system-monitor @@ -0,0 +1 @@ +A system monitor for MATE \ No newline at end of file diff --git a/usr/share/sofirem/cache/mate-terminal b/usr/share/sofirem/cache/mate-terminal new file mode 100644 index 0000000..8035e95 --- /dev/null +++ b/usr/share/sofirem/cache/mate-terminal @@ -0,0 +1 @@ +The MATE Terminal Emulator \ No newline at end of file diff --git a/usr/share/sofirem/cache/mate-tweak b/usr/share/sofirem/cache/mate-tweak new file mode 100644 index 0000000..4ce6be0 --- /dev/null +++ b/usr/share/sofirem/cache/mate-tweak @@ -0,0 +1 @@ +Tweak tool for MATE (fork of MintDesktop) \ No newline at end of file diff --git a/usr/share/sofirem/cache/materia-gtk-theme b/usr/share/sofirem/cache/materia-gtk-theme new file mode 100644 index 0000000..11b7623 --- /dev/null +++ b/usr/share/sofirem/cache/materia-gtk-theme @@ -0,0 +1 @@ +A Material Design theme for GNOME/GTK+ based desktop environments \ No newline at end of file diff --git a/usr/share/sofirem/cache/materia-kde b/usr/share/sofirem/cache/materia-kde new file mode 100644 index 0000000..57aaa48 --- /dev/null +++ b/usr/share/sofirem/cache/materia-kde @@ -0,0 +1 @@ +Materia theme for KDE Plasma 5 \ No newline at end of file diff --git a/usr/share/sofirem/cache/mc b/usr/share/sofirem/cache/mc new file mode 100644 index 0000000..29d490d --- /dev/null +++ b/usr/share/sofirem/cache/mc @@ -0,0 +1 @@ +A file manager that emulates Norton Commander \ No newline at end of file diff --git a/usr/share/sofirem/cache/mcomix b/usr/share/sofirem/cache/mcomix new file mode 100644 index 0000000..e74800d --- /dev/null +++ b/usr/share/sofirem/cache/mcomix @@ -0,0 +1 @@ +A user-friendly, customizable image viewer specifically designed to handle comic books \ No newline at end of file diff --git a/usr/share/sofirem/cache/mediainfo-gui b/usr/share/sofirem/cache/mediainfo-gui new file mode 100644 index 0000000..9f930d1 --- /dev/null +++ b/usr/share/sofirem/cache/mediainfo-gui @@ -0,0 +1 @@ +Supplies technical and tag information about a video or audio file (GUI interface) \ No newline at end of file diff --git a/usr/share/sofirem/cache/megasync-bin b/usr/share/sofirem/cache/megasync-bin new file mode 100644 index 0000000..f3b7478 --- /dev/null +++ b/usr/share/sofirem/cache/megasync-bin @@ -0,0 +1 @@ +Easy automated syncing between your computers and your MEGA cloud drive \ No newline at end of file diff --git a/usr/share/sofirem/cache/meld b/usr/share/sofirem/cache/meld new file mode 100644 index 0000000..dce58bb --- /dev/null +++ b/usr/share/sofirem/cache/meld @@ -0,0 +1 @@ +Compare files, directories and working copies \ No newline at end of file diff --git a/usr/share/sofirem/cache/micro b/usr/share/sofirem/cache/micro new file mode 100644 index 0000000..8209845 --- /dev/null +++ b/usr/share/sofirem/cache/micro @@ -0,0 +1 @@ +Modern and intuitive terminal-based text editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/midori b/usr/share/sofirem/cache/midori new file mode 100644 index 0000000..19a04c1 --- /dev/null +++ b/usr/share/sofirem/cache/midori @@ -0,0 +1 @@ +Lightweight web browser \ No newline at end of file diff --git a/usr/share/sofirem/cache/min b/usr/share/sofirem/cache/min new file mode 100644 index 0000000..1e7ffcc --- /dev/null +++ b/usr/share/sofirem/cache/min @@ -0,0 +1 @@ +A fast, minimal browser that protects your privacy \ No newline at end of file diff --git a/usr/share/sofirem/cache/minecraft-launcher b/usr/share/sofirem/cache/minecraft-launcher new file mode 100644 index 0000000..7805086 --- /dev/null +++ b/usr/share/sofirem/cache/minecraft-launcher @@ -0,0 +1 @@ +Official Minecraft Launcher \ No newline at end of file diff --git a/usr/share/sofirem/cache/minigalaxy b/usr/share/sofirem/cache/minigalaxy new file mode 100644 index 0000000..9fc01c1 --- /dev/null +++ b/usr/share/sofirem/cache/minigalaxy @@ -0,0 +1 @@ +A simple GOG client for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/mintlocale b/usr/share/sofirem/cache/mintlocale new file mode 100644 index 0000000..dd7ac77 --- /dev/null +++ b/usr/share/sofirem/cache/mintlocale @@ -0,0 +1 @@ +Language and locale selection tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/mintstick-git b/usr/share/sofirem/cache/mintstick-git new file mode 100644 index 0000000..c84820a --- /dev/null +++ b/usr/share/sofirem/cache/mintstick-git @@ -0,0 +1 @@ +Format or write images to USB sticks (Linux Mint tool) \ No newline at end of file diff --git a/usr/share/sofirem/cache/mkinitcpio-firmware b/usr/share/sofirem/cache/mkinitcpio-firmware new file mode 100644 index 0000000..5e54b86 --- /dev/null +++ b/usr/share/sofirem/cache/mkinitcpio-firmware @@ -0,0 +1 @@ +Optional firmware for the default linux kernel to get rid of the annoying 'WARNING: Possibly missing firmware for module:' messages \ No newline at end of file diff --git a/usr/share/sofirem/cache/mkvtoolnix-gui b/usr/share/sofirem/cache/mkvtoolnix-gui new file mode 100644 index 0000000..3f6b0fb --- /dev/null +++ b/usr/share/sofirem/cache/mkvtoolnix-gui @@ -0,0 +1 @@ +Set of tools to create, edit and inspect Matroska files \ No newline at end of file diff --git a/usr/share/sofirem/cache/modprobed-db b/usr/share/sofirem/cache/modprobed-db new file mode 100644 index 0000000..4665948 --- /dev/null +++ b/usr/share/sofirem/cache/modprobed-db @@ -0,0 +1 @@ +Keeps track of EVERY kernel module ever used - useful for make localmodconfig \ No newline at end of file diff --git a/usr/share/sofirem/cache/modprobed-db-git b/usr/share/sofirem/cache/modprobed-db-git new file mode 100644 index 0000000..6c11e64 --- /dev/null +++ b/usr/share/sofirem/cache/modprobed-db-git @@ -0,0 +1 @@ +Keeps track of EVERY kernel module ever used - useful for those of us who make localmodconfig :) \ No newline at end of file diff --git a/usr/share/sofirem/cache/moka-icon-theme-git b/usr/share/sofirem/cache/moka-icon-theme-git new file mode 100644 index 0000000..979e900 --- /dev/null +++ b/usr/share/sofirem/cache/moka-icon-theme-git @@ -0,0 +1 @@ +An icon theme designed with a minimal, flat style, using simple geometry & colours. \ No newline at end of file diff --git a/usr/share/sofirem/cache/moneydance b/usr/share/sofirem/cache/moneydance new file mode 100644 index 0000000..9d4f609 --- /dev/null +++ b/usr/share/sofirem/cache/moneydance @@ -0,0 +1 @@ +A personal finance manager for Mac, Windows and Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/mousetweaks b/usr/share/sofirem/cache/mousetweaks new file mode 100644 index 0000000..7ccee4f --- /dev/null +++ b/usr/share/sofirem/cache/mousetweaks @@ -0,0 +1 @@ +Mouse accessibility enhancements \ No newline at end of file diff --git a/usr/share/sofirem/cache/mpc b/usr/share/sofirem/cache/mpc new file mode 100644 index 0000000..7f23e45 --- /dev/null +++ b/usr/share/sofirem/cache/mpc @@ -0,0 +1 @@ +Minimalist command line interface to MPD \ No newline at end of file diff --git a/usr/share/sofirem/cache/mpd b/usr/share/sofirem/cache/mpd new file mode 100644 index 0000000..cc6473f --- /dev/null +++ b/usr/share/sofirem/cache/mpd @@ -0,0 +1 @@ +Flexible, powerful, server-side application for playing music \ No newline at end of file diff --git a/usr/share/sofirem/cache/mpv b/usr/share/sofirem/cache/mpv new file mode 100644 index 0000000..50c1cc9 --- /dev/null +++ b/usr/share/sofirem/cache/mpv @@ -0,0 +1 @@ +a free, open source, and cross-platform media player \ No newline at end of file diff --git a/usr/share/sofirem/cache/ms-office-online b/usr/share/sofirem/cache/ms-office-online new file mode 100644 index 0000000..0d3851c --- /dev/null +++ b/usr/share/sofirem/cache/ms-office-online @@ -0,0 +1 @@ +Microsoft Office Suite Online as a native application \ No newline at end of file diff --git a/usr/share/sofirem/cache/mullvad-vpn-bin b/usr/share/sofirem/cache/mullvad-vpn-bin new file mode 100644 index 0000000..3e76e55 --- /dev/null +++ b/usr/share/sofirem/cache/mullvad-vpn-bin @@ -0,0 +1 @@ +The Mullvad VPN client app for desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/multimc-git b/usr/share/sofirem/cache/multimc-git new file mode 100644 index 0000000..de61a38 --- /dev/null +++ b/usr/share/sofirem/cache/multimc-git @@ -0,0 +1 @@ +Minecraft launcher with ability to manage multiple instances. Includes old name/icons and ability to sign in with a Microsoft account. \ No newline at end of file diff --git a/usr/share/sofirem/cache/mumble b/usr/share/sofirem/cache/mumble new file mode 100644 index 0000000..ed28a3e --- /dev/null +++ b/usr/share/sofirem/cache/mumble @@ -0,0 +1 @@ +An Open Source, low-latency, high quality voice chat software (client) \ No newline at end of file diff --git a/usr/share/sofirem/cache/nautilus b/usr/share/sofirem/cache/nautilus new file mode 100644 index 0000000..de633d5 --- /dev/null +++ b/usr/share/sofirem/cache/nautilus @@ -0,0 +1 @@ +Default file manager for GNOME \ No newline at end of file diff --git a/usr/share/sofirem/cache/nautilus-open-any-terminal b/usr/share/sofirem/cache/nautilus-open-any-terminal new file mode 100644 index 0000000..9ba2348 --- /dev/null +++ b/usr/share/sofirem/cache/nautilus-open-any-terminal @@ -0,0 +1 @@ +context-menu entry for opening other terminal in nautilus \ No newline at end of file diff --git a/usr/share/sofirem/cache/ncmpcpp b/usr/share/sofirem/cache/ncmpcpp new file mode 100644 index 0000000..a2b7802 --- /dev/null +++ b/usr/share/sofirem/cache/ncmpcpp @@ -0,0 +1 @@ +Almost exact clone of ncmpc with some new features \ No newline at end of file diff --git a/usr/share/sofirem/cache/nemo b/usr/share/sofirem/cache/nemo new file mode 100644 index 0000000..c4c9f82 --- /dev/null +++ b/usr/share/sofirem/cache/nemo @@ -0,0 +1 @@ +Cinnamon file manager (Nautilus fork) \ No newline at end of file diff --git a/usr/share/sofirem/cache/nemo-fileroller b/usr/share/sofirem/cache/nemo-fileroller new file mode 100644 index 0000000..d0f4690 --- /dev/null +++ b/usr/share/sofirem/cache/nemo-fileroller @@ -0,0 +1 @@ +File archiver extension for Nemo \ No newline at end of file diff --git a/usr/share/sofirem/cache/neochat b/usr/share/sofirem/cache/neochat new file mode 100644 index 0000000..3a5cd3a --- /dev/null +++ b/usr/share/sofirem/cache/neochat @@ -0,0 +1 @@ +A client for matrix, the decentralized communication protocol \ No newline at end of file diff --git a/usr/share/sofirem/cache/neofetch b/usr/share/sofirem/cache/neofetch new file mode 100644 index 0000000..23e398b --- /dev/null +++ b/usr/share/sofirem/cache/neofetch @@ -0,0 +1 @@ +A CLI system information tool written in BASH that supports displaying images. \ No newline at end of file diff --git a/usr/share/sofirem/cache/nerd-fonts-source-code-pro b/usr/share/sofirem/cache/nerd-fonts-source-code-pro new file mode 100644 index 0000000..da84305 --- /dev/null +++ b/usr/share/sofirem/cache/nerd-fonts-source-code-pro @@ -0,0 +1 @@ +Patched font SourceCodePro from nerd-fonts library \ No newline at end of file diff --git a/usr/share/sofirem/cache/netbeans b/usr/share/sofirem/cache/netbeans new file mode 100644 index 0000000..0329882 --- /dev/null +++ b/usr/share/sofirem/cache/netbeans @@ -0,0 +1 @@ +IDE for Java, HTML5, PHP, Groovy, C and C++ \ No newline at end of file diff --git a/usr/share/sofirem/cache/netsurf b/usr/share/sofirem/cache/netsurf new file mode 100644 index 0000000..7eba4de --- /dev/null +++ b/usr/share/sofirem/cache/netsurf @@ -0,0 +1 @@ +Lightweight and fast web browser \ No newline at end of file diff --git a/usr/share/sofirem/cache/neverball b/usr/share/sofirem/cache/neverball new file mode 100644 index 0000000..b0188d1 --- /dev/null +++ b/usr/share/sofirem/cache/neverball @@ -0,0 +1 @@ +3D game similar to Super Monkey Ball or Marble Madness \ No newline at end of file diff --git a/usr/share/sofirem/cache/nextcloud-client b/usr/share/sofirem/cache/nextcloud-client new file mode 100644 index 0000000..9d2683a --- /dev/null +++ b/usr/share/sofirem/cache/nextcloud-client @@ -0,0 +1 @@ +Nextcloud desktop client \ No newline at end of file diff --git a/usr/share/sofirem/cache/nitrogen b/usr/share/sofirem/cache/nitrogen new file mode 100644 index 0000000..3ab70b6 --- /dev/null +++ b/usr/share/sofirem/cache/nitrogen @@ -0,0 +1 @@ +Background browser and setter for X windows \ No newline at end of file diff --git a/usr/share/sofirem/cache/nixieclock b/usr/share/sofirem/cache/nixieclock new file mode 100644 index 0000000..4184961 --- /dev/null +++ b/usr/share/sofirem/cache/nixieclock @@ -0,0 +1 @@ +Simple little desktop clock that displays date and time using nixie tube digits \ No newline at end of file diff --git a/usr/share/sofirem/cache/nnn b/usr/share/sofirem/cache/nnn new file mode 100644 index 0000000..0af4d3f --- /dev/null +++ b/usr/share/sofirem/cache/nnn @@ -0,0 +1 @@ +The fastest terminal file manager ever written \ No newline at end of file diff --git a/usr/share/sofirem/cache/noisetorch b/usr/share/sofirem/cache/noisetorch new file mode 100644 index 0000000..d7ef8a6 --- /dev/null +++ b/usr/share/sofirem/cache/noisetorch @@ -0,0 +1 @@ +Real-time microphone noise suppression on Linux. \ No newline at end of file diff --git a/usr/share/sofirem/cache/nomachine b/usr/share/sofirem/cache/nomachine new file mode 100644 index 0000000..164d8cd --- /dev/null +++ b/usr/share/sofirem/cache/nomachine @@ -0,0 +1 @@ +Remote desktop application \ No newline at end of file diff --git a/usr/share/sofirem/cache/nomacs b/usr/share/sofirem/cache/nomacs new file mode 100644 index 0000000..80077cb --- /dev/null +++ b/usr/share/sofirem/cache/nomacs @@ -0,0 +1 @@ +A Qt image viewer \ No newline at end of file diff --git a/usr/share/sofirem/cache/nomacs-git b/usr/share/sofirem/cache/nomacs-git new file mode 100644 index 0000000..80077cb --- /dev/null +++ b/usr/share/sofirem/cache/nomacs-git @@ -0,0 +1 @@ +A Qt image viewer \ No newline at end of file diff --git a/usr/share/sofirem/cache/nomacs-qt6-git b/usr/share/sofirem/cache/nomacs-qt6-git new file mode 100644 index 0000000..80077cb --- /dev/null +++ b/usr/share/sofirem/cache/nomacs-qt6-git @@ -0,0 +1 @@ +A Qt image viewer \ No newline at end of file diff --git a/usr/share/sofirem/cache/nordic-kde-git b/usr/share/sofirem/cache/nordic-kde-git new file mode 100644 index 0000000..8e456e6 --- /dev/null +++ b/usr/share/sofirem/cache/nordic-kde-git @@ -0,0 +1 @@ +Theme for KDE Plasma 5 using the awesome Nord color pallete \ No newline at end of file diff --git a/usr/share/sofirem/cache/nordpass-bin b/usr/share/sofirem/cache/nordpass-bin new file mode 100644 index 0000000..fff2813 --- /dev/null +++ b/usr/share/sofirem/cache/nordpass-bin @@ -0,0 +1 @@ +Secure and intuitive password manager (snap release) \ No newline at end of file diff --git a/usr/share/sofirem/cache/nordtray-bin b/usr/share/sofirem/cache/nordtray-bin new file mode 100644 index 0000000..a35a5b7 --- /dev/null +++ b/usr/share/sofirem/cache/nordtray-bin @@ -0,0 +1 @@ +Nordvpn tray icon \ No newline at end of file diff --git a/usr/share/sofirem/cache/nordvpn-bin b/usr/share/sofirem/cache/nordvpn-bin new file mode 100644 index 0000000..cffb8ea --- /dev/null +++ b/usr/share/sofirem/cache/nordvpn-bin @@ -0,0 +1 @@ +NordVPN CLI tool for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/nordzy-icon-theme-git b/usr/share/sofirem/cache/nordzy-icon-theme-git new file mode 100644 index 0000000..208ffad --- /dev/null +++ b/usr/share/sofirem/cache/nordzy-icon-theme-git @@ -0,0 +1 @@ +Nordzy is a free and open source icon theme for Linux desktops using the Nord color palette from Arctic Ice Studio and based on WhiteSur and Numix Icon Theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/notepadqq b/usr/share/sofirem/cache/notepadqq new file mode 100644 index 0000000..5cd259a --- /dev/null +++ b/usr/share/sofirem/cache/notepadqq @@ -0,0 +1 @@ +Notepad++-like text editor for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/noto-fonts b/usr/share/sofirem/cache/noto-fonts new file mode 100644 index 0000000..2fe743d --- /dev/null +++ b/usr/share/sofirem/cache/noto-fonts @@ -0,0 +1 @@ +Google Noto TTF fonts \ No newline at end of file diff --git a/usr/share/sofirem/cache/noto-fonts-emoji b/usr/share/sofirem/cache/noto-fonts-emoji new file mode 100644 index 0000000..ecc0922 --- /dev/null +++ b/usr/share/sofirem/cache/noto-fonts-emoji @@ -0,0 +1 @@ +Google Noto emoji fonts \ No newline at end of file diff --git a/usr/share/sofirem/cache/numix-circle-arc-icons-git b/usr/share/sofirem/cache/numix-circle-arc-icons-git new file mode 100644 index 0000000..b9a01a6 --- /dev/null +++ b/usr/share/sofirem/cache/numix-circle-arc-icons-git @@ -0,0 +1 @@ +Install Numix and Numix Circle. Numix icons combined with the Arc folders \ No newline at end of file diff --git a/usr/share/sofirem/cache/numix-circle-icon-theme-git b/usr/share/sofirem/cache/numix-circle-icon-theme-git new file mode 100644 index 0000000..a02b385 --- /dev/null +++ b/usr/share/sofirem/cache/numix-circle-icon-theme-git @@ -0,0 +1 @@ +Circle icon theme from the Numix project \ No newline at end of file diff --git a/usr/share/sofirem/cache/numix-gtk-theme-git b/usr/share/sofirem/cache/numix-gtk-theme-git new file mode 100644 index 0000000..0354e66 --- /dev/null +++ b/usr/share/sofirem/cache/numix-gtk-theme-git @@ -0,0 +1 @@ +A flat and light theme with a modern look (GNOME, Openbox, Unity, Xfce) \ No newline at end of file diff --git a/usr/share/sofirem/cache/numix-icon-theme-git b/usr/share/sofirem/cache/numix-icon-theme-git new file mode 100644 index 0000000..a546693 --- /dev/null +++ b/usr/share/sofirem/cache/numix-icon-theme-git @@ -0,0 +1 @@ +Base icon theme from the Numix project \ No newline at end of file diff --git a/usr/share/sofirem/cache/numix-kde-theme-git b/usr/share/sofirem/cache/numix-kde-theme-git new file mode 100644 index 0000000..614297c --- /dev/null +++ b/usr/share/sofirem/cache/numix-kde-theme-git @@ -0,0 +1 @@ +Numix pack for KDE Plasma5 - Git version \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvflash b/usr/share/sofirem/cache/nvflash new file mode 100644 index 0000000..223e6b6 --- /dev/null +++ b/usr/share/sofirem/cache/nvflash @@ -0,0 +1 @@ +A tool to update the the firmware of Nvidia display adapters. \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvidia b/usr/share/sofirem/cache/nvidia new file mode 100644 index 0000000..a9bce0d --- /dev/null +++ b/usr/share/sofirem/cache/nvidia @@ -0,0 +1 @@ +NVIDIA drivers for linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvidia-dkms b/usr/share/sofirem/cache/nvidia-dkms new file mode 100644 index 0000000..1525959 --- /dev/null +++ b/usr/share/sofirem/cache/nvidia-dkms @@ -0,0 +1 @@ +NVIDIA drivers - module sources \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvidia-lts b/usr/share/sofirem/cache/nvidia-lts new file mode 100644 index 0000000..871f432 --- /dev/null +++ b/usr/share/sofirem/cache/nvidia-lts @@ -0,0 +1 @@ +NVIDIA drivers for linux-lts \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvidia-open b/usr/share/sofirem/cache/nvidia-open new file mode 100644 index 0000000..21c373b --- /dev/null +++ b/usr/share/sofirem/cache/nvidia-open @@ -0,0 +1 @@ +NVIDIA open kernel modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvidia-open-dkms b/usr/share/sofirem/cache/nvidia-open-dkms new file mode 100644 index 0000000..21c373b --- /dev/null +++ b/usr/share/sofirem/cache/nvidia-open-dkms @@ -0,0 +1 @@ +NVIDIA open kernel modules \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvidia-prime b/usr/share/sofirem/cache/nvidia-prime new file mode 100644 index 0000000..4de0c38 --- /dev/null +++ b/usr/share/sofirem/cache/nvidia-prime @@ -0,0 +1 @@ +NVIDIA Prime Render Offload configuration and utilities \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvidia-settings b/usr/share/sofirem/cache/nvidia-settings new file mode 100644 index 0000000..b42c5f2 --- /dev/null +++ b/usr/share/sofirem/cache/nvidia-settings @@ -0,0 +1 @@ +Tool for configuring the NVIDIA graphics driver \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvidia-utils b/usr/share/sofirem/cache/nvidia-utils new file mode 100644 index 0000000..10a4833 --- /dev/null +++ b/usr/share/sofirem/cache/nvidia-utils @@ -0,0 +1 @@ +NVIDIA drivers utilities \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvidia-xrun b/usr/share/sofirem/cache/nvidia-xrun new file mode 100644 index 0000000..7fab681 --- /dev/null +++ b/usr/share/sofirem/cache/nvidia-xrun @@ -0,0 +1 @@ +Script to run dedicated X server with discrete nvidia graphics \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvtop b/usr/share/sofirem/cache/nvtop new file mode 100644 index 0000000..afe94e6 --- /dev/null +++ b/usr/share/sofirem/cache/nvtop @@ -0,0 +1 @@ +An htop like monitoring tool for AMD and NVIDIA GPUs \ No newline at end of file diff --git a/usr/share/sofirem/cache/nvtop-git b/usr/share/sofirem/cache/nvtop-git new file mode 100644 index 0000000..7ed2e46 --- /dev/null +++ b/usr/share/sofirem/cache/nvtop-git @@ -0,0 +1 @@ +A (h)top like task monitor for NVIDIA GPUs \ No newline at end of file diff --git a/usr/share/sofirem/cache/obconf b/usr/share/sofirem/cache/obconf new file mode 100644 index 0000000..d7d6f42 --- /dev/null +++ b/usr/share/sofirem/cache/obconf @@ -0,0 +1 @@ +A GTK+ based configuration tool for the Openbox windowmanager \ No newline at end of file diff --git a/usr/share/sofirem/cache/obconf-qt b/usr/share/sofirem/cache/obconf-qt new file mode 100644 index 0000000..6e412f8 --- /dev/null +++ b/usr/share/sofirem/cache/obconf-qt @@ -0,0 +1 @@ +Openbox configuration tool. Qt port of ObConf \ No newline at end of file diff --git a/usr/share/sofirem/cache/obkey b/usr/share/sofirem/cache/obkey new file mode 100644 index 0000000..6b3ee52 --- /dev/null +++ b/usr/share/sofirem/cache/obkey @@ -0,0 +1 @@ +Openbox Key Editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/obmenu-generator b/usr/share/sofirem/cache/obmenu-generator new file mode 100644 index 0000000..9a81e6c --- /dev/null +++ b/usr/share/sofirem/cache/obmenu-generator @@ -0,0 +1 @@ +A fast pipe/static menu generator for the Openbox Window Manager (with icons support). \ No newline at end of file diff --git a/usr/share/sofirem/cache/obmenu3 b/usr/share/sofirem/cache/obmenu3 new file mode 100644 index 0000000..1f17296 --- /dev/null +++ b/usr/share/sofirem/cache/obmenu3 @@ -0,0 +1 @@ +Openbox menu editor - replacement of obmenu \ No newline at end of file diff --git a/usr/share/sofirem/cache/obs-studio b/usr/share/sofirem/cache/obs-studio new file mode 100644 index 0000000..2129790 --- /dev/null +++ b/usr/share/sofirem/cache/obs-studio @@ -0,0 +1 @@ +Free, open source software for live streaming and recording \ No newline at end of file diff --git a/usr/share/sofirem/cache/obsidian-icon-theme b/usr/share/sofirem/cache/obsidian-icon-theme new file mode 100644 index 0000000..eea27f2 --- /dev/null +++ b/usr/share/sofirem/cache/obsidian-icon-theme @@ -0,0 +1 @@ +Obsidian Icon Theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/ocs-url b/usr/share/sofirem/cache/ocs-url new file mode 100644 index 0000000..a127a82 --- /dev/null +++ b/usr/share/sofirem/cache/ocs-url @@ -0,0 +1 @@ +An install helper program for items served via OpenCollaborationServices (ocs://). \ No newline at end of file diff --git a/usr/share/sofirem/cache/octopi b/usr/share/sofirem/cache/octopi new file mode 100644 index 0000000..8161b18 --- /dev/null +++ b/usr/share/sofirem/cache/octopi @@ -0,0 +1 @@ +This is Octopi, a powerful Pacman frontend using Qt libs \ No newline at end of file diff --git a/usr/share/sofirem/cache/octopi-notifier-qt5 b/usr/share/sofirem/cache/octopi-notifier-qt5 new file mode 100644 index 0000000..4422268 --- /dev/null +++ b/usr/share/sofirem/cache/octopi-notifier-qt5 @@ -0,0 +1 @@ +Notifier for Octopi using Qt5 libs \ No newline at end of file diff --git a/usr/share/sofirem/cache/oh-my-zsh-git b/usr/share/sofirem/cache/oh-my-zsh-git new file mode 100644 index 0000000..22be9ad --- /dev/null +++ b/usr/share/sofirem/cache/oh-my-zsh-git @@ -0,0 +1 @@ +A community-driven framework for managing your zsh configuration. \ No newline at end of file diff --git a/usr/share/sofirem/cache/oh-my-zsh-powerline-theme-git b/usr/share/sofirem/cache/oh-my-zsh-powerline-theme-git new file mode 100644 index 0000000..9039dbb --- /dev/null +++ b/usr/share/sofirem/cache/oh-my-zsh-powerline-theme-git @@ -0,0 +1 @@ +oh-my-zsh Powerline style theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/okular b/usr/share/sofirem/cache/okular new file mode 100644 index 0000000..bcb0852 --- /dev/null +++ b/usr/share/sofirem/cache/okular @@ -0,0 +1 @@ +Document Viewer \ No newline at end of file diff --git a/usr/share/sofirem/cache/olivia b/usr/share/sofirem/cache/olivia new file mode 100644 index 0000000..31c7fb1 --- /dev/null +++ b/usr/share/sofirem/cache/olivia @@ -0,0 +1 @@ +Elegant Cloud Music Player for Linux Desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/onboard b/usr/share/sofirem/cache/onboard new file mode 100644 index 0000000..b7496a2 --- /dev/null +++ b/usr/share/sofirem/cache/onboard @@ -0,0 +1 @@ +On-screen keyboard useful on tablet PCs or for mobility impaired users \ No newline at end of file diff --git a/usr/share/sofirem/cache/onlyoffice-bin b/usr/share/sofirem/cache/onlyoffice-bin new file mode 100644 index 0000000..c415804 --- /dev/null +++ b/usr/share/sofirem/cache/onlyoffice-bin @@ -0,0 +1 @@ +An office suite that combines text, spreadsheet and presentation editors \ No newline at end of file diff --git a/usr/share/sofirem/cache/ookla-speedtest-bin b/usr/share/sofirem/cache/ookla-speedtest-bin new file mode 100644 index 0000000..c293aab --- /dev/null +++ b/usr/share/sofirem/cache/ookla-speedtest-bin @@ -0,0 +1 @@ +Speedtest CLI by Ookla \ No newline at end of file diff --git a/usr/share/sofirem/cache/open-vm-tools b/usr/share/sofirem/cache/open-vm-tools new file mode 100644 index 0000000..1c550ca --- /dev/null +++ b/usr/share/sofirem/cache/open-vm-tools @@ -0,0 +1 @@ +The Open Virtual Machine Tools (open-vm-tools) are the open source implementation of VMware Tools \ No newline at end of file diff --git a/usr/share/sofirem/cache/openbox b/usr/share/sofirem/cache/openbox new file mode 100644 index 0000000..07f776c --- /dev/null +++ b/usr/share/sofirem/cache/openbox @@ -0,0 +1 @@ +Highly configurable and lightweight X11 window manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/openbox-arc-git b/usr/share/sofirem/cache/openbox-arc-git new file mode 100644 index 0000000..f074d77 --- /dev/null +++ b/usr/share/sofirem/cache/openbox-arc-git @@ -0,0 +1 @@ +An attempt to create Openbox themes to fit with the rest of the Arc theme. (git) \ No newline at end of file diff --git a/usr/share/sofirem/cache/openbox-themes-pambudi-git b/usr/share/sofirem/cache/openbox-themes-pambudi-git new file mode 100644 index 0000000..f050184 --- /dev/null +++ b/usr/share/sofirem/cache/openbox-themes-pambudi-git @@ -0,0 +1 @@ +Openbox themes from Adhi Pambudi \ No newline at end of file diff --git a/usr/share/sofirem/cache/openoffice-bin b/usr/share/sofirem/cache/openoffice-bin new file mode 100644 index 0000000..895ca90 --- /dev/null +++ b/usr/share/sofirem/cache/openoffice-bin @@ -0,0 +1 @@ +The Free and Open Productivity Suite \ No newline at end of file diff --git a/usr/share/sofirem/cache/openscad b/usr/share/sofirem/cache/openscad new file mode 100644 index 0000000..6d875b8 --- /dev/null +++ b/usr/share/sofirem/cache/openscad @@ -0,0 +1 @@ +The programmers solid 3D CAD modeller \ No newline at end of file diff --git a/usr/share/sofirem/cache/openshot b/usr/share/sofirem/cache/openshot new file mode 100644 index 0000000..234fd23 --- /dev/null +++ b/usr/share/sofirem/cache/openshot @@ -0,0 +1 @@ +An award-winning free and open-source video editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/opera b/usr/share/sofirem/cache/opera new file mode 100644 index 0000000..9148fa8 --- /dev/null +++ b/usr/share/sofirem/cache/opera @@ -0,0 +1 @@ +A fast and secure web browser \ No newline at end of file diff --git a/usr/share/sofirem/cache/optimus-manager b/usr/share/sofirem/cache/optimus-manager new file mode 100644 index 0000000..a43b30c --- /dev/null +++ b/usr/share/sofirem/cache/optimus-manager @@ -0,0 +1 @@ +Management utility to handle GPU switching for Optimus laptops \ No newline at end of file diff --git a/usr/share/sofirem/cache/optimus-manager-qt b/usr/share/sofirem/cache/optimus-manager-qt new file mode 100644 index 0000000..41fda66 --- /dev/null +++ b/usr/share/sofirem/cache/optimus-manager-qt @@ -0,0 +1 @@ +A Qt interface for Optimus Manager that allows to configure and switch GPUs on Optimus laptops using the tray menu \ No newline at end of file diff --git a/usr/share/sofirem/cache/oranchelo-icon-theme-git b/usr/share/sofirem/cache/oranchelo-icon-theme-git new file mode 100644 index 0000000..c933845 --- /dev/null +++ b/usr/share/sofirem/cache/oranchelo-icon-theme-git @@ -0,0 +1 @@ +Oranchelo is a flat-design icon theme for XFCE4 based on Super Flat Remix and inspired by "Corny icons" by Patryk Goworowski. (git version) \ No newline at end of file diff --git a/usr/share/sofirem/cache/orca b/usr/share/sofirem/cache/orca new file mode 100644 index 0000000..3a3c9e4 --- /dev/null +++ b/usr/share/sofirem/cache/orca @@ -0,0 +1 @@ +Screen reader for individuals who are blind or visually impaired \ No newline at end of file diff --git a/usr/share/sofirem/cache/orchis-kde-theme-git b/usr/share/sofirem/cache/orchis-kde-theme-git new file mode 100644 index 0000000..f1b8aaa --- /dev/null +++ b/usr/share/sofirem/cache/orchis-kde-theme-git @@ -0,0 +1 @@ +A materia Design theme for KDE Plasma desktop. \ No newline at end of file diff --git a/usr/share/sofirem/cache/orchis-theme-git b/usr/share/sofirem/cache/orchis-theme-git new file mode 100644 index 0000000..94241b8 --- /dev/null +++ b/usr/share/sofirem/cache/orchis-theme-git @@ -0,0 +1 @@ +A Material Design theme for GNOME/GTK based desktop environments. \ No newline at end of file diff --git a/usr/share/sofirem/cache/oxy-neon b/usr/share/sofirem/cache/oxy-neon new file mode 100644 index 0000000..8d7fd7d --- /dev/null +++ b/usr/share/sofirem/cache/oxy-neon @@ -0,0 +1 @@ +Stylized oxygen mouse theme created for use with dark desktop and especially for FRUiT's Neon suite. \ No newline at end of file diff --git a/usr/share/sofirem/cache/pacback b/usr/share/sofirem/cache/pacback new file mode 100644 index 0000000..6e8913d --- /dev/null +++ b/usr/share/sofirem/cache/pacback @@ -0,0 +1 @@ +Advanced Version Control for Arch Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/pace b/usr/share/sofirem/cache/pace new file mode 100644 index 0000000..5de7ea5 --- /dev/null +++ b/usr/share/sofirem/cache/pace @@ -0,0 +1 @@ +A simple pacman.conf editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/pace-git b/usr/share/sofirem/cache/pace-git new file mode 100644 index 0000000..5de7ea5 --- /dev/null +++ b/usr/share/sofirem/cache/pace-git @@ -0,0 +1 @@ +A simple pacman.conf editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/packagekit-qt5 b/usr/share/sofirem/cache/packagekit-qt5 new file mode 100644 index 0000000..b2c43ea --- /dev/null +++ b/usr/share/sofirem/cache/packagekit-qt5 @@ -0,0 +1 @@ +Qt5 bindings for PackageKit \ No newline at end of file diff --git a/usr/share/sofirem/cache/pacseek-bin b/usr/share/sofirem/cache/pacseek-bin new file mode 100644 index 0000000..2cdd991 --- /dev/null +++ b/usr/share/sofirem/cache/pacseek-bin @@ -0,0 +1 @@ +A terminal user interface for searching and installing Arch Linux packages (binary version) \ No newline at end of file diff --git a/usr/share/sofirem/cache/pacui b/usr/share/sofirem/cache/pacui new file mode 100644 index 0000000..f6df09b --- /dev/null +++ b/usr/share/sofirem/cache/pacui @@ -0,0 +1 @@ +Bash script providing advanced Pacman and Yay/Pikaur/Aurman/Pakku/Trizen/Paru/Pacaur/Pamac-cli functionality in a simple UI \ No newline at end of file diff --git a/usr/share/sofirem/cache/pacui-git b/usr/share/sofirem/cache/pacui-git new file mode 100644 index 0000000..f6df09b --- /dev/null +++ b/usr/share/sofirem/cache/pacui-git @@ -0,0 +1 @@ +Bash script providing advanced Pacman and Yay/Pikaur/Aurman/Pakku/Trizen/Paru/Pacaur/Pamac-cli functionality in a simple UI \ No newline at end of file diff --git a/usr/share/sofirem/cache/paper-icon-theme b/usr/share/sofirem/cache/paper-icon-theme new file mode 100644 index 0000000..73a7fa8 --- /dev/null +++ b/usr/share/sofirem/cache/paper-icon-theme @@ -0,0 +1 @@ +Paper is an open source desktop theme and icon project by Sam Hewitt \ No newline at end of file diff --git a/usr/share/sofirem/cache/papirus-folders-git b/usr/share/sofirem/cache/papirus-folders-git new file mode 100644 index 0000000..ebbacfe --- /dev/null +++ b/usr/share/sofirem/cache/papirus-folders-git @@ -0,0 +1 @@ +Allows to change the color of folders (git version) \ No newline at end of file diff --git a/usr/share/sofirem/cache/papirus-folders-gui-bin b/usr/share/sofirem/cache/papirus-folders-gui-bin new file mode 100644 index 0000000..277d4ef --- /dev/null +++ b/usr/share/sofirem/cache/papirus-folders-gui-bin @@ -0,0 +1 @@ +A graphical user interface for papirus-folders \ No newline at end of file diff --git a/usr/share/sofirem/cache/papirus-folders-nordic b/usr/share/sofirem/cache/papirus-folders-nordic new file mode 100644 index 0000000..25429f6 --- /dev/null +++ b/usr/share/sofirem/cache/papirus-folders-nordic @@ -0,0 +1 @@ +Icons themes papirus color folder nordic \ No newline at end of file diff --git a/usr/share/sofirem/cache/papirus-icon-theme b/usr/share/sofirem/cache/papirus-icon-theme new file mode 100644 index 0000000..af303fe --- /dev/null +++ b/usr/share/sofirem/cache/papirus-icon-theme @@ -0,0 +1 @@ +Papirus icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/papirus-linux-universe b/usr/share/sofirem/cache/papirus-linux-universe new file mode 100644 index 0000000..fc85de9 --- /dev/null +++ b/usr/share/sofirem/cache/papirus-linux-universe @@ -0,0 +1 @@ +Papirus folder icon set based on distros and the most famous icon themes in the Linux world! \ No newline at end of file diff --git a/usr/share/sofirem/cache/papirus-nord b/usr/share/sofirem/cache/papirus-nord new file mode 100644 index 0000000..085dd27 --- /dev/null +++ b/usr/share/sofirem/cache/papirus-nord @@ -0,0 +1 @@ +Custom colors for folder icons for Papirus Icon Theme! \ No newline at end of file diff --git a/usr/share/sofirem/cache/parcellite b/usr/share/sofirem/cache/parcellite new file mode 100644 index 0000000..214bfb9 --- /dev/null +++ b/usr/share/sofirem/cache/parcellite @@ -0,0 +1 @@ +Lightweight GTK+ clipboard manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/partitionmanager b/usr/share/sofirem/cache/partitionmanager new file mode 100644 index 0000000..51bf8a1 --- /dev/null +++ b/usr/share/sofirem/cache/partitionmanager @@ -0,0 +1 @@ +A KDE utility that allows you to manage disks, partitions, and file systems \ No newline at end of file diff --git a/usr/share/sofirem/cache/paru b/usr/share/sofirem/cache/paru new file mode 100644 index 0000000..4a82294 --- /dev/null +++ b/usr/share/sofirem/cache/paru @@ -0,0 +1 @@ +Feature packed AUR helper \ No newline at end of file diff --git a/usr/share/sofirem/cache/paru-bin b/usr/share/sofirem/cache/paru-bin new file mode 100644 index 0000000..4a82294 --- /dev/null +++ b/usr/share/sofirem/cache/paru-bin @@ -0,0 +1 @@ +Feature packed AUR helper \ No newline at end of file diff --git a/usr/share/sofirem/cache/paru-git b/usr/share/sofirem/cache/paru-git new file mode 100644 index 0000000..4a82294 --- /dev/null +++ b/usr/share/sofirem/cache/paru-git @@ -0,0 +1 @@ +Feature packed AUR helper \ No newline at end of file diff --git a/usr/share/sofirem/cache/pavucontrol-qt b/usr/share/sofirem/cache/pavucontrol-qt new file mode 100644 index 0000000..4e71860 --- /dev/null +++ b/usr/share/sofirem/cache/pavucontrol-qt @@ -0,0 +1 @@ +A Pulseaudio mixer in Qt (port of pavucontrol) \ No newline at end of file diff --git a/usr/share/sofirem/cache/pcmanfm b/usr/share/sofirem/cache/pcmanfm new file mode 100644 index 0000000..c5fcc45 --- /dev/null +++ b/usr/share/sofirem/cache/pcmanfm @@ -0,0 +1 @@ +Extremely fast and lightweight file manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/pdfarranger b/usr/share/sofirem/cache/pdfarranger new file mode 100644 index 0000000..2c24a9e --- /dev/null +++ b/usr/share/sofirem/cache/pdfarranger @@ -0,0 +1 @@ +Helps merge or split PDF documents and rotate, crop and rearrange pages \ No newline at end of file diff --git a/usr/share/sofirem/cache/peek b/usr/share/sofirem/cache/peek new file mode 100644 index 0000000..f14e914 --- /dev/null +++ b/usr/share/sofirem/cache/peek @@ -0,0 +1 @@ +Simple screen recorder with an easy to use interface \ No newline at end of file diff --git a/usr/share/sofirem/cache/perl-checkupdates-aur b/usr/share/sofirem/cache/perl-checkupdates-aur new file mode 100644 index 0000000..5cff60d --- /dev/null +++ b/usr/share/sofirem/cache/perl-checkupdates-aur @@ -0,0 +1 @@ +checkupdates for aur \ No newline at end of file diff --git a/usr/share/sofirem/cache/perl-linux-desktopfiles b/usr/share/sofirem/cache/perl-linux-desktopfiles new file mode 100644 index 0000000..dc33f19 --- /dev/null +++ b/usr/share/sofirem/cache/perl-linux-desktopfiles @@ -0,0 +1 @@ +Linux::DesktopFiles - a very fast Perl module for parsing the Linux desktop files. \ No newline at end of file diff --git a/usr/share/sofirem/cache/perl-www-aur b/usr/share/sofirem/cache/perl-www-aur new file mode 100644 index 0000000..7a5cc5a --- /dev/null +++ b/usr/share/sofirem/cache/perl-www-aur @@ -0,0 +1 @@ +API for the Archlinux User Repository website. \ No newline at end of file diff --git a/usr/share/sofirem/cache/persepolis b/usr/share/sofirem/cache/persepolis new file mode 100644 index 0000000..2b7ea35 --- /dev/null +++ b/usr/share/sofirem/cache/persepolis @@ -0,0 +1 @@ +Qt front-end for aria2 download manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/pfetch b/usr/share/sofirem/cache/pfetch new file mode 100644 index 0000000..33c4f94 --- /dev/null +++ b/usr/share/sofirem/cache/pfetch @@ -0,0 +1 @@ +A pretty system information tool written in POSIX sh. \ No newline at end of file diff --git a/usr/share/sofirem/cache/phinger-cursors b/usr/share/sofirem/cache/phinger-cursors new file mode 100644 index 0000000..1515ae3 --- /dev/null +++ b/usr/share/sofirem/cache/phinger-cursors @@ -0,0 +1 @@ +Most likely the most over-engineered cursor theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/phoronix-test-suite b/usr/share/sofirem/cache/phoronix-test-suite new file mode 100644 index 0000000..24673c2 --- /dev/null +++ b/usr/share/sofirem/cache/phoronix-test-suite @@ -0,0 +1 @@ +The most comprehensive testing and benchmarking platform available for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/picom b/usr/share/sofirem/cache/picom new file mode 100644 index 0000000..3223e7e --- /dev/null +++ b/usr/share/sofirem/cache/picom @@ -0,0 +1 @@ +X compositor that may fix tearing issues \ No newline at end of file diff --git a/usr/share/sofirem/cache/picom-git b/usr/share/sofirem/cache/picom-git new file mode 100644 index 0000000..5ccc18a --- /dev/null +++ b/usr/share/sofirem/cache/picom-git @@ -0,0 +1 @@ +X compositor (fork of compton) (git-version) \ No newline at end of file diff --git a/usr/share/sofirem/cache/picom-ibhagwan-git b/usr/share/sofirem/cache/picom-ibhagwan-git new file mode 100644 index 0000000..199254f --- /dev/null +++ b/usr/share/sofirem/cache/picom-ibhagwan-git @@ -0,0 +1 @@ +iBhagwan's compton|picom fork (X compositor) with dual_kawase blur and rounded corners \ No newline at end of file diff --git a/usr/share/sofirem/cache/picom-jonaburg-git b/usr/share/sofirem/cache/picom-jonaburg-git new file mode 100644 index 0000000..48de4d1 --- /dev/null +++ b/usr/share/sofirem/cache/picom-jonaburg-git @@ -0,0 +1 @@ +jonaburg's picom fork with tryone144's dual_kawase blur and ibhagwan's rounded corners, an X compositor (compton's fork) \ No newline at end of file diff --git a/usr/share/sofirem/cache/pidgin b/usr/share/sofirem/cache/pidgin new file mode 100644 index 0000000..e939457 --- /dev/null +++ b/usr/share/sofirem/cache/pidgin @@ -0,0 +1 @@ +Multi-protocol instant messaging client \ No newline at end of file diff --git a/usr/share/sofirem/cache/pikaur-git b/usr/share/sofirem/cache/pikaur-git new file mode 100644 index 0000000..fe26649 --- /dev/null +++ b/usr/share/sofirem/cache/pikaur-git @@ -0,0 +1 @@ +AUR helper which asks all questions before installing/building. Inspired by pacaur, yaourt and yay. \ No newline at end of file diff --git a/usr/share/sofirem/cache/piper b/usr/share/sofirem/cache/piper new file mode 100644 index 0000000..4d0753d --- /dev/null +++ b/usr/share/sofirem/cache/piper @@ -0,0 +1 @@ +GTK application to configure gaming mice \ No newline at end of file diff --git a/usr/share/sofirem/cache/pipes.sh b/usr/share/sofirem/cache/pipes.sh new file mode 100644 index 0000000..a2bc846 --- /dev/null +++ b/usr/share/sofirem/cache/pipes.sh @@ -0,0 +1 @@ +Animated pipes terminal screensaver \ No newline at end of file diff --git a/usr/share/sofirem/cache/pitivi b/usr/share/sofirem/cache/pitivi new file mode 100644 index 0000000..27dd5e9 --- /dev/null +++ b/usr/share/sofirem/cache/pitivi @@ -0,0 +1 @@ +Editor for audio/video projects using the GStreamer framework \ No newline at end of file diff --git a/usr/share/sofirem/cache/plank b/usr/share/sofirem/cache/plank new file mode 100644 index 0000000..709881c --- /dev/null +++ b/usr/share/sofirem/cache/plank @@ -0,0 +1 @@ +Elegant, simple, clean dock \ No newline at end of file diff --git a/usr/share/sofirem/cache/plata-theme b/usr/share/sofirem/cache/plata-theme new file mode 100644 index 0000000..e96d3f9 --- /dev/null +++ b/usr/share/sofirem/cache/plata-theme @@ -0,0 +1 @@ +A Gtk+ theme based on Material Design Refresh \ No newline at end of file diff --git a/usr/share/sofirem/cache/playonlinux b/usr/share/sofirem/cache/playonlinux new file mode 100644 index 0000000..f1e220a --- /dev/null +++ b/usr/share/sofirem/cache/playonlinux @@ -0,0 +1 @@ +GUI for managing Windows programs under linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/plex-media-player b/usr/share/sofirem/cache/plex-media-player new file mode 100644 index 0000000..13dc428 --- /dev/null +++ b/usr/share/sofirem/cache/plex-media-player @@ -0,0 +1 @@ +Next generation Plex Desktop Client \ No newline at end of file diff --git a/usr/share/sofirem/cache/plex-media-server b/usr/share/sofirem/cache/plex-media-server new file mode 100644 index 0000000..a23ce73 --- /dev/null +++ b/usr/share/sofirem/cache/plex-media-server @@ -0,0 +1 @@ +The back-end media server component of Plex. \ No newline at end of file diff --git a/usr/share/sofirem/cache/polkit-gnome b/usr/share/sofirem/cache/polkit-gnome new file mode 100644 index 0000000..4dde4bb --- /dev/null +++ b/usr/share/sofirem/cache/polkit-gnome @@ -0,0 +1 @@ +Legacy polkit authentication agent for GNOME \ No newline at end of file diff --git a/usr/share/sofirem/cache/polybar b/usr/share/sofirem/cache/polybar new file mode 100644 index 0000000..f95d9a9 --- /dev/null +++ b/usr/share/sofirem/cache/polybar @@ -0,0 +1 @@ +A fast and easy-to-use status bar \ No newline at end of file diff --git a/usr/share/sofirem/cache/power-profiles-daemon b/usr/share/sofirem/cache/power-profiles-daemon new file mode 100644 index 0000000..00c63a6 --- /dev/null +++ b/usr/share/sofirem/cache/power-profiles-daemon @@ -0,0 +1 @@ +Makes power profiles handling available over D-Bus \ No newline at end of file diff --git a/usr/share/sofirem/cache/powerpill b/usr/share/sofirem/cache/powerpill new file mode 100644 index 0000000..b01f935 --- /dev/null +++ b/usr/share/sofirem/cache/powerpill @@ -0,0 +1 @@ +Pacman wrapper for faster downloads. \ No newline at end of file diff --git a/usr/share/sofirem/cache/powertop b/usr/share/sofirem/cache/powertop new file mode 100644 index 0000000..61f729d --- /dev/null +++ b/usr/share/sofirem/cache/powertop @@ -0,0 +1 @@ +A tool to diagnose issues with power consumption and power management \ No newline at end of file diff --git a/usr/share/sofirem/cache/pragha b/usr/share/sofirem/cache/pragha new file mode 100644 index 0000000..947338f --- /dev/null +++ b/usr/share/sofirem/cache/pragha @@ -0,0 +1 @@ +Lightweight GTK music player and manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/privoxy b/usr/share/sofirem/cache/privoxy new file mode 100644 index 0000000..f50dedb --- /dev/null +++ b/usr/share/sofirem/cache/privoxy @@ -0,0 +1 @@ +A web proxy with advanced filtering capabilities. \ No newline at end of file diff --git a/usr/share/sofirem/cache/prot16-xfce4-terminal b/usr/share/sofirem/cache/prot16-xfce4-terminal new file mode 100644 index 0000000..bd0781e --- /dev/null +++ b/usr/share/sofirem/cache/prot16-xfce4-terminal @@ -0,0 +1 @@ +Prot16 collection of themes for Xfce4 terminal \ No newline at end of file diff --git a/usr/share/sofirem/cache/proton-community-updater b/usr/share/sofirem/cache/proton-community-updater new file mode 100644 index 0000000..381be37 --- /dev/null +++ b/usr/share/sofirem/cache/proton-community-updater @@ -0,0 +1 @@ +Script to download and manage Community Proton builds \ No newline at end of file diff --git a/usr/share/sofirem/cache/proton-ge-custom-bin b/usr/share/sofirem/cache/proton-ge-custom-bin new file mode 100644 index 0000000..fb0b48f --- /dev/null +++ b/usr/share/sofirem/cache/proton-ge-custom-bin @@ -0,0 +1 @@ +A fancy custom distribution of Valves Proton with various patches \ No newline at end of file diff --git a/usr/share/sofirem/cache/protontricks b/usr/share/sofirem/cache/protontricks new file mode 100644 index 0000000..c881670 --- /dev/null +++ b/usr/share/sofirem/cache/protontricks @@ -0,0 +1 @@ +A wrapper that does winetricks things for Proton enabled games. \ No newline at end of file diff --git a/usr/share/sofirem/cache/protontricks-git b/usr/share/sofirem/cache/protontricks-git new file mode 100644 index 0000000..c881670 --- /dev/null +++ b/usr/share/sofirem/cache/protontricks-git @@ -0,0 +1 @@ +A wrapper that does winetricks things for Proton enabled games. \ No newline at end of file diff --git a/usr/share/sofirem/cache/protonup-git b/usr/share/sofirem/cache/protonup-git new file mode 100644 index 0000000..9288833 --- /dev/null +++ b/usr/share/sofirem/cache/protonup-git @@ -0,0 +1 @@ +Install and Update Proton-GE \ No newline at end of file diff --git a/usr/share/sofirem/cache/protonup-qt-bin b/usr/share/sofirem/cache/protonup-qt-bin new file mode 100644 index 0000000..6ddf5a1 --- /dev/null +++ b/usr/share/sofirem/cache/protonup-qt-bin @@ -0,0 +1 @@ +Install and manage Proton-GE for Steam and Wine-GE for Lutris with this graphical user interface. \ No newline at end of file diff --git a/usr/share/sofirem/cache/pulsar-bin b/usr/share/sofirem/cache/pulsar-bin new file mode 100644 index 0000000..924d224 --- /dev/null +++ b/usr/share/sofirem/cache/pulsar-bin @@ -0,0 +1 @@ +A community-led hyper-hackable text editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/putty b/usr/share/sofirem/cache/putty new file mode 100644 index 0000000..6575668 --- /dev/null +++ b/usr/share/sofirem/cache/putty @@ -0,0 +1 @@ +A terminal integrated SSH/Telnet client \ No newline at end of file diff --git a/usr/share/sofirem/cache/pycharm-community-edition b/usr/share/sofirem/cache/pycharm-community-edition new file mode 100644 index 0000000..de61791 --- /dev/null +++ b/usr/share/sofirem/cache/pycharm-community-edition @@ -0,0 +1 @@ +Python IDE for Professional Developers \ No newline at end of file diff --git a/usr/share/sofirem/cache/python-psutil b/usr/share/sofirem/cache/python-psutil new file mode 100644 index 0000000..f7a1a4b --- /dev/null +++ b/usr/share/sofirem/cache/python-psutil @@ -0,0 +1 @@ +A cross-platform process and system utilities module for Python \ No newline at end of file diff --git a/usr/share/sofirem/cache/python-pywal b/usr/share/sofirem/cache/python-pywal new file mode 100644 index 0000000..40484c6 --- /dev/null +++ b/usr/share/sofirem/cache/python-pywal @@ -0,0 +1 @@ +Generate and change colorschemes on the fly \ No newline at end of file diff --git a/usr/share/sofirem/cache/python-setuptools b/usr/share/sofirem/cache/python-setuptools new file mode 100644 index 0000000..3761bfb --- /dev/null +++ b/usr/share/sofirem/cache/python-setuptools @@ -0,0 +1 @@ +Easily download, build, install, upgrade, and uninstall Python packages \ No newline at end of file diff --git a/usr/share/sofirem/cache/qbittorrent b/usr/share/sofirem/cache/qbittorrent new file mode 100644 index 0000000..1304125 --- /dev/null +++ b/usr/share/sofirem/cache/qbittorrent @@ -0,0 +1 @@ +An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar \ No newline at end of file diff --git a/usr/share/sofirem/cache/qemu-base b/usr/share/sofirem/cache/qemu-base new file mode 100644 index 0000000..0f838f7 --- /dev/null +++ b/usr/share/sofirem/cache/qemu-base @@ -0,0 +1 @@ +A basic QEMU setup for headless environments \ No newline at end of file diff --git a/usr/share/sofirem/cache/qemu-full b/usr/share/sofirem/cache/qemu-full new file mode 100644 index 0000000..f2783e8 --- /dev/null +++ b/usr/share/sofirem/cache/qemu-full @@ -0,0 +1 @@ +A full QEMU setup \ No newline at end of file diff --git a/usr/share/sofirem/cache/qogir-gtk-theme-git b/usr/share/sofirem/cache/qogir-gtk-theme-git new file mode 100644 index 0000000..b5996e0 --- /dev/null +++ b/usr/share/sofirem/cache/qogir-gtk-theme-git @@ -0,0 +1 @@ +Qogir is a flat Design theme for GTK \ No newline at end of file diff --git a/usr/share/sofirem/cache/qogir-icon-theme b/usr/share/sofirem/cache/qogir-icon-theme new file mode 100644 index 0000000..38b6c74 --- /dev/null +++ b/usr/share/sofirem/cache/qogir-icon-theme @@ -0,0 +1 @@ +A colorful design icon theme for linux desktops \ No newline at end of file diff --git a/usr/share/sofirem/cache/qogir-kde-theme-git b/usr/share/sofirem/cache/qogir-kde-theme-git new file mode 100644 index 0000000..6dc1b9f --- /dev/null +++ b/usr/share/sofirem/cache/qogir-kde-theme-git @@ -0,0 +1 @@ +Qogir kde is a flat Design theme for KDE Plasma desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/qt5-quickcontrols b/usr/share/sofirem/cache/qt5-quickcontrols new file mode 100644 index 0000000..f10ec78 --- /dev/null +++ b/usr/share/sofirem/cache/qt5-quickcontrols @@ -0,0 +1 @@ +Reusable Qt Quick based UI controls to create classic desktop-style user interfaces \ No newline at end of file diff --git a/usr/share/sofirem/cache/qt5-tools b/usr/share/sofirem/cache/qt5-tools new file mode 100644 index 0000000..2364e43 --- /dev/null +++ b/usr/share/sofirem/cache/qt5-tools @@ -0,0 +1 @@ +A cross-platform application and UI framework (Development Tools, QtHelp) \ No newline at end of file diff --git a/usr/share/sofirem/cache/qtcreator b/usr/share/sofirem/cache/qtcreator new file mode 100644 index 0000000..e91281a --- /dev/null +++ b/usr/share/sofirem/cache/qtcreator @@ -0,0 +1 @@ +Lightweight, cross-platform integrated development environment \ No newline at end of file diff --git a/usr/share/sofirem/cache/qtile b/usr/share/sofirem/cache/qtile new file mode 100644 index 0000000..62a7b7a --- /dev/null +++ b/usr/share/sofirem/cache/qtile @@ -0,0 +1 @@ +A full-featured, pure-Python tiling window manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/qtox b/usr/share/sofirem/cache/qtox new file mode 100644 index 0000000..45041d9 --- /dev/null +++ b/usr/share/sofirem/cache/qtox @@ -0,0 +1 @@ +a chat, voice, video, and file transfer IM client using the encrypted peer-to-peer Tox protocol \ No newline at end of file diff --git a/usr/share/sofirem/cache/qtscrcpy b/usr/share/sofirem/cache/qtscrcpy new file mode 100644 index 0000000..09b4131 --- /dev/null +++ b/usr/share/sofirem/cache/qtscrcpy @@ -0,0 +1 @@ +Android real-time screencast control tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/qtwebflix-git b/usr/share/sofirem/cache/qtwebflix-git new file mode 100644 index 0000000..f8db4bb --- /dev/null +++ b/usr/share/sofirem/cache/qtwebflix-git @@ -0,0 +1 @@ +Standalone HD Netflix Browser using qt5-webengine (also supports Amazon prime, HBO Go, Hulu, Crunchy Roll) \ No newline at end of file diff --git a/usr/share/sofirem/cache/quickemu b/usr/share/sofirem/cache/quickemu new file mode 100644 index 0000000..64ff198 --- /dev/null +++ b/usr/share/sofirem/cache/quickemu @@ -0,0 +1 @@ +Quickly create and run optimised Windows, macOS and Linux desktop virtual machines. \ No newline at end of file diff --git a/usr/share/sofirem/cache/quickemu-git b/usr/share/sofirem/cache/quickemu-git new file mode 100644 index 0000000..f7d044d --- /dev/null +++ b/usr/share/sofirem/cache/quickemu-git @@ -0,0 +1 @@ +Simple shell script to "manage" Qemu virtual machines. \ No newline at end of file diff --git a/usr/share/sofirem/cache/quickgui-bin b/usr/share/sofirem/cache/quickgui-bin new file mode 100644 index 0000000..62fa656 --- /dev/null +++ b/usr/share/sofirem/cache/quickgui-bin @@ -0,0 +1 @@ +A Flutter frontend for quickget and quickemu \ No newline at end of file diff --git a/usr/share/sofirem/cache/qutebrowser b/usr/share/sofirem/cache/qutebrowser new file mode 100644 index 0000000..e1ef447 --- /dev/null +++ b/usr/share/sofirem/cache/qutebrowser @@ -0,0 +1 @@ +A keyboard-driven, vim-like browser based on PyQt5 \ No newline at end of file diff --git a/usr/share/sofirem/cache/radiotray b/usr/share/sofirem/cache/radiotray new file mode 100644 index 0000000..cd4beb4 --- /dev/null +++ b/usr/share/sofirem/cache/radiotray @@ -0,0 +1 @@ +An online radio streaming player that runs on a Linux system tray. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ranger b/usr/share/sofirem/cache/ranger new file mode 100644 index 0000000..78d9eca --- /dev/null +++ b/usr/share/sofirem/cache/ranger @@ -0,0 +1 @@ +Simple, vim-like file manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/rare b/usr/share/sofirem/cache/rare new file mode 100644 index 0000000..422bcc0 --- /dev/null +++ b/usr/share/sofirem/cache/rare @@ -0,0 +1 @@ +A GUI for legendary, an open source replacement for Epic Games Launcher \ No newline at end of file diff --git a/usr/share/sofirem/cache/rate-mirrors b/usr/share/sofirem/cache/rate-mirrors new file mode 100644 index 0000000..c53e807 --- /dev/null +++ b/usr/share/sofirem/cache/rate-mirrors @@ -0,0 +1 @@ +Everyday-use client-side map-aware mirror ranking tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/rate-mirrors-bin b/usr/share/sofirem/cache/rate-mirrors-bin new file mode 100644 index 0000000..8dcb10a --- /dev/null +++ b/usr/share/sofirem/cache/rate-mirrors-bin @@ -0,0 +1 @@ +Everyday-use client-side map-aware mirror ranking tool - pre-built with musl \ No newline at end of file diff --git a/usr/share/sofirem/cache/realvnc-vnc-server b/usr/share/sofirem/cache/realvnc-vnc-server new file mode 100644 index 0000000..9f78c0b --- /dev/null +++ b/usr/share/sofirem/cache/realvnc-vnc-server @@ -0,0 +1 @@ +VNC remote desktop server software by RealVNC \ No newline at end of file diff --git a/usr/share/sofirem/cache/realvnc-vnc-viewer b/usr/share/sofirem/cache/realvnc-vnc-viewer new file mode 100644 index 0000000..086ec28 --- /dev/null +++ b/usr/share/sofirem/cache/realvnc-vnc-viewer @@ -0,0 +1 @@ +VNC remote desktop client software by RealVNC \ No newline at end of file diff --git a/usr/share/sofirem/cache/redshift b/usr/share/sofirem/cache/redshift new file mode 100644 index 0000000..823c4d0 --- /dev/null +++ b/usr/share/sofirem/cache/redshift @@ -0,0 +1 @@ +Adjusts the color temperature of your screen according to your surroundings. \ No newline at end of file diff --git a/usr/share/sofirem/cache/remmina b/usr/share/sofirem/cache/remmina new file mode 100644 index 0000000..deaef32 --- /dev/null +++ b/usr/share/sofirem/cache/remmina @@ -0,0 +1 @@ +remote desktop client written in GTK+ \ No newline at end of file diff --git a/usr/share/sofirem/cache/replay-sorcery b/usr/share/sofirem/cache/replay-sorcery new file mode 100644 index 0000000..4842684 --- /dev/null +++ b/usr/share/sofirem/cache/replay-sorcery @@ -0,0 +1 @@ +An open-source, instant-replay screen recorder for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/rhythmbox b/usr/share/sofirem/cache/rhythmbox new file mode 100644 index 0000000..fe99613 --- /dev/null +++ b/usr/share/sofirem/cache/rhythmbox @@ -0,0 +1 @@ +Music playback and management application \ No newline at end of file diff --git a/usr/share/sofirem/cache/ripgrep b/usr/share/sofirem/cache/ripgrep new file mode 100644 index 0000000..1a9d7d6 --- /dev/null +++ b/usr/share/sofirem/cache/ripgrep @@ -0,0 +1 @@ +A search tool that combines the usability of ag with the raw speed of grep \ No newline at end of file diff --git a/usr/share/sofirem/cache/ripgrep-all b/usr/share/sofirem/cache/ripgrep-all new file mode 100644 index 0000000..119ac78 --- /dev/null +++ b/usr/share/sofirem/cache/ripgrep-all @@ -0,0 +1 @@ +rga: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc. \ No newline at end of file diff --git a/usr/share/sofirem/cache/rofi b/usr/share/sofirem/cache/rofi new file mode 100644 index 0000000..26e242f --- /dev/null +++ b/usr/share/sofirem/cache/rofi @@ -0,0 +1 @@ +A window switcher, application launcher and dmenu replacement \ No newline at end of file diff --git a/usr/share/sofirem/cache/rofi-theme-fonts b/usr/share/sofirem/cache/rofi-theme-fonts new file mode 100644 index 0000000..cc6c921 --- /dev/null +++ b/usr/share/sofirem/cache/rofi-theme-fonts @@ -0,0 +1 @@ +A large collection of Rofi based custom Menu, Applets, Launchers & Powermenus \ No newline at end of file diff --git a/usr/share/sofirem/cache/rxvt-unicode b/usr/share/sofirem/cache/rxvt-unicode new file mode 100644 index 0000000..852fd28 --- /dev/null +++ b/usr/share/sofirem/cache/rxvt-unicode @@ -0,0 +1 @@ +Unicode enabled rxvt-clone terminal emulator (urxvt) \ No newline at end of file diff --git a/usr/share/sofirem/cache/s-tui b/usr/share/sofirem/cache/s-tui new file mode 100644 index 0000000..6eeb77c --- /dev/null +++ b/usr/share/sofirem/cache/s-tui @@ -0,0 +1 @@ +Terminal UI stress test and monitoring tool \ No newline at end of file diff --git a/usr/share/sofirem/cache/sakura b/usr/share/sofirem/cache/sakura new file mode 100644 index 0000000..addd2b9 --- /dev/null +++ b/usr/share/sofirem/cache/sakura @@ -0,0 +1 @@ +A terminal emulator based on GTK and VTE \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-colora-variations-icons-git b/usr/share/sofirem/cache/sardi-colora-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-flat-colora-variations-icons-git b/usr/share/sofirem/cache/sardi-flat-colora-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-flat-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-flat-mint-y-icons-git b/usr/share/sofirem/cache/sardi-flat-mint-y-icons-git new file mode 100644 index 0000000..e842208 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-flat-mint-y-icons-git @@ -0,0 +1 @@ +New icons from LinuxMint 18 inspired by the Moka icon set with Sardi {indexname} as main icon set \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-flat-mixing-icons-git b/usr/share/sofirem/cache/sardi-flat-mixing-icons-git new file mode 100644 index 0000000..f341db5 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-flat-mixing-icons-git @@ -0,0 +1 @@ +Based on Sardi Flat you can use the modularity to combine elements and create a new icon theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-flexible-colora-variations-icons-git b/usr/share/sofirem/cache/sardi-flexible-colora-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-flexible-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-flexible-luv-colora-variations-icons-git b/usr/share/sofirem/cache/sardi-flexible-luv-colora-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-flexible-luv-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-flexible-mint-y-icons-git b/usr/share/sofirem/cache/sardi-flexible-mint-y-icons-git new file mode 100644 index 0000000..e842208 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-flexible-mint-y-icons-git @@ -0,0 +1 @@ +New icons from LinuxMint 18 inspired by the Moka icon set with Sardi {indexname} as main icon set \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-flexible-mixing-icons-git b/usr/share/sofirem/cache/sardi-flexible-mixing-icons-git new file mode 100644 index 0000000..28d3a8b --- /dev/null +++ b/usr/share/sofirem/cache/sardi-flexible-mixing-icons-git @@ -0,0 +1 @@ +Based on Sardi Flexible you can use the modularity to combine elements and create a new icon theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-flexible-variations-icons-git b/usr/share/sofirem/cache/sardi-flexible-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-flexible-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-ghost-flexible-colora-variations-icons-git b/usr/share/sofirem/cache/sardi-ghost-flexible-colora-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-ghost-flexible-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-ghost-flexible-mint-y-icons-git b/usr/share/sofirem/cache/sardi-ghost-flexible-mint-y-icons-git new file mode 100644 index 0000000..e842208 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-ghost-flexible-mint-y-icons-git @@ -0,0 +1 @@ +New icons from LinuxMint 18 inspired by the Moka icon set with Sardi {indexname} as main icon set \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-ghost-flexible-mixing-icons-git b/usr/share/sofirem/cache/sardi-ghost-flexible-mixing-icons-git new file mode 100644 index 0000000..b7917ef --- /dev/null +++ b/usr/share/sofirem/cache/sardi-ghost-flexible-mixing-icons-git @@ -0,0 +1 @@ +Based on Sardi Ghost Flexible you can use the modularity to combine elements and create a new icon theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-ghost-flexible-variations-icons-git b/usr/share/sofirem/cache/sardi-ghost-flexible-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-ghost-flexible-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-icons b/usr/share/sofirem/cache/sardi-icons new file mode 100644 index 0000000..a8c610b --- /dev/null +++ b/usr/share/sofirem/cache/sardi-icons @@ -0,0 +1 @@ +Sardi is an icon collection for any linux distro with 6 different circular icons and 10 different kind of folders. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-mint-y-icons-git b/usr/share/sofirem/cache/sardi-mint-y-icons-git new file mode 100644 index 0000000..624ab68 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-mint-y-icons-git @@ -0,0 +1 @@ +New icons from LinuxMint 18 inspired by the Moka icon set with Sardi as main icon set \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-mixing-icons-git b/usr/share/sofirem/cache/sardi-mixing-icons-git new file mode 100644 index 0000000..1e85655 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-mixing-icons-git @@ -0,0 +1 @@ +Based on Sardi you can use the modularity to combine elements and create a new icon theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-mono-colora-variations-icons-git b/usr/share/sofirem/cache/sardi-mono-colora-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-mono-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-mono-mint-y-icons-git b/usr/share/sofirem/cache/sardi-mono-mint-y-icons-git new file mode 100644 index 0000000..e842208 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-mono-mint-y-icons-git @@ -0,0 +1 @@ +New icons from LinuxMint 18 inspired by the Moka icon set with Sardi {indexname} as main icon set \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-mono-mixing-icons-git b/usr/share/sofirem/cache/sardi-mono-mixing-icons-git new file mode 100644 index 0000000..ecb2f51 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-mono-mixing-icons-git @@ -0,0 +1 @@ +Based on Sardi Mono you can use the modularity to combine elements and create a new icon theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-mono-numix-colora-variations-icons-git b/usr/share/sofirem/cache/sardi-mono-numix-colora-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-mono-numix-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-mono-papirus-colora-variations-icons-git b/usr/share/sofirem/cache/sardi-mono-papirus-colora-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-mono-papirus-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-orb-colora-mint-y-icons-git b/usr/share/sofirem/cache/sardi-orb-colora-mint-y-icons-git new file mode 100644 index 0000000..e842208 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-orb-colora-mint-y-icons-git @@ -0,0 +1 @@ +New icons from LinuxMint 18 inspired by the Moka icon set with Sardi {indexname} as main icon set \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-orb-colora-mixing-icons-git b/usr/share/sofirem/cache/sardi-orb-colora-mixing-icons-git new file mode 100644 index 0000000..27dbb84 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-orb-colora-mixing-icons-git @@ -0,0 +1 @@ +Based on Sardi Orb Colora you can use the modularity to combine elements and create a new icon theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sardi-orb-colora-variations-icons-git b/usr/share/sofirem/cache/sardi-orb-colora-variations-icons-git new file mode 100644 index 0000000..5300b80 --- /dev/null +++ b/usr/share/sofirem/cache/sardi-orb-colora-variations-icons-git @@ -0,0 +1 @@ +The Sardi icon set contains 80+ scripts to change from colour. Change it yourself with these scripts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/sauerbraten b/usr/share/sofirem/cache/sauerbraten new file mode 100644 index 0000000..e44b3e6 --- /dev/null +++ b/usr/share/sofirem/cache/sauerbraten @@ -0,0 +1 @@ +FPS that uses an improved version of the Cube engine \ No newline at end of file diff --git a/usr/share/sofirem/cache/sauerbraten-data b/usr/share/sofirem/cache/sauerbraten-data new file mode 100644 index 0000000..3ef2d31 --- /dev/null +++ b/usr/share/sofirem/cache/sauerbraten-data @@ -0,0 +1 @@ +Improved version of the Cube engine - datas files \ No newline at end of file diff --git a/usr/share/sofirem/cache/sayonara-player b/usr/share/sofirem/cache/sayonara-player new file mode 100644 index 0000000..75c6f1e --- /dev/null +++ b/usr/share/sofirem/cache/sayonara-player @@ -0,0 +1 @@ +Small, clear and fast audio player for Linux written in C++, supported by the Qt framework. It uses Gstreamer as audio backend. \ No newline at end of file diff --git a/usr/share/sofirem/cache/scrcpy b/usr/share/sofirem/cache/scrcpy new file mode 100644 index 0000000..796abe5 --- /dev/null +++ b/usr/share/sofirem/cache/scrcpy @@ -0,0 +1 @@ +Display and control your Android device \ No newline at end of file diff --git a/usr/share/sofirem/cache/screenfetch b/usr/share/sofirem/cache/screenfetch new file mode 100644 index 0000000..4a98c26 --- /dev/null +++ b/usr/share/sofirem/cache/screenfetch @@ -0,0 +1 @@ +CLI Bash script to show system/theme info in screenshots \ No newline at end of file diff --git a/usr/share/sofirem/cache/screenkey-git b/usr/share/sofirem/cache/screenkey-git new file mode 100644 index 0000000..33afb82 --- /dev/null +++ b/usr/share/sofirem/cache/screenkey-git @@ -0,0 +1 @@ +Screencast tool to show your keys inspired by Screenflick, based on key-mon. Active fork with new features. \ No newline at end of file diff --git a/usr/share/sofirem/cache/scribus b/usr/share/sofirem/cache/scribus new file mode 100644 index 0000000..ac9dac9 --- /dev/null +++ b/usr/share/sofirem/cache/scribus @@ -0,0 +1 @@ +Desktop publishing software \ No newline at end of file diff --git a/usr/share/sofirem/cache/scrot b/usr/share/sofirem/cache/scrot new file mode 100644 index 0000000..59cc463 --- /dev/null +++ b/usr/share/sofirem/cache/scrot @@ -0,0 +1 @@ +Simple command-line screenshot utility for X \ No newline at end of file diff --git a/usr/share/sofirem/cache/sddm b/usr/share/sofirem/cache/sddm new file mode 100644 index 0000000..e81f257 --- /dev/null +++ b/usr/share/sofirem/cache/sddm @@ -0,0 +1 @@ +QML based X11 and Wayland display manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/sddm-kcm b/usr/share/sofirem/cache/sddm-kcm new file mode 100644 index 0000000..7f92e83 --- /dev/null +++ b/usr/share/sofirem/cache/sddm-kcm @@ -0,0 +1 @@ +KDE Config Module for SDDM \ No newline at end of file diff --git a/usr/share/sofirem/cache/shairport-sync b/usr/share/sofirem/cache/shairport-sync new file mode 100644 index 0000000..87d19f2 --- /dev/null +++ b/usr/share/sofirem/cache/shairport-sync @@ -0,0 +1 @@ +Emulates an AirPort Express for the purpose of streaming music from iTunes and compatible iPods and iPhones \ No newline at end of file diff --git a/usr/share/sofirem/cache/shortwave b/usr/share/sofirem/cache/shortwave new file mode 100644 index 0000000..08204a9 --- /dev/null +++ b/usr/share/sofirem/cache/shortwave @@ -0,0 +1 @@ +Find and listen to internet radio stations \ No newline at end of file diff --git a/usr/share/sofirem/cache/sigil b/usr/share/sofirem/cache/sigil new file mode 100644 index 0000000..7bd0540 --- /dev/null +++ b/usr/share/sofirem/cache/sigil @@ -0,0 +1 @@ +multi-platform EPUB2/EPUB3 ebook editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/signal-desktop b/usr/share/sofirem/cache/signal-desktop new file mode 100644 index 0000000..8de8aba --- /dev/null +++ b/usr/share/sofirem/cache/signal-desktop @@ -0,0 +1 @@ +Signal Private Messenger for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/signal-desktop-beta-bin b/usr/share/sofirem/cache/signal-desktop-beta-bin new file mode 100644 index 0000000..8de8aba --- /dev/null +++ b/usr/share/sofirem/cache/signal-desktop-beta-bin @@ -0,0 +1 @@ +Signal Private Messenger for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/signal-desktop-git b/usr/share/sofirem/cache/signal-desktop-git new file mode 100644 index 0000000..8de8aba --- /dev/null +++ b/usr/share/sofirem/cache/signal-desktop-git @@ -0,0 +1 @@ +Signal Private Messenger for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/simple-scan b/usr/share/sofirem/cache/simple-scan new file mode 100644 index 0000000..1841755 --- /dev/null +++ b/usr/share/sofirem/cache/simple-scan @@ -0,0 +1 @@ +Simple scanning utility \ No newline at end of file diff --git a/usr/share/sofirem/cache/simplescreenrecorder b/usr/share/sofirem/cache/simplescreenrecorder new file mode 100644 index 0000000..6605197 --- /dev/null +++ b/usr/share/sofirem/cache/simplescreenrecorder @@ -0,0 +1 @@ +A feature-rich screen recorder that supports X11 and OpenGL. \ No newline at end of file diff --git a/usr/share/sofirem/cache/simplescreenrecorder-git b/usr/share/sofirem/cache/simplescreenrecorder-git new file mode 100644 index 0000000..6605197 --- /dev/null +++ b/usr/share/sofirem/cache/simplescreenrecorder-git @@ -0,0 +1 @@ +A feature-rich screen recorder that supports X11 and OpenGL. \ No newline at end of file diff --git a/usr/share/sofirem/cache/simplicity-sddm-theme-git b/usr/share/sofirem/cache/simplicity-sddm-theme-git new file mode 100644 index 0000000..61772c1 --- /dev/null +++ b/usr/share/sofirem/cache/simplicity-sddm-theme-git @@ -0,0 +1 @@ +Simple SDDM Theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/skippy-xd-git b/usr/share/sofirem/cache/skippy-xd-git new file mode 100644 index 0000000..0a7a736 --- /dev/null +++ b/usr/share/sofirem/cache/skippy-xd-git @@ -0,0 +1 @@ +A full-screen task-switcher for X11, similar to Apple's Expose \ No newline at end of file diff --git a/usr/share/sofirem/cache/skypeforlinux-stable-bin b/usr/share/sofirem/cache/skypeforlinux-stable-bin new file mode 100644 index 0000000..96c2e64 --- /dev/null +++ b/usr/share/sofirem/cache/skypeforlinux-stable-bin @@ -0,0 +1 @@ +Skype for Linux - Stable/Release Version \ No newline at end of file diff --git a/usr/share/sofirem/cache/sl b/usr/share/sofirem/cache/sl new file mode 100644 index 0000000..f6684f9 --- /dev/null +++ b/usr/share/sofirem/cache/sl @@ -0,0 +1 @@ +Steam Locomotive runs across your terminal when you type "sl" as you meant to type "ls" \ No newline at end of file diff --git a/usr/share/sofirem/cache/slack-desktop b/usr/share/sofirem/cache/slack-desktop new file mode 100644 index 0000000..efbf1fd --- /dev/null +++ b/usr/share/sofirem/cache/slack-desktop @@ -0,0 +1 @@ +Slack Desktop (Beta) for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/slimbookbattery b/usr/share/sofirem/cache/slimbookbattery new file mode 100644 index 0000000..e946021 --- /dev/null +++ b/usr/share/sofirem/cache/slimbookbattery @@ -0,0 +1 @@ +Battery optimization application for portable devices. \ No newline at end of file diff --git a/usr/share/sofirem/cache/slurm b/usr/share/sofirem/cache/slurm new file mode 100644 index 0000000..367d518 --- /dev/null +++ b/usr/share/sofirem/cache/slurm @@ -0,0 +1 @@ +Monitoring traffic statistics in realtime \ No newline at end of file diff --git a/usr/share/sofirem/cache/smplayer b/usr/share/sofirem/cache/smplayer new file mode 100644 index 0000000..c933fb4 --- /dev/null +++ b/usr/share/sofirem/cache/smplayer @@ -0,0 +1 @@ +Media player with built-in codecs that can play virtually all video and audio formats \ No newline at end of file diff --git a/usr/share/sofirem/cache/snap-pac b/usr/share/sofirem/cache/snap-pac new file mode 100644 index 0000000..8311ddf --- /dev/null +++ b/usr/share/sofirem/cache/snap-pac @@ -0,0 +1 @@ +Pacman hooks that use snapper to create pre/post btrfs snapshots like openSUSE's YaST \ No newline at end of file diff --git a/usr/share/sofirem/cache/snapd b/usr/share/sofirem/cache/snapd new file mode 100644 index 0000000..257e3a2 --- /dev/null +++ b/usr/share/sofirem/cache/snapd @@ -0,0 +1 @@ +Service and tools for management of snap packages. \ No newline at end of file diff --git a/usr/share/sofirem/cache/snapper b/usr/share/sofirem/cache/snapper new file mode 100644 index 0000000..7511a0c --- /dev/null +++ b/usr/share/sofirem/cache/snapper @@ -0,0 +1 @@ +A tool for managing BTRFS and LVM snapshots. It can create, diff and restore snapshots and provides timelined auto-snapping. \ No newline at end of file diff --git a/usr/share/sofirem/cache/snapper-gui-git b/usr/share/sofirem/cache/snapper-gui-git new file mode 100644 index 0000000..a11fca5 --- /dev/null +++ b/usr/share/sofirem/cache/snapper-gui-git @@ -0,0 +1 @@ +Gui for snapper, a tool of managing snapshots of Btrfs subvolumes and LVM volumes \ No newline at end of file diff --git a/usr/share/sofirem/cache/snapper-support b/usr/share/sofirem/cache/snapper-support new file mode 100644 index 0000000..34df2ac --- /dev/null +++ b/usr/share/sofirem/cache/snapper-support @@ -0,0 +1 @@ +Support package for enabling Snapper with snap-pac and grub-btrfs support \ No newline at end of file diff --git a/usr/share/sofirem/cache/snapper-tools b/usr/share/sofirem/cache/snapper-tools new file mode 100644 index 0000000..cf54581 --- /dev/null +++ b/usr/share/sofirem/cache/snapper-tools @@ -0,0 +1 @@ +A highly opinionated Snapper GUI and CLI \ No newline at end of file diff --git a/usr/share/sofirem/cache/solaar b/usr/share/sofirem/cache/solaar new file mode 100644 index 0000000..8622261 --- /dev/null +++ b/usr/share/sofirem/cache/solaar @@ -0,0 +1 @@ +Linux device manager for a wide range of Logitech devices \ No newline at end of file diff --git a/usr/share/sofirem/cache/soundconverter b/usr/share/sofirem/cache/soundconverter new file mode 100644 index 0000000..8c0ebfd --- /dev/null +++ b/usr/share/sofirem/cache/soundconverter @@ -0,0 +1 @@ +A simple sound converter application for GNOME \ No newline at end of file diff --git a/usr/share/sofirem/cache/sparklines-git b/usr/share/sofirem/cache/sparklines-git new file mode 100644 index 0000000..b58ae47 --- /dev/null +++ b/usr/share/sofirem/cache/sparklines-git @@ -0,0 +1 @@ +Spark: Sparklines for your shell \ No newline at end of file diff --git a/usr/share/sofirem/cache/spectacle b/usr/share/sofirem/cache/spectacle new file mode 100644 index 0000000..ca94050 --- /dev/null +++ b/usr/share/sofirem/cache/spectacle @@ -0,0 +1 @@ +KDE screenshot capture utility \ No newline at end of file diff --git a/usr/share/sofirem/cache/spectrwm b/usr/share/sofirem/cache/spectrwm new file mode 100644 index 0000000..2fc9056 --- /dev/null +++ b/usr/share/sofirem/cache/spectrwm @@ -0,0 +1 @@ +A minimalistic automatic tiling window manager that tries to stay out of the way. \ No newline at end of file diff --git a/usr/share/sofirem/cache/speedtest-cli-git b/usr/share/sofirem/cache/speedtest-cli-git new file mode 100644 index 0000000..68a9331 --- /dev/null +++ b/usr/share/sofirem/cache/speedtest-cli-git @@ -0,0 +1 @@ +Command line interface for testing internet bandwidth using speedtest.net \ No newline at end of file diff --git a/usr/share/sofirem/cache/spotify b/usr/share/sofirem/cache/spotify new file mode 100644 index 0000000..a1acc5f --- /dev/null +++ b/usr/share/sofirem/cache/spotify @@ -0,0 +1 @@ +A proprietary music streaming service \ No newline at end of file diff --git a/usr/share/sofirem/cache/spotify-adblock-git b/usr/share/sofirem/cache/spotify-adblock-git new file mode 100644 index 0000000..df62933 --- /dev/null +++ b/usr/share/sofirem/cache/spotify-adblock-git @@ -0,0 +1 @@ +Adblocker for Spotify \ No newline at end of file diff --git a/usr/share/sofirem/cache/spotifywm-git b/usr/share/sofirem/cache/spotifywm-git new file mode 100644 index 0000000..1a34747 --- /dev/null +++ b/usr/share/sofirem/cache/spotifywm-git @@ -0,0 +1 @@ +Makes Spotify more friendly to window managers by settings a class name before opening the window. \ No newline at end of file diff --git a/usr/share/sofirem/cache/stacer b/usr/share/sofirem/cache/stacer new file mode 100644 index 0000000..c534da8 --- /dev/null +++ b/usr/share/sofirem/cache/stacer @@ -0,0 +1 @@ +Ubuntu System Optimizer \ No newline at end of file diff --git a/usr/share/sofirem/cache/stacer-bin b/usr/share/sofirem/cache/stacer-bin new file mode 100644 index 0000000..b6e7b19 --- /dev/null +++ b/usr/share/sofirem/cache/stacer-bin @@ -0,0 +1 @@ +Linux System Optimizer and Monitoring \ No newline at end of file diff --git a/usr/share/sofirem/cache/steam-buddy b/usr/share/sofirem/cache/steam-buddy new file mode 100644 index 0000000..5547213 --- /dev/null +++ b/usr/share/sofirem/cache/steam-buddy @@ -0,0 +1 @@ +Configure and manage games in Steam \ No newline at end of file diff --git a/usr/share/sofirem/cache/steam-tweaks b/usr/share/sofirem/cache/steam-tweaks new file mode 100644 index 0000000..eeb92a4 --- /dev/null +++ b/usr/share/sofirem/cache/steam-tweaks @@ -0,0 +1 @@ +Various tools for tweaking Steam/game settings \ No newline at end of file diff --git a/usr/share/sofirem/cache/steamtinkerlaunch b/usr/share/sofirem/cache/steamtinkerlaunch new file mode 100644 index 0000000..7f8a97a --- /dev/null +++ b/usr/share/sofirem/cache/steamtinkerlaunch @@ -0,0 +1 @@ +Wrapper script for Steam custom launch options \ No newline at end of file diff --git a/usr/share/sofirem/cache/sublime-text-4 b/usr/share/sofirem/cache/sublime-text-4 new file mode 100644 index 0000000..5091aa7 --- /dev/null +++ b/usr/share/sofirem/cache/sublime-text-4 @@ -0,0 +1 @@ +Sophisticated text editor for code, html and prose - stable build \ No newline at end of file diff --git a/usr/share/sofirem/cache/supertux b/usr/share/sofirem/cache/supertux new file mode 100644 index 0000000..802285e --- /dev/null +++ b/usr/share/sofirem/cache/supertux @@ -0,0 +1 @@ +A classic 2D jump'n'run sidescroller game in a style similar to the original SuperMario games \ No newline at end of file diff --git a/usr/share/sofirem/cache/supertuxkart b/usr/share/sofirem/cache/supertuxkart new file mode 100644 index 0000000..8c58455 --- /dev/null +++ b/usr/share/sofirem/cache/supertuxkart @@ -0,0 +1 @@ +Kart racing game featuring Tux and his friends \ No newline at end of file diff --git a/usr/share/sofirem/cache/surfn-arc-breeze-icons-git b/usr/share/sofirem/cache/surfn-arc-breeze-icons-git new file mode 100644 index 0000000..724af4a --- /dev/null +++ b/usr/share/sofirem/cache/surfn-arc-breeze-icons-git @@ -0,0 +1 @@ +Surfn Arc Breeze icons are created to be used on Plasma with dark toolbar \ No newline at end of file diff --git a/usr/share/sofirem/cache/surfn-icons-git b/usr/share/sofirem/cache/surfn-icons-git new file mode 100644 index 0000000..93451da --- /dev/null +++ b/usr/share/sofirem/cache/surfn-icons-git @@ -0,0 +1 @@ +Surfn is a colourful icon theme. \ No newline at end of file diff --git a/usr/share/sofirem/cache/surfn-mint-y-icons-git b/usr/share/sofirem/cache/surfn-mint-y-icons-git new file mode 100644 index 0000000..57b3879 --- /dev/null +++ b/usr/share/sofirem/cache/surfn-mint-y-icons-git @@ -0,0 +1 @@ +New icons from LinuxMint 18 inspired by the Moka icon set with Surfn as main icon set \ No newline at end of file diff --git a/usr/share/sofirem/cache/surfn-plasma-dark-icons-git b/usr/share/sofirem/cache/surfn-plasma-dark-icons-git new file mode 100644 index 0000000..99088a8 --- /dev/null +++ b/usr/share/sofirem/cache/surfn-plasma-dark-icons-git @@ -0,0 +1 @@ +Surfn Plasma Dark is created to go with Plasma \ No newline at end of file diff --git a/usr/share/sofirem/cache/surfn-plasma-dark-tela-icons-git b/usr/share/sofirem/cache/surfn-plasma-dark-tela-icons-git new file mode 100644 index 0000000..5edd3dc --- /dev/null +++ b/usr/share/sofirem/cache/surfn-plasma-dark-tela-icons-git @@ -0,0 +1 @@ +Surfn Plasma Dark Tela is created to go with Plasma \ No newline at end of file diff --git a/usr/share/sofirem/cache/surfn-plasma-light-icons-git b/usr/share/sofirem/cache/surfn-plasma-light-icons-git new file mode 100644 index 0000000..e32d4fc --- /dev/null +++ b/usr/share/sofirem/cache/surfn-plasma-light-icons-git @@ -0,0 +1 @@ +Surfn Plasma Light is created to go with Breeze \ No newline at end of file diff --git a/usr/share/sofirem/cache/sutils-git b/usr/share/sofirem/cache/sutils-git new file mode 100644 index 0000000..191ac2a --- /dev/null +++ b/usr/share/sofirem/cache/sutils-git @@ -0,0 +1 @@ +Small command-line utilities \ No newline at end of file diff --git a/usr/share/sofirem/cache/sweet-cursor-theme-git b/usr/share/sofirem/cache/sweet-cursor-theme-git new file mode 100644 index 0000000..2a6369a --- /dev/null +++ b/usr/share/sofirem/cache/sweet-cursor-theme-git @@ -0,0 +1 @@ +Sweet cursor theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/sweet-gtk-theme-dark b/usr/share/sofirem/cache/sweet-gtk-theme-dark new file mode 100644 index 0000000..63bc0fc --- /dev/null +++ b/usr/share/sofirem/cache/sweet-gtk-theme-dark @@ -0,0 +1 @@ +Light and dark colorful Gtk3.20+ theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/sweet-kde-theme-mars-git b/usr/share/sofirem/cache/sweet-kde-theme-mars-git new file mode 100644 index 0000000..567b686 --- /dev/null +++ b/usr/share/sofirem/cache/sweet-kde-theme-mars-git @@ -0,0 +1 @@ +Dark colorful KDE theme (Sweet Mars) \ No newline at end of file diff --git a/usr/share/sofirem/cache/sweet-theme-git b/usr/share/sofirem/cache/sweet-theme-git new file mode 100644 index 0000000..63bc0fc --- /dev/null +++ b/usr/share/sofirem/cache/sweet-theme-git @@ -0,0 +1 @@ +Light and dark colorful Gtk3.20+ theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/sxhkd b/usr/share/sofirem/cache/sxhkd new file mode 100644 index 0000000..efca9ce --- /dev/null +++ b/usr/share/sofirem/cache/sxhkd @@ -0,0 +1 @@ +Simple X hotkey daemon \ No newline at end of file diff --git a/usr/share/sofirem/cache/synapse b/usr/share/sofirem/cache/synapse new file mode 100644 index 0000000..7257aa9 --- /dev/null +++ b/usr/share/sofirem/cache/synapse @@ -0,0 +1 @@ +A semantic file launcher \ No newline at end of file diff --git a/usr/share/sofirem/cache/sysprof b/usr/share/sofirem/cache/sysprof new file mode 100644 index 0000000..ab062a7 --- /dev/null +++ b/usr/share/sofirem/cache/sysprof @@ -0,0 +1 @@ +Kernel based performance profiler \ No newline at end of file diff --git a/usr/share/sofirem/cache/system76-power b/usr/share/sofirem/cache/system76-power new file mode 100644 index 0000000..138bd33 --- /dev/null +++ b/usr/share/sofirem/cache/system76-power @@ -0,0 +1 @@ +System76 Power Management \ No newline at end of file diff --git a/usr/share/sofirem/cache/systemd-kcm b/usr/share/sofirem/cache/systemd-kcm new file mode 100644 index 0000000..dc882cf --- /dev/null +++ b/usr/share/sofirem/cache/systemd-kcm @@ -0,0 +1 @@ +Systemd control module for KDE \ No newline at end of file diff --git a/usr/share/sofirem/cache/systemd-manager b/usr/share/sofirem/cache/systemd-manager new file mode 100644 index 0000000..b77f2eb --- /dev/null +++ b/usr/share/sofirem/cache/systemd-manager @@ -0,0 +1 @@ +GUI manager for systemd services, using GTK+3 \ No newline at end of file diff --git a/usr/share/sofirem/cache/systemd-manager-git b/usr/share/sofirem/cache/systemd-manager-git new file mode 100644 index 0000000..2d05d9e --- /dev/null +++ b/usr/share/sofirem/cache/systemd-manager-git @@ -0,0 +1 @@ +A systemd service manager written in Rust with the GTK-rs wrapper and direct integration with dbus \ No newline at end of file diff --git a/usr/share/sofirem/cache/tabby-bin b/usr/share/sofirem/cache/tabby-bin new file mode 100644 index 0000000..3315463 --- /dev/null +++ b/usr/share/sofirem/cache/tabby-bin @@ -0,0 +1 @@ +Tabby (formerly Terminus) is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/tauon-music-box b/usr/share/sofirem/cache/tauon-music-box new file mode 100644 index 0000000..2f2f3c7 --- /dev/null +++ b/usr/share/sofirem/cache/tauon-music-box @@ -0,0 +1 @@ +A modern streamlined music player \ No newline at end of file diff --git a/usr/share/sofirem/cache/teams b/usr/share/sofirem/cache/teams new file mode 100644 index 0000000..fe42592 --- /dev/null +++ b/usr/share/sofirem/cache/teams @@ -0,0 +1 @@ +Microsoft Teams for Linux is your chat-centered workspace in Office 365 \ No newline at end of file diff --git a/usr/share/sofirem/cache/tela-circle-icon-theme-git b/usr/share/sofirem/cache/tela-circle-icon-theme-git new file mode 100644 index 0000000..0836a96 --- /dev/null +++ b/usr/share/sofirem/cache/tela-circle-icon-theme-git @@ -0,0 +1 @@ +A flat colorful design icon theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/telegram-desktop b/usr/share/sofirem/cache/telegram-desktop new file mode 100644 index 0000000..dfc31db --- /dev/null +++ b/usr/share/sofirem/cache/telegram-desktop @@ -0,0 +1 @@ +Official Telegram Desktop client \ No newline at end of file diff --git a/usr/share/sofirem/cache/telegram-desktop-bin b/usr/share/sofirem/cache/telegram-desktop-bin new file mode 100644 index 0000000..b762bd4 --- /dev/null +++ b/usr/share/sofirem/cache/telegram-desktop-bin @@ -0,0 +1 @@ +Official desktop version of Telegram messaging app - Static binaries \ No newline at end of file diff --git a/usr/share/sofirem/cache/tempus-themes-xfce4-terminal-git b/usr/share/sofirem/cache/tempus-themes-xfce4-terminal-git new file mode 100644 index 0000000..355fbcf --- /dev/null +++ b/usr/share/sofirem/cache/tempus-themes-xfce4-terminal-git @@ -0,0 +1 @@ +Tempus themes for Xfce4 Terminal \ No newline at end of file diff --git a/usr/share/sofirem/cache/terminator b/usr/share/sofirem/cache/terminator new file mode 100644 index 0000000..ea53636 --- /dev/null +++ b/usr/share/sofirem/cache/terminator @@ -0,0 +1 @@ +Terminal emulator that supports tabs and grids \ No newline at end of file diff --git a/usr/share/sofirem/cache/termite b/usr/share/sofirem/cache/termite new file mode 100644 index 0000000..402e69b --- /dev/null +++ b/usr/share/sofirem/cache/termite @@ -0,0 +1 @@ +A simple VTE-based terminal \ No newline at end of file diff --git a/usr/share/sofirem/cache/the_platinum_searcher-bin b/usr/share/sofirem/cache/the_platinum_searcher-bin new file mode 100644 index 0000000..70fd696 --- /dev/null +++ b/usr/share/sofirem/cache/the_platinum_searcher-bin @@ -0,0 +1 @@ +A code search tool similar to ack, the_silver_searcher (ag) and ripgrep (rg). \ No newline at end of file diff --git a/usr/share/sofirem/cache/the_silver_searcher b/usr/share/sofirem/cache/the_silver_searcher new file mode 100644 index 0000000..b0ca0b5 --- /dev/null +++ b/usr/share/sofirem/cache/the_silver_searcher @@ -0,0 +1 @@ +Code searching tool similar to Ack, but faster \ No newline at end of file diff --git a/usr/share/sofirem/cache/thunar b/usr/share/sofirem/cache/thunar new file mode 100644 index 0000000..0c8c670 --- /dev/null +++ b/usr/share/sofirem/cache/thunar @@ -0,0 +1 @@ +Modern file manager for Xfce \ No newline at end of file diff --git a/usr/share/sofirem/cache/thunar-archive-plugin b/usr/share/sofirem/cache/thunar-archive-plugin new file mode 100644 index 0000000..1963f1e --- /dev/null +++ b/usr/share/sofirem/cache/thunar-archive-plugin @@ -0,0 +1 @@ +Adds archive operations to the Thunar file context menus \ No newline at end of file diff --git a/usr/share/sofirem/cache/thunar-extended b/usr/share/sofirem/cache/thunar-extended new file mode 100644 index 0000000..5cef923 --- /dev/null +++ b/usr/share/sofirem/cache/thunar-extended @@ -0,0 +1 @@ +Thunar with more options \ No newline at end of file diff --git a/usr/share/sofirem/cache/thunar-media-tags-plugin b/usr/share/sofirem/cache/thunar-media-tags-plugin new file mode 100644 index 0000000..874b655 --- /dev/null +++ b/usr/share/sofirem/cache/thunar-media-tags-plugin @@ -0,0 +1 @@ +Adds special features for media files to the Thunar File Manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/thunar-shares-plugin b/usr/share/sofirem/cache/thunar-shares-plugin new file mode 100644 index 0000000..8a8b30a --- /dev/null +++ b/usr/share/sofirem/cache/thunar-shares-plugin @@ -0,0 +1 @@ +Thunar plugin to quickly share a folder using Samba without requiring root access \ No newline at end of file diff --git a/usr/share/sofirem/cache/thunar-volman b/usr/share/sofirem/cache/thunar-volman new file mode 100644 index 0000000..545f93a --- /dev/null +++ b/usr/share/sofirem/cache/thunar-volman @@ -0,0 +1 @@ +Automatic management of removeable devices in Thunar \ No newline at end of file diff --git a/usr/share/sofirem/cache/thunderbird b/usr/share/sofirem/cache/thunderbird new file mode 100644 index 0000000..11ee42c --- /dev/null +++ b/usr/share/sofirem/cache/thunderbird @@ -0,0 +1 @@ +Standalone mail and news reader from mozilla.org \ No newline at end of file diff --git a/usr/share/sofirem/cache/tigervnc b/usr/share/sofirem/cache/tigervnc new file mode 100644 index 0000000..23f86b8 --- /dev/null +++ b/usr/share/sofirem/cache/tigervnc @@ -0,0 +1 @@ +Suite of VNC servers and clients. Based on the VNC 4 branch of TightVNC. \ No newline at end of file diff --git a/usr/share/sofirem/cache/tilda b/usr/share/sofirem/cache/tilda new file mode 100644 index 0000000..0adb8f6 --- /dev/null +++ b/usr/share/sofirem/cache/tilda @@ -0,0 +1 @@ +A Gtk based drop down terminal for Linux and Unix \ No newline at end of file diff --git a/usr/share/sofirem/cache/tilix b/usr/share/sofirem/cache/tilix new file mode 100644 index 0000000..14df233 --- /dev/null +++ b/usr/share/sofirem/cache/tilix @@ -0,0 +1 @@ +A tiling terminal emulator for Linux using GTK+ 3 \ No newline at end of file diff --git a/usr/share/sofirem/cache/timeshift b/usr/share/sofirem/cache/timeshift new file mode 100644 index 0000000..505cc34 --- /dev/null +++ b/usr/share/sofirem/cache/timeshift @@ -0,0 +1 @@ +A system restore utility for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/timeshift-autosnap b/usr/share/sofirem/cache/timeshift-autosnap new file mode 100644 index 0000000..9285e70 --- /dev/null +++ b/usr/share/sofirem/cache/timeshift-autosnap @@ -0,0 +1 @@ +Timeshift auto-snapshot script which runs before package upgrade using Pacman hook. \ No newline at end of file diff --git a/usr/share/sofirem/cache/tint2 b/usr/share/sofirem/cache/tint2 new file mode 100644 index 0000000..791f960 --- /dev/null +++ b/usr/share/sofirem/cache/tint2 @@ -0,0 +1 @@ +Basic, good-looking task manager for WMs \ No newline at end of file diff --git a/usr/share/sofirem/cache/tlp b/usr/share/sofirem/cache/tlp new file mode 100644 index 0000000..18f232a --- /dev/null +++ b/usr/share/sofirem/cache/tlp @@ -0,0 +1 @@ +Linux Advanced Power Management \ No newline at end of file diff --git a/usr/share/sofirem/cache/tmux b/usr/share/sofirem/cache/tmux new file mode 100644 index 0000000..52c28c9 --- /dev/null +++ b/usr/share/sofirem/cache/tmux @@ -0,0 +1 @@ +A terminal multiplexer \ No newline at end of file diff --git a/usr/share/sofirem/cache/toilet b/usr/share/sofirem/cache/toilet new file mode 100644 index 0000000..d539ba2 --- /dev/null +++ b/usr/share/sofirem/cache/toilet @@ -0,0 +1 @@ +free replacement for the FIGlet utility. \ No newline at end of file diff --git a/usr/share/sofirem/cache/topgrade b/usr/share/sofirem/cache/topgrade new file mode 100644 index 0000000..3ddbaca --- /dev/null +++ b/usr/share/sofirem/cache/topgrade @@ -0,0 +1 @@ +Invoke the upgrade procedure of multiple package managers \ No newline at end of file diff --git a/usr/share/sofirem/cache/topgrade-bin b/usr/share/sofirem/cache/topgrade-bin new file mode 100644 index 0000000..3ddbaca --- /dev/null +++ b/usr/share/sofirem/cache/topgrade-bin @@ -0,0 +1 @@ +Invoke the upgrade procedure of multiple package managers \ No newline at end of file diff --git a/usr/share/sofirem/cache/topgrade-git b/usr/share/sofirem/cache/topgrade-git new file mode 100644 index 0000000..3ddbaca --- /dev/null +++ b/usr/share/sofirem/cache/topgrade-git @@ -0,0 +1 @@ +Invoke the upgrade procedure of multiple package managers \ No newline at end of file diff --git a/usr/share/sofirem/cache/tor b/usr/share/sofirem/cache/tor new file mode 100644 index 0000000..5dea13f --- /dev/null +++ b/usr/share/sofirem/cache/tor @@ -0,0 +1 @@ +Anonymizing overlay network. \ No newline at end of file diff --git a/usr/share/sofirem/cache/tor-browser b/usr/share/sofirem/cache/tor-browser new file mode 100644 index 0000000..a7dfc20 --- /dev/null +++ b/usr/share/sofirem/cache/tor-browser @@ -0,0 +1 @@ +Tor Browser Bundle: anonymous browsing using Firefox and Tor (international PKGBUILD) \ No newline at end of file diff --git a/usr/share/sofirem/cache/torbrowser-launcher b/usr/share/sofirem/cache/torbrowser-launcher new file mode 100644 index 0000000..ce7add7 --- /dev/null +++ b/usr/share/sofirem/cache/torbrowser-launcher @@ -0,0 +1 @@ +Securely and easily download, verify, install, and launch Tor Browser in Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/transmission-gtk b/usr/share/sofirem/cache/transmission-gtk new file mode 100644 index 0000000..23e6ebf --- /dev/null +++ b/usr/share/sofirem/cache/transmission-gtk @@ -0,0 +1 @@ +Fast, easy, and free BitTorrent client (GTK+ GUI) \ No newline at end of file diff --git a/usr/share/sofirem/cache/trizen b/usr/share/sofirem/cache/trizen new file mode 100644 index 0000000..b06e7d2 --- /dev/null +++ b/usr/share/sofirem/cache/trizen @@ -0,0 +1 @@ +Trizen AUR Package Manager: lightweight pacman wrapper and AUR helper. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-anonymous-pro b/usr/share/sofirem/cache/ttf-anonymous-pro new file mode 100644 index 0000000..0de4e60 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-anonymous-pro @@ -0,0 +1 @@ +A family of four fixed-width fonts designed especially with coding in mind \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-bitstream-vera b/usr/share/sofirem/cache/ttf-bitstream-vera new file mode 100644 index 0000000..cfaf01e --- /dev/null +++ b/usr/share/sofirem/cache/ttf-bitstream-vera @@ -0,0 +1 @@ +Bitstream Vera fonts. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-caladea b/usr/share/sofirem/cache/ttf-caladea new file mode 100644 index 0000000..fa69f39 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-caladea @@ -0,0 +1 @@ +A serif font family metric-compatible with Cambria font family \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-carlito b/usr/share/sofirem/cache/ttf-carlito new file mode 100644 index 0000000..ddc5de1 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-carlito @@ -0,0 +1 @@ +Google's Carlito font \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-cascadia-code b/usr/share/sofirem/cache/ttf-cascadia-code new file mode 100644 index 0000000..158ec81 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-cascadia-code @@ -0,0 +1 @@ +A monospaced font by Microsoft that includes programming ligatures \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-cormorant b/usr/share/sofirem/cache/ttf-cormorant new file mode 100644 index 0000000..ebae8e0 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-cormorant @@ -0,0 +1 @@ +Open-source display font family \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-croscore b/usr/share/sofirem/cache/ttf-croscore new file mode 100644 index 0000000..f4ccd9a --- /dev/null +++ b/usr/share/sofirem/cache/ttf-croscore @@ -0,0 +1 @@ +Chrome OS core fonts \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-dejavu b/usr/share/sofirem/cache/ttf-dejavu new file mode 100644 index 0000000..7ac54cd --- /dev/null +++ b/usr/share/sofirem/cache/ttf-dejavu @@ -0,0 +1 @@ +Font family based on the Bitstream Vera Fonts with a wider range of characters \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-droid b/usr/share/sofirem/cache/ttf-droid new file mode 100644 index 0000000..44cc5dc --- /dev/null +++ b/usr/share/sofirem/cache/ttf-droid @@ -0,0 +1 @@ +General-purpose fonts released by Google as part of Android \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-eurof b/usr/share/sofirem/cache/ttf-eurof new file mode 100644 index 0000000..154e576 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-eurof @@ -0,0 +1 @@ +The original eurofurence font designed for headlines, signs, badges, inscriptions, et al. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-fantasque-sans-mono b/usr/share/sofirem/cache/ttf-fantasque-sans-mono new file mode 100644 index 0000000..fa6c7f7 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-fantasque-sans-mono @@ -0,0 +1 @@ +Font family with a great monospaced variant for programmers \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-fira-code b/usr/share/sofirem/cache/ttf-fira-code new file mode 100644 index 0000000..d100a47 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-fira-code @@ -0,0 +1 @@ +Monospaced font with programming ligatures \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-fira-mono b/usr/share/sofirem/cache/ttf-fira-mono new file mode 100644 index 0000000..5f37357 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-fira-mono @@ -0,0 +1 @@ +Mozilla's monospace typeface designed for Firefox OS \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-fira-sans b/usr/share/sofirem/cache/ttf-fira-sans new file mode 100644 index 0000000..1587ddb --- /dev/null +++ b/usr/share/sofirem/cache/ttf-fira-sans @@ -0,0 +1 @@ +Mozilla's sans-serif typeface designed for Firefox OS \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-font-awesome b/usr/share/sofirem/cache/ttf-font-awesome new file mode 100644 index 0000000..d2ca94f --- /dev/null +++ b/usr/share/sofirem/cache/ttf-font-awesome @@ -0,0 +1 @@ +Iconic font designed for Bootstrap \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-hack b/usr/share/sofirem/cache/ttf-hack new file mode 100644 index 0000000..cd4a486 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-hack @@ -0,0 +1 @@ +A hand groomed and optically balanced typeface based on Bitstream Vera Mono. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-hactor b/usr/share/sofirem/cache/ttf-hactor new file mode 100644 index 0000000..39a47f8 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-hactor @@ -0,0 +1 @@ +A font alternative to Operator Mono by combination of Hack and Victor Mono. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-hellvetica b/usr/share/sofirem/cache/ttf-hellvetica new file mode 100644 index 0000000..09234f4 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-hellvetica @@ -0,0 +1 @@ +Like Helvetica, but with like, much shittier kerning for Halloween \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-ibm-plex b/usr/share/sofirem/cache/ttf-ibm-plex new file mode 100644 index 0000000..9807840 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-ibm-plex @@ -0,0 +1 @@ +IBM Plex Mono, Sans, and Serif \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-inconsolata b/usr/share/sofirem/cache/ttf-inconsolata new file mode 100644 index 0000000..1fa3c50 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-inconsolata @@ -0,0 +1 @@ +Monospace font for pretty code listings and for the terminal \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-iosevka-nerd b/usr/share/sofirem/cache/ttf-iosevka-nerd new file mode 100644 index 0000000..781f143 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-iosevka-nerd @@ -0,0 +1 @@ +Typeface family designed for coding, terminal use and technical documents (Nerd Fonts) \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-jetbrains-mono b/usr/share/sofirem/cache/ttf-jetbrains-mono new file mode 100644 index 0000000..964c971 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-jetbrains-mono @@ -0,0 +1 @@ +Typeface for developers, by JetBrains \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-jetbrains-mono-nerd b/usr/share/sofirem/cache/ttf-jetbrains-mono-nerd new file mode 100644 index 0000000..38d4d6b --- /dev/null +++ b/usr/share/sofirem/cache/ttf-jetbrains-mono-nerd @@ -0,0 +1 @@ +JetBrains font patched for nerd fonts library \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-joypixels b/usr/share/sofirem/cache/ttf-joypixels new file mode 100644 index 0000000..7ee343c --- /dev/null +++ b/usr/share/sofirem/cache/ttf-joypixels @@ -0,0 +1 @@ +Emoji as a Service (formerly EmojiOne) \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-lato b/usr/share/sofirem/cache/ttf-lato new file mode 100644 index 0000000..74b5c84 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-lato @@ -0,0 +1 @@ +A sanserif typeface family bearing the Polish name of "Summer" \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-liberation b/usr/share/sofirem/cache/ttf-liberation new file mode 100644 index 0000000..5519e05 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-liberation @@ -0,0 +1 @@ +Font family which aims at metric compatibility with Arial, Times New Roman, and Courier New \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-linux-libertine b/usr/share/sofirem/cache/ttf-linux-libertine new file mode 100644 index 0000000..8090a03 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-linux-libertine @@ -0,0 +1 @@ +Serif (Libertine) and Sans Serif (Biolinum) OpenType fonts with large Unicode coverage \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-linux-libertine-g b/usr/share/sofirem/cache/ttf-linux-libertine-g new file mode 100644 index 0000000..8954cbd --- /dev/null +++ b/usr/share/sofirem/cache/ttf-linux-libertine-g @@ -0,0 +1 @@ +Graphite port of Linux Libertine and Linux Biolinum fonts \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-mac-fonts b/usr/share/sofirem/cache/ttf-mac-fonts new file mode 100644 index 0000000..270f7a1 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-mac-fonts @@ -0,0 +1 @@ +Mac fonts including Lucida Grande, Apple Garamond and other fonts from Apple \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-material-design-iconic-font b/usr/share/sofirem/cache/ttf-material-design-iconic-font new file mode 100644 index 0000000..f3d3705 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-material-design-iconic-font @@ -0,0 +1 @@ +Material Design Iconic Font is a full suite of material design icons (created and maintained by Google) with additional community-designed and brands icons for easy scalable vector graphics on websites or desktop. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-meslo-nerd-font-powerlevel10k b/usr/share/sofirem/cache/ttf-meslo-nerd-font-powerlevel10k new file mode 100644 index 0000000..7968a53 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-meslo-nerd-font-powerlevel10k @@ -0,0 +1 @@ +Meslo Nerd Font patched for Powerlevel10k \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-monofur b/usr/share/sofirem/cache/ttf-monofur new file mode 100644 index 0000000..1a7f342 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-monofur @@ -0,0 +1 @@ +A monospaced font derived from the eurofurence typeface family \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-ms-fonts b/usr/share/sofirem/cache/ttf-ms-fonts new file mode 100644 index 0000000..b075e58 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-ms-fonts @@ -0,0 +1 @@ +Core TTF Fonts from Microsoft \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-nerd-fonts-symbols b/usr/share/sofirem/cache/ttf-nerd-fonts-symbols new file mode 100644 index 0000000..62cf29f --- /dev/null +++ b/usr/share/sofirem/cache/ttf-nerd-fonts-symbols @@ -0,0 +1 @@ +High number of extra glyphs from popular 'iconic fonts' (2048-em) \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-nerd-fonts-symbols-1000-em b/usr/share/sofirem/cache/ttf-nerd-fonts-symbols-1000-em new file mode 100644 index 0000000..689605a --- /dev/null +++ b/usr/share/sofirem/cache/ttf-nerd-fonts-symbols-1000-em @@ -0,0 +1 @@ +High number of extra glyphs from popular 'iconic fonts' (1000-em) \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-nerd-fonts-symbols-1000-em-mono b/usr/share/sofirem/cache/ttf-nerd-fonts-symbols-1000-em-mono new file mode 100644 index 0000000..14bb1b4 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-nerd-fonts-symbols-1000-em-mono @@ -0,0 +1 @@ +High number of extra glyphs from popular 'iconic fonts' (1000-em monospace) \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-nerd-fonts-symbols-mono b/usr/share/sofirem/cache/ttf-nerd-fonts-symbols-mono new file mode 100644 index 0000000..689605a --- /dev/null +++ b/usr/share/sofirem/cache/ttf-nerd-fonts-symbols-mono @@ -0,0 +1 @@ +High number of extra glyphs from popular 'iconic fonts' (1000-em) \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-opensans b/usr/share/sofirem/cache/ttf-opensans new file mode 100644 index 0000000..967b4be --- /dev/null +++ b/usr/share/sofirem/cache/ttf-opensans @@ -0,0 +1 @@ +Sans-serif typeface commissioned by Google \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-proggy-clean b/usr/share/sofirem/cache/ttf-proggy-clean new file mode 100644 index 0000000..77590e1 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-proggy-clean @@ -0,0 +1 @@ +Monospaced fonts for programming \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-roboto b/usr/share/sofirem/cache/ttf-roboto new file mode 100644 index 0000000..4ac9450 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-roboto @@ -0,0 +1 @@ +Google's signature family of fonts \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-roboto-mono b/usr/share/sofirem/cache/ttf-roboto-mono new file mode 100644 index 0000000..f21365e --- /dev/null +++ b/usr/share/sofirem/cache/ttf-roboto-mono @@ -0,0 +1 @@ +A monospaced addition to the Roboto type family. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-sourcecodepro-nerd b/usr/share/sofirem/cache/ttf-sourcecodepro-nerd new file mode 100644 index 0000000..4318257 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-sourcecodepro-nerd @@ -0,0 +1 @@ +Patched Source Code Pro from nerd fonts \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-ubuntu-font-family b/usr/share/sofirem/cache/ttf-ubuntu-font-family new file mode 100644 index 0000000..dbe4939 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-ubuntu-font-family @@ -0,0 +1 @@ +Ubuntu font family \ No newline at end of file diff --git a/usr/share/sofirem/cache/ttf-wps-fonts b/usr/share/sofirem/cache/ttf-wps-fonts new file mode 100644 index 0000000..90e8b56 --- /dev/null +++ b/usr/share/sofirem/cache/ttf-wps-fonts @@ -0,0 +1 @@ +Symbol fonts required by wps-office. \ No newline at end of file diff --git a/usr/share/sofirem/cache/tty-clock b/usr/share/sofirem/cache/tty-clock new file mode 100644 index 0000000..4013e27 --- /dev/null +++ b/usr/share/sofirem/cache/tty-clock @@ -0,0 +1 @@ +Digital clock in ncurses \ No newline at end of file diff --git a/usr/share/sofirem/cache/tty-clock-git b/usr/share/sofirem/cache/tty-clock-git new file mode 100644 index 0000000..4013e27 --- /dev/null +++ b/usr/share/sofirem/cache/tty-clock-git @@ -0,0 +1 @@ +Digital clock in ncurses \ No newline at end of file diff --git a/usr/share/sofirem/cache/tuxboot b/usr/share/sofirem/cache/tuxboot new file mode 100644 index 0000000..1c94562 --- /dev/null +++ b/usr/share/sofirem/cache/tuxboot @@ -0,0 +1 @@ +A tool that helps you to create a bootable Live USB drive for Clonezilla live, DRBL live, GParted live and Tux2live \ No newline at end of file diff --git a/usr/share/sofirem/cache/tuxboot-git b/usr/share/sofirem/cache/tuxboot-git new file mode 100644 index 0000000..2fa7a16 --- /dev/null +++ b/usr/share/sofirem/cache/tuxboot-git @@ -0,0 +1 @@ +A tool that helps you to create a bootable Live USB drive for Clonezilla live, DRBL live, GParted live and Tux2live. Development version \ No newline at end of file diff --git a/usr/share/sofirem/cache/tweetdeck-desktop b/usr/share/sofirem/cache/tweetdeck-desktop new file mode 100644 index 0000000..f5c4e08 --- /dev/null +++ b/usr/share/sofirem/cache/tweetdeck-desktop @@ -0,0 +1 @@ +An unofficial tweetdeck desktop app \ No newline at end of file diff --git a/usr/share/sofirem/cache/ufetch-arco-git b/usr/share/sofirem/cache/ufetch-arco-git new file mode 100644 index 0000000..b74994e --- /dev/null +++ b/usr/share/sofirem/cache/ufetch-arco-git @@ -0,0 +1 @@ +Info script for minimal *nix systems. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ufetch-git b/usr/share/sofirem/cache/ufetch-git new file mode 100644 index 0000000..3b02245 --- /dev/null +++ b/usr/share/sofirem/cache/ufetch-git @@ -0,0 +1 @@ +Tiny system info for Unix-like operating systems \ No newline at end of file diff --git a/usr/share/sofirem/cache/ulauncher b/usr/share/sofirem/cache/ulauncher new file mode 100644 index 0000000..08f5767 --- /dev/null +++ b/usr/share/sofirem/cache/ulauncher @@ -0,0 +1 @@ +Application launcher for Linux \ No newline at end of file diff --git a/usr/share/sofirem/cache/unimatrix-git b/usr/share/sofirem/cache/unimatrix-git new file mode 100644 index 0000000..0ff4719 --- /dev/null +++ b/usr/share/sofirem/cache/unimatrix-git @@ -0,0 +1 @@ +Python script to simulate the display from "The Matrix" in terminal. Uses half-width katakana unicode characters by default, but can use custom character sets. \ No newline at end of file diff --git a/usr/share/sofirem/cache/upower b/usr/share/sofirem/cache/upower new file mode 100644 index 0000000..356baf1 --- /dev/null +++ b/usr/share/sofirem/cache/upower @@ -0,0 +1 @@ +Abstraction for enumerating power devices, listening to device events and querying history and statistics \ No newline at end of file diff --git a/usr/share/sofirem/cache/urxvt-fullscreen b/usr/share/sofirem/cache/urxvt-fullscreen new file mode 100644 index 0000000..088773d --- /dev/null +++ b/usr/share/sofirem/cache/urxvt-fullscreen @@ -0,0 +1 @@ +script to switch fullscreen and above-other-windows on urxvt \ No newline at end of file diff --git a/usr/share/sofirem/cache/urxvt-perls b/usr/share/sofirem/cache/urxvt-perls new file mode 100644 index 0000000..61edeb3 --- /dev/null +++ b/usr/share/sofirem/cache/urxvt-perls @@ -0,0 +1 @@ +URL and Mouseless text selection for rxvt-unicode \ No newline at end of file diff --git a/usr/share/sofirem/cache/urxvt-resize-font-git b/usr/share/sofirem/cache/urxvt-resize-font-git new file mode 100644 index 0000000..0ae9ba0 --- /dev/null +++ b/usr/share/sofirem/cache/urxvt-resize-font-git @@ -0,0 +1 @@ +An urxvt plugin to adjust the font size on the fly \ No newline at end of file diff --git a/usr/share/sofirem/cache/variety b/usr/share/sofirem/cache/variety new file mode 100644 index 0000000..87d41a9 --- /dev/null +++ b/usr/share/sofirem/cache/variety @@ -0,0 +1 @@ +Changes the wallpaper on a regular interval using user-specified or automatically downloaded images. \ No newline at end of file diff --git a/usr/share/sofirem/cache/ventoy-bin b/usr/share/sofirem/cache/ventoy-bin new file mode 100644 index 0000000..e591438 --- /dev/null +++ b/usr/share/sofirem/cache/ventoy-bin @@ -0,0 +1 @@ +A new multiboot USB solution \ No newline at end of file diff --git a/usr/share/sofirem/cache/viber b/usr/share/sofirem/cache/viber new file mode 100644 index 0000000..3f5d3d9 --- /dev/null +++ b/usr/share/sofirem/cache/viber @@ -0,0 +1 @@ +Proprietary cross-platform IM and VoIP software \ No newline at end of file diff --git a/usr/share/sofirem/cache/vicious b/usr/share/sofirem/cache/vicious new file mode 100644 index 0000000..afcd387 --- /dev/null +++ b/usr/share/sofirem/cache/vicious @@ -0,0 +1 @@ +Widgets for the Awesome window manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/vim b/usr/share/sofirem/cache/vim new file mode 100644 index 0000000..c9ed3bd --- /dev/null +++ b/usr/share/sofirem/cache/vim @@ -0,0 +1 @@ +Vi Improved, a highly configurable, improved version of the vi text editor \ No newline at end of file diff --git a/usr/share/sofirem/cache/vim-runtime b/usr/share/sofirem/cache/vim-runtime new file mode 100644 index 0000000..eaf1e78 --- /dev/null +++ b/usr/share/sofirem/cache/vim-runtime @@ -0,0 +1 @@ +Vi Improved, a highly configurable, improved version of the vi text editor (shared runtime) \ No newline at end of file diff --git a/usr/share/sofirem/cache/vimix-cursors b/usr/share/sofirem/cache/vimix-cursors new file mode 100644 index 0000000..3ad6e7b --- /dev/null +++ b/usr/share/sofirem/cache/vimix-cursors @@ -0,0 +1 @@ +An X Cursor theme inspired by Material design and based on capitaine-cursors \ No newline at end of file diff --git a/usr/share/sofirem/cache/vimix-icon-theme-git b/usr/share/sofirem/cache/vimix-icon-theme-git new file mode 100644 index 0000000..8c5f891 --- /dev/null +++ b/usr/share/sofirem/cache/vimix-icon-theme-git @@ -0,0 +1 @@ +A Material Design icon theme based on Paper Icon Theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/virtualbox b/usr/share/sofirem/cache/virtualbox new file mode 100644 index 0000000..2fd1082 --- /dev/null +++ b/usr/share/sofirem/cache/virtualbox @@ -0,0 +1 @@ +Powerful x86 virtualization for enterprise as well as home use \ No newline at end of file diff --git a/usr/share/sofirem/cache/virtualbox-host-dkms b/usr/share/sofirem/cache/virtualbox-host-dkms new file mode 100644 index 0000000..67a9ae9 --- /dev/null +++ b/usr/share/sofirem/cache/virtualbox-host-dkms @@ -0,0 +1 @@ +VirtualBox Host kernel modules sources \ No newline at end of file diff --git a/usr/share/sofirem/cache/visual-studio-code-bin b/usr/share/sofirem/cache/visual-studio-code-bin new file mode 100644 index 0000000..16f087b --- /dev/null +++ b/usr/share/sofirem/cache/visual-studio-code-bin @@ -0,0 +1 @@ +Visual Studio Code (vscode): Editor for building and debugging modern web and cloud applications (official binary version) \ No newline at end of file diff --git a/usr/share/sofirem/cache/vivaldi b/usr/share/sofirem/cache/vivaldi new file mode 100644 index 0000000..942c1b9 --- /dev/null +++ b/usr/share/sofirem/cache/vivaldi @@ -0,0 +1 @@ +An advanced browser made with the power user in mind. \ No newline at end of file diff --git a/usr/share/sofirem/cache/vivaldi-ffmpeg-codecs b/usr/share/sofirem/cache/vivaldi-ffmpeg-codecs new file mode 100644 index 0000000..638d628 --- /dev/null +++ b/usr/share/sofirem/cache/vivaldi-ffmpeg-codecs @@ -0,0 +1 @@ +additional support for proprietary codecs for vivaldi \ No newline at end of file diff --git a/usr/share/sofirem/cache/vivaldi-widevine b/usr/share/sofirem/cache/vivaldi-widevine new file mode 100644 index 0000000..19d5bb5 --- /dev/null +++ b/usr/share/sofirem/cache/vivaldi-widevine @@ -0,0 +1 @@ +A browser plugin designed for the viewing of premium video content, standalone for vivaldi \ No newline at end of file diff --git a/usr/share/sofirem/cache/vkbasalt b/usr/share/sofirem/cache/vkbasalt new file mode 100644 index 0000000..65a41b0 --- /dev/null +++ b/usr/share/sofirem/cache/vkbasalt @@ -0,0 +1 @@ +A Vulkan post-processing layer. Some of the effects are CAS, FXAA, SMAA, deband. \ No newline at end of file diff --git a/usr/share/sofirem/cache/vlc b/usr/share/sofirem/cache/vlc new file mode 100644 index 0000000..5e3942f --- /dev/null +++ b/usr/share/sofirem/cache/vlc @@ -0,0 +1 @@ +Multi-platform MPEG, VCD/DVD, and DivX player \ No newline at end of file diff --git a/usr/share/sofirem/cache/vmware-keymaps b/usr/share/sofirem/cache/vmware-keymaps new file mode 100644 index 0000000..3469752 --- /dev/null +++ b/usr/share/sofirem/cache/vmware-keymaps @@ -0,0 +1 @@ +Keymaps required by some VMware packages \ No newline at end of file diff --git a/usr/share/sofirem/cache/vmware-workstation b/usr/share/sofirem/cache/vmware-workstation new file mode 100644 index 0000000..63c71ab --- /dev/null +++ b/usr/share/sofirem/cache/vmware-workstation @@ -0,0 +1 @@ +The industry standard for running multiple operating systems as virtual machines on a single Linux PC. \ No newline at end of file diff --git a/usr/share/sofirem/cache/vnstat b/usr/share/sofirem/cache/vnstat new file mode 100644 index 0000000..9f39524 --- /dev/null +++ b/usr/share/sofirem/cache/vnstat @@ -0,0 +1 @@ +A console-based network traffic monitor \ No newline at end of file diff --git a/usr/share/sofirem/cache/volumeicon b/usr/share/sofirem/cache/volumeicon new file mode 100644 index 0000000..2d0be04 --- /dev/null +++ b/usr/share/sofirem/cache/volumeicon @@ -0,0 +1 @@ +Volume control for the system tray \ No newline at end of file diff --git a/usr/share/sofirem/cache/vscodium-bin b/usr/share/sofirem/cache/vscodium-bin new file mode 100644 index 0000000..ecf5968 --- /dev/null +++ b/usr/share/sofirem/cache/vscodium-bin @@ -0,0 +1 @@ +Binary releases of VS Code without MS branding/telemetry/licensing. \ No newline at end of file diff --git a/usr/share/sofirem/cache/wacom-settings-git b/usr/share/sofirem/cache/wacom-settings-git new file mode 100644 index 0000000..8bfca9a --- /dev/null +++ b/usr/share/sofirem/cache/wacom-settings-git @@ -0,0 +1 @@ +GUI for calibrating the wacom tablet to a screen or window \ No newline at end of file diff --git a/usr/share/sofirem/cache/wacom-utility b/usr/share/sofirem/cache/wacom-utility new file mode 100644 index 0000000..5e40ea7 --- /dev/null +++ b/usr/share/sofirem/cache/wacom-utility @@ -0,0 +1 @@ +Graphical tablet configuration utility \ No newline at end of file diff --git a/usr/share/sofirem/cache/warsow b/usr/share/sofirem/cache/warsow new file mode 100644 index 0000000..079d48a --- /dev/null +++ b/usr/share/sofirem/cache/warsow @@ -0,0 +1 @@ +Free online multiplayer competitive FPS based on the Qfusion engine \ No newline at end of file diff --git a/usr/share/sofirem/cache/waydroid b/usr/share/sofirem/cache/waydroid new file mode 100644 index 0000000..1c73275 --- /dev/null +++ b/usr/share/sofirem/cache/waydroid @@ -0,0 +1 @@ +A container-based approach to boot a full Android system on a regular Linux system \ No newline at end of file diff --git a/usr/share/sofirem/cache/we10x-icon-theme-git b/usr/share/sofirem/cache/we10x-icon-theme-git new file mode 100644 index 0000000..38b6c74 --- /dev/null +++ b/usr/share/sofirem/cache/we10x-icon-theme-git @@ -0,0 +1 @@ +A colorful design icon theme for linux desktops \ No newline at end of file diff --git a/usr/share/sofirem/cache/wesnoth b/usr/share/sofirem/cache/wesnoth new file mode 100644 index 0000000..88269e6 --- /dev/null +++ b/usr/share/sofirem/cache/wesnoth @@ -0,0 +1 @@ +A turn-based strategy game on a fantasy world \ No newline at end of file diff --git a/usr/share/sofirem/cache/whatsapp-nativefier b/usr/share/sofirem/cache/whatsapp-nativefier new file mode 100644 index 0000000..7f5e848 --- /dev/null +++ b/usr/share/sofirem/cache/whatsapp-nativefier @@ -0,0 +1 @@ +WhatsApp desktop built with nativefier (electron) \ No newline at end of file diff --git a/usr/share/sofirem/cache/whitesur-icon-theme-git b/usr/share/sofirem/cache/whitesur-icon-theme-git new file mode 100644 index 0000000..157e2d9 --- /dev/null +++ b/usr/share/sofirem/cache/whitesur-icon-theme-git @@ -0,0 +1 @@ +MacOS Big Sur style icon theme for linux desktops \ No newline at end of file diff --git a/usr/share/sofirem/cache/wire-desktop b/usr/share/sofirem/cache/wire-desktop new file mode 100644 index 0000000..4538d77 --- /dev/null +++ b/usr/share/sofirem/cache/wire-desktop @@ -0,0 +1 @@ +End-to-end encrypted messenger with file sharing, voice calls and video conferences \ No newline at end of file diff --git a/usr/share/sofirem/cache/wireshark-qt b/usr/share/sofirem/cache/wireshark-qt new file mode 100644 index 0000000..75fa5c0 --- /dev/null +++ b/usr/share/sofirem/cache/wireshark-qt @@ -0,0 +1 @@ +Network traffic and protocol analyzer/sniffer - Qt GUI \ No newline at end of file diff --git a/usr/share/sofirem/cache/wmderland-git b/usr/share/sofirem/cache/wmderland-git new file mode 100644 index 0000000..1500d59 --- /dev/null +++ b/usr/share/sofirem/cache/wmderland-git @@ -0,0 +1 @@ +X11 tiling window manager using space partitioning trees \ No newline at end of file diff --git a/usr/share/sofirem/cache/woeusb b/usr/share/sofirem/cache/woeusb new file mode 100644 index 0000000..8d2c60c --- /dev/null +++ b/usr/share/sofirem/cache/woeusb @@ -0,0 +1 @@ +A Linux program to create Windows USB stick installer from a Windows DVD or an image \ No newline at end of file diff --git a/usr/share/sofirem/cache/workrave b/usr/share/sofirem/cache/workrave new file mode 100644 index 0000000..cf1bc82 --- /dev/null +++ b/usr/share/sofirem/cache/workrave @@ -0,0 +1 @@ +Assist in the recovery and prevention of Repetitive Strain Injury (RSI) \ No newline at end of file diff --git a/usr/share/sofirem/cache/worm-dev-git b/usr/share/sofirem/cache/worm-dev-git new file mode 100644 index 0000000..3d22df0 --- /dev/null +++ b/usr/share/sofirem/cache/worm-dev-git @@ -0,0 +1 @@ +A floating, tag-based window manager written in Nim \ No newline at end of file diff --git a/usr/share/sofirem/cache/wps-office b/usr/share/sofirem/cache/wps-office new file mode 100644 index 0000000..526c24a --- /dev/null +++ b/usr/share/sofirem/cache/wps-office @@ -0,0 +1 @@ +Kingsoft Office (WPS Office) - an office productivity suite \ No newline at end of file diff --git a/usr/share/sofirem/cache/wps-office-mime b/usr/share/sofirem/cache/wps-office-mime new file mode 100644 index 0000000..60d0a58 --- /dev/null +++ b/usr/share/sofirem/cache/wps-office-mime @@ -0,0 +1 @@ +Mime files provided by Kingsoft Office (WPS Office) \ No newline at end of file diff --git a/usr/share/sofirem/cache/wttr b/usr/share/sofirem/cache/wttr new file mode 100644 index 0000000..633171e --- /dev/null +++ b/usr/share/sofirem/cache/wttr @@ -0,0 +1 @@ +a simple script that helps you check weather condition using site : http://wttr.in \ No newline at end of file diff --git a/usr/share/sofirem/cache/xcape b/usr/share/sofirem/cache/xcape new file mode 100644 index 0000000..98ce6a2 --- /dev/null +++ b/usr/share/sofirem/cache/xcape @@ -0,0 +1 @@ +Configure modifier keys to act as other keys when pressed and released on their own \ No newline at end of file diff --git a/usr/share/sofirem/cache/xcursor-arch-cursor-complete b/usr/share/sofirem/cache/xcursor-arch-cursor-complete new file mode 100644 index 0000000..f239e7d --- /dev/null +++ b/usr/share/sofirem/cache/xcursor-arch-cursor-complete @@ -0,0 +1 @@ +Expansion of Arch Cursor Simple theme that keeps the best and modifies the rest. \ No newline at end of file diff --git a/usr/share/sofirem/cache/xcursor-breeze b/usr/share/sofirem/cache/xcursor-breeze new file mode 100644 index 0000000..517c4a9 --- /dev/null +++ b/usr/share/sofirem/cache/xcursor-breeze @@ -0,0 +1 @@ +KDE Plasma 5 'Breeze' cursor theme. This package is for usage in non-KDE Plasma desktops. \ No newline at end of file diff --git a/usr/share/sofirem/cache/xcursor-comix b/usr/share/sofirem/cache/xcursor-comix new file mode 100644 index 0000000..9a92c73 --- /dev/null +++ b/usr/share/sofirem/cache/xcursor-comix @@ -0,0 +1 @@ +Comix X Cursor Theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/xcursor-flatbed b/usr/share/sofirem/cache/xcursor-flatbed new file mode 100644 index 0000000..f136b14 --- /dev/null +++ b/usr/share/sofirem/cache/xcursor-flatbed @@ -0,0 +1 @@ +Flatbed XCursor Theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/xcursor-neutral b/usr/share/sofirem/cache/xcursor-neutral new file mode 100644 index 0000000..8521040 --- /dev/null +++ b/usr/share/sofirem/cache/xcursor-neutral @@ -0,0 +1 @@ +A smoothed and shadowed X cursors theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/xcursor-premium b/usr/share/sofirem/cache/xcursor-premium new file mode 100644 index 0000000..130d9fd --- /dev/null +++ b/usr/share/sofirem/cache/xcursor-premium @@ -0,0 +1 @@ +Premium X Cursor Theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/xcursor-simpleandsoft b/usr/share/sofirem/cache/xcursor-simpleandsoft new file mode 100644 index 0000000..4b7c2b6 --- /dev/null +++ b/usr/share/sofirem/cache/xcursor-simpleandsoft @@ -0,0 +1 @@ +A simple and soft X cursor theme \ No newline at end of file diff --git a/usr/share/sofirem/cache/xdgmenumaker b/usr/share/sofirem/cache/xdgmenumaker new file mode 100644 index 0000000..2b4ddd4 --- /dev/null +++ b/usr/share/sofirem/cache/xdgmenumaker @@ -0,0 +1 @@ +A command line tool that generates XDG menus for several window managers \ No newline at end of file diff --git a/usr/share/sofirem/cache/xdman b/usr/share/sofirem/cache/xdman new file mode 100644 index 0000000..fb9bf83 --- /dev/null +++ b/usr/share/sofirem/cache/xdman @@ -0,0 +1 @@ +Xtreme Download Manager is a powerful tool to increase download speed up-to 500%, save videos from video sharing sites and integration with ANY browser. \ No newline at end of file diff --git a/usr/share/sofirem/cache/xdo b/usr/share/sofirem/cache/xdo new file mode 100644 index 0000000..953aba8 --- /dev/null +++ b/usr/share/sofirem/cache/xdo @@ -0,0 +1 @@ +Utility for performing actions on windows in X \ No newline at end of file diff --git a/usr/share/sofirem/cache/xf86-video-amdgpu b/usr/share/sofirem/cache/xf86-video-amdgpu new file mode 100644 index 0000000..dc63e61 --- /dev/null +++ b/usr/share/sofirem/cache/xf86-video-amdgpu @@ -0,0 +1 @@ +X.org amdgpu video driver \ No newline at end of file diff --git a/usr/share/sofirem/cache/xf86-video-ati b/usr/share/sofirem/cache/xf86-video-ati new file mode 100644 index 0000000..72eddf5 --- /dev/null +++ b/usr/share/sofirem/cache/xf86-video-ati @@ -0,0 +1 @@ +X.org ati video driver \ No newline at end of file diff --git a/usr/share/sofirem/cache/xf86-video-intel b/usr/share/sofirem/cache/xf86-video-intel new file mode 100644 index 0000000..0f9eaa9 --- /dev/null +++ b/usr/share/sofirem/cache/xf86-video-intel @@ -0,0 +1 @@ +X.org Intel i810/i830/i915/945G/G965+ video drivers \ No newline at end of file diff --git a/usr/share/sofirem/cache/xf86-video-nouveau b/usr/share/sofirem/cache/xf86-video-nouveau new file mode 100644 index 0000000..ca9f4df --- /dev/null +++ b/usr/share/sofirem/cache/xf86-video-nouveau @@ -0,0 +1 @@ +Open Source 3D acceleration driver for nVidia cards \ No newline at end of file diff --git a/usr/share/sofirem/cache/xf86-video-openchrome b/usr/share/sofirem/cache/xf86-video-openchrome new file mode 100644 index 0000000..9bfe87b --- /dev/null +++ b/usr/share/sofirem/cache/xf86-video-openchrome @@ -0,0 +1 @@ +X.Org Openchrome drivers \ No newline at end of file diff --git a/usr/share/sofirem/cache/xf86-video-vesa b/usr/share/sofirem/cache/xf86-video-vesa new file mode 100644 index 0000000..297213e --- /dev/null +++ b/usr/share/sofirem/cache/xf86-video-vesa @@ -0,0 +1 @@ +X.org vesa video driver \ No newline at end of file diff --git a/usr/share/sofirem/cache/xfburn b/usr/share/sofirem/cache/xfburn new file mode 100644 index 0000000..39a20e1 --- /dev/null +++ b/usr/share/sofirem/cache/xfburn @@ -0,0 +1 @@ +A simple CD/DVD burning tool based on libburnia libraries \ No newline at end of file diff --git a/usr/share/sofirem/cache/xfce4-notifyd b/usr/share/sofirem/cache/xfce4-notifyd new file mode 100644 index 0000000..538e415 --- /dev/null +++ b/usr/share/sofirem/cache/xfce4-notifyd @@ -0,0 +1 @@ +Notification daemon for the Xfce desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/xfce4-power-manager b/usr/share/sofirem/cache/xfce4-power-manager new file mode 100644 index 0000000..221a3ca --- /dev/null +++ b/usr/share/sofirem/cache/xfce4-power-manager @@ -0,0 +1 @@ +Power manager for the Xfce desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/xfce4-screenshooter b/usr/share/sofirem/cache/xfce4-screenshooter new file mode 100644 index 0000000..671b63c --- /dev/null +++ b/usr/share/sofirem/cache/xfce4-screenshooter @@ -0,0 +1 @@ +An application to take screenshots \ No newline at end of file diff --git a/usr/share/sofirem/cache/xfce4-settings b/usr/share/sofirem/cache/xfce4-settings new file mode 100644 index 0000000..16fe6b5 --- /dev/null +++ b/usr/share/sofirem/cache/xfce4-settings @@ -0,0 +1 @@ +Settings manager of the Xfce desktop \ No newline at end of file diff --git a/usr/share/sofirem/cache/xfce4-taskmanager b/usr/share/sofirem/cache/xfce4-taskmanager new file mode 100644 index 0000000..8cbf5df --- /dev/null +++ b/usr/share/sofirem/cache/xfce4-taskmanager @@ -0,0 +1 @@ +Easy to use task manager \ No newline at end of file diff --git a/usr/share/sofirem/cache/xfce4-terminal b/usr/share/sofirem/cache/xfce4-terminal new file mode 100644 index 0000000..2c53908 --- /dev/null +++ b/usr/share/sofirem/cache/xfce4-terminal @@ -0,0 +1 @@ +A modern terminal emulator primarily for the Xfce desktop environment \ No newline at end of file diff --git a/usr/share/sofirem/cache/xfce4-terminal-base16-colors-git b/usr/share/sofirem/cache/xfce4-terminal-base16-colors-git new file mode 100644 index 0000000..4c63c32 --- /dev/null +++ b/usr/share/sofirem/cache/xfce4-terminal-base16-colors-git @@ -0,0 +1 @@ +base16 themes for XFCE terminal \ No newline at end of file diff --git a/usr/share/sofirem/cache/xlunch-git b/usr/share/sofirem/cache/xlunch-git new file mode 100644 index 0000000..71309b6 --- /dev/null +++ b/usr/share/sofirem/cache/xlunch-git @@ -0,0 +1 @@ +Graphical app launcher for X with few dependencies \ No newline at end of file diff --git a/usr/share/sofirem/cache/xmonad b/usr/share/sofirem/cache/xmonad new file mode 100644 index 0000000..a142999 --- /dev/null +++ b/usr/share/sofirem/cache/xmonad @@ -0,0 +1 @@ +Lightweight X11 tiled window manager written in Haskell \ No newline at end of file diff --git a/usr/share/sofirem/cache/xmonad-contrib b/usr/share/sofirem/cache/xmonad-contrib new file mode 100644 index 0000000..0072a95 --- /dev/null +++ b/usr/share/sofirem/cache/xmonad-contrib @@ -0,0 +1 @@ +Add-ons for xmonad \ No newline at end of file diff --git a/usr/share/sofirem/cache/xmonad-log b/usr/share/sofirem/cache/xmonad-log new file mode 100644 index 0000000..d36424e --- /dev/null +++ b/usr/share/sofirem/cache/xmonad-log @@ -0,0 +1 @@ +DBus monitor for xmonad log events \ No newline at end of file diff --git a/usr/share/sofirem/cache/xmonad-utils b/usr/share/sofirem/cache/xmonad-utils new file mode 100644 index 0000000..89e2705 --- /dev/null +++ b/usr/share/sofirem/cache/xmonad-utils @@ -0,0 +1 @@ +Small collection of X utilities \ No newline at end of file diff --git a/usr/share/sofirem/cache/xonotic b/usr/share/sofirem/cache/xonotic new file mode 100644 index 0000000..6a70e2e --- /dev/null +++ b/usr/share/sofirem/cache/xonotic @@ -0,0 +1 @@ +A free, fast-paced crossplatform first-person shooter \ No newline at end of file diff --git a/usr/share/sofirem/cache/xonotic-data b/usr/share/sofirem/cache/xonotic-data new file mode 100644 index 0000000..f0b4951 --- /dev/null +++ b/usr/share/sofirem/cache/xonotic-data @@ -0,0 +1 @@ +A free, fast-paced crossplatform first-person shooter (data files) \ No newline at end of file diff --git a/usr/share/sofirem/cache/xpdf b/usr/share/sofirem/cache/xpdf new file mode 100644 index 0000000..98a45cf --- /dev/null +++ b/usr/share/sofirem/cache/xpdf @@ -0,0 +1 @@ +Viewer for Portable Document Format (PDF) files \ No newline at end of file diff --git a/usr/share/sofirem/cache/xreader b/usr/share/sofirem/cache/xreader new file mode 100644 index 0000000..962ea6c --- /dev/null +++ b/usr/share/sofirem/cache/xreader @@ -0,0 +1 @@ +Document viewer for files like PDF and Postscript. X-Apps Project. \ No newline at end of file diff --git a/usr/share/sofirem/cache/xscreensaver b/usr/share/sofirem/cache/xscreensaver new file mode 100644 index 0000000..da63c7a --- /dev/null +++ b/usr/share/sofirem/cache/xscreensaver @@ -0,0 +1 @@ +Screen saver and locker for the X Window System \ No newline at end of file diff --git a/usr/share/sofirem/cache/xtitle-git b/usr/share/sofirem/cache/xtitle-git new file mode 100644 index 0000000..3102e7c --- /dev/null +++ b/usr/share/sofirem/cache/xtitle-git @@ -0,0 +1 @@ +Outputs X window titles \ No newline at end of file diff --git a/usr/share/sofirem/cache/yad b/usr/share/sofirem/cache/yad new file mode 100644 index 0000000..b93fcf0 --- /dev/null +++ b/usr/share/sofirem/cache/yad @@ -0,0 +1 @@ +A fork of zenity - display graphical dialogs from shell scripts or command line \ No newline at end of file diff --git a/usr/share/sofirem/cache/yakuake b/usr/share/sofirem/cache/yakuake new file mode 100644 index 0000000..fa67d3c --- /dev/null +++ b/usr/share/sofirem/cache/yakuake @@ -0,0 +1 @@ +A drop-down terminal emulator based on KDE konsole technology \ No newline at end of file diff --git a/usr/share/sofirem/cache/yay b/usr/share/sofirem/cache/yay new file mode 100644 index 0000000..379b6d9 --- /dev/null +++ b/usr/share/sofirem/cache/yay @@ -0,0 +1 @@ +Yet another yogurt. Pacman wrapper and AUR helper written in go. \ No newline at end of file diff --git a/usr/share/sofirem/cache/yay-bin b/usr/share/sofirem/cache/yay-bin new file mode 100644 index 0000000..b57bc3c --- /dev/null +++ b/usr/share/sofirem/cache/yay-bin @@ -0,0 +1 @@ +Yet another yogurt. Pacman wrapper and AUR helper written in go. Pre-compiled. \ No newline at end of file diff --git a/usr/share/sofirem/cache/yay-git b/usr/share/sofirem/cache/yay-git new file mode 100644 index 0000000..4152532 --- /dev/null +++ b/usr/share/sofirem/cache/yay-git @@ -0,0 +1 @@ +Yet another yogurt. Pacman wrapper and AUR helper written in go. (development version) \ No newline at end of file diff --git a/usr/share/sofirem/cache/yin-yang-git b/usr/share/sofirem/cache/yin-yang-git new file mode 100644 index 0000000..0cf8920 --- /dev/null +++ b/usr/share/sofirem/cache/yin-yang-git @@ -0,0 +1 @@ +Auto Nightmode for KDE, Gnome, Budgie, VSCode, Atom and more \ No newline at end of file diff --git a/usr/share/sofirem/cache/youtube-dl b/usr/share/sofirem/cache/youtube-dl new file mode 100644 index 0000000..958eb6a --- /dev/null +++ b/usr/share/sofirem/cache/youtube-dl @@ -0,0 +1 @@ +A command-line program to download videos from YouTube.com and a few more sites \ No newline at end of file diff --git a/usr/share/sofirem/cache/youtube-dl-gui-git b/usr/share/sofirem/cache/youtube-dl-gui-git new file mode 100644 index 0000000..8341348 --- /dev/null +++ b/usr/share/sofirem/cache/youtube-dl-gui-git @@ -0,0 +1 @@ +Cross platform front-end GUI of the popular youtube-dl written in wxPython \ No newline at end of file diff --git a/usr/share/sofirem/cache/yt-dlp b/usr/share/sofirem/cache/yt-dlp new file mode 100644 index 0000000..b6419af --- /dev/null +++ b/usr/share/sofirem/cache/yt-dlp @@ -0,0 +1 @@ +A youtube-dl fork with additional features and fixes \ No newline at end of file diff --git a/usr/share/sofirem/cache/zafiro-icon-theme b/usr/share/sofirem/cache/zafiro-icon-theme new file mode 100644 index 0000000..3a6e074 --- /dev/null +++ b/usr/share/sofirem/cache/zafiro-icon-theme @@ -0,0 +1 @@ +A icon pack flat with light and dark colors. \ No newline at end of file diff --git a/usr/share/sofirem/cache/zoom b/usr/share/sofirem/cache/zoom new file mode 100644 index 0000000..1b64b50 --- /dev/null +++ b/usr/share/sofirem/cache/zoom @@ -0,0 +1 @@ +Video Conferencing and Web Conferencing Service \ No newline at end of file diff --git a/usr/share/sofirem/cache/zsh b/usr/share/sofirem/cache/zsh new file mode 100644 index 0000000..cf36980 --- /dev/null +++ b/usr/share/sofirem/cache/zsh @@ -0,0 +1 @@ +A very advanced and programmable command interpreter (shell) for UNIX \ No newline at end of file diff --git a/usr/share/sofirem/cache/zsh-autosuggestions-git b/usr/share/sofirem/cache/zsh-autosuggestions-git new file mode 100644 index 0000000..19319ac --- /dev/null +++ b/usr/share/sofirem/cache/zsh-autosuggestions-git @@ -0,0 +1 @@ +Fish-like autosuggestions for zsh (from git) \ No newline at end of file diff --git a/usr/share/sofirem/cache/zsh-completions b/usr/share/sofirem/cache/zsh-completions new file mode 100644 index 0000000..39660cc --- /dev/null +++ b/usr/share/sofirem/cache/zsh-completions @@ -0,0 +1 @@ +Additional completion definitions for Zsh \ No newline at end of file diff --git a/usr/share/sofirem/cache/zsh-fast-syntax-highlighting b/usr/share/sofirem/cache/zsh-fast-syntax-highlighting new file mode 100644 index 0000000..045308a --- /dev/null +++ b/usr/share/sofirem/cache/zsh-fast-syntax-highlighting @@ -0,0 +1 @@ +Optimized and extended zsh-syntax-highlighting \ No newline at end of file diff --git a/usr/share/sofirem/cache/zsh-history-substring-search-git b/usr/share/sofirem/cache/zsh-history-substring-search-git new file mode 100644 index 0000000..0df2d42 --- /dev/null +++ b/usr/share/sofirem/cache/zsh-history-substring-search-git @@ -0,0 +1 @@ +A ZSH plugin to search history, a clean-room implementation of the Fish shell feature \ No newline at end of file diff --git a/usr/share/sofirem/cache/zsh-syntax-highlighting b/usr/share/sofirem/cache/zsh-syntax-highlighting new file mode 100644 index 0000000..7536d03 --- /dev/null +++ b/usr/share/sofirem/cache/zsh-syntax-highlighting @@ -0,0 +1 @@ +Fish shell like syntax highlighting for Zsh \ No newline at end of file diff --git a/usr/share/sofirem/cache/zsh-syntax-highlighting-git b/usr/share/sofirem/cache/zsh-syntax-highlighting-git new file mode 100644 index 0000000..6cd0334 --- /dev/null +++ b/usr/share/sofirem/cache/zsh-syntax-highlighting-git @@ -0,0 +1 @@ +Fish shell like syntax highlighting for Zsh (from git) \ No newline at end of file diff --git a/usr/share/sofirem/cache/zsh-theme-powerlevel10k-git b/usr/share/sofirem/cache/zsh-theme-powerlevel10k-git new file mode 100644 index 0000000..fea5c75 --- /dev/null +++ b/usr/share/sofirem/cache/zsh-theme-powerlevel10k-git @@ -0,0 +1 @@ +Powerlevel10k is a theme for Zsh. It emphasizes speed, flexibility and out-of-the-box experience. \ No newline at end of file diff --git a/usr/share/sofirem/defaults/sofirem.yaml b/usr/share/sofirem/defaults/sofirem.yaml new file mode 100644 index 0000000..690a051 --- /dev/null +++ b/usr/share/sofirem/defaults/sofirem.yaml @@ -0,0 +1,11 @@ +- name: "Display Package Versions" + description: "Show package version labels alongside the package description " + enabled: False + +- name: "Display Package Progress" + description: "Show the package install/uninstall progress window " + enabled: False + +- name: "Debug Logging" + description: "Enable debug logging for more verbose app logging " + enabled: False diff --git a/usr/share/sofirem/images/credits.png b/usr/share/sofirem/images/credits.png new file mode 100644 index 0000000000000000000000000000000000000000..d5996fb5aa20d7ed1ab754ebbe458d4bc428f0fa GIT binary patch literal 10791 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 IbxsLQ031ncsQ>@~ literal 0 HcmV?d00001 diff --git a/usr/share/sofirem/images/panel.png b/usr/share/sofirem/images/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..564b434d48ae1c5bbed403d779659e7dbdb913f0 GIT binary patch literal 5394 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 + + + + + + + + + + + + + diff --git a/usr/share/sofirem/images/splash.png b/usr/share/sofirem/images/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..af8568237a4a986d3b927c7c802c45038f22fca1 GIT binary patch literal 551050 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%0D{rMexoVCtx{N}ssB%_*G*A`R5Stb%m!m1`q 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 d>$N2iT^~R>6 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

qQgK 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

wQa-nAxubj@k=igqLiZuBaPvr19>o+ap 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

|BPp96$p2kG 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 z%0D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 Ib4q9e0A=?>IsgCw literal 0 HcmV?d00001 diff --git a/usr/share/sofirem/packages/arcolinux-keyring/arcolinux-keyring-20251209-3-any.pkg.tar.zst b/usr/share/sofirem/packages/arcolinux-keyring/arcolinux-keyring-20251209-3-any.pkg.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..5ecb294e87078f63182b39aa69f71cff419cfab4 GIT binary patch literal 30962 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 SjMry=ZG8FFN+7*qwFm$duX5u6 literal 0 HcmV?d00001 diff --git a/usr/share/sofirem/packages/arcolinux-mirrorlist/arcolinux-mirrorlist-git-24.03-12-any.pkg.tar.zst b/usr/share/sofirem/packages/arcolinux-mirrorlist/arcolinux-mirrorlist-git-24.03-12-any.pkg.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..438218a425b666ec768f5efa4655877d1a03415f GIT binary patch literal 14319 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 Gb2|W?rAi 0: + # test if the string entered by the user is in the package name + # results is a dictionary, which holds a list of packages + # results[category]=pkg_list + + # searching is processed inside a thread + + th_search = fn.threading.Thread( + name="thread_search", + target=fn.search, + args=( + self, + search_term.rstrip().lstrip(), + ), + ) + fn.logger.info("Starting search") + + th_search.start() + + # get the search_results from the queue + results = self.search_queue.get() + + if results is not None: + fn.logger.info("Search complete") + + if len(results) > 0: + total = 0 + for val in results.values(): + total += len(val) + + fn.logger.info("Search found %s results" % total) + # make sure the gui search only displays the pkgs inside the results + + GUI.setup_gui_search( + self, + Gtk, + Gdk, + GdkPixbuf, + base_dir, + os, + Pango, + results, + search_term, + None, + ) + + self.search_activated = True + else: + fn.logger.info("Search found %s results" % 0) + self.searchentry.grab_focus() + + message_dialog = MessageDialog( + "Info", + "Search returned 0 results", + "Failed to find search term inside the package name or description.", + "Try to search again using another term", + "info", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + elif self.search_activated == True: + GUI.setup_gui( + self, + Gtk, + Gdk, + GdkPixbuf, + base_dir, + os, + Pango, + None, + ) + self.search_activated = False + except Exception as err: + fn.logger.error("Exception in on_search_activated(): %s" % err) + + finally: + if self.search_activated == True: + self.search_queue.task_done() + + def on_search_cleared(self, searchentry, icon_pos, event): + if self.search_activated: + GUI.setup_gui( + self, + Gtk, + Gdk, + GdkPixbuf, + base_dir, + os, + Pango, + None, + ) + + self.searchentry.set_placeholder_text("Search...") + + self.search_activated = False + + # ===================================================== + # RESTART/QUIT BUTTON + # ===================================================== + + def on_close(self, widget, data): + # to preserve settings, save current options to conf file inside $HOME/.config/sofirem/sofirem.yaml + + settings = Settings(self.display_versions, self.display_package_progress) + settings.write_config_file() + + # make a final installed packages file inside /var/log/sofirem/ + # this allows a before/after comparison + # fn.on_close_create_packages_file() + + if os.path.exists(fn.sofirem_lockfile): + os.unlink(fn.sofirem_lockfile) + + if os.path.exists(fn.sofirem_pidfile): + os.unlink(fn.sofirem_pidfile) + + # see the comment in fn.terminate_pacman() + fn.terminate_pacman() + + Gtk.main_quit() + print( + "---------------------------------------------------------------------------" + ) + print("Thanks for using Sofirem") + print("Report issues to make it even better") + print( + "---------------------------------------------------------------------------" + ) + print("You can report issues on https://discord.gg/stBhS4taje") + print( + "---------------------------------------------------------------------------" + ) + + # ==================================================================== + # Button Functions + # ==================================================================== + # Given what this function does, it might be worth considering making it a + # thread so that the app doesn't block while installing/uninstalling is happening. + + def app_toggle(self, widget, active, package): + # switch widget is currently toggled off + + if widget.get_state() == False and widget.get_active() == True: + if len(package.name) > 0: + inst_str = [ + "pacman", + "-S", + package.name, + "--needed", + "--noconfirm", + ] + + if self.display_package_progress is True: + if fn.check_pacman_lockfile(): + widget.set_state(False) + widget.set_active(False) + proc = fn.get_pacman_process() + + message_dialog = MessageDialog( + "Warning", + "Sofirem cannot proceed pacman lockfile found", + "Pacman cannot lock the db, a lockfile is found inside %s" + % fn.pacman_lockfile, + "Pacman is running: %s" % proc, + "warning", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + return True + else: + package_metadata = fn.get_package_information(package.name) + + if ( + type(package_metadata) is str + and package_metadata.strip() + == "error: package '%s' was not found" % package.name + ): + self.package_found = False + fn.logger.warning( + "The package %s was not found in any configured Pacman repositories" + % package.name + ) + fn.logger.warning("Package install cannot continue") + + message_dialog = MessageDialog( + "Error", + "Pacman repository error: package '%s' was not found" + % package.name, + "Sofirem cannot process the request", + "Are the correct pacman mirrorlists configured ?", + "error", + False, + ) + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_state(False) + widget.set_active(False) + + return True + else: + widget.set_state(True) + widget.set_active(True) + + progress_dialog = ProgressDialog( + "install", + package, + " ".join(inst_str), + package_metadata, + ) + + progress_dialog.show_all() + + self.pkg_queue.put( + ( + package, + "install", + widget, + inst_str, + progress_dialog, + ), + ) + + th = fn.threading.Thread( + name="thread_pkginst", + target=fn.install, + args=(self,), + daemon=True, + ) + + th.start() + fn.logger.debug("Package-install thread started") + + else: + progress_dialog = None + widget.set_sensitive(False) + + widget.set_active(True) + widget.set_state(True) + + fn.logger.info("Package to install : %s" % package.name) + + # another pacman transaction is running, add items to the holding queue + if ( + fn.check_pacman_lockfile() is True + and self.display_package_progress is False + ): + self.pkg_holding_queue.put( + ( + package, + "install", + widget, + inst_str, + progress_dialog, + ), + ) + + if fn.is_thread_alive("thread_check_holding_queue") is False: + th = fn.threading.Thread( + target=fn.check_holding_queue, + name="thread_check_holding_queue", + daemon=True, + args=(self,), + ) + + th.start() + fn.logger.debug("Check-holding-queue thread started") + elif self.display_package_progress is False: + self.pkg_queue.put( + ( + package, + "install", + widget, + inst_str, + progress_dialog, + ), + ) + + th = fn.threading.Thread( + name="thread_pkginst", + target=fn.install, + args=(self,), + daemon=True, + ) + + th.start() + fn.logger.debug("Package-install thread started") + + # switch widget is currently toggled on + if widget.get_state() == True and widget.get_active() == False: + # Uninstall the package + + if len(package.name) > 0: + uninst_str = ["pacman", "-Rs", package.name, "--noconfirm"] + + fn.logger.info("Package to remove : %s" % package.name) + + if fn.check_pacman_lockfile(): + widget.set_state(True) + widget.set_active(True) + + fn.logger.info("Pacman lockfile found, uninstall aborted") + + GLib.idle_add( + self.show_lockfile_message_dialog, + priority=GLib.PRIORITY_DEFAULT, + ) + + return True + + if self.display_package_progress is True: + package_metadata = fn.get_package_information(package.name) + + progress_dialog = ProgressDialog( + "uninstall", + package, + " ".join(uninst_str), + package_metadata, + ) + + progress_dialog.show_all() + else: + progress_dialog = None + + widget.set_active(False) + widget.set_state(False) + + self.pkg_queue.put( + ( + package, + "uninstall", + widget, + uninst_str, + progress_dialog, + ), + ) + + th = fn.threading.Thread( + name="thread_pkgrem", + target=fn.uninstall, + args=(self,), + daemon=True, + ) + + th.start() + fn.logger.debug("Package-uninstall thread started") + + # fn.print_running_threads() + + # return True to prevent the default handler from running + return True + + # App_Frame_GUI.GUI(self, Gtk, vboxStack1, fn, category, package_file) + # widget.get_parent().get_parent().get_parent().get_parent().get_parent().get_parent().get_parent().queue_redraw() + # self.gui.hide() + # self.gui.queue_redraw() + # self.gui.show_all() + + def show_lockfile_message_dialog(self): + proc = fn.get_pacman_process() + message_dialog = MessageDialog( + "Warning", + "Sofirem cannot proceed pacman lockfile found", + "Pacman cannot lock the db, a lockfile is found inside %s" + % fn.pacman_lockfile, + "Process running = %s" % proc, + "warning", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + message_dialog.destroy() + + def recache_clicked(self, widget): + # Check if cache is out of date. If so, run the re-cache, if not, don't. + # pb = ProgressBarWindow() + # pb.show_all() + # pb.set_text("Updating Cache") + # pb.reset_timer() + + fn.logger.info("Recache applications - start") + + fn.cache_btn() + + # ================================================================ + # SETTINGS + # ================================================================ + + def on_package_search_clicked(self, widget): + fn.logger.debug("Showing Package Search window") + self.toggle_popover() + + package_search_win = PackageSearchWindow() + package_search_win.show_all() + + def on_arcolinux_iso_packages_clicked(self, widget): + fn.logger.debug("Showing ArcoLinux ISO Packages window") + arcolinux_iso_packages_window = ISOPackagesWindow() + arcolinux_iso_packages_window.show() + + def on_about_app_clicked(self, widget): + fn.logger.debug("Showing About dialog") + self.toggle_popover() + + about = AboutDialog() + about.run() + about.hide() + about.destroy() + + def on_packages_export_clicked(self, widget): + self.toggle_popover() + + dialog_packagelist = PackageListDialog() + dialog_packagelist.show_all() + + def on_packages_import_clicked(self, widget): + self.toggle_popover() + try: + if not os.path.exists(fn.pacman_lockfile): + package_file = "%s/packages-x86_64.txt" % (fn.export_dir,) + package_import_logfile = "%spackages-install-status-%s-%s.log" % ( + fn.log_dir, + fn.datetime.today().date(), + fn.datetime.today().time().strftime("%H-%M-%S"), + ) + + if os.path.exists(package_file): + # check we have a valid file + lines = None + with open(package_file, encoding="utf-8", mode="r") as f: + lines = f.readlines() + + if lines is not None: + if ( + "# This file was auto-generated by the ArchLinux Tweak Tool on" + in lines[0] + or "# This file was auto-generated by Sofirem on" + in lines[0] + ): + fn.logger.info("Package list file is valid") + packages_list = [] + for line in lines: + if not line.startswith("#"): + packages_list.append(line.strip()) + + if len(packages_list) > 0: + dialog_package_import = PackagesImportDialog( + package_file, + packages_list, + package_import_logfile, + ) + dialog_package_import.show_all() + + else: + message_dialog = MessageDialog( + "Error", + "Package file is not valid %s" % package_file, + "Export a list of packages first using the Show Installed Packages button", + "", + "error", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + else: + message_dialog = MessageDialog( + "Warning", + "Cannot locate export package file %s" % package_file, + "Export a list of packages first using the Show Installed Packages button", + "", + "warning", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + else: + message_dialog = MessageDialog( + "Error", + "Pacman lock file found %s" % fn.pacman_lockfile, + "Cannot proceed, another pacman process is running", + "", + "error", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + except Exception as e: + fn.logger.error("Exception in on_packages_import_clicked(): %s" % e) + + # show/hide popover + def toggle_popover(self): + if self.popover.get_visible(): + self.popover.hide() + else: + self.popover.show_all() + + def on_settings_clicked(self, widget): + self.toggle_popover() + + # ArcoLinux keys, mirrors setup + + def arco_keyring_toggle(self, widget, data): + # toggle is currently off, add keyring + if widget.get_state() == False and widget.get_active() == True: + fn.logger.info("Installing ArcoLinux keyring") + install_keyring = fn.install_arco_keyring() + + if install_keyring == 0: + fn.logger.info("Installation of ArcoLinux keyring = OK") + rc = fn.add_arco_repos() + if rc == 0: + fn.logger.info("ArcoLinux repos added into %s" % fn.pacman_conf) + widget.set_active(True) + else: + message_dialog = MessageDialog( + "Error", + "Failed to update pacman conf", + "Errors occurred during update of the pacman config file", + rc, + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_active(False) + widget.set_state(False) + + return True + + else: + message_dialog = MessageDialog( + "Error", + "Failed to install ArcoLinux keyring", + "Errors occurred during install of the ArcoLinux keyring", + "Command run = %s\n\n Error = %s" + % (install_keyring["cmd_str"], install_keyring["output"]), + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_active(False) + widget.set_state(False) + + return True + # toggle is currently on + if widget.get_state() == True and widget.get_active() == False: + remove_keyring = fn.remove_arco_keyring() + + if remove_keyring == 0: + fn.logger.info("Removing ArcoLinux keyring OK") + + rc = fn.remove_arco_repos() + if rc == 0: + fn.logger.info("ArcoLinux repos removed from %s" % fn.pacman_conf) + widget.set_active(False) + else: + message_dialog = MessageDialog( + "Error", + "Failed to update pacman conf", + "Errors occurred during update of the pacman config file", + rc, + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_active(True) + widget.set_state(True) + + return True + else: + fn.logger.error("Failed to remove ArcoLinux keyring") + + message_dialog = MessageDialog( + "Error", + "Failed to remove ArcoLinux keyring", + "Errors occurred during removal of the ArcoLinux keyring", + "Command run = %s\n\n Error = %s" + % (remove_keyring["cmd_str"], remove_keyring["output"]), + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_active(False) + widget.set_state(False) + + return True + + def arco_mirrorlist_toggle(self, widget, data): + # self.toggle_popover() + + # toggle is currently off + + if widget.get_state() == False and widget.get_active() == True: + widget.set_active(True) + widget.set_state(True) + + # before installing the mirrorlist make sure the pacman.conf file does not have any references to /etc/pacman.d/arcolinux-mirrorlist + # otherwise the mirrorlist package will not install + rc_remove = fn.remove_arco_repos() + if rc_remove == 0: + install_mirrorlist = fn.install_arco_mirrorlist() + + if install_mirrorlist == 0: + fn.logger.info("Installation of ArcoLinux mirrorlist = OK") + + rc_add = fn.add_arco_repos() + if rc_add == 0: + fn.logger.info("ArcoLinux repos added into %s" % fn.pacman_conf) + self.pacman_db_sync() + + else: + message_dialog = MessageDialog( + "Error", + "Failed to update pacman conf", + "Errors occurred during update of the pacman config file", + rc_add, + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_active(False) + widget.set_state(False) + + return True + + else: + fn.logger.error("Failed to install ArcoLinux mirrorlist") + + message_dialog = MessageDialog( + "Error", + "Failed to install ArcoLinux mirrorlist", + "Errors occurred during install of the ArcoLinux mirrorlist", + "Command run = %s\n\n Error = %s" + % (install_mirrorlist["cmd_str"], install_mirrorlist["output"]), + "error", + True, + ) + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_active(False) + widget.set_state(False) + + return True + else: + message_dialog = MessageDialog( + "Error", + "Failed to update pacman conf", + "Errors occurred during update of the pacman config file", + rc, + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_active(False) + widget.set_state(False) + + return True + # toggle is currently on + if widget.get_state() == True and widget.get_active() == False: + widget.set_active(False) + widget.set_state(False) + + fn.logger.info("Removing ArcoLinux mirrorlist") + + remove_mirrorlist = fn.remove_arco_mirrorlist() + + if remove_mirrorlist == 0: + fn.logger.info("Removing ArcoLinux mirrorlist OK") + + rc = fn.remove_arco_repos() + if rc == 0: + fn.logger.info("ArcoLinux repos removed from %s" % fn.pacman_conf) + widget.set_active(False) + else: + message_dialog = MessageDialog( + "Error", + "Failed to update pacman conf", + "Errors occurred during update of the pacman config file", + rc, + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_active(True) + widget.set_state(True) + + return True + else: + fn.logger.error("Failed to remove ArcoLinux mirrorlist") + + message_dialog = MessageDialog( + "Error", + "Failed to remove ArcoLinux mirrorlist", + "Errors occurred during removal of the ArcoLinux mirrorlist", + "Command run = %s\n\n Error = %s" + % (remove_mirrorlist["cmd_str"], remove_mirrorlist["output"]), + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + widget.set_active(True) + widget.set_state(True) + + return True + + return True + + def version_toggle(self, widget, data): + if widget.get_active() == True: + fn.logger.debug("Showing package versions") + + self.display_versions = True + GLib.idle_add( + self.refresh_main_gui, + priority=GLib.PRIORITY_DEFAULT, + ) + else: + fn.logger.debug("Hiding package versions") + self.display_versions = False + GLib.idle_add( + self.refresh_main_gui, + priority=GLib.PRIORITY_DEFAULT, + ) + + def refresh_main_gui(self): + self.remove(self.vbox) + GUI.setup_gui(self, Gtk, Gdk, GdkPixbuf, base_dir, os, Pango, None) + self.show_all() + + def on_pacman_log_clicked(self, widget): + try: + self.toggle_popover() + + thread_addlog = "thread_addPacmanLogQueue" + self.thread_add_pacmanlog_alive = fn.is_thread_alive(thread_addlog) + + if self.thread_add_pacmanlog_alive == False: + fn.logger.info("Starting thread to monitor Pacman Log file") + + th_add_pacmanlog_queue = fn.threading.Thread( + name=thread_addlog, + target=fn.add_pacmanlog_queue, + args=(self,), + daemon=True, + ) + th_add_pacmanlog_queue.start() + + if self.thread_add_pacmanlog_alive is True: + # need to recreate the textview, can't use existing reference as it throws a seg fault + + self.textview_pacmanlog = Gtk.TextView() + self.textview_pacmanlog.set_property("editable", False) + self.textview_pacmanlog.set_property("monospace", True) + self.textview_pacmanlog.set_border_width(10) + self.textview_pacmanlog.set_vexpand(True) + self.textview_pacmanlog.set_hexpand(True) + + # use the reference to the text buffer initialized before the logtimer thread started + self.textview_pacmanlog.set_buffer(self.textbuffer_pacmanlog) + + window_pacmanlog = PacmanLogWindow( + self.textview_pacmanlog, + self.modelbtn_pacmanlog, + ) + window_pacmanlog.show_all() + + self.start_logtimer = window_pacmanlog.start_logtimer + + else: + # keep a handle on the textbuffer, this is needed again later, if the pacman log file dialog is closed + # since the textbuffer will already hold textdata at that point + + # textview is used inside another thread to update as the pacmanlog file is read into memory + self.textbuffer_pacmanlog = Gtk.TextBuffer() + + self.textview_pacmanlog = Gtk.TextView() + self.textview_pacmanlog.set_property("editable", False) + self.textview_pacmanlog.set_property("monospace", True) + self.textview_pacmanlog.set_border_width(10) + self.textview_pacmanlog.set_vexpand(True) + self.textview_pacmanlog.set_hexpand(True) + + self.textview_pacmanlog.set_buffer(self.textbuffer_pacmanlog) + + window_pacmanlog = PacmanLogWindow( + self.textview_pacmanlog, + self.modelbtn_pacmanlog, + ) + window_pacmanlog.show_all() + + thread_logtimer = "thread_startLogTimer" + thread_logtimer_alive = False + + thread_logtimer_alive = fn.is_thread_alive(thread_logtimer) + + # a flag to indicate that the textview will need updating, used inside fn.start_log_timer + self.start_logtimer = True + + if thread_logtimer_alive == False: + th_logtimer = fn.threading.Thread( + name=thread_logtimer, + target=fn.start_log_timer, + args=(self, window_pacmanlog), + daemon=True, + ) + th_logtimer.start() + + self.thread_add_pacmanlog_alive = True + self.modelbtn_pacmanlog.set_sensitive(False) + + except Exception as e: + fn.logger.error("Exception in on_pacman_log_clicked() : %s" % e) + + def package_progress_toggle(self, widget, data): + if widget.get_active() is True: + self.display_package_progress = True + if widget.get_active() is False: + self.display_package_progress = False + + +# ==================================================================== +# MAIN +# ==================================================================== + + +def signal_handler(sig, frame): + fn.logger.info("Sofirem is closing.") + if os.path.exists("/tmp/sofirem.lock"): + os.unlink("/tmp/sofirem.lock") + + if os.path.exists("/tmp/sofirem.pid"): + os.unlink("/tmp/sofirem.pid") + Gtk.main_quit(0) + + +# These should be kept as it ensures that multiple installation instances can't be run concurrently. +if __name__ == "__main__": + try: + signal.signal(signal.SIGINT, signal_handler) + + if not os.path.isfile("/tmp/sofirem.lock"): + with open("/tmp/sofirem.pid", "w") as f: + f.write(str(os.getpid())) + + style_provider = Gtk.CssProvider() + style_provider.load_from_path(base_dir + "/sofirem.css") + + Gtk.StyleContext.add_provider_for_screen( + Gdk.Screen.get_default(), + style_provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION, + ) + w = Main() + w.show_all() + + fn.logger.info("App Started") + + Gtk.main() + else: + fn.logger.info("Sofirem lock file found") + + md = Gtk.MessageDialog( + parent=Main(), + flags=0, + message_type=Gtk.MessageType.INFO, + buttons=Gtk.ButtonsType.YES_NO, + text="Sofirem Lock File Found", + ) + md.format_secondary_markup( + "A Sofirem lock file has been found. This indicates there is already an instance of Sofirem running.\n\ + Click 'Yes' to remove the lock file and try running again" + ) # noqa + + result = md.run() + md.destroy() + + if result in (Gtk.ResponseType.OK, Gtk.ResponseType.YES): + pid = "" + if os.path.exists(fn.sofirem_pidfile): + with open("/tmp/sofirem.pid", "r") as f: + line = f.read() + pid = line.rstrip().lstrip() + + if fn.check_if_process_running(int(pid)): + # needs to be fixed - todo + + # md2 = Gtk.MessageDialog( + # parent=Main, + # flags=0, + # message_type=Gtk.MessageType.INFO, + # buttons=Gtk.ButtonsType.OK, + # title="Application Running!", + # text="You first need to close the existing application", + # ) + # md2.format_secondary_markup( + # "You first need to close the existing application" + # ) + # md2.run() + fn.logger.info( + "You first need to close the existing application" + ) + else: + os.unlink("/tmp/sofirem.lock") + sys.exit(1) + else: + # in the rare event that the lock file is present, but the pid isn't + os.unlink("/tmp/sofirem.lock") + sys.exit(1) + else: + sys.exit(1) + except Exception as e: + fn.logger.error("Exception in __main__: %s" % e) diff --git a/usr/share/sofirem/ui/AboutDialog.py b/usr/share/sofirem/ui/AboutDialog.py new file mode 100644 index 0000000..ce39f5a --- /dev/null +++ b/usr/share/sofirem/ui/AboutDialog.py @@ -0,0 +1,192 @@ +# This class stores static information about the app, and is displayed in the about dialog +import os +import gi + +from gi.repository import Gtk, Gdk, GdkPixbuf, Pango, GLib + +gi.require_version("Gtk", "3.0") + +base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) + +# base_dir = os.path.dirname(os.path.realpath(__file__)) + + +class AboutDialog(Gtk.Dialog): + def __init__(self): + Gtk.Dialog.__init__(self) + + app_name = "Sofirem" + app_title = "About Sofirem" + app_main_description = "%s - %s" % (app_name, "Software Installer Remover") + app_secondary_message = "Install or remove software from your ArcoLinux system" + app_secondary_description = "Report issues to make it even better" + app_version = "pkgversion-pkgrelease" + app_discord = "https://discord.gg/stBhS4taje" + app_website = "https://arcolinux.info" + app_github = "https://github.com/arcolinux/sofirem-dev" + app_authors = [] + app_authors.append(("Cameron Percival", None)) + app_authors.append(("Fennec", None)) + app_authors.append(("Erik Dubois", None)) + + pixbuf = GdkPixbuf.Pixbuf().new_from_file_at_size( + os.path.join(base_dir, "images/sofirem.png"), 100, 100 + ) + app_image = Gtk.Image().new_from_pixbuf(pixbuf) + + self.set_resizable(False) + self.set_size_request(560, 350) + self.set_icon_from_file(os.path.join(base_dir, "images/sofirem.png")) + self.set_border_width(10) + + headerbar = Gtk.HeaderBar() + headerbar.set_show_close_button(True) + headerbar.set_title(app_title) + self.set_titlebar(headerbar) + + btn_about_close = Gtk.Button(label="OK") + btn_about_close.connect("clicked", self.on_response, "response") + + stack = Gtk.Stack() + stack.set_transition_type(Gtk.StackTransitionType.SLIDE_UP_DOWN) + stack.set_transition_duration(350) + stack.set_hhomogeneous(False) + stack.set_vhomogeneous(False) + + stack_switcher = Gtk.StackSwitcher() + stack_switcher.set_orientation(Gtk.Orientation.HORIZONTAL) + stack_switcher.set_stack(stack) + stack_switcher.set_homogeneous(True) + + lbl_main_description = Gtk.Label(xalign=0, yalign=0) + lbl_main_description.set_markup( + " %s" % app_main_description + ) + + lbl_secondary_message = Gtk.Label(xalign=0, yalign=0) + lbl_secondary_message.set_text( + " %s" % app_secondary_message + ) + + lbl_secondary_description = Gtk.Label(xalign=0, yalign=0) + lbl_secondary_description.set_text( + " %s" % app_secondary_description + ) + + lbl_version = Gtk.Label(xalign=0, yalign=0) + lbl_version.set_markup( + " Version: %s" % app_version + ) + + ivbox_about = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6) + ivbox_about.pack_start(app_image, True, True, 0) + ivbox_about.pack_start(lbl_main_description, True, True, 0) + ivbox_about.pack_start(lbl_version, True, True, 0) + ivbox_about.pack_start(lbl_secondary_message, True, True, 0) + ivbox_about.pack_start(lbl_secondary_description, True, True, 0) + + stack.add_titled(ivbox_about, "About Sofirem", "About") + + grid_support = Gtk.Grid() + + lbl_padding1 = Gtk.Label(xalign=0, yalign=0) + lbl_padding1.set_text(" ") + + grid_support.attach(lbl_padding1, 0, 1, 1, 1) + + lbl_support_title = Gtk.Label(xalign=0, yalign=0) + lbl_support_title.set_markup("Discord ") + + lbl_support_value = Gtk.Label(xalign=0, yalign=0) + lbl_support_value.set_markup("%s" % (app_discord, app_discord)) + + lbl_website_title = Gtk.Label(xalign=0, yalign=0) + lbl_website_title.set_markup("ArcoLinux website ") + + lbl_website_value = Gtk.Label(xalign=0, yalign=0) + lbl_website_value.set_markup("%s" % (app_website, app_website)) + + lbl_github_title = Gtk.Label(xalign=0, yalign=0) + lbl_github_title.set_markup("GitHub ") + + lbl_github_value = Gtk.Label(xalign=0, yalign=0) + lbl_github_value.set_markup("%s" % (app_github, app_github)) + + grid_support.attach(lbl_support_title, 0, 2, 1, 1) + + grid_support.attach_next_to( + lbl_support_value, lbl_support_title, Gtk.PositionType.RIGHT, 20, 1 + ) + + grid_support.attach(lbl_website_title, 0, 3, 1, 1) + grid_support.attach_next_to( + lbl_website_value, lbl_website_title, Gtk.PositionType.RIGHT, 20, 1 + ) + + grid_support.attach(lbl_github_title, 0, 4, 1, 1) + grid_support.attach_next_to( + lbl_github_value, lbl_github_title, Gtk.PositionType.RIGHT, 20, 1 + ) + + stack.add_titled(grid_support, "Support", "Support") + + box_outer = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5) + box_outer.set_border_width(10) + + lbl_padding2 = Gtk.Label(xalign=0, yalign=0) + lbl_padding2.set_text(" ") + + lbl_padding3 = Gtk.Label(xalign=0, yalign=0) + lbl_padding3.set_text(" ") + + lbl_authors_title = Gtk.Label(xalign=0, yalign=0) + lbl_authors_title.set_text( + "The following people have contributed to the development of %s" % app_name + ) + + listbox = Gtk.ListBox() + listbox.set_selection_mode(Gtk.SelectionMode.NONE) + + box_outer.pack_start(lbl_authors_title, True, True, 0) + box_outer.pack_start(listbox, True, True, 0) + + treestore_authors = Gtk.TreeStore(str, str) + for item in app_authors: + treestore_authors.append(None, list(item)) + + treeview_authors = Gtk.TreeView(model=treestore_authors) + + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn(None, renderer, text=0) + + treeview_authors.append_column(column) + + path = Gtk.TreePath.new_from_indices([0]) + + selection = treeview_authors.get_selection() + + selection.select_path(path) + + treeview_authors.expand_all() + treeview_authors.columns_autosize() + + row_authors = Gtk.ListBoxRow() + vbox_authors = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + row_authors.add(vbox_authors) + + vbox_authors.pack_start(treeview_authors, True, True, 0) + + listbox.add(row_authors) + + stack.add_titled(box_outer, "Authors", "Authors") + + self.connect("response", self.on_response) + + self.vbox.add(stack_switcher) + self.vbox.add(stack) + + self.show_all() + + def on_response(self, dialog, response): + self.hide() + self.destroy() diff --git a/usr/share/sofirem/ui/AppFrameGUI.py b/usr/share/sofirem/ui/AppFrameGUI.py new file mode 100644 index 0000000..4d9900d --- /dev/null +++ b/usr/share/sofirem/ui/AppFrameGUI.py @@ -0,0 +1,523 @@ +# ================================================================= +# = Author: Cameron Percival = +# ================================================================= +from socket import TIPC_ADDR_NAME +from urllib.parse import scheme_chars +import Functions as fn + + +class AppFrameGUI: + def build_ui_frame(self, Gtk, vbox_stack, category, packages_list): + try: + # Lets set some variables that we know we will need later + # hboxes and items to make the page look sensible + cat_name = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + seperator = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + lbl1 = Gtk.Label(xalign=0) + lbl1.set_text(category) + lbl1.set_name("title") + hseparator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL) + seperator.pack_start(hseparator, True, True, 0) + cat_name.pack_start(lbl1, False, False, 0) + + # Stack for the different subcategories - I like crossfade as a transition, but you choose + stack = Gtk.Stack() + stack.set_transition_type(Gtk.StackTransitionType.SLIDE_UP_DOWN) + stack.set_transition_duration(350) + stack.set_hhomogeneous(False) + stack.set_vhomogeneous(False) + + # Stack needs a stack switcher to allow the user to make different choices + stack_switcher = Gtk.StackSwitcher() + stack_switcher.set_orientation(Gtk.Orientation.HORIZONTAL) + stack_switcher.set_stack(stack) + stack_switcher.set_homogeneous(True) + + # We will need a vbox later for storing the stack and stack switcher together at the end + vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + + # create scroller for when/if these items go "off the page" + scrolled_switch = Gtk.ScrolledWindow() + scrolled_switch.add(stack_switcher) + + # These lists will ensure that we can keep track of the individual windows and their names + # stack of vboxes + vbox_stacks = [] + # name of each vbox - derived from the sub category name + vbox_stacknames = [] + sep_text = " " + subcats = {} + # index for the grid + index = 0 + + """ + Store a list of unique sub-categories + e.g. + + category --> applications + sub category --> Accessories + sub category --> Conky + + """ + + sub_catlabels = [] + + # store unique subcategory names into a dictionary + + for package in packages_list: + subcats[package.subcategory] = package + + # we now iterate across the dictionary keys + # each Stack has an associated subcategory + + for subcat in subcats.keys(): + vbox_stacks.append( + Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + ) + # for the sub-cat page title + sub_catlabels.append(Gtk.Label(xalign=0)) + + vbox_stacknames.append(subcat) + # iterate across a list of packages + + for package in packages_list: + if package.subcategory == subcat: + page = vbox_stacks.pop() + + if len(sub_catlabels) > 0: + lbl_title = sub_catlabels.pop() + lbl_desc = Gtk.Label(xalign=0) + lbl_desc.set_markup( + "Description: " + + package.subcategory_description + + "" + ) + lbl_title.set_markup("" + package.subcategory + "") + + lbl_padding_page1 = Gtk.Label(xalign=0) + lbl_padding_page1.set_text("") + + page.pack_start(lbl_title, False, False, 0) + page.pack_start(lbl_desc, False, False, 0) + page.pack_start(lbl_padding_page1, False, False, 0) + + grid = Gtk.Grid() + + grid.insert_row(index) + + lbl_sep1 = Gtk.Label(xalign=0, yalign=0) + lbl_sep1.set_text(sep_text) + grid.attach(lbl_sep1, 0, index, 1, 1) + lbl_package = Gtk.Label(xalign=0, yalign=0) # was in for loop + + lbl_package.set_markup("%s" % package.name) + + ###### switch widget starts ###### + + # construct new switch + switch = Gtk.Switch() + switch.set_valign(Gtk.Align.CENTER) + + """ + Changed to use signal state-set for switch widget. + set_state(boolean) allows the switch state to be enabled/disabled. + When a pkg install/uninstall fails, the switch widget is enabled/disabled inside a thread. + + Changing the switch using set_active(bool), and using the signal notify::active + caused a never-ending loop which would call app_toggle. + + """ + switch.set_state(fn.query_pkg(package.name)) + switch.connect( + "state-set", + self.app_toggle, + package, + ) + + # add switch widget to grid + + # attach_next_to(child, sibling, side, width, height) + + grid.attach_next_to( + switch, lbl_sep1, Gtk.PositionType.LEFT, 1, 1 + ) + + # add space seperator next to switch + + lbl_sep_switch = Gtk.Label(xalign=0, yalign=0) + lbl_sep_switch.set_text(sep_text) + + grid.attach_next_to( + lbl_sep_switch, switch, Gtk.PositionType.LEFT, 1, 1 + ) + + ###### switch widget ends ###### + + ###### pkg name label widget starts ###### + + lbl_sep_package1 = Gtk.Label(xalign=0, yalign=0) + lbl_sep_package1.set_text(sep_text) + + # add space seperator next to switch for extra padding + + grid.attach_next_to( + lbl_sep_package1, switch, Gtk.PositionType.RIGHT, 1, 1 + ) + + lbl_sep_package2 = Gtk.Label(xalign=0, yalign=0) + lbl_sep_package2.set_text(sep_text) + + # add pkg name label widget to grid + + grid.attach_next_to( + lbl_package, lbl_sep_package1, Gtk.PositionType.RIGHT, 1, 1 + ) + + ###### pkg name label widget ends + + ###### pkg desc label widget starts ###### + + lbl_sep_package_desc = Gtk.Label(xalign=0, yalign=0) + lbl_sep_package_desc.set_text(sep_text) + + # add space seperator next to pkg name for extra padding + + grid.attach_next_to( + lbl_sep_package_desc, + lbl_package, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + lbl_package_desc = Gtk.Label(xalign=0, yalign=0) + lbl_package_desc.set_text(package.description) + + # add pkg desc label widget to grid + + grid.attach_next_to( + lbl_package_desc, + lbl_sep_package_desc, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + ###### pkg desc label widget ends + + ##### add pkg version label widget starts ##### + + if self.display_versions is True: + lbl_package_version = Gtk.Label(xalign=0, yalign=0) + lbl_package_version.set_text(package.version) + lbl_package_version.set_name("lbl_package_version") + + lbl_sep_package_version = Gtk.Label(xalign=0, yalign=0) + lbl_sep_package_version.set_text(sep_text) + + grid.attach_next_to( + lbl_sep_package_version, + lbl_package_desc, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + grid.attach_next_to( + lbl_package_version, + lbl_sep_package_version, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + ##### pkg version ends ##### + + # make the page scrollable + grid_sc = Gtk.ScrolledWindow() + + # hide the horizontal scrollbar showing on each grid row if the window width is resized + grid_sc.set_policy( + Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC + ) + grid_sc.add(grid) + + grid_sc.set_propagate_natural_height(True) + # pack the grid to the page. + + page.pack_start(grid_sc, True, True, 0) + # save the page - put it back (now populated) + + """ + UI note. + To remove the extra padding around the switch buttons + Comment out the references to grid_sc + Then just have page.pack_start(grid,True, True, 0) + """ + vbox_stacks.append(page) + + # reset the things that we need to. + # packages.clear() + grid = Gtk.Grid() + + index += 1 + + # Now we pack the stack + item_num = 0 + + for item in vbox_stacks: + stack.add_titled( + item, + "stack" + str(item_num), + vbox_stacknames[item_num], + ) + item_num += 1 + + # Place the stack switcher and the stack together into a vbox + vbox.pack_start(scrolled_switch, False, False, 0) + + scrolled_window = Gtk.ScrolledWindow() + scrolled_window.set_propagate_natural_height(True) + scrolled_window.add(stack) + vbox.pack_start(scrolled_window, True, True, 0) + + # Stuff the vbox with the title and seperator to create the page + vbox_stack.pack_start(cat_name, False, False, 0) + vbox_stack.pack_start(seperator, False, False, 0) + vbox_stack.pack_start(vbox, False, False, 0) + + except Exception as e: + fn.logger.error("Exception in App_Frame_GUI.GUI(): %s" % e) + + +########## PREVIOUS GUI CODE START ########## +""" +def GUI(self, Gtk, vboxStack1, category, package_file): + try: + # Lets set some variables that we know we will need later + # hboxes and items to make the page look sensible + cat_name = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + seperator = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + lbl1 = Gtk.Label(xalign=0) + lbl1.set_text(category) + lbl1.set_name("title") + hseparator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL) + seperator.pack_start(hseparator, True, True, 0) + cat_name.pack_start(lbl1, False, False, 0) + + # Stack for the different subcategories - I like crossfade as a transition, but you choose + stack = Gtk.Stack() + stack.set_transition_type(Gtk.StackTransitionType.SLIDE_UP_DOWN) + stack.set_transition_duration(350) + stack.set_hhomogeneous(False) + stack.set_vhomogeneous(False) + + # Stack needs a stack switcher to allow the user to make different choices + stack_switcher = Gtk.StackSwitcher() + stack_switcher.set_orientation(Gtk.Orientation.HORIZONTAL) + stack_switcher.set_stack(stack) + stack_switcher.set_homogeneous(True) + + # We will need a vbox later for storing the stack and stack switcher together at the end + vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + + # create scroller for when/if these items go "off the page" + scrolledSwitch = Gtk.ScrolledWindow() + scrolledSwitch.add(stack_switcher) + + # These lists will ensure that we can keep track of the individual windows and their names + # stack of vboxes + vboxStacks = [] + # name of each vbox - derived from the sub category name + vboxStackNames = [] + + # page variables - reset these when making multiple subcategories: + # List of packages for any given subcategory + packages = [] + # labels: + name = "" + description = "" + # Lets start by reading in the package list and saving it as a file + with open(package_file, "r") as f: + content = f.readlines() + # f.close() + + # Add a line to the end of content to force the page to be packed. + content.append( + "pack now" + ) # Really, this can be any string, as long as it doesn't match the if statement below. + # Now lets read the file, and use some logic to drive what goes where + # Optomised for runspeed: the line most commonly activated appears first. + for line in content: + # this line will handle code in the yaml that we simply don't need or care about + # MAINTENANCE; if the structure of the .yaml file ever changes, this WILL likely need to be updated + if line.startswith(" packages:"): + continue + elif line.startswith(" - "): + # add the package to the packages list + package = line.strip(" - ") + packages.append(package) + # TODO: Add list and function to obtain package description from pacman and store it (maybe? Maybe the yaml file has what we need?) + elif line.startswith(" description: "): + # Set the label text for the description line + description = ( + line.strip(" description: ").strip().strip('"').strip("\n") + ) + else: + # We will only hit here for category changes, or to pack the page, or if the yaml is changed. + # Yaml changes are handled in the first if statement. + # Pack page; + + if len(packages) > 0: + # Pack the page + # Packing list: + # vbox to pack into - pop it off the + page = vboxStacks.pop() + # grid it + grid = Gtk.Grid() + # Subcat + lblName = Gtk.Label(xalign=0) + lblName.set_markup("" + name + "") + page.pack_start(lblName, False, False, 0) + # description + lblDesc = Gtk.Label(xalign=0) + lblDesc.set_markup("Description: " + description + "") + page.pack_start(lblDesc, False, False, 0) + # packages + sep_text = " " + for i in range(len(packages)): + grid.insert_row(i) + # hbox_pkg = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=0) + lblSep1 = Gtk.Label(xalign=0, yalign=0) + lblSep1.set_text(sep_text) + grid.attach(lblSep1, 0, i, 1, 1) + lblPkg = Gtk.Label(xalign=0, yalign=0) # was in for loop + + lblPkg.set_markup("%s" % packages[i].strip()) # was in for loop + # hbox_pkg.pack_start(lblPkg, False, False, 100) + ###### switch widget starts ###### + + + # construct new switch + switch = Gtk.Switch() + + switch.set_active(Functions.query_pkg(packages[i])) + switch.connect( + "notify::active", + self.app_toggle, + packages[i], + Gtk, + vboxStack1, + Functions, + category, + ) + + # add switch widget to grid + + # attach_next_to(child, sibling, side, width, height) + + grid.attach_next_to( + switch, lblSep1, Gtk.PositionType.LEFT, 1, 1 + ) + + # add space seperator next to switch + + lblSepSwitch = Gtk.Label(xalign=0, yalign=0) + lblSepSwitch.set_text(sep_text) + + grid.attach_next_to( + lblSepSwitch, switch, Gtk.PositionType.LEFT, 1, 1 + ) + + ###### switch widget ends ###### + + + ###### pkg name label widget starts ###### + + lblSepPkg1 = Gtk.Label(xalign=0, yalign=0) + lblSepPkg1.set_text(sep_text) + + + # add space seperator next to switch for extra padding + + grid.attach_next_to( + lblSepPkg1, switch, Gtk.PositionType.RIGHT, 1, 1 + ) + + lblSepPkg2 = Gtk.Label(xalign=0, yalign=0) + lblSepPkg2.set_text(sep_text) + + # add pkg name label widget to grid + + grid.attach_next_to( + lblPkg, lblSepPkg1, Gtk.PositionType.RIGHT, 1, 1 + ) + + ###### pkg name label widget ends + + + ###### pkg desc label widget starts ###### + + lblSepPkgDesc = Gtk.Label(xalign=0, yalign=0) + lblSepPkgDesc.set_text(sep_text) + + # add space seperator next to pkg name for extra padding + + grid.attach_next_to( + lblSepPkgDesc, lblPkg, Gtk.PositionType.RIGHT, 1, 1 + ) + + lblPkgDesc = Gtk.Label(xalign=0, yalign=0) + lblPkgDesc.set_text(Functions.obtain_pkg_description(packages[i])) + + # add pkg desc label widget to grid + + grid.attach_next_to( + lblPkgDesc, lblSepPkgDesc, Gtk.PositionType.RIGHT, 1, 1 + ) + + + + + ###### pkg desc label widget ends + + # make the page scrollable + grid_sc = Gtk.ScrolledWindow() + grid_sc.add(grid) + + grid_sc.set_propagate_natural_height(True) + # pack the grid to the page. + page.pack_start(grid_sc, False, False, 0) + # save the page - put it back (now populated) + vboxStacks.append(page) + # reset the things that we need to. + packages.clear() + grid = Gtk.Grid() + # category change + if line.startswith("- name: "): + # Generate the vboxStack item and name for use later (and in packing) + name = line.strip("- name: ").strip().strip('"') + vboxStackNames.append(name) + vboxStacks.append( + Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + ) + + # Now we pack the stack + item_num = 0 + for item in vboxStacks: + stack.add_titled(item, "stack" + str(item_num), vboxStackNames[item_num]) + item_num += 1 + + # Place the stack switcher and the stack together into a vbox + vbox.pack_start(scrolledSwitch, False, False, 0) + vbox.pack_start(stack, True, True, 0) + + # Stuff the vbox with the title and seperator to create the page + vboxStack1.pack_start(cat_name, False, False, 0) + vboxStack1.pack_start(seperator, False, False, 0) + vboxStack1.pack_start(vbox, False, False, 0) + + except Exception as e: + print("Exception in App_Frame_GUI.GUI(): %s" % e) +""" +########## PREVIOUS GUI CODE END ########## diff --git a/usr/share/sofirem/ui/GUI.py b/usr/share/sofirem/ui/GUI.py new file mode 100644 index 0000000..f313e16 --- /dev/null +++ b/usr/share/sofirem/ui/GUI.py @@ -0,0 +1,726 @@ +# ================================================================= +# = Author: Cameron Percival = +# ================================================================= + + +# ============Functions============ +import Functions as fn +from ui.AppFrameGUI import AppFrameGUI +from multiprocessing import cpu_count +from queue import Queue +from threading import Thread + +base_dir = fn.os.path.abspath(fn.os.path.join(fn.os.path.dirname(__file__), "..")) +# base_dir = fn.os.path.dirname(fn.os.path.realpath(__file__)) + + +class GUI_Worker(Thread): + def __init__(self, queue): + Thread.__init__(self) + self.queue = queue + + def run(self): + while True: + # pull what we need from the queue so we can process properly. + items = self.queue.get() + + try: + # make sure we have the required number of items on the queue + if items is not None: + # self, Gtk, vboxStack1, category, package_file = items + + self, Gtk, vbox_stack, category, packages = items + + AppFrameGUI.build_ui_frame( + self, + Gtk, + vbox_stack, + category, + packages, + ) + + except Exception as e: + fn.logger.error("Exception in GUI_Worker(): %s" % e) + finally: + if items is None: + fn.logger.debug("Stopping GUI Worker thread") + self.queue.task_done() + return False + self.queue.task_done() + + +class GUI: + def setup_gui_search( + self, + Gtk, + Gdk, + GdkPixbuf, + base_dir, + os, + Pango, + search_results, + search_term, + settings, + ): + try: + # remove previous vbox + if self.search_activated == False: + self.remove(self.vbox) + else: + self.remove(self.vbox_search) + + # lets quickly create the latest installed list. + fn.get_current_installed() + + # ======================================================= + # HeaderBar + # ======================================================= + + setup_headerbar(self, Gtk, settings) + + # ======================================================= + # App Notifications + # ======================================================= + + hbox0 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + + self.notification_revealer = Gtk.Revealer() + self.notification_revealer.set_reveal_child(False) + + self.notification_label = Gtk.Label() + + pb_panel = GdkPixbuf.Pixbuf().new_from_file(base_dir + "/images/panel.png") + panel = Gtk.Image().new_from_pixbuf(pb_panel) + + overlay_frame = Gtk.Overlay() + overlay_frame.add(panel) + overlay_frame.add_overlay(self.notification_label) + + self.notification_revealer.add(overlay_frame) + + hbox0.pack_start(self.notification_revealer, True, False, 0) + + # ========================================================== + # CONTAINER + # ========================================================== + + self.vbox_search = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6) + vbox1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6) + hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) + + self.vbox_search.pack_start(hbox, True, True, 0) + self.add(self.vbox_search) + + # ========================================================== + # PREP WORK + # ========================================================== + + # This section sets up the tabs, and the array for dealing with the tab content + + # ========================================================== + # GENERATE STACK + # ========================================================== + stack = Gtk.Stack() + # stack.set_transition_type(Gtk.StackTransitionType.SLIDE_UP_DOWN) + stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) + stack.set_transition_duration(350) + + vbox_stack = [] + stack_item = 0 + + # Max Threads + """ + Fatal Python error: Segmentation fault + This error happens randomly, due to the for loop iteration on the cpu_count + old code: for x in range(cpu_count()): + """ + + # spawn only 1 GUI_Worker threads, as any number greater causes a Segmentation fault + + search_worker = GUI_Worker(self.queue) + search_worker.name = "thread_GUI_search_worker" + # Set the worker to be True to allow processing, and avoid Blocking + # search_worker.daemon = True + search_worker.start() + + # This code section might look a little weird. It is because it was + # derived from another function before this version was required. + + for category in search_results: + # NOTE: IF the yaml file name standard changes, be sure to update this, or weirdness will follow. + + # subcategory = search_results[category][0].subcategory + vbox_stack.append( + Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) + ) + stack.add_titled( + vbox_stack[stack_item], + str("stack" + str(len(vbox_stack))), + category, + ) + + # subcategory_desc = search_results[category][0].subcategory_description + search_res_lst = search_results[category] + + # Multithreading! + + self.queue.put( + ( + self, + Gtk, + vbox_stack[stack_item], + category, + search_res_lst, + ) + ) + + stack_item += 1 + + # send a signal that no further items are to be put on the queue + self.queue.put(None) + # safety to ensure that we finish threading before we continue on. + self.queue.join() + fn.logger.debug("GUI Worker thread completed") + + stack_switcher = Gtk.StackSidebar() + stack_switcher.set_name("sidebar") + stack_switcher.set_stack(stack) + + # ===================================================== + # LOGO + # ===================================================== + + ivbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) + pixbuf = GdkPixbuf.Pixbuf().new_from_file_at_size( + os.path.join(base_dir, "images/sofirem.png"), 45, 45 + ) + image = Gtk.Image().new_from_pixbuf(pixbuf) + + # remove the focus on startup from search entry + ivbox.set_property("can-focus", True) + Gtk.Window.grab_focus(ivbox) + + # ===================================================== + # RECACHE BUTTON + # ===================================================== + + btn_recache = Gtk.Button(label="Recache Applications") + btn_recache.connect("clicked", self.recache_clicked) + # btnReCache.set_property("has-tooltip", True) + # btnReCache.connect("query-tooltip", self.tooltip_callback, + # "Refresh the application cache") + + # ===================================================== + # REPOS + # ===================================================== + + # if not ( + # fn.check_package_installed("arcolinux-keyring") + # or fn.check_package_installed("arcolinux-mirrorlist-git") + # ): + # self.btnRepos = Gtk.Button(label="Add ArcoLinux Repo") + # self.btnRepos._value = 1 + # else: + # self.btnRepos = Gtk.Button(label="Remove ArcoLinux Repo") + # self.btnRepos._value = 2 + # + # self.btnRepos.set_size_request(100, 30) + # self.btnRepos.connect("clicked", self.on_repos_clicked) + + # ===================================================== + # QUIT BUTTON + # ===================================================== + + btn_quit_app = Gtk.Button(label="Quit") + btn_quit_app.set_size_request(100, 30) + btn_quit_app.connect("clicked", self.on_close, "delete-event") + btn_context = btn_quit_app.get_style_context() + btn_context.add_class("destructive-action") + + # ===================================================== + # SEARCH BOX + # ===================================================== + + self.searchentry = Gtk.SearchEntry() + self.searchentry.set_text(search_term) + self.searchentry.connect("activate", self.on_search_activated) + self.searchentry.connect("icon-release", self.on_search_cleared) + + iv_searchbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + + # ===================================================== + # PACKS + # ===================================================== + + # hbox1 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=2) + # hbox2 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=2) + # hbox3 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=2) + + # hbox3.pack_start(btnReCache, False, False, 0) + + iv_searchbox.pack_start(self.searchentry, False, False, 0) + + ivbox.pack_start(image, False, False, 0) + ivbox.pack_start(iv_searchbox, False, False, 0) + ivbox.pack_start(stack_switcher, True, True, 0) + + ivbox.pack_start(btn_quit_app, False, False, 0) + + vbox1.pack_start(hbox0, False, False, 0) + vbox1.pack_start(stack, True, True, 0) + + hbox.pack_start(ivbox, False, True, 0) + hbox.pack_start(vbox1, True, True, 0) + + stack.set_hhomogeneous(False) + stack.set_vhomogeneous(False) + + self.show_all() + + except Exception as err: + fn.logger.error("Exception in GUISearch(): %s" % err) + + def setup_gui(self, Gtk, Gdk, GdkPixbuf, base_dir, os, Pango, settings): # noqa + try: + # reset back to main box + if self.search_activated: + # remove the search vbox + self.remove(self.vbox_search) + self.show_all() + + # lets quickly create the latest installed list. + fn.get_current_installed() + + # ======================================================= + # HeaderBar + # ======================================================= + + setup_headerbar(self, Gtk, settings) + + # ======================================================= + # App Notifications + # ======================================================= + + hbox0 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + + self.notification_revealer = Gtk.Revealer() + self.notification_revealer.set_reveal_child(False) + + self.notification_label = Gtk.Label() + + pb_panel = GdkPixbuf.Pixbuf().new_from_file(base_dir + "/images/panel.png") + panel = Gtk.Image().new_from_pixbuf(pb_panel) + + overlay_frame = Gtk.Overlay() + overlay_frame.add(panel) + overlay_frame.add_overlay(self.notification_label) + + self.notification_revealer.add(overlay_frame) + + hbox0.pack_start(self.notification_revealer, True, False, 0) + + # ========================================================== + # CONTAINER + # ========================================================== + + self.vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6) + vbox1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6) + hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) + + self.vbox.pack_start(hbox, True, True, 0) + self.add(self.vbox) + + # ========================================================== + # PREP WORK + # ========================================================== + + # This section sets up the tabs, and the array for dealing with the tab content + """ + yaml_files_unsorted = [] + path = base_dir + "/yaml/" + for file in os.listdir(path): + if file.endswith(".yaml"): + yaml_files_unsorted.append(file) + else: + print( + "Unsupported configuration file type. Please contact Arcolinux Support." + ) + # Need to sort the list (Or do we? I choose to) + yaml_files = sorted(yaml_files_unsorted) + """ + + # Check github for updated files + # fn.check_github(yaml_files) + # ========================================================== + # GENERATE STACK + # ========================================================== + stack = Gtk.Stack() + # stack.set_transition_type(Gtk.StackTransitionType.SLIDE_UP_DOWN) + stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) + stack.set_transition_duration(350) + + vbox_stack = [] + stack_item = 0 + + # Max Threads + """ + Fatal Python error: Segmentation fault + This error happens randomly, due to the for loop iteration on the cpu_count + old code: for x in range(cpu_count()): + """ + + # spawn only 1 GUI_Worker threads, as any number greater causes a Segmentation fault + + worker = GUI_Worker(self.queue) + worker.name = "thread_GUI_Worker" + # Set the worker to be True to allow processing, and avoid Blocking + # worker.daemon = True + worker.start() + + for category in self.packages: + # NOTE: IF the yaml file name standard changes, be sure to update this, or weirdness will follow. + + # this is the side stack listing all categories + vbox_stack.append( + Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) + ) + stack.add_titled( + vbox_stack[stack_item], + str("stack" + str(len(vbox_stack))), + category, + ) + + packages_lst = self.packages[category] + + # Multithreading! + self.queue.put( + ( + self, + Gtk, + vbox_stack[stack_item], + category, + packages_lst, + ) + ) + stack_item += 1 + + # send a signal that no further items are to be put on the queue + self.queue.put(None) + # safety to ensure that we finish threading before we continue on. + + self.queue.join() + fn.logger.debug("GUI Worker thread completed") + + stack_switcher = Gtk.StackSidebar() + stack_switcher.set_name("sidebar") + stack_switcher.set_stack(stack) + + # ===================================================== + # LOGO + # ===================================================== + + ivbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) + pixbuf = GdkPixbuf.Pixbuf().new_from_file_at_size( + os.path.join(base_dir, "images/sofirem.png"), 45, 45 + ) + image = Gtk.Image().new_from_pixbuf(pixbuf) + + # remove the focus on startup from search entry + ivbox.set_property("can-focus", True) + Gtk.Window.grab_focus(ivbox) + + # ===================================================== + # RECACHE BUTTON + # ===================================================== + + # btnReCache = Gtk.Button(label="Recache Applications") + # btnReCache.connect("clicked", self.recache_clicked) + # btnReCache.set_property("has-tooltip", True) + # btnReCache.connect("query-tooltip", self.tooltip_callback, + # "Refresh the application cache") + + # ===================================================== + # REPOS + # ===================================================== + + # ===================================================== + # QUIT BUTTON + # ===================================================== + btn_quit_app = Gtk.Button(label="Quit") + btn_quit_app.set_size_request(100, 30) + btn_quit_app.connect("clicked", self.on_close, "delete-event") + btn_context = btn_quit_app.get_style_context() + btn_context.add_class("destructive-action") + # ===================================================== + # SEARCH BOX + # ===================================================== + self.searchentry = Gtk.SearchEntry() + self.searchentry.set_placeholder_text("Search...") + self.searchentry.connect("activate", self.on_search_activated) + self.searchentry.connect("icon-release", self.on_search_cleared) + + ivsearchbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + + ivsearchbox.pack_start(self.searchentry, False, False, 0) + + ivbox.pack_start(image, False, False, 0) + ivbox.pack_start(ivsearchbox, False, False, 0) + ivbox.pack_start(stack_switcher, True, True, 0) + ivbox.pack_start(btn_quit_app, False, False, 0) + + vbox1.pack_start(hbox0, False, False, 0) + vbox1.pack_start(stack, True, True, 0) + + hbox.pack_start(ivbox, False, True, 0) + hbox.pack_start(vbox1, True, True, 0) + + stack.set_hhomogeneous(False) + stack.set_vhomogeneous(False) + + if self.search_activated: + self.show_all() + + except Exception as e: + fn.logger.error("Exception in GUI(): %s" % e) + + +# setup headerbar including popover settings +def setup_headerbar(self, Gtk, settings): + try: + header_bar_title = "Sofirem" + headerbar = Gtk.HeaderBar() + headerbar.set_title(header_bar_title) + headerbar.set_show_close_button(True) + + self.set_titlebar(headerbar) + + toolbutton = Gtk.ToolButton() + # icon-name open-menu-symbolic / open-menu-symbolic.symbolic + toolbutton.set_icon_name("open-menu-symbolic") + + toolbutton.connect("clicked", self.on_settings_clicked) + + headerbar.pack_end(toolbutton) + + self.popover = Gtk.Popover() + self.popover.set_relative_to(toolbutton) + + vbox = Gtk.Box(spacing=0, orientation=Gtk.Orientation.VERTICAL) + vbox.set_border_width(15) + + # switches + + # switch to display package versions + self.switch_package_version = Gtk.Switch() + + if settings != None: + if settings["Display Package Versions"]: + self.display_versions = settings["Display Package Versions"] + + if self.display_versions == True: + self.switch_package_version.set_active(True) + else: + self.switch_package_version.set_active(False) + + self.switch_package_version.connect("notify::active", self.version_toggle) + + # switch to import arcolinux keyring + self.switch_arco_keyring = Gtk.Switch() + + if ( + fn.check_package_installed("arcolinux-keyring") is False + or fn.verify_arco_pacman_conf() is False + ): + self.switch_arco_keyring.set_state(False) + + else: + self.switch_arco_keyring.set_state(True) + + self.switch_arco_keyring.connect("state-set", self.arco_keyring_toggle) + + # switch to import arcolinix mirrorlist + self.switch_arco_mirrorlist = Gtk.Switch() + + if ( + fn.check_package_installed("arcolinux-mirrorlist-git") is False + or fn.verify_arco_pacman_conf() is False + ): + self.switch_arco_mirrorlist.set_state(False) + + else: + self.switch_arco_mirrorlist.set_state(True) + + self.switch_arco_mirrorlist.connect("state-set", self.arco_mirrorlist_toggle) + + # switch to display package progress window + self.switch_package_progress = Gtk.Switch() + + if settings != None: + if settings["Display Package Progress"]: + self.display_package_progress = settings["Display Package Progress"] + + if self.display_package_progress == True: + self.switch_package_progress.set_active(True) + else: + self.switch_package_progress.set_active(False) + self.switch_package_progress.connect( + "notify::active", self.package_progress_toggle + ) + + # modalbuttons + + # button to open the pacman log monitoring dialog + self.modelbtn_pacmanlog = Gtk.ModelButton() + self.modelbtn_pacmanlog.connect("clicked", self.on_pacman_log_clicked) + self.modelbtn_pacmanlog.set_name("modelbtn_popover") + self.modelbtn_pacmanlog.props.centered = False + self.modelbtn_pacmanlog.props.text = "Open Pacman Log File" + + # button to display installed packages window + modelbtn_packages_export = Gtk.ModelButton() + modelbtn_packages_export.connect("clicked", self.on_packages_export_clicked) + modelbtn_packages_export.set_name("modelbtn_popover") + modelbtn_packages_export.props.centered = False + modelbtn_packages_export.props.text = "Show Installed Packages" + + # button to display import packages window + modelbtn_packages_import = Gtk.ModelButton() + modelbtn_packages_import.connect("clicked", self.on_packages_import_clicked) + modelbtn_packages_import.set_name("modelbtn_popover") + modelbtn_packages_import.props.centered = False + modelbtn_packages_import.props.text = "Import Packages" + + # button to show about dialog + modelbtn_about_app = Gtk.ModelButton() + modelbtn_about_app.connect("clicked", self.on_about_app_clicked) + modelbtn_about_app.set_name("modelbtn_popover") + modelbtn_about_app.props.centered = False + modelbtn_about_app.props.text = "About Sofirem" + + # button to show iso package lists window + modelbtn_iso_packages_list = Gtk.ModelButton() + modelbtn_iso_packages_list.connect( + "clicked", self.on_arcolinux_iso_packages_clicked + ) + modelbtn_iso_packages_list.set_name("modelbtn_popover") + modelbtn_iso_packages_list.props.centered = False + modelbtn_iso_packages_list.props.text = "Explore ArcoLinux ISO Packages" + + # button to show package search window + modelbtn_package_search = Gtk.ModelButton() + modelbtn_package_search.connect("clicked", self.on_package_search_clicked) + modelbtn_package_search.set_name("modelbtn_popover") + modelbtn_package_search.props.centered = False + modelbtn_package_search.props.text = "Open Package Search" + + # grid for the switch options + grid_switches = Gtk.Grid() + grid_switches.set_row_homogeneous(True) + + lbl_package_version = Gtk.Label(xalign=0) + lbl_package_version.set_text("Display Package Versions") + + lbl_package_version_padding = Gtk.Label(xalign=0) + lbl_package_version_padding.set_text(" ") + + lbl_package_progress = Gtk.Label(xalign=0) + lbl_package_progress.set_text("Display Package Progress") + + lbl_package_progress_padding = Gtk.Label(xalign=0) + lbl_package_progress_padding.set_text(" ") + + lbl_arco_keyring = Gtk.Label(xalign=0) + lbl_arco_keyring.set_text("Import ArcoLinux Keyring") + + lbl_arco_keyring_padding = Gtk.Label(xalign=0) + lbl_arco_keyring_padding.set_text(" ") + + lbl_arco_mirrorlist = Gtk.Label(xalign=0) + lbl_arco_mirrorlist.set_text("Import ArcoLinux Mirrorlist") + + lbl_arco_mirrorlist_padding = Gtk.Label(xalign=0) + lbl_arco_mirrorlist_padding.set_text(" ") + + grid_switches.attach(lbl_package_version, 0, 1, 1, 1) + grid_switches.attach_next_to( + lbl_package_version_padding, + lbl_package_version, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + grid_switches.attach_next_to( + self.switch_package_version, + lbl_package_version_padding, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + grid_switches.attach(lbl_package_progress, 0, 2, 1, 1) + grid_switches.attach_next_to( + lbl_package_progress_padding, + lbl_package_progress, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + grid_switches.attach_next_to( + self.switch_package_progress, + lbl_package_progress_padding, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + grid_switches.attach(lbl_arco_keyring, 0, 3, 1, 1) + grid_switches.attach_next_to( + lbl_arco_keyring_padding, + lbl_arco_keyring, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + grid_switches.attach_next_to( + self.switch_arco_keyring, + lbl_arco_keyring_padding, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + grid_switches.attach(lbl_arco_mirrorlist, 0, 4, 1, 1) + grid_switches.attach_next_to( + lbl_arco_mirrorlist_padding, + lbl_arco_mirrorlist, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + grid_switches.attach_next_to( + self.switch_arco_mirrorlist, + lbl_arco_mirrorlist_padding, + Gtk.PositionType.RIGHT, + 1, + 1, + ) + + vbox_buttons = Gtk.Box(spacing=1, orientation=Gtk.Orientation.VERTICAL) + vbox_buttons.pack_start(self.modelbtn_pacmanlog, False, True, 0) + vbox_buttons.pack_start(modelbtn_packages_export, False, True, 0) + vbox_buttons.pack_start(modelbtn_packages_import, False, True, 0) + vbox_buttons.pack_start(modelbtn_iso_packages_list, False, True, 0) + vbox_buttons.pack_start(modelbtn_package_search, False, True, 0) + vbox_buttons.pack_start(modelbtn_about_app, False, True, 0) + + vbox.pack_start(grid_switches, False, False, 0) + vbox.pack_start(vbox_buttons, False, False, 0) + + self.popover.add(vbox) + self.popover.set_position(Gtk.PositionType.BOTTOM) + except Exception as e: + fn.logger.error("Exception in setup_headerbar(): %s" % e) diff --git a/usr/share/sofirem/ui/ISOPackagesWindow.py b/usr/share/sofirem/ui/ISOPackagesWindow.py new file mode 100644 index 0000000..2e9c02a --- /dev/null +++ b/usr/share/sofirem/ui/ISOPackagesWindow.py @@ -0,0 +1,429 @@ +# This class is used to create a window showing a list of packages available for a given ArcoLinux ISO + +import os +import gi +import requests +import Functions as fn +from ui.MessageDialog import MessageDialog + +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, GLib + + +base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) + + +arcolinux_isos = [ + "arcolinuxs-xanmod-iso", + "arcolinuxs-zen-iso", + "arcolinuxs-lts-iso", + "arcolinuxs-iso", + "arcolinuxl-iso", + "arcolinuxd-iso", +] + +arcolinuxb_isos = [ + "arco-sway", + "arco-plasma", + "arco-hyprland", + "arco-chadwm", + "arco-dusk", + "arco-dwm", + "arco-berry", + "arco-hypr", + "arco-enlightenment", + "arco-xtended", + "arco-pantheon", + "arco-awesome", + "arco-bspwm", + "arco-cinnamon", + "arco-budgie", + "arco-cutefish", + "arco-cwm", + "arco-deepin", + "arco-gnome", + "arco-fvwm3", + "arco-herbstluftwm", + "arco-i3", + "arco-icewm", + "arco-jwm", + "arco-leftwm", + "arco-lxqt", + "arco-mate", + "arco-openbox", + "arco-qtile", + "arco-spectrwm", + "arco-ukui", + "arco-wmderland", + "arco-xfce", + "arco-xmonad", +] + +github_arcolinux_packagelist = "https://raw.githubusercontent.com/${ARCOLINUX}/${ISO}/master/archiso/packages.x86_64" +headers = {"Content-Type": "text/plain;charset=UTF-8"} + + +class ISOPackagesWindow(Gtk.Window): + def __init__(self): + Gtk.Window.__init__(self) + + headerbar = Gtk.HeaderBar() + headerbar.set_title("ArcoLinux ISO Package Explorer") + headerbar.set_show_close_button(True) + + # remove the focus on startup from search entry + headerbar.set_property("can-focus", True) + Gtk.Window.grab_focus(headerbar) + + self.set_resizable(True) + self.set_size_request(500, 600) + self.set_border_width(10) + self.set_titlebar(headerbar) + self.set_icon_from_file(os.path.join(base_dir, "images/sofirem.png")) + self.treeview_loaded = False + self.build_gui() + + def get_packagelist(self): + try: + # make request to get the package list from github + url = None + + self.package_list = [] + + if "-iso" in self.selected_iso: + url = github_arcolinux_packagelist.replace( + "${ARCOLINUX}", "arcolinux" + ).replace("${ISO}", self.selected_iso) + github_arcolinux = [ + "https://github.com/arcolinux/", + self.selected_iso, + "/blob/master/archiso/packages.x86_64", + ] + + self.github_source = "".join(github_arcolinux) + else: + url = github_arcolinux_packagelist.replace( + "${ARCOLINUX}", "arcolinuxb" + ).replace("${ISO}", self.selected_iso) + + github_arcolinuxb = [ + "https://github.com/arcolinuxb/", + self.selected_iso, + "/blob/master/archiso/packages.x86_64", + ] + + self.github_source = "".join(github_arcolinuxb) + + r = requests.get(url, headers=headers, allow_redirects=True) + + # read the package list ignore any commented lines + if r.status_code == 200: + if len(r.text) > 0: + for line in r.text.splitlines(): + if "#" not in line.strip() and len(line.strip()) > 0: + self.package_list.append((line.strip(), None)) + else: + fn.logger.error("Request for %s returned %s" % (url, r.status_code)) + + message_dialog = MessageDialog( + "Error", + "Request failed", + "Failed to request package list", + "Request for %s returned status code = %s" % (url, r.status_code), + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + message_dialog.destroy() + + except Exception as e: + message_dialog = MessageDialog( + "Error", + "Request failed", + "Failed to request package list", + e, + "error", + True, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + message_dialog.destroy() + + def on_combo_iso_changed(self, combo): + try: + iso = combo.get_active_text() + if iso is not None: + self.selected_iso = iso + self.get_packagelist() + + if len(self.package_list) > 0: + lbl_github_source_title = Gtk.Label(xalign=0, yalign=0) + lbl_github_source_title.set_markup("Package list source") + + lbl_github_source_value = Gtk.Label(xalign=0, yalign=0) + lbl_github_source_value.set_markup( + "%s" % (self.github_source, self.github_source) + ) + + lbl_package_count_title = Gtk.Label(xalign=0, yalign=0) + lbl_package_count_title.set_markup("Activated packages") + + lbl_package_count_value = Gtk.Label(xalign=0, yalign=0) + lbl_package_count_value.set_text(str(len(self.package_list))) + + self.filename = "%s/sofirem-exports/%s-%s-packages.x86_64.txt" % ( + fn.home, + self.selected_iso, + fn.datetime.now().strftime("%Y-%m-%d"), + ) + + lbl_export_desc_title = Gtk.Label(xalign=0, yalign=0) + lbl_export_desc_title.set_markup("Export destination") + + lbl_export_desc_value = Gtk.Label(xalign=0, yalign=0) + lbl_export_desc_value.set_text(self.filename) + + if self.treeview_loaded is True: + self.vbox_package_data.destroy() + + search_entry = Gtk.SearchEntry() + search_entry.set_placeholder_text("Search...") + search_entry.set_size_request(450, 0) + + grid_package_data = Gtk.Grid() + + treestore_packages_explorer = Gtk.TreeStore(str, str) + + for item in sorted(self.package_list): + treestore_packages_explorer.append(None, list(item)) + + treeview_packages_explorer = Gtk.TreeView() + treeview_packages_explorer.set_search_entry(search_entry) + + treeview_packages_explorer.set_model(treestore_packages_explorer) + + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn("Packages", renderer, text=0) + + treeview_packages_explorer.append_column(column) + + path = Gtk.TreePath.new_from_indices([0]) + + selection = treeview_packages_explorer.get_selection() + + selection.select_path(path) + + treeview_packages_explorer.expand_all() + treeview_packages_explorer.columns_autosize() + + scrolled_window = Gtk.ScrolledWindow() + scrolled_window.set_vexpand(True) + scrolled_window.set_hexpand(True) + + scrolled_window.add(treeview_packages_explorer) + + grid_treeview = Gtk.Grid() + grid_treeview.set_column_homogeneous(True) + + self.vbox_package_data = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + + self.vbox_package_data.pack_start( + lbl_github_source_title, False, True, 1 + ) + + self.vbox_package_data.pack_start( + lbl_github_source_value, False, True, 1 + ) + + self.vbox_package_data.pack_start( + lbl_package_count_title, False, True, 1 + ) + + self.vbox_package_data.pack_start( + lbl_package_count_value, False, True, 1 + ) + + self.vbox_package_data.pack_start( + lbl_export_desc_title, False, True, 1 + ) + self.vbox_package_data.pack_start( + lbl_export_desc_value, False, True, 1 + ) + + lbl_padding_search_entry1 = Gtk.Label(xalign=0, yalign=0) + lbl_padding_search_entry1.set_text("") + + lbl_padding_search_entry2 = Gtk.Label(xalign=0, yalign=0) + lbl_padding_search_entry2.set_text("") + + grid_search_entry = Gtk.Grid() + + grid_search_entry.attach(lbl_padding_search_entry1, 0, 1, 1, 1) + grid_search_entry.attach(search_entry, 0, 2, 1, 1) + grid_search_entry.attach(lbl_padding_search_entry2, 0, 3, 1, 1) + + self.vbox_package_data.pack_start( + grid_search_entry, False, False, 1 + ) + + self.vbox_package_data.pack_start(scrolled_window, False, True, 1) + + self.vbox_combo.pack_start(self.vbox_package_data, False, True, 1) + + self.show_all() + + self.treeview_loaded = True + + except Exception as e: + fn.logger.error("Exception in on_combo_iso_changed(): %s" % e) + + def on_iso_package_list_export(self, widget): + # export the package list to a file inside $HOME/sofirem-exports + fn.logger.debug("Exporting ArcoLinux ISO package list") + try: + if self.filename is not None: + with open(self.filename, "w", encoding="utf-8") as f: + f.write( + "# Created by Sofirem on %s\n" + % fn.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + ) + f.write("# %s\n" % self.github_source) + for line in sorted(self.package_list): + f.write("%s\n" % line[0]) + + if os.path.exists(self.filename): + message_dialog = MessageDialog( + "Info", + "Package export complete", + "Package list exported to %s" % self.filename, + "", + "info", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + else: + message_dialog = MessageDialog( + "Error", + "Package export failed", + "Package list export failed", + "", + "error", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + # file is created by root, update the permissions to the sudo username + fn.permissions(self.filename) + else: + message_dialog = MessageDialog( + "Warning", + "Select an ISO", + "An ArcoLinux ISO needs to be selected before exporting", + "", + "warning", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + except Exception as e: + fn.logger.error("Exception in on_iso_package_list_export(): %s" % e) + + def on_close(self, widget): + self.hide() + self.destroy() + + def populate_combo_iso(self): + for arco_iso in arcolinux_isos: + self.combo_iso.append_text(arco_iso) + + for arco_isob in sorted(arcolinuxb_isos): + self.combo_iso.append_text(arco_isob) + + def build_gui(self): + try: + lbl_select_iso = Gtk.Label(xalign=0, yalign=0) + lbl_select_iso.set_markup("Select ArcoLinux ISO") + + lbl_padding1 = Gtk.Label(xalign=0, yalign=0) + lbl_padding1.set_text("") + + lbl_padding2 = Gtk.Label(xalign=0, yalign=0) + lbl_padding2.set_text("") + + self.combo_iso = Gtk.ComboBoxText() + self.combo_iso.set_wrap_width(3) + self.combo_iso.set_entry_text_column(0) + self.combo_iso.connect("changed", self.on_combo_iso_changed) + + self.populate_combo_iso() + + self.filename = None + + grid_top = Gtk.Grid() + + grid_top.attach(lbl_select_iso, 0, 1, 1, 1) + grid_top.attach_next_to( + lbl_padding1, lbl_select_iso, Gtk.PositionType.BOTTOM, 1, 1 + ) + grid_top.attach(self.combo_iso, 0, 2, 1, 1) + grid_top.attach(lbl_padding2, 0, 3, 1, 1) + + btn_ok = Gtk.Button(label="OK") + btn_ok.set_size_request(100, 30) + btn_ok.connect("clicked", self.on_close) + btn_ok.set_halign(Gtk.Align.END) + + btn_export = Gtk.Button(label="Export") + btn_export.set_size_request(100, 30) + btn_export.connect("clicked", self.on_iso_package_list_export) + btn_export.set_halign(Gtk.Align.END) + + grid_bottom = Gtk.Grid() + grid_bottom.attach(btn_ok, 0, 1, 1, 1) + + lbl_padding3 = Gtk.Label(xalign=0, yalign=0) + lbl_padding3.set_text(" ") + + grid_bottom.attach_next_to( + lbl_padding3, btn_ok, Gtk.PositionType.RIGHT, 1, 1 + ) + + grid_bottom.attach_next_to( + btn_export, lbl_padding3, Gtk.PositionType.RIGHT, 1, 1 + ) + + grid_bottom.set_halign(Gtk.Align.END) + + vbox_bottom = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5) + + lbl_padding_bottom = Gtk.Label(xalign=0, yalign=0) + lbl_padding_bottom.set_text("") + + vbox_bottom.pack_start(lbl_padding_bottom, False, True, 0) + vbox_bottom.pack_start(grid_bottom, False, True, 0) + + self.vbox_combo = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + + self.vbox_combo.pack_start(grid_top, False, True, 0) + self.vbox_combo.pack_end(vbox_bottom, False, True, 0) + + self.add(self.vbox_combo) + + self.show_all() + + except Exception as e: + fn.logger.error("Exception in build_gui(): %s" % e) diff --git a/usr/share/sofirem/ui/MessageDialog.py b/usr/share/sofirem/ui/MessageDialog.py new file mode 100644 index 0000000..c2b9ee4 --- /dev/null +++ b/usr/share/sofirem/ui/MessageDialog.py @@ -0,0 +1,118 @@ +# This class is used to create a modal dialog window showing detailed information about an event + +import os +import gi +import Functions as fn + +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk + +base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +# base_dir = os.path.dirname(os.path.realpath(__file__)) + + +class MessageDialog(Gtk.Dialog): + # message_type is a string, either one of "info", "warning", "error" to show which infobar to display + # extended argument when set to true shows a textview inside the dialog + # extended argument when set to false only shows a standard dialog + def __init__( + self, title, subtitle, first_msg, secondary_msg, message_type, extended + ): + Gtk.Dialog.__init__(self) + + headerbar = Gtk.HeaderBar() + headerbar.set_title(title) + headerbar.set_show_close_button(True) + + self.set_resizable(True) + + self.set_border_width(10) + + self.set_titlebar(headerbar) + + btn_ok = Gtk.Button(label="OK") + btn_ok.set_size_request(100, 30) + btn_ok.connect("clicked", on_message_dialog_ok_response, self) + btn_ok.set_halign(Gtk.Align.END) + self.set_icon_from_file(os.path.join(base_dir, "images/sofirem.png")) + + infobar = Gtk.InfoBar() + + if message_type == "info": + infobar.set_name("infobar_info") + if message_type == "error": + infobar.set_name("infobar_error") + if message_type == "warning": + infobar.set_name("infobar_warning") + + lbl_title_message = Gtk.Label(xalign=0, yalign=0) + lbl_title_message.set_markup("%s" % subtitle) + content = infobar.get_content_area() + content.add(lbl_title_message) + + infobar.set_revealed(True) + + lbl_padding1 = Gtk.Label(xalign=0, yalign=0) + lbl_padding1.set_text("") + + lbl_padding2 = Gtk.Label(xalign=0, yalign=0) + lbl_padding2.set_text("") + + grid_message = Gtk.Grid() + + grid_message.attach(infobar, 0, 0, 1, 1) + grid_message.attach(lbl_padding1, 0, 1, 1, 1) + + if extended is True: + scrolled_window = Gtk.ScrolledWindow() + textview = Gtk.TextView() + textview.set_property("editable", False) + textview.set_property("monospace", True) + textview.set_border_width(10) + textview.set_vexpand(True) + textview.set_hexpand(True) + + msg_buffer = textview.get_buffer() + msg_buffer.insert( + msg_buffer.get_end_iter(), + "Event timestamp = %s\n" + % fn.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + ) + msg_buffer.insert(msg_buffer.get_end_iter(), "%s\n" % first_msg) + msg_buffer.insert(msg_buffer.get_end_iter(), "%s\n" % secondary_msg) + + # move focus away from the textview, to hide the cursor at load + headerbar.set_property("can-focus", True) + Gtk.Window.grab_focus(headerbar) + + scrolled_window.add(textview) + + grid_message.attach(scrolled_window, 0, 2, 1, 1) + grid_message.attach(lbl_padding2, 0, 3, 1, 1) + + self.set_default_size(800, 600) + + else: + # do not display textview + lbl_first_message = Gtk.Label(xalign=0, yalign=0) + lbl_first_message.set_text(first_msg) + + lbl_second_message = Gtk.Label(xalign=0, yalign=0) + lbl_second_message.set_markup("%s" % secondary_msg) + + grid_message.attach(lbl_first_message, 0, 2, 1, 1) + grid_message.attach(lbl_second_message, 0, 3, 1, 1) + + self.set_default_size(600, 100) + self.set_resizable(False) + + vbox_close = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5) + vbox_close.pack_start(btn_ok, True, True, 1) + + self.vbox.add(grid_message) + self.vbox.add(vbox_close) + + +def on_message_dialog_ok_response(self, widget): + # widget.hide() + widget.destroy() diff --git a/usr/share/sofirem/ui/PackageListDialog.py b/usr/share/sofirem/ui/PackageListDialog.py new file mode 100644 index 0000000..ce806c9 --- /dev/null +++ b/usr/share/sofirem/ui/PackageListDialog.py @@ -0,0 +1,283 @@ +# This class is used to create a modal dialog window to display currently installed packages + +import os +import gi +import Functions as fn +from ui.MessageDialog import MessageDialog +from queue import Queue +from gi.repository import Gtk, Gdk, GdkPixbuf, Pango, GLib + +gi.require_version("Gtk", "3.0") + +base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +# base_dir = os.path.dirname(os.path.realpath(__file__)) + + +class PackageListDialog(Gtk.Dialog): + def __init__(self): + Gtk.Dialog.__init__(self) + + # Create a queue for storing package list exports to display inside PackageListDialog + self.pkg_export_queue = Queue() + + self.filename = "%s/packages-x86_64.txt" % (fn.export_dir,) + + self.set_resizable(True) + self.set_size_request(1050, 700) + self.set_modal(True) + + self.set_border_width(10) + self.set_icon_from_file(os.path.join(base_dir, "images/sofirem.png")) + + self.connect("delete-event", self.on_close) + + self.installed_packages_list = None + + self.headerbar = Gtk.HeaderBar() + self.headerbar.set_title("Loading please wait ..") + self.headerbar.set_show_close_button(True) + + self.set_titlebar(self.headerbar) + + self.grid_packageslst = Gtk.Grid() + self.grid_packageslst.set_column_homogeneous(True) + + self.lbl_info = Gtk.Label(xalign=0, yalign=0) + self.lbl_info.set_text("Export destination %s" % self.filename) + + # get a list of installed packages on the system + + self.pacman_export_cmd = ["pacman", "-Qien"] + + fn.Thread( + target=fn.get_installed_package_data, + args=(self,), + daemon=True, + ).start() + + fn.Thread(target=self.check_queue, daemon=True).start() + + def setup_gui(self): + if len(self.installed_packages_list) > 0: + self.set_title( + "Showing %s installed packages" % len(self.installed_packages_list) + ) + + search_entry = Gtk.SearchEntry() + search_entry.set_placeholder_text("Search...") + + # remove the focus on startup from search entry + self.headerbar.set_property("can-focus", True) + Gtk.Window.grab_focus(self.headerbar) + + treestore_packages = Gtk.TreeStore(str, str, str, str, str) + for item in sorted(self.installed_packages_list): + treestore_packages.append(None, list(item)) + + treeview_packages = Gtk.TreeView() + treeview_packages.set_search_entry(search_entry) + + treeview_packages.set_model(treestore_packages) + + for i, col_title in enumerate( + [ + "Name", + "Installed Version", + "Latest Version", + "Installed Size", + "Installed Date", + ] + ): + renderer = Gtk.CellRendererText() + col = Gtk.TreeViewColumn(col_title, renderer, text=i) + treeview_packages.append_column(col) + + # allow sorting by installed date + + col_installed_date = treeview_packages.get_column(4) + col_installed_date.set_sort_column_id(4) + + treestore_packages.set_sort_func(4, self.compare_install_date, None) + + path = Gtk.TreePath.new_from_indices([0]) + + selection = treeview_packages.get_selection() + selection.select_path(path) + + treeview_packages.expand_all() + treeview_packages.columns_autosize() + + scrolled_window = Gtk.ScrolledWindow() + scrolled_window.set_vexpand(True) + scrolled_window.set_hexpand(True) + + self.grid_packageslst.attach(scrolled_window, 0, 0, 8, 10) + + lbl_padding1 = Gtk.Label(xalign=0, yalign=0) + lbl_padding1.set_text("") + + self.grid_packageslst.attach_next_to( + lbl_padding1, scrolled_window, Gtk.PositionType.BOTTOM, 1, 1 + ) + + btn_dialog_export = Gtk.Button(label="Export") + btn_dialog_export.connect("clicked", self.on_dialog_export_clicked) + btn_dialog_export.set_size_request(100, 30) + btn_dialog_export.set_halign(Gtk.Align.END) + + btn_dialog_export_close = Gtk.Button(label="Close") + btn_dialog_export_close.connect("clicked", self.on_close, "delete-event") + btn_dialog_export_close.set_size_request(100, 30) + btn_dialog_export_close.set_halign(Gtk.Align.END) + + scrolled_window.add(treeview_packages) + + grid_btn = Gtk.Grid() + grid_btn.attach(btn_dialog_export, 0, 1, 1, 1) + + lbl_padding2 = Gtk.Label(xalign=0, yalign=0) + lbl_padding2.set_text(" ") + + grid_btn.attach_next_to( + lbl_padding2, btn_dialog_export, Gtk.PositionType.RIGHT, 1, 1 + ) + + grid_btn.attach_next_to( + btn_dialog_export_close, lbl_padding2, Gtk.PositionType.RIGHT, 1, 1 + ) + + grid_btn.set_halign(Gtk.Align.END) + + vbox_btn = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5) + vbox_btn.pack_start(grid_btn, True, True, 1) + + lbl_padding3 = Gtk.Label(xalign=0, yalign=0) + lbl_padding3.set_text("") + + self.vbox.add(search_entry) + self.vbox.add(lbl_padding3) + self.vbox.add(self.grid_packageslst) + self.vbox.add(self.lbl_info) + self.vbox.add(vbox_btn) + + self.show_all() + + def check_queue(self): + while True: + self.installed_packages_list = self.pkg_export_queue.get() + + if self.installed_packages_list is not None: + break + + self.pkg_export_queue.task_done() + + GLib.idle_add(self.setup_gui, priority=GLib.PRIORITY_DEFAULT) + + def on_close(self, dialog, event): + self.hide() + self.destroy() + + def on_dialog_export_clicked(self, dialog): + try: + if not os.path.exists(fn.export_dir): + fn.makedirs(fn.export_dir) + fn.permissions(fn.export_dir) + + with open(self.filename, "w", encoding="utf-8") as f: + f.write( + "# This file was auto-generated by Sofirem on %s at %s\n" + % ( + fn.datetime.today().date(), + fn.datetime.now().strftime("%H:%M:%S"), + ) + ) + + f.write( + "# Exported explicitly installed packages using %s\n" + % " ".join(self.pacman_export_cmd) + ) + + for package in sorted(self.installed_packages_list): + f.write("%s\n" % (package[0])) + + if os.path.exists(self.filename): + fn.logger.info("Export completed") + + # fix permissions, file is owned by root + fn.permissions(self.filename) + + message_dialog = MessageDialog( + "Info", + "Package export complete", + "Package list exported to %s" % self.filename, + "", + "info", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + message_dialog.destroy() + + else: + fn.logger.error("Export failed") + + message_dialog = MessageDialog( + "Error", + "Package export failed", + "Failed to export package list to %s." % self.filename, + "", + "error", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + message_dialog.destroy() + + except Exception as e: + fn.logger.error("Exception in on_dialog_export_clicked(): %s" % e) + + # noqa: any locales other than en_GB.UTF-8 / en_US.UTF-8 are untested + def compare_install_date(self, model, row1, row2, user_data): + try: + sort_column, _ = model.get_sort_column_id() + str_value1 = model.get_value(row1, sort_column) + str_value2 = model.get_value(row2, sort_column) + + datetime_value1 = None + datetime_value2 = None + + # convert string into datetime object, check if time format is 12H format with AM/PM + if str_value1.lower().find("am") > 0 or str_value1.lower().find("pm") > 0: + # 12H format + datetime_value1 = fn.datetime.strptime( + str_value1, "%a %d %b %Y %I:%M:%S %p %Z" + ).replace(tzinfo=None) + datetime_value2 = fn.datetime.strptime( + str_value2, "%a %d %b %Y %I:%M:%S %p %Z" + ).replace(tzinfo=None) + else: + # 24H format + datetime_value1 = fn.datetime.strptime( + str_value1, "%a %d %b %Y %H:%M:%S %Z" + ).replace(tzinfo=None) + datetime_value2 = fn.datetime.strptime( + str_value2, "%a %d %b %Y %H:%M:%S %Z" + ).replace(tzinfo=None) + + if datetime_value1 is not None and datetime_value2 is not None: + if datetime_value1 < datetime_value2: + return -1 + elif datetime_value1 == datetime_value2: + return 0 + else: + return 1 + except ValueError as ve: + # fn.logger.error("ValueError in compare_install_date: %s" % ve) + # compare fails due to the format of the datetime string, which hasn't been tested + pass + except Exception as e: + fn.logger.error("Exception in compare_install_date: %s" % e) diff --git a/usr/share/sofirem/ui/PackageSearchWindow.py b/usr/share/sofirem/ui/PackageSearchWindow.py new file mode 100644 index 0000000..016a00a --- /dev/null +++ b/usr/share/sofirem/ui/PackageSearchWindow.py @@ -0,0 +1,543 @@ +# This class is used to create a window for package name searches and to display package information + +import os +import gi + +import Functions as fn +from ui.MessageDialog import MessageDialog + +from gi.repository import Gtk, Gdk, GdkPixbuf, Pango, GLib + +gi.require_version("Gtk", "3.0") + +base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) + + +class PackageSearchWindow(Gtk.Window): + def __init__(self): + Gtk.Window.__init__(self) + + self.headerbar = Gtk.HeaderBar() + self.headerbar.set_title("Package Search") + self.headerbar.set_show_close_button(True) + + # remove the focus on startup from search entry + self.headerbar.set_property("can-focus", True) + Gtk.Window.grab_focus(self.headerbar) + + self.set_resizable(True) + self.set_size_request(700, 500) + self.set_border_width(10) + self.set_titlebar(self.headerbar) + self.set_icon_from_file(os.path.join(base_dir, "images/sofirem.png")) + self.search_package_activated = False + self.build_gui() + + def build_gui(self): + self.stack = Gtk.Stack() + self.stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) + self.stack.set_transition_duration(350) + self.stack.set_hhomogeneous(False) + self.stack.set_vhomogeneous(False) + + stack_switcher = Gtk.StackSwitcher() + stack_switcher.set_orientation(Gtk.Orientation.HORIZONTAL) + stack_switcher.set_stack(self.stack) + stack_switcher.set_homogeneous(True) + + searchentry = Gtk.SearchEntry() + searchentry.set_placeholder_text("Search using package name...") + searchentry.set_size_request(400, 0) + searchentry.connect("activate", self.on_search_package_activated) + searchentry.connect("icon-release", self.on_search_package_cleared) + + btn_ok = Gtk.Button(label="OK") + btn_ok.set_size_request(100, 30) + btn_ok.connect("clicked", self.on_close) + btn_ok.set_halign(Gtk.Align.END) + + grid_bottom = Gtk.Grid() + grid_bottom.attach(btn_ok, 0, 1, 1, 1) + grid_bottom.set_halign(Gtk.Align.END) + + vbox_bottom = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5) + lbl_padding_bottom = Gtk.Label(xalign=0, yalign=0) + lbl_padding_bottom.set_text("") + + vbox_bottom.pack_start(lbl_padding_bottom, False, True, 0) + vbox_bottom.pack_start(grid_bottom, False, True, 0) + + self.stack.add_titled(searchentry, "Package Search", "Package Search") + + vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) + vbox.set_border_width(10) + + vbox.pack_start(stack_switcher, False, False, 0) + vbox.pack_start(self.stack, False, False, 0) + vbox.pack_end(vbox_bottom, False, True, 0) + + self.add(vbox) + self.show_all() + + thread_pacman_sync_file_db = fn.threading.Thread( + name="thread_pacman_sync_file_db", + target=fn.sync_file_db, + daemon=True, + ) + thread_pacman_sync_file_db.start() + + def on_close(self, widget): + self.hide() + self.destroy() + + def on_search_package_activated(self, searchentry): + if searchentry.get_text_length() == 0 and self.search_package_activated: + self.search_package_activated = False + self.stack.get_child_by_name("Package Information").destroy() + + self.stack.get_child_by_name("Package Files").destroy() + Gtk.Window.grab_focus(self.headerbar) + else: + self.perform_search(searchentry) + + def on_search_package_cleared(self, searchentry, icon_pos, event): + searchentry.set_placeholder_text("Search using package name...") + if self.search_package_activated is True: + self.search_package_activated = False + self.stack.get_child_by_name("Package Information").destroy() + + self.stack.get_child_by_name("Package Files").destroy() + + Gtk.Window.grab_focus(self.headerbar) + + def perform_search(self, searchentry): + try: + if ( + len(searchentry.get_text().rstrip().lstrip()) > 0 + and not searchentry.get_text().isspace() + ): + term = searchentry.get_text().rstrip().lstrip() + + if len(term) > 0: + fn.logger.info("Searching pacman file database") + + package_metadata = fn.get_package_information(term) + + if package_metadata is not None: + # package information + + if self.search_package_activated is True: + self.stack.get_child_by_name( + "Package Information" + ).destroy() + + self.stack.get_child_by_name("Package Files").destroy() + + box_outer = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=5 + ) + + listbox = Gtk.ListBox() + listbox.set_selection_mode(Gtk.SelectionMode.NONE) + box_outer.pack_start(listbox, True, True, 0) + + # package name + row_package_title = Gtk.ListBoxRow() + vbox_package_title = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_title.add(vbox_package_title) + lbl_package_name_title = Gtk.Label(xalign=0) + lbl_package_name_title.set_markup("Package Name") + + lbl_package_name_value = Gtk.Label(xalign=0) + lbl_package_name_value.set_text(package_metadata["name"]) + vbox_package_title.pack_start( + lbl_package_name_title, True, True, 0 + ) + vbox_package_title.pack_start( + lbl_package_name_value, True, True, 0 + ) + + listbox.add(row_package_title) + + # repository + + row_package_repo = Gtk.ListBoxRow() + vbox_package_repo = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_repo.add(vbox_package_repo) + lbl_package_repo_title = Gtk.Label(xalign=0) + lbl_package_repo_title.set_markup("Repository") + + lbl_package_repo_value = Gtk.Label(xalign=0) + lbl_package_repo_value.set_text(package_metadata["repository"]) + vbox_package_repo.pack_start( + lbl_package_repo_title, True, True, 0 + ) + vbox_package_repo.pack_start( + lbl_package_repo_value, True, True, 0 + ) + + listbox.add(row_package_repo) + + # description + + row_package_description = Gtk.ListBoxRow() + vbox_package_description = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_description.add(vbox_package_description) + lbl_package_description_title = Gtk.Label(xalign=0) + lbl_package_description_title.set_markup("Description") + + lbl_package_description_value = Gtk.Label(xalign=0) + lbl_package_description_value.set_text( + package_metadata["description"] + ) + vbox_package_description.pack_start( + lbl_package_description_title, True, True, 0 + ) + vbox_package_description.pack_start( + lbl_package_description_value, True, True, 0 + ) + + listbox.add(row_package_description) + + # arch + + row_package_arch = Gtk.ListBoxRow() + vbox_package_arch = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_arch.add(vbox_package_arch) + lbl_package_arch_title = Gtk.Label(xalign=0) + lbl_package_arch_title.set_markup("Architecture") + + lbl_package_arch_value = Gtk.Label(xalign=0) + lbl_package_arch_value.set_text(package_metadata["arch"]) + vbox_package_arch.pack_start( + lbl_package_arch_title, True, True, 0 + ) + vbox_package_arch.pack_start( + lbl_package_arch_value, True, True, 0 + ) + + listbox.add(row_package_arch) + + # url + + row_package_url = Gtk.ListBoxRow() + vbox_package_url = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_url.add(vbox_package_url) + lbl_package_url_title = Gtk.Label(xalign=0) + lbl_package_url_title.set_markup("URL") + + lbl_package_url_value = Gtk.Label(xalign=0) + lbl_package_url_value.set_markup( + "%s" + % (package_metadata["url"], package_metadata["url"]) + ) + vbox_package_url.pack_start( + lbl_package_url_title, True, True, 0 + ) + vbox_package_url.pack_start( + lbl_package_url_value, True, True, 0 + ) + + listbox.add(row_package_url) + + # download size + + row_package_size = Gtk.ListBoxRow() + vbox_package_size = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_size.add(vbox_package_size) + lbl_package_size_title = Gtk.Label(xalign=0) + lbl_package_size_title.set_markup("Download size") + + lbl_package_size_value = Gtk.Label(xalign=0) + lbl_package_size_value.set_text( + package_metadata["download_size"] + ) + vbox_package_size.pack_start( + lbl_package_size_title, True, True, 0 + ) + vbox_package_size.pack_start( + lbl_package_size_value, True, True, 0 + ) + + listbox.add(row_package_size) + + # installed size + + row_package_installed_size = Gtk.ListBoxRow() + vbox_package_installed_size = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_installed_size.add(vbox_package_installed_size) + lbl_package_installed_size_title = Gtk.Label(xalign=0) + lbl_package_installed_size_title.set_markup( + "Installed size" + ) + + lbl_package_installed_size_value = Gtk.Label(xalign=0) + lbl_package_installed_size_value.set_text( + package_metadata["installed_size"] + ) + vbox_package_installed_size.pack_start( + lbl_package_installed_size_title, True, True, 0 + ) + vbox_package_installed_size.pack_start( + lbl_package_installed_size_value, True, True, 0 + ) + + listbox.add(row_package_installed_size) + + # build date + + row_package_build_date = Gtk.ListBoxRow() + vbox_package_build_date = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_build_date.add(vbox_package_build_date) + lbl_package_build_date_title = Gtk.Label(xalign=0) + lbl_package_build_date_title.set_markup("Build date") + + lbl_package_build_date_value = Gtk.Label(xalign=0) + lbl_package_build_date_value.set_text( + package_metadata["build_date"] + ) + vbox_package_build_date.pack_start( + lbl_package_build_date_title, True, True, 0 + ) + vbox_package_build_date.pack_start( + lbl_package_build_date_value, True, True, 0 + ) + + listbox.add(row_package_build_date) + + # packager + + row_package_maintainer = Gtk.ListBoxRow() + vbox_package_maintainer = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_maintainer.add(vbox_package_maintainer) + lbl_package_maintainer_title = Gtk.Label(xalign=0) + lbl_package_maintainer_title.set_markup("Packager") + + lbl_package_maintainer_value = Gtk.Label(xalign=0) + lbl_package_maintainer_value.set_text( + package_metadata["packager"] + ) + vbox_package_maintainer.pack_start( + lbl_package_maintainer_title, True, True, 0 + ) + vbox_package_maintainer.pack_start( + lbl_package_maintainer_value, True, True, 0 + ) + + listbox.add(row_package_maintainer) + + # depends on + + expander_depends_on = Gtk.Expander() + expander_depends_on.set_expanded(True) + expander_depends_on.set_use_markup(True) + expander_depends_on.set_resize_toplevel(True) + expander_depends_on.set_label("Depends on") + + row_package_depends_on = Gtk.ListBoxRow() + expander_depends_on.add(row_package_depends_on) + vbox_package_depends_on = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_depends_on.add(vbox_package_depends_on) + + if len(package_metadata["depends_on"]) > 0: + treestore_depends = Gtk.TreeStore(str, str) + + for item in package_metadata["depends_on"]: + treestore_depends.append(None, list(item)) + + treeview_depends = Gtk.TreeView(model=treestore_depends) + + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn("Package", renderer, text=0) + + treeview_depends.append_column(column) + + vbox_package_depends_on.pack_start( + treeview_depends, True, True, 0 + ) + + else: + lbl_package_depends_value = Gtk.Label(xalign=0, yalign=0) + lbl_package_depends_value.set_text("None") + + vbox_package_depends_on.pack_start( + lbl_package_depends_value, True, True, 0 + ) + + listbox.add(expander_depends_on) + + # conflicts with + + expander_conflicts_with = Gtk.Expander() + expander_conflicts_with.set_use_markup(True) + expander_conflicts_with.set_expanded(True) + expander_conflicts_with.set_resize_toplevel(True) + expander_conflicts_with.set_label("Conflicts with") + + row_package_conflicts_with = Gtk.ListBoxRow() + expander_conflicts_with.add(row_package_conflicts_with) + vbox_package_conflicts_with = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_conflicts_with.add(vbox_package_conflicts_with) + + if len(package_metadata["conflicts_with"]) > 0: + treestore_conflicts = Gtk.TreeStore(str, str) + + for item in package_metadata["conflicts_with"]: + treestore_conflicts.append(None, list(item)) + + treeview_conflicts = Gtk.TreeView(model=treestore_conflicts) + + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn("Package", renderer, text=0) + + treeview_conflicts.append_column(column) + + vbox_package_conflicts_with.pack_start( + treeview_conflicts, True, True, 0 + ) + + else: + lbl_package_conflicts_with_value = Gtk.Label( + xalign=0, yalign=0 + ) + lbl_package_conflicts_with_value.set_text("None") + + vbox_package_conflicts_with.pack_start( + lbl_package_conflicts_with_value, True, True, 0 + ) + + listbox.add(expander_conflicts_with) + + checkbtn_installed = Gtk.CheckButton(label="Installed") + checkbtn_installed.set_active(False) + checkbtn_installed.set_sensitive(False) + + # is the package installed + installed = fn.check_package_installed(term) + + if installed is True: + checkbtn_installed.set_active(True) + + # box_outer.pack_start(checkbtn_installed, True, True, 0) + + scrolled_window_package_info = Gtk.ScrolledWindow() + scrolled_window_package_info.set_propagate_natural_height(True) + scrolled_window_package_info.add(box_outer) + + vbox_package_info = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + + lbl_padding_vbox = Gtk.Label(xalign=0, yalign=0) + lbl_padding_vbox.set_text("") + + vbox_package_info.pack_start( + scrolled_window_package_info, True, True, 0 + ) + vbox_package_info.pack_start(lbl_padding_vbox, True, True, 0) + vbox_package_info.pack_start(checkbtn_installed, True, True, 0) + + self.stack.add_titled( + vbox_package_info, + "Package Information", + "Package Information", + ) + + # package files + + package_files = fn.get_package_files(term) + if package_files is not None: + lbl_package_title = Gtk.Label(xalign=0, yalign=0) + lbl_package_title.set_markup("Package") + + lbl_package_title_value = Gtk.Label(xalign=0, yalign=0) + + lbl_package_title_value.set_text(package_metadata["name"]) + + treestore_filelist = Gtk.TreeStore(str, str) + + for file in package_files: + treestore_filelist.append(None, list(file)) + + treeview_files = Gtk.TreeView(model=treestore_filelist) + + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn("Files", renderer, text=0) + + treeview_files.append_column(column) + + vbox_package_files = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + + vbox_package_files.pack_start( + lbl_package_title, True, True, 0 + ) + vbox_package_files.pack_start( + lbl_package_title_value, True, True, 0 + ) + + lbl_padding_package_files = Gtk.Label(xalign=0, yalign=0) + lbl_padding_package_files.set_text("") + + vbox_package_files.pack_start( + lbl_padding_package_files, True, True, 0 + ) + + scrolled_window_package_files = Gtk.ScrolledWindow() + scrolled_window_package_files.set_propagate_natural_height( + True + ) + scrolled_window_package_files.add(treeview_files) + + vbox_package_files.pack_start( + scrolled_window_package_files, True, True, 0 + ) + + self.stack.add_titled( + vbox_package_files, + "Package Files", + "Package Files", + ) + + self.search_package_activated = True + self.show_all() + + else: + message_dialog = MessageDialog( + "Info", + "Search returned 0 results", + "Failed to find package name", + "Are the correct pacman mirrorlists configured ?\nOr try to search again using the exact package name", + "info", + False, + ) + + message_dialog.show_all() + message_dialog.run() + message_dialog.hide() + + except Exception as e: + fn.logger.error("Exception in perform_search(): %s" % e) diff --git a/usr/share/sofirem/ui/PackagesImportDialog.py b/usr/share/sofirem/ui/PackagesImportDialog.py new file mode 100644 index 0000000..014df12 --- /dev/null +++ b/usr/share/sofirem/ui/PackagesImportDialog.py @@ -0,0 +1,228 @@ +# ============================================================ +# Authors: Brad Heffernan - Erik Dubois - Cameron Percival +# ============================================================ + +import os +import gi +import Functions as fn +from queue import Queue +from ui.MessageDialog import MessageDialog + +from gi.repository import Gtk, Gdk, GdkPixbuf, Pango, GLib + +gi.require_version("Gtk", "3.0") +base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) + + +class PackagesImportDialog(Gtk.Dialog): + """create a gui""" + + def __init__(self, package_file, packages_list, logfile): + Gtk.Dialog.__init__(self) + + # Create a queue for storing package import messages from pacman + self.pkg_import_queue = Queue() + + # Create a queue for storing package install errors + self.pkg_err_queue = Queue() + + # Create a queue for storing package install status + self.pkg_status_queue = Queue() + + self.package_file = package_file + self.packages_list = packages_list + self.logfile = logfile + + self.stop_thread = False + + self.set_resizable(True) + self.set_border_width(10) + self.set_size_request(800, 700) + self.set_modal(True) + + headerbar = Gtk.HeaderBar() + headerbar.set_title("Import packages") + headerbar.set_show_close_button(True) + + self.set_titlebar(headerbar) + + self.set_icon_from_file(os.path.join(base_dir, "images/sofirem.png")) + + hbox_title = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + lbl_packages_title = Gtk.Label(xalign=0) + lbl_packages_title.set_name("title") + lbl_packages_title.set_text("Packages") + + hbox_title.pack_start(lbl_packages_title, False, False, 0) + + hbox_title_install = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + label_install_title = Gtk.Label(xalign=0) + label_install_title.set_markup(" Install Packages") + + hbox_title_install.pack_start(label_install_title, False, False, 0) + + hbox_sep = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + hsep = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL) + hbox_sep.pack_start(hsep, True, True, 0) + + frame_install = Gtk.Frame(label="") + frame_install_label = frame_install.get_label_widget() + frame_install_label.set_markup("Install Packages") + + hbox_install = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + label_install_desc = Gtk.Label(xalign=0, yalign=0) + label_install_desc.set_markup( + f"" + f" WARNING: Proceed with caution this will install packages onto your system!\n" + f" Packages from the AUR are not supported \n" + f" This also performs a full system upgrade\n\n" + f" - A list of packages are sourced from {self.package_file}\n" + f" - To ignore a package, add a # in front of the package name\n" + f" - Log file: {self.logfile}\n" + f" - A reboot is recommended when core Linux packages are installed\n" + ) + + self.scrolled_window = Gtk.ScrolledWindow() + + self.textview = Gtk.TextView() + self.textview.set_name("textview_log") + self.textview.set_property("editable", False) + self.textview.set_property("monospace", True) + self.textview.set_border_width(10) + self.textview.set_vexpand(True) + self.textview.set_hexpand(True) + + msg_buffer = self.textview.get_buffer() + msg_buffer.insert( + msg_buffer.get_end_iter(), + "\n Click Yes to confirm install of the following packages:\n\n", + ) + + lbl_title_message = Gtk.Label(xalign=0, yalign=0) + lbl_title_message.set_markup( + "There are %s packages to install, proceed ?" + % len(self.packages_list) + ) + lbl_padding1 = Gtk.Label(xalign=0, yalign=0) + lbl_padding1.set_text("") + + lbl_padding2 = Gtk.Label(xalign=0, yalign=0) + lbl_padding2.set_text("") + + self.infobar = Gtk.InfoBar() + + content = self.infobar.get_content_area() + content.add(lbl_title_message) + + self.infobar.set_revealed(True) + + for package in sorted(self.packages_list): + msg_buffer.insert(msg_buffer.get_end_iter(), " - %s\n" % package) + + # move focus away from the textview, to hide the cursor at load + headerbar.set_property("can-focus", True) + Gtk.Window.grab_focus(headerbar) + + self.scrolled_window.add(self.textview) + + self.button_yes = self.add_button("Yes", Gtk.ResponseType.OK) + self.button_yes.set_size_request(100, 30) + btn_yes_context = self.button_yes.get_style_context() + btn_yes_context.add_class("destructive-action") + + self.button_no = self.add_button("Close", Gtk.ResponseType.CANCEL) + self.button_no.set_size_request(100, 30) + + self.connect("response", self.on_response) + + vbox_log_dir = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10) + + btn_open_log_dir = Gtk.Button(label="Open log directory") + btn_open_log_dir.connect("clicked", self.on_open_log_dir_clicked) + btn_open_log_dir.set_size_request(100, 30) + + vbox_log_dir.pack_start(btn_open_log_dir, False, False, 0) + + grid_message = Gtk.Grid() + + grid_message.attach(label_install_desc, 0, 0, 1, 1) + grid_message.attach(self.infobar, 0, 1, 1, 1) + grid_message.attach(lbl_padding1, 0, 2, 1, 1) + + grid_message.attach(self.scrolled_window, 0, 3, 1, 1) + grid_message.attach(lbl_padding2, 0, 4, 1, 1) + grid_message.attach(vbox_log_dir, 0, 5, 1, 1) + + self.vbox.add(grid_message) + + def on_open_log_dir_clicked(self, widget): + fn.open_log_dir() + + def display_progress(self): + self.textview.destroy() + self.infobar.destroy() + self.button_yes.destroy() + + self.label_package_status = Gtk.Label(xalign=0, yalign=0) + self.label_package_count = Gtk.Label(xalign=0, yalign=0) + + label_warning_close = Gtk.Label(xalign=0, yalign=0) + label_warning_close.set_markup( + "Do not close this window during package installation" + ) + + self.textview = Gtk.TextView() + self.textview.set_name("textview_log") + self.textview.set_property("editable", False) + self.textview.set_property("monospace", True) + self.textview.set_border_width(10) + self.textview.set_vexpand(True) + self.textview.set_hexpand(True) + + self.scrolled_window.add(self.textview) + + self.msg_buffer = self.textview.get_buffer() + + self.vbox.add(label_warning_close) + self.vbox.add(self.label_package_status) + self.vbox.add(self.label_package_count) + + fn.Thread( + target=fn.monitor_package_import, + args=(self,), + daemon=True, + ).start() + + self.show_all() + + fn.logger.info("Installing packages") + event = "%s [INFO]: Installing packages\n" % fn.datetime.now().strftime( + "%Y-%m-%d-%H-%M-%S" + ) + + fn.logger.info("Log file = %s" % self.logfile) + + self.pkg_import_queue.put(event) + + # debug install, overrride packages_list + # self.packages_list = ["cheese", "firefox", "sofirem-dev-git", "sofirem-git"] + + # starts 2 threads one to install the packages, and another to check install status + + fn.Thread( + target=fn.import_packages, + args=(self,), + daemon=True, + ).start() + + fn.Thread(target=fn.log_package_status, args=(self,), daemon=True).start() + + def on_response(self, dialog, response): + if response in (Gtk.ResponseType.OK, Gtk.ResponseType.YES): + self.stop_thread = False + self.display_progress() + + else: + self.stop_thread = True + dialog.hide() + dialog.destroy() diff --git a/usr/share/sofirem/ui/PacmanLogWindow.py b/usr/share/sofirem/ui/PacmanLogWindow.py new file mode 100644 index 0000000..0097bd9 --- /dev/null +++ b/usr/share/sofirem/ui/PacmanLogWindow.py @@ -0,0 +1,71 @@ +# This class is used to create a window to monitor the pacman log file inside /var/log/pacman.log + +import os +import gi +import Functions as fn +from gi.repository import Gtk, Gdk, GdkPixbuf, Pango, GLib + +gi.require_version("Gtk", "3.0") + +base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +# base_dir = os.path.dirname(os.path.realpath(__file__)) + + +class PacmanLogWindow(Gtk.Window): + def __init__(self, textview_pacmanlog, btn_pacmanlog): + Gtk.Window.__init__(self) + + self.start_logtimer = True + self.textview_pacmanlog = textview_pacmanlog + self.btn_pacmanlog = btn_pacmanlog + headerbar = Gtk.HeaderBar() + + headerbar.set_show_close_button(True) + + self.set_titlebar(headerbar) + + self.set_title("Sofirem - Pacman log file viewer") + self.set_default_size(800, 600) + self.set_resizable(True) + self.set_border_width(10) + self.set_position(Gtk.WindowPosition.CENTER_ON_PARENT) + self.set_icon_from_file(os.path.join(base_dir, "images/sofirem.png")) + self.connect("delete-event", self.on_close) + + btn_pacmanlog_ok = Gtk.Button(label="OK") + btn_pacmanlog_ok.connect("clicked", self.on_response, "response") + btn_pacmanlog_ok.set_size_request(100, 30) + btn_pacmanlog_ok.set_halign(Gtk.Align.END) + + pacmanlog_scrolledwindow = Gtk.ScrolledWindow() + pacmanlog_scrolledwindow.set_size_request(750, 500) + pacmanlog_scrolledwindow.add(self.textview_pacmanlog) + + lbl_padding1 = Gtk.Label(xalign=0, yalign=0) + lbl_padding1.set_text("") + + vbox_pacmanlog = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + + vbox_pacmanlog.pack_start(pacmanlog_scrolledwindow, True, True, 0) + vbox_pacmanlog.pack_start(lbl_padding1, False, False, 0) + vbox_pacmanlog.pack_start(btn_pacmanlog_ok, False, False, 0) + + self.add(vbox_pacmanlog) + + def on_close(self, widget, data): + fn.logger.debug("Closing pacman log monitoring window") + self.start_logtimer = False + self.btn_pacmanlog.set_sensitive(True) + + self.hide() + self.destroy() + + def on_response(self, widget, response): + # stop updating the textview + fn.logger.debug("Closing pacman log monitoring dialog") + self.start_logtimer = False + self.btn_pacmanlog.set_sensitive(True) + + # self.remove(self) + self.hide() + self.destroy() diff --git a/usr/share/sofirem/ui/ProgressBarWindow.py b/usr/share/sofirem/ui/ProgressBarWindow.py new file mode 100644 index 0000000..95ccc24 --- /dev/null +++ b/usr/share/sofirem/ui/ProgressBarWindow.py @@ -0,0 +1,87 @@ +from gi.repository import Gtk, GLib +import gi + + +# Since a system can have multiple versions +# of GTK + installed, we want to make +# sure that we are importing GTK + 3. +gi.require_version("Gtk", "3.0") + + +class ProgressBarWindow(Gtk.Window): + new_value = 0.0 + + def __init__(self): + Gtk.Window.__init__(self, title="Progress Bar") + self.set_border_width(10) + + vbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) + self.add(vbox) + + # Create a ProgressBar + self.progressbar = Gtk.ProgressBar() + vbox.pack_start(self.progressbar, True, True, 0) + + # Create CheckButton with labels "Show text", + # "Activity mode", "Right to Left" respectively + # button = Gtk.CheckButton(label="Show text") + # button.connect("toggled", self.on_show_text_toggled) + # vbox.pack_start(button, True, True, 0) + + # button = Gtk.CheckButton(label="Activity mode") + # button.connect("toggled", self.on_activity_mode_toggled) + # vbox.pack_start(button, True, True, 0) + + # button = Gtk.CheckButton(label="Right to Left") + # button.connect("toggled", self.on_right_to_left_toggled) + # vbox.pack_start(button, True, True, 0) + + # self.timeout_id = GLib.timeout_add(5000, self.on_timeout, None) + self.activity_mode = False + + def set_text(self, text): + self.progressbar.set_text(text) + self.progressbar.set_show_text(True) + + def reset_timer(self): + new_value = 0.0 + self.progressbar.set_fraction(new_value) + + def on_activity_mode_toggled(self, button): + self.activity_mode = button.get_active() + if self.activity_mode: + self.progressbar.pulse() + else: + self.progressbar.set_fraction(0.0) + + def on_right_to_left_toggled(self, button): + value = button.get_active() + self.progressbar.set_inverted(value) + + def update(self, fraction): + new_value = self.progressbar.get_fraction() + fraction + self.progressbar.set_fraction(new_value) + if new_value >= 1.0: + return False + return True + + def get_complete(self): + if self.progressbar.get_fraction() >= 1.0: + return True + return False + + def on_timeout(self, user_data=0.01): + """ + Update value on the progress bar + """ + if self.activity_mode: + self.progressbar.pulse() + else: + new_value = self.progressbar.get_fraction() + user_data + + if new_value > 1: + new_value = 0.0 + return False + + self.progressbar.set_fraction(new_value) + return True diff --git a/usr/share/sofirem/ui/ProgressDialog.py b/usr/share/sofirem/ui/ProgressDialog.py new file mode 100644 index 0000000..138c93f --- /dev/null +++ b/usr/share/sofirem/ui/ProgressDialog.py @@ -0,0 +1,400 @@ +# This class is used to create a modal dialog window showing progress of a package install/uninstall and general package information + +import os +import gi +import Functions as fn +from ui.MessageDialog import MessageDialog +from gi.repository import Gtk, Gdk, GdkPixbuf, Pango, GLib + +gi.require_version("Gtk", "3.0") + +base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +# base_dir = os.path.dirname(os.path.realpath(__file__)) + + +class ProgressDialog(Gtk.Dialog): + def __init__(self, action, package, command, package_metadata): + Gtk.Dialog.__init__(self) + + self.package_found = True + # this gets package information using pacman -Si or pacman -Qi whichever returns output + # package_metadata = fn.get_package_information(pkg.name) + + # if a mirrorlist isn't configured properly, pacman will not be able to query its repository + # so the following is a condition to make sure the data returned isn't an error + + if type(package_metadata) is dict: + package_progress_dialog_headerbar = Gtk.HeaderBar() + package_progress_dialog_headerbar.set_show_close_button(True) + self.set_titlebar(package_progress_dialog_headerbar) + + self.connect("delete-event", package_progress_dialog_on_close, self, action) + + if action == "install": + self.set_title("Sofirem - installing package %s" % package.name) + + elif action == "uninstall": + self.set_title("Sofirem - removing package %s" % package.name) + + self.btn_package_progress_close = Gtk.Button(label="OK") + self.btn_package_progress_close.connect( + "clicked", + on_package_progress_close_response, + self, + ) + self.btn_package_progress_close.set_sensitive(False) + self.btn_package_progress_close.set_size_request(100, 30) + self.btn_package_progress_close.set_halign(Gtk.Align.END) + + self.set_resizable(True) + self.set_size_request(850, 700) + self.set_modal(True) + self.set_border_width(10) + self.set_position(Gtk.WindowPosition.CENTER_ON_PARENT) + self.set_icon_from_file(os.path.join(base_dir, "images/sofirem.png")) + + lbl_pacman_action_title = Gtk.Label(xalign=0, yalign=0) + lbl_pacman_action_title.set_text("Running command:") + + lbl_pacman_action_value = Gtk.Label(xalign=0, yalign=0) + lbl_pacman_action_value.set_markup("%s" % command) + + stack = Gtk.Stack() + stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) + stack.set_transition_duration(350) + stack.set_hhomogeneous(False) + stack.set_vhomogeneous(False) + + stack_switcher = Gtk.StackSwitcher() + stack_switcher.set_orientation(Gtk.Orientation.HORIZONTAL) + stack_switcher.set_stack(stack) + stack_switcher.set_homogeneous(True) + + package_progress_grid = Gtk.Grid() + + self.infobar = Gtk.InfoBar() + self.infobar.set_name("infobar_info") + + content = self.infobar.get_content_area() + content.add(lbl_pacman_action_title) + content.add(lbl_pacman_action_value) + + self.infobar.set_revealed(True) + + lbl_padding_header1 = Gtk.Label(xalign=0, yalign=0) + lbl_padding_header1.set_text("") + + package_progress_grid.attach(lbl_padding_header1, 0, 1, 1, 1) + package_progress_grid.attach(self.infobar, 0, 2, 1, 1) + + package_progress_grid.set_property("can-focus", True) + Gtk.Window.grab_focus(package_progress_grid) + + lbl_padding1 = Gtk.Label(xalign=0, yalign=0) + lbl_padding1.set_text("") + + lbl_padding2 = Gtk.Label(xalign=0, yalign=0) + lbl_padding2.set_text("") + lbl_padding2.set_halign(Gtk.Align.END) + + package_progress_grid.attach(lbl_padding1, 0, 3, 1, 1) + + package_progress_scrolled_window = Gtk.ScrolledWindow() + self.package_progress_textview = Gtk.TextView() + self.package_progress_textview.set_property("editable", False) + self.package_progress_textview.set_property("monospace", True) + self.package_progress_textview.set_border_width(10) + self.package_progress_textview.set_vexpand(True) + self.package_progress_textview.set_hexpand(True) + buffer = self.package_progress_textview.get_buffer() + self.package_progress_textview.set_buffer(buffer) + + package_progress_scrolled_window.set_size_request(700, 430) + + package_progress_scrolled_window.add(self.package_progress_textview) + package_progress_grid.attach(package_progress_scrolled_window, 0, 4, 1, 1) + + vbox_close = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + + vbox_close.pack_start(lbl_padding2, True, True, 0) + vbox_close.pack_start(self.btn_package_progress_close, True, True, 0) + + stack.add_titled(package_progress_grid, "Progress", "Package Progress") + + # package information + box_outer = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5) + + listbox = Gtk.ListBox() + listbox.set_selection_mode(Gtk.SelectionMode.NONE) + box_outer.pack_start(listbox, True, True, 0) + + # package name + row_package_title = Gtk.ListBoxRow() + vbox_package_title = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_title.add(vbox_package_title) + lbl_package_name_title = Gtk.Label(xalign=0) + lbl_package_name_title.set_markup("Package Name") + + lbl_package_name_value = Gtk.Label(xalign=0) + lbl_package_name_value.set_text(package_metadata["name"]) + vbox_package_title.pack_start(lbl_package_name_title, True, True, 0) + vbox_package_title.pack_start(lbl_package_name_value, True, True, 0) + + listbox.add(row_package_title) + + # repository + + row_package_repo = Gtk.ListBoxRow() + vbox_package_repo = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + row_package_repo.add(vbox_package_repo) + lbl_package_repo_title = Gtk.Label(xalign=0) + lbl_package_repo_title.set_markup("Repository") + + lbl_package_repo_value = Gtk.Label(xalign=0) + lbl_package_repo_value.set_text(package_metadata["repository"]) + vbox_package_repo.pack_start(lbl_package_repo_title, True, True, 0) + vbox_package_repo.pack_start(lbl_package_repo_value, True, True, 0) + + listbox.add(row_package_repo) + + # description + + row_package_description = Gtk.ListBoxRow() + vbox_package_description = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_description.add(vbox_package_description) + lbl_package_description_title = Gtk.Label(xalign=0) + lbl_package_description_title.set_markup("Description") + + lbl_package_description_value = Gtk.Label(xalign=0) + lbl_package_description_value.set_text(package_metadata["description"]) + vbox_package_description.pack_start( + lbl_package_description_title, True, True, 0 + ) + vbox_package_description.pack_start( + lbl_package_description_value, True, True, 0 + ) + + listbox.add(row_package_description) + + # arch + + row_package_arch = Gtk.ListBoxRow() + vbox_package_arch = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + row_package_arch.add(vbox_package_arch) + lbl_package_arch_title = Gtk.Label(xalign=0) + lbl_package_arch_title.set_markup("Architecture") + + lbl_package_arch_value = Gtk.Label(xalign=0) + lbl_package_arch_value.set_text(package_metadata["arch"]) + vbox_package_arch.pack_start(lbl_package_arch_title, True, True, 0) + vbox_package_arch.pack_start(lbl_package_arch_value, True, True, 0) + + listbox.add(row_package_arch) + + # url + + row_package_url = Gtk.ListBoxRow() + vbox_package_url = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + row_package_url.add(vbox_package_url) + lbl_package_url_title = Gtk.Label(xalign=0) + lbl_package_url_title.set_markup("URL") + + lbl_package_url_value = Gtk.Label(xalign=0) + lbl_package_url_value.set_markup( + "%s" + % (package_metadata["url"], package_metadata["url"]) + ) + vbox_package_url.pack_start(lbl_package_url_title, True, True, 0) + vbox_package_url.pack_start(lbl_package_url_value, True, True, 0) + + listbox.add(row_package_url) + + # download size + + row_package_size = Gtk.ListBoxRow() + vbox_package_size = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) + row_package_size.add(vbox_package_size) + lbl_package_size_title = Gtk.Label(xalign=0) + lbl_package_size_title.set_markup("Download size") + + lbl_package_size_value = Gtk.Label(xalign=0) + lbl_package_size_value.set_text(package_metadata["download_size"]) + vbox_package_size.pack_start(lbl_package_size_title, True, True, 0) + vbox_package_size.pack_start(lbl_package_size_value, True, True, 0) + + listbox.add(row_package_size) + + # installed size + + row_package_installed_size = Gtk.ListBoxRow() + vbox_package_installed_size = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_installed_size.add(vbox_package_installed_size) + lbl_package_installed_size_title = Gtk.Label(xalign=0) + lbl_package_installed_size_title.set_markup("Installed size") + + lbl_package_installed_size_value = Gtk.Label(xalign=0) + lbl_package_installed_size_value.set_text( + package_metadata["installed_size"] + ) + vbox_package_installed_size.pack_start( + lbl_package_installed_size_title, True, True, 0 + ) + vbox_package_installed_size.pack_start( + lbl_package_installed_size_value, True, True, 0 + ) + + listbox.add(row_package_installed_size) + + # build date + + row_package_build_date = Gtk.ListBoxRow() + vbox_package_build_date = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_build_date.add(vbox_package_build_date) + lbl_package_build_date_title = Gtk.Label(xalign=0) + lbl_package_build_date_title.set_markup("Build date") + + lbl_package_build_date_value = Gtk.Label(xalign=0) + lbl_package_build_date_value.set_text(package_metadata["build_date"]) + vbox_package_build_date.pack_start( + lbl_package_build_date_title, True, True, 0 + ) + vbox_package_build_date.pack_start( + lbl_package_build_date_value, True, True, 0 + ) + + listbox.add(row_package_build_date) + + # packager + + row_package_maintainer = Gtk.ListBoxRow() + vbox_package_maintainer = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_maintainer.add(vbox_package_maintainer) + lbl_package_maintainer_title = Gtk.Label(xalign=0) + lbl_package_maintainer_title.set_markup("Packager") + + lbl_package_maintainer_value = Gtk.Label(xalign=0) + lbl_package_maintainer_value.set_text(package_metadata["packager"]) + vbox_package_maintainer.pack_start( + lbl_package_maintainer_title, True, True, 0 + ) + vbox_package_maintainer.pack_start( + lbl_package_maintainer_value, True, True, 0 + ) + + listbox.add(row_package_maintainer) + + # depends on + + expander_depends_on = Gtk.Expander() + expander_depends_on.set_use_markup(True) + expander_depends_on.set_resize_toplevel(True) + expander_depends_on.set_label("Depends on") + + row_package_depends_on = Gtk.ListBoxRow() + expander_depends_on.add(row_package_depends_on) + vbox_package_depends_on = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_depends_on.add(vbox_package_depends_on) + + if len(package_metadata["depends_on"]) > 0: + treestore_depends = Gtk.TreeStore(str, str) + + for item in package_metadata["depends_on"]: + treestore_depends.append(None, list(item)) + + treeview_depends = Gtk.TreeView(model=treestore_depends) + + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn("Package", renderer, text=0) + + treeview_depends.append_column(column) + + vbox_package_depends_on.pack_start(treeview_depends, True, True, 0) + + else: + lbl_package_depends_value = Gtk.Label(xalign=0, yalign=0) + lbl_package_depends_value.set_text("None") + + vbox_package_depends_on.pack_start( + lbl_package_depends_value, True, True, 0 + ) + + listbox.add(expander_depends_on) + + # conflicts with + + expander_conflicts_with = Gtk.Expander() + expander_conflicts_with.set_use_markup(True) + expander_conflicts_with.set_resize_toplevel(True) + expander_conflicts_with.set_label("Conflicts with") + + row_package_conflicts_with = Gtk.ListBoxRow() + expander_conflicts_with.add(row_package_conflicts_with) + vbox_package_conflicts_with = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, spacing=0 + ) + row_package_conflicts_with.add(vbox_package_conflicts_with) + + if len(package_metadata["conflicts_with"]) > 0: + treestore_conflicts = Gtk.TreeStore(str, str) + + for item in package_metadata["conflicts_with"]: + treestore_conflicts.append(None, list(item)) + + treeview_conflicts = Gtk.TreeView(model=treestore_conflicts) + + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn("Package", renderer, text=0) + + treeview_conflicts.append_column(column) + + vbox_package_conflicts_with.pack_start( + treeview_conflicts, True, True, 0 + ) + + else: + lbl_package_conflicts_with_value = Gtk.Label(xalign=0, yalign=0) + lbl_package_conflicts_with_value.set_text("None") + + vbox_package_conflicts_with.pack_start( + lbl_package_conflicts_with_value, True, True, 0 + ) + + listbox.add(expander_conflicts_with) + + package_metadata_scrolled_window = Gtk.ScrolledWindow() + + package_metadata_scrolled_window.add(box_outer) + + stack.add_titled( + package_metadata_scrolled_window, "Package Information", "Information" + ) + + self.vbox.add(stack_switcher) + self.vbox.add(stack) + self.vbox.add(vbox_close) + + +def on_package_progress_close_response(self, widget): + self.pkg_dialog_closed = True + fn.logger.debug("Closing package progress dialog") + widget.hide() + widget.destroy() + + +def package_progress_dialog_on_close(widget, data, self, action): + self.pkg_dialog_closed = True + fn.logger.debug("Closing package progress dialog") + widget.hide() + widget.destroy() diff --git a/usr/share/sofirem/ui/SplashScreen.py b/usr/share/sofirem/ui/SplashScreen.py new file mode 100644 index 0000000..f2ad00d --- /dev/null +++ b/usr/share/sofirem/ui/SplashScreen.py @@ -0,0 +1,30 @@ +import gi +from Functions import os + +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, GdkPixbuf, Gdk # noqa + +base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +# base_dir = os.path.dirname(os.path.realpath(__file__)) + + +class SplashScreen(Gtk.Window): + def __init__(self): + Gtk.Window.__init__(self, Gtk.WindowType.POPUP, title="") + self.set_decorated(False) + self.set_resizable(False) + self.set_size_request(600, 400) + self.set_position(Gtk.WindowPosition.CENTER) + + main_vbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=1) + self.add(main_vbox) + + self.image = Gtk.Image() + pimage = GdkPixbuf.Pixbuf().new_from_file_at_size( + base_dir + "/images/splash.png", 600, 400 + ) + self.image.set_from_pixbuf(pimage) + + main_vbox.pack_start(self.image, True, True, 0) + + self.show_all() diff --git a/usr/share/sofirem/yaml-awesome/netinstall-applications.yaml b/usr/share/sofirem/yaml-awesome/netinstall-applications.yaml new file mode 100644 index 0000000..69cc4b7 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-applications.yaml @@ -0,0 +1,111 @@ +- name: "Accessories" + description: "Accessories" + critical: false + hidden: false + selected: false + expanded: true + packages: + - cheese + - font-manager-git + - galculator + - gpick + - flameshot-git + - liferea + - mediainfo-gui + - mcomix + - nitrogen + - nomacs + - nomacs-git + - nomacs-qt6-git + - pdfarranger + - plank + - arcolinux-plank-themes-git + - screenkey-git + - variety +- name: "Conky" + description: "Conky and conky collection" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-conky-collection-git + - arcolinux-pipemenus-git + - conky-lua-archers + - yad +- name: "Git" + description: "Git applications" + critical: false + hidden: false + selected: false + expanded: true + packages: + - gitahead + - gitg + - gitfiend + - github-desktop-bin + - gitkraken +- name: "Password Manager" + description: "Password managers" + critical: false + hidden: false + selected: false + expanded: true + packages: + - bitwarden + - enpass-bin + - keepassxc + - lastpass +- name: "Privacy" + description: "Applications that ensure your privacy" + critical: false + hidden: false + selected: false + expanded: true + packages: + - torbrowser-launcher + - privoxy +- name: "Virtualbox for Linux kernel" + description: "Installs virtualbox for linux kernel" + critical: false + hidden: false + selected: false + expanded: false + packages: + - virtualbox + - virtualbox-host-dkms + - linux + - linux-headers +- name: "Virtualbox for Linux-lts kernel" + description: "Installs virtualbox for linux-lts kernel" + critical: false + hidden: false + selected: false + expanded: false + packages: + - virtualbox + - virtualbox-host-dkms + - linux-lts + - linux-lts-headers +- name: "Vmware" + description: "Installs vmware software" + critical: false + hidden: false + selected: false + expanded: false + packages: + - open-vm-tools + - vmware-workstation + - vmware-keymaps +- name: "Qemu software" + description: "Installs qemu software" + critical: false + hidden: false + selected: false + expanded: false + packages: + - qemu-base + - qemu-full + - quickemu + - quickemu-git + - quickgui-bin \ No newline at end of file diff --git a/usr/share/sofirem/yaml-awesome/netinstall-arcolinux.yaml b/usr/share/sofirem/yaml-awesome/netinstall-arcolinux.yaml new file mode 100644 index 0000000..a3c18ac --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-arcolinux.yaml @@ -0,0 +1,154 @@ +- name: "ArcoLinux Plasma Packages" + description: "ArcoLinux plasma packages" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-plasma-keybindings-git + - arcolinux-plasma-servicemenus-git + - arcolinux-plasma-theme-candy-beauty-arc-dark-git + - arcolinux-plasma-theme-candy-beauty-nordic-git + - arcolinux-plasma-theme-surfn-arc-dark-git + - arcolinux-plasma-theme-surfn-nordic-git +- name: "ArcoLinux Meta Packages" + description: "ArcoLinux meta packages" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-meta-arc-theme + - arcolinux-meta-asian-fonts + - arcolinux-meta-fun + - arcolinux-meta-log + - arcolinux-meta-samba + - arcolinux-meta-sddm-themes + - arcolinux-meta-steam-amd + - arcolinux-meta-steam-intel + - arcolinux-meta-steam-nvidia + - arcolinux-meta-utilities + - arcolinux-meta-wine +- name: "ArcoLinux Applications" + description: "ArcoLinux applications" + critical: false + hidden: false + selected: false + expanded: true + packages: + - archlinux-logout-git + - archlinux-tweak-tool-git + - arcolinux-desktop-trasher-git + - arcolinux-powermenu-git + - arcolinux-reflector-simple-git + - arcolinux-teamviewer + - arcolinux-tellme-git + - arcolinux-xlunch-git +- name: "ArcoLinux Arc Theming" + description: "ArcoLinux arc theming packages" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-arc-aqua-git + - arcolinux-arc-archlinux-blue-git + - arcolinux-arc-arcolinux-blue-git + - arcolinux-arc-azul-git + - arcolinux-arc-azure-git + - arcolinux-arc-azure-dodger-blue-git + - arcolinux-arc-blood-git + - arcolinux-arc-blue-sky-git + - arcolinux-arc-blueberry-git + - arcolinux-arc-botticelli-git + - arcolinux-arc-bright-lilac-git + - arcolinux-arc-carnation-git + - arcolinux-arc-carolina-blue-git + - arcolinux-arc-casablanca-git + - arcolinux-arc-cornflower-blue-git + - arcolinux-arc-crimson-git + - arcolinux-arc-darkish-git + - arcolinux-arc-dawn-git + - arcolinux-arc-dodger-blue-git + - arcolinux-arc-emerald-git + - arcolinux-arc-evopop-git + - arcolinux-arc-fern-git + - arcolinux-arc-fire-git + - arcolinux-arc-froly-git + - arcolinux-arc-havelock-git + - arcolinux-arc-hibiscus-git + - arcolinux-arc-light-blue-grey-git + - arcolinux-arc-light-blue-surfn-git + - arcolinux-arc-light-salmon-git + - arcolinux-arc-mandy-git + - arcolinux-arc-mantis-git + - arcolinux-arc-medium-blue-git + - arcolinux-arc-niagara-git + - arcolinux-arc-nice-blue-git + - arcolinux-arc-numix-git + - arcolinux-arc-orchid-git + - arcolinux-arc-pale-grey-git + - arcolinux-arc-paper-git + - arcolinux-arc-pink-git + - arcolinux-arc-polo-git + - arcolinux-arc-punch-git + - arcolinux-arc-purpley-git + - arcolinux-arc-red-orange-git + - arcolinux-arc-red-violet-git + - arcolinux-arc-rusty-orange-git + - arcolinux-arc-sky-blue-git + - arcolinux-arc-slate-grey-git + - arcolinux-arc-smoke-git + - arcolinux-arc-soft-blue-git + - arcolinux-arc-tacao-git + - arcolinux-arc-tangerine-git + - arcolinux-arc-tory-git + - arcolinux-arc-twilight-git + - arcolinux-arc-warm-pink-git +- name: "ArcoLinux Theming" + description: "ArcoLinux theming packages" + critical: false + hidden: false + selected: false + expanded: true + packages: + - a-candy-beauty-icon-theme-git + - arcolinux-arc-kde + - arcolinux-mint-y-icons-git + - arcolinux-paleofetch-git + - arcolinux-plank-git + - arcolinux-plank-themes-git +- name: "ArcoLinux Wallpapers" + description: "ArcoLinux wallpapers" + critical: false + hidden: false + selected: false + expanded: true + packages: + - archlinux-login-backgrounds-git + - arcolinux-wallpapers-git + - arcolinux-wallpapers-candy-git + - arcolinux-wallpapers-dual-git +- name: "ArcoLinux Sddm themes" + description: "ArcoLinux Sddm themes" + critical: false + hidden: false + selected: false + expanded: true + packages: + - archlinux-login-backgrounds-git + - arcolinux-sddm-futuristic-git + - arcolinux-sddm-materia-git + - arcolinux-sddm-simplicity-git + - arcolinux-sddm-slice-git + - arcolinux-sddm-sugar-candy-git + - arcolinux-sddm-urbanlifestyle-git +- name: "Packages that will install plasma as a dependency" + description: "Plasma related" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-sddm-breeze-git + - arcolinux-sddm-breeze-minimal-git diff --git a/usr/share/sofirem/yaml-awesome/netinstall-arcolinuxdev.yaml b/usr/share/sofirem/yaml-awesome/netinstall-arcolinuxdev.yaml new file mode 100644 index 0000000..a9ae768 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-arcolinuxdev.yaml @@ -0,0 +1,23 @@ +- name: "ArcoLinux Dev" + description: "Software for ArcoLinux developers and betatesters" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-local-xfce4-git + - arcolinux-powermenu-git + - arcolinux-xfce-git + - discord + - firefox + - flameshot-git + - gitahead + - meld + - scrot + - simplescreenrecorder + - sublime-text-4 + - telegram-desktop + - the_platinum_searcher-bin + - thunar + - thunar-archive-plugin + - thunar-volman diff --git a/usr/share/sofirem/yaml-awesome/netinstall-communication.yaml b/usr/share/sofirem/yaml-awesome/netinstall-communication.yaml new file mode 100644 index 0000000..7a7d294 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-communication.yaml @@ -0,0 +1,44 @@ +- name: "Communication" + description: "Communication software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - element-desktop + - discord + - discord_arch_electron + - google-chat-linux-bin + - hexchat + - jitsi-meet-desktop-bin + - mumble + - neochat + - pidgin + - qtox + - skypeforlinux-stable-bin + - signal-desktop + - signal-desktop-beta-bin + - slack-desktop + - teams + - telegram-desktop + - telegram-desktop-bin + - tweetdeck-desktop + - viber + - whatsapp-nativefier + - wire-desktop + - zoom +- name: "Connect Remotely" + description: "Applications to connect to other systems" + critical: false + hidden: false + selected: false + expanded: true + packages: + - anydesk-bin + - arcolinux-teamviewer + - krdc + - nomachine + - realvnc-vnc-server + - realvnc-vnc-viewer + - remmina + - tigervnc diff --git a/usr/share/sofirem/yaml-awesome/netinstall-desktop-wayland.yaml b/usr/share/sofirem/yaml-awesome/netinstall-desktop-wayland.yaml new file mode 100644 index 0000000..ff483a7 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-desktop-wayland.yaml @@ -0,0 +1,85 @@ +- name: "Desktop: Hyprland - Wayland" + description: "Installs hyprland - only on real metal" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - archlinux-logout-git + - arcolinux-hyprland-git + - arcolinux-kitty-git + - hyprland-git + - kitty + - swaybg + - thunar + - ttf-jetbrains-mono-nerd + - waybar-hyprland-git + - wofi + - xfce4-terminal +- name: "Desktop: Sway - Wayland" + description: "Installs sway - only on real metal" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - archlinux-logout-git + - arcolinux-kitty-git + - arcolinux-nwg-drawer-git + - arcolinux-sway-git + - kitty + - nwg-drawer-bin + - rofi-lbonn-wayland-only-git + - thunar + - sway-dev + - swaybg + - swayidle + - swaylock + - ttf-iosevka-nerd + - waybar +- name: "Desktop: Wayfire - Wayland" + description: "Installs wayfire - only on real metal" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - a-candy-beauty-icon-theme-git + - archlinux-logout-git + - arcolinux-foot-git + - arcolinux-kitty-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-wallpapers-wayfire-git + - arcolinux-wayfire-dconf-git + - arcolinux-wayfire-nemesis-git + - arcolinux-xfce-git + - feh + - foot + - grim + - kitty + - libdisplay-info + - mako + - polkit-gnome + - rofi-lbonn-wayland + - slurp + - swaybg + - swayidle + - swaylock + - swww + - thunar + - ttf-font-awesome + - ttf-jetbrains-mono-nerd + - waybar + - wayfire-git + - wayfire-plugins-extra-git + - wcm-git + - wf-kill-git + - wf-shell-git + - wl-clipboard + - wofi + - xdg-desktop-portal-wlr + - xfce4-terminal diff --git a/usr/share/sofirem/yaml-awesome/netinstall-desktop.yaml b/usr/share/sofirem/yaml-awesome/netinstall-desktop.yaml new file mode 100644 index 0000000..82a4f1a --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-desktop.yaml @@ -0,0 +1,1175 @@ +- name: "Desktop: Awesome" + description: "Installs awesome desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-awesome-git + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - autorandr + - awesome + - dmenu + - feh + - lxappearance + - picom + - polkit-gnome + - rofi + - thunar + - thunar-archive-plugin + - thunar-volman + - vicious + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Berry" + description: "Installs berry desktop" + critical: false + hidden: false + selected: false + packages: + - alacritty + - arcolinux-berry-git + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - berry-dev-git + - dmenu + - feh + - lxappearance + - picom + - polybar + - polkit-gnome + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - ttf-hack + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Bspwm" + description: "Installs bspwm desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-bspwm-git + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - awesome-terminal-fonts + - bspwm + - dmenu + - feh + - lxappearance + - picom + - polybar + - polkit-gnome + - rofi + - sutils-git + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal + - xtitle-git +- name: "Desktop: Budgie" + description: "Installs budgie desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-budgie-dconf-git + - arcolinux-budgie-git + - arcolinux-config-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-guake-autostart-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-wallpapers-git + - budgie-desktop + - budgie-extras + - gnome + - guake + - ttf-hack +- name: "Desktop: Cinnamon" + description: "Installs cinnamon desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-cinnamon-dconf-git + - arcolinux-cinnamon-git + - arcolinux-config-all-desktops-git + - arcolinux-gtk3-surfn-arc-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - cinnamon + - cinnamon-translations + - gnome-screenshot + - gnome-system-monitor + - gnome-terminal + - iso-flag-png + - mintlocale + - nemo-fileroller + - xfce4-terminal +- name: "Desktop: Chadwm" + description: "Installs chadwm desktop" + critical: false + hidden: false + selected: false + packages: + - alacritty + - arcolinux-chadwm-git + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dmenu + - feh + - lxappearance + - picom + - polkit-gnome + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - ttf-hack + - ttf-jetbrains-mono-nerd + - ttf-meslo-nerd-font-powerlevel10k + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Cutefish" + description: "Installs cutefish desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-cutefish-dconf-git + - arcolinux-cutefish-git + - arcolinux-config-all-desktops-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-wallpapers-git + - cutefish +- name: "Desktop: Cwm" + description: "Installs cwm desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-cwm-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - autorandr + - cwm + - dmenu + - feh + - lxappearance + - picom + - polybar + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Deepin" + description: "Installs deepin desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-deepin-dconf-git + - arcolinux-deepin-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-wallpapers-git + - deepin + - deepin-extra +- name: "Desktop: Dk" + description: "Installs dk desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-dk-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dk + - dmenu + - feh + - lxappearance + - nerd-fonts-source-code-pro + - picom + - polkit-gnome + - polybar + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Dusk" + description: "Installs dusk desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-dusk-git + - arcolinux-dwm-st-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dmenu + - feh + - lxappearance + - picom + - polkit-gnome + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Dwm" + description: "Installs dwm desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-dwm-git + - arcolinux-dwm-slstatus-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dmenu + - feh + - gsimplecal + - lxappearance + - picom + - polkit-gnome + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Enlightenment" + description: "Installs enlightenment desktop" + critical: false + hidden: false + selected: false + packages: + - enlightenment +- name: "Desktop: Fvwm3" + description: "Installs fvwm3 desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-fvwm3-git + - arcolinux-gtk3-surfn-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dmenu + - feh + - fvwm3-git + - gsimplecal + - picom + - polkit-gnome + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Gnome" + description: "Installs gnome desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-gnome-dconf-git + - arcolinux-gnome-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-guake-autostart-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-wallpapers-git + - gnome + - gnome-extra + - gnome-shell-extension-appindicator-git + - gnome-shell-extension-dash-to-dock + - gnome-shell-extension-pop-shell-git + - gnome-system-tools + - guake + - ttf-hack +- name: "Desktop: Herbstluftwm" + description: "Installs herbstluftwm desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-herbstluftwm-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - awesome-terminal-fonts + - dmenu + - feh + - herbstluftwm + - lxappearance + - picom + - polkit-gnome + - polybar + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal + - xtitle-git +- name: "Desktop: Hypr" + description: "Installs hypr desktop" + critical: false + hidden: false + selected: false + packages: + - alacritty + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-hypr-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dmenu + - feh + - hypr-dev-git + - lxappearance + - picom + - polkit-gnome + - polybar + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - ttf-hack + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: i3" + description: "Installs i3 desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-i3wm-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-nitrogen-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - autotiling + - dmenu + - feh + - i3blocks + - i3-wm + - i3status + - lxappearance + - nitrogen + - picom + - polkit-gnome + - polybar + - rofi + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Icewm" + description: "Installs icewm desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-surfn-arc-git + - arcolinux-icewm-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - autorandr + - dmenu + - feh + - icewm + - lxappearance + - picom + - polkit-gnome + - rofi + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xdgmenumaker + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Jwm" + description: "Installs jwm desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-surfn-arc-git + - arcolinux-jwm-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - autorandr + - dmenu + - feh + - jwm + - lxappearance + - picom + - polkit-gnome + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xdgmenumaker + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Leftwm" + description: "Installs leftwm desktop" + critical: false + hidden: false + selected: false + packages: + - a-candy-beauty-icon-theme-git + - arcolinux-leftwm-git + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-arcolinux-candy-beauty-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - autorandr + - dmenu + - feh + - leftwm-dev-git + - leftwm-theme-git + - lxappearance + - nerd-fonts-source-code-pro + - nitrogen + - picom + - polybar + - polkit-gnome + - rofi + - rofi-theme-fonts + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-media-tags-plugin + - thunar-volman + - ttf-fantasque-sans-mono + - ttf-iosevka-nerd + - ttf-material-design-iconic-font + - ttf-meslo-nerd-font-powerlevel10k + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Lxqt" + description: "Installs lxqt desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-lxqt-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dmenu + - lxappearance + - lxqt + - lxqt-arc-dark-theme-git + - obconf-qt + - pavucontrol-qt + - picom + - polkit-gnome + - thunar + - thunar-archive-plugin + - thunar-volman + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal + - xscreensaver +- name: "Desktop: Mate" + description: "Installs mate desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-gtk3-surfn-arc-git + - arcolinux-mate-dconf-git + - arcolinux-mate-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dmenu + - gnome-screenshot + - mate + - mate-extra + - mate-tweak + - xfce4-terminal +- name: "Desktop: Nimdow" + description: "Installs nimdow desktop" + critical: false + hidden: false + selected: false + packages: + - alacritty + - archlinux-logout-git + - arcolinux-btop-git + - arcolinux-config-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-dconf-all-desktops-git + - arcolinux-nimdow-git + - arcolinux-powermenu-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - btop + - dmenu + - feh + - lxappearance + - nim + - nimdow-bin + - nitrogen + - picom + - polkit-gnome + - rofi + - rofi-theme-fonts + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-media-tags-plugin + - thunar-volman + - ttf-jetbrains-mono-nerd + - ttf-hack + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Openbox" + description: "Installs openbox desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-common-git + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-docs-git + - arcolinux-geany-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-nitrogen-git + - arcolinux-obmenu-generator-git + - arcolinux-openbox-git + - arcolinux-openbox-themes-git + - arcolinux-pipemenus-git + - arcolinux-plank-git + - arcolinux-plank-themes-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - arcolinux-tint2-git + - arcolinux-tint2-themes-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dmenu + - feh + - geany + - gksu + - gnome-screenshot + - gsimplecal + - gtk2-perl + - lxappearance-obconf + - lxrandr + - nitrogen + - obconf + - obmenu-generator + - obmenu3 + - openbox + - openbox-arc-git + - openbox-themes-pambudi-git + - perl-linux-desktopfiles + - picom + - plank + - polkit-gnome + - rofi + - thunar + - thunar-archive-plugin + - thunar-volman + - tint2 + - volumeicon + - xcape + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal + - yad +- name: "Desktop: Pantheon" + description: "Installs pantheon desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-root-git + - archlinux-tweak-tool-git + - pantheon +- name: "Desktop: Plasma" + description: "Installs plasma desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-plasma-theme-candy-beauty-arc-dark-git + - arcolinux-plasma-theme-candy-beauty-nordic-git + - arcolinux-plasma-theme-surfn-arc-dark-git + - arcolinux-plasma-theme-surfn-nordic-git + - plasma + - kde-accessibility-meta + - kde-education-meta + - kde-games-meta + - kde-graphics-meta + - kde-multimedia-meta + - kde-network-meta + - kde-pim-meta + - kde-sdk-meta + - kde-system-meta + - kde-utilities-meta + - kdevelop-meta + - arcolinux-arc-kde + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-wallpapers-git + - ark + - breeze + - cryfs + - discover + - dolphin + - dolphin-plugins + - encfs + - ffmpegthumbs + - gocryptfs + - gwenview + - kate + - kde-gtk-config + - kdeconnect + - kdenetwork-filesharing + - ktorrent + - ocs-url + - okular + - packagekit-qt5 + - partitionmanager + - spectacle + - surfn-plasma-dark-icons-git + - surfn-plasma-light-icons-git + - yakuake +- name: "Desktop: Qtile" + description: "Installs qtile desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-qtile-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - awesome-terminal-fonts + - dmenu + - feh + - lxappearance + - picom + - polkit-gnome + - python-psutil + - python-setuptools + - qtile + - rofi + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Spectrwm" + description: "Installs spectrwm desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - arcolinux-spectrwm-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - awesome-terminal-fonts + - dmenu + - feh + - lxappearance + - picom + - polkit-gnome + - polybar + - python-psutil + - spectrwm + - sutils-git + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xdo + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal + - xtitle-git +- name: "Desktop: Ukui" + description: "Installs ukui desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - arcolinux-qt5-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-ukui-dconf-git + - arcolinux-ukui-git + - arcolinux-xfce-git + - arcolinux-wallpapers-git + - dmenu + - gnome-screenshot + - gvfs + - lxappearance + - mate-control-center + - mate-desktop + - mate-menus + - mate-system-monitor + - mate-terminal + - qt5-quickcontrols + - redshift + - thunar + - thunar-archive-plugin + - thunar-volman + - ukui + - xfce4-terminal +- name: "Desktop: Wmderland" + description: "Installs wmderland desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-wmderland-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - dmenu + - feh + - lxappearance + - picom + - polkit-gnome + - polybar + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - wmderland-git + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Worm" + description: "Installs worm desktop" + critical: false + hidden: false + selected: false + packages: + - alacritty + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-worm-git + - arcolinux-xfce-git + - dmenu + - feh + - lxappearance + - picom + - polkit-gnome + - polybar + - rofi + - sxhkd + - thunar + - thunar-archive-plugin + - thunar-volman + - ttf-hack + - volumeicon + - worm-dev-git + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal +- name: "Desktop: Xfce4" + description: "Installs xfce4 desktop" + critical: false + hidden: false + selected: false + packages: + - xfce4 + - xfce4-goodies + - dmenu + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-xfce-git +- name: "Desktop: Xmonad" + description: "Installs xmonad desktop" + critical: false + hidden: false + selected: false + packages: + - arcolinux-config-all-desktops-git + - arcolinux-dconf-all-desktops-git + - arcolinux-gtk3-sardi-arc-git + - arcolinux-local-xfce4-git + - archlinux-logout-git + - arcolinux-polybar-git + - arcolinux-rofi-git + - arcolinux-rofi-themes-git + - arcolinux-root-git + - archlinux-tweak-tool-git + - arcolinux-volumeicon-git + - arcolinux-wallpapers-git + - arcolinux-xfce-git + - arcolinux-xmonad-polybar-git + - awesome-terminal-fonts + - dmenu + - feh + - haskell-dbus + - lxappearance + - perl-checkupdates-aur + - perl-www-aur + - picom + - polybar + - rofi + - thunar + - thunar-archive-plugin + - thunar-volman + - volumeicon + - xfce4-notifyd + - xfce4-power-manager + - xfce4-screenshooter + - xfce4-settings + - xfce4-taskmanager + - xfce4-terminal + - xmonad + - xmonad-contrib + - xmonad-log + - xmonad-utils diff --git a/usr/share/sofirem/yaml-awesome/netinstall-development.yaml b/usr/share/sofirem/yaml-awesome/netinstall-development.yaml new file mode 100644 index 0000000..9a017cd --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-development.yaml @@ -0,0 +1,34 @@ +- name: "Development" + description: "Development software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arduino + - bluefish + - brackets-bin + - code + - codeblocks + - emacs + - geany + - geany-plugins + - glade + - intellij-idea-community-edition + - kdevelop + - kde-dev-utils + - leafpad + - meld + - micro + - netbeans + - notepadqq + - openscad + - pulsar-bin + - pycharm-community-edition + - qt5-tools + - qtcreator + - sublime-text-4 + - vim + - vim-runtime + - visual-studio-code-bin + - vscodium-bin diff --git a/usr/share/sofirem/yaml-awesome/netinstall-drivers.yaml b/usr/share/sofirem/yaml-awesome/netinstall-drivers.yaml new file mode 100644 index 0000000..c8f6f09 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-drivers.yaml @@ -0,0 +1,41 @@ +- name: "Xf86-video-nouveau" + description: "Installs xf86-video-nouveau" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - xf86-video-nouveau +- name: "Xf86-video-amdgpu" + description: "Installs xf86-video-amdgpu" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - xf86-video-amdgpu +- name: "Xf86-video-ati" + description: "Installs xf86-video-ati" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - xf86-video-ati +- name: "Xf86-video-vesa" + description: "Installs xf86-video-vesa" + critical: false + hidden: false + selected: false + packages: + - xf86-video-vesa +- name: "Xf86-video-openchrome" + description: "Installs xf86-video-openchrome" + critical: false + hidden: false + selected: false + packages: + - xf86-video-openchrome \ No newline at end of file diff --git a/usr/share/sofirem/yaml-awesome/netinstall-filemanagers.yaml b/usr/share/sofirem/yaml-awesome/netinstall-filemanagers.yaml new file mode 100644 index 0000000..c68b0bb --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-filemanagers.yaml @@ -0,0 +1,23 @@ +- name: "Filemanagers" + description: "Filemanagers" + critical: false + hidden: false + selected: false + expanded: true + packages: + - caja + - dolphin + - doublecmd-qt5 + - joshuto + - lf + - nnn + - mc + - nautilus + - nemo + - nemo-fileroller + - pcmanfm + - ranger + - thunar + - thunar-archive-plugin + - thunar-volman + - thunar-shares-plugin \ No newline at end of file diff --git a/usr/share/sofirem/yaml-awesome/netinstall-fonts.yaml b/usr/share/sofirem/yaml-awesome/netinstall-fonts.yaml new file mode 100644 index 0000000..d9c2234 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-fonts.yaml @@ -0,0 +1,55 @@ +- name: "Fonts" + description: "Fonts" + critical: false + hidden: false + selected: false + expanded: true + packages: + - adobe-source-code-pro-fonts + - adobe-source-sans-fonts + - adobe-source-serif-fonts + - awesome-terminal-fonts + - libertinus-font + - lohit-fonts + - nerd-fonts-source-code-pro + - noto-fonts + - noto-fonts-emoji + - ttf-anonymous-pro + - ttf-bitstream-vera + - ttf-caladea + - ttf-carlito + - ttf-cascadia-code + - ttf-cormorant + - ttf-croscore + - ttf-dejavu + - ttf-droid + - ttf-eurof + - ttf-fantasque-sans-mono + - ttf-fira-code + - ttf-fira-mono + - ttf-fira-sans + - ttf-font-awesome + - ttf-hack + - ttf-hactor + - ttf-hellvetica + - ttf-ibm-plex + - ttf-inconsolata + - ttf-iosevka-nerd + - ttf-jetbrains-mono + - ttf-jetbrains-mono-nerd + - ttf-joypixels + - ttf-lato + - ttf-liberation + - ttf-linux-libertine + - ttf-linux-libertine-g + - ttf-meslo-nerd-font-powerlevel10k + - ttf-mac-fonts + - ttf-monofur + - ttf-ms-fonts + - ttf-nerd-fonts-symbols + - ttf-nerd-fonts-symbols-mono + - ttf-opensans + - ttf-proggy-clean + - ttf-roboto + - ttf-roboto-mono + - ttf-ubuntu-font-family diff --git a/usr/share/sofirem/yaml-awesome/netinstall-gaming.yaml b/usr/share/sofirem/yaml-awesome/netinstall-gaming.yaml new file mode 100644 index 0000000..ffc978d --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-gaming.yaml @@ -0,0 +1,64 @@ +- name: "Games" + description: "Gaming software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - aisleriot + - armagetronad + - astromenace + - chromium-bsu + - extremetuxracer + - freeciv + - gnome-chess + - gnuchess + - hedgewars + - kbreakout + - knights + - mari0 + - minecraft-launcher + - multimc-git + - neverball + - sauerbraten + - sauerbraten-data + - supertux + - supertuxkart + - warsow + - wesnoth + - xonotic + - xonotic-data +- name: "Game utilities" + description: "Game utilities" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-meta-steam-amd + - arcolinux-meta-steam-intel + - arcolinux-meta-steam-nvidia + - gamehub-bin + - gamemode + - game-devices-udev + - goverlay-bin + - heroic-games-launcher-bin + - itch + - legendary + - lutris + - mangohud + - minigalaxy + - playonlinux + - proton-community-updater + - proton-ge-custom-bin + - protontricks + - protontricks-git + - protonup-qt-bin + - protonup-git + - rare + - replay-sorcery + - supergfxctl + - steam-buddy + - steam-tweaks + - steamtinkerlaunch + - vkbasalt diff --git a/usr/share/sofirem/yaml-awesome/netinstall-graphics.yaml b/usr/share/sofirem/yaml-awesome/netinstall-graphics.yaml new file mode 100644 index 0000000..332f0d9 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-graphics.yaml @@ -0,0 +1,13 @@ +- name: "Graphics" + description: "Graphics" + critical: false + hidden: false + selected: false + expanded: true + packages: + - blender + - darktable + - digikam + - gimp + - inkscape + - krita diff --git a/usr/share/sofirem/yaml-awesome/netinstall-internet.yaml b/usr/share/sofirem/yaml-awesome/netinstall-internet.yaml new file mode 100644 index 0000000..f608b02 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-internet.yaml @@ -0,0 +1,79 @@ +- name: "Browsers" + description: "Browsers" + critical: false + hidden: false + selected: false + expanded: true + packages: + - brave-bin + - chrome-gnome-shell + - chromium + - chromium-widevine + - falkon + - firefox + - firefox-adblock-plus + - firefox-ublock-origin + - google-chrome + - icecat + - librewolf-bin + - midori + - min + - netsurf + - opera + - qutebrowser + - torbrowser-launcher + - vivaldi + - vivaldi-ffmpeg-codecs + - vivaldi-widevine +- name: "Downloaders" + description: "Downloaders" + critical: false + hidden: false + selected: false + expanded: true + packages: + - aria2 + - deluge + - filezilla + - fragments + - freedownloadmanager + - gdown + - jdownloader2 + - ktorrent + - persepolis + - qbittorrent + - transmission-gtk + - xdman +- name: "Cloud Software" + description: "Cloud software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - dropbox + - insync + - megasync-bin + - nextcloud-client +- name: "Mail Clients" + description: "Mail clients" + critical: false + hidden: false + selected: false + expanded: true + packages: + - evolution + - geary + - mailspring + - thunderbird +- name: "Vpn Software" + description: "Vpn Software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - mullvad-vpn-bin + - nordtray-bin + - nordpass-bin + - nordvpn-bin diff --git a/usr/share/sofirem/yaml-awesome/netinstall-login.yaml b/usr/share/sofirem/yaml-awesome/netinstall-login.yaml new file mode 100644 index 0000000..ed12c49 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-login.yaml @@ -0,0 +1,50 @@ +- name: "Login Manager: Sddm" + description: "Installs sddm" + critical: false + hidden: false + selected: false + packages: + - sddm + - arcolinux-sddm-futuristic-git + - arcolinux-sddm-materia-git + - arcolinux-sddm-simplicity-git + - arcolinux-sddm-slice-git + - arcolinux-sddm-sugar-candy-git + - arcolinux-sddm-urbanlifestyle-git +- name: "Login Manager: Lightdm" + description: "Installs lightdm" + critical: false + hidden: false + selected: false + packages: + - lightdm + - lightdm-gtk-greeter + - lightdm-gtk-greeter-settings + - lightdm-webkit-theme-aether + - lightdm-webkit2-theme-reactive + - arcolinux-wallpapers-git + - lightdm-slick-greeter +- name: "Login Manager: Gdm" + description: "Installs gdm" + critical: false + hidden: false + selected: false + packages: + - gdm + - arcolinux-wallpapers-git +- name: "Login Manager: Lxdm" + description: "Installs lxdm" + critical: false + hidden: false + selected: false + packages: + - lxdm + - arcolinux-wallpapers-git +- name: "Login Manager: Ly" + description: "Installs ly" + critical: false + hidden: false + selected: false + packages: + - ly + - arcolinux-wallpapers-git diff --git a/usr/share/sofirem/yaml-awesome/netinstall-multimedia.yaml b/usr/share/sofirem/yaml-awesome/netinstall-multimedia.yaml new file mode 100644 index 0000000..675c96c --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-multimedia.yaml @@ -0,0 +1,77 @@ +- name: "Audio Software" + description: "Primarily Audio software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - amberol + - ardour + - audacious + - audacious-plugins + - audacity + - byte + - cava + - clementine + - curseradio-git + - deadbeef + - deezer + - elisa + - gmusicbrowser + - g4music + - juk + - kwave + - lollypop + - lxmusic + - lmms + - ncmpcpp + - olivia + - pragha + - radiotray + - rhythmbox + - sayonara-player + - shortwave + - soundconverter + - spotify + - spotifywm-git + - spotify-adblock-git + - tauon-music-box +- name: "Video Software" + description: "Primarily Video software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - celluloid + - clapper + - freetube-bin + - guvcview + - handbrake + - hypnotix + - juk + - kazam + - kdenlive + - kodi-x11 + - kodi + - kodi-addons + - losslesscut-bin + - obs-studio + - openshot + - makemkv + - mkvtoolnix-gui + - mpc + - mpd + - mpv + - peek + - pitivi + - plex-media-player + - plex-media-server + - qtwebflix-git + - simplescreenrecorder + - simplescreenrecorder-git + - smplayer + - vlc + - youtube-dl + - youtube-dl-gui-git + - yt-dlp diff --git a/usr/share/sofirem/yaml-awesome/netinstall-nvidia.yaml b/usr/share/sofirem/yaml-awesome/netinstall-nvidia.yaml new file mode 100644 index 0000000..4a2fa6f --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-nvidia.yaml @@ -0,0 +1,74 @@ +- name: "Nvidia-dkms for linux kernel - installed by default" + description: "Installs nvidia-dkms for linux kernel" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - linux + - linux-headers + - nvidia-dkms + - nvidia-settings + - nvidia-utils +- name: "Nvidia-dkms for linux-lts kernel" + description: "Installs nvidia-dkms for linux-lts kernel" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - linux-lts + - linux-lts-headers + - nvidia-dkms + - nvidia-settings + - nvidia-utils +- name: "Nvidia-dkms for linux-hardened kernel" + description: "Installs nvidia-dkms for linux-hardened kernel" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - linux-hardened + - linux-hardened-headers + - nvidia-dkms + - nvidia-settings + - nvidia-utils +- name: "Nvidia-dkms for linux-zen kernel" + description: "Installs nvidia-dkms for linux-zen kernel" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - linux-zen + - linux-zen-headers + - nvidia-dkms + - nvidia-settings + - nvidia-utils +- name: "Nvidia Related" + description: "Nvidia related applications" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - bumblebee + - bumblebee-status + - bumblebee-status-git + - cuda + - envycontrol + - gwe + - nvflash + - nvidia + - nvidia-lts + - nvidia-prime + - nvidia-xrun + - nvtop + - optimus-manager + - optimus-manager-qt diff --git a/usr/share/sofirem/yaml-awesome/netinstall-office.yaml b/usr/share/sofirem/yaml-awesome/netinstall-office.yaml new file mode 100644 index 0000000..f3411f5 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-office.yaml @@ -0,0 +1,123 @@ +- name: "Abiword" + description: "Abiword" + critical: false + hidden: false + selected: false + packages: + - abiword +- name: "Calligra" + description: "Office Suite" + critical: false + hidden: false + selected: false + packages: + - calligra + - calligra-plan +- name: "Epub" + description: "Epub" + critical: false + hidden: false + selected: false + packages: + - calibre + - sigil +- name: "Freeoffice" + description: "Freeoffice" + critical: false + hidden: false + selected: false + packages: + - freeoffice +- name: "Focuswriter" + description: "Focuswriter" + critical: false + hidden: false + selected: false + packages: + - focuswriter +- name: "Ghostwriter" + description: "Ghostwriter" + critical: false + hidden: false + selected: false + packages: + - ghostwriter +- name: "Gnumeric" + description: "Gnumeric" + critical: false + hidden: false + selected: false + packages: + - gnumeric +- name: "Libre Office Fresh" + description: "Installs libre office fresh - feature branch - conflicts with still" + critical: false + hidden: false + selected: false + packages: + - libreoffice-fresh + - hunspell +- name: "Libre Office Still" + description: "Installs libre office still - stable branch - conflicts with fresh" + critical: false + hidden: false + selected: false + packages: + - libreoffice-still + - hunspell +- name: "Ms Office Online" + description: "Microsoft Office Suite Online as a native application" + critical: false + hidden: false + selected: false + packages: + - ms-office-online +- name: "Moneydance" + description: "Moneydance" + critical: false + hidden: false + selected: false + packages: + - moneydance +- name: "Onlyoffice" + description: "Onlyoffice" + critical: false + hidden: false + selected: false + packages: + - onlyoffice-bin +- name: "Openoffice" + description: "Openoffice" + critical: false + hidden: false + selected: false + packages: + - openoffice-bin +- name: "PDF applications" + description: "PDF applications" + critical: false + hidden: false + selected: false + packages: + - atril + - evince + - okular + - pdfarranger + - xpdf + - xreader +- name: "Scribus" + description: "Scribus" + critical: false + hidden: false + selected: false + packages: + - scribus +- name: "WPS Office" + description: "Installs wps office" + critical: false + hidden: false + selected: false + packages: + - wps-office + - wps-office-mime + - ttf-wps-fonts diff --git a/usr/share/sofirem/yaml-awesome/netinstall-terminals.yaml b/usr/share/sofirem/yaml-awesome/netinstall-terminals.yaml new file mode 100644 index 0000000..28c8ae2 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-terminals.yaml @@ -0,0 +1,101 @@ +- name: "Terminals" + description: "Terminals" + critical: false + hidden: false + selected: false + expanded: true + packages: + - alacritty + - alacritty-themes + - base16-alacritty-git + - gnome-terminal + - gnome-terminal-transparency + - guake + - kitty + - konsole + - lxterminal + - nautilus-open-any-terminal + - oh-my-zsh-powerline-theme-git + - prot16-xfce4-terminal + - rxvt-unicode + - sakura + - tabby-bin + - tempus-themes-xfce4-terminal-git + - terminator + - termite + - tilix + - tilda + - tmux + - urxvt-fullscreen + - urxvt-perls + - urxvt-resize-font-git + - xfce4-terminal + - xfce4-terminal-base16-colors-git +- name: "Terminal Tools To Search" + description: "Terminal tools to search" + critical: false + hidden: false + selected: false + expanded: true + packages: + - ripgrep + - ripgrep-all + - the_platinum_searcher-bin + - the_silver_searcher +- name: "Terminal Fun" + description: "Terminal fun" + critical: false + hidden: false + selected: false + expanded: true + packages: + - asciiquarium + - bash-pipes + - boxes + - bpytop + - cava + - c-lolcat + - cool-retro-term + - cowfortune + - cmatrix-git + - cpufetch-git + - curseradio-git + - cxxmatrix-git + - figlet + - gotop-bin + - inetutils + - lolcat + - mc + - nixieclock + - pipes.sh + - pfetch + - python-pywal + - ranger + - sl + - slurm + - sparklines-git + - toilet + - tty-clock + - tty-clock-git + - ufetch-git + - ufetch-arco-git + - unimatrix-git + - wttr +- name: "Zsh" + description: "Zsh" + critical: false + hidden: false + selected: false + expanded: true + packages: + - zsh + - zsh-autosuggestions-git + - zsh-completions + - zsh-fast-syntax-highlighting + - zsh-history-substring-search-git + - zsh-syntax-highlighting + - zsh-syntax-highlighting-git + - zsh-theme-powerlevel10k-git + - arcolinux-zsh-git + - oh-my-zsh-git + - oh-my-zsh-powerline-theme-git diff --git a/usr/share/sofirem/yaml-awesome/netinstall-theming.yaml b/usr/share/sofirem/yaml-awesome/netinstall-theming.yaml new file mode 100644 index 0000000..b22820d --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-theming.yaml @@ -0,0 +1,150 @@ +- name: "Themes" + description: "Themes" + critical: false + hidden: false + selected: false + expanded: true + packages: + - adapta-gtk-theme + - arc-darkest-theme-git + - arcolinux-arc-kde + - arcolinux-sweet-mars-git + - ayu-theme + - breeze + - dracula-gtk-theme + - fluent-gtk-theme + - fluent-kde-theme-git + - graphite-gtk-theme-git + - kripton-theme-git + - layan-gtk-theme-git + - layan-kde-git + - materia-gtk-theme + - materia-kde + - nordic-kde-git + - numix-gtk-theme-git + - openbox-themes-pambudi-git + - orchis-kde-theme-git + - orchis-theme-git + - plata-theme + - qogir-gtk-theme-git + - sweet-theme-git + - sweet-gtk-theme-dark +- name: "Icons" + description: "Icons" + critical: false + hidden: false + selected: false + expanded: true + packages: + - a-candy-beauty-icon-theme-git + - arc-icon-theme + - arc-x-icons-theme + - breeze-icons + - dracula-icons-git + - faba-icon-theme-git + - faba-mono-icons-git + - flat-remix-git + - fluent-icon-theme-git + - halo-icons-git + - la-capitaine-icon-theme-git + - luna-icon-theme-git + - moka-icon-theme-git + - nordzy-icon-theme-git + - numix-circle-arc-icons-git + - numix-circle-icon-theme-git + - numix-icon-theme-git + - numix-kde-theme-git + - obsidian-icon-theme + - oranchelo-icon-theme-git + - paper-icon-theme + - papirus-folders-git + - papirus-folders-gui-bin + - papirus-folders-nordic + - papirus-icon-theme + - papirus-linux-universe + - papirus-nord + - qogir-icon-theme + - sardi-icons + - sardi-colora-variations-icons-git + - sardi-flat-colora-variations-icons-git + - sardi-flat-mint-y-icons-git + - sardi-flat-mixing-icons-git + - sardi-flexible-colora-variations-icons-git + - sardi-flexible-luv-colora-variations-icons-git + - sardi-flexible-mint-y-icons-git + - sardi-flexible-mixing-icons-git + - sardi-flexible-variations-icons-git + - sardi-ghost-flexible-colora-variations-icons-git + - sardi-ghost-flexible-mint-y-icons-git + - sardi-ghost-flexible-mixing-icons-git + - sardi-ghost-flexible-variations-icons-git + - sardi-mint-y-icons-git + - sardi-mixing-icons-git + - sardi-mono-colora-variations-icons-git + - sardi-mono-mint-y-icons-git + - sardi-mono-mixing-icons-git + - sardi-mono-numix-colora-variations-icons-git + - sardi-mono-papirus-colora-variations-icons-git + - sardi-orb-colora-mint-y-icons-git + - sardi-orb-colora-mixing-icons-git + - sardi-orb-colora-variations-icons-git + - surfn-icons-git + - surfn-arc-breeze-icons-git + - surfn-mint-y-icons-git + - surfn-plasma-dark-icons-git + - surfn-plasma-light-icons-git + - tela-circle-icon-theme-git + - vimix-icon-theme-git + - we10x-icon-theme-git + - whitesur-icon-theme-git + - zafiro-icon-theme +- name: "Cursors" + description: "Cursors" + critical: false + hidden: false + selected: false + expanded: true + packages: + - bibata-cursor-theme-bin + - bibata-cursor-translucent + - bibata-extra-cursor-theme + - bibata-rainbow-cursor-theme + - capitaine-cursors + - catppuccin-cursors-git + - dracula-cursors-git + - layan-cursor-theme-git + - oxy-neon + - phinger-cursors + - sweet-cursor-theme-git + - vimix-cursors + - xcursor-arch-cursor-complete + - xcursor-breeze + - xcursor-comix + - xcursor-flatbed + - xcursor-neutral + - xcursor-premium + - xcursor-simpleandsoft +- name: "Changing the look" + description: "Changing the look" + critical: false + hidden: false + selected: false + expanded: true + packages: + - kvantum-qt5-git + - kvantum-qt6-git + - kvantum-theme-materia + - kvantum-theme-qogir-git + - picom + - picom-jonaburg-git + - picom-ibhagwan-git + - picom-git +- name: "Packages that will install plasma as a dependency" + description: "Plasma related" + critical: false + hidden: false + selected: false + expanded: true + packages: + - qogir-kde-theme-git + - sweet-kde-theme-mars-git diff --git a/usr/share/sofirem/yaml-awesome/netinstall-usb.yaml b/usr/share/sofirem/yaml-awesome/netinstall-usb.yaml new file mode 100644 index 0000000..1d39bc2 --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-usb.yaml @@ -0,0 +1,36 @@ +- name: "Usb/Disk Utilities" + description: "Utility software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - baobab + - brasero + - etcher-bin + - imagewriter + - mintstick-git + - ventoy-bin + - woeusb + - xfburn +- name: "Printing Utilities" + description: "Printing software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - hplip +- name: "Accessibility Utilities" + description: "Accessibility Utility software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - brltty + - espeak-ng + - florence + - mousetweaks + - onboard + - orca diff --git a/usr/share/sofirem/yaml-awesome/netinstall-utilities.yaml b/usr/share/sofirem/yaml-awesome/netinstall-utilities.yaml new file mode 100644 index 0000000..3977abe --- /dev/null +++ b/usr/share/sofirem/yaml-awesome/netinstall-utilities.yaml @@ -0,0 +1,224 @@ +- name: "Utilities for Timeshift and Btrfs" + description: "Utility software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - grub-btrfs + - timeshift + - timeshift-autosnap +- name: "Utilities for Snapper and Btrfs" + description: "Utility software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - btrfs-assistant + - btrfsmaintenance + - grub-btrfs + - snap-pac + - snapper + - snapper-support + - snapper-tools +- name: "Utilities for Android" + description: "Utility software android" + critical: false + hidden: false + selected: false + expanded: true + packages: + - airdroid-nativefier + - android-tools + - android-file-transfer + - android-sdk-platform-tools + - droidcam + - qtscrcpy + - scrcpy + - waydroid +- name: "Utilities for IOS" + description: "Utility software ios" + critical: false + hidden: false + selected: false + expanded: true + packages: + - ifuse + - shairport-sync +- name: "Utilities for benchmarking" + description: "Utility software benchmarking" + critical: false + hidden: false + selected: false + expanded: true + packages: + - blender-benchmark + - geekbench + - gputest + - phoronix-test-suite +- name: "Application installers or launchers" + description: "Application installers or launchers" + critical: false + hidden: false + selected: false + expanded: true + packages: + - albert + - appimagelauncher + - aura-bin + - bauh + - flatpak + - gnome-software + - octopi + - octopi-notifier-qt5 + - pace + - pace-git + - pacui + - pacui-git + - pacseek-bin + - paru + - paru-bin + - paru-git + - pikaur-git + - rate-mirrors + - rate-mirrors-bin + - skippy-xd-git + - snapd + - synapse + - topgrade + - topgrade-bin + - topgrade-git + - trizen + - ulauncher + - xlunch-git + - yay + - yay-bin + - yay-git +- name: "Power Management" + description: "Power Management" + critical: false + hidden: false + selected: false + expanded: true + packages: + - upower + - system76-power +- name: "Backlight" + description: "Backlight" + critical: false + hidden: false + selected: false + expanded: true + packages: + - acpilight + - brightnessctl + - brillo + - gummy + - light +- name: "Utilities for hardware discovery" + description: "Utility software for hardware discovery" + critical: false + hidden: false + selected: false + expanded: true + packages: + - alsi + - archey3 + - bottom + - btop + - cpufetch-git + - cpuid + - cpu-x + - dmidecode + - duf + - edid-decode-git + - fastfetch + - fastfetch-git + - glances + - gnome-disk-utility + - gotop-bin + - gsmartcontrol + - gtop + - hddtemp + - htop + - hw-probe + - inxi + - lm_sensors + - lshw + - neofetch + - nvtop + - nvtop-git + - ookla-speedtest-bin + - pfetch + - powertop + - screenfetch + - slurm + - speedtest-cli-git + - s-tui + - sysprof +- name: "Utilities Kernels" + description: "Utility software kernels" + critical: false + hidden: false + selected: false + expanded: true + packages: + - mkinitcpio-firmware + - modprobed-db + - modprobed-db-git +- name: "Utilities" + description: "Utility software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - auto-cpufreq + - betterlockscreen + - betterlockscreen-git + - bleachbit + - btrbk + - caffeine + - caffeine-ng + - catfish + - ckb-next-git + - debtap + - deja-dup + - downgrade + - fancontrol-gui-git + - find-the-command-git + - fingerprint-gui + - flavours + - hardcode-fixer-git + - galculator + - gammy + - google-earth-pro + - grsync + - grub-customizer + - gufw + - hardinfo-gtk3 + - kbackup + - konsave + - linux-wifi-hotspot + - pacback + - parcellite + - piper + - power-profiles-daemon + - powerpill + - putty + - redshift + - simple-scan + - slimbookbattery + - solaar + - stacer + - stacer-bin + - systemd-manager-git + - tlp + - tuxboot + - tuxboot-git + - vnstat + - wacom-settings-git + - wireshark-qt + - workrave + - yin-yang-git diff --git a/usr/share/sofirem/yaml/netinstall-applications.yaml b/usr/share/sofirem/yaml/netinstall-applications.yaml new file mode 100644 index 0000000..56c1d96 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-applications.yaml @@ -0,0 +1,63 @@ +- name: "Accessories" + description: "Accessories" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-plank-themes-git + - baobab + - bitwarden + - brasero + - brltty + - cheese + - enpass-bin + - espeak-ng + - etcher-bin + - flameshot-git + - florence + - font-manager + - font-manager-git + - galculator + - gitahead + - gitahead-bin + - gitfiend + - gitg + - github-desktop-bin + - gitkraken + - gpick + - imagewriter + - keepassxc + - lastpass + - liferea + - mcomix + - mediainfo-gui + - mintstick-git + - mousetweaks + - nitrogen + - nomacs + - nomacs-git + - nomacs-qt6-git + - onboard + - orca + - pdfarranger + - plank + - privoxy + - screenkey-git + - torbrowser-launcher + - variety + - ventoy-bin + - woeusb + - xfburn +- name: "Conky" + description: "Conky and conky collection" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-conky-collection-git + - arcolinux-conky-collection-plasma-git + - arcolinux-pipemenus-git + - conky-lua-archers + - yad diff --git a/usr/share/sofirem/yaml/netinstall-arcolinux-dev.yaml b/usr/share/sofirem/yaml/netinstall-arcolinux-dev.yaml new file mode 100644 index 0000000..c1730b0 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-arcolinux-dev.yaml @@ -0,0 +1,23 @@ +- name: "ArcoLinux Dev" + description: "Software for ArcoLinux developers and betatesters" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-local-xfce4-git + - arcolinux-xfce-git + - discord + - firefox + - flameshot-git + - gitahead + - gitahead-bin + - meld + - scrot + - simplescreenrecorder + - sublime-text-4 + - telegram-desktop + - the_platinum_searcher-bin + - thunar + - thunar-archive-plugin + - thunar-volman diff --git a/usr/share/sofirem/yaml/netinstall-arcolinux.yaml b/usr/share/sofirem/yaml/netinstall-arcolinux.yaml new file mode 100644 index 0000000..01294d5 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-arcolinux.yaml @@ -0,0 +1,128 @@ +- name: "ArcoLinux Plasma Packages" + description: "ArcoLinux plasma packages" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-plasma-keybindings-git + - arcolinux-plasma-servicemenus-git + - arcolinux-plasma-theme-candy-beauty-arc-dark-git + - arcolinux-plasma-theme-candy-beauty-nordic-git + - arcolinux-plasma-theme-surfn-arc-dark-git + - arcolinux-plasma-theme-surfn-nordic-git +- name: "Applications" + description: "Applications" + critical: false + hidden: false + selected: false + expanded: true + packages: + - archlinux-logout-git + - archlinux-tweak-tool-git + - arcolinux-desktop-trasher-git + - arcolinux-powermenu-git + - arcolinux-reflector-simple-git + - arcolinux-teamviewer + - arcolinux-tellme-git +- name: "Arc Theming" + description: "Arc theming packages" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-arc-aqua-git + - arcolinux-arc-archlinux-blue-git + - arcolinux-arc-arcolinux-blue-git + - arcolinux-arc-azul-git + - arcolinux-arc-azure-git + - arcolinux-arc-azure-dodger-blue-git + - arcolinux-arc-blood-git + - arcolinux-arc-blue-sky-git + - arcolinux-arc-blueberry-git + - arcolinux-arc-botticelli-git + - arcolinux-arc-bright-lilac-git + - arcolinux-arc-carnation-git + - arcolinux-arc-carolina-blue-git + - arcolinux-arc-casablanca-git + - arcolinux-arc-cornflower-blue-git + - arcolinux-arc-crimson-git + - arcolinux-arc-darkish-git + - arcolinux-arc-dawn-git + - arcolinux-arc-dodger-blue-git + - arcolinux-arc-emerald-git + - arcolinux-arc-evopop-git + - arcolinux-arc-fern-git + - arcolinux-arc-fire-git + - arcolinux-arc-froly-git + - arcolinux-arc-havelock-git + - arcolinux-arc-hibiscus-git + - arcolinux-arc-light-blue-grey-git + - arcolinux-arc-light-blue-surfn-git + - arcolinux-arc-light-salmon-git + - arcolinux-arc-mandy-git + - arcolinux-arc-mantis-git + - arcolinux-arc-medium-blue-git + - arcolinux-arc-niagara-git + - arcolinux-arc-nice-blue-git + - arcolinux-arc-numix-git + - arcolinux-arc-orchid-git + - arcolinux-arc-pale-grey-git + - arcolinux-arc-paper-git + - arcolinux-arc-pink-git + - arcolinux-arc-polo-git + - arcolinux-arc-punch-git + - arcolinux-arc-purpley-git + - arcolinux-arc-red-orange-git + - arcolinux-arc-red-violet-git + - arcolinux-arc-rusty-orange-git + - arcolinux-arc-sky-blue-git + - arcolinux-arc-slate-grey-git + - arcolinux-arc-smoke-git + - arcolinux-arc-soft-blue-git + - arcolinux-arc-tacao-git + - arcolinux-arc-tangerine-git + - arcolinux-arc-tory-git + - arcolinux-arc-twilight-git + - arcolinux-arc-warm-pink-git +- name: "Theming" + description: "Theming packages" + critical: false + hidden: false + selected: false + expanded: true + packages: + - a-candy-beauty-icon-theme-git + - archlinux-login-backgrounds-git + - arcolinux-arc-kde + - arcolinux-mint-y-icons-git + - arcolinux-plank-git + - arcolinux-plank-themes-git + - arcolinux-sddm-futuristic-git + - arcolinux-sddm-materia-git + - arcolinux-sddm-simplicity-git + - arcolinux-sddm-slice-git + - arcolinux-sddm-sugar-candy-git + - arcolinux-sddm-urbanlifestyle-git + - arcolinux-wallpapers-candy-git + - arcolinux-wallpapers-dual-git + - arcolinux-wallpapers-git +- name: "Meta" + description: "ArcoLinux meta packages" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-meta-arc-theme + - arcolinux-meta-asian-fonts + - arcolinux-meta-fun + - arcolinux-meta-log + - arcolinux-meta-samba + - arcolinux-meta-sddm-themes + - arcolinux-meta-steam-amd + - arcolinux-meta-steam-intel + - arcolinux-meta-steam-nvidia + - arcolinux-meta-utilities + - arcolinux-meta-wine diff --git a/usr/share/sofirem/yaml/netinstall-communication.yaml b/usr/share/sofirem/yaml/netinstall-communication.yaml new file mode 100644 index 0000000..7a7d294 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-communication.yaml @@ -0,0 +1,44 @@ +- name: "Communication" + description: "Communication software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - element-desktop + - discord + - discord_arch_electron + - google-chat-linux-bin + - hexchat + - jitsi-meet-desktop-bin + - mumble + - neochat + - pidgin + - qtox + - skypeforlinux-stable-bin + - signal-desktop + - signal-desktop-beta-bin + - slack-desktop + - teams + - telegram-desktop + - telegram-desktop-bin + - tweetdeck-desktop + - viber + - whatsapp-nativefier + - wire-desktop + - zoom +- name: "Connect Remotely" + description: "Applications to connect to other systems" + critical: false + hidden: false + selected: false + expanded: true + packages: + - anydesk-bin + - arcolinux-teamviewer + - krdc + - nomachine + - realvnc-vnc-server + - realvnc-vnc-viewer + - remmina + - tigervnc diff --git a/usr/share/sofirem/yaml/netinstall-development.yaml b/usr/share/sofirem/yaml/netinstall-development.yaml new file mode 100644 index 0000000..9a017cd --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-development.yaml @@ -0,0 +1,34 @@ +- name: "Development" + description: "Development software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arduino + - bluefish + - brackets-bin + - code + - codeblocks + - emacs + - geany + - geany-plugins + - glade + - intellij-idea-community-edition + - kdevelop + - kde-dev-utils + - leafpad + - meld + - micro + - netbeans + - notepadqq + - openscad + - pulsar-bin + - pycharm-community-edition + - qt5-tools + - qtcreator + - sublime-text-4 + - vim + - vim-runtime + - visual-studio-code-bin + - vscodium-bin diff --git a/usr/share/sofirem/yaml/netinstall-filemanagers.yaml b/usr/share/sofirem/yaml/netinstall-filemanagers.yaml new file mode 100644 index 0000000..2a4994d --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-filemanagers.yaml @@ -0,0 +1,24 @@ +- name: "Filemanagers" + description: "Filemanagers" + critical: false + hidden: false + selected: false + expanded: true + packages: + - caja + - dolphin + - doublecmd-qt5 + - joshuto + - lf + - nnn + - mc + - nautilus + - nemo + - nemo-fileroller + - pcmanfm + - ranger + - thunar + - thunar-extended + - thunar-archive-plugin + - thunar-volman + - thunar-shares-plugin diff --git a/usr/share/sofirem/yaml/netinstall-fonts.yaml b/usr/share/sofirem/yaml/netinstall-fonts.yaml new file mode 100644 index 0000000..d9c2234 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-fonts.yaml @@ -0,0 +1,55 @@ +- name: "Fonts" + description: "Fonts" + critical: false + hidden: false + selected: false + expanded: true + packages: + - adobe-source-code-pro-fonts + - adobe-source-sans-fonts + - adobe-source-serif-fonts + - awesome-terminal-fonts + - libertinus-font + - lohit-fonts + - nerd-fonts-source-code-pro + - noto-fonts + - noto-fonts-emoji + - ttf-anonymous-pro + - ttf-bitstream-vera + - ttf-caladea + - ttf-carlito + - ttf-cascadia-code + - ttf-cormorant + - ttf-croscore + - ttf-dejavu + - ttf-droid + - ttf-eurof + - ttf-fantasque-sans-mono + - ttf-fira-code + - ttf-fira-mono + - ttf-fira-sans + - ttf-font-awesome + - ttf-hack + - ttf-hactor + - ttf-hellvetica + - ttf-ibm-plex + - ttf-inconsolata + - ttf-iosevka-nerd + - ttf-jetbrains-mono + - ttf-jetbrains-mono-nerd + - ttf-joypixels + - ttf-lato + - ttf-liberation + - ttf-linux-libertine + - ttf-linux-libertine-g + - ttf-meslo-nerd-font-powerlevel10k + - ttf-mac-fonts + - ttf-monofur + - ttf-ms-fonts + - ttf-nerd-fonts-symbols + - ttf-nerd-fonts-symbols-mono + - ttf-opensans + - ttf-proggy-clean + - ttf-roboto + - ttf-roboto-mono + - ttf-ubuntu-font-family diff --git a/usr/share/sofirem/yaml/netinstall-gaming.yaml b/usr/share/sofirem/yaml/netinstall-gaming.yaml new file mode 100644 index 0000000..ffc978d --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-gaming.yaml @@ -0,0 +1,64 @@ +- name: "Games" + description: "Gaming software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - aisleriot + - armagetronad + - astromenace + - chromium-bsu + - extremetuxracer + - freeciv + - gnome-chess + - gnuchess + - hedgewars + - kbreakout + - knights + - mari0 + - minecraft-launcher + - multimc-git + - neverball + - sauerbraten + - sauerbraten-data + - supertux + - supertuxkart + - warsow + - wesnoth + - xonotic + - xonotic-data +- name: "Game utilities" + description: "Game utilities" + critical: false + hidden: false + selected: false + expanded: true + packages: + - arcolinux-meta-steam-amd + - arcolinux-meta-steam-intel + - arcolinux-meta-steam-nvidia + - gamehub-bin + - gamemode + - game-devices-udev + - goverlay-bin + - heroic-games-launcher-bin + - itch + - legendary + - lutris + - mangohud + - minigalaxy + - playonlinux + - proton-community-updater + - proton-ge-custom-bin + - protontricks + - protontricks-git + - protonup-qt-bin + - protonup-git + - rare + - replay-sorcery + - supergfxctl + - steam-buddy + - steam-tweaks + - steamtinkerlaunch + - vkbasalt diff --git a/usr/share/sofirem/yaml/netinstall-graphics.yaml b/usr/share/sofirem/yaml/netinstall-graphics.yaml new file mode 100644 index 0000000..332f0d9 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-graphics.yaml @@ -0,0 +1,13 @@ +- name: "Graphics" + description: "Graphics" + critical: false + hidden: false + selected: false + expanded: true + packages: + - blender + - darktable + - digikam + - gimp + - inkscape + - krita diff --git a/usr/share/sofirem/yaml/netinstall-internet.yaml b/usr/share/sofirem/yaml/netinstall-internet.yaml new file mode 100644 index 0000000..cc5a04f --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-internet.yaml @@ -0,0 +1,77 @@ +- name: "Browsers" + description: "Browsers" + critical: false + hidden: false + selected: false + expanded: true + packages: + - brave-bin + - chrome-gnome-shell + - chromium + - chromium-widevine + - falkon + - firefox + - firefox-adblock-plus + - firefox-ublock-origin + - google-chrome + - icecat + - librewolf-bin + - netsurf + - opera + - qutebrowser + - torbrowser-launcher + - vivaldi + - vivaldi-ffmpeg-codecs + - vivaldi-widevine +- name: "Downloaders" + description: "Downloaders" + critical: false + hidden: false + selected: false + expanded: true + packages: + - aria2 + - deluge + - filezilla + - fragments + - freedownloadmanager + - gdown + - jdownloader2 + - ktorrent + - persepolis + - qbittorrent + - transmission-gtk + - xdman +- name: "Cloud Software" + description: "Cloud software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - dropbox + - insync + - megasync-bin + - nextcloud-client +- name: "Mail Clients" + description: "Mail clients" + critical: false + hidden: false + selected: false + expanded: true + packages: + - evolution + - geary + - mailspring + - thunderbird +- name: "Vpn Software" + description: "Vpn Software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - mullvad-vpn-bin + - nordtray-bin + - nordpass-bin + - nordvpn-bin diff --git a/usr/share/sofirem/yaml/netinstall-login.yaml b/usr/share/sofirem/yaml/netinstall-login.yaml new file mode 100644 index 0000000..ed12c49 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-login.yaml @@ -0,0 +1,50 @@ +- name: "Login Manager: Sddm" + description: "Installs sddm" + critical: false + hidden: false + selected: false + packages: + - sddm + - arcolinux-sddm-futuristic-git + - arcolinux-sddm-materia-git + - arcolinux-sddm-simplicity-git + - arcolinux-sddm-slice-git + - arcolinux-sddm-sugar-candy-git + - arcolinux-sddm-urbanlifestyle-git +- name: "Login Manager: Lightdm" + description: "Installs lightdm" + critical: false + hidden: false + selected: false + packages: + - lightdm + - lightdm-gtk-greeter + - lightdm-gtk-greeter-settings + - lightdm-webkit-theme-aether + - lightdm-webkit2-theme-reactive + - arcolinux-wallpapers-git + - lightdm-slick-greeter +- name: "Login Manager: Gdm" + description: "Installs gdm" + critical: false + hidden: false + selected: false + packages: + - gdm + - arcolinux-wallpapers-git +- name: "Login Manager: Lxdm" + description: "Installs lxdm" + critical: false + hidden: false + selected: false + packages: + - lxdm + - arcolinux-wallpapers-git +- name: "Login Manager: Ly" + description: "Installs ly" + critical: false + hidden: false + selected: false + packages: + - ly + - arcolinux-wallpapers-git diff --git a/usr/share/sofirem/yaml/netinstall-multimedia.yaml b/usr/share/sofirem/yaml/netinstall-multimedia.yaml new file mode 100644 index 0000000..1a57804 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-multimedia.yaml @@ -0,0 +1,78 @@ +- name: "Audio Software" + description: "Primarily Audio software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - amberol + - ardour + - audacious + - audacious-plugins + - audacity + - byte + - cava + - clementine + - curseradio-git + - deadbeef + - deezer + - elisa + - gmusicbrowser + - g4music + - juk + - kwave + - lollypop + - lxmusic + - lmms + - ncmpcpp + - olivia + - pragha + - radiotray + - rhythmbox + - sayonara-player + - shortwave + - soundconverter + - spotify + - spotifywm-git + - spotify-adblock-git + - tauon-music-box +- name: "Video Software" + description: "Primarily Video software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - celluloid + - clapper + - filebot + - freetube-bin + - guvcview + - handbrake + - hypnotix + - juk + - kazam + - kdenlive + - kodi-x11 + - kodi + - kodi-addons + - losslesscut-bin + - obs-studio + - openshot + - makemkv + - mkvtoolnix-gui + - mpc + - mpd + - mpv + - peek + - pitivi + - plex-media-player + - plex-media-server + - qtwebflix-git + - simplescreenrecorder + - simplescreenrecorder-git + - smplayer + - vlc + - youtube-dl + - youtube-dl-gui-git + - yt-dlp diff --git a/usr/share/sofirem/yaml/netinstall-nvidia.yaml b/usr/share/sofirem/yaml/netinstall-nvidia.yaml new file mode 100644 index 0000000..23e5463 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-nvidia.yaml @@ -0,0 +1,27 @@ +- name: "Nvidia tools" + description: "Nvidia related applications" + critical: false + hidden: false + selected: false + immutable: false + expanded: false + packages: + - bumblebee + - bumblebee-status + - bumblebee-status-git + - cuda + - envycontrol + - gwe + - nvflash + - nvidia + - nvidia-dkms + - nvidia-lts + - nvidia-open + - nvidia-open-dkms + - nvidia-prime + - nvidia-settings + - nvidia-utils + - nvidia-xrun + - nvtop + - optimus-manager + - optimus-manager-qt diff --git a/usr/share/sofirem/yaml/netinstall-office.yaml b/usr/share/sofirem/yaml/netinstall-office.yaml new file mode 100644 index 0000000..c511f8b --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-office.yaml @@ -0,0 +1,32 @@ +- name: "Office" + description: "Office applications" + critical: false + hidden: false + selected: false + packages: + - abiword + - atril + - calibre + - calligra + - calligra-plan + - evince + - focuswriter + - freeoffice + - ghostwriter + - gnumeric + - hunspell + - libreoffice-fresh + - libreoffice-still + - moneydance + - ms-office-online + - okular + - onlyoffice-bin + - openoffice-bin + - pdfarranger + - scribus + - sigil + - ttf-wps-fonts + - wps-office + - wps-office-mime + - xpdf + - xreader diff --git a/usr/share/sofirem/yaml/netinstall-terminals.yaml b/usr/share/sofirem/yaml/netinstall-terminals.yaml new file mode 100644 index 0000000..ff870a5 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-terminals.yaml @@ -0,0 +1,94 @@ +- name: "Terminals" + description: "Terminals + search tools" + critical: false + hidden: false + selected: false + expanded: true + packages: + - alacritty + - alacritty-themes + - base16-alacritty-git + - gnome-terminal + - gnome-terminal-transparency + - guake + - kitty + - konsole + - lxterminal + - nautilus-open-any-terminal + - oh-my-zsh-powerline-theme-git + - prot16-xfce4-terminal + - ripgrep + - ripgrep-all + - rxvt-unicode + - sakura + - tabby-bin + - tempus-themes-xfce4-terminal-git + - terminator + - termite + - the_platinum_searcher-bin + - the_silver_searcher + - tilda + - tilix + - tmux + - urxvt-fullscreen + - urxvt-perls + - urxvt-resize-font-git + - xfce4-terminal + - xfce4-terminal-base16-colors-git +- name: "Terminal Fun" + description: "Terminal fun" + critical: false + hidden: false + selected: false + expanded: true + packages: + - asciiquarium + - bash-pipes + - boxes + - bpytop + - cava + - c-lolcat + - cool-retro-term + - cowfortune + - cmatrix-git + - cpufetch-git + - curseradio-git + - cxxmatrix-git + - figlet + - gotop-bin + - inetutils + - lolcat + - mc + - nixieclock + - pipes.sh + - pfetch + - python-pywal + - ranger + - sl + - slurm + - sparklines-git + - toilet + - tty-clock + - tty-clock-git + - ufetch-git + - ufetch-arco-git + - unimatrix-git + - wttr +- name: "Zsh" + description: "Zsh" + critical: false + hidden: false + selected: false + expanded: true + packages: + - zsh + - zsh-autosuggestions-git + - zsh-completions + - zsh-fast-syntax-highlighting + - zsh-history-substring-search-git + - zsh-syntax-highlighting + - zsh-syntax-highlighting-git + - zsh-theme-powerlevel10k-git + - arcolinux-zsh-git + - oh-my-zsh-git + - oh-my-zsh-powerline-theme-git diff --git a/usr/share/sofirem/yaml/netinstall-theming.yaml b/usr/share/sofirem/yaml/netinstall-theming.yaml new file mode 100644 index 0000000..770de0c --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-theming.yaml @@ -0,0 +1,142 @@ +- name: "Themes" + description: "Themes" + critical: false + hidden: false + selected: false + expanded: true + packages: + - adapta-gtk-theme + - arc-darkest-theme-git + - arcolinux-arc-kde + - arcolinux-sweet-mars-git + - ayu-theme + - breeze + - dracula-gtk-theme + - fluent-gtk-theme + - fluent-kde-theme-git + - graphite-gtk-theme-git + - kripton-theme-git + - layan-gtk-theme-git + - layan-kde-git + - materia-gtk-theme + - materia-kde + - nordic-kde-git + - numix-gtk-theme-git + - openbox-themes-pambudi-git + - orchis-kde-theme-git + - orchis-theme-git + - plata-theme + - qogir-gtk-theme-git + - sweet-theme-git + - sweet-gtk-theme-dark +- name: "Icons" + description: "Icons" + critical: false + hidden: false + selected: false + expanded: true + packages: + - a-candy-beauty-icon-theme-git + - arc-icon-theme + - arc-x-icons-theme + - breeze-icons + - dracula-icons-git + - faba-icon-theme-git + - faba-mono-icons-git + - flat-remix-git + - fluent-icon-theme-git + - halo-icons-git + - la-capitaine-icon-theme-git + - luna-icon-theme-git + - moka-icon-theme-git + - nordzy-icon-theme-git + - numix-circle-arc-icons-git + - numix-circle-icon-theme-git + - numix-icon-theme-git + - numix-kde-theme-git + - obsidian-icon-theme + - oranchelo-icon-theme-git + - paper-icon-theme + - papirus-folders-git + - papirus-folders-gui-bin + - papirus-folders-nordic + - papirus-icon-theme + - papirus-linux-universe + - papirus-nord + - qogir-icon-theme + - sardi-icons + - sardi-colora-variations-icons-git + - sardi-flat-colora-variations-icons-git + - sardi-flat-mint-y-icons-git + - sardi-flat-mixing-icons-git + - sardi-flexible-colora-variations-icons-git + - sardi-flexible-luv-colora-variations-icons-git + - sardi-flexible-mint-y-icons-git + - sardi-flexible-mixing-icons-git + - sardi-flexible-variations-icons-git + - sardi-ghost-flexible-colora-variations-icons-git + - sardi-ghost-flexible-mint-y-icons-git + - sardi-ghost-flexible-mixing-icons-git + - sardi-ghost-flexible-variations-icons-git + - sardi-mint-y-icons-git + - sardi-mixing-icons-git + - sardi-mono-colora-variations-icons-git + - sardi-mono-mint-y-icons-git + - sardi-mono-mixing-icons-git + - sardi-mono-numix-colora-variations-icons-git + - sardi-mono-papirus-colora-variations-icons-git + - sardi-orb-colora-mint-y-icons-git + - sardi-orb-colora-mixing-icons-git + - sardi-orb-colora-variations-icons-git + - surfn-icons-git + - surfn-arc-breeze-icons-git + - surfn-mint-y-icons-git + - surfn-plasma-dark-icons-git + - surfn-plasma-light-icons-git + - tela-circle-icon-theme-git + - vimix-icon-theme-git + - we10x-icon-theme-git + - whitesur-icon-theme-git + - zafiro-icon-theme +- name: "Cursors" + description: "Cursors" + critical: false + hidden: false + selected: false + expanded: true + packages: + - bibata-cursor-theme-bin + - bibata-cursor-translucent + - bibata-extra-cursor-theme + - bibata-rainbow-cursor-theme + - capitaine-cursors + - catppuccin-cursors-git + - dracula-cursors-git + - layan-cursor-theme-git + - oxy-neon + - phinger-cursors + - sweet-cursor-theme-git + - vimix-cursors + - xcursor-arch-cursor-complete + - xcursor-breeze + - xcursor-comix + - xcursor-flatbed + - xcursor-neutral + - xcursor-premium + - xcursor-simpleandsoft +- name: "Looks" + description: "Changing the look" + critical: false + hidden: false + selected: false + expanded: true + packages: + - kvantum + - kvantum-qt5-git + - kvantum-qt6-git + - kvantum-theme-materia + - kvantum-theme-qogir-git + - picom + - picom-jonaburg-git + - picom-ibhagwan-git + - picom-git diff --git a/usr/share/sofirem/yaml/netinstall-utilities.yaml b/usr/share/sofirem/yaml/netinstall-utilities.yaml new file mode 100644 index 0000000..4b29f40 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-utilities.yaml @@ -0,0 +1,158 @@ +- name: "Utilities" + description: "Utility software" + critical: false + hidden: false + selected: false + expanded: true + packages: + - acpilight + - airdroid-nativefier + - albert + - alsi + - android-file-transfer + - android-sdk-platform-tools + - android-tools + - appimagelauncher + - archey3 + - aura-bin + - auto-cpufreq + - bauh + - betterlockscreen + - betterlockscreen-git + - bleachbit + - blender-benchmark + - bottom + - brightnessctl + - brillo + - btop + - btrbk + - caffeine-ng + - catfish + - ckb-next-git + - cpu-x + - cpufetch-git + - cpuid + - debtap + - deja-dup + - dmidecode + - downgrade + - droidcam + - duf + - edid-decode-git + - fancontrol-gui-git + - fastfetch + - fastfetch-git + - find-the-command-git + - fingerprint-gui + - flatpak + - flavours + - galculator + - gammy + - geekbench + - glances + - gnome-disk-utility + - gnome-software + - gnome-software-packagekit-plugin + - google-earth-pro + - gotop-bin + - gputest + - grsync + - grub-customizer + - gsmartcontrol + - gtop + - gufw + - gummy + - hardcode-fixer-git + - hardinfo-gtk3 + - hddtemp + - htop + - hw-probe + - ifuse + - inxi + - kbackup + - konsave + - light + - linux-wifi-hotspot + - lm_sensors + - lshw + - neofetch + - nvtop + - nvtop-git + - octopi + - octopi-notifier-qt5 + - ookla-speedtest-bin + - pacback + - pace + - pace-git + - pacseek-bin + - pacui + - pacui-git + - parcellite + - paru + - paru-bin + - paru-git + - pfetch + - phoronix-test-suite + - pikaur-git + - piper + - power-profiles-daemon + - powerpill + - powertop + - putty + - qtscrcpy + - rate-mirrors + - rate-mirrors-bin + - redshift + - s-tui + - scrcpy + - screenfetch + - shairport-sync + - simple-scan + - skippy-xd-git + - slimbookbattery + - slurm + - snapd + - solaar + - speedtest-cli-git + - stacer + - stacer-bin + - synapse + - sysprof + - system76-power + - systemd-manager-git + - tlp + - topgrade + - topgrade-bin + - topgrade-git + - trizen + - tuxboot + - tuxboot-git + - ufetch-git + - ulauncher + - upower + - vnstat + - wacom-settings-git + - waydroid + - wireshark-qt + - workrave + - wttr + - yay + - yay-bin + - yay-git + - yin-yang-git +- name: "Btrfs" + description: "Utility software for Brfs" + critical: false + hidden: false + selected: false + expanded: true + packages: + - btrfs-assistant + - btrfsmaintenance + - grub-btrfs + - snap-pac + - snapper + - snapper-support + - snapper-tools + - timeshift + - timeshift-autosnap diff --git a/usr/share/sofirem/yaml/netinstall-vm.yaml b/usr/share/sofirem/yaml/netinstall-vm.yaml new file mode 100644 index 0000000..6521ad0 --- /dev/null +++ b/usr/share/sofirem/yaml/netinstall-vm.yaml @@ -0,0 +1,17 @@ +- name: "Virtual Machines" + description: "Installs virtual Machines for Linux" + critical: false + hidden: false + selected: false + expanded: false + packages: + - virtualbox + - virtualbox-host-dkms + - open-vm-tools + - vmware-workstation + - vmware-keymaps + - qemu-base + - qemu-full + - quickemu + - quickemu-git + - quickgui-bin \ No newline at end of file