Software

Xorg AMDGPU

I own a AMD Vega64 and an using it with i3 on Manjaro. The misaligned monitors on the greeter and the manual resolution and refresh rate switching were super annoying.

Setup

144Hz modline

This was relative simple, amdgpu is pretty verbose on startup and prints all available modlines for the connected outputs on the card into /var/log/Xorg.0.log. With a simple less /var/log/Xorg.0.log I quickly found it somehwere along with

[     6.454] (II) AMDGPU(0): Printing probed modes for output DisplayPort-2
[     6.454] (II) AMDGPU(0): Modeline "2560x1440"x60.0  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync (88.8 kHz eP)
[     6.454] (II) AMDGPU(0): Modeline "2560x1440"x143.9  586.00  2560 2568 2600 2640  1440 1465 1473 1543 +hsync -vsync (222.0 kHz e)
[     6.454] (II) AMDGPU(0): Modeline "2560x1440"x119.9  482.64  2560 2568 2600 2640  1440 1447 1455 1525 +hsync -vsync (182.8 kHz e)
[     6.454] (II) AMDGPU(0): Modeline "2560x1440"x99.9  398.23  2560 2568 2600 2640  1440 1496 1504 1510 +hsync -vsync (150.8 kHz e)

and used the one with my desired configuration.

xorg config

To get my setup working as expecting without manual configuration on every startup, I needed to place a persistent config in the xorg config folder so e.g. /etc/X11/xorg.conf.d/10-monitors.conf. There, I configured both my GPU driver and the monitors like following.

The Monitor sections are straightforward. DisplayPort-2 is my 144Hz display, so I added the modline as a new preset 2560x1440_full and used it in the PreferredMode option. Further I enabled DPMS, the Display Power Management Signaling so the system could turn of the Montiors just in case.

The Device section contains the preferred options for the given GPU drive, in my case amdgpu. I enabled TearFree as well as VariableRefresh, the first one should reduce tearing on both displays while the latter one enables FreeSync on my 144Hz monitor. After a reboot, my monitor indeed reported it was using FreeSync!

Section "Monitor"
  Identifier "DisplayPort-2"
  Modeline "2560x1440_full"  586.00  2560 2568 2600 2640  1440 1465 1473 1543 +hsync -vsync
  Option "Primary" "true"
  Option "PreferredMode" "2560x1440_full"
  Option "DPMS" "true"
EndSection

Section "Monitor"
  Identifier "DisplayPort-1"
  Option "PreferredMode" "2560x1440_59.95"
  Option "LeftOf" "DisplayPort-2"
  Option "DPMS" "true"
EndSection

Section "Device"
  Identifier "AMD-VEGA"
  Driver "amdgpu"
  Option "VariableRefresh" "true"
  Option "TearFree" "true"
EndSection

fan2go

My setup on ws01.havok.xyz

This will setup the fans to both value temps of cpu + ssd or gpu + ssd.

fans:
  - id: radiator_fans
    minPwm: 60
    startPwm: 60
    hwmon:
      platform: nct6798-isa-0290
      index: 5
    curve: cpu_ssd_curve

  - id: case_top_fans
    hwmon:
      platform: nct6798-isa-0290
      index: 2
    neverStop: false
    curve: cpu_ssd_curve

  - id: case_gpu_front
    hwmon:
      platform: nct6798-isa-0290
      index: 3
    neverStop: false
    curve: gpu_ssd_curve

  - id: case_gpu_rear
    hwmon:
      platform: nct6798-isa-0290
      index: 4
    neverStop: false
    curve: gpu_ssd_curve

sensors:
  - id: cpu
    hwmon:
      platform: k10temp-pci-00c3
      index: 1
  - id: chipset
    hwmon:
      platform: asusec-isa-0000
      index: 1
  - id: gpu
    hwmon:
      platform: amdgpu-pci-0b00
      index: 2
  - id: ssd_1
    hwmon:
      platform: nvme-pci-0100
      index: 1
  - id: ssd_2
    hwmon:
      platform: nvme-pci-0400
      index: 3

curves:
  - id: cpu_curve
    linear:
      sensor: cpu
      steps:
        - 0: 80
        - 60: 80
        - 70: 80
        - 75: 124
        - 95: 255

  - id: ssd_curve
    linear:
      sensor: ssd_1
      steps:
        - 0: 80
        - 50: 80
        - 60: 120
        - 65: 150
        - 70: 255

  - id: gpu_curve
    linear:
      sensor: gpu
      steps:
        -  0: 80
        - 65: 80
        - 70: 80
        - 95: 255

  - id: cpu_ssd_curve
    function:
      type: maximum
      curves:
        - cpu_curve
        - ssd_curve

  - id: gpu_ssd_curve
    function:
      type: maximum
      curves:
        - gpu_curve
        - ssd_curve

lazyvim

Fixing multiple rust-analyzer running

https://github.com/LazyVim/LazyVim/discussions/3825#discussioncomment-9937797

in ~/.config/nvim/lua/plugins add a file called mason.lua with content

return {
  {
    "neovim/nvim-lspconfig",
    opts = {
      setup = {
        rust_analyzer = function()
          return true
        end,
      },
    },
  },
}

Removing unwanted Markdown warnings

in ~/.config/nvim/lua/plugins add a file lint.lua

return {
  {
    "mfussenegger/nvim-lint",
    opts = {
      linters = {
        markdownlint = {
          args = { "--disable", "MD013", "--disable", "MD012", "--" },
        },
      },
    },
  },
}

Add prefered hidden file viewing

in ~/.config/nvim/lua/plugins add a file neo-tree.lua

return {
  "nvim-neo-tree/neo-tree.nvim",
  opts = {
    filesystem = {
      filtered_items = {
        visible = false,
        show_hidden_count = true,
        hide_dotfiles = false,
        hide_gitignored = false,
        hide_by_name = {
          -- ".git",
          -- '.DS_Store',
          -- 'thumbs.db',
        },
        never_show = {
          ".git",
        },
      },
    },
  },

Add prefered color scheme

in ~/.config/nvim/lua/plugins add colorscheme.lua

return {
  -- add gruvbox
  { "catppuccin/nvim" },

  -- Configure LazyVim to load gruvbox
  {
    "LazyVim/LazyVim",
    opts = {
      colorscheme = "catppuccin",
    },
  },
}