- Dell XPS 15 (9550)
- XPS 15 Service Manual
- Notes about installing a Debian Stretch on a Dell XPS 15
- Dell XPS 15 - ArchWiki
- Dell XPS 15 9550 - ArchWiki
- 2015-09-11 Ubuntu 15.10 on Dell XPS 15 9550
- 2016-01-13 Arch on XPS 15 (late 2015)
- 2016-05-16 Ubuntu 16.04 on Dell XPS 15 9550
- 2017-12-01 Installing Kali Linux on a Dell XPS 9550
- Xmonad interface using Alt as the mod key
- Note: Alt and super are swapped at a low level. So while the xmonad hotkeys here are listed as Alt and you press Alt to use them, the system is interpreting it as super and all configurations use super. To send "real" Alt, press super. This is configured in the remap binary.
- Hotkeys
- Open terminal: Alt+Shift+Enter hotkey in xmonad.hs
- App:
urxvt
- automatically installed, configuration .Xdefaults
- App:
- Open app launcher: Alt+P hotkey in xmonad.hs
- App:
rofi
- automatically installed, configuration config
- App:
- Lock screen: Alt+Shift+Z hotkey in xmonad.hs
- App:
slock
- ❌ setup required for auto-lock on sleep, default configuration
- App:
- Reload configs and restart xmonad: Alt+Q hotkey in xmonad.hs
- App:
xmonad
- automatically installed, configuration xmonad.hs
- App:
- Logout: Alt+Shift+Q hotkey in xmonad.hs
- App:
xmonad
- automatically installed, configuration xmonad.hs
- App:
- Save screenshot to
~/screenshots
: PrtScr hotkey in xmonad.hs- App:
scrot
- automatically installed, configuration xmonad.hs
- App:
- Save screenshot selection to
~/screenshots
: Shift+PrtScr hotkey in xmonad.hs- App:
scrot
- automatically installed, configuration xmonad.hs
- App:
- Sleep: Power button / Close lid / Ctrl+Shift+Alt+Z
xfce4-power-manager-settings
, hotkey in xmonad.hs andxfce4-power-manager-settings
- App:
systemd
(I think) - automatically installed, configured withxfce4-power-manager-settings
- App:
- Volume up/down: Volume keys hotkey in xmonad.hs
- App: bin/volume - automatically installed, configuration xmonad.hs
- Brightness up/down: Brightness keys hotkey in xmonad.hs
- App:
brightnessctl
- automatically installed, default config
- App:
- Open terminal: Alt+Shift+Enter hotkey in xmonad.hs
- Apps
- File manager:
ranger
- automatically installed, configuration rc.conf - File manager (gui):
nautilus
- automatically installed, default config - Configure wifi:
wifi-connect
- automatically installed, default config (uses nmcli and rofi) - Power management:
xfce4-power-manager
- ❌ setup required- launched at login with service file (see setup)
- configured with
xfce4-power-manager-settings
- handles notifications (low battery, plug and unplug)
- handles idle screen dimming
- handles suspend on low battery (10%)
- configures power button action
- Notifications:
dunst
- automatically installed, configuration dunstrc- launched at login with service file
- run
dunst-reload-config
to reload config and show some test messages
- Status bar:
pystatusbar
- automatically installed, configuration in pystatusbar repository is used (link)- launched at login via xmonad.hs
- TODO: improve pystatusbar to look for a default config somewhere, like
~/.config/pystatusbar/pystatusbar.config
, then add that config to this repository
- System tray:
trayer
- automatically installed, configured with paramaters in .xsessionrc- launched at login via .xsessionrc
- Desktop status panel:
conky
- automatically installed, configuration conky.log- launched via .xsessionrc
- Wallpaper:
feh
- automatically installed, configuration conky.log- launched via .xsessionrc
- Screen auto-darkening (night light):
redshift
- ❌ setup required, configuration redshift.conf- launched at login with service file (see setup)
- Backups:
duplicati
- ❌ setup required, default configuration- launched at boot with service file (see setup)
- Automatic folder sync:
syncthing
- ❌ setup required, default configuration- launched at login with service file (see setup)
- View logs:
lnav
- automatically installed, default config - OCR documents:
ocrmypdf
- automatically installed, default config
- File manager:
barrier
starts barrier to allow control from another computer's keyboard/mousebattery
shows battery statsbrightnessctl set +10%
orbrightnessctl set 10%-
to set brightnessclipboard
to handle terminal I/O (ls | clipboard
orclipboard > pasted.txt
)colortable
shows all terminal color text/background combinations and their codescolortable256
shows all 256 terminal colorspc
runs a python-compatible cli calculatorqrcode
to display text from the terminal as a qrcode (echo 'hello' | qrcode
)remap
applies keyboard remappings. sometimes needed after a wake from suspendsetup_external_monitor
to handle enabling/disabling of secondary monitorsshow_osd_message "message"
shows a message onscreen. Used for shortcut feedbackssht
to connect to ssh clients and auto-tmuxtime_shell_command
runs a shell command 1000 times and shows its average runtimevolume [set | increase | decrease] percent
orvolume toggle
to set volumedisplay-config
(orarandr
) to set up monitors with a gui- some more niche ones
desktop_log
outputs a list of system issues/things that need action. used by conkydwarf_fortress
to launch dwarf fortress with some basic command line optionsgame_on_bpc
to wake up my desktop and log in remotely via parsec once it is upwake_bpc
tells the router to send a WoL packet to my desktop. used by game_on_bpcparsec
starts parsecd correctly (killing it first if running). used by game_on_bpcparsec-browser
is the same as above, but also opens a browser to config if neededgarbage
shows files in home directory that I can probably deletegenerate-tray-padding
is used by xmobar to detect trayer sizehostname_colorized
generates a different colored name per-host. used in terminal PS1xmobar_battery.py
is used by xmobar to show battery infoxmobar_wireless.py
is used by xmobar to show wireless infoumount_cifs_lazy
will unmount a cifs mount regardless of its state (ie timed out)stay_awake
will prevent system sleep for a certain amount of time
(deprecated, now always running)start_syncthing
starts the syncthing user service(deprecated, switched to brightnessctl)brightness [set | increase | decrease] percent
to set backlight levels
-
If installing on a Dell XPS 9550, follow this first guide_xps9550_hardware_install_notes.md
-
Install Debian minimal system, install only "Standard System Utilities". Optionally select "Debian desktop environment" which will install Gnome 3 - this will result in a better lock screen (gnome) and a well-supported fallback WM.
-
Fix apt sources list
-
NOTE: This file will change for Debian 11. 'For APT source lines referencing the security archive, the format has changed slightly along with the release name, going from buster/updates to bullseye-security; see Section 5.1.3, “Changed security archive layout”' link
-
edit
/etc/apt/sources.list
and comment-out the "cdrom" line, you may also need to add more lines - for debian buster it should look like:
deb http://deb.debian.org/debian buster main contrib non-free deb-src http://deb.debian.org/debian buster main contrib non-free deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free deb-src http://deb.debian.org/debian-security/ buster/updates main contrib non-free deb http://deb.debian.org/debian buster-updates main contrib non-free deb-src http://deb.debian.org/debian buster-updates main contrib non-free
- now switch apt over to using HTTPS
sudo apt install git apt-transport-https sudo sed -i 's/http:/https:/g' /etc/apt/sources.list
-
-
Install base software
- WARNING: If migrating to Debian 11, see this first: TODO entry on Debian 11
sudo apt update # optional: copy ~/.ssh/id_rsa key from somewhere, or generate a new one with `ssh-keygen -t rsa -b 4096` # Install apps and link dotfiles. See install.sh for details. git clone [email protected]:g0tmk/dotfiles-linux.git ~/dotfiles cd ~/dotfiles git config user.name YOUR_USERNAME git config user.email YOUR_EMAIL # say yes to everything ./install.sh # reboot, make sure enerything looks OK # sensors-detect will probably tell you to add coretemp to /etc/modules - instead do this: # run this command, if you see output then coretemp is enabled already cat /proc/modules | grep coretemp # if you see no output, add coretemp to /etc/modules # optional; run this if some hardware does not work and reboot (I did not need it for debian 10 on xps9550) sudo apt install firmware-misc-nonfree # optional; if default apps are fine with you then skip this sudo update-alternatives --all
-
Health checks
- First need to check some common issues that - if they are present - we should fix early.
- Check suspend by running
systemctl suspend
. The system should go to S3 sleep if bios is configured correctly (power will apppear to turn off, all fans stop). - Check for extra interrupts - this made me reinstall my Debian 9 OS because I could not figure out what was wrong. After replacing it with Debian 10, the issue eventually became apparent.
-
Symptom #1: run
watch -n 1 sudo cat /proc/interrupts
to show counters for all interrupts - in my case, IRQ 16 was incrementing by about 15,000 per second. -
Symptom #2: high idle cpu clock speed. CPU usage still shows as low, but
powertop
frequency stats page shows all CPU cores stuck at full speed (3.5 GHz on my XPS 9550) when idle. After fixing the issue I see all cores 900-1000MHz at idle. -
Fix: Upgrade to a newer kernel using backports: (WARNING: while newer, using a kernel from backports is actually worse for security. Backports are not officially supported, so they will not receive security updates like stable packages.)
sudo -i echo "deb https://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list echo "deb-src https://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list apt update apt install -t buster-backports linux-image-amd64 linux-headers-amd64 exit sudo reboot # now run the above test again, verify the interrupt rate is normal (100 per sec roughly)
-
- Check suspend by running
- First need to check some common issues that - if they are present - we should fix early.
-
Install base software
sudo apt update && sudo apt install git # optional: copy ~/.ssh/id_rsa key from somewhere, or generate a new one with `ssh-keygen -t rsa -b 4096` # Install apps and link dotfiles. See install.sh for details. git clone git://github.com/g0tmk/dotfiles-linux.git ~/dotfiles cd ~/dotfiles git config user.name YOUR_USERNAME git config user.email YOUR_EMAIL # say yes to everything ./install.sh # reboot, make sure enerything looks OK # sensors-detect will probably tell you to add coretemp to /etc/modules - instead do this: # run this command, if you see output then coretemp is enabled already cat /proc/modules | grep coretemp # if you see no output, add coretemp to /etc/modules # optional; run this if some hardware does not work and reboot (I did NOT need it for debian 10 on xps9550) sudo apt install firmware-misc-nonfree # optional; if default apps are fine with you then skip this sudo update-alternatives --all
-
(Optional) If using Gnome 3 as a fallback window manager, change a few settings after booting into it. The majority of these settings will not be used when booting int xmonad, however, some will persist (for example - theme and autologin).
- click "super" key, un-favorite the unused apps on the left (help, rythmbox, etc)
- open "Tweaks" app -> Appearance -> Application Theme -> Adwaita-dark
- open "Tweaks" app -> Extensions -> Removeable drive menu -> On
- open "Tweaks" app -> Keyboard & Mouse -> Mouse Click Emulation -> Area
- open "Tweaks" app -> Top Bar -> Battery Percentage -> On
- open "Tweaks" app -> Top Bar -> Date -> On
- open settings -> privacy -> purge trash & temporary files -> automatically purge temporary files -> On
- open settings -> bluetooth -> Off (for now)
- open settings -> devices -> Keyboard -> add custom shortcut with command
x-terminal-emulator
and shortcut Ctrl+Alt+T - open settings -> devices -> removable media -> set all sections to "ask what to do"
- open settings -> devices -> mouse & touchpad -> tap to click -> on
- open settings -> devices -> displays -> Night Light -> On
- open settings -> details -> users -> automatic login -> On
- also, change these after installing default apps:
- open settings -> details -> default applications -> music -> mpv Media Player
- open settings -> details -> default applications -> video -> mpv Media Player
- open "Tweaks" app -> Fonts -> Interface Text -> Ubuntu Regular (size: 11)
- open "Tweaks" app -> Fonts -> Document Text -> Ubuntu Regular (size: 11)
- open "Tweaks" app -> Fonts -> Monospace Text -> Terminus Regular (size: 11)
- open "Tweaks" app -> Fonts -> Legacy Window Titles -> Ubuntu Medium (size: 11)
-
Xmonad
- reboot. in login screen, select "xmonad" as window manager and login (if using autologin in gnome, do a manual logout to get to the login screen)
- alt+shift+enter to open terminal
- if xmonad fails to start, you might need to run this (but try not to, it is worse than the built-in xorg driver)
sudo apt install xserver-xorg-video-intel
-
Wifi configuration
-
if using NetworkManager (default)
- run
wifi-connect
or run these steps to connect manually:
# list nearby wifi networks nmcli dev wifi list # connect, switch networks, etc (curses ui) nmtui # connect, switch networks, etc (cli) nmcli --ask dev wifi connect ssid-goes-here
- run
-
TODO: check out iwd - it looks closer to wicd-curses link
-
TODO: enable mac address randomization link
-
TODO: might need to do steps here to enable automatic configuration link
sudo apt install iwd sudo systemctl enable iwd # list nearby wifi networks station wlp2s0 scan station wlp2s0 get-networks # connect station wlp2s0 connect TestWPA2 # (optional, idk if this is needed) sudo dhclient wlan0
-
-
-
Set up service to run xfce4-power-manager (NOTE: while this would be better run as a system service, xfce4-power-manager appears to required an x-window session, so we run it as a user service. This is good reason to switch to something else... I'm not sure what will happen if the system runs out of battery at the login screen.)
-
create
~/.config/systemd/user/xfce4-power-manager.service
and fill it with the following contents (TODO: add this file to dotfiles):[Unit] Description=Xfce4 Power Manager Documentation=man:xfce4-power-manager(1) man:xfce4-power-manager-settings(1) [Service] Type=dbus BusName=org.xfce.PowerManager Restart=on-failure RestartSec=5 ExecStart=/usr/bin/xfce4-power-manager --no-daemon ExecStop=/usr/bin/xfce4-power-manager --quit [Install] WantedBy=default.target Alias=dbus-org.xfce.PowerManager.service
-
Run
systemctl --user daemon-reload
to reload service files -
Run
systemctl --user enable xfce4-power-manager
to enable xfce4-power-manager on boot -
Run
systemctl --user status xfce4-power-manager
to verify service file works and is running -
Run
sudo journalctl | egrep "xfce4" | less
to check the service logs -
Reboot and run
ps aux | grep xfce4-power-manager
to check if autostart is working
-
-
Set up screen lock on suspend
-
Create a new file
/etc/systemd/system/[email protected]
and fill it with the following:# source: https://unix.stackexchange.com/questions/81692/suspend-and-lock-screen-on-closing-lid-in-arch-systemd # # automatically run slock whenever computer sleeps # note: this file must be a system service since it waits on a system event (sleep.target) # [Unit] Description=Lock screen on sleep with slock Before=sleep.target [Service] User=%I Environment=DISPLAY=:0 ExecStart=/usr/bin/slock [Install] WantedBy=sleep.target
-
Enable the new service by running
systemctl enable screenlock@$USER
-
Reboot, wait 30 seconds, run
systemctl suspend
-
Laptop should have slept, and is now locked with
slock
-
If you have issues, check the output of
sudo systemctl status screenlock@$USER
for errors -
Bonus: run
cat /sys/power/mem_sleep
, verify you see "[deep]", indicating you are using the correct sleep mode
-
-
Set up screen lock on display sleep (NOT YET WORKING, maybe it doesn't call xflock4..?)
-
xfce4-power-manager does not know what locker to use, so symlink slock to a file that it does look for, xflock4
-
NOTE: the real xflock4 is provided by xfce4-session, so if you have that installed... this will probably cause issues
sudo ln -s /usr/bin/slock /usr/local/bin/xflock4
-
Wait 6 minutes (screen will blank at 5 minutes), then press any key
-
Laptop screen should wake and is now locked with
slock
-
-
Functionality tests
- Run
speaker-test
to generate white noise for the speakers. Verify sound + volume keys work.- If no sound - run
sudo alsactl init
- If still no sound - Run
alsamixer
, hit F6, select sound card (probably "HDA Intel PCH"), set all channels to 0dB, unmute channels if needed with 'm'. I left Master and Speaker enabled, all other channels muted.
- If no sound - run
- Test basic lock
- Press lock hotkey. Screen should blank, brightness should decrease to zero, and pressing any key should show system is locked (using
slock
which shows a blue or red screen)
- Press lock hotkey. Screen should blank, brightness should decrease to zero, and pressing any key should show system is locked (using
- Test basic sleep + lock
- run
systemctl suspend
- Laptop should have slept, and is now locked with
slock
- If screen did not lock then check
systemctl status screenlock.service
for errors. The service file at/etc/systemd/system/screenlock.service
may need to be modified.
- run
- Test lid sleep + lock
- Close lid. Wait 30 seconds. Open lid.
- Laptop should have slept, and is now locked with
slock
- Test idle lock
- Unplug the AC adapter
- Wait 6 minutes (note: screen will sleep at 5 minutes)
- Laptop should have slept, and is now locked with
slock
- Test auto-sleep + lock on idle
- Open
xfce4-power-manager-settings
- Set System -> System sleep mode -> on battery -> when inactive for: 16 minutes (the minimum)
- Close
xfce4-power-manager-settings
- Unplug the AC adapter
- Wait 16 minutes, system should sleep + lock (you can run
stopwatch
in a terminal to keep track) - Set System -> System sleep mode -> on battery -> when inactive for: 30 minutes
- Open
- Test low battery auto-sleep
- Open
xfce4-power-manager-settings
- Set System -> Critical battery power level -> 90 (the maximum)
- Close
xfce4-power-manager-settings
- Unplug the AC adapter
- Wait until battery is under 90%, system should sleep + lock (run
watch -n 15 sudo /home/$USER/bin/battery
for status) - Set System -> Critical battery power level -> 10
- Open
- Run
-
(Optional) Enable undervolting with secure boot enabled
- If using the XPS 9550, BIOS version 1.13.1 is the last that allows undervolting. The next ver (1.14.0) includes a fix for INTEL-SA-00289.
- Boot Windows, verify undervolting is possible with Intel XTU. If it isn't then go into BIOS, reset it to default settings, and try again.
- How to patch the MSR module to allow MSR writes from user space (Until kernel implements+exposes undervolting interface this will be necessary)
-
Download a copy of the kernel source code
sudo apt install dpkg-dev linux-source mkdir -p ~/Downloads/kernel_source cd ~/Downloads/kernel_source tar xavf /usr/src/linux-source-X.X.X.tar.xz mkdir modified_msr && cd modified_msr cp ../linux-source-5.10/arch/x86/kernel/msr.c .
-
Manually edit the MSR module source code to remove conditions that cause it to return an error
- err = security_locked_down(LOCKDOWN_MSR); - if (err) - return err; + //err = security_locked_down(LOCKDOWN_MSR); + //if (err) + // return err; - err = security_locked_down(LOCKDOWN_MSR); - if (err) - break; + //err = security_locked_down(LOCKDOWN_MSR); + //if (err) + // break;
-
Add the following to
~/Downloads/kernel_source/modified_msr/Makefile
:obj-m += msr.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
-
Build and load it:
cd ~/Downloads/kernel_source/modified_msr/ make # sign using MOK sign-msr-module # load it sudo rmmod msr && sudo insmod msr.ko
-
Try undervolting
# -80mv on all sudo python3 ~/repos/undervolt-georgewhewell/undervolt.py --gpu -40 --core -100 --cache -100 --uncore -40 --analogio -40; sudo python3 ~/repos/undervolt-georgewhewell/undervolt.py --read
-
-
Improve graphics performance (for intel embedded gpus)
sudo apt remove xserver-xorg-video-intel sudo apt install xserver-xorg-core reboot
-
Reverse touchpad scroll direction + enable tap-to-click
-
First, check if this is needed for you. Scroll with your touchpad and if the direction is fine (and you don't care about tapping), skip this section.
-
Run these commands to configure libinput:
sudo mkdir /etc/X11/xorg.conf.d sudo vi /etc/X11/xorg.conf.d/50-touchpad-custom.conf # add the following:
Section "InputClass" Identifier "libinput touchpad catchall" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Driver "libinput" Option "Tapping" "True" Option "TappingDrag" "True" Option "Natural Scrolling" "True" EndSection
- Reboot and check if it worked. (note: worked on debian 10/11) If not, try the following:
- Run
xinput --list
to see all input devices. On the xps9550 I saw two touchpads, "DLL06E4:01 06CB:7A13 Touchpad" and "SynPS/2 Synaptics TouchPad". I just ignored the synaptics one. - Run
xinput --list-props "<device name>"
, you should see many lines starting with "libinput". If they start with "Synaptics" instead, run this to switch to libinput:
sudo mkdir /etc/X11/xorg.conf.d # force libinput instead of synaptics by copying the default config to /etc # not sure why this is needed, but on the xps9550 it used synaptics occasionally sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf
- Reboot and check if scroll direction is fixed. If not, try method #2:
open `/usr/share/X11/xorg.conf.d/50-vmmouse.conf` add `Option "ButtonMapping" "1 2 3 5 4 6 7 8"` between `Section` and `EndSection`
-
-
Allow power commands without sudo password. Add to /etc/sudoers with
sudo visudo
:Cmnd_Alias POWERCMDS = /sbin/shutdown, /usr/sbin/shutdown, /sbin/reboot, /usr/sbin/reboot <your_username> ALL = NOPASSWD: POWERCMDS
-
Enable sensors (needed on debian 10 xps9550). First run
sensors
. If you see fan RPMs, skip this section.# verify dell kernel module is present: find /lib/modules/$(uname -r) -type f -name '*.ko' | grep dell-smm-hwmon # temporarily enable module; ignore_dmi because xps9550 is not a supported system (works anyways) sudo modprobe dell-smm-hwmon ignore_dmi=1 # verify module is running (you should see "dell_smm_hwmon: vendor=Dell Inc., ..." sudo dmesg | grep dell_smm_hwmon # verify new sensors are visible (you should see fan RPMs now) sudo sensors # make ignore_dmi=1 permanent: sudo bash -c "echo 'options dell-smm-hwmon ignore_dmi=1' >> /etc/modprobe.d/dell.conf" # configure module to load at boot: sudo bash -c "echo 'dell_smm_hwmon' >> /etc/modules-load.d/dell_smm_hwmon.conf" # tell lm_sensors to load the new module sudo mkdir -p /etc/lm_sensors/conf.d sudo bash -c "echo 'HWMON_MODULES=\"coretemp dell-smm-hwmon\"' >> /etc/lm_sensors/conf.d/dell" # probably a good idea to reboot and verify `sudo sensors` still shows fan RPMs # probably ALSO a good idea to run sensors-detect afterwards, not sure if it is necessary
-
Set grub for short (2 second) timeout and less blinding colorscheme
- Edit /etc/default/grub:
- change GRUB_TIMEOUT to 2
- Edit /boot/grub/custom.cfg and add the following lines:
# colors: https://help.ubuntu.com/community/Grub2/Displays#GRUB_2_Colors # normal foreground and background terminal colors set color_normal=light-gray/black # highlight foreground and background terminal colors set color_highlight=light-blue/black # the foreground and background colors to be used for non-highlighted menu entries set menu_color_normal=light-gray/black # the foreground and background colors to be used for the highlighted menu entry set menu_color_highlight=yellow/black
- Run
sudo update-grub
to commit changes
- Edit /etc/default/grub:
-
Quiet boot errors. Probably only useful on xps955 since it has such buggy bios firmware (AE_NOT_FOUND errors)
- Might want to run the system for a week or so before doing this so you have a chance to see intermittent errors.
- Note you can always run
journalctl -b -p warning
andjournalctl -b -p err
to check for issues - To quiet errors, edit
/etc/default/grub
and edit GRUB_CMDLINE_LINUX_DEFAULT and addloglevel=3
to the end. It will look similar to the following:
GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=3"
- Run
sudo update-grub
to commit changes
-
(Optional, skipped on Debian 10 install) Install Powertop to monitor/maximize battery life (laptop only) (check for latest version here)
sudo apt install libnl-3-dev libnl-genl-3-dev gettext libgettextpo-dev autopoint libncurses5-dev libncursesw5-dev libtool-bin dh-autoreconf autoconf-archive wget https://github.com/fenrus75/powertop/archive/refs/tags/v2.14.tar.gz tar xvf powertop-v2.12.tar.gz cd powertop-v2.12 ./autogen.sh ./configure make sudo make install # you can now run `sudo powertop`
-
(Optional, skipped on Debian 10/11 installs) Install tlp for decent power management (laptop only) from guide here
- Option 1: install from backports. This is the easiest way to get a fairly recent version - but see option 2 for xps9550.
sudo bash -c "echo 'deb https://deb.debian.org/debian stretch-backports main' >> /etc/apt/sources.list" sudo apt update sudo apt-get install -t stretch-backports tlp tlp-rdw sudo vi /etc/default/tlp sudo tlp start # make sure tlp is running sudo tlp-stat -s
- Option 2: install latest tarball from github. Necessary for XPS9550/60 since it has a BIOS bug that was worked-around in TLP 1.2 (<3 you linrunner) see here
# notes here https://linrunner.de/en/tlp/docs/tlp-faq.html#install-config # and more here https://linrunner.de/en/tlp/docs/tlp-developer-documentation.html sudo apt install smartmontools network-manager cd /tmp # check for the latest version first wget https://github.com/linrunner/TLP/archive/1.2.2.tar.gz tar xvf 1.2.2.tar.gz cd TLP-1.2.2/ # install (as root) sudo make install TLP_WITH_SYSTEMD=1 sudo make install-man sudo make install-man-rdw # Enable the services, i.e. (as root) sudo systemctl enable tlp.service sudo systemctl enable tlp-sleep.service sudo systemctl mask systemd-rfkill.service sudo systemctl mask systemd-rfkill.socket sudo tlp start # make sure tlp is running sudo tlp-stat -s
-
(Optional, skipped on Debian 10 install) Setup Thermald to help with thermals (Intel only, probably only useful on laptops)
# Check for the latest version in github releases first # Uses install instructions for ubuntu in README.txt in release: cd /tmp wget https://github.com/intel/thermal_daemon/archive/v1.8.tar.gz tar xvf v1.8.tar.gz cd thermal_daemon-1.8 sudo apt install autoconf g++ libglib2.0-dev libdbus-1-dev libdbus-glib-1-dev libxml2-dev ./autogen.sh ./configure prefix=/usr make sudo make install sudo systemctl enable --now thermald.service sudo systemctl status thermald.service
-
Install sublime text & sublime merge (from here)
# install using their apt source: echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - sudo apt update sudo apt install apt-transport-https sudo apt install sublime-text sublime-merge # you can now run `subl` and `smerge` # Manually set theme and color scheme (if dotfiles don't set them already) # - Theme: Soda Dark 3.sublime-theme # - Color Scheme: Material-Theme-Darker-Modified-g0tmk.tmTheme # Install plugins: # - Package Control # - A File Icon # - Color Highlight # - Markdown Preview # TODO: figure out how to include (or auto-install) my plugins list
-
Install syncthing from guide here
# Add the release PGP keys: sudo curl -s -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg # Add the "stable" channel to your APT sources: echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list # Increase preference of Syncthing's packages ("pinning") printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing # Update and install syncthing: sudo apt update sudo apt install syncthing # To configure as a systemd service mkdir -p ~/.config/systemd/user/ sudo cp /lib/systemd/system/[email protected] ~/.config/systemd/user/ sudo chown $USER:$USER ~/.config/systemd/user/[email protected] # IMPORTANT: edit the file, remove the `User=` line # IMPORTANT: edit the file, change "WantedBy=multi-user.target" to "WantedBy=default.target" sudo vi ~/.config/systemd/user/[email protected] systemctl --user daemon-reload systemctl --user enable "syncthing@$USER.service" systemctl --user start "syncthing@$USER.service" # if everything works, this should contain "Access the GUI via the following URL..." sudo journalctl | grep sync | tail -n 20
- Now, load interface at
http://localhost:8384/
- Use the web UI to delete the default folder at
~/Sync
- Open settings -> Default Configuration -> Edit Folder Defaults -> Folder Path:
/home/<YOUR_USERNAME>/Sync/
- Open settings -> GUI -> Use HTTPS For GUI -> Yes
- reboot and verify web UI is accessible. NOTE: run
start_syncthing
to manually start if needed - later, put a .stignore file at the root of each synced folder that contains
#include .stglobalignore
- (Optional / only if you have problems starting) May need to edit /lib/systemd/system/[email protected], add
-home=/home/g0tmk/.config/syncthing
to the exec line- note: it seems syncthing is using the correct config (
~/.config/syncthing
) without that change; will monitor this
- note: it seems syncthing is using the correct config (
- Now, load interface at
-
Install Duplicati (guide here)
-
Install mono (note: uses about 400 MB) - TODO: investigate installing the mono docker image instead
sudo apt install apt-transport-https dirmngr gnupg ca-certificates sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/debian stable-buster main" | sudo tee /etc/apt/sources.list.d/mono-official.list sudo apt update sudo apt install mono-devel
-
Install the actual app
# maybe optional sudo apt install apt-transport-https nano git-core software-properties-common dirmngr # check for latest version here https://www.duplicati.com/download cd ~/Downloads wget https://github.com/duplicati/duplicati/releases/download/v2.0.6.100-2.0.6.100_canary_2021-08-11/duplicati_2.0.6.100-1_all.deb sudo apt install ./duplicati_2.0.6.3-1_all.deb
-
Now create a service to start duplicati automatically
-
Edit
/etc/systemd/system/duplicati.service
and fill it with the following:[Unit] Description=Duplicati web-server After=network.target [Service] Nice=19 IOSchedulingClass=idle EnvironmentFile=-/etc/default/duplicati ExecStart=/usr/bin/duplicati-server $DAEMON_OPTS Restart=always [Install] WantedBy=multi-user.target
-
Edit
/etc/default/duplicati
and change DAEMON_OPTS, file should look like the following:# Defaults for duplicati initscript # sourced by /etc/init.d/duplicati # installed at /etc/default/duplicati by the maintainer scripts # Additional options that are passed to the Daemon. DAEMON_OPTS="--webservice-interface=127.0.0.1 --webservice-port=8200"
-
Enable the service and verify it is running by running these commands:
sudo systemctl daemon-reload sudo systemctl enable duplicati.service sudo systemctl start duplicati.service sudo systemctl status duplicati.service
-
Open web UI at http://localhost:8200
-
Reboot and verify web UI is still accessible
-
In web UI change some settings:
- Access to Interface -> Set a password
- Pause after startup or hibernation -> 30 seconds
- Display and color theme -> Dark theme
- Donation messages -> click to hide
- Usage statistics -> None/disabled
- NOTE: if you want to set a password, then you must also edit .xsessionrc and
modify the
duplicati
launch line to include a password, like this:duplicati --no-hosted-server --webserver-password=MYPASSWORD
- NOTE: if you want to set a password, then you must also edit .xsessionrc and
modify the
-
Note: when creating a new SFTP backup job w SFTP, make sure to click 'Test' button in the setup wizard. Otherwise it will fail due to unrecognised fingerprint.
-
-
-
Install virtualbox
-
Original guide here
-
Install via debian fasttrack
- Fasttrack install guide here
- Enable backports by adding this line to /etc/apt/sources.list:
deb http://deb.debian.org/debian buster-backports main
- Install fasttrack:
sudo apt update
sudo apt install fasttrack-archive-keyring
- Add the following lines to /etc/apt/sources.list:
deb https://fasttrack.debian.net/debian-fasttrack/ bullseye-fasttrack main contrib
deb https://fasttrack.debian.net/debian-fasttrack/ bullseye-backports-staging main contrib
sudo apt update
sudo apt install virtualbox virtualbox-ext-pack
sudo adduser $USER vboxusers
- Enable backports by adding this line to /etc/apt/sources.list:
- Fasttrack install guide here
-
If secure boot is enabled, the install log probably reported an issue loading vboxdrv. You'll have to self-generate a key, sign the modules yourself, then add the key to your BIOS "machine owner key" store. Here we go! (Module signing notes from guides here and here and here)
-
Generate a key. If you have one (ie from a previous OS install), use it instead.
sudo apt install mokutil sudo -i mkdir /root/module-signing cd /root/module-signing openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/" chmod 600 MOK.priv exit
-
Sign the modules. NOTE: this command must be run EVERY TIME the kernel is updated
# reboot into a new kernel before running this sign-virtualbox-modules # sometimes needs to be run: sudo modprobe vboxdrv sudo modprobe vboxnetflt
-
Register the new key in BIOS MOK store (do this once per machine). After this, reboot, and when it asks select "Enroll MOK" and enter the password. Choose something simple because it is temporary (you only need it the one time)
sudo mokutil --import /root/module-signing/MOK.der
-
After reboot verify the key was loaded with
sudo dmesg | grep 'certificate' | grep MOK
-
You can verify module is loaded with
sudo dmesg | grep vboxdrv
- If it isn't, you can load with
sudo modprobe vboxdrv
- If you get an error, you may need to sign (again) and reboot (again), i'm not sure why.
- If it isn't, you can load with
-
-
Run
virtualbox
to start it normally -
(Optional) Configure virtualbox to allow tiling WM hotkeys (see guides here and here
- in VirtualBox go to File->Preferences->"Input" -> "Auto Capture Keyboard" -> No
- View -> Status Bar -> Hide
- View -> Menu Bar -> Hide (show with Host+Home)
-
(Optional) (Note: this step does not work for me) If you want to load the kernel module on-demand, instead of starting automatically:
- Notes that may help with this:
- debian documentation
- arch kernel module notes
- virtualbox kernel module notes
- gentoo forums user that was able to blacklist vboxdrv
- run these commands to add modules to blacklist:
echo "blacklist vboxdrv" | sudo tee /etc/modprobe.d/vboxdrv.conf echo "blacklist vboxnetadp" | sudo tee /etc/modprobe.d/vboxnetadp.conf echo "blacklist vboxnetflt" | sudo tee /etc/modprobe.d/vboxnetflt.conf sudo depmod -a sudo update-initramfs -u
- (NOTE: for me this always shows vboxsf in initramfs for some reason) Check that vboxdrv is no longer in initramfs with this:
lsinitramfs /boot/initrd.img-5.10.0-0.bpo.7-amd64 | grep vbox
- Reboot and verify the module is not loaded with
sudo dmesg | grep vboxdrv
- Load the kernel module with
sudo modprobe vboxdrv
before using virtualbox. This could be done with a script in bin (it isnt yet).
-
-
Install redshift
-
If you installed the minimal app list, this is installed already, but it can't hurt to run.
sudo apt install redshift
-
Note: Since redshift fails to start if X is not running, add
RestartSec=5
to the[Service]
section of/usr/lib/systemd/user/redshift.service
. Systemd retries 5 times if it fails, so this workaround should be fine as long as X always starts within 25 seconds. TODO: switch to an equally hacky, but more reliable, solution like this -
Enable the user service (TODO: the service file could be added to the dotfiles repo; need to research what happens when there are multiple service files with the same name)
systemctl --user enable redshift systemctl --user start redshift systemctl --user status redshift
-
Now, redshift should automatically adjust the display (at night only, with the current config).
-
Run
togred
ortoggle-redshift
to toggle the adjustments on or off.- TODO: It would be nice if the togred script printed whether it was enabling or disabling the effects, so for example you could tell if it was enabled or disabled during the day. As far as I can tell, the only way to tell (without a code change) is running redshift in verbose mode with
-v
and checking stdout of the binary started by the service. Print them withsudo journalctl | egrep "redshift.+Status" | tail
.
- TODO: It would be nice if the togred script printed whether it was enabling or disabling the effects, so for example you could tell if it was enabled or disabled during the day. As far as I can tell, the only way to tell (without a code change) is running redshift in verbose mode with
-
-
Install firefox stable (from here)
- If a desktop environment is installed already, you might have the best version of firefox. Check if firefox-esr and firefox are installed already. If they are, skip the rest of this section.
sudo apt show firefox-esr sudo apt show firefox
- If you want the debian-packaged version of firefox (possibly older but stable and
secure) then all you need to run is
sudo apt install firefox-esr
, and skip the rest of this section. - If you want the latest firefox, then you can install the latest version like this:
# first remove any debian-packaged versions sudo apt remove firefox firefox-esr # download firefox from website and extract to a directory in home: # TODO: this doesn't work but should: wget https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=en-US wget https://download-installer.cdn.mozilla.net/pub/firefox/releases/66.0.5/linux-x86_64/en-US/firefox-66.0.5.tar.bz2 mkdir ~/bin ~/.mozilla tar -xf ./firefox* -C ~/.mozilla ln -s ~/.mozilla/firefox/firefox ~/bin/firefox sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser ~/bin/firefox 200 # you can now run `firefox` # (optional, modern firefox has a dark mode that is good enough) # to install shadowfox, download the latest from here https://overdodactyl.github.io/ShadowFox/# # make sure you set firefox theme to 'Dark' first wget https://github.com/SrKomodo/shadowfox-updater/releases/download/v1.7.19/shadowfox_linux_x64 chmod+x shadowfox_linux_x64 ./shadowfox_linux_x64
-
Configure firefox
- Settings -> General -> Ctrl+Tab cycles through tabs in recently used order -> No
- Settings -> Home -> Homepage -> set to open "Firefox Home"
- Settings -> Home -> New tabs -> set to open "Firefox Home"
- Settings -> Home -> Firefox Home Content -> Top Sites -> Off
- Settings -> Home -> Firefox Home Content -> Recommended by Pocket -> Off
- Settings -> Home -> Firefox Home Content -> Highlights -> Off
- Settings -> Home -> Firefox Home Content -> Snippets -> Off
- Settings -> Search -> Default search engine -> DuckDuckGo
- Settings -> Search -> One-Click Search Engines -> Bing -> Off
- Settings -> Search -> One-Click Search Engines -> DuckDuckGo -> Off
- Settings -> Search -> One-Click Search Engines -> Google -> Off
- Settings -> Search -> One-Click Search Engines -> Wikipedia -> Off
- Settings -> Privacy & Security -> Enhanced Tracking Protection -> Custom -> Cookies -> block All third-party cookies
- Settings -> Privacy & Security -> Enhanced Tracking Protection -> Custom -> Tracking Content -> block in all windows
- Settings -> Privacy & Security -> Enhanced Tracking Protection -> Custom -> Crypto miners -> check
- Settings -> Privacy & Security -> Enhanced Tracking Protection -> Custom -> Fingerprinters -> check
- Settings -> Privacy & Security -> Send websites "Do Not Track" -> Always (TODO: might be better to turn this off, since fingerprinters are just using this as a single bit of personal data)
- Settings -> Privacy & Security -> Logins and passwords -> Ask to save logins and passwords for websites -> No
- Settings -> Privacy & Security -> Logins and passwords -> Show alerts about passwords for breached websites -> No
- Settings -> Privacy & Security -> Forms and autofill -> Autofill addresses -> No
- Settings -> Privacy & Security -> Address Bar -> Top Sites -> No
- Settings -> Privacy & Security -> Permissions -> Notifications -> Block new requests asking to allow notifications -> Yes
- Settings -> Privacy & Security -> Firefox collection and use -> uncheck all
- Settings -> Extensions & Themes -> Themes -> "Complete Black Theme for Firefox"
- Settings -> Privacy & Security -> Permissions -> Prevent accessibility services from accessing your browser -> Yes (note: must restart firefox after changing this one)
- Right-click buttons on top bar -> Customize -> make the following changes:
- remove home button
- remove sidebar button
- remove firefox account button
- move most extensions to overflow menu
- remove flexible spaces on the sides of the url bar
- select Density -> Compact
- Disable Pocket:
- enter
about:config
into the URL bar - search for
extensions.pocket.enabled
- set its value to
false
- enter
- Disable Outlook's ability to ask every time to be a mailto: handler
- enter
about:config
into the URL bar - search for
network.protocol-handler.external.mailto
- set its value to
false
- enter
-
Install extensions
- uBlock Origin
- Dark Reader
- Custom Scrollbars
- Scrollbar width: thin
- Scrollbar thumb color: #807e7eff
- Scrollbar track color: #282828ff
- Tree Style tabs
- Preferences -> Appearance -> Enable animation effects -> no
- Preferences -> Appearance -> Theme -> Proton: yes
- Preferences -> Advanced -> Extra style rules for contents: fill with the contents of tree_style_tabs_style.css # TODO: move this file to a better place
- To disable top tab bar:
- Click menu, help, more troubleshooting information, then next to "Profile Directory" click "Open"
-
Create file chrome/userChrome.css and add these contents:
#TabsToolbar { visibility: collapse !important; }
-
Open
about:config
and set "toolkit.legacyUserProfileCustomizations.stylesheets" to "True" -
restart firefox
-
- Click menu, help, more troubleshooting information, then next to "Profile Directory" click "Open"
- Auto Tab Discard
- Open extension Preferences and configure:
- Discard inactive tabs after: 20 minutes
- Discard all unpinned tabs on a browser or extension startup: yes
- Do not discard tabs if there is no internet connection and tab is not cached: yes
- Store YouTube's timestamp before discarding: yes
- Open extension Preferences and configure:
- TST Indent Line
- Decentraleyes
- Single File
- Preferences -> User interface -> add entry in the context menu of the webpage: No
-
Install insect (CLI scientific calculator with unit support)
# set up a prefix directory and to allow calling npm install as a user mkdir "${HOME}/.npm-packages" npm config set prefix "${HOME}/.npm-packages" # install it npm install -g insect # run it insect
-
Install barrier (instructions from here)
sudo apt install flatpak flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak install --user flathub com.github.debauchee.barrier barrier
-
In GUI:
- Barrier > Change Settings > Set Screen Name
- Barrier > Change Settings > Check "Minimize to System Tray"
- Barrier > Change Settings > Check "Hide on Startup"
- Barrier > Change Settings > Port: 25827
- Barrier > Change Settings > Check "Enable SSL"
- In main window, Client section, Check "Client" mode
- In main window, Client section, type Server IP
- Barrier > Save Configuration
-
For some reason, barrier hangs for me when I run "Save Configuration", so if that happens run
sudo killall barrier
here. Otherwise just close it normally. -
Add server IP to config manually because it doesn't stick when set in GUI:
vi ~/.var/app/com.github.debauchee.barrier/config/Debauchee/Barrier.conf
- Add IP of server after "serverHostname="
- Save and exit
-
Run
barrier
again - this time, the window will not appear but it should immediately connect to the server and the icon will show up in the taskbar. -
NOTE: if server errors out with this message in the log:
ERROR: ssl certificate doesn't exist: /home/user/.var/app/...
then run the following to generate a key, assuming the server is linux:mkdir -p ~/.var/app/com.github.debauchee.barrier/data/barrier/SSL/Fingerprints openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout ~/.var/app/com.github.debauchee.barrier/data/barrier/SSL/Barrier.pem -out ~/.var/app/com.github.debauchee.barrier/data/barrier/SSL/Barrier.pem openssl x509 -fingerprint -sha1 -noout -in ~/.var/app/com.github.debauchee.barrier/data/barrier/SSL/Barrier.pem > ~/.var/app/com.github.debauchee.barrier/data/barrier/SSL/Fingerprints/Local.txt
-
-
Install discord
# Download latest deb from https://discordapp.com/download cd ~/Downloads wget -O discord.deb "https://discord.com/api/download?platform=linux&format=deb" sudo apt install ./discord.deb # you can now run `discord`
- If installing the .deb fails because of a missing dependency (libappindicator) do this to fix it:
dpkg-deb -R discord-0.0.16.deb /tmp/discord-deb && sed -i 's/libappindicator1/libayatana-appindicator1/g' /tmp/discord-deb/DEBIAN/control && dpkg-deb -b /tmp/discord-deb discord-fixed.deb
-
Install Parsec
# Download latest 'parsec for ubuntu' from parsecs site # NOTE: it segfaulted the first (and maybe second) time I ran it - eventually it became stable /shrug sudo dpkg -i parsec-linux.deb # you can now run `parsec` (a launcher in ~/bin/)
-
Setup dwarf fortress
# Install requirements (listed here http://dwarffortresswiki.org/index.php/DF2014:Installation) sudo dpkg --add-architecture i386 sudo apt install libgtk2.0-0 libsdl1.2debian libsdl-image1.2 libglu1-mesa libopenal1 libsdl-ttf2.0-0 # Download latest version from [here](http://www.bay12games.com/dwarves/) wget http://www.bay12games.com/dwarves/df_44_12_linux.tar.bz2 tar xf df_* # you can now run `dwarf_fortress --large` (a launcher in ~/bin/) # TODO: include tilesets in repo # TODO: symlink df_linux/data/saves into syncthing # TODO: include instructions for adding dfhack (download latest version, extract over df_linux)
-
Setup Franz (messenger)
- Download .deb from here
sudo dpkg -i file.deb
- you can now run
franz
-
Setup
Dell Command | Configure
(Dell hardware only)- This allows for control over some BIOS settings from the OS, ie keyboard backlight timeout.
- Check for latest version here
cd /tmp wget https://downloads.dell.com/FOLDER05519670M/1/command-configure_4.2.0-553.ubuntu16_amd64.tar.gz tar xvf command-configure_4.2.0-553.ubuntu16_amd64.tar.gz sudo dpkg -i srvadmin-hapi_9.3.0_amd64.deb sudo dpkg -i command-configure_4.2.0-553.ubuntu16_amd64.deb # NOTE: the cctk application only works after a fresh boot, not wake-from-sleep. If # you get a "Error communicating with BIOS..." error, reboot and try again. sudo /opt/dell/dcc/cctk # configure some settings (customize to your preferences) # set battery to sit between 50-70% sudo /opt/dell/dcc/cctk --PrimaryBattChargeCfg=Custom:50-70 sudo /opt/dell/dcc/cctk --Camera=Disabled # charge up battery if you want 100% capacity for something sudo /opt/dell/dcc/cctk --PrimaryBattChargeCfg=Express # how to remove: sudo apt remove command-configure srvadmin-hapi
- Options which work on the xps9550:
--AdvBatteryChargeCfg --Camera [Enabled,Disabled] --Microphone [Enabled,Disabled] --PrimaryBattChargeCfg [Standard, Express, PrimAcUse, Adaptive, Custom:<percent>-<percent>] Default: Adaptive
-
Install OpenVPN client and configure a VPN
# For proXPN, Download config files from http://www.proxpn.com/updater/locations.html # check connectivity to server first, if desired nc -vu <public_ip_address> 443 sudo apt install openvpn sudo cp myconfigfile.ovpn /etc/openvpn/client/ sudo chmod go-rwx /etc/openvpn/client/myconfigfile.ovpn sudo openvpn --client --config /etc/openvpn/client/myconfigfile.ovpn # should output a lot of text ending with "Initialization Sequence Completed" # test connectivity by pinging the VPN server's gateway IP ping 10.8.0.1 # verify route through VPN server exists (something like "10.8.0.1 dev tun0") # "default via IP_ADDRESS" tells you where your "default" (aka internet) traffic is going ip route # If using this VPN for privacy, verify this outputs the public IP of the VPN server sudo apt install dnsutils dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
-
Install OpenVPN client and configure a VPN (for example, NordVPN)
# For NordVPN: cd ~/Downloads wget https://downloads.nordcdn.com/configs/archives/servers/ovpn.zip unzip ovpn.zip rm ovpn.zip # check connectivity to server first, if desired nc -vu <public_ip_address> 443 sudo apt install openvpn sudo cp ovpn_udp/us9494.nordvpn.com.udp.ovpn /etc/openvpn/client/nordvpn_us9494.ovpn sudo chmod go-rwx /etc/openvpn/client/nordvpn_us9494.ovpn sudo openvpn --client --config /etc/openvpn/client/nordvpn_us9494.ovpn # should output a lot of text ending with "Initialization Sequence Completed" # test connectivity by pinging the VPN server's gateway IP ping 10.8.0.1 # verify route through VPN server exists (something like "10.8.0.1 dev tun0") # "default via IP_ADDRESS" tells you where your "default" (aka internet) traffic is going ip route # If using this VPN for privacy, verify this outputs the public IP of the VPN server sudo apt install dnsutils dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
-
Install PyCharm + CLion
- Download the latest version of JetBrains Toolbox from here.
tar xvf jetbrains-toolbox-1.15.5387.tar.gz cd jetbrains-toolbox-1.15.5387 ./jetbrains-toolbox # Click icon in the top-right and log in (if you care about syncing the IDEs settings) # Scroll down to "PyCharm Community" and click Install. # (Optional) you can install other jetbrains software (like CLion or IntelliJ) at this time # Run this command in a terminal when install is complete (this command is aliased because pycharm needs a fake wmname) pycharm # or to run CLion: clion # TODO: add instructions for configuring 'File->Settings Repository'
-
Install kaitai struct lib
# Import GPG key, if you never used any BinTray repos before sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv 379CE192D401AB61 # Add stable repository echo "deb https://dl.bintray.com/kaitai-io/debian jessie main" | sudo tee /etc/apt/sources.list.d/kaitai.list # ... or unstable repository echo "deb https://dl.bintray.com/kaitai-io/debian_unstable jessie main" | sudo tee /etc/apt/sources.list.d/kaitai.list sudo apt-get update sudo apt-get install kaitai-struct-compiler
Install kaitai struct visualizer
sudo gem install kaitai-struct-visualizer
Install pip module
sudo pip3 install kaitaistruct
-
Intall miktex
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D6BC243565B2087BC3F897C9277A7293F59E4889 echo "deb http://miktex.org/download/debian stretch universe" | sudo tee /etc/apt/sources.list.d/miktex.list sudo apt-get update sudo apt-get install miktex miktexsetup finish initexmf --set-config-value "[MPM]AutoInstall=1" texworks
-
Install RetroArch (game emulator)
- NOTE: Pretty buggy, but that may be because I run a tiling WM.
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak install --user flathub org.libretro.RetroArch # how to update: flatpak update --user org.libretro.RetroArch flatpak run org.libretro.RetroArch
-
Install blueman (for xbox one controller via bluetooth - work-in-progress)
sudo apt install bluetooth blueman # now, re-start the system (or at least the X server) sudo systemctl start bluetooth sudo systemctl status bluetooth sudo systemctl enable bluetooth # for xbox one controllers: echo 1 > /sys/module/bluetooth/parameters/disable_ertm # if the service started OK, then there is no need to add `btusb` kernel module. Otherwise run these:
- Add
btusb
to /etc/modules - Reboot or run
sudo modprobe btusb
# pair a controller: blueman-manager
# add drivers for xbox one controller (maybe optional, needs testing) # see https://github.com/paroj/xpad
- see here for more info ie how to control kbd/mouse with controller and how to calibrate
- Add
-
Pair a bluetooth headset:
sudo apt install pulseaudio pulseaudio-module-bluetooth pavucontrol bluez-firmware sudo service bluetooth restart killall pulseaudio # pair + trust the device in this gui blueman-manager # configure output to the headphones in this gui - also enable "A2DP" here pavucontrol # TODO: make volume hotkeys adjust bluetooth audio also
-
Install Xbox One S controller support over bluetooth xpadneo
# install dependencies sudo apt-get install dkms linux-headers-`uname -r` # install xpadneo git clone https://github.com/atar-axis/xpadneo.git cd xpadneo # read it first :) sudo ./install.sh # connect a controller sudo modprobe btusb sudo bluetoothctl scan on # push scan button on the top of the controller # wait for controller to appear (9C:AA:1B:22:E5:62 for me) pair 9C:AA:1B:22:E5:62 trust 9C:AA:1B:22:E5:62 connect 9C:AA:1B:22:E5:62 # wait for the rumble - done!
-
Install find alternative
fd
sudo apt install fd-find ln -s $(which fdfind) ~/.local/bin/fd
-
Install ImageMagick 7.0.8+ from source
# install openjp2 lib for jpeg2000 support sudo apt install libopenjp2-7-dev cd /tmp wget https://imagemagick.org/download/ImageMagick.tar.gz tar xvf ImageMagick.tar.gz cd ImageMagick-* # verify the output of this "configure" command contains this: # DELEGATES = ... openjp2 ... ./configure make sudo make install # run the following command if you get "error while loading shared libraries" errors sudo ldconfig /usr/local/lib # check the version is correct: convert --version
-
Install factorio
# download latest version from https://factorio.com/download tar xvf factorio_alpha_x64_0.17.66.tar.xz mkdir ~/programs mv factorio ~/programs/factorio # if syncthing is setup, link the saves folder there: mkdir -p ~/Sync/misc/backups/saves/factorio/BXPSd-link rmdir ~/programs/factorio/saves ln -s ~/Sync/misc/backups/saves/factorio/BXPSd-link ~/programs/factorio/saves factorio # uses launcher in ~/bin
-
Install ClickUp
# download latest desktop app for linux here https://clickup.com/apps unzip ~/Downloads/clickup-desktop-2.0.8-linux.zip ~/Downloads/clickup-desktop-2.0.8-x86_64.AppImage --no-sandbox # NOTE: see here for info on how to get it to run in-sandbox: # https://github.com/standardnotes/forum/issues/690#issuecomment-531802728
-
Install Minecraft
# download latest deb from minecraft.net and install it sudo dpkg -i minecraft-latest.deb minecraft-launcher # if launcher fails with error "Couldn't load launcher core from /home/g0tmk/.minecraft/launcher/liblauncher.so: LoadErrorNotPresent" # then download latest libstdc++ (i did the one for buster) cd /tmp wget http://ftp.us.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.3.0-6_amd64.deb ar x libstdc++6_8.3.0-6_amd64.deb tar xvf data.tar.xz cp usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~/.minecraft/launcher/ minecraft-launcher
-
Install and run Ledger Live
# TODO: make a launcher for this # download latest appimage from the website, then run it like this sudo ./ledger-live-desktop-2.31.1-linux-x86_64.AppImage --no-sandbox -v # you may need to run these udev rules to allow USB device access wget -q -O - https://raw.githubusercontent.com/LedgerHQ/udev-rules/master/add_udev_rules.sh > add_udev_rules.sh # NOTE: probably a good idea to inspect before running cat add_udev_rules.sh | sudo bash # if launching ledger live via browser does not work (which it likely will not, if running as an appimage) then open the websocket server manually by running this, after ledger live is already running: sudo ./ledger-live-desktop-2.31.1-linux-x86_64.AppImage --no-sandbox "ledgerlive://bridge?appName=Ethereum"
-
Install pptp client to connect to pptp VPNs
# assumes new name: my_tunnel # assumes server url: vpn.example.com # assumes username: alice # assumes password: foo # assumes vpn network: 192.168.10.0/24 sudo apt install pptp-linux sudo pptpsetup --create my_tunnel --server vpn.example.com --username alice --password foo --encrypt # test the new connection - it will not exit. If there are no errors, great! To # fully test, you will also need to run the route command that follows. If there # are errors connecing, you may need to add "refuse-eap" to the top of /etc/ppp/options sudo pon my_tunnel debug dump logfd 2 nodetach # Option 1: If you want to route traffic only to devices on vpn network (not # internet traffic) then add this route (change the network's subnet info to match) sudo ip route add 192.168.10.0/24 dev ppp0 # Option 2: Route all traffic over VPN sudo ip route add default dev ppp0 # start the connection normally sudo pon my_tunnel # later, if you want to delete the connection: sudo pptpsetup --delete my_tunnel
-
Install NTP (DEPRECATED: not necessary on debian 10+)
- run
sudo apt-get install ntp
- add these lines to /etc/ntp.conf (and remove the generic ones)
server 0.north-america.pool.ntp.org server 1.north-america.pool.ntp.org server 2.north-america.pool.ntp.org server 3.north-america.pool.ntp.org
- run
-
(INCOMPLETE) (Optional) Install and configure
bumblebee
to allow using nvidia GPU on-demand (saving power when it is not in use). NOTE: If you won't use the GPU and only want the power savings, this may not be necessary; Debian 10 w backports kernel (5.10.0) appears to leave the nvidia GPU off by default. TODO: figure out how to verify this is the case.sudo dpkg --add-architecture i386
sudo apt-get update
- NOTE: when you run the next command, it will ask you at some point if you want to create a xorg.conf file. Do NOT let the installer run nvidia-xconfig, it will break things.
sudo apt-get install bumblebee-nvidia primus primus-libs:i386
sudo adduser $USER bumblebee
- NOTE: at this point,
sudo optirun nvidia-smi
did not work (prints error "Cannot access secondary GPU - Failed to open DRM device for pci:..."), site here "Bumblebee-Project/Bumblebee#749" mentions that bumblebee is incompatible with xserver-xorg-legacy.. steps taken:sudo apt remove xserver-xorg-legacy
and reboot: not fixedsudo apt install nvidia-driver
and reboot: not fixed- add dummy screen to /etc/bumblebee/xorg.conf.nvidia via (https://bbs.archlinux.org/viewtopic.php?id=185894) and reboot: no change
- in
/etc/bumblebee/bumblebee.conf
, changeDriver=
toDriver=nvidia
, reboot: not fixed - add nouveau.modeset=0 to GRUB cmdline
- Several months later, I went back to fixing this issue, and it randomly worked without me changing anything that I know of. Steps taken:
- in
/etc/bumblebee/bumblebee.conf
, changeDriver=
toDriver=nvidia
and reboot. optirun nvidia-smi
Works! Why...- Currently running services:
systemctl status bumblebeed
-> active (running)
- Currently installed apt applications:
- bumblebee-nvidia version 3.2.1-14
- primus version 0~20150328-4
- primus-libs:i386 version 0~20150328-4
- xserver-xorg-legacy version 2:1.19.2-1+deb9u
- nvidia-driver version 390.116-1
- Current configs:
-
/etc/bumblebee/xorg.conf does not exist
-
contents of /etc/bumblebee/xorg.conf.nvidia:
Section "ServerLayout" Identifier "Layout0" Option "AutoAddDevices" "false" Option "AutoAddGPU" "false" EndSection Section "Device" Identifier "DiscreteNvidia" Driver "nvidia" VendorName "NVIDIA Corporation" # If the X server does not automatically detect your VGA device, # you can manually set it here. # To get the BusID prop, run `lspci | egrep 'VGA|3D'` and input the data # as you see in the commented example. # This Setting may be needed in some platforms with more than one # nvidia card, which may confuse the proprietary driver (e.g., # trying to take ownership of the wrong device). Also needed on Ubuntu 13.04. # BusID "PCI:01:00:0" # Setting ProbeAllGpus to false prevents the new proprietary driver # instance spawned to try to control the integrated graphics card, # which is already being managed outside bumblebee. # This option doesn't hurt and it is required on platforms running # more than one nvidia graphics card with the proprietary driver. # (E.g. Macbook Pro pre-2010 with nVidia 9400M + 9600M GT). # If this option is not set, the new Xorg may blacken the screen and # render it unusable (unless you have some way to run killall Xorg). Option "ProbeAllGpus" "false" Option "NoLogo" "true" Option "UseEDID" "false" Option "UseDisplayDevice" "none" EndSection Section "Screen" Identifier "Default Screen" Device "DiscreteNvidia" EndSection
-
- Currently running services:
- in
-
(Optional, skipped on Debian 10 install and commented-out of .xsessionrc) Install a compositor (picom, yshui's compton fork github)
- NOTE: This branch of compton is much newer, and actually maintained, but may have
bugs. If you are not interested in helping develop compton, simply run
sudo apt install compton
to get the (4+yr old) mainstream version. If you use the mainstream version you will likely need to modify .xsessionrc. Another option is to install a recent release from yshui's github (v6.2 when this was written). - NOTE: during the "ninja -C build" step, I got an error like "FAILED: needed xcb-render ['>=1.12.0'] found 1.12" To fix, edit src/meson.build and change this: "'>=1.12.0'" with this: "'>=1.12'"
# from guide in README.md sudo apt install meson ninja-build libx11-dev libx11-xcb-dev libxext-dev x11proto-core-dev xcb libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libxdg-basedir-dev libpcre2-dev libev-dev uthash-dev cd ~/repos git clone https://github.com/yshui/picom.git cd picom git submodule update --init --recursive meson --buildtype=release . build ninja -C build sudo ninja -C build install
- NOTE: This branch of compton is much newer, and actually maintained, but may have
bugs. If you are not interested in helping develop compton, simply run
-
How to build xmobar (info only; xmobar version in apt should be fine)
sudo aptitude install cabal-install sudo aptitude install libxpm-dev libasound2-dev libghc-libxml-sax-dev c2hs libiw-dev cabal update cabal install xmobar --flags="all_extensions"
-
Firmware update manager [not working yet]
-
Note this requires "Firmware capsule updates" enabled in BIOS. If you dual boot Windows, then know this allows Windows to update BIOS when it feels like it.
sudo apt install fwupd # show candidate devices fwupdmgr get-devices # pull latest metadata from lvfs fwupdmgr refresh >>> Failed to download sudo apt remove fwupd # need to try latest version (https://github.com/hughsie/fwupd)
-
-
Install Steam (NOT TESTED)
sudo usermod -a -G video,audio $USER sudo dpkg --add-architecture i386 sudo apt update sudo apt install steam steam
-
Install Chrome (NOT TESTED)
-
How to install stable (I picked this one):
- Install with
sudo apt install google-chrome-stable
- Open chrome, sign in
- Go to "Extensions" click "details" on one of the extensions
- if chrome doesn't freeze, congrats! you're done. otherwise go to 5
- re-open chrome, use mod+right-click to resize chrome to 25% the size of the screen
- repeat steps 3-4, chrome shouldn't freeze this time (instead a tiny window will pop up)
- Install with
-
How to install latest:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb sudo apt-get -f install
-
-
Install evmlab (NOT YET WORKING)
sudo apt install python3 python3-pip python3 -m pip install evmlab[consolegui,abidecoder,docker] python3 -m evmlab opviewer --hash 0xETHTXHASH
-
Install Rollercoaster Tycoon (NOT YET WORKING)
# NOTE: these instructions are not fully correct - needed debian 10+ to complete, and I was on 9 sudo mkdir /mnt/rc2_cd sudo mount RC2.iso /mnt/rc2_cd -o loop sudo apt install unshield mkdir ~/programs/rc2 INSTALLDIR=/mnt/rc2_cd EXTRACTDIR=~/programs/rc2 unshield -g Minimum -d "$EXTRACTDIR" x "$INSTALLDIR/data1.hdr" cp -R "$INSTALLDIR/Data/" "$EXTRACTDIR/Minimum/Data" mv "$EXTRACTDIR/Minimum" "$EXTRACTDIR/RCT2" sudo umount /mnt/rc2_cd # clone and build openrc2 - if you were on ubuntu, you could just use the ppa... # AppImage file provided on the website appeared to require debian 10 only libs, so no debian 9 git clone https://github.com/OpenRCT2/OpenRCT2.git cd OpenRC2 mkdir build cd build cmake .. # for the latest version, check here: wget https://github.com/OpenRCT2/OpenRCT2/releases/download/v0.2.6/OpenRCT2-0.2.6-linux-x86_64.tar.gz tar xvf Open* cd OpenRCT2 # for the latest version, check here: cd ~/programs/rc2 wget https://github.com/OpenRCT2/OpenRCT2/releases/download/v0.2.6/OpenRCT2-0.2.6-linux-x86_64.AppImage chmod +x Open* ln -s OpenRCT2-0.2.6-linux-x86_64.AppImage OpenRC2_latest # this runs a wrapper script in ~/bin rollercoastertycoon2 sudo apt install playonlinux playonlinux # in the gui, click the "Configure" button, click "New", select 32 bits, select "System" as the wine version, type "rc2" as name of virtual drive, click OK. # in the gui, click the "Configure" button, select rc2 drive, wine tab, click "Configure Wine", go to Drives tab, click "Add", add D: with path /mnt/rc2_cd # might have to restart playonlinux here # in the gui, click "Install Program", search for "Rollercoaster Tycoon 2" (You might have to check "No-cd needed" in search options)
# separate attempt number 2 # needed if running openrct2 throws 'libduktape.so.202: cannot open shared object file' sudo apt install duktape-deb cd ~/programs/rc2 wget https://github.com/Limetric/OpenRCT2-binaries/releases/download/v0.3.3-efd5d7d/OpenRCT2-0.3.3-develop-efd5d7d-linux-x86_64.tar.gz tar xvf OpenRCT2-0.3.3-develop-efd5d7d-linux-x86_64.tar.gz cd OpenRCT2 ./openrct2
-
Install mkchromecast (NOT TESTED / NOT WORKING)
sudo apt install mkchromecast sudo apt install python3-flask python3-flask python3-psutil mkchromecast --video -i videofile.mp4
-
Install pywal to enable colorschemes based on the wallpaperskippedpip3 install --user pywal # install extra backends (optional) pip3 install --user haishoku colorthief colorz
-
Install mopidy- NOTE: Latest (mopidy-soundcloud 2.1.0) isn't worth using for soundcloud. Pulls up to the 10 most recent songs and many don't pull at all (those with unicode?) Check again if/when this has moved to python 3.
# you may need these, but skip if you don't `sudo apt install gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 python-gst-1.0 python-pykka` sudo apt install python-gst-1.0 gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools sudo pip install -U mopidy sudo pip install -U mopidy-soundcloud mopidy ncmpcpp
- Removing:
sudo pip uninstall mopidy-soundcloud sudo pip uninstall mopidy
-
Setup yeganesh:Yeganesh is included in~/bin/
, this can still be followed to update it, if needed.# Download latest from [here](dmwit.com/yeganesh) curl dmwit.com/yeganesh/yeganesh-2.5-bin.tar.gz | tar xzv cp yeganesh-2.5-bin/yeganesh ~/bin/ # Try app selector (Super+P)
-
Install Powerline:skippedsudo apt-get install -y python-pip sudo pip install git+git://github.com/Lokaltog/powerline wget https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf wget https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf sudo mv PowerlineSymbols.otf /usr/share/fonts/ sudo fc-cache -vf sudo mv 10-powerline-symbols.conf /etc/fonts/conf.d/
-
Install Tmuxinator:skippedsudo gem install tmuxinator
-
Install tizonia-
NOTE: Latest (0.18.0) isn't worth using for soundcloud. Loads at most 10 songs with --soundcloud-user-stream, maybe a soundcloud API limitation. It also misses some tracks, but not as many as mopidy-soundcloud. Check again after some major version updates
-
guide from here
-
NOTE: I disagree with some of the actions take in the standard install script. Since I don't want to hose my system by running this, download the script and make the following changes:
- Modify the two calls to tee /etc/apt/sources.list: The new sources should be added to /etc/apt/sources.list.d/mopidy.list and tizonia.list
- Remove --force-yes from the apt install call
curl 'https://bintray.com/user/downloadSubjectPublicKey?username=tizonia' | sudo apt-key add - echo "deb https://dl.bintray.com/tizonia/debian stretch main" | sudo tee /etc/apt/sources.list.d/tizonia.list curl 'http://apt.mopidy.com/mopidy.gpg' | sudo apt-key add - echo "deb http://apt.mopidy.com/ stable main contrib non-free" | sudo tee -a /etc/apt/sources.list.d/mopidy.list cd /tmp wget https://github.com/tizonia/tizonia-openmax-il/raw/master/tools/install.sh vi install.sh # make changes listed above ./install-edited.sh tizonia --soundcloud-user-stream
- Removing:
sudo apt remove tizonia-all sudo apt remove libspotify12 sudo rm /etc/apt/sources.list.d/tizonia.list sudo rm /etc/apt/sources.list.d/mopidy.list sudo apt update sudo apt autoremove
-
- Problem: When resuming from sleep, with AC disconnected, system shows DELL logo and reboots.
- Investigation:
-
Check logs with
lnav
, the crash corresponded to systemd-modules-load trying to load the 'msr' module:│Oct 26 16:39:34 bxpsd systemd[1]: Starting Suspend... └Oct 26 16:40:50 bxpsd systemd-modules-load[466]: Inserted module 'msr' ┌Oct 26 16:40:50 bxpsd kernel: [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-5.10.0-9-amd64 root=/dev/mapper/debian-root ro quiet loglevel=3
-
Verify the file
/usr/lib/modules-load.d/fwupd-msr.conf
exists, it was the one causing msr to be loaded. -
Remove
fwupd
(since I have BIOS capsule updates disabled anyways) -
Try suspending again and see if the issue goes away. NOTE: interestingly, I recently tried using a custom MSR module. It should not be persistent but still... this is very coincidental.
-
Issue still occurs. Removing
fwupd
did nothing. -
Check logs again with
lnav
, nothing interesting. Simply see boot-up messages instead of resume messages. -
Suspend ON ac, resume ON ac, works
-
Suspend ON ac, resume without ac, fail
-
Suspend without ac, resume without ac, fail
-
Suspend without ac, resume ON ac, ???
-
Revert to an earlier kernel (5.10.0-8) - it works!
-
Switch back to new kernel (5.10.0-9) and add
init_on_alloc=0
to boot options in /boot/grub/grub.cfg - works! -
Keep new kernel (5.10.0-9) and remove
init_on_alloc=0
from /boot/grub/grub.cfg - still works... huh. Well that is unfortunate. -
Can't reproduce anymore, and IDK what I could have changed. Maybe it is intermittent. Shelving this until it reoccurs.
-
-
figure out why this is printed on all terminals after resume from sleep:
Message from syslogd@hostname at Oct 28 19:19:49 ... kernel:[81882.054948] \__common_interrupt: 5.33 No irq handler for vector
-
fix some folders which get stowed automatically during install
- sublime-text-4 folder gets symlinked in its entirety - maybe not what we want
- sublime-merge
-
steps to automate install further:
- add etc folder to dotfiles. not sure best way to do this, maybe each program folder gets a subfolder 'files-for-etc'?
- switch from manually-installed apps to debian packaged apps, where possible
-
phase out/replace p7zip - it is old and complex
-
replace imagemagick with graphicsmagick and probably install
graphicsmagick-imagemagick-compat
to add convert and the other binaries -
finish copying info from documents/xps/debian_notes.txt to this repo
-
Screen sleep on idle (after 5 minutes) does not lock the screen
-
add alias support to yeganesh/rofi, this way we can run
pycharm
via launcher- workaround: could add a binary to launch pycharm in ~/bin
- add aliases to yeganesh with this (note: this sources bash aliases, not zsh ones)
-
check out some new/alternative apps
- udiskie to auto-mount drives + add a taskbar icon to manage drives (there is also a rofi extension to control this)
- fasd (and jetho's repo)
- YouCompleteMe (https://github.com/Valloric/YouCompleteMe)
- freerdp-x11
- nemo - it has a better compact mode than nautilus. After install run
gsettings set org.nemo.desktop show-desktop-icons false
to disable desktop window - Improve rofi functionality
- Check out rofi-lpass
- Check out rofi-bluetooth because blueman-manager is horrible
- This repo and this repo have a lot of useful rofi configs
- check out polybar here
-
Add notes for apps
- veracrypt
- steam
- mpd
- ufw
- audacious
-
Migrate to Debian 11 link
- Remove
exfat-fuse
andexfat-utils
from app_list_minimal.txt, and addexfatprogs
- Check out driverless printing (link) - is it setup automatically when choosing 'print server' in the Debian installer?
- Remove
-
Some of the user services start programs that require an X session. Apparently, if you create the services the naive way, they will usually start before X (even though the user services depend on default.target, the latest-ending built in target). The lack of X causes them to fail to start. Currently, I added RestartSec=5 to those services, which causes them to wait long enough that on the second try X is running. Should replace this with a more reliable way of starting them like this which uses a one-liner in .xsessionrc to trigger a custom target which all the service files are waiting on. Need more research since this shouldn't be this difficult.
-
switching between different barrier configurations is complicated. Should switch to a method of saving configurations and laumching a specific config file each time
-
enable hibernation - it would be better for low battery action. Or hybrid sleep.
-
check macbook dotfiles + copy over any useful preferences (at least .vimrc and tmux.conf)
-
replace middle-click paste with something better. It is too easy to accidentally triple-tap with the touchpad and dump a block of text at the cursor. Step 1 is disable middle click with touchpad, then step 2 is merge the x-selection and the standard clipboard with some kind of app or maybe even a custom shortcut with an intelligent paste (or Ctrl+V for one, Ctrl+Shift+V for another). Should google how others have solved this problem.
-
add sublime text 4 themes and colorscheme. Config is saved already
- also add colorscheme customization file (it sets background to pure black)
-
use hostname_colorized in PS1 and remove its TODO in binary section above
-
colorscheme update: dark blue is too dark
-
Check hist file after a while to see if zsh's
KEYBOARD_HACK
option is needed -
modify tmux config to not show stats on bottom bar that are already in xmobar
-
login to firefox to sync maybe? its a pain to re-setup
-
figure out a good way to save some of fstab's contents (NASes etc). maybe have a file that you append to current fstab during setup?
-
potentially remove Fiery Turk font (unless its used somewhere but I dont think so)
-
eventually add gtk theme
-
maybe make a new games.md for the install instructions for games
- include lutris since it used to be in app_list_extras.txt
-
Make some kind of automatic color scheme management that reads from a single location
- design all programs to use colors stored in .Xdefaults
- conky can execute a shell script which returns current terminal colors
- pystatusbar colors are defined in the pystatusbar config.
- could add functionality to pystatusbar to define color scheme in pystatusbar config, and potentially pick where to load it from (like .Xdefaults)
- could write a wrapper bash script that dumps colors into a templated pystatusbar config
-
Configure openssh-server and add to this repo (config is
/etc/ssh/sshd_config
)- create a few scripts to make controlling via rofi easy
openssh-server-enable
openssh-server-disable
openssh-server-status
- prints "running" or "stopped"
- add an icon/warning to pystatusbar config which shows when
openssh-server-status
returns "running"
- create a few scripts to make controlling via rofi easy
- when using a custom charge profile on xps 9550 (ie charge to 85% max), it seems that xfce power manager thinks the system is on battery power when its actually plugged in. This
- volume controls do not work on bluetooth (or any non-built-in-speaker) headphones (edit: possibly fixed, need to test)
- the slider that changes in pavucontrol is named "Built-in Audio Analog Stereo"
- after boot, volume controls will not work until something tries to use the speakers (edit: possibly fixed, need to test)
- Wired adapter names:
- x220: enp0s25
- xps9550:
- Wireless adapter names:
- x220: wlp3s0
- xps9550: wlp2s0
- Onboard display names (in xrandr):
- x220: LVDS-1
- xps9550: eDP1 on Debian 8, eDP-1 on Debian 10
- External display names (in xrandr):
- x220: HDMI-1 (and probably also VGA-1)
- xps9550: HDMI1 and DP1 on Debian 8, HDMI-1 and DP-1 on Debian 10
- GithubMarkdown