site

Website Content
git clone https://git.pngu.org/site
Log | Files | Refs | README

commit 7d00c8350c3b1d4e5701fd25af93ebfd11fec7e2
parent e8e07c1273b41f6c011053cd300148396214f351
Author: Jack Sangdahl <jack@pngu.org>
Date:   Fri, 20 Feb 2026 12:42:56 -0700

Add Gentook Desktop page & related data

Also...
- Update .gitignore
- Add a couple additional links to content.html & index.html
- Tidy up template

Diffstat:
M.gitignore | 1+
Mcontent.html | 7+++++--
Adata/desktop.jpg | 0
Adata/desktop_lscpu | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adata/desktop_lspci | 107+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agentoo_desktop.html | 207+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mindex.html | 11+++--------
Mstyle.css | 6++++++
Mtemplate.html | 12+-----------
9 files changed, 386 insertions(+), 21 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1 +1,2 @@ staging +.DS_Store diff --git a/content.html b/content.html @@ -11,8 +11,10 @@ <h3>Content &amp; Postings</h3> <h4>Computers</h4> <ul> - <li><a href="https://git.pngu.org/dots/commit/?h=pluto" target="_blank">Gentoo Desktop</a></li> - <li><a href="https://git.pngu.org/dots/commit/?h=kepler" target="_blank">Artix Laptop</a></li> + <li> + <a href="gentoo_desktop.html">Gentoo Desktop</a> + </li> + <li><a href="artix_laptop.html">Artix Laptop</a></li> <li><a href="https://git.pngu.org/dots/commit/?h=xena" target="_blank">macOS Laptop</a></li> <li><a href="https://git.pngu.org/server">Debian Server</a></li> <li><a href="programs.html">Programs &amp; Utilities</a></li> @@ -22,6 +24,7 @@ <ul> <li>QMK Firmware</li> <li><a href="keyboard_design.html">Designs</a></li> + <li>Collection (some of...)</li> </ul> <h4>Projects</h4> <ul> diff --git a/data/desktop.jpg b/data/desktop.jpg Binary files differ. diff --git a/data/desktop_lscpu b/data/desktop_lscpu @@ -0,0 +1,56 @@ +Architecture: x86_64 + CPU op-mode(s): 32-bit, 64-bit + Address sizes: 43 bits physical, 48 bits virtual + Byte Order: Little Endian +CPU(s): 16 + On-line CPU(s) list: 0-15 +Vendor ID: AuthenticAMD + Model name: AMD Ryzen 7 3700X 8-Core Processor + CPU family: 23 + Model: 113 + Thread(s) per core: 2 + Core(s) per socket: 8 + Socket(s): 1 + Stepping: 0 + Frequency boost: enabled + CPU(s) scaling MHz: 51% + CPU max MHz: 4426.1709 + CPU min MHz: 2200.0000 + BogoMIPS: 7189.22 + Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtsc + p lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 mo + vbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce to + poext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 c + qm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsave + erptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vm + load vgif v_spec_ctrl umip rdpid overflow_recov succor smca sev sev_es +Virtualization features: + Virtualization: AMD-V +Caches (sum of all): + L1d: 256 KiB (8 instances) + L1i: 256 KiB (8 instances) + L2: 4 MiB (8 instances) + L3: 32 MiB (2 instances) +NUMA: + NUMA node(s): 1 + NUMA node0 CPU(s): 0-15 +Vulnerabilities: + Gather data sampling: Not affected + Ghostwrite: Not affected + Indirect target selection: Not affected + Itlb multihit: Not affected + L1tf: Not affected + Mds: Not affected + Meltdown: Not affected + Mmio stale data: Not affected + Old microcode: Not affected + Reg file data sampling: Not affected + Retbleed: Mitigation; untrained return thunk; SMT enabled with STIBP protection + Spec rstack overflow: Mitigation; Safe RET + Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl + Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization + Spectre v2: Mitigation; Retpolines; IBPB conditional; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected + Srbds: Not affected + Tsa: Not affected + Tsx async abort: Not affected + Vmscape: Mitigation; IBPB before exit to userspace diff --git a/data/desktop_lspci b/data/desktop_lspci @@ -0,0 +1,107 @@ +00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex + Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex +00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU + Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU +00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge +00:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge + Subsystem: Advanced Micro Devices, Inc. [AMD] Device 1453 + Kernel driver in use: pcieport +00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge + Subsystem: Advanced Micro Devices, Inc. [AMD] Device 1453 + Kernel driver in use: pcieport +00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge +00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge +00:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge + Subsystem: Advanced Micro Devices, Inc. [AMD] Device 1453 + Kernel driver in use: pcieport +00:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge +00:05.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge +00:07.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge +00:07.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B] + Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B] + Kernel driver in use: pcieport +00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge +00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B] + Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B] + Kernel driver in use: pcieport +00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 61) + Subsystem: Gigabyte Technology Co., Ltd Device 5001 + Kernel modules: i2c_piix4, sp5100_tco +00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51) + Subsystem: Gigabyte Technology Co., Ltd Device 5001 +00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 0 +00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 1 +00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 2 +00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 3 + Kernel driver in use: k10temp + Kernel modules: k10temp +00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 4 +00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 5 +00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 6 +00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 7 +01:00.0 Non-Volatile memory controller: Sandisk Corp SanDisk Extreme Pro / WD Black SN750 / PC SN730 / Red SN700 NVMe SSD + Subsystem: Sandisk Corp SanDisk Extreme Pro / WD Black SN750 / PC SN730 / Red SN700 NVMe SSD + Kernel driver in use: nvme + Kernel modules: nvme +02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset USB 3.1 XHCI Controller + Subsystem: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller + Kernel driver in use: xhci_hcd +02:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset SATA Controller + Subsystem: ASMedia Technology Inc. ASM1062 Serial ATA Controller + Kernel driver in use: ahci +02:00.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset Switch Upstream Port + Subsystem: ASMedia Technology Inc. Device 0201 + Kernel driver in use: pcieport +03:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset Switch Downstream Port + Subsystem: ASMedia Technology Inc. Device 3308 + Kernel driver in use: pcieport +03:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset Switch Downstream Port + Subsystem: ASMedia Technology Inc. Device 3308 + Kernel driver in use: pcieport +03:08.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset Switch Downstream Port + Subsystem: ASMedia Technology Inc. Device 3308 + Kernel driver in use: pcieport +03:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 500 Series Chipset Switch Downstream Port + Subsystem: ASMedia Technology Inc. Device 3308 + Kernel driver in use: pcieport +05:00.0 Non-Volatile memory controller: Intel Corporation SSD 660P Series (rev 03) + Subsystem: Intel Corporation Device 390d + Kernel driver in use: nvme + Kernel modules: nvme +06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05) + DeviceName: RTL8111E Giga LAN + Subsystem: Gigabyte Technology Co., Ltd Device e000 + Kernel driver in use: r8169 + Kernel modules: r8169 +07:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a) + Subsystem: Intel Corporation Wi-Fi 6 AX200NGW + Kernel driver in use: iwlwifi + Kernel modules: iwlwifi +08:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch (rev c1) + Kernel driver in use: pcieport +09:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch + Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch + Kernel driver in use: pcieport +0a:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 23 [Radeon RX 6600/6600 XT/6600M] (rev c1) + Subsystem: ASUSTeK Computer Inc. Device 05d3 + Kernel driver in use: amdgpu + Kernel modules: amdgpu +0a:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21/23 HDMI/DP Audio Controller + Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21/23 HDMI/DP Audio Controller + Kernel driver in use: snd_hda_intel + Kernel modules: snd_hda_intel +0b:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function + Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function +0c:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP + Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP +0c:00.1 Encryption controller: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP + Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP + Kernel driver in use: ccp +0c:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller + Subsystem: Gigabyte Technology Co., Ltd Device 5007 + Kernel driver in use: xhci_hcd +0c:00.4 Audio device: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller + DeviceName: Realtek ALC1220 + Subsystem: Gigabyte Technology Co., Ltd Device a0c3 + Kernel driver in use: snd_hda_intel + Kernel modules: snd_hda_intel diff --git a/gentoo_desktop.html b/gentoo_desktop.html @@ -0,0 +1,207 @@ +<!doctype html> +<html lang="en"> + <head> + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <title>Gentoo Desktop</title> + <script src="header.js"></script> + </head> + <body> + <a style="text-decoration: none" href="content.html">&lt;--</a> + <h2>Gentoo Desktop</h2> + <p><i>2021-12-20</i></p> + <hr /> + <p> + This page covers various features and notes of my AMD Desktop running Gentoo Linux, where the + majority of my time is spent. My system configuration can be found + <a href="https://git.pngu.org/dots/tree/?h=pluto" target="_blank">here</a>. The programs I use + on this system can mostly be found <a href="programs.html">here</a>. + </p> + <h3>Hardware Overview</h3> + <ul> + <li>Ryzen 7 3700X 8-core @ 3.6GHz</li> + <li>Radeon RX 6600/6600 XT/6600M</li> + <li>16 GiB Memory</li> + <li>MSI B550i Motherboard</li> + <li>Intel AX200 Network/Bluetooth Controller</li> + <li> + <a href="data/desktop_lspci" target="_blank"><code>lspci</code></a + >, <a href="data/desktop_lscpu" target="_blank"><code>lscpu</code></a> + </li> + </ul> + <img class="inline-image" src="data/desktop.jpg" alt="desktop.jpg" /> + <h3>System</h3> + <h4>Profile</h4> + <p> + This system uses a combined <code>llvm</code> and <code>no-multilib</code> profile. I came to + this decision after having spent a few years working out what software I use on a day-to-day + basis, and learned I have no need for any 32-bit programs, and thus can omit support for them + entirely from my system. A non-multilib system mostly provides security benefits in the sense + that 32-bit support can be disabled in the kernel, significantly reducing vulnerability + surface area. This also means 32-bit libraries don't need to (cannot) be compiled when + building packages. This helps reduce the compile time needed for + <code>sys-devel/gcc</code> and <code>sys-libs/glibc</code> by quite a bit. <br /><br /> + In addition to this, I have opted for an LLVM system profile. This means that by default, + Portage will build packages with Clang(++). The LLVM toolchain has become more widely + supported and rarely runs into issues compiling software. On occasion however, a package may + fail to compile under Clang. In this case, a GCC fallback environment can be used: + </p> + <pre><code class="language-shell"># /etc/portage/env/compiler-gcc + +COMMON_FLAGS="-march=znver2 -O2 -pipe" +CFLAGS="${COMMON_FLAGS}" +CXXFLAGS="${COMMON_FLAGS}" +LDFLAGS="-Wl,--as-needed" + +CC="gcc" +CXX="g++" +CPP="gcc -E" +AR="ar" +NM="nm" +RANLIB="ranlib"</code></pre> + <p>And then applied to a package as such:</p> + <pre><code class="language-shell"># /etc/portage/package.env + +sci-electronics/verilator compiler-gcc +net-libs/libtirpc compiler-gcc</code></pre> + <p> + Most benefits of Clang its counterparts of negligible in most ways, but one may notice + slightly quicker compile times and reduced memory usage with some programs. Clang is also + capable of compiling the Linux kernel, and is known to also produce slightly more secure + binaries. I primarily opted for this setup, as I use LLVM tooling across all my systems, and + appreciate consistency. + </p> + <h4>Portage</h4> + <p> + Despite a slightly complex setup of combing profiles, my <code>make.conf</code> is fairly + simple. This is a graphical desktop system that primarily runs under Wayland, but still has + some X dependencies unfortunately. + </p> + <pre><code class="language-shell"># /etc/portage/make.conf + +COMMON_FLAGS="-march=znver2 -O2 -pipe" +CFLAGS="${COMMON_FLAGS}" +CXXFLAGS="${COMMON_FLAGS}" +FCFLAGS="${COMMON_FLAGS}" +FFLAGS="${COMMON_FLAGS}" +USE="wayland X elogind bluetooth" +VIDEO_CARDS="amdgpu radeonsi" +ACCEPT_LICENSE="*" +ACCEPT_KEYWORDS="~amd64"</code></pre> + <p> + Global USE flags really should only be set if multiple packages make use of them. Hence the + small number of them above. Prior to installing a package, I prefer to take a quick look at + its USE flags and set them appropriate. This greatly helps in reducing dependency packages for + functionality that may not be needed. + </p> + <pre><code class="language-shell"># /etc/portage/package.use + +app-admin/doas persist # persist functionality, like that of sudo +dev-lang/rust system-llvm # do not build a separate llvm toolchain for only rust +x11-libs/libdrm video_cards_radeon +gui-apps/waybar network pipewire # needed to show wireless network and pipewire audio statuses +media-video/pipewire flatpak pipewire-alsa sound-server dbus +media-gfx/imv jpeg png svg +media-sound/spotify local-playback pulseaudio libnotify # local-playback allows for playing local audio files +media-fonts/noto cjk +net-libs/nodejs npm +net-wireless/iwd standalone # configure iwd to use built-in dhcp client +sys-kernel/installkernel dracut uki +sys-apps/systemd-utils boot kernel-install</code></pre> + <h4>Bootloader</h4> + <p> + This system does not have a traditional bootloader, such as GRUB. My "boot requirements" are + fairly minimal, meaning I prefer to use BIOS to boot alternate operating systems, and I + believe my system is stable enough I do not need multiple kernels or an emergency command + line. As such, a unified kernel image (<a + href="https://uapi-group.org/specifications/specs/unified_kernel_image" + target="_blank" + >UKI</a + >) can be used instead. Creates a bootable image that bundles microcode, initramfs, kernel + image, etc. into one binary that can be exposed to BIOS or another bootloader like GRUB. + <br /><br /> + Configuring this is fairly straight forward. + </p> + <ol> + <li> + <p> + A "stub loader" is required, which is in the form of Systemd software. The + <code>sys-apps/systemd-utils</code> package can be install with the <code>boot</code> and + <code>kernel-install</code> USE flags. + </p> + </li> + <li> + <p> + Assuming <code>sys-kernel/installkernel</code> is used to handle the kernel installation + process, add the <code>dracut</code> and <code>uki</code> USE flags to this package. This + will instruct <code>installkernel</code> to use Dracut to generate the UKI. + </p> + </li> + <li> + <p> + Dracut's default layout settings should work for most, however the root partition needs to + be passed to the kernel command line. Find the UUID with <code>blkid</code>. + </p> + <pre><code class="language-shell"># /etc/dracut.conf.d/uki.conf +uefi="yes" +kernel_cmdline="root=UUID=883b14d7-d9aa-4b1f-b3ef-7eec02c6c5c0 ro"</code></pre> + </li> + <li> + <p> + After <code>installkernel</code> executes (i.e. after installing/updating a kernel), an + EFI stub can be created to boot directly from BIOS. It is important that the ESP is + mounted, so the EFI stub can be installed. + </p> + <pre><code>efibootmgr --create --disk /dev/sdX --part partition_number --label "Gentoo Linux x.y.z" --loader 'EFI\Linux\linux-x.y.z-gentoo.efi'</code></pre> + <p> + In the above, the <code>disk</code> parameter should be only the identifier of the entire + disk (e.g. <code>nvme0n1</code>), and the <code>part</code> parameter is the partition + number (e.g. simply "1" if the ESP is on <code>nvme0n1p1</code>). + </p> + </li> + </ol> + <h4>Kernel</h4> + <p> + On this system, I simply use the + <a href="https://packages.gentoo.org/packages/sys-kernel/gentoo-kernel" + ><code>gentoo-kernel</code></a + >. This works well for me and does not require following kernel releases to adjust my personal + configuration appropriately. I update the kernel when I have a reason to, or about every 6 + months. To avoid building a new kernel every time a patch revision is released, I pin the + kernel-related packages in <code>package.mask</code>. + </p> + <pre><code># /etc/portage/package.mask + +sys-kernel/gentoo-kernel +sys-kernel/gentoo-kernel-bin +sys-kernel/vanilla-kernel +virtual/dist-kernel</code></pre> + <h3>Screenshots</h3> + <img + class="inline-image" + src="https://raw.githubusercontent.com/waffle87/dots/refs/heads/pluto/.img/fetch.png" + alt="fetch.png" + /> + <img + class="inline-image" + src="https://raw.githubusercontent.com/waffle87/dots/refs/heads/pluto/.img/nvim.png" + alt="nvim.png" + /> + <img + class="inline-image" + src="https://raw.githubusercontent.com/waffle87/dots/refs/heads/pluto/.img/zathura.png" + alt="zathura.png" + /> + <img + class="inline-image" + src="https://raw.githubusercontent.com/waffle87/dots/refs/heads/pluto/.img/fuzzel.png" + alt="fuzzel.png" + /> + <img + class="inline-image" + src="https://raw.githubusercontent.com/waffle87/dots/refs/heads/pluto/.img/fuzzel.png" + alt="fuzzel.png" + /> + <script src="frame.js"></script> + </body> +</html> diff --git a/index.html b/index.html @@ -16,17 +16,12 @@ style="vertical-align: middle" /> </a> - | <a href="https://git.pngu.org">git</a> | - <a href="https://vault.pngu.org">vault</a> | - <a href="https://uptime.pngu.org">status</a> | + | <a href="https://git.pngu.org">git</a>(<a href="https://github.com/waffle87">hub</a>) | + <a href="https://vault.pngu.org">vault</a> | <a href="https://uptime.pngu.org">status</a> | <a href="https://calendar.pngu.org">calendar</a> | <a href="https://webmail.pngu.org">mail</a> | <a href="https://www.vim.org" style="text-decoration: none"> - <img - src="data/with_emacs.png" - alt="Made with Emacs..." - style="vertical-align: middle" - /> + <img src="data/with_emacs.png" alt="Made with Emacs..." style="vertical-align: middle" /> </a> </div> <hr /> diff --git a/style.css b/style.css @@ -91,3 +91,9 @@ pre { overflow-y: hidden; display: block; } + +.inline-image { + display: block; + margin: 10px 0px; + width: 100%; +} diff --git a/template.html b/template.html @@ -11,17 +11,7 @@ <h2>Page Header</h2> <p><i>2026-01-14</i></p> <hr /> - <p>Some text on a web page00.</p> - <p>Along with a <code>function()</code>.</p> - <pre class="language-c"><code>int function(int x) { - return x * x; -} - -int main() { - int x = 42; - printf("%d\n", function(x) + function(x) + function(x) + function(x) + function(x) + function(x)); - return 0; -}</code></pre> + <p>Some text on a web page.</p> <script src="frame.js"></script> </body> </html>