Lecture 14++: The GNU/Linux Experience
--- class: center, middle # GNU/Linux experience --- ## GNU/Linux experience * Linux distros typically revolve around free software * Imagine an OS that doesn't force you to update and doesn't take telemetry * smol as you want * Lots of software also have Linux versions --- ## GNU/Linux experience * GNU/Linux offers a very large degree of freedom in setting up your system * __You__ are in control of your computer * Lots of free alternatives to commonly used software * __Office applications__: LibreOffice * __Note taking__: Xournal++ * __Video editing__: Kdenlive * __Photo processing__: darktable * __Art__: GIMP, Krita, Inkscape * [Fun list (it's for Arch, but gives a sense of what's there)](https://wiki.archlinux.org/index.php/List_of_applications) --- class: center, middle # Linux isn't just terminals (demo) --- ### Building your own environment * A Linux distribution encompasses a software collection, the Linux kernel, and a particular philosophy * Many distributions come with a lot of stuff and a particular look a feel, but you still hav ethe ability to radically change how they look and operate #### What's most evident is the graphical user interface (GUI); here's some vocab * __Display server__: software that handles the graphics for various client applications * e.g. X11, Wayland * __Window manager__: software that manages control and appearance of windows * e.g. awesome, i3, xmonad * __File manager__: software that presents an interface for managing files * e.g. Nautilus, Dolphin * __Desktop environment__: an all-in-one integrated environment that presents a full desktop experience, integrating a window manager, toolbars, file manager, network management, web browsing, etc. * e.g. GNOME, KDE Plasma, Xfce, LXQt --- ### Putting it together from the ground up * I'll be using virtual machines to illustrate the OS installation process * Virtual machines (in this context) are emulated computer systems * You have virtual CPUs and virtual storage and virtual monitors for your virtual machine * You can install operating systems on them and treat them like any other computer * Fun fact: the course server is running on a virtual machine -- * I'll first install Ubuntu Linux on a VM to illustrate the typical Linux installation process * I'll then install Arch Linux on a VM to illustrate putting together a personalized setup piece by piece * It's relatively quick to install since it doesn't install much in the beginning * While I stan Arch, there's nothing wrong about other distros --- ### Putting it together from the ground up * Installation media * Setting up a VirtualBox VM * OS installation * Ubuntu * Arch * OS setup and customization --- ## Random other things ### My personal dev environment * What you've seen during class is Linux running directly off of my laptop * No virtual machine here, not even dual booted * OS:
(btw i use)
__Arch Linux__ * Terminal emulator: __Alacritty__ * Former rxvt-unicode user until I learned how bad its font handling was * Shell: __Zsh__ * Window manager: __i3-gaps__ * Compositor: __picom__ * Does window transparency effects * Notification server: __dunst__ * Displays notifications --- ## Random other things ### My personal dev environment * Editor: __Vim__ * System monitoring: __htop__ * Other tools: * __tmux__ (terminal multiplexer) * __cscope__ (code navigation tool) * __ncdu__ (ncurses disk usage) * __Xournal++__ (note taking) --- --- class: center, middle # Questions?