Install Kubuntu 19.10 and Apps for Web Development
Install, configure, and optimize Kubuntu 19.10 and Apps for Web Development in a few hours.
News
2019-12-02
- Added Assessment advising against 19.10 due to regressions
2019-11-02
- Add System Settings paths
- Verified and updated Apt sources
- Audit through Section 9
Assessment of 19.10 as of 2019-12-02
After extensive testing we do NOT recommend 19.10 for daily use. There are two marjor regressions that remain unresolved.
-
The CPU throttling on at least some CPUs (confirmed on i7-9750H and i7-8750H) does not work, with the frequency always pegged at maximum. This results in less battery life and higher heat.
-
Geekbench4 scores are reduced to 50% of their values prior to updates (26K vs. 13K, for example) on these same processors.
We strongly advise using 19.04 or 18.04 where these regressions do not exist.
If you chose 19.10
The 19.10 regressions will result in lower performance and higher power consumption. However, they may be resolved in the near future as we have filed bug reports with Kubuntu developers. There are a few additional Plasma bugs that are annoying (e.g. lock screen image selection) but minor. Using a LiveCD to test the regressions DOES NOT work as they do not occur until after initial updates. We are currently monitoring progress using an alternate 19.10 install.
If you choose 19.04
We found 19.04 very stable and performant over 6 months of average 10 hour days using it. Backports provides most of the desirable new KDE features. However, it has an EOL date of 2020-01-18, and therefore there may not be a direct upgrade path to 20.04 LTS. If you insist on 19.04, you may need to back up data and then install 20.04 LTS fresh in May 2020.
If you choose 18.04
This is also very stable and performant. Backports provides many desirable features, but some from KDE are missing. The upgrade path to 20.04 LTS is obvious.
Introduction
Purpose
Provide a complete and thoroughly tested guide to install, configure, and optimize Kubuntu 19.10 (K19-10) and web development tools.
- Show screen shots for almost every step
- Ensure answers are thorough and well-researched
- Provide an explanation for each step
- Add links to external resources when beneficial
Why this guide?
Because it works. The entire procedure has been end-user-tested five times with the author present. Feedback from these sessions was used to ensure accuracy and minimize the opportunity for mistakes.
Why Kubuntu?
The Plasma Desktop with KDE apps looks great, is easy to use, starts and runs fast, and is easy on resources. Kubuntu is an Ubuntu derivative so it has the widest array of commercial Linux application support available. The Apt package ecosystem is mature and almost all software can be installed with it. Daily updates keep the software current and remove security risks quickly.
Why this Author?
The author has used Unix or Linux as his primary OS for web app development since 1993. He adopted RedHat in 1998 and then Kubuntu in 2006. He has managed the software on multiple Linux clusters with dozens of servers each. He is also RHEL5 certified (giggle if you must) and is the author and maintainer of Kubuntu Preferred Apps Spreadsheet.
How to use this guide
This is a long document with 98 screen shots, and it is far too easy to scroll past a step when using the scrollbar. To avoid this we suggest using using the arrow keys to scroll instead, and pay attention to the step number to ensure it is in order.
Table of Contents
- Select Hardware
- Prepare Install Image
- Review Selected Apps
- Create a Virtual Machine
- Install Kubuntu 19.10
- Apply Updates
- Optimize VirtualBox
- Add Repos and Install
- Configure Plasma
- Install Addon Apps
- Optimize Apps
- Trouble Shooting
- Appendix A: Recent Build
- Appendix B: ShrinkPDF
- Appendix C: Laptop
1. Select Hardware (top)
Select hardware that is tested and compatible with Desktop Linux.
- CPU: AMD or Intel x86. Both are excellent.
- GPU: Nvidia or Intel. Prefer Nvidia for superior performance, stability, CUDA, deep learning support. AMD GPUs have gotten much better recently, but the author has not worked with them.
- Keyboard: We like the Logitech K310 washable keyboard. Of course, just about any keyboard will work just fine.
- Pointer: We like the Logitech MarbleMouse. The trackball provides great control while avoiding repetitive stress injuries. Again, just about any 3-button or scroll-wheel mouse will work fine.
- Webcam: We like the Logitech Webcam C615. Works out-of-the-box with Hangouts, Skype, Zoom, and other apps. Includes 1080p/30fps and a good mic.
See Appendix A for my most desktop recent build which has been amazing. See Appendix C if you would like to purchase a ready-to-use laptop. When purchasing a laptop, select one designed and shipped with Linux like those offered by System76, Dell, or Levono. Otherwise, look online to find those that work best with Ubuntu. Make sure key capabilities like screen, WiFi, webcam, trackpad, keyboard, GPU, monitor, battery, and power management are well supported. Do not attempt to install on a recent MacBook Pro. Apple is openly hostile to Linux on their hardware and have ensured the experience is at best miserable and likely impossible.
2. Prepare Install Image (top)
2.1. Download the ISO Image
Download the 19.10 bootable ISO image directly from Kubuntu, it
should be named kubuntu-19.10-desktop-amd64.iso
. Enter the following into the
terminal to ensure the SHA256 checksum matches the one found on this
page. The checksum will change as the ISO is updated
so please modify the _hash='...'
line as needed.
# Change this hash with value provided from kubuntu.org
_hash='e56388512a0610bd991192b197a13f1496c107377d9c96d332939c08e305b028' \
&& if ( sha256sum kubuntu-19.10-desktop-amd64.iso |grep -v "${_hash}"); then
echo "--- Results ---"
echo 'FAIL. DO NOT USE this ISO, it does not match checksum';
echo 'Please notify Kubuntu of this issue.'
else
echo '--- Results ---'
echo 'SUCCESS. ISO passes checksum';
fi
2.2. Create Bootable USB Drive
2.2.1. When using a virtual machine
Skip this step. VirtualBox uses the ISO file directly.
2.2.2. When using a physical computer
Insert a small (4-8GB) USB drive into the computer with the downloaded ISO
image. When using a the Ubuntu OS, we may install the Start Disk Creator
with sudo apt install -y usb-creator-kde
. Similar tools are available for
other OSes. Select the ISO image and select the USB drive and the click on
Make Startup Disk. All content of the USB drive will be replaced in this
operation.
To use the CLI instead, see this Ask Ubuntu answer
3. Review Selected Apps (top)
Review the K19-10 Selected Apps chart below. These apps are installed or optional in the steps below. Adjust as needed. If you feel an app should be here but isn’t, please let me know in the comments!
At present, these are the planned additions: Kubernetes, Azure CLI, AWS CLI, Google Cloud CLI, Zoom, Tensor Flow, Nvidia Developer tools.
Key: repo = standard repo; crepo = custom (added) repo, custom = custom installation; addon = added after repo install
Role | Name | Source | Notes | Tags | Updated | Inc. |
---|---|---|---|---|---|---|
Role | Name | Source | Notes | Tags | Updated | Inc. |
Audio control | pavucontrol | repo | Pulse audio volume and other settings. | audio, volume, mix, gstreamer, pulse audio | 2019-10-04 | Yes |
Android Files | kde-connect, mtp-tools | repo | Android connection. Browser extensions for kde-connect are highly recommended. | mtp, android | 2019-10-04 | Yes |
Audio Editing | audacity | repo | Audio editor | audio, wav, mp3, ogg | 2019-10-04 | Yes |
Benchmark | sysbench | repo | Benchmark CPU, Disk, MySQL | benchmark | 2019-10-04 | Yes |
Blog | blog, html, css, github | repo | Jekyll | blog, html, css, github | 2019-10-15 | Addon |
Browser | google chrome | crepo | Best debugger, android integration chrome://inspect | browser, v8, html, javascript, css, web | 2019-10-04 | Yes |
Browser | firefox, firefox-locale-en | repo | Firefox browser | browser, tracemonkey, spidermonkey, html, javascript, css, web | 2019-10-04 | Yes |
Clean custom repos | ppa-purge | repo | Useful for removing repos and reverting to stock packages. For example, xorg-edgers can be trouble. See note [Q]. | ppa, purge, repository, remove | 2019-10-04 | Yes |
Clipboard | -- | -- | Multi-register clipboard is now a core capability of Plasma. Remember to use it! | clipboard | 2019-10-04 | Yes |
Codecs | codecs | repo | proprietary codecs kubuntu-restricted-extras, kubuntu-restricted-addons | flash, codec, movies, mp3 | 2019-10-04 | Yes |
Compression | optipng | repo | Optimize PNG compression | png, compress | 2019-10-04 | Yes |
Compression | rar | repo | RAR compression utilities | 2019-10-04 | Yes | |
Compression | shrinkpdf | script | We used this to reduce a 5.2MB pdf to .18MB. Amazing. | pdf, compression, script | 2019-10-04 | Addon |
SQL Database | mariadb, mysql, mysql-server | repo | MariaDB, MySQL, PostGreSQL are excent options. Use SQLite for embedded. | sql | 2019-11-02 | Yes |
SQL Database | sqlite | repo | Embedded SQL | sql | 2019-11-02 | Yes |
Database GUI | -- | -- | Use the database tool found in IntelliJ | sql | 2019-10-08 | Yes |
Dev - IDE | intellij ultimate | custom | Web application development IDE, best-in-class ease of use and feature. We now use this instead of Webstorm as we need support for more languages. Webstorm, RubyMine, Pycharm, et. al. are subsets. | java, python, javascript, css, html, bash, perl, xml, json | 2019-10-04 | Addon |
Dev - Standard | build-essential openssh-server wajig | repo | Install these for app dev env. Remember ssh -X does X11 forwarding (very, very handy!). Make sure this is enabled by the openssh server first though. See this guide: https://unix.stackexchange.com/questions/12755 | tool chain, ssh, X11 | 2019-10-04 | Yes |
Disk bench | bonnie++ | repo | Benchmark disk. | benchmark, disk, performance, read, write | 2019-10-08 | Yes |
Disk bench | hdparm | repo | A simpler test: hdparm -t /dev/<disk> and hdparm -T /dev/<disk>. Use sdparm or hdparm -I /dev/sda to identify. | benchmark, disk, performance, read, write | 2019-10-04 | Yes |
Doc Conversion | pandoc | repo | Useful to convert markdown -> pdf or other formats. One must install pandoc pandoc-citeproc texlive haskell-platform | pdf, html, ODT, RTF, Textile, text, AsciiDoc, Epub | 2019-10-04 | Yes |
Docker | docker-ce | crepo | Industry standard containers. | containers, docker | 2019-10-04 | Addon |
Dropbox | dropbox | crepo | Fastest shared file solution | dropbox, share, shared, files | 2019-10-04 | Addon |
DVD Rip | k3b | repo | CD and DVD ripper and burner | dvd, cd, burn, rip | 2019-10-04 | Yes |
Kmail, Kontact | repo | Bulk mail processing is faster with a local client | ||||
email, gmail, yahoo mail | 2019-10-04 | Yes | ||||
Encode | ffmpeg | repo | Encoding to mp3, video codecs. Was formerly replaced with a fork of ffmpeg called 'lib-avtools'. Use 'avconv' and 'avplay' | mp3, mp4, ffmpeg, avconv, avplay | 2019-10-08 | Yes |
Fonts | ttf-mscorefonts-installer | repo [YE] | Install to get Arial, Courier new, and other standard MS fonts. | fonts, truetype | 2019-10-04 | Yes |
Hardware Info | hwinfo, lshw, lspci, lsusb, dmidecode | repo | List motherboard, peripherials, etc. Also try 'cat /proc/cpuinfo' | hardware, peripherals, usb, pci | 2019-10-04 | Yes |
Image Edit | gimp, gimp-data-extras, gimp-help-en | repo, crepo | Very Photoshop like and quite compatible with Adobe tools. Use `dbus-launch gimp` if screen capture isn't working. | graphics, Photoshop, red eye. CMYK plugin: http://cue.yellowmagic.info/softwares/separate-plus/index.html | 2019-10-04 | Yes |
Image SVG | inkscape | crepo [S] | A very good SVG editor | graphics, SVG | 2019-10-04 | Yes |
Java | openjdk | repo | OpenJDK has become standard; if Oracle is needed, see notes install notes below. | java, jdk, jre, oracle | 2019-10-04 | Yes |
JSON prettyprint | python | -- | For convenience add this to ~/.bashrc: alias prettyjson='python -m json.tool'. See JSON.stringify(obj, null, 2) for a faster alternative. | 2019-10-04 | Yes | |
Music Player | Clementine | repo | Looks interesting, but we have not used it. | mp3, music, album | 2019-10-04 | Yes |
Network Files | nfs-common | repo | NFSv4 Network files system. | nfs, nfsv4, filesystem | 2019-10-04 | Yes |
NodeJS | nodejs | crepo | JavaScript web server | nodejs, node.js, npm | 2019-10-04 | Yes |
Office Suite | LibreOffice | repo | Version 6.3 | Word, Excel, Access, Base, Sheets, Presents, Keynote, Powerpoint | 2019-10-04 | Yes |
Package mgmt | apt, dpkg | repo | See Notes [W] and [X] | apt, apt-cache, apt-get, hold, muon, pin, wajig, Discover | 2019-10-04 | Yes |
PDF annotate | okular | repo | Best PDF view/annotator for linux | view, annotate, PDF | 2019-10-04 | Yes |
PDF diff | diffpdf | repo | Compare PDF content or visuals | diff, compare, PDF | 2019-10-08 | Yes |
PDF Edit | pdfshuffler | repo | See all pdf tools, type pdf<tab> | concatenate, rearrange, delete, PDF | 2019-10-08 | Yes |
Power Control | upower | repo | Use 'upower -e' to show devices and upower -i 'device' to inspect. Should be installed by default. See http://askubuntu.com/questions/69556 | power, laptop, battery, command line, cli | 2019-10-08 | Yes |
Screen measure | kruler | repo | Measure screen distances. Useful for screen captures. | ruler, kruler, meausre | 2019-10-17 | Yes |
Screen recording | simple screen recorder, obs-studio | repo | The first (simplescreenrecorder) is easiest to use, the last (obs-studio) was more powerful but more complex and less stable. | screencast, recorder, audio, video, capture | 2019-10-08 | Yes |
Slack | slack-desktop | repo | Available in Multiverse as slack-desktop | slack | 2019-10-08 | Addon |
Steam | steam | repo | Available in Multiverse as steam-installer | steam | 2019-10-08 | Yes |
Source Control | git, subversion, gitolite3 | repo | Use GitoLite as a git repository. Setup is 5 minutes. See https://help.ubuntu.com/lts/serverguide/git.html and http://blog.aplikacja.info/2010/08/switch-origin-of-your-git-repository | scms, git, svn, subversion | 2019-10-08 | Yes |
Telegram | telegram, telegram-cli, telegram-desktop, telegram-purple | repo | Emerson Pardo recommended Telegram. | telegram, messaging, whatsapp | 2019-10-08 | Addon |
Text editor | vim or neovim | repo | We switch between the two. | vim, neovim | 2019-10-08 | Yes |
Video Acceleration | vdpau | repo | Provides hardware encoding and decoding | gpu, Nvidia, vdpau, encode, decode, hardware | 2019-10-08 | Yes |
Video Chat | Hangouts | n/a | Use Google Hangouts in Google Chrome | talk, voice, voip | 2019-10-08 | n/a |
Video Editing | kdenlive | repo | A well respected video editor with significant community support | mp4, video | 2019-11-02 | Yes |
Video Encode | handbrake | crepo | Usually better at backing up encrypted content. Previously the Handbrake in the repo had mp4 support disabled. Have not confirmed for 19.10. | dvd, burn, rip | 2019-10-04 | Yes |
Video Player | vlc | repo | VLC plays just about all formats. Handy to have around | video, movie, playback | 2019-10-08 | Yes |
Visual Diff | meld, kdiff3 | repo | Compare 3 sources across directory trees. Much better than Github when trying understand how things have changed. Meld has a nicer interface, but sometimes Kdiff3 is faster. | diff, visual diff, meld, kdiff3 | 2019-10-08 | Yes |
Virtual terminal resolution | grub | repo | grub, grub2, vbeinfo, vga | 2019-11-02 | Yes | |
Wallpapers | backgrounds | repo | Various backgrounds are found in /usr/share/backgrounds and /usr/share/wallpapers. | ubuntu-wallpapers ubuntu-wallpapers-<release> plasma-workspace-wallpapers | 2019-10-08 | Yes |
Webcam control | guvcview | repo | Great tools for testing webcam | webcam, cam | 2019-10-08 | Yes |
Wireframes | Balsamiq Mockups | custom | An easy-to-use wireframe tool. Version 3 provides symbols so that engineering drawing change control is now easier. | wireframes, mockups | 2019-10-08 | Addon |
X select | xsel | repo | X selection utility, useful for cut-n-paste for vim | xsel, X select | 2019-10-08 | Yes |
4. Create a Virtual Machine (top)
Skip this section when installing on a physical computer.
4.1. Why a virtual machine?
We recommend using a virtual machine to test Kubuntu 19.10 and apps before committing to a full upgrade or installation on a physical computer. Our testing to date has shown all apps work well with just some config adjustments.
4.2. Install VirualBox
When using an Ubuntu 16.04+ derivative (Ubuntu, Kubuntu, Lubuntu, probably Mint and quite a few others) as the Host OS, enter the code below into a terminal to install. For other OSes, see the VirtualBox site.
sudo install virtualbox virtualbox-ext-pack virtualbox-guest-additions-iso
virtualbox
is the core appvirtualbox-ext-pack
enables USB2+ and other advanced featuresvirtualbox-guest-additions-iso
provides additions used by Guest OS to provide an improved experience.
4.3. Create virtual machine
Start VirtualBox and click on New.
4.4. Set details
Inspect every field here. Try to provide at least 4GB of RAM for testing purpose. Plasma is pretty light on resources, but apps like Gimp and IntelliJ eat lots of RAM when editing large images or projects.
4.2.4. Create storage
4.6. Adjust resources
4.7. Allocate threads
Allocate a minimum of 2 threads.
4.8. Configure display
Turn off compositing <shift + alt + f12> on both the host and guest OS to maximize performance. Make sure to select VBoxSVGA as the Graphics Controller and Enable 3D Acceleration. Do not Enable 2D Video Acceleration.
4.9. Configure USB
4.10. Power-on
4.11. Select Kubuntu 19.10 ISO
4.12. Click start
5. Install Kubuntu 19.10 (top)
5.1. Boot from the USB Drive
5.1.1 When using a virtual machine
VirtualBox prompts for the ISO file to boot from when a new virtual
computer is started. Provide the ISO file previously downloaded, e.g.
kubuntu-19.10-beta-desktop-amd64.iso
.
5.1.2 When using a physical computer
Power-off the target computer and insert the Bootable USB Drive into a USB port and then power-on. One may need to select the boot device (typically using the F12 key) if the installer does not appear and try again.
5.2. Click Install Kubuntu
Once the installer is present, click on Install Kubuntu to begin.
5.3. Select keyboard
This typically requires no changes.
5.4. Select default install
Select the default install. Skimping on tools to save perhaps a GB or two of diskspace is hardly worth it. Enable third-party software for graphics, hardware, and media.
5.5. Specify storage
There are a few options to configure storage. Pick one of the two below.
5.5.1. Encrypted storage
Enter the same password in each of the two text boxes. If one clicks
Continue
and then Back
the LVM will be written to disk. Don’t do that,
One can use fdisk
from the live CD to remove the partitions if needed. More
detail is outside of the scope of this article.
5.5.2. Specify custom partitions
Skip this section if encropted storage was used.
Select Manual and click Continue to partition disk.
Click to select the /dev/sda
device and click Add. A modal window
appears. Set the Size to 8192 MB, set the Type to swap space,
and then approve the partition. This swap is used by the system and also is
needed (or at least preferred) for the suspend-to-disk feature of the OS.
Click again on the /dev/sda
device and click Add. A similar modal window
appears. Accept the Size value to use all the remaining space. Set
Type to Ext4 and set Mount point to / and then approve the
partition.
Click on Install Now. A modal window appears warning that continuing will remove any prior content in the partitions. Click on Continue to proceed.
5.6. Select time zone
Select a time soon and click Continue.
5.7. Create admin user
This user is granted admin (sudo) rights.
5.8. Watch the slide show
A test install with 40MB/s internet and fast hardware took 3 minutes, but it could take quite a bit longer if the storage, internet, memory, or CPU is slow.
More slides appear as the installation progresses. This is normal.
5.9. Reboot
Elect to reboot the system after installation is complete.
6. Apply Updates (top)
6.1. First sign-in
This sign-in screen should appear 20-30s after boot. Enter the username and password provided earlier.
6.2. Enjoy the splash screen
On modern hardware this appears appears for less than 5 seconds, and often less than one second. We disable it in the steps below.
6.3. Review desktop
This is the default desktop.
6.4. Open Discover app
The user is notified of updates on sign-in. One should apply updates updates immediately after install and at the beginning of every work day. Click on Update in the notification to open the Discover software package management app. One can also start Discover from the K-menu at the Bottom Left. Once open, click on Updates at the bottom left of the app to see all updates.
6.5. Initiate updates
There should be many updates available (20 or more). Click on Update All at the top right.
6.6. Authorize updates
Provide the user password to proceed.
6.7. Watch updates progress
The task bar indicator shows percentage completion. Updates should take a few minutes.
6.8. Complete updates and power-off
Successful completion of updates should look like the following screenshot. Reboot the system using K-menu > Leave > Restart.
7. Optimize VirtualBox (top)
Skip this section when installing on a physical computer.
7.1. Open guest additions disk
The guest additions appear as an optical disk. Click on the USB icon to access this disk and open it with the file manager.
7.2. Open terminal
Right click on the file view and select Actions > Open Terminal Here.
7.3. Install additions
Enter the following into the terminal to install the prerequisite packages.
sudo apt install -y build-essential gcc make perl dkms;
Enter the following into the terminal to install the additions.
sudo ./VBoxLinuxAdditions.run
Once installation is complete, Reboot the system using K-menu > Leave > Restart. Then in the Virtual Machine menu set:
- Devices > Shared Clipboard > Bidirectional
- Devices > Drag and Drop > Bidirectional
8. Add Repos and Install (top)
The Apt software management system in all Debian Linux system is simpler and more complete than other OSes. Almost all third-parties provide Apt support for their software with a few exceptions. Below we add the repos needed for the software we wish to install and keep current. Most of the repos are PPAs. Packages are are signed which greatly reduces the opportunity for a bad actor to insert a Trojan Horse like a key-logger or phone-home feature into them.
The typical way to add a repo is to use the a command like sudo
add-apt-repository "${_repo_spec}"
. This method ensures that encryption keys
are added to the package management database. Commercial vendors typically use
a similar process but add keys in a separate step. In this guide we use a
script to download registered keys all at once.
8.1. Open Konsole
The KDE terminal app is called Konsole. Press <alt + space> and type konsole and then press <enter> to quickly find and start it.
8.2. Pin Konsole to Panel
We use the terminal frequently.
8.3. Update installed packages
Enter the following into the terminal to ensure all packages are current.
sudo apt update && sudo apt upgrade && sudo apt dist-upgrade
8.4. Add repo files
Enter the following into the terminal to generate the file ag.txt
. Each
repository file destined for /etc/apt/sources.list.d us marked by the #_
prefix. subsequent lines are placed in the file. Empty lines and those
prefixed by #x
are ignored.
echo '#x Last update 2019-11-02
#x REMOVED
#x - repo.steampowered.com/steam; see multiverse `steam-installer`
#x - ppa.launchpad.net/webupd8team/java/ubuntu; was empty and defunct
#x - google talk plugin which is now deprecated in favor of hangouts
#x
#x [arch=amd64] is used to avoid warnings on some repos.
#x
#x Oracle Java license has changed. If needed, see
#x linixhint.com/install_jdk12_ubuntu_1904
#x and `sudo add-apt-repository ppa:linuxuprising/java`
#x
#_ chrome-remote-desktop.list
deb [arch=amd64] http://dl.google.com/linux/chrome-remote-desktop/deb stable main
#_ docker.list
# 2019-11-02 Eoan not yet available
deb [arch=amd64] https://download.docker.com/linux/ubuntu disco stable
#_ dropbox.list
# 2019-11-02 Eoan, Disco not available
deb [arch=amd64] http://linux.dropbox.com/ubuntu cosmic main
#_ gimp.list
deb http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu eoan main
#_ google-chrome.list
deb [arch=amd64] http://dl.google.com/linux/chrome/deb stable main
#_ graphics-drivers-ppa.list
deb http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu eoan main
#_ inkscape_dev-stable.list
# 2019-11-02 Disabled until eoan available (use default inkscape)
# deb http://ppa.launchpad.net/inkscape.dev/stable/ubuntu eoan main
#_ insync.list
deb http://apt.insync.io/ubuntu eoan non-free contrib
#_ kubuntu-ppa-backports.list
deb http://ppa.launchpad.net/kubuntu-ppa/backports/ubuntu eoan main
#_ neovim-stable-ppa.list
# 2019-11-02 Enable if desired, Eoan not yet available
# deb http://ppa.launchpad.net/neovim-ppa/stable/ubuntu eoan main
#_ nodesource.list
deb https://deb.nodesource.com/node_10.x eoan main
#_ skype-stable.list
deb [arch=amd64] https://repo.skype.com/deb stable main
#_ slack.list
deb https://packagecloud.io/slacktechnologies/slack/debian jessie main
#_ stebbins-handbrake.list
# 2019-11-02 Eoan not yet available
# deb http://ppa.launchpad.net/stebbins/handbrake-releases/ubuntu eoan main
#_ teejee2008-ubuntu-ppa.list
# Provides TimeShift (see var/lib/apt/lists/, wajig detail timeshift)
# which looks useful
deb http://ppa.launchpad.net/teejee2008/ppa/ubuntu eoan main
' > ~/ag.txt
8.5. Install repositories
Enter the following into the terminal to convert ~/ag.txt
to repository
definitions.
_tgt_dir="/etc/apt/sources.list.d";
_bkp_dir="${_tgt_dir}.O";
_tmp_dir="/tmp/sources.list.d";
if ( sudo mv "${_tgt_dir}" "${_bkp_dir}" ); then
echo "Installing repository files to ${_tgt_dir}";
sudo mkdir /etc/apt/sources.list.d;
pushd /etc/apt/sources.list.d > /dev/null;
grep -Ev '^#x|^\s*$' ~/ag.txt | while read _line; do
if ( echo "${_line}" | grep -q '^#_' );
then
_tgt_file=$(echo "${_line}"|cut -f2 -d' ');
echo; echo "CREATE ${_tgt_file}";
else
echo "${_line}" | sudo tee -a "${_tgt_file}";
fi;
done;
popd > /dev/null;
else
echo "Could not move ${_tgt_dir} ${_bkp_dir}. Please try running";
echo " 'sudo rm -rf ${_tmp_dir} && sudo mv ${_bkp_dir} ${_tmp_dir}'";
echo " and then reattempt this action.";
fi
8.6. Update repository keys
Enter the following into the terminal to install all the keys for the repositories we just added.
sudo ls >/dev/null && if [ 1 ]; then
sudo apt update 2>&1 | grep NO_PUBKEY | sed -e 's?^.*NO_PUBKEY ??' \
| while read _hash; do
wget -O- "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x${_hash}" \
| sudo apt-key add -;
done
fi
8.7. Generate ssh keys
Enter the following to create an SSH RSA key. This is required for gitolite3 configuration. When prompted to enter a passphrase, press <enter> both times.
mkdir .ssh;
chmod 700 .ssh;
ssh-keygen -t rsa;
8.8. Install repo packages
8.8.1. Update packages
Enter the following into the terminal to ensure all packages are current.
sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade
There will be upgrades as we have enabled repos that provide newer versions of software.
8.8.2. Install apps
Enter the following into the terminal to install most of the apps specified in the Selected Apps table.
sudo apt install \
apt-file audacity awscli build-essential clementine diffpdf dmidecode \
ffmpeg gimp gimp-data-extras gimp-help-en git gitolite3 \
google-chrome-stable guvcview handbrake haskell-platform htop hwinfo \
inkscape kdenlive kdiff3 kruler kubuntu-restricted-extras meld mesa-utils \
mlocate mtp-tools mariadb-client mariadb-server net-tools nfs-common \
openssh-server p7zip-full p7zip-rar pandoc pandoc-citeproc pavucontrol \
pdfshuffler ppa-purge rar sdparm steam-installer sqlite sysstat texlive \
tree ttf-mscorefonts-installer ubuntu-wallpapers vdpau-driver-all \
vdpauinfo vim-gtk vim-nox vim-syntax-gtk wajig xsel \
xserver-xorg-input-evdev;
8.8.3. Confirm install
8.8.4. Download apps
Installation takes 5-10 minutes.
8.8.5. Approve font install
After downloads some packages require the admin to assist in configuration. The MS Font install requires approvals as shown. Press <tab> or the arrow keys to select <OK> and then press <return>. Use the same technique to select and accept <Yes> on the next screen.
8.8.6. Configure Gitolite3
After downloads some packages require the admin to assist in
configuration. GitoLite3 requests the id_rsa.pub
file generated earlier.
Navigate the page using <tab> or arrow keys as discussed above.
If the install completes without asking to configure gitolite, use sudo
dpkg-reconfigure gitolite3
to configure. Accept the defaults, but set the pub
key to /home/<username>/.ssh/id_rsa.pub
which we created earlier.
8.8.6. Watch installation progress
Packages installation progress is as shown.
8.9. Reboot after installation
Reboot the system once all packages are installed. Click on K-menu > Leave > Restart.
9. Configure Plasma (top)
Warning the images in this section our out of date due to recent Plasma updates (2019-11-02). These will be updated. Until then, be aware that the to some screens and other details may differ from the instructions which are accurate and up to date.
9.1. Configure panel
We prefer the panel on the right side to maximize vertical space. Right click on the panel and select Panel Options > Configure Panel
9.2. Move panel to right edge
Click on the screen edge button to move the panel.
9.3. Widen the panel
Widen the panel a bit to allow columns rows in the system tray at the bottom.
9.4. Configure desktop
Right-click on the desktop and select Configure Desktop
9.5. Change background
We like the picture of the day. Adjust as desired
9.6. Hide toolbox
The toolbox can get in the way. After hiding, click OK.
9.7. Open system settings
Open system settings from the K menu and then pin to the task manager.
9.8. Change theme
System Settings > Global Theme
Select Breeze Dark theme.
9.9. Change cursor size
System Settings > Cursors
We prefer larger cursors for demonstration purposes. Change this in the Size field.
9.10. Disable splash screen
System Settings > Startup and Shutdown > Splash Screen
The splash screen only shows for a second or so on modern hardware. Disabling removes visual noise.
9.11. Set Colors
System Settings > Colors
This should already be set to Breeze Dark.
9.12. Set Fonts
System Settings > Fonts
Those with 4K monitors may wish to scale their interface. The best method we have found is to adjust the DPI value under fonts and leave System Settings > Displays > Scale Display alone.
9.13. Set Icons
System Settings > Icons
This should already be set to Breeze Dark.
9.14. Set GTK style
System Settings > Application Style > GNOME/GTK Application Style.
Set the GTK2 and GTK3 themes to Breeze-Dark. Also select Prefer dark theme. Choose Breeze Dark for the icon theme as well. This is required to ensure GTK apps such as Firefox, Chrome, and LibreOffice use a dark theme.
9.15. Set Window Decorations
System Settings > Application Style > Window Decorations
This should already be set to Breeze. We recommend adjusting
9.16. Use Workspace defaults
System Settings > Workspace Behavior > General Behavior
Use workspace default settings as shown.
9.17. Adjust window edges
System Settings > Workspace Behavior > Screen Edges
Turn off maximize features. Instead, prefer to use <meta + leftarrow> or <meta + rightarrow> to tile windows. One can also click with the middle or right mouse button on the maximize-window control to toggle a window vertically or horizontally.
9.18. Set screen lock
System Settings > Workspace Behavior > Screen Locking
Click on the Appearance tab inn top middle and set the background to match the desktop.
9.19. Add virtual desktops
System Settings > Workspace Behavior > Virtual Desktops
Add four rows and rename as desired. Use slide animation and wrap-around navigation.
9.20. Test sound
System Settings > Audio
Click on the Advanced tab and click on Front Left and Front Right buttons to test audio output.
9.21. Configure pager
Close system settings. Right click on the virtual desktops in the panel and select Configure Pager. Click to display the desktop name.
9.22. Move pager widget
Right click on the panel and select Panel Options > Configure Panel and then drag the pager widget (which shows the virtual desktops) down to just above the system tray.
9.23. Review the results
The pager is now just above the system tray.
10. Install Addon Apps (top)
10.1. Docker
Enter the following into the terminal to install Docker. The required repo already added in Add Repos and Install.
sudo apt -y install docker-ce
10.2. Dropbox
Enter the following into the terminal to install Dropbox and start the service. The required repo already added in Add Repos and Install.
sudo apt install -y dropbox && dropbox start -i
Agree to install and start the dropbox daemon. After the daemon is installed, a browser window opens prompting the user to authorize the Dropbox folder. Enter the username and password to attach a Dropbox account or create an account if needed.
10.3. Balsamiq
Baslamiq is not a repo install and requires a bit more work. This site showed us the way.
10.3.1. Install wine packages
Enter the following into the terminal to install wine with a boatload of
i386
packages. Wait for the installation to complete before proceeding.
sudo apt install -y wine-stable winetricks
10.3.2. Download Balsamiq Bundle
Download Adobe Air from the Balsamiq Site by clicking the link With
Adobe Air bundled under the section Other Windows Installers. If
prompted to agree to the Balsamiq terms of use, Click I Agree to continue.
A zip
file should be downloaded.
10.3.4. Install to /usr/local/lib
Enter the the following in a terminal to install Balsmiq into /usr/local/lib
Beware that we may need to change names and links if the downloaded file
changes. For example, if the download file is updated to verion 3.5.18
, we
should use baslamiq_3_5_18
for our symbolic link and update the source
filename as well.
_src='Balsamiq_Mockups_3.5.17_bundled.zip';
_tgt='balsamiq_3_5_17';
_dir='Balsamiq_Mockups_3';
_result='';
sudo ls >/dev/null && if [ 1 ]; then
pushd /usr/local/lib;
sudo /bin/rm -rf "${_dir}";
if ( sudo unzip ~/Downloads/"${_src}" ); then
sudo ln -s "${_dir}" "${_tgt}";
sudo ln -s "${_dir}" balsamiq
pushd /usr/local/lib/balsamiq
sudo ln -s 'Balsamiq Mockups 3.exe' balsamiq.exe
_result='SUCCESS: Balsamiq installed and links configured';
popd;
else
_result='FAIL: Balsamiq install, could not unbundle';
fi
popd;
else
_result='FAIL: Balsamiq install, no sudo rights';
fi
echo "${_result}";
10.3.5. Add desktop file
Enter the following into the terminal to install a desktop file so one can easily access the app from the K-menu. We use symbolic links for references so we should not need to update this file.
echo '[Desktop Entry]
Encoding=UTF-8
Name=Balsamiq Mockups
Icon=/usr/local/lib/balsamiq/icons/mockups_ico_48.png
Exec=wine '/usr/local/lib/balsamiq/Balsamiq Mockups 3.exe'
Type=Application
Categories=Graphics;
MimeType=application/x-xdg-protocol-tg;x-scheme-handler/tg;g;' \
| sudo tee /usr/share/applications/balsamiq.desktop
10.3.6. Start Balsamiq
After wine installation is complete, Start Balsamiq with the K-menu
(shown); or by typing <alt + space> followed by bals and then
pressing <enter>; or by typing balsamiq
followed by <enter> in
the terminal.
10.4. IntelliJ
10.4.1. Download IntelliJ Ultimate
IntelliJ Ultimate is a great productivity tool in our experience. A free 30 trial is provided, and an individual license is $149 a year. For us, it is much worth it. Other Jetbains options include Webstorm, Pycharm, Rubymine, and others. We might consider Komodo IDE , Eclipse, KDevelop, or others, but we do not have recent experience with them. Download from the JetBrains website.
Save the download as file.
Enter the following into the terminal to ensure the SHA256 checksum matches
the one provided by JetBrains (click on the SHA256 link). The checksum will
change as the package is update, so please modify the _hash='...'
line
accordingly.
# Change this hash with value provided from JetBrains
pushd ~/Downloads
_hash='102a925396f2edd5d67b823fe14f3547e3d109c2a63a313c81fa2185cf8b98a1' \
&& if ( sha256sum ideaIU-2019.2.4.tar.gz |grep -v "${_hash}"); then
echo '--- Results ---'
echo 'FAIL. DO NOT USE this package, it does not match checksum.';
echo 'Please notify JetBrains of this issue.'
else
echo '--- Results ---'
echo 'SUCCESS. Package passes checksum.';
fi
popd
10.4.2. Install to /usr/local/lib
Enter the following into the terminal to install IntelliJ to /usr/local/lib.
sudo tar xvzf ~/Downloads/ideaIU-2019.2.4.tar.gz -C /usr/local/lib
10.4.3. Create symbolic links
Symbolic links ensures the paths used by the desktop do not change. We update
the link to new pointers when we upgrade IntelliJ. Notice the IntelliJ release
number (192.6817.14
in the code below) changes with every release and the
_tgt_dir variable must be changed when that happens. Enter the
following into the terminal create the desired links.
_tgt_dir="idea-IU-192.7142.36" && sudo ls >/dev/null && \
if [ -d "/usr/local/lib/${_tgt_dir}" ]; then
sudo /usr/bin/rm /usr/local/lib/intellij
pushd /usr/local/lib; sudo ln -s "${_tgt_dir}" intellij; popd
if [ ! -L /usr/local/bin/intellij ]; then
pushd /usr/local/bin;
sudo ln -s ../lib/intellij/bin/idea.sh intellij;
popd
fi
if [ ! -d /usr/local/img ]; then
sudo mkdir -p /usr/local/img;
pushd /usr/local/img;
sudo ln -s ../lib/intellij/bin/idea.svg ./intellij.svg;
popd
fi
echo "--- Results ---";
echo "SUCCESS: Installed IntelliJ symlinks";
else
echo "--- Results ---";
echo "FAIL : Installed IntelliJ symlinks";
echo " Please ensure distribution has been installed at ${_tgt_dir}";
echo " Update the version if needed in this script and try again.";
fi
10.4.4. Add desktop file
Enter the following into the terminal to install a desktop file so one can easily access IntelliJ from the K-menu. We use symbolic links for references so we do not need to update this file.
echo '[Desktop Entry]
Version=1.0
Type=Application
Name=intellij
Icon=/usr/local/img/intellij.svg
Exec="/usr/local/bin/intellij" %f
Comment=Develop with pleasure!
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-intellij' \
| sudo tee /usr/share/applications/jetbrains-intellij.desktop
10.4.5. Start IntelliJ
Start IntelliJ with the K-menu (shown); or by typing <alt + space>
followed by intellij and then pressing <enter>; or by typing intellij
followed by <enter> into the terminal.
10.5. Google Drive (Insync)
Insync provide reliable sync to Google Drive with an unlimited number of accounts. It costs $30 per year and provides automatic conversion to LibreOffice files. Enter the following into the terminal to install insync and the file manager integration.
sudo apt install -y insync insync-dolphin && insync start
We prefer to use Dropbox over GDrive for many uses. GDrive is around 20x slower than Dropbox for when syncing file. In addition Google scans everything put into GDrive whereas Dropbox does not.
10.6. Jekyll for Github.io Blogs
Enter the following into the terminal to install Jekyll for use with Github blogs.
sudo apt install jekyll && sudo gem install jekyll-sitemap
After installation is complete, one can start Jekyll in an appropriate directory and then visit localhost:4000 with a browser to actively develop a Jekyll site. This process was used to create this document.
cd Githug/mmikowski.io # Adjust path as needed
jekyll serve
10.7. MongoDB
Sources have been included in the installation shown above. See https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/. Read the documentation on ulimit to improve performance
10.8. Slack
Enter the following into the terminal to install this reliable Electron app.
sudo apt install -y slack-desktop
10.9. shrinkpdf
Use this app to substantially reduce PDF size. Enter the following into the
terminal to create and /usr/local/bin/shrinkpdf
.
# Subsitute vi, emacs, nano, etc for kate
_tgt='/usr/local/bin/shrinkpdf';
sudo touch "${_tgt}";
sudo chmod 755 "${_tgt}";
sudo kate "${_tgt}";
Next copy the contents of Appendix B into the file. Save it and close the editor. One can now test shrinkpdf on PDF documents.
10.10. Telegram
Enter the following into the terminal to install Telegram.
sudo apt install -y telegram-desktop
11. Configure and Optimise (top)
Enter the following into the terminal to configure the MarbleMouse. Skip this step there is no MarbleMouse. See also Ubuntu and Acceleration concepts for increasing acceleration.
sudo apt install -y xserver-xorg-input-evdev
echo 'Section "InputClass"
Identifier "Marble Mouse"
MatchProduct "Logitech USB Trackball"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "ButtonMapping" "1 8 3 4 5 6 7 2 2"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "8"
Option "ZAxisMapping" "4 5"
Option "XAxisMapping" "6 7" # Disable for vertical-only scrolling
Option "Emulate3Buttons" "false"
EndSection
' | sudo tee /usr/share/X11/xorg.conf.d/50-marblemouse.conf
11.2. Link config files
After dropbox has synced, we can link config files from Dropbox. This helps minimize variance from one environment to another. We must create these files into Dropbox first. Please skip this section if these files have not been created in the Dropbox folder.
cd;
for _i in bashrc gitconfig vimrc;
do _tgt=".${_i}";
if [ -e "${_tgt}" ] && ! [ -L "${_tgt}" ]; then mv "${_tgt}" "${_tgt}.O"; fi
rm -f "${_tgt}"; ln -s "Dropbox/01_SharedConfig/${_i}" "${_tgt}";
if [ -e "${_tgt}.O" ]; then
echo "Merge old config into linked ${_tgt}.";
echo "To keep all changes, just close Meld.";
echo "Press <enter> to continue.";
read -r _ignore;
meld "${_tgt}.O" "${_tgt}";
fi
done
11.3. Set IntelliJ dark theme
Start IntelliJ and then select File > Settings > Editor > Color Scheme > Darcula.
11.4. NFS - Add Network Disks
11.4.1. Install the nfsv4 client
Enter the following into the terminal to ensure the NFSv4 client is installed.
sudo apt-get install -y nfs-common
11.4.2. Add NFS drives
Any drive in /etc/fstab
marked with a _netdev
will not be mounted until
the after the network is available. This is needed for NFS and other
network file systems. See Ubuntu NFSv4 and NFSv4 at Boot.
Add NFS drives in /etc/fstab
, one per line, using the following format.
<nfs_server>:<export_dir> <mount_dir> nfs _netdev,auto 0 0
11.5. Optimize Chrome GPU
This is verified with Nvidia GPUs and drivers. Intel mostly works (this is noted below). I do not have and recent experience AMD GPUs (thanks to my past experience with AMD GPUs and Linux).
11.5.1. VDPAU
Enter the following into the terminal to ensure VDPAU drivers are installed.
sudo apt install -y vdpau-driver-all vdpauinfo
11.5.2. Change Chrome flags
Enable all GFX acceleration in Chrome. Check GPU status with chrome://gpu. Adjust flags to enable GPU capabilities in chrome://flags and enable these flags. These names are exact as of Chome 77.
- GPU Rasterization
- Native client
- Out of ordered rasterization
- Override software rendering list
- Skia API for OOP-D compositing
- Zero-copy rasterizer
11.5.3. Update desktop file
Enter the following into the terminal to edit the google-chrome desktop file.
sudo kate /usr/share/applications/google-chrome.desktop
Replace Exec=/usr/bin/google-chrome-stable
with Exec=/usr/bin/google-chrome-stable --enable-native-gpu-memory-buffers
--enable-zero-copy
. There are be 3 replacements.
Enter the following into the terminal to find and (optionally) delete any
google-chrome.desktop
files that could override the system file.
sudo rm -i $(sudo updatedb && locate google-chrome.desktop \
| grep -v '/usr/share/applications' )
11.5.4 Confirm results
See chrome://gpu to confirm the following results.
# Canvas : Hardware accelerated
# Flash : Hardware accelerated
# Flash Stage3D : Hardware accelerated
# Flash Stage3D Baseline profile : Hardware accelerated
# Compositing : Hardware accelerated
# Multiple Raster Threads : Enabled
# Out-of-process Rasterization : Hardware accelerated
# Hardware Protected Video Decode : Hardware accelerated
# Rasterization : Hardware accelerated
# Skia Renderer : Enabled
# Video Decode : Hardware accelerated
# Viz Display Compositor : Enabled
# Viz Hit-test Surface Layer : Enabled
# WebGL : Hardware accelerated
# WebGL2 : Hardware accelerated
IMPORTANT: Disable desktop compositing <shift + alt + f12> to maximize OGL/Vulcan perf. Frame rates can increase by 10x in some cases.
At this point, all the apps from the table are installed and optimized.
11.6. Additional tweaks See Plasma Tips for additional tweaks, especially for Chrome.
12. Trouble Shooting
Starting Kmail
Problem
When starting Kmail, Akonadi errors on start-up. This appears to be a problem due to using MySQL instead of the now default MariaDB.
Solution
Edit ~/.local/share/akonadi/mysql.conf
and comment out the following lines:
# log_warnings=2
# lower_case_table_names=1
# query_cache_size=0
# query_cache_type=0
2019-10-22 Kmail and Gmail
Problem
Adding a Gmail account to Kmail was failing with a message that Google does not recognize Kmail as a trusted app. See this bug report.
Solution
- Enable less secure apps. One may need to approve via an email sent to the gmail account used. Grant approval.
- In Kontact, add the Google account by clicking on Settings > Configure Kmail > Receiving > Add. A window will popup to request Gmail authorization. Enter your details. A warning will be returned that states Sign in with Google temporarily disabled for this app. This app has not yet been verified by Google in order to use Google Sign in. Click on cancel and proceed to decline encryption (this can be added later if desired).
- After adding the account, in Receiving tab click on the account just added and click Modify.
- A modal window will appear. Click on the Advanced tab and then under Connection Settings click on Auto Detect. Next, in the Authentication pulldown near the bottom, select PLAIN.
- On the Sending tab, click on the account and then click Modify. This will bring up a modal window.
- Under the Advanced table, click Auto Detect at the top.
- Click Ok to clse the modal, and OK to close the account setting window.
Syncing should start and sending emails should work.
2019-10-22 Kmail and Yahoo
Problem
After adding a Yahoo acount Kmail reports that it Could not connect to the
IMAP server...
.
Solution
This arises because Yahoo now uses App passwords.
- Log in to Yahoo mailbox and click on your name at the top-right corner. Click on Account Info to go to that page.
- Choose Account Security and then Manage App Passwords.
- Select Other as your app name and provide Kmail as the app name. Then request the password.
- Copy the provide password to the clipboard.
- In Kontact, add the Yahoo account by clicking on Settings > Configure Kmail > Receiving > Add. Provide your normal username, but use the App password copied above.
Syncing should now start and sending emails should work.
Appendix A: Recent Build (top)
All items were purchased from NewEgg and built in July 2019.
Case: Fractal Design Meshify S2
Black ATX Modular High-Airflow Tempered Glass Window Mid Tower Computer Case
CPU: Intel Core i9-9900K
Intel Core i9-9900K Coffee Lake 8-Core, 16-Thread, 3.6 GHz (5.0 GHz Turbo) LGA 1151 (300 Series) 95W BX80684I99900K Desktop Processor Intel UHD Graphics 630
CPU Cooler: EVGA CLC 240mm All-In-One
EVGA CLC 240mm All-In-One RGB LED CPU Liquid Cooler, 2x FX12 120mm PWM Fans, Intel, AMD, 400-HY-CL24-V1
Display: Dell 34” 3440x1440 Monitor
Dell U3417W 34” 3440x1440 2K Resolution 60Hz 5ms DisplayPort Mini-DisplayPort 2xHDMI USB 3.0 Hub Built-in Speakers White Edgelit LED IPS Curved Monitor
GPU: EVGA GeForce RTX 2080 Ti XC Hybrid
EVGA GeForce RTX 2080 Ti DirectX 12 11G-P4-2384-KR 11GB 352-Bit GDDR6 PCI Express 3.0 HDCP Ready XC HYBRID GAMING, 11GB GDDR6, HYBRID & RGB LED
Keyboard: Logitech K310
Washable full-feature keyboard.
Motherboard: ASUS ROG Strix Z390-E Gaming
ASUS ROG Strix Z390-E Gaming LGA 1151 (300 Series) Intel Z390 SATA 6Gb/s ATX Intel Motherboard
Pointer: Logitech MarbleMouse
We love the Logitech MarbleMouse. The trackball provides great control while avoiding repetitive stress injuries.
PSU: EVGA SuperNOVA 850 G2
220-G2-0850-XR 80+ GOLD 850W Fully Modular EVGA ECO Mode Includes FREE Power On Self Tester Power Supply
RAM: G.SKILL TridentZ 64GB 3600 MHz
G.SKILL TridentZ Series 64GB (4 x 16GB) 288-Pin DDR4 SDRAM DDR4 3600 (PC4 28800) Intel Z370 / X299 Desktop Memory Model F4-3600C17Q-64GTZKW
Storage: SAMSUNG 970 PRO M.2 1TB
SAMSUNG 970 PRO M.2 2280 1TB PCIe Gen3. X4, NVMe 1.3 64L V-NAND 2-bit MLC Internal Solid State Drive (SSD) MZ-V7P1T0BW
UPS: CyberPower 1500VA
Webcam: Logitech Webcam C615.
Works out-of-the-box with Hangouts, Skype, Zoom, and other apps. Includes 1080p/30fps and a good mic.
Appendix B: ShrinkPDF (top)
Content for the shrinkpdf
file. Return to Section 10.9 Shrinkpdf
#!/bin/sh
# http://www.alfredklomp.com/programming/shrinkpdf
# Licensed under the 3-clause BSD license:
#
# Copyright (c) 2014, Alfred Klomp
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# 3. Neither the name of the copyright holder nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# Low dpi (72) = better compression. High (300) = better quality
_dpi=72;
shrink () {
gs \
-q -dNOPAUSE -dBATCH -dSAFER \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.3 \
-dPDFSETTINGS=/screen \
-dEmbedAllFonts=true \
-dSubsetFonts=true \
-dColorImageDownsampleType=/Bicubic \
-dColorImageResolution="${_dpi}" \
-dGrayImageDownsampleType=/Bicubic \
-dGrayImageResolution="${_dpi}" \
-dMonoImageDownsampleType=/Bicubic \
-dMonoImageResolution="${_dpi}" \
-sOutputFile="${2}" \
"${1}";
}
check_smaller () {
# If $1 and $2 are regular files, we can compare file sizes to
# see if we succeeded in shrinking. If not, we copy $1 over $2:
if [ ! -f "${1}" -o ! -f "${2}" ]; then
return 0;
fi
ISIZE="$(echo $(wc -c "${1}") | cut -f1 -d\ )";
OSIZE="$(echo $(wc -c "${2}") | cut -f1 -d\ )";
if [ "${ISIZE}" -lt "${OSIZE}" ]; then
echo "Input smaller than output, doing straight copy" >&2
cp "${1}" "${2}";
fi
}
usage () {
echo "Reduces PDF filesize by lossy recompressing with Ghostscript.";
echo "Not guaranteed to succeed, but usually works.";
echo " Usage: ${1} infile [outfile]";
}
IFILE="${1}";
# Set input file name
if [ -z "${IFILE}" ]; then
usage "${0}";
exit 1;
fi
# Default output filename to - (stdout) unless given
if [ ! -z "${2}" ]; then
OFILE="${2}";
else
OFILE="-";
fi
shrink "${IFILE}" "${OFILE}" || exit $?;
check_smaller "${IFILE}" "${OFILE}";
Return to Section 10.9 Shrinkpdf
Appendix C: Preloaded Kubuntu 19.10 Laptop (top)
If you would like to purchase a preconfigured Kubuntu 19.10 laptop with the OS and all the apps installed and tested please send a message. Here is what we have in testing right now. A similarly equipped 15” MacBook Pro cost $900 more, yet this laptop has copius highly currated software, a vastly superior GPU, better Geekbench scores, a much better keyboard, and is more compatible with AWS, Azure, and Google Cloud deployment platforms.
- CPU: Core i7-9750H 6c/12t 4.5GHz
- GPU: 6GB GTX-2060
- RAM: 32GB Dual Channel DDR4 2666 RAM
- Storage: 1TB Samsung 970 EVO Plus NVMe
- Display: 16.1” matte 1080p
- Backlit keyboard
- LED backlit keyboard
- Thin matte black (metal and plastic, 0.78”)
- Broad suite of currated apps preloaded
- Two year waranty
- User expandable SDD, NVMe, and RAM
- Superior cooling
- Estimated $2,399 ($900 less than MBP)
Changelog
2019-12-02
- Added Assessment advising against 19.10 due to regressions
2019-11-02
- Add System Settings paths
- Verified and updated Apt sources
- Audit through Section 9
2019-10-23
- Expand hardware section
- Add Kontact and Kmail to apps
- Add trouble shooting section
- Revise preconfig laptop details
- Fix section numbers
- Add change log