<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Desktop on Sysadmin Tales</title>
    <link>https://blog.ssb-tech.net/tags/desktop/</link>
    <description>Recent content in Desktop on Sysadmin Tales</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 02 Oct 2026 21:39:10 -0400</lastBuildDate>
    <atom:link href="https://blog.ssb-tech.net/tags/desktop/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to build up Fedora Server Edition to a desktop</title>
      <link>https://blog.ssb-tech.net/posts/building-fedora-server-into-a-desktop/</link>
      <pubDate>Sun, 08 Dec 2024 16:44:53 -0500</pubDate>
      <guid>https://blog.ssb-tech.net/posts/building-fedora-server-into-a-desktop/</guid>
      <description>&lt;h1 id=&#34;how-to-build-up-fedora-server-edition-to-a-desktop&#34;&gt;How to build up Fedora Server Edition to a desktop&lt;/h1&gt;&#xA;&lt;p&gt;In this article I&amp;rsquo;ll go over how to take the Fedora Server Edition image and build it up into a full desktop.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-download-the-fedora-server-edition-iso&#34;&gt;1. Download the Fedora Server Edition ISO.&lt;/h2&gt;&#xA;&lt;p&gt;Download the latest .iso (DVD) release from &lt;a href=&#34;https://fedoraproject.org/server/download&#34;&gt;here.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Burn it to a USB stick using whichever method you prefer, and boot into it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;2-set-software-selections-to-custom&#34;&gt;2. Set Software Selections to custom&lt;/h2&gt;&#xA;&lt;p&gt;Once in the Fedora installer, the first step we want to take is to go into &amp;ldquo;Software Selections&amp;rdquo; and set it to &amp;ldquo;custom&amp;rdquo; instead of the Server Edition.&lt;/p&gt;&#xA;&lt;p&gt;The &amp;ldquo;Server Edition&amp;rdquo; option will install the Cockpit web management package along with the OS. Not something I want installed on my desktop, personally, but if you think that&amp;rsquo;s something you&amp;rsquo;d like to have, go for it. It will make no difference to the rest of the process.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Fedora Software Selections&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ssb-tech.net/posts/building-fedora-server-into-a-desktop/images/fedora-software-selections.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;3-create-disk-partitions&#34;&gt;3. Create disk partitions.&lt;/h2&gt;&#xA;&lt;p&gt;Enter the partition layout editor and select &amp;ldquo;custom&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Custom partition layout&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ssb-tech.net/posts/building-fedora-server-into-a-desktop/images/fedora-custom-part.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;For the &amp;ldquo;New mount points&amp;rdquo; dropdown, pick btrfs.&lt;/p&gt;&#xA;&lt;p&gt;Click the plus button to create a new partition.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;BTRFS dropdown&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ssb-tech.net/posts/building-fedora-server-into-a-desktop/images/fedora-btrfs-drop.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;We will create a single partition of 1GB for the EFI bootloader, leaving the rest for the OS and user data.&lt;/p&gt;&#xA;&lt;p&gt;Set the mountpoint of this partition to &lt;code&gt;/boot/efi&lt;/code&gt;, and check the box to reformat the disk.&#xA;This will allow you to select the &amp;ldquo;EFI System Partition&amp;rdquo; type.&lt;/p&gt;&#xA;&lt;p&gt;For the rest of the disk, create a single btrfs partition.&lt;/p&gt;&#xA;&lt;p&gt;We will subdivide this using btrfs subvolumes.&lt;/p&gt;&#xA;&lt;p&gt;Use the + button to create 4 more &amp;ldquo;partitions&amp;rdquo;, though since we&amp;rsquo;ve already occupied the entire disk these will be subvolumes instead of partitions. You can see this by looking on the right side under the &amp;ldquo;Volume&amp;rdquo; dropdown. By default the btrfs volume name is &amp;ldquo;fedora&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s no real reason to change this, so we&amp;rsquo;ll leave it alone.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;For the first subvolume, give it a mount point of &lt;code&gt;/&lt;/code&gt; and change the name from &lt;code&gt;root&lt;/code&gt; to &lt;code&gt;@&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;For the second subvolume, the mount point will be &lt;code&gt;/home&lt;/code&gt; and the name will be &lt;code&gt;@home&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Subvolume 3 will be mounted at &lt;code&gt;/var/log&lt;/code&gt; and called &lt;code&gt;@log&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Subvolume 4 will be mounted at &lt;code&gt;/.snapshots&lt;/code&gt; and called &lt;code&gt;@.snapshots&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Following these naming conventions will allow us to use the &lt;code&gt;timeshift&lt;/code&gt; snapshotting tool, as it expects the Ubuntu btrfs naming conventions, as I&amp;rsquo;ve used here.&lt;/p&gt;&#xA;&lt;p&gt;If you wish to create any more subvolumes, you can do so now, but that&amp;rsquo;s enough for me.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s what it should look like at the end:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Final partition layout&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ssb-tech.net/posts/building-fedora-server-into-a-desktop/images/fedora-final-layout.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Keep in mind that if you&amp;rsquo;d like to use a different layout than the one I used here, or if you&amp;rsquo;d like to put your &lt;code&gt;/home&lt;/code&gt; partition on a different disk entirely, that&amp;rsquo;s entirely OK.&lt;/p&gt;&#xA;&lt;p&gt;Just keep in mind - you need &lt;em&gt;at least&lt;/em&gt; a root partition &lt;code&gt;/&lt;/code&gt; and an EFI partition &lt;code&gt;/boot/efi&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;4-create-a-user&#34;&gt;4. Create a user&lt;/h2&gt;&#xA;&lt;p&gt;I recommend creating a user at this point with superuser privileges. You can also, if you wish, enable the root account and give it a password, but I won&amp;rsquo;t bother.&lt;/p&gt;&#xA;&lt;h2 id=&#34;5-finish-the-installation&#34;&gt;5. Finish the installation&lt;/h2&gt;&#xA;&lt;p&gt;At this point you can proceed with installing the OS.&lt;/p&gt;&#xA;&lt;p&gt;Once the installation is done, reboot your machine and log into your new operating system.&lt;/p&gt;&#xA;&lt;h2 id=&#34;6-install-updates&#34;&gt;6. Install updates&lt;/h2&gt;&#xA;&lt;p&gt;You&amp;rsquo;ll be greeted with a command line only interface. Don&amp;rsquo;t worry, we&amp;rsquo;ll fix that in a moment.&lt;/p&gt;&#xA;&lt;p&gt;First, run the below command and get any pending updates out of the way.&lt;/p&gt;&#xA;&lt;p&gt;Reboot may or may not be necessary if there&amp;rsquo;s not a new kernel.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dnf upgrade &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo reboot now&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;7-install-software&#34;&gt;7. Install software.&lt;/h2&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t use a typical desktop environment, I use SwayWM, but I do use GDM as my display manager, so we&amp;rsquo;ll be installing a few Gnome packages.&lt;/p&gt;&#xA;&lt;p&gt;If you wish to install Gnome instead of Sway, you can use the following command:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dnf group install gnome&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;install-swaywm&#34;&gt;Install SwayWM&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dnf group install swaywm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;install-the-gnome-display-manager-gdm&#34;&gt;Install the Gnome Display Manager (GDM)&lt;/h3&gt;&#xA;&lt;p&gt;This package will handle our login sessions and give us the nice login screen to log into Sway with.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dnf install gdm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;set-default-systemd-target&#34;&gt;Set default systemd target&lt;/h3&gt;&#xA;&lt;p&gt;Right now, the multi-user.target is the default systemd target on login.&lt;/p&gt;&#xA;&lt;p&gt;If we want our GUI to start upon boot, we need to make this &lt;code&gt;graphical.target&lt;/code&gt; instead.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl set-default graphical.target&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;install-recommended-packages&#34;&gt;Install recommended packages&lt;/h3&gt;&#xA;&lt;p&gt;These packages can be useful if we need to build anything from source, or if you use anything like Neovim with &lt;code&gt;nvim-treesitter&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dnf install make automake gcc gcc-c++ kernel-devel tar unzip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;install-the-rpmfusion-repos-and-media-codecs&#34;&gt;Install the RPMFusion repos and media codecs.&lt;/h3&gt;&#xA;&lt;p&gt;Red Hat does not bundle these codecs with Fedora, so if you want hardware decoding for H264 and H265 (and you do), run this command to take care of all of that.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;rpm -E %fedora&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;.noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;rpm -E %fedora&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;.noarch.rpm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dnf group install multimedia sound-and-video&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If the above command doesn&amp;rsquo;t work for some reason, try running another &lt;code&gt;sudo dnf upgrade&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;For some reason the first time I added the rpmfusion repos, the multimedia group wasn&amp;rsquo;t available until after I ran that.&lt;/p&gt;&#xA;&lt;h3 id=&#34;extra-goodies&#34;&gt;Extra Goodies&lt;/h3&gt;&#xA;&lt;p&gt;Set dark GTK theme by default:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gsettings set org.gnome.desktop.interface color-scheme &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prefer-dark&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Most GTK applications will respect this and avoid the eye-rending white backgrounds.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update 2024/12/24&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;You probably also want to install some fonts. After writing this post, I discovered that Fedora Server is missing a &lt;code&gt;Dingbats&lt;/code&gt; font that contains specific symbols.&lt;/p&gt;&#xA;&lt;p&gt;You can get this by installing a font like &lt;a href=&#34;https://fontlibrary.org/en/font/symbola&#34;&gt;Symbola&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I also recommend installing a Nerd Font like FiraCode from &lt;a href=&#34;https://www.nerdfonts.com/font-downloads&#34;&gt;the Nerd Font website.&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You can put them in a few different locations:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;/usr/share/fonts&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;/usr/local/share/fonts&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;~/.local/share/fonts&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Personally, I like installing them to &lt;code&gt;/usr/local/share/fonts&lt;/code&gt; so that they&amp;rsquo;re available to all users on the system. (Even though I&amp;rsquo;m typically the only user on my systems.)&lt;/p&gt;&#xA;&lt;p&gt;Download the font zip file.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo unzip font.zip -d /usr/local/share/fonts/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chown root:root /usr/local/share/fonts/font*.ttf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;start-and-enable-gdm&#34;&gt;Start and enable GDM&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl enable gdm &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo systemctl start gdm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will kick you over to the Gnome Display Manager and allow you to log into any desktop environments or Wayland compositors you may have installed.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re using Gnome, it will be a very basic installation without any packages to speak of besides the absolute necessities, but this is why we install things from the server edition - to get a more minimal install without bloat.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve also created a script to make the process of getting things to a full desktop simpler - feel free to use it as a base!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://gist.github.com/BladeWDR/e9c4d794458ec7715133f25a4318ed4e&#34;&gt;Fedora setup script gist&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
