Pick the distro/software/desktop envrionment/programming language that needs the least amount of work to get it the way you like it.
Manjaro with i3wm and several addons that are oriented toward usability.
Manjaro is much easier to install compared to Arch, but still has newer packages than most other distros. It also has access to the AUR, which I miss every time I go to another distro.
The i3 desktop environment is minimal, and has all the keybinds and tools to be productive. It is too minimal though. User authentication does not work until you start polkit in the background, you have to bind keys to change screen brightness and volume, and you still have screen tearing
Look at .i3/config
if you want to see what I added.
Copy and paste this into a file here: /etc/X11/xorg.conf.d/50-mouse-acceleration.conf
Section "InputClass"
Identifier "My Mouse"
MatchIsPointer "yes"
Option "AccelerationProfile" "-1"
Option "AccelerationScheme" "none"
Option "AccelSpeed" "-1"
EndSection
Install ntp and do this sudo timedatectl set-ntp true
and sudo timedatectl set-timezone America/Indianapolis
(change the timezone as needed)
and check with timedatectl status
Look at the i3/config file and infer from that.
Autostart compton (install it first) with the flags -b --backend glx --paint-on-overlay --vsync opengl-swc
Change the GeometryWidth
and GeometryHeight
entries in .config/gtk-2.0/gtkfilechooser.ini
Install lxappearance and use it. (lightest option I found that works)
Make a file: /etc/X11/xorg.conf.d/30-touchpad.conf
Paste this in it:
Section "InputClass"
Identifier "devname"
Driver "libinput"
Option "Tapping" "on"
EndSection
find this section in /usr/share/X11/xorg.conf.d/10-evdev.conf
Section "InputClass"
Identifier "evdev touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
and change it to this
Section "InputClass"
Identifier "evdev touchscreen catchall"
MatchIsTouchscreen "on"
Driver "evdev"
Option "Ignore" "true"
EndSection
Add this to your .i3/config exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
Go to /etc/makepkg.conf
and change makeflags
to -j4
and C and CXX flags to -march=native
and -mtune=native
Disable services on startup. The fedora section has my personal list. My universal list is here:
- bluetooth.service
- ModemManager.service
- lvm2-monitor.service
also limit journal size by going here:
/etc/systemd/journald.conf
and changing theSystemMaxUse
value.
Change these settings in /etc/systemd/system.conf
DefaultTimeoutStartSec=10s
DefaultTimeoutStopSec=10s
To see the sceduler (for /dev/sda): cat /sys/block/sda/queue/scheduler
The bracketed option is the current scheduler.
To change the scheduler, use su
to get superuser status.
Then do: echo scheduler-name > /sys/block/sda/queue/scheduler
Add GRUB_CMDLINE_LINUX="scsi_mod.use_blk_mq=1"
to /etc/default/grub
and do sudo grub-mkconfig -o /boot/grub/grub.cfg
or sudo update-grub
or sudo grub2-mkconfig -o /boot/grub2/grub.cfg
.
Add a elevator=schedulername
entry to the GRUB_CMDLINE_LINUX_DEFAULT=
line.
Create udev rule in /etc/udev/rules.d/60-schedulers.rules
and paste in this in that file:
#### set scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
#### set scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*|nvme[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
See if fsck was run sudo tune2fs -l /dev/sda6 | grep Last\ c
List loaded services systemctl list-unit-files | grep enabled
Use systemctl disable service-name.service
Masking (stronger disable) sudo systemctl mask service-name.service
Enable: sudo systemctl enable service-name.service
Unmasking: sudo systemctl unmask service-name.service
OR
reinstall service/package or delete symlink /lib/systemd/system/service-name.service
Then run sudo systemctl daemon-reload
To check is symlink goes to /dev/null sudo file /lib/systemd/system/service-name.service
Display time to load each service systemd-analyze blame
Show last boot times and stats systemd-analyze
Plot service load times systemd-analyze plot > boot.svg
Show dependencies and delay relationships systemd-analyze critical-chain
Get rid of old kernels. dnf remove $(dnf repoquery --installonly --latest-limit 2 -q)
The number is the number of kernels that should be left.
OR
Set kernel limit in /etc/dnf/dnf.conf
as such installonly_limit=2
Install libvirt qemu-kvm and virt-manager
Start the libvirtd service and enable it.
Use virt-manager to make the machine.
Add intel_iommu=on
to GRUB_CMDLINE_LINUX
in /etc/default/grub
.
Update grub (fedora) grub2-mkconfig -o /boot/grub2/grub.cfg
Add a PCI device in virt-manager.
Go to the folder that you want to share on your guest and go to its properties and share it to everyone.
Then get the IP address of your Windows guest from control panel.
Then use smb://ip-of-guest/foldername
in your file manager on Linux to access that folder.
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf update
sudo dnf install broadcom-wl
sudo dnf install fedora-repos-rawhide
sudo dnf install --enablerepo rawhide
sudo dnf --enablerepo rawhide upgrade package-name
sudo dnf install fedora-workstation-repositories
sudo dnf config-manager --set-enabled google-chrome
sudo dnf install google-chrome-stable
Consider removing /var/log/journal
or renaming it.
Disable plymouth boot screen sudo dnf remove plymouth
Please note that not all these options were tested.
Services I disabled (I am not responsible for you FUBARing your system):
- dkms.servce
- ModemManager.service
- akms.service
- NetworkManager-wait-online.service
- lvm2-monitor.service
- fedora-readonly.service
- livesys-late.service
- livesys.service
Services you might not want to disable/mask (but I did anyway)
- firewalld.service (dynamic firewall)
- rtkit-daemon.service (not much benefit disabling)
- systemd-journal-flush.service
- gssproxy.service (security?, can be uninstalled)
- udisks2.service (external drive automounting)
- systemd-rfkill.service (disabling radios)
- systemd-modules-load.service (it was failing anyway)
- mlocate-updatedb.service (you can remove by removing mlocate package)
Stuff to remove from arch XFCE (pacman -Rs)
- orage
- parole
- mousepad (use geany instead)
- ristretto
- xfburn
Change makepkg flags (especially MAKEFLAGS) in /etc/makepkg.conf
Masked for boot:
- lvm2-monitor.service
Disabled for boot:
- ModemManager.service
- bluetooth.service