Skip to content

Latest commit

 

History

History
758 lines (561 loc) · 26 KB

archlinux.md

File metadata and controls

758 lines (561 loc) · 26 KB

ArchLinux - Desktop VM

ArchLinux - VM configuration

  • VM id: 151
  • HDD: 60GB
  • Sockets: 1
  • Cores: 30
  • RAM:
    • Min: 2048
    • Max: 32768
    • Ballooning Devices: enabled
  • Machine: i440fx
  • Audio Device
    • Audio Device: AC97
    • Backend Driver: SPICE
  • Network
    • LAN MAC address: 92:4B:CC:81:96:83
    • Static ip assigned in pfSense: 192.168.0.105
    • Local domain record in piHole: archlinux .local
  • Options:
    • Start at boot: enabled
    • QEMU Guest Agent: enabled, guest trim
    • SPICE Enhancements:
      • Folder Sharing: enabled
      • Video Streaming: off
  • OS: ArchLinux

ArchLinux - OS Configuration

Configure wireless network access

Install iNet Wireless daemon and set a delay for iwd service start

sudo pacman -S iwd
sudo systemctl enable iwd
sudo systemctl edit iwd
#add the following text
[Service]
ExecStartPre=sleep 3

Base software installation

Enable multilib repository by uncommenting the [multilib] section in /etc/pacman.conf:

/etc/pacman.conf
[multilib]
Include = /etc/pacman.d/mirrorlist

Update pacman mirror list with the servers that were checked maximum 6 hours ago, sorted by speed for Romania and save it to a file

sudo pacman -S reflector rsync
sudo reflector -c Romania -a 6 --sort rate --save /etc/pacman.d/mirrorlist

Refresh the servers

sudo pacman -Syyy

Base software installation after running arch-chroot

  • GRUB bootloader: grub
  • OS Prober: os-prober
  • Program for detection and configuration of networks: network-manager
  • Packages used for building apps: base-devel linux-headers
  • utils for accesing nfs shares: nfs-utils
  • bash auto completion: bash-completion
  • tool to help manage "well knownw" directories: xdg-user-dirs
  • utilities for managing default applications: xdg-utils
  • ssh server: openssh
  • reflector: reflector
  • git: git
  • rsync: rsync
  • Daemon for delivering ACPI events: acpi acpi_call
  • Scripts and tools for pacman: pacman-contrib
  • A directory listing program: tree
  • System for distributing Linux Sandboxed apps: flatpak
  • Network monitoring tool: iftop
  • Containerization software: docker
  • Interactive process viewer: htop
  • CLI system information tool for terminal: neofetch
  • DOS filesystem utilities: dosfstools
  • NTFS filesystem driver and utilities: ntfs-3g
sudo pacman -S grub os-prober network-manager base-devel linux-headers nfs-utils bash-completition xdg-user-dirs xdg-utils openssh reflector rsync acpi acpi_call pacman-contrib tree flatpak iftop docker htop neofetch dosfstools ntfs-3g

Configure local network mounts

Add the following mounting points to /etc/fstab/

192.168.0.114:/mnt/tank1/data /home/sitram/mounts/data nfs defaults,auto 0 0
192.168.0.114:/mnt/tank2/media /home/sitram/mounts/media nfs defaults,auto 0 0

Install AUR Helper

Install yay AUR Helper

sudo pacman -S git
sudo pacman -S --needed base-devel 
cd /tmp
git clone https://aur.archlinux.org/yay-git.git
cd yay-git
makepkg -si
cd /
sudo rm -r /tmp/yay-git

Desktop environment installation(Cinnamon)

Uninstall graphics driver for intel because it interferes with cinnamon

sudo pacman -R xf86-video-intel

Disable bluetooth service and remove the existing package

sudo systemctl disable bluetooth
sudo pacman -R bluez bluez-utils pulseaudio-bluetooth
  • display server: xorg-server
  • display manager: lightdm
  • greeter: lightdm-webkit2-greeter lightdm-gtk-greeter lightdm-pantheon-greeter lightdm-slick-greeter
  • greeter settings editor: lightdm-gtk-greeter-settings
  • desktop environment: cinnamon
  • window manager(used by cinnamon as fallback in case cinnamon fails): metacity
  • terminal(cinnamon doesn't come with one): gnome-terminal
  • password manager: gnome-keyring
sudo pacman -S xorg-server lightdm lightdm-webkit2-greeter lightdm-gtk-greeter lightdm-pantheon-greeter lightdm-slick-greeter lightdm-gtk-greeter-settings cinnamon metacity gnome-terminal gnome-keyring

Configuration:

  • Icons Theme*: Papirus-Dark
  • Applications Theme: Mint-Y-Dark-Blue
  • Mouse pointer Theme: Adwaita
  • Desktop Theme: Mint-Y-Dark-Blue
  • Default Font: Cantarell Regular 9
  • Desktop font: Cantarell Regular 10
  • Document Font: Cantarell Regular 11
  • Monospace font: Source Code Pro Regular 10
  • Window title font: Cantarell Regular 10

Desktop environment installation(Gnome)

  • display server: xorg-server
  • display manager: gdm
  • greeter: lightdm-webkit2-greeter lightdm-gtk-greeter lightdm-slick-greeter lightdm-slick-greeter
  • greeter settings editor: lightdm-gtk-greeter-settings
  • desktop environment: gnome
  • window manager(used by cinnamon as fallback in case cinnamon fails): metacity
sudo pacman -S xorg-server gdm lightdm-webkit2-greeter lightdm-gtk-greeter lightdm-pantheon-greeter lightdm-slick-greeter lightdm-gtk-greeter-settings gnome metacity

Desktop environment installation(KDE)

  • display server: xorg-server
  • display manager: lightdm
  • greeter: lightdm-webkit2-greeter lightdm-gtk-greeter lightdm-slick-greeter lightdm-slick-greeter
  • greeter settings editor: lightdm-gtk-greeter-settings
  • desktop environment: plasma
  • terminal: gnome-terminal
  • password manager: gnome-keyring
sudo pacman -S xorg-server lightdm lightdm-webkit2-greeter lightdm-gtk-greeter lightdm-pantheon-greeter lightdm-slick-greeter lightdm-gtk-greeter-settings plasma gnome-terminal gnome-keyring

Common apps for all desktop environments

  • ALSA utilities: alsa-utils
  • screenshot tool: flameshot
  • CUPS printer configuration tool: system-config-printer
  • NetworkManager applet: network-manager-applet
  • bluetooth configuration tool: blueberry
  • office suite: libreoffice
  • file manager: thunar
  • archive manager and plugins for Thunar: file-roller thunar-archive-plugin thunar-volman thunar-media-tags-plugin
  • PDF viewer: okular
  • calculator: qalculate-gtk
  • image editor: gimp
  • image viewer: nomacs
  • video player: smplayer-themes smplayer-skins smtube yt-dlp
  • video editing software: shotcut
  • video transcoder software: handbrake
  • Nvidia driver: nvidia
  • Nvidia settings applet: nvidia-settings
  • wallpapers: archlinux-wallpaper
  • wine: wine
  • wine packages for applications that depend on Internet Explorer and .NET: wine-geko wine-mono
  • wine libraries: lib32-libpulse
  • steam: steam
  • icons: papirus-icon-theme
  • themes: arc-gtk-theme
  • fonts for Bootstrap: ttf-font-awesome
  • Spice agent xorg client that enables copy and paste between client and X-session and more: spice-vdagent
  • Gnome virtual filesystems implementation: gvfs
  • Windows File and printer sharing for Non-KDE desktops: gvfs-smb
  • GUI system monitor: gnome-system-monitor
  • Telegram - instant messaging system: telegram-desktop
  • Utility to modify video: v4l-utils
  • Live streaming and recording software: obs-studio
  • Remote desktop client and plugins: remmina spice-gtk freerdp
  • Linux tools for UDF filesystems and DVD/CD-R(W) drives: udftools
  • Optimize Linux Laptop Battery Life: tlp
sudo pacman -S alsa-utils flameshot network-manager-applet blueberry system-config-printer libreoffice thunar file-roller thunar-archive-plugin thunar-volman thunar-media-tags-plugin okular qalculate-gtk gimp nomacs smplayer-themes smplayer-skins smtube yt-dlp shotcut handbrake nvidia nvidia-settings archlinux-wallpaper wine wine-gecko wine-mono lib32-libpulse steam papirus-icon-theme arc-gtk-theme arc-gtk-theme spice-vdagent gvfs gvfs-smb gnome-system-monitor telegram-desktop v4l-utils obs-studio remmina spice-gtk freerdp udftools tlp

Configure PipeWire multimedia framework

Configure PipeWire multimedia framework

  • Low-latency audio/video router and processor: pipewire
  • ALSA configuration: pipewire-alsa
  • PulseAudio replacement: pipewire-pulse
  • Session and policy manager for PipeWire: wireplumber
  • Audio effects for PipeWire applications: easyeffects
sudo pacman -S pipewire pipewire-alsa pipewire-pulse wireplumber
yay -S easyeffects

Load extra modules

sudo touch /etc/pipewire/pipewire-pulse.conf.d/pipewire.conf
nano /etc/pipewire/pipewire-pulse.conf.d/pipewire.conf

add text

# Extra modules can be loaded here.
context.exec = [
    { path = "pactl"        args = "load-module module-switch-on-connect" }
]

Configure PulseAudio multimedia framework

Configure PulseAudio multimedia framework

  • General-purpose sound server: pulseaudio
  • ALSA Configuration for PulseAudio: pulseaudio-alsa
  • Bluetooth support for PulseAudio: pulseaudio-bluetooth
  • A GTK volume control for PulseAudio: pacucontrol
sudo pacman -S pulseaudio pulseaudio-alsa pulseaudio-bluetooth
yay -S pavucontrol

Configure lightdm greeter by editing lightdm.conf. A list of all greeter-session installed on the system can be found by listing the contents of /usr/share/xgreeters

sudo nano /etc/lightdm/lightdm.conf

# Select the installed greeter
greeter-session = lightdm-webkit2-greeter
#Change display output for VM's only
display-setup-script=xrandr --output Virtual-1 --mode 1920x1080
sudo systemctl restart lightdm.service

Common AUR packages

  • greeter theme: lightdm-webkit-theme-aether
  • LightDM display manager configuration tool: lightdm-settings
  • Google Chrome: google-chrome
  • Zip archiver: 7-zip
  • Visual Studio Code: visual-studio-code-bin
  • Sublime text editor: sublime-text-4
  • icons: tela-icon-theme
  • themes: mint-themes
  • Optimus Manager for systems with integrated and dedicated GPU + applet: optimus-manager optimus-manager-qt
  • Teamviewer: teamviewer
  • Nextcloud desktop client: nextcloud-client
  • system information tool + helpers: archey4 virt-what dmidecode wmctrl pciutils lm_sensors
  • system restore utility: timeshift
  • Pacman GUI: pamac-aur
  • Snap: snapd
  • InterractiveBrokers client: ib-tws
  • Disk analyzer tool: qdirstat
  • Microsoft fonts: ttf-ms-win11-auto
  • Plex desktop client for Linux: plex-desktop
  • Optional firmware for the default linux kernel to get rid of the annoying 'WARNING: Possibly missing firmware for module:' messages: mkinitcpio-firmware
yay -S lightdm-webkit-theme-aether lightdm-settings google-chrome 7-zip visual-studio-code-bin sublime-text-4 tela-icon-theme mint-themes optimus-manager optimus-manager-qt teamviewer nextcloud-client archey4 virt-what dmidecode wmctrl pciutils lm_sensors timeshift snapd ib-tws qdirstat ttf-ms-win11-auto plex-desktop mkinitcpio-firmware

List AUR installed packages

pacman -Qm

Post instalation services handling

Enable various services:

  • NetworkManager
  • Display manager
  • Bluetooth
  • SSH server
  • Reflector timer to update periodically the pacman mirrorlist
  • Daemon for delivering ACPI events
  • Qemu guest agent for VM's
  • Systemd Network daemon
  • Teamviewer daemon
  • Optimus Manager daemon for switching between integrated and dedicated GPU
  • Docker
sudo systemctl enable NetworkManager
sudo systemctl enable lightdm
sudo systemctl enable bluetooth
sudo systemctl enable sshd
sudo systemctl enable reflector.timer
sudo systemctl enable tlp
sudo systemctl enable qemu-guest-agent
sudo systemctl enable systemd-networkd
sudo systemctl enable teamviewerd
sudo systemctl enable optimus-manager.service
sudo systemctl enable docker

Check what graphics driver is used with command nvidia-smi

Check all enabled services

sudo systemctl list-unit-files --state=enabled

ArchLinux - Network configuration

ArchLinux - systemd-networkd

ArchLinux - NetworkManager

NetworkManager is a program for providing detection and configuration for systems to automatically connect to networks. NetworkManager's functionality can be useful for both wireless and wired networks. For wireless networks, NetworkManager prefers known wireless networks and has the ability to switch to the most reliable network. NetworkManager-aware applications can switch from online and offline mode. NetworkManager also prefers wired connections over wireless ones, has support for modem connections and certain types of VPN. NetworkManager was originally developed by Red Hat and now is hosted by the GNOME project.

NetworkManager can be installed with the following packages:

  • networkmanager - which contains a daemon, a command line interface (nmcli) and a curses‐based interface (nmtui)
  • nm-connection-editor - agraphical user interface
  • network-manager-applet - a system tray applet (nm-applet)
  • wpa_supplicant - cross-platform suplicant for wireless connections
sudo pacman -S networkmanager wpa_supplicant nm-connection-editor network-manager-applet
sudo pacman -R iwd
sudo systemctl disable dhcpcd.service
sudo systemctl disable systemd-networkd.service
sudo systemctl disable iwd.service
sudo systemctl enable wpa_supplicant.service
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager.service
sudo reboot

By default NetworkManager uses its internal DHCP client so make sure to disable the dhcpd service if it is installed on the system.

To change the DHCP client backend, set the option main.dhcp=dhcp_client_name with a configuration file in /etc/NetworkManager/conf.d/.

/etc/NetworkManager/conf.d/dhcp-client.conf
[main]
dhcp=dhclient

NetworkManager can use systemd-resolved as a DNS resolver and cache. Make sure that systemd-resolved is properly configured and that systemd-resolved.service is started before using it.

systemd-resolved will be used automatically if /etc/resolv.conf is a symlink to /run/systemd/resolve/stub-resolv.conf, /run/systemd/resolve/resolv.conf or /usr/lib/systemd/resolv.conf.

You can enable it explicitly by setting main.dns=systemd-resolved with a configuration file in /etc/NetworkManager/conf.d/

/etc/NetworkManager/conf.d/dns.conf
[main]
dns=systemd-resolved

Interactive UI manager of NetworkManager can be launched with nmtui.

NetworkManager can also be configured to run a script on network status change.

The following script safely unmounts the NFS shares before the relevant network connection is disabled by listening for the down, pre-down and vpn-pre-down events, make sure the script is executable - /etc/NetworkManager/dispatcher.d/30-nfs.sh

#!/bin/sh

# Find the connection UUID with "nmcli con show" in terminal.
# All NetworkManager connection types are supported: wireless, VPN, wired...
WIRED_UUID="4e4a9c21-50d1-3475-ab43-09f582b5ba10"
WIRELESS_ADI_UUID="1bde9f13-565d-4253-84e2-c4538464345d"
WIRELESS_ADI5G_UUID="eb7e84c3-07e2-4900-86d0-483b75ad4be8"

if [ "$CONNECTION_UUID" = "$WIRED_UUID" ] || [ "$CONNECTION_UUID" = "$WIRELESS_ADI_UUID" ] || [ "$CONNECTION_UUID" = "$WIRELESS_ADI5G_UUID" ]; then
    
    # Script parameter $1: network interface name, not used
    # Script parameter $2: dispatched event
    
    case "$2" in
        "up")
            mount -a -t nfs4,nfs 
            ;;
        "down"|"pre-down"|"vpn-pre-down")
            umount -l -a -t nfs4,nfs -f >/dev/null
            ;;
    esac
fi

ArchLinux - Troubleshoot sound issues

dmesg | grep snd
#FWIW to properly debug pulse
systemctl --user mask pulseaudio.socket
pulseaudio -k
pulseaudio -vvv
systemctl --user mask pulseaudio.socket

ArchLinux - I3 installation & Customization

Installing the needed packages

  • Display manager: i3-wm
  • Lockscreen for I3: i3lock
  • i3 Status bar: i3status
  • i3 blocks: i3blocks
  • compositor: picom
  • theme swtcher: lxappearance
  • run menu for the programs: dmenu
  • font: ttf-ubuntu-font-family
  • terminal: terminator
  • image viewer that can be use to manage wallpapers: feh
  • GUI for xrandr to set resolution: arandr
  • dmenu replacement: rofi
  • automatically turn numlock on: numlockx
sudo pacman -S i3-wm i3lock i3status i3blocks picom lxappearance dmenu ttf-ubuntu-font-family terminator feh arandr rofi numlockx

Keyboard shortcuts:

  • Open new terminal: $mod+Enter
  • Open dmenu: $mod+d
  • Close window: $mod+Shift+q

  • Switch workspace: $mod+num

  • Open next window vertically: $mod+v
  • Open next window horizontally: $mod+h

  • Stacked mode: $mod+s
  • Tabbed mode: $mod+w
  • Slpith/slpitv mode: $mod+e
  • Full screen toggling: $mod+f

  • Restart i3: $mod+Shift+r
  • Move left: $mod+j / $mod+left
  • Move down: $mod+k / $mod+down
  • Move up: $mod+l / $mod+up
  • Move right: $mod+; / $mod+right

  • Move window left: $mod+Shift+j / $mod+Shift+left
  • Move window down: $mod+Shift+k / $mod+Shift+down
  • Move window up: $mod+Shift+l / $mod+Shift+up
  • Move window right: $mod+Shift+; / $mod+Shift+right

  • Move window to a workspace: $mod+Shift+num

  • Restart i3 in place: $mod+Shift+r
  • Exit i3: $mod+Shift+e

I3 configuration file is located in ~/.config/i3/config

Changes in order to use i3status bar configuration from home folder

mkdir ~/.config/i3status
sudo cp /etc/i3status.conf ~/.config/i3status/i3status.conf
sudo chown sitram:sitram ~/.config/i3status/i3status.conf

In order to change system wide theme and fonts, lxappearance is used.

Polybar instalation and configuration

yay -S polybar

ArchLinux - ZSH shell

Zsh (The Z shell) is an Unix shell that can be used as an interactive login shell and as a command interpreter for shell scripting. Zsh is an extended Bourne shell with many improvements, including some features from Bash, ksh, and tcsh.

Install the shell

sudo pacman -S zsh zsh-completions

Set Zsh as default shell and open again the terminal

chsh -s /usr/bin/zsh

Install oh my zsh using curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Chose a fancy theme like agnoster and install the fonts used by it

sudo pacman -S powerline-fonts

Edit ~/.zshrc file and change parameter ZSH_THEME="agnoster". Restart the terminal to load the new theme

Install Powerlevel10k theme and the required font

yay -S ttf-meslo-nerd-font-powerlevel10k zsh-theme-powerlevel10k-git

Edit ~/.zshrc file and add line source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme at the end

After terminal is restarted, the configuration for PowerLevel10k theme is started atuomatically. This can be triggered later on by running the following command:

p10k configure

Edit ~/.zshrc file and add the following plugins:

plugins=(git web-search history sudo)

ArchLinux - Downgrade packages

When using a rolling distro like Arch, sometimes things break when updating packages to newer version. When this happens there are several ways to perform a downgrade

ArchLinux - Using pacman cache

If a package was installed at an earlier stage, and the pacman cache was not cleaned, an earlier version from /var/cache/pacman/pkg/ can be installed.

This process will remove the current package and install the older version. Dependency changes will be handled, but pacman will not handle version conflicts. If a library or other package needs to be downgraded with the packages, please be aware that you will have to downgrade this package yourself as well.

pacman -U /var/cache/pacman/pkg/package-old_version.pkg.tar.zst

old_version could be something like x.y.z-x86_64 where the last part is the architecture for which the package is installed.

ArchLinux - Using Arch Linux archive

The Arch Linux Archive is a daily snapshot of the official repositories. It can be used to install a previous package version, or restore the system to an earlier date.

pacman -U https://archive.archlinux.org/packages/path/package-old_version.pkg.tar.zst

ArchLinux - Restore system to an earlier date

To restore all packages to their version at a specific date, let us say 30 March 2014, you have to direct pacman to this date, by replacing your /etc/pacman.d/mirrorlist with the following content:

#                                                                              
# Arch Linux repository mirrorlist                                             
# Generated on 2042-01-01                                                      
#
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch

Update the database and force downgrade:

pacman -Syyuu

If you get errors complaining about corrupted/invalid packages due to PGP signature, try to first update separately archlinux-keyring and ca-certificates.

ArchLinux - Connect Android To Arch Linux Via USB

Install Android studio

yay -S android-studio

Enable MTP(Media Transfer Protocol) support by installing

sudo pacman -S mtpfs

For devices running Android 4+, this should do the trick. However, on later versions, we would need another package called jmtpfs from AUR repository:

yay -S jmtpfs

At this point, we have MTP enabled. However, it would still not be visible in your File Manager as it is not auto-mounted as we desire. To auto mount it, we need to install a package with:

sudo pacman -S gvfs-mtp

PTP stands for “Picture Transfer Protocol” and infact is the protocol on which MTP is based. When you communicate with your Android phone via PTP, it appears as a digital camera to your PC.

sudo pacman -Sy gvfs-gphoto2

Finally, for the changes to take effect, reboot the system

sudo reboot now

ArchLinux - Rebuild AUR packages when python is upgraded

Whenever Python upgrades it's major version in core, Python packages installed from AUR might need to be rebuild.

To get a list of them, you can run:

pacman -Qoq /usr/lib/python3.xx

And to rebuild them all at once with an AUR helper such as yay, you can do:

yay -S $(pacman -Qoq /usr/lib/python3.xx) --answerclean All

If any of the packages don't work with Python 3.xx yet, this might fail halfway through and they might need to be rebuild manually one at a time.

ArchLinux - Brother printer & scanner

CUPS is the standards-based, open source printing system developed by OpenPrinting for Linux.

Install CUPS and start it automatically system-wide.

sudo pacman -S cups

sudo systemctl enable cups
sudo systemctl enable cups.socket
sudo systemctl start cups

For the HomeLab I chose Brother MFC-L2732DW monochrome laser printer with scanner and fax functionality. The reason I chose this printer is because Brother is a very reliable brand and it's quite cheap to refill the drum with tonner.

In order to use the printer, the driver needs to be installed. The AUR package for mfc-l2732dw model doesn't work and since the driver is the same as for mfc-l2730dw model, I chose to install this one.

sudo yay -S brother-mfc-l2730dw

Configure the printer in CUPS:

  • Open CUPS by searching for Manage printing in your desktop environment or going to http://localhost:631/
  • Open the tab Administration an press Add Printer button
  • Select the printer for which the drivers were installed for from Discovered Network Printers option
  • Configure the name and sharing settings
  • Select the name of the printer in Model list, and click Add Printer

Now the printer should be configured and it can be tested by printing a test page and some random text or image from web.

In order to use the scanner functionality of the device, the corresponding driver has to be installed. There are multiple brscan packages in AUR and for the model I chose, brscan4 contains the correct driver.

sudo yay -S brscan4

For network scanners, Brother provides a different configuration tool for each brscan version which has to be run with the name, model and the ip specific for the scanner

sudo brsaneconfig4 -a name="Scanner" model="MFC-L2732DW" ip=192.168.0.233

Brother has released a tool to enable scanning to be triggered by user interaction with the scanner itself (e.g., by selecting one of Scan to email, Scan to image, etc. on the scanner's keypad) rather than by an attached computer. This can be set up by installing the brscan-skey package and starting brscan-skey.service using systemd.

Brother supplies some default scripts that are executed when a scan type is selected on the keypad. For all options apart from "Scan to email" the resulting output can be found inside $HOME/brscan, with $HOME the home directory of the user running this tool (so /srv/brscan-skey if started via systemd as a systemwide process).

sudo yay -S brscan-skey

systemctl enable brscan-skey.service
systemctl start brscan-skey.service

SANE provides a library and a command-line tool to use the scanner functionality of the printer under Linux.

For a GUI frontend the following two options will be installed

  • Simple Scan — Simplified GUI that is intended to be easier to use and better integrated into the GNOME desktop than XSane.
  • XSane — Full-featured GTK-based frontend, looking a bit old but providing extended functionalities.
sudo pacman -S sane xsane xsane-gimp simple-scan