DISCLAIMER: I am not any kind of expert in Linux. I also don't have any kind of background in computer science. In fact, I have only been using a Linux OS for a few months. I just want to share what I learn along the way in case it helps anyone. I will always link resources where you can find additional guidance from people who know more than me.
Introducing: Linux
What is Linux? (and what is it not?)
Linux actually isn't any one thing. Instead, people typically use the name to refer to a diverse range of operating systems (OS). The one thing all of these OS's have in common is that they are all based on the Linux kernel. A kernel is the program that sits at the core of an OS, and can be seen as the "mediator" between your hardware and software. The Linux kernel is unique in that it's free and it's open source (though not every Linux-based OS is free and open source - both Android and ChromeOS are Linux-based). You may see some people say GNU/Linux instead of just Linux - it's the same thing.
There's a lot of mythologizing around Linux, so let's clear up some misconceptions. For one, Linux OS's are not exclusive to computer scientists, programmers, or the tech-savviest of people - anyone can use a Linux OS, so long as they choose the distribution that's right for them (more on that later). Similarly, if you really don't want to, you do not have to use the terminal/command line for most things. On the opposite end of the spectrum, I worry that with the end of Windows 10, a lot of people are speaking about Linux as if it is simply a Windows replacement, which may be creating some false expectations. While there are distributions that are easier to transition to for Windows users, no Linux OS is a one-to-one Windows replacement - or Apple replacement, for that matter. As with any new system, there will be a learning curve of some degree. However, I don't think it's anymore disruptive than switching between Windows 10 and Windows 11, or different versions of Android.
OK, so why should I switch to Linux?
There are many reasons that myself and others have switched to Linux. Here, I'll offer you an incomplete list, from the perspective of a previously lifelong Windows user:
- Affordability. If you're like me, your hardware is not compatible with the Windows 11 update, but you don't want to - or can't - buy an entirely new computer for an update you don't even really care about. Or perhaps you're building your own PC and don't want to pay for an OS to boot it up with.
- Sustainability. Similar to the previous point, such pushes from tech companies to force updates, upgrades, and new purchases causes a lot of waste as people no longer have use for their old devices. If you want to continue to get use out of your device instead of adding to the landfills, booting a Linux OS onto it is a great way to extend its lifespan. With less bloat, it's also considerably easier on your battery.
- Lack of Ads: Many (rightfully) complain about the way Windows pushes ads - in the start menu, through pop-ups, and beyond. Linux does not have any ads at all. It's a breath of fresh air.
- Privacy & Security: The open source nature of Linux means that it's extremely transparent, and can't get away with harvesting and doing whatever it wants with your data. It also means that vulnerabilities are found and security updates are released quicker than with proprietary OS's. Most OS's also have extensive privacy features built in, such as robust firewalls and system user controls. Additionally, while it's not impossible for a Linux OS to be attacked by malware and whatnot, it's not as common, since the sheer amount of different versions of Linux and the relatively small user base means it's just not as profitable for bad actors to spend their time trying to crack into it.
- Freedom of Choice & Customizability: There are so many distributions of Linux to choose from, so you can select something that actually matches with your preferences and how you like to use your computer. What's more, for each distribution, you can usually also choose between different Desktop Environments or Tiling Window Managers (I'll get into this later) which allows you to further tailor your experience. And even after you've chosen all of that, the customization does not end! There are seemingly endless ways to customize your experience on a Linux OS.
- Ethics: You don't need to give your money to some shady billionaire to use Linux. It just feels good to take a stand - any kind of stand - against the tech oligarchs attempting to take over our lives.
- Opportunities to Learn: You can definitely just set up a Linux OS and use it for sending work e-mails and completing school assignments, and that would be perfectly fine - that's what a computer is supposed to do, after all. But in my Linux journey, I've felt compelled to learn about so many things which I not have otherwise become curious about. From the world of free & open source software to shell scripting, using Linux has pushed me to become a more proficient user of technology I've had access to for years.
Choosing a "Distro"
The first step in switching to Linux is choosing what distribution, or "distro", of Linux you would like to use. This may seem very intimidating because there are literally hundreds of them, but when it comes down to it, there's really just a few main ones to choose from as a beginner. You'll want to choose from the most popular distros, since a larger user base usually equates to more work being put into updating and maintaining the distro, a larger community to seek help from, and a higher likelihood of finding compatible software for your needs. There's a lot of technical differences between distros, such as types of package managers and whatnot, but here I'll just cover the general selling points of each.
There are three main "families" of distros that you will want to choose between:
- Debian: Debian and the Debian-based Ubuntu are all about stability, reliability, and ease of software installation and maintenance.
- Fedora: Fedora balances cutting-edge updates with stability. There's also an added emphasis on security. For this reason it tends to be preferred by developers.
- Arch: Arch-based distros follow a rolling release model, which means continuous and constant updates. This is nice for getting bleeding-edge updates all the time, but it also means there's more of a "release first, fix later" mentality around it, resulting in less stability than a Debian-based system. Arch distros are probably the most customizable, but also notorious for being the most difficult to install and use.
My personal take? Beginners should boot up Ubuntu or an Ubuntu-based system (yes, there are distros based on distros based on distros...). I could see an argument for trying out Fedora in certain use cases, and I've heard mostly good things about people's experiences with it. But Arch? I don't really see any reason to start out with that one. If you're the kind of person who would do well with that, I doubt you would need or be reading this guide anyway.
Here are some videos from people who know way more than I do: "Getting Started with Linux, here's the distros beginners should try" on Michael Tunnell's channel and "How to (actually) choose a Linux distro" on the channel Bread on Penguins.
Ubuntu-Based Distros
Here are the Ubuntu-based options you'll likely hear about the most:
- Ubuntu: Ubuntu is known for being extremely user-friendly, even to new users. It's considered something that works well "out-of-the-box" with proprietary drivers already installed for things like NVIDIA Graphics Cards.
- Linux Mint: This is what I use - and I highly recommend it! It's based on Ubuntu's Long-Term Support releases, so it is similarly stable with regular patches and updates. It doesn't require much knowledge to get it working, and it comes with a really handy Software Manager that you can download most common programs from. It's also quite familiar to use, especially if you're used to Windows. Most of my guide will be based on my experience with Linux Mint and I mostly have advice about using this particular distro.
- Pop_OS!: I admittedly know a bit less about this one, but it seems to be one that has gained popularity more recently. From what I can tell, it's selling point is that it more regularly updates its Linux Kernel package... which, from anecdotes I've read on Reddit, seems to improve speed of performance and gaming experience compared to other Ubuntu-based systems.
- elementary OS: This is another one I know less about, but it is touted as a good alternative for people who are used to MacOS. Its release cycle is not quite as fast as other Ubuntu systems.
- And many more! These are only the ones I've heard referenced most frequently in my research when I was looking for the right distro for myself. There are plenty of others with more unique features and built for any kind of purpose you can think of, whether it's ensuring the most privacy and security possible, a distro intended purely for gaming, or even a not-so-functional Biblically-themed coding art project.
What's with these "flavors?"
Okay, so you've chosen the distro you want, you've gone to their website to download it... and now you see that there is yet another decision to make. Most distros are available in different flavors. This refers to the Desktop Environment (DE) that your distro will be shipped with. The DE is essentially the "look" of your OS. It determines the interface you will be looking at and clicking around on - aspects such as the toolbars, start menu, icons, etc.
For instance, if you're interested in Linux Mint, you will have three different flavors/DEs to choose from:
- Cinnamon: A traditional & familiar DE, somewhat similar to Windows 7. It's highly customizable & pleasing to the eye. Depending on your hardware, it can be a bit sluggish. I've heard it recommended that one should have at least 4gb of RAM for Cinnamon.
- Mate: Lightweight but still quite customizable and rich with features. May be slightly better for battery life than Cinnamon. The two look quite similar in my opinion, so if you like the idea of Cinnamon but don't meet the 4gb RAM recommendation, this could be a good alternative.
- XFCE: The lightest and most minimalist flavor of Mint. It may not look quite as nice as Cinnamon or be as customizable, but it's a great option for reviving much older hardware or if you just need the OS for simple tasks and don't care as much about customization options.
As long as it is compatible with your hardware, this is purely a choice based on your personal preferences of how you'd like your setup to look. Take a look at some screenshots and don't stress too much about it.
Booting Your Distro
Once you've chosen your distro, it's time to download it and boot it up. At this point you have two options: you can dual-boot with your current OS, meaning you can switch between your old OS and your chosen Linux one when using your computer, or you can just wipe the old OS completely and replace it with your Linux one. I highly recommend starting with a dual-boot. It is much easier to delete your old OS later if you end up not needing/wanting it anymore than it is to try to recover it.
I recommend following this tutorial to dual boot Linux Mint with Windows.
Learn from my mistakes
Full transparency: it took me three attempts over the course of an entire day to properly install and boot Linux Mint. I don't think this is because it's an inherently difficult thing to do, but just because I over-complicated things for myself and did some dumb stuff. Learn from my mistakes, and don't repeat them!
- Use a recommended program for creating your bootable USB. For some reason I tried to use something called YUMI the first time and it just did not work. I ended up finding better success with Rufus.
- The tutorial I linked gives two options for disk partitioning - doing it from Windows using the built-in Windows Disk Management tool, or using the Linux Mint installer. I highly suggest just shrinking the Windows partition from the Disk Management tool before doing anything with Linux Mint. I completely fucked my shit up by trying to use the Mint installer for this x_x.
- Do not let your computer shut down during the installation process. At best you will have to run a command and wait for hours for Windows to repair corrupt files, at worst... well, I don't know what will happen. But I doubt it's anything good.
Usage & Maintenance
Here's some useful stuff to know for making the most of your Linux Mint setup. (Some of these things may be applicable to other distros, too).
- Ensure that you update consistently. This is pretty easy to do on Linux Mint with the built-in Update Manager. If you want to, you can also perform updates using the terminal by first running this command:
sudo apt-get update
and then this one:sudo apt-get upgrade
- You may be tempted to skip over these things when going through the setup process, but I highly recommend setting up Timeshift and enabling the firewall which comes packaged with Linux Mint but is disabled by default.
- Here's a handy guide to installing, removing, and updating software on Linux Mint.
Programs
One of the most difficult aspects of transitioning to Linux for most people is the loss of some proprietary software which are not available on Linux, such as Adobe or Microsoft products. Programs like Photoshop or Microsoft Office can feel ubiquitous at times, and it's a bit intimidating to find replacements for everything. Here are some suggestions for free, Linux-compatible programs for various purposes, many of which I've used and can personally recommend. I'm also recommending some things that are not replacements for other products, I just think they're cool or helpful, especially for some of the more niche things I need to use my laptop for.
Application Launcher
Audio Ripper
Instead of Exact Audio Copy, use...
Audio Tagger
Instead of the built-in tagger on Windows, use...
File Manager
- Yazi - this is a terminal-based file manager. Your distro probably comes with a built-in file manager and those are perfectly fine, but I just find this to be quicker to use as somebody who likes to rely more on my keyboard than my mouse.
Graphics Editor
Instead of Adobe Illustrator or Clip Studio, use...
- Krita - I used to use Clip Studio and the transition to Krita has been super smooth, in some ways I actually like it even more.
- Inkscape - I haven't used this one but it's pretty popular and well-regarded.
Media Player
Instead of Windows Media Player, use...
- VLC Media Player
- CMUS, for music. This utilizes a Terminal User Interface, so it may be a bit less intuitive, but if you're up for learning something new, I think it's pretty nifty. Here's a tutorial for it.
PDF Converter
- GhostScript - I mostly use this to compress PDFs to make them easier to e-mail. I learned about how to use it from this tutorial.
Photo Editor
Instead of Adobe Photoshop, use...
- Photopea - this is actually an online tool instead of a desktop app, but I've seen it recommended a lot.
- Even though it's intended as more of a graphics editor, I honestly just use Krita for my photo editing needs, and it has done the trick so far.
- GIMP - I am only including this on here because so many people recommend it as the default replacement for Photoshop. In all honesty, I hate using it (I have tried to use multiple versions on both Windows and Linux Mint and it is always laggy and un-intuitive). But it's free after all, so you could still give it a try and see if it works better for you.
Productivity/Note-Taking
Instead of Notion, use...
Video Editor
Instead of Adobe Premiere, use...
- DaVinci Resolve - I have not used this one but it seems to be the go-to for video creators working on Linux.
- Lightworks - the free version has more than enough functionality for me as someone who only needs it for casual/hobby type stuff.
Word Processors
Instead of Microsoft Office, use...
- LibreOffice
- OpenOffice - this is what I use and I like it, but that's probably just because I'd already been using it for a dozen or so years. Most people prefer Libre.
Shell Scripting
This isn't something you have to learn how to do just because you're on a Linux OS, but I think it's pretty neat! Shell scripting is basically a way of automating certain tasks, by creating a bash script that contains a whole series of commands, which you can then run in one go so that you don't have to do everything step-by-step every time. I am really just a beginner in this so I recommend watching this video and following this guide to learn more about them and how to make them.
Some of my own shell scripts!
These functions are a bit specialized but feel free to use them if you'd like, or get some inspiration for what you can do with shell scripting!
Generate a random item from a list
This one is super simple. I use it to choose books from my TBR or movies from my watchlist. All you need is a .txt file with a simple list in it.
shuf -n 1 ~filepath/filename.txt
Grab album covers from the Internet
I use this code to: download album cover images from the Internet, name them "cover.jpg", format them to the correct size, and place them in the corresponding file of music on my computer, so that it's easier for me to add the album cover to the song files from Kid3. This requires you to have installed xclip.
#this part grabs the URL from the clipboard.
URL=$(xclip -o -selection clipboard)
#this specifies the output directory
OUTPUT_DIR=~/filepath/$1
OUTPUT_FILE="$OUTPUT_DIR/cover.jpg"
#finally, this downloads and resizes the image
wget -O "$OUTPUT_FILE" "$URL" && convert "$OUTPUT_FILE" -resize 300x300 "$OUTPUT_FILE"
To run it, I copy the image link, then I put this in the CLI:
~./script.sh "Artist File"/"Album File"
Helpful Links
General Resources
- Arch Wiki - there's so much helpful stuff on here even if you're not using Arch.
- Bye Bye Windows 10
- Easy Linux Tips Project
- It's FOSS
- OSTechnix
- TheLinuxCode
Man Pages
Bash & Shell Scripting Help
Forums
Each forum has its own rules and etiquette for requesting help. Please take a look at those before posting. Additionally, chances are somebody has had your same problem before, so it's worth searching the forums to see if somebody has already answered your question before posting.
- Arch Linux Forums
- Ask Ubuntu
- Fedora Forum
- JustLinux
- Linux Mint Forums
- Linux.org Forums
- Unix & Linux Stack Exchange
- Do not waste your time on Reddit, people there are not nearly as helpful as the people in these more dedicated forums.
Misc. Tutorials
- How to Customize Desktop Cursors with Cinnamon Desktop on Linux Mint
- How to Find, Download and Install Custom Icons on Linux Mint 21: An Expert's Guide
- Security in Linux Mint and Ubuntu: An Explanation and Some Tips
- Set Up Android File Synchronization with GNU/Linux Using Syncthing (this is so specific but this is how I transfer my music library from my computer to my phone-turned-audio-player).
Glossary
- Bash
- The syntax often used by default for the command line of most Linux operating systems. Basically, it's the language you use in the Command Line Interface.
- Bootloader
- "A computer program that is responsible for booting a computer and booting an operating system. If it also provides an interactive menu with multiple boot choices then it's often called a boot manager" [Wikipedia].
- Boot Manager
- See: Bootloader.
- Command-Line Interface (CLI)
- (Sometimes also called the "command-line shell" or just the "command-line"). This is the means by which you can interact with software using lines of text or script. You may have never had a reason to use this before, but you'll recognize it as the blank black box referred to as the "Terminal", or, on Windows, the "Command Prompt."
- Desktop Environment (DE)
- This is the graphical user interface that allows a user to interact with the operating system. The DE usually includes a set of icons, windows, toolbars, folders, widgets, etc.
- Disk Partition
- An allocation of space on a computer's disk, usually for an installation of an operating system, a bootloader, recovery files, and/or extra space for data.
- Distribution (Distro)
- An operating system that includes the Linux kernel, and often other components like its own tools and file systems. Each distro can be seen as a different "form" of Linux. They vary in intended function and ease of use.
- Dual-Boot
- Having two or more different operating systems installed onto your computer, which allows you to boot up your computer in whichever one you'd like each time you start it using the boot manager.
- Flavor
- See: Desktop Environment (DE).
- Kernel
- The program that makes up the core of an operating system, and can be seen as the "mediator" between hardware (the laptop itself) and software (the stuff you use on the laptop). Unlike other software, the kernel is always running.
- Man Page
- Short for "manual page." These are the helpfiles for Unix and Linux operating systems and software. They often include lists of commands and other information on how to use your system/software.
- Open Source
- "Source code that is made freely available for possible modification and redistribution [...] the open source model is a decentralized software development model that encourages open collaboration" [Wikipedia].
- Operating System (OS)
- The software that mediates between a computer's resources (ie. memory) and the user's activities and applications. Operating systems always include a kernel, and may include other built-in software as well. Examples of operating systems include Android, Windows, iOS, macOS, and Linux.
- Package Manager
- The tool used to install, remove, or upgrade software. Different Linux distros use different package managers. If you're curious about learning more, check out this page on Understanding Package Managers and systemctl.
- Rolling Release
- "Software packages are tested and then released immediately to the stable version of the Linux distribution. Depending on your distribution, they may not even see much testing before they're released as stable updates. When a new version of an application or system utility is released, it will head straight to the current Linux distribution" [How-To Geek]. Contrast with: Standard Release.
- Shell Script
- A type of file (.sh) which contains a sequence of commands, which can then be run all at once instead of having to type the entire sequence every single time.
- Standard Release
- (Sometimes also called "point releases" or "stable releases"). This is the usual model for most distros. It means that new versions of the distro are released on a consistent schedule. ie. a new version of Ubuntu is released every 6 months. These new versions come with all of the latest versions of all software and utilities. Security patches and bug fixes may be released in between, but for the most part, the release will remain "frozen-in-time." Contrast with: Rolling Release.
- Terminal
- See: Command-Line Interface (CLI).
- Tiling Window Manager
- See: Window Manager (WM).
- Window Manager (WM)
- "System software that controls the placement and appearance of windows within a windowing system in a graphical user interface" [Wikipedia]. These determine the behavior of windows. In Linux communities, you will hear a lot of people talking about Tiling Window Managers. These managers "paint all windows on-screen by placing them side by side or above and below each other, so that no window ever covers another" [Wikipedia].