Giter VIP home page Giter VIP logo

linux-notes's Introduction

linux-notes

linux-notes's People

Contributors

madlittlemods avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

linux-notes's Issues

Install Docker

Install Docker

$ pamac install docker

# Start the Docker service
$ sudo systemctl start docker.service
# Make sure the Docker service keeps running after we restart the PC
$ sudo systemctl enable docker.service

# Check if it's working
$ sudo docker version

# Install some extras you probably want
# (for docker-compose)
$ pamac install docker-compose
# (for BuildKit build layer caching)
$ pamac install docker-buildx

You probably also want to pamac install docker-buildx otherwise, you will run into the following error when using Docker BuildKit (Docker build layer caching):

ERROR: BuildKit is enabled but the buildx component is missing or broken.
       Install the buildx component to build images with BuildKit:
       https://docs.docker.com/go/buildx/

Run Docker without root

By default, you’ll have to use sudo or login to root anytime you want to run a Docker command. This next step is optional, but if you’d prefer the ability to run Docker as your current user, add your account to the docker group with this command:

$ sudo usermod -aG docker $USER

You’ll need to reboot your system for those changes to take effect. [or you can just logout and log back in]

-- https://linuxconfig.org/manjaro-linux-docker-installation

Timeshift backup

Just search for the Timeshift app that comes with Manjaro.

RSYNC snapshots

Snapshots are created by creating copies of the system files using rsync, and hard-linking unchanged files from the previous snapshot

All files are copied when the first snapshot is created. Subsequent snapshots are incremental. Unchanged files will be hard-linked from the previous snapshot if available.

Internet/network not working

My wired internet connection just stopped working after I came back overnight. This has happened multiple times before where I just restarted my computer to get going again but would be nice to get to the bottom of the problem.

I noticed that when pulling up the Network Manager GUI, it was just blank.

Blank network manager (internet not working) Network Manager when things are working

And then checking on the NetworkManager service, it wasn't even running:

$ nmcli
Warning: nmcli (1.44.2) and NetworkManager (Unknown) versions don't match. Restarting NetworkManager is advised.
Error: NetworkManager is not running.

$ sudo systemctl status NetworkManager
○ NetworkManager.service - Network Manager
     Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; preset: disabled)
     Active: inactive (dead) since Mon 2023-12-18 13:44:56 CST; 18h ago
   Duration: 2d 2h 43min 26.681s
       Docs: man:NetworkManager(8)
    Process: 67777 ExecStart=/usr/bin/NetworkManager --no-daemon (code=exited, status=0/SUCCESS)
   Main PID: 67777 (code=exited, status=0/SUCCESS)
        CPU: 4.109s

Start NetworkManager

Starting NetworkManager again got everything going ✅

$ sudo systemctl start NetworkManager

$ sudo systemctl status NetworkManager
WARNING: terminal is not fully functional
Press RETURN to continue
● NetworkManager.service - Network Manager
     Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; preset: disabled)
     Active: active (running) since Sat 2023-12-16 11:01:29 CST; 8s ago
       Docs: man:NetworkManager(8)
   Main PID: 67777 (NetworkManager)
      Tasks: 5 (limit: 76806)
     Memory: 7.0M
        CPU: 56ms
     CGroup: /system.slice/NetworkManager.service
             └─67777 /usr/bin/NetworkManager --no-daemon

Anything interesting in the logs?

$ journalctl --pager-end --unit NetworkManager.service
[...nothing of interest]

System information/Details

  • Kernel 6.1.68-1 in the Manjaro Settings Manager (mhwd-kernel -li says this is Currently running: 6.1.67-2-MANJARO (linux61))
  • lsb_release -sirc -> ManjaroLinux 23.1.0 Vulcan
$ inxi -F
System:
  Host: eric-desktop-pc Kernel: 6.1.67-2-MANJARO arch: x86_64 bits: 64
    Desktop: Xfce v: 4.18.1 Distro: Manjaro Linux
Machine:
  Type: Desktop System: ASUS product: N/A v: N/A serial: <superuser required>
  Mobo: ASUSTeK model: PRIME X670-P WIFI v: Rev 1.xx
    serial: <superuser required> UEFI: American Megatrends v: 1413
    date: 04/26/2023
CPU:
  Info: 8-core model: AMD Ryzen 7 7800X3D bits: 64 type: MT MCP cache:
    L2: 8 MiB
  Speed (MHz): avg: 2998 min/max: 3000/5049 cores: 1: 3000 2: 3000 3: 3000
    4: 3000 5: 3000 6: 2994 7: 2993 8: 3000 9: 3000 10: 3000 11: 3000 12: 3000
    13: 3000 14: 2994 15: 3000 16: 3000
Graphics:
  Device-1: AMD Navi 31 [Radeon RX 7900 XT/7900 XTX] driver: amdgpu v: kernel
  Display: x11 server: X.Org v: 21.1.9 driver: X: loaded: amdgpu
    unloaded: modesetting,radeon dri: radeonsi gpu: amdgpu
    resolution: 3840x2160~60Hz
  API: EGL v: 1.5 drivers: kms_swrast,radeonsi,swrast
    platforms: gbm,x11,surfaceless,device
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd v: N/A renderer: AMD Radeon
    RX 7900 XTX (radeonsi navi31 LLVM 16.0.6 DRM 3.49 6.1.67-2-MANJARO)
Audio:
  Device-1: AMD Navi 31 HDMI/DP Audio driver: snd_hda_intel
  Device-2: AMD Family 17h/19h HD Audio driver: snd_hda_intel
  Device-3: Audio-Technica AT2020 USB driver: snd-usb-audio type: USB
  API: ALSA v: k6.1.67-2-MANJARO status: kernel-api
  Server-1: PulseAudio v: 16.1 status: active
Network:
  Device-1: Realtek RTL8125 2.5GbE driver: r8169
  [...]
  Device-2: Realtek RTL8852BE PCIe 802.11ax Wireless Network driver: N/A
  [...]
Bluetooth:
  Device-1: IMC Networks Bluetooth Radio driver: btusb type: USB
  Report: rfkill ID: hci0 state: up address: see --recommends
  Device-2: Cambridge Silicon Radio Bluetooth Dongle (HCI mode)
    driver: btusb type: USB
  Report: ID: hci1 state: up address: N/A
inxi --admin --verbosity=7 --filter --no-host

(Personally Identifiable Information like serial numbers and MAC addresses will be filtered out by the above command)

$ inxi --admin --verbosity=7 --filter --no-host
System:
  Kernel: 6.1.67-2-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc available: hpet,acpi_pm
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.1-x86_64
    root=UUID=e8e411f9-d7ac-4221-bb2c-8052f92e474f rw quiet
    cryptdevice=UUID=42ea82bf-14d8-4122-a190-5ae9845faa1a:luks-42ea82bf-14d8-4122-a190-5ae9845faa1a
    root=/dev/mapper/luks-42ea82bf-14d8-4122-a190-5ae9845faa1a splash
    apparmor=1 security=apparmor udev.log_priority=3 amdgpu.aspm=0
    sysrq_always_enabled=1
  Desktop: Xfce v: 4.18.1 tk: Gtk v: 3.24.36 info: xfce4-panel wm: xfwm
    v: 4.18.0 vt: 7 dm: LightDM v: 1.32.0 Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Desktop System: ASUS product: N/A v: N/A serial: <superuser required>
  Mobo: ASUSTeK model: PRIME X670-P WIFI v: Rev 1.xx
    serial: <superuser required> UEFI: American Megatrends v: 1413
    date: 04/26/2023
Battery:
  Device-1: hidpp_battery_0 model: Logitech Wireless Mouse MX Master 3
    serial: <filter> charge: 100% (should be ignored) rechargeable: yes
    status: discharging
Memory:
  System RAM: total: 64 GiB available: 62.53 GiB used: 31.19 GiB (49.9%)
  RAM Report: permissions: Unable to run dmidecode. Root privileges
    required.
CPU:
  Info: model: AMD Ryzen 7 7800X3D bits: 64 type: MT MCP arch: Zen 4 gen: 5
    level: v4 note: check built: 2022+ process: TSMC n5 (5nm) family: 0x19 (25)
    model-id: 0x61 (97) stepping: 2 microcode: 0xA601203
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 512 KiB desc: d-8x32 KiB; i-8x32 KiB L2: 8 MiB desc: 8x1024 KiB
    L3: 96 MiB desc: 1x96 MiB
  Speed (MHz): avg: 2999 high: 3001 min/max: 3000/5049 boost: enabled
    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 3000 2: 3000
    3: 3000 4: 3000 5: 3000 6: 2995 7: 3000 8: 3000 9: 3000 10: 3000 11: 2991
    12: 3000 13: 3000 14: 3001 15: 3000 16: 3000 bogomips: 134207
  Flags: 3dnowprefetch abm adx aes amd_lbr_v2 aperfmperf apic arat avic avx
    avx2 avx512_bf16 avx512_bitalg avx512_vbmi2 avx512_vnni avx512_vpopcntdq
    avx512bw avx512cd avx512dq avx512f avx512ifma avx512vbmi avx512vl bmi1
    bmi2 bpext cat_l3 cdp_l3 clflush clflushopt clwb clzero cmov cmp_legacy
    constant_tsc cpb cppc cpuid cqm cqm_llc cqm_mbm_local cqm_mbm_total
    cqm_occup_llc cr8_legacy cx16 cx8 de decodeassists erms extapic
    extd_apicid f16c flush_l1d flushbyasid fma fpu fsgsbase fsrm fxsr
    fxsr_opt gfni ht hw_pstate ibpb ibrs ibs invpcid irperf lahf_lm lbrv lm
    mba mca mce misalignsse mmx mmxext monitor movbe msr mtrr mwaitx
    nonstop_tsc nopl npt nrip_save nx ospke osvw overflow_recov pae pat
    pausefilter pclmulqdq pdpe1gb perfctr_core perfctr_llc perfctr_nb
    perfmon_v2 pfthreshold pge pku pni popcnt pse pse36 rapl rdpid rdpru
    rdrand rdseed rdt_a rdtscp rep_good sep sha_ni skinit smap smca smep ssbd
    sse sse2 sse4_1 sse4_2 sse4a ssse3 stibp succor svm svm_lock syscall tce
    topoext tsc tsc_scale umip v_spec_ctrl v_vmsave_vmload vaes vgif
    vmcb_clean vme vmmcall vpclmulqdq wbnoinvd wdt x2apic x2avic xgetbv1
    xsave xsavec xsaveerptr xsaveopt xsaves
  Vulnerabilities:
  Type: gather_data_sampling status: Not affected
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: retbleed status: Not affected
  Type: spec_rstack_overflow mitigation: safe RET, no microcode
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, IBRS_FW,
    STIBP: always-on, RSB filling, PBRSB-eIBRS: Not affected
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: AMD Navi 31 [Radeon RX 7900 XT/7900 XTX] vendor: ASRock
    driver: amdgpu v: kernel arch: RDNA-3 code: Navi-3x process: TSMC n5 (5nm)
    built: 2022+ pcie: gen: 4 speed: 16 GT/s lanes: 16 ports: active: DP-1
    empty: DP-2,DP-3,HDMI-A-1 bus-ID: 03:00.0 chip-ID: 1002:744c
    class-ID: 0300
  Display: x11 server: X.Org v: 21.1.9 compositor: xfwm v: 4.18.0 driver: X:
    loaded: amdgpu unloaded: modesetting,radeon alternate: fbdev,vesa
    dri: radeonsi gpu: amdgpu display-ID: :0.0 screens: 1
  Screen-1: 0 s-res: 3840x2160 s-dpi: 96 s-size: 1016x571mm (40.00x22.48")
    s-diag: 1165mm (45.88")
  Monitor-1: DP-1 mapped: DisplayPort-0 model: A409U serial: <filter>
    built: 2015 res: 3840x2160 hz: 60 dpi: 111 gamma: 1.2
    size: 878x485mm (34.57x19.09") diag: 1003mm (39.5") ratio: 16:9 modes:
    max: 3840x2160 min: 720x400
  API: EGL v: 1.5 hw: drv: amd radeonsi platforms: device: 0 drv: radeonsi
    device: 1 drv: swrast gbm: drv: kms_swrast surfaceless: drv: radeonsi x11:
    drv: radeonsi inactive: wayland
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd v: N/A glx-v: 1.4
    direct-render: yes renderer: AMD Radeon RX 7900 XTX (radeonsi navi31 LLVM
    16.0.6 DRM 3.49 6.1.67-2-MANJARO) device-ID: 1002:744c memory: 23.44 GiB
    unified: no
Audio:
  Device-1: AMD Navi 31 HDMI/DP Audio driver: snd_hda_intel v: kernel pcie:
    gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 03:00.1 chip-ID: 1002:ab30
    class-ID: 0403
  Device-2: AMD Family 17h/19h HD Audio vendor: ASUSTeK
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
    bus-ID: 12:00.6 chip-ID: 1022:15e3 class-ID: 0403
  Device-3: Audio-Technica AT2020 USB driver: snd-usb-audio type: USB
    rev: 1.1 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-3:3 chip-ID: 0909:0018
    class-ID: 0102
  API: ALSA v: k6.1.67-2-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: JACK v: 1.9.22 status: off tools: N/A
  Server-2: PipeWire v: 1.0.0 status: off with: wireplumber status: active
    tools: pw-cli,wpctl
  Server-3: PulseAudio v: 16.1 status: active with: pulseaudio-alsa
    type: plugin tools: pacat,pactl,pavucontrol
Network:
  Device-1: Realtek RTL8125 2.5GbE vendor: ASUSTeK driver: r8169 v: kernel
    pcie: gen: 2 speed: 5 GT/s lanes: 1 port: e000 bus-ID: 0b:00.0
    chip-ID: 10ec:8125 class-ID: 0200
  IF: eno1 state: up speed: 1000 Mbps duplex: full mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
    broadcast: <filter>
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: noprefixroute scope: global
  IP v6: <filter> type: noprefixroute scope: link
  Device-2: Realtek RTL8852BE PCIe 802.11ax Wireless Network
    vendor: AzureWave driver: N/A pcie: gen: 1 speed: 2.5 GT/s lanes: 1
    port: d000 bus-ID: 0c:00.0 chip-ID: 10ec:b852 class-ID: 0280
  IF-ID-1: br-33861c916131 state: up speed: 10000 Mbps duplex: unknown
    mac: <filter>
  IP v4: <filter> scope: global broadcast: <filter>
  IF-ID-2: br-3520c7b74b79 state: down mac: <filter>
  IP v4: <filter> scope: global broadcast: <filter>
  IF-ID-3: br-4e443c44bdff state: down mac: <filter>
  IP v4: <filter> scope: global broadcast: <filter>
  IF-ID-4: docker0 state: up speed: 10000 Mbps duplex: unknown mac: <filter>
  IP v4: <filter> scope: global broadcast: <filter>
  IF-ID-5: veth1827a37 state: up speed: 10000 Mbps duplex: full
    mac: <filter>
  IF-ID-6: veth333766e state: up speed: 10000 Mbps duplex: full
    mac: <filter>
  IF-ID-7: vetha877124 state: up speed: 10000 Mbps duplex: full
    mac: <filter>
  WAN IP: <filter>
Bluetooth:
  Device-1: IMC Networks Bluetooth Radio driver: btusb v: 0.8 type: USB
    rev: 1.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-2:2 chip-ID: 13d3:3571
    class-ID: e001 serial: <filter>
  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends
  Device-2: Cambridge Silicon Radio Bluetooth Dongle (HCI mode)
    driver: btusb v: 0.8 type: USB rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1
    bus-ID: 7-2.3.3:5 chip-ID: 0a12:0001 class-ID: e001
  Report: ID: hci1 rfk-id: 1 state: up address: N/A
Logical:
  Message: No logical block device data found.
  Device-1: luks-42ea82bf-14d8-4122-a190-5ae9845faa1a maj-min: 254:0
    type: LUKS dm: dm-0 size: 1.82 TiB
  Components:
  p-1: nvme0n1p2 maj-min: 259:2 size: 1.82 TiB
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 1.82 TiB used: 820.39 GiB (44.0%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: SSD 980 PRO 2TB
    size: 1.82 TiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: 5B2QGXA7 temp: 36.9 C
    scheme: GPT
  Message: No optical or floppy data found.
Partition:
  [...]
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default) zswap: yes
    compressor: zstd max-pool: 20%
  ID-1: swap-1 type: file size: 16 GiB used: 4 MiB (0.0%) priority: -2
    file: /swapfile
Unmounted:
  Message: No unmounted partitions found.
USB:
  [...]
Sensors:
  System Temperatures: cpu: 44.0 C mobo: N/A gpu: amdgpu temp: 39.0 C
    mem: 60.0 C
  Fan Speeds (rpm): N/A gpu: amdgpu fan: 0
Info:
  Processes: 511 Uptime: 4d 1h 4m wakeups: 0 Init: systemd v: 254
  default: graphical tool: systemctl Compilers: gcc: 13.2.1 clang: 16.0.6
  Packages: 1386 pm: pacman pkgs: 1378 libs: 402 tools: pamac,yay pm: flatpak
  pkgs: 0 pm: snap pkgs: 8 Shell: Bash v: 5.2.21 running-in: ghostty
  inxi: 3.3.31

Show the GRUB boot selection menu to change kernels

The Manjaro docs make it seem like after installing new kernel versions, you can just select them on boot but the GRUB menu wasn't showing for me by default.

Even pressing Esc (escape) during boot just dropped me into another terminal looking thing vs the GRUB selector menu looking thing. Perhaps I was pressing escape at the wrong stage of the boot process, or that was GRUB but I needed to know the magic spell to bring up the menu, I don't know...

But if you just want to show the GRUB menu each time on boot, you can use the following steps:

Solution

via https://youtu.be/7od9dPf4gnM

  1. Edit /etc/default/grub
  2. Change GRUB_TIMEOUT_STYLE=hidden to GRUB_TIMEOUT_STYLE=menu
  3. sudo update-grub
  4. You will see the changes on next boot 🎉

Disable lockout after failing to enter your password correctly

Disable lockout after failing to enter your password correctly

via https://wiki.archlinux.org/title/security#Lock_out_user_after_three_failed_login_attempts

  1. Edit /etc/security/faillock.conf
  2. Uncomment the deny and update to deny = 0
    • deny = 0 will disable the lockout mechanism entirely.

Reset faillock after it's tripped

If you just want to reset the timer, you can use faillock --user eric --reset.

What's the point of this mechanism if you can just reset it though?

via https://joshtronic.com/2021/05/23/unlock-user-after-too-many-failed-sudo-attempts/

Freeze/lockup while using Chrome where mouse cursor stops working

Sometimes, the whole computer appears to freeze but I think it's actually just my mouse stops working and Chrome freezes up. I can still press Alt + F4 and force close Chrome to get it to respond again along with my mouse working.

Saw someone mention the same symptoms here:

Basically, randomly, the mouse stops responding, but the keyboard still works, or the other way, especially modifiers, sometimes dropping presses, sometimes buffering them.

-- https://www.reddit.com/r/archlinux/comments/10nrgcv/new_amd_system_is_laggy_with_the_cursor_hanging/

I tend to just Alt + F4 -> force close and bring it up again because it's faster than waiting. I have waited once and it did respond again after 3 minutes.

I do get other Chrome Freezes where my cursor and clicking on other programs in the task bar still works but have to close Chrome before it responds again.

(still happening, 2023-08-25)


System Details:

  • Manjaro 22.1.2
  • Chrome Version 113.0.5672.126
  • GPU: AMD Radeon 7900 XTX -> #2

AMD Radeon 7900 XTX support on Manjaro

TLDR

Your AMD 7900 XTX GPU probably mostly works out of the box with the latest Manjaro 22.1.2+.

I had to add amdgpu.aspm=0 as a kernel boot param (see section below for exact instruction) in order to get consistent good performance. This issue is best tracked by https://gitlab.freedesktop.org/drm/amd/-/issues/2434

I still have to use the mesa-git and lib32-mesa-git packages in order to get Halo Infinite to launch although other games worked with just mesa/lib32-mesa. So there is some fix between mesa 23.0.3-1 and 23.2.0_devel.171495.8e53b293f88.932463d268438ce945b21718552d92ab-1 at least for Halo (more context).

My system specs for reference:

  • Motherboard: ASUS Prime X670-P WIFI (AM5)
    • BIOS version 1413
    • Never enabled EXPO (especially with the motherboard/CPU voltage and melting debacle going on atm)
  • CPU: AMD Ryzen 7 7800X3D
  • Memory: 64 GB
  • GPU: Asrock AMD Radeon™ RX 7900 XTX Taichi 24GB
  • Resolution: 3840x2160 @ 60 FPS
  • Type of Display Connection: DP
  • OS: Manjaro 22.1.2 (with XFCE)

Check if your GPU is recognized

See instructions below if your GPU isn't recognized out of the box.

Manjaro Settings Manager -> Hardware configuration where my integrated and dedicated GPU's are showing up (iGPU and dGPU)

Before support (Unknown device name (ATI Technologies Inc)) After supported (it looks exactly the same for the AMD 7900XTX 🤷)
(no change)

Checking drivers. video-linux seems to be the one to care about and use from my reading 🤷 :

$ mhwd --list
> 0000:03:00.0 (0300:1002:744c) Display controller ATI Technologies Inc:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
           video-linux            2018.05.04                true            PCI
     video-modesetting            2020.01.13                true            PCI
            video-vesa            2017.03.12                true            PCI

$ mhwd --listinstalled
> Installed PCI configs:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
           video-linux            2018.05.04                true            PCI

$ mhwd --listinstalled --detail
   NAME:	video-linux
   ATTACHED:	PCI
   VERSION:	2018.05.04
   INFO:	Standard open source drivers.
   PRIORITY:	2
   FREEDRIVER:	true
   DEPENDS:	-
   CONFLICTS:	-
   CLASSIDS:	0300 0380 0302 
   VENDORIDS:	1002 8086 10de
$ glxinfo | grep OpenGL
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 7900 XTX (gfx1100, LLVM 15.0.7, DRM 3.49, 6.1.26-1-MANJARO)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 23.2.0-devel (git-ebe3b91ca0)
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6 (Compatibility Profile) Mesa 23.2.0-devel (git-ebe3b91ca0)
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.2.0-devel (git-ebe3b91ca0)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

The 7900XTX is actually named and listed using nvtop though (pamac install nvtop then run nvtop)

$ nvtop
Device 0 [AMD Radeon RX 7900 XTX] PCIe GEN 4@16x RX: N/A TX: N/A
 GPU 1455MHz MEM 1249MHz TEMP  44°C FAN  15% POW 108 / 339 W
 GPU[|||||||||||||||||               49%] MEM[|||||||||||       8.060Gi/23.984Gi]
[...]

Getting the GPU to be recognized

Which kernel?

I don't know of a minimum or anything (I've seen a lot of people recommending upgrading to 6.x) but I am working from a fresh Manjaro install and got Linux 6.1.26-1 out of the box

Are there nonfree drivers?

There are AMDGPU PRO drivers (proprietary) listed from the table on https://wiki.archlinux.org/title/Xorg#Driver_installation. But from some replies on Reddit, it seems like you don't want to use them over the free drivers since they lack something important (can't recall).

xf86-video-amdgpu (driver) -> amdgpu-pro-oglp/lib32-amdgpu-pro-oglp (OpenGL)

Open-source drivers

You might already have some installed. See what you have with pamac search xf86 --installed and compare with the table on https://wiki.archlinux.org/title/Xorg#Driver_installation

xf86-video-amdgpu and xf86-video-ati (drivers) -> mesa and lib32-mesa (OpenGL)

$ pamac search xf86 --installed
libxxf86vm                                                       1.1.5-1                     extra 
    X11 XFree86 video mode extension library
lib32-libxxf86vm                                                 1.1.5-1                     multilib 
    X11 XFree86 video mode extension library (32-bit)
xf86-video-nouveau                                               1.0.17-2                    extra 
    Open Source 3D acceleration driver for nVidia cards
xf86-video-intel                                                 1:2.99.917+923+gb74b67f0-1  extra 
    X.org Intel i810/i830/i915/945G/G965+ video drivers
xf86-video-ati                                                   1:19.1.0.r15.g7a6a34af-1    extra 
    X.org ati video driver
xf86-video-amdgpu                                                23.0.0-1                    extra 
    X.org amdgpu video driver
xf86-input-void                                                  1.4.2-1                     extra 
    X.org void input driver
xf86-input-libinput                                              1.3.0-1                     extra 
    Generic input driver for the X.Org server based on libinput
xf86-input-evdev                                                 2.10.6-3                    extra 
    X.org evdev input driver
xf86-input-elographics                                           1.4.3-1                     extra 
    X.org Elographics TouchScreen input driver

$ pamac search mesa --installed
lib32-mesa-git                                                   23.2.0_devel.170864.ebe3b91ca01.d41d8cd98f00b204e9800998ecf8427e-1  AUR 
    an open-source implementation of the OpenGL specification,
    git version
lib32-mesa-demos                                                 8.5.0-1                                                             multilib 
    Mesa demos (32-bit)
mesa-utils                                                       9.0.0-2                                                             extra 
    Essential Mesa utilities
mesa-git                                                         23.2.0_devel.170864.ebe3b91ca01.dae32bb875358c786b404388bf1ee875-1  AUR 
    an open-source implementation of the OpenGL specification,
    git version
mesa-demos                                                       9.0.0-2                                                             extra 
    Mesa demos

Using mesa and lib32-mesa (works as of 2023-05-08)

The package repositories finally have mesa@23+ compiled with llvm@15 which means you should be able to simply install these stable versions. Or maybe if you're installing Manjaro from scratch, all of this just works out of the box?

$ pamac install mesa
$ pamac install lib32-mesa

And for reference, here is what the repositories look like as of 2023-05-08.

$ pamac search llvm
llvm                                                            [Installed] 15.0.7-2                                                      extra 
    Compiler infrastructure

$ pamac search mesa
mesa                                                       [Installed] 23.0.3-1                                                            extra 
    An open-source implementation of the OpenGL specification

$ pamac search lib32-mesa
lib32-mesa                                                 [Installed] 23.0.3-1                                                            multilib 
    An open-source implementation of the OpenGL specification (32-bit)

Using mesa-git and lib32-mesa-git (no longer needed)

Using mesa-git and lib32-mesa-git

The AMD Radeon 7900XTX does not have drivers shipped on Manjaro (Arch) because it's stuck on LLVM 14 and AMD 7900 GPUs need at least LLVM 15 (also recommended to have any kernel 6.1 or higher).

According to comment in the Manjaro forum, as of 2023-01-19, mesa-git from AUR has also been updated to use LLVM/Clang 15.0.7 without setting WHICH_LLVM manually.

I was able to install mesa-git and lib32-mesa-git with the following commands. Keep in mind that until I figured out mesa-git was updated to build out of the box now, I also messed with the below manual build instructions so if you run into any weirdness maybe you also have to uninstall/install some of the same things mentioned below.

$ pamac install directx-headers-git
$ pamac install mesa-git
$ pamac install lib32-mesa-git

# Afterwards
$ pamac search mesa-git --installed
lib32-mesa-git                                                                     23.2.0_devel.170561.040aeb5a23e.d41d8cd98f00b204e9800998ecf8427e-1  AUR 
    an open-source implementation of the OpenGL specification, git version
mesa-git                                                                           23.2.0_devel.170561.040aeb5a23e.dae32bb875358c786b404388bf1ee875-1  AUR 
    an open-source implementation of the OpenGL specification, git version

$ glxinfo|grep -E "OpenGL vendor|OpenGL renderer"
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 7900 XTX (gfx1100, LLVM 15.0.7, DRM 3.49, 6.1.25-1-MANJARO)

References:

Manual build steps (no longer needed)

Manual build steps
  1. Get some prerequisites to build C++ things: pamac install make gcc clang base-devel
  2. Remove some conflicting packages: sudo pacman -Rs shiboken6 pyside6 web-installer-url-handler manjaro-hello
  3. sudo pacman -S directx-headers libclc
  4. To make the build go faster, you can edit /etc/makepkg.conf -> MAKEFLAGS="-jX" where X is the number of jobs/cores you want the build to run with. I used MAKEFLAGS="-j12" for example.
  5. Download latest snapshots for both mesa-git and lib32-mesa-git from AUR. For those of you unaware of what that means, for example, go to https://aur.archlinux.org/packages/mesa-git, on the right of the page you see a link called "Download Snapshot", and you download said gz file. Same for lib32-mesa-git.
  6. Run through these commands:
    $ mkdir ~/build
    $ cd ~/build
    $ cp ~/Downloads/mesa-git.tar.gz mesa-git.tar.gz
    $ cp ~/Downloads/lib32-mesa-git.tar.gz lib32-mesa-git.tar.gz
    $ tar zxvf mesa-git.tar.gz
    $ tar zxvf lib32-mesa-git.tar.gz
    $ yay --mflags "--nocheck" --sudoloop -S llvm-minimal-git lib32-llvm-minimal-git
    $ cd ~/build/mesa-git
    $ MESA_WHICH_LLVM=1 makepkg -si
    $ cd ~/build/lib32-mesa-git
    $ MESA_WHICH_LLVM=1 makepkg -si
    $ shutdown -r now
    
  7. If the build ever fails, in order to resume, make sure to answer No to a cleanBuild of the given packages

Do I want the Vulkan drivers?

I don't think so.

From replies around the internet, it seems like you want to uninstall anything amdvlk or vulkan related to get good performance.

GPU usage monitoring

Check if your dedicated GPI is set as the primary OpenGL renderer

$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon RX 7900 XTX (gfx1100, LLVM 15.0.7, DRM 3.49, 6.1.26-1-MANJARO)

You can see if you're GPU is being utilized when playing games.

It's still sometimes stuttering/hitching/low FPS, awful load time mess

Sometimes, it seems to regress and there is a lot of hitching and stutter even in the Steam UI but nvtop does have the AMD Radeon RX 7900 XTX name and shows usage when this happens. Although it shows usage on the integrated GPU (iGPU) and dedicated GPU (dGPU).

I can easily tell when it's bad because the steam UI glow around achievements is stuttering/hitching and even just moving the Steam window around is bad. I don't know the cause yet around why it's sometimes good and not.

With stutter Without stutter

One hunch for good vs bad mode in terms of hitching is it happens after I install something like pamac install code which updates and builds all other packages (including mesa-git) and my computer needs a restart to get the "driver" in place again. Although, even after restarting my PC, I have seen it still stutter before 🤔

Another hunch I had was that it was sometimes choosing my integrated GPU which kinda makes sense in terms of the bad performance I was seeing. After disabling the iGPU (see instructions below), things also appeared good on first boot but then still experienced laggy bad mode later after gaming.

Other references:

Disable integrated GPU (iGPU)

Shut-down your computer and go into your BIOS (F2 or DEL for my Asus Prime x670-P WIFI motherboard) -> Advanced mode -> Advanced -> NB Configuration -> set Integrated Graphics as Disabled -> Save and reset

(on the same page, Primary Video Device was already set to PCIE Video which is the dedicated GPU)

This didn't seem to help.

Related:

Use amdgpu.aspm=0 to disable power management fixed my problems 🚀

As discovered in https://gitlab.freedesktop.org/drm/amd/-/issues/2434, the workaround by adding amdgpu.aspm=0 as a kernel boot param to disable active state power management worked to give me consistent good performance!

  1. Edit /etc/default/grub
  2. Add amdgpu.aspm=0 to GRUB_CMDLINE_LINUX_DEFAULT="..."
  3. Restart computer

Since that fixed my problem, I replied on that issue with some more reproduction info and explaining the same context from this issue -> https://gitlab.freedesktop.org/drm/amd/-/issues/2434#note_1929459

Restart/reset GPU driver

TBD: needs solution.

I want to restart/reset the GPU driver whenever I see some odd behavior to better debug which layer is going wrong and as a get out of jail free card.

Restart the X server from terminal

To restart the Xorg/X server (X11),

TODO

Restart the display manager:

sudo systemctl restart lightdm

Restart the X server with the Ctrl + Alt + Backspace keyboard shortcut

There is a Ctrl + Alt + Backspace shortcut you can enable with the following config:

/etc/X11/xorg.conf.d/00-keyboard.conf

Section "ServerFlags"
    Option "DontZap" "false"
EndSection

Section "InputClass"
    Identifier      "Keyboard Defaults"
    MatchIsKeyboard "yes"
    Option          "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

View Xorg server logs

Logs are stored in /var/log/Xorg.*

$ ls -la /var/log/
...
-rw-r--r--   1 root root             79522 May 20 13:38 Xorg.0.log
-rw-r--r--   1 root root             80829 May 20 13:37 Xorg.0.log.old
-rw-r--r--   1 root root             54502 May 20 11:43 Xorg.1.log
-rw-r--r--   1 root root             54574 May 19 10:57 Xorg.1.log.old

To view the most recent logs,

$ less /var/log/Xorg.0.log

# View the logs starting from the bottom
$ less +G /var/log/Xorg.0.log

Here are my logs from 2023-05-20 when it's not working and being laggy (bad mode), https://gist.github.com/MadLittleMods/4ba2d5ab5116c713ab229ddfb93ff30d

Automatic time sync (NTP)

To setup automatic time sync (Network Time Protocol, NTP), go to Manjaro Settings Manager -> Time and Date -> Set time and date automatically

Screenshot_2023-05-07_15-27-28

Check if Logitech Unifying receiver for wireless mouse is patched and up-to-date

Check if Logitech Unifying receiver for wireless mouse is patched and up-to-date

  1. pamac install fwupd
  2. $ fwupdmgr get-devices
    ...
    └─Unifying Receiver:
          Device ID:          xxx
          Summary:            Miniaturised USB wireless receiver
          Current version:    RQR12.11_B0032
          Bootloader Version: BOT01.04_B0016
          Vendor:             HIDRAW:0x046D|USB:0x046D
          Install Duration:   30 seconds
          GUIDs:              xxx
                              xxx ← HIDRAW\VEN_046D&DEV_C52B
          Device Flags:       • Updatable
                              • Signed Payload
    
  3. Already up-to-date ✅
    $ fwupdmgr get-updates
    Devices with no available firmware updates:
     • ...
    Devices with the latest available firmware version:
     • Unifying Receiver
    ...
    
  4. If we needed to update, we could use fwupdmgr update xxx

Dev notes

App chrome border is thick on Google Chrome

Expected

I expect the border around the Google Chrome window to be a nice 1px thickness all the way around and the minimize/maximize close to be integrated with the tabs. Here is how it looks on Windows 10 for reference (expected):

Actual

but it seems to be at least a 4px chonky border for google-chrome with XFCE on Manjaro. Surprisingly, the guest mode, has a 1px border but it also seems to be more using the default XFCE app chrome (GTK).

Normal account with thick border (unxpected ❌) Guest mode with normal 1px border and integrated chrome controls (pretty expected ✅)

Potential solution

For a built-in mostly solution:

  1. In Google Chrome -> Settings -> Appearance -> Use GTK
  2. Adjust the window and window manager theme to Matcha-light-azul and change the icons to Papirus-Light-maia (also under Appearance)
  3. Result is half-decent but I think it would benefit from a darker border around the window because it blends in on white backgrounds

But for something a little better, the Fluent round gtk theme (GitHub) seems like a slight better option.

I'm using a custom tweaked version from the GitHub source (./install.sh --dest ~/.themes/ --name Fluent-custom --color light --size standard --icon manjaro --libadwaita --tweaks solid square)

Surveying the landscape looking for options/solutions

Maybe Use system title bar and borders can save us? No

The Use system title bar and borders setting in Chrome makes the borders border slightly better (I think, not perfect though) but also puts the window title and minimize/maximize/exit control above the tabs which isn't desired:

Maybe Use GTK theme option can save us? It's maybe better but not perfect

The Use GTK Theme option in Chrome gets us to that pretty desirable guest mode look where we have 1px border and integrated minimize/maximize/exit controls (chrome controls).

But it still has weird dark theme issues when it comes to inactive tabs. And I don't want to use dark mode in my browser.

How can we do GTK but light theme? -> Changing your system XFCE theme via Appearance does work to adjust things but none of the default ones are perfect. The default I had was Matcha-sea for reference. Some have problems with the tray icons (light icons on light theme pictured below although probably need to pick an icon set), some don't seem to trigger dark mode favicons, etc. But this probably comes down to finding a good custom XFCE/GTK theme (I don't understand the distinction yet). Although I would rather use the native "Aura" windowing that Chrome ships and just have less chunky borders.


Related references:

Manjaro XFCE and window manager themes

Manjaro XFCE and window manager themes

Related issues:

Window manager theme

Search for the Window Manager program -> Style and Icons

Window theme

Search for Appearance to adjust things like the window title bar with the minimiz/maximize, exit controls

Steam zoomed in too much (display scaling)

Steam zoomed in too much.

Tracked by ValveSoftware/steam-for-linux#9708

My Steam looks exactly the same as the screenshots in that issue. I'm unable to get to Settings -> Interface -> Scale text and icons to match monitor settings (requires restart) to fix the problem directly. Even when using the workaround and toggling it on and off to try to get it save the preference doesn't seem to persist so have to use the workaround.

Workaround

(via ValveSoftware/steam-for-linux#9708 (comment))

steam -forcedesktopscaling 1

Mouse settings - sensitivity, acceleration

XFCE/Manjaro mouse settings - sensitivity, acceleration

Built-in mouse settings -> Launch the Mouse and Touchpad app. You can also get to it via LANG=C xfce4-mouse-settings

See https://wiki.archlinux.org/title/Mouse_buttons#User_tools

  • Piper (piper) is a graphical user interface to configure gaming mice, works with Wayland. In order to work with your mouse, it must be in the list of supported devices.
  • lomoco (AUR) for Logitech MX mice will help you set the proper resolution, enable or disable smart scroll (with boot time support too!), etc. Be sure to look at /etc/udev/lomoco_mouse.conf and set up the the options you want to be automatically applied when the mouse gets loaded by udev.
    • Note: The lomoco package may be out of date. There is a hack for newer Logitech mice: [1]
  • logiops (AUR) is a tool for configuring Logitech mouses (Logitech Options for Linux). It may remap buttons to actions, support gestures, smart shift and so on.

Start piper on startup

TODO

Separate Chrome profiles in the task bar

Actual

Currently, all of the Chrome windows across different profiles just stack up under the same tile in the task bar (window buttons).

Expected

Each profile should have it's windows grouped under their own tile in the task bar (window buttons).

(image via this Reddit post)

Solutions

TBD


System details

  • Manjaro 22.1.2 with XFCE
  • Chrome Version 113.0.5672.126

Using the `sysprof` profiler

Using the sysprof profiler

Sysprof is a sampling profiler that uses a kernel module to generate stacktraces which are then interpreted by the userspace program "sysprof".

Sysprof is a statistical, system-wide profiler for Linux.

  • Detailed, accurate, and fast profiling of the entire Linux system, including the kernel and all userspace applications
  • No recompiling necessary
  • Load and Save> profiles
  • Fast, no-nonsense graphical user interface
  • Command line tool included

NOTE: The programs and libraries you want to profile should be compiled with -fno-omit-frame-pointer and have debugging symbols available, or you won't get much usable information.

Project: https://gitlab.gnome.org/GNOME/sysprof

How to use:


Other profilers:

Building sysprof from source (on Manjaro, arch-based)

The latest version of sysprof as pictured in https://blogs.gnome.org/chergert/2023/07/27/sysprof-45/ isn't released yet so you have to build it from source.

When building everything, it's best to use your own install prefix so you don't muddy your global versions of things (I used ~/dev-builds/). Andrew Kelley also touches on this point in his How to Build Software From Source talk at Software You Can Love Vancouver 2023. This makes it simple to just define PKG_CONFIG_PATH=~/dev-builds/lib/pkgconfig/ and have the meson dependency resolving/detection magic work out of the box (it uses pkgconfig as part of the auto detection list).

1. Figure out the sub-dependencies

sysprof and the relevant dependencies below use the meson build system. This documentation around dependencies might be of some help: https://mesonbuild.com/Dependencies.html

libdex-1

We need [email protected] which as the time of writing is only at 0.2.0 in the extra arch package repository. So we need to manually build it.

  1. git clone [email protected]:GNOME/libdex.git
  2. cd libdex
  3. pamac install gi-docgen gobject-introspection vala (these are from PKGBUILD source in the repository)
  4. Run through the normal build steps:
    $ meson --prefix=~/dev-builds/ build
    $ ninja -C build
    $ ninja -C build install

You probably need to do the same with:

Some prerequisite tool
  1. pamac install itstool

2. Building sysprof

If this build complains about not having new enough versions, go through the "Figure out the sub-dependencies" section above

$ PKG_CONFIG_PATH=~/dev-builds/lib/pkgconfig/ meson --prefix=~/dev-builds/ build
$ ninja -C build

Now you can either run the binary straight from the build directory:

$ build/src/sysprof/sysprof

Or install it:

WARNING: ninja install will mostly install under the configured install prefix but installs systemd service configuration directly in the system default location /usr/lib/systemd so it won't work without root privileges, even if the install prefix is a user-owned directory.

-- sysprof readme

ninja -C build install

Here is a screenshot of the latest sysprof built from the main branch on 2023-08-01.

Dev notes

File not found cairo.h

Trying to manually define dependencies:

dex_lib = 'dex-1'
dex_lib_dir = '/home/eric/Documents/gitlab/libdex/build/src'
dex_header_dir = '/home/eric/Documents/gitlab/libdex/src'
dex_include_dirs = []
dex_include_dirs += include_directories(dex_header_dir)
dex_include_dirs += include_directories(dex_lib_dir)
dex_dep = declare_dependency(
  link_args : [
    '-L' + dex_lib_dir,
    '-l' + dex_lib
  ],
  include_directories : dex_include_dirs
)

Emoji support on Manjaro

Actual

Emoji on website in Google Chrome (https://emojipedia.org/nature):

Actual Expected

Solution for emoji support

$ pamac install noto-fonts-emoji
$ fc-cache -f -v

Then just restart Google Chrome to see emoji in your browser

Solution for emoji keyboard/picker

Install Emote

I was unable to install emote from AUR thanks to the required dependency python-manimpango not installing from AUR (python-manimpango/src/ManimPango-0.4.3/manimpango/cmanimpango.c: No such file or directory)

So I installed it from source:

$ git clone [email protected]:tom-james-watson/Emote.git
$ cd Emote
$ sudo pip3 install pipenv
$ make install
$ make dev
...
ModuleNotFoundError: No module named 'gi'

# To fix the missing `gi` dependency (https://stackoverflow.com/a/43808204/796832)
$ pip install vext
$ pip install vext.gi

# It works now!
$ make dev

Keyboard shortcut: Ctrl + Alt + e to open the emoji picker


System Details:

  • Manjaro 22.1.2 with XFCE
  • Chrome Version 113.0.5672.126

Packages to get after a fresh install

See #4 to make sure you're able to search for packages in the AUR (Arch User Repository).

See #48 for how to lock/pin dependencies that are coming from unofficial repositories like AUR.

Installing packages

pamac install google-chrome

TODO

More developer related:

  • Docker
  • Postgres

Halo Infinite won't launch (2023-05-21)

When first building my Linux PC, I was surprised to see that Halo Infinite just worked out of the box on Manjaro. I had plenty of issues with my GPU not giving me performance but when my GPU was chooching, the game played great.

Last successful play through

I last played Halo Infinite successfully on 2023-05-14 which according to https://steamdb.info/app/1240440/patchnotes/, must have meant I had build 10989515. I had never messed with specifying a Proton version before and I think it just uses proton-experimental according to https://steamdb.info/app/1240440/ which aligns with what I had installed and probably meant build 11164623 (https://steamdb.info/app/1493710/patchnotes/)

Current broken details

  • GPU: ASRock AMD Radeon™ RX 7900 XTX Taichi 24GB
  • Driver/LLVM version: Mesa 23.0.3-1/15.0.7-2
  • Kernel version: Linux 6.1.29-1 (also tried Linux 6.3.3-1)
  • Proton: 1684333320 experimental-8.0-20230517 (steam build ID 11254524 (2023-05-17))
    • Also tried Properties -> Compatibility -> Force the use of a specific Steam Play compatible tool with Proton 8.0 and Proton Hotfix
  • Halo Infinite build: 10989515 (2023-05-10)

Reproduction steps:

  1. Use Manjaro 22.1.2 Linux
  2. Launch the game from Steam
  3. Game prepares to launch, syncs but never actually launches any window and goes back to the stopped state in Steam (assumed crash)

Proton crash logs: steam-1240440.log (see "How to get Proton logs" below)

Lots of these kinds of exceptions show up in the logs:

39976.919:0064:007c:trace:seh:dispatch_exception code=6ba flags=0 addr=000000007B04D713 ip=7b04d713
39976.919:0064:007c:warn:seh:dispatch_exception unknown exception (code=6ba) raised
39976.919:0064:007c:trace:seh:dispatch_exception  rax=000000007b04d6b0 rbx=000000000122f4a8 rcx=000000000122f1b0 rdx=0000000000000000
39976.919:0064:007c:trace:seh:dispatch_exception  rsi=00000000000000c8 rdi=00000000008f3e40 rbp=000000000122f250 rsp=000000000122f190
39976.919:0064:007c:trace:seh:dispatch_exception   r8=0000000000000000  r9=0000000000000000 r10=00000000008f5480 r11=0000000000000014
39976.919:0064:007c:trace:seh:dispatch_exception  r12=000000000122f4a8 r13=0000000000f634e0 r14=0000000000f634e0 r15=00000000000000b4
1173.266:0134:0138:warn:seh:dispatch_exception backtrace: --- Exception 0xc0000005.
1173.266:0134:0138:trace:seh:dispatch_exception code=c0000005 flags=0 addr=0000000141178308 ip=141178308
1173.266:0134:0138:trace:seh:dispatch_exception  info[0]=0000000000000008
1173.266:0134:0138:trace:seh:dispatch_exception  info[1]=0000000141178308
1173.266:0134:0138:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
1173.266:0134:0138:trace:seh:dispatch_exception  rax=00000001438beb80 rbx=000000007fee0000 rcx=0000000140000000 rdx=0000000000000001
1173.266:0134:0138:trace:seh:dispatch_exception  rsi=000000000054aa70 rdi=000000000054ac60 rbp=000000000041f760 rsp=000000000041f698
1173.266:0134:0138:trace:seh:dispatch_exception   r8=0000000000000000  r9=0000000000000000 r10=0000000141178308 r11=0000000000000060
1173.266:0134:0138:trace:seh:dispatch_exception  r12=0000000000000000 r13=0000000170077cd0 r14=000000000041fb00 r15=0000000170077ba8
 53.567:0130:0148:trace:seh:dispatch_exception  info[0]=0000000000000000
 53.567:0130:014c:warn:seh:dispatch_exception backtrace: --- Exception 0xc0000420.
 53.567:0130:0148:warn:seh:dispatch_exception EXCEPTION_BREAKPOINT exception (code=80000003) raised
 53.567:0130:0140:trace:seh:sigsys_handler SIGSYS, rax 0xb6, rip 0x1fd4e0d.
 53.567:0130:014c:trace:seh:dispatch_exception code=c0000420 flags=0 addr=0000000000E1C216 ip=e1c216
 53.567:0130:0148:trace:seh:dispatch_exception  rax=3d126baff9fbc89f rbx=55e4621b88025d0e rcx=00000000015ad940 rdx=000000007ffe0000
 53.567:0130:0134:warn:seh:dispatch_exception backtrace: --- Exception 0xc0000005.
 53.567:0130:014c:err:seh:dispatch_exception unknown exception (code=c0000420) raised
 53.961:0130:015c:warn:seh:virtual_unwind backtrace: 000000007B04D713: L"kernelbase.dll" + 000000000004D713.
 53.961:0130:015c:trace:unwind:RtlVirtualUnwind type 1 rip 7b04d713 rsp 12bfece0
 53.961:0130:015c:trace:unwind:dump_unwind_info **** func 4d6b0-4d748
 53.961:0130:015c:trace:unwind:dump_unwind_info unwind info at 000000007B0AD768 flags 0 prolog 0x1a bytes function 000000007B04D6B0-000000007B04D748
 53.961:0130:015c:trace:unwind:dump_unwind_info     frame register rbp offset 0xc0(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x1a: leaq 0xc0(%rsp),rbp
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x12: subq $0xc0,%rsp
 53.961:0130:015c:trace:unwind:dump_unwind_info     0xb: pushq %rsi
 53.961:0130:015c:trace:unwind:dump_unwind_info     0xa: pushq %rdi
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x9: pushq %rbp
 53.961:0130:015c:warn:seh:virtual_unwind backtrace: 00000002EDF0CB21: L"DXGI.DLL" + 000000000000CB21.
 53.961:0130:015c:trace:unwind:RtlVirtualUnwind type 1 rip 2edf0cb21 rsp 12bfedc0
 53.961:0130:015c:trace:unwind:dump_unwind_info **** func cad0-cb2b
 53.961:0130:015c:trace:unwind:dump_unwind_info unwind info at 00000002EE14A94C flags 0 prolog 0x4 bytes function 00000002EDF0CAD0-00000002EDF0CB2B
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x4: subq $0x28,%rsp
 53.961:0130:015c:warn:seh:virtual_unwind backtrace: 00000002EE08D2E3: L"DXGI.DLL" + 000000000018D2E3.
 53.961:0130:015c:trace:unwind:RtlVirtualUnwind type 1 rip 2ee08d2e3 rsp 12bfedf0
 53.961:0130:015c:trace:unwind:dump_unwind_info **** func 18d280-18d2f9
 53.961:0130:015c:trace:unwind:dump_unwind_info unwind info at 00000002EE136F04 flags 0 prolog 0x8 bytes function 00000002EE08D280-00000002EE08D2F9
 53.961:0130:015c:trace:unwind:dump_unwind_info     frame register rbp offset 0x0(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x8: subq $0x30,%rsp
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x4: leaq 0x0(%rsp),rbp
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x1: pushq %rbp
 53.961:0130:015c:warn:seh:virtual_unwind backtrace: 00000002EE0A327F: L"DXGI.DLL" + 00000000001A327F.
 53.961:0130:015c:trace:unwind:RtlVirtualUnwind type 1 rip 2ee0a327f rsp 12bfee30
 53.961:0130:015c:trace:unwind:dump_unwind_info **** func 1a31f0-1a364b
 53.961:0130:015c:trace:unwind:dump_unwind_info unwind info at 00000002EE128084 flags 3 prolog 0x0 bytes function 00000002EE0A31F0-00000002EE0A364B
 53.961:0130:015c:trace:unwind:dump_unwind_info     frame register rbp offset 0x80(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: leaq 0x80(%rsp),rbp
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: movq %r15,0x368(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: movq %r14,0x360(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: movq %r13,0x358(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: movq %r12,0x350(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: movq %rbp,0x370(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: movq %rdi,0x348(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: movq %rsi,0x340(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: movq %rbx,0x338(%rsp)
 53.961:0130:015c:trace:unwind:dump_unwind_info     0x0: subq $0x378,%rsp
 53.961:0130:015c:trace:unwind:dump_unwind_info     handler 00000002EE08D4E0 data at 00000002EE1280B4
 53.961:0130:015c:trace:seh:call_handler calling handler 00000002EE08D4E0 (rec=0000000012BFED00, frame=0000000012BFEE30 context=0000000012BFE230, dispatch=0000000012BFE100)
 53.961:0130:015c:trace:seh:call_handler handler at 00000002EE08D4E0 returned 1

Reference

How to get Proton logs

Halo Infinite in Steam -> Properties -> General -> Launch options, set PROTON_LOG=1 %command%


A different way:

  1. Copy ~/.local/share/Steam/steamapps/common/Proton - Experimental/user_settings.sample.py and save it as user_settings.py in the same directory
  2. Edit ~/.local/share/Steam/steamapps/common/Proton - Experimental/user_settings.py
    • Set DXVK_LOG_LEVEL to debug
  3. Now launch the Steam game again
  4. Logs will show up in ~/steam-<STEAM_GAME_ID>.log
    • To find the Steam game ID (app ID): find ~/.local/share/Steam/steamapps/ -maxdepth 1 -type f -name '*.acf' -exec awk -F '"' '/"appid|name/{ printf $4 "|" } END { print "" }' {} \; | column -t -s '|' | sort -k 2. For Halo Infinite, it's 1240440

Unable to update system because `mesa-git`/`lib32-mesa-git` are `unable to satisfy dependency` (`llvm`, `llvm-libs`, `clang`)

Whenever I try to update (pamac update) or install (pamac install foo) a package, I run into unable to satisfy dependency errors which prevent me from making any changes. Even trying to go back the stable versions of mesa/lib32-mesa which don't depend on these new versions gives the same errors.

The problem is that Manjaro is a rolling release that rolls things out slowly (unstable -> testing -> stable branches) to gain some stability; while the main Arch repositories have the llvm=17.0.6, Manjaro doesn't have it yet (llvm=16.0.6-1), and some packages from the AUR are using the latest version in the Arch repositories (hence the mismatch we get now).

Problem output whenever I update ❌:

$ pamac update
Preparing...
Synchronizing package databases...
Refreshing extra.db...
Refreshing sublime-text.db...
Refreshing AUR...
Cloning mesa-git build files...
Generating mesa-git information...
Checking mesa-git dependencies...
Cloning lib32-mesa-git build files...
Generating lib32-mesa-git information...
Checking lib32-mesa-git dependencies...
Checking llvm-libs-git dependencies...
Checking llvm-libs-rocm-git dependencies...
Checking llvm-mingw-w64-toolchain-msvcrt-bin dependencies...
Checking llvm-mingw-w64-toolchain-ucrt-bin dependencies...
Checking llvm-ocaml-rocm-git dependencies...
Checking llvm-ocaml-git dependencies...
Checking ldc-xtensa-git dependencies...
Checking dg-git dependencies...
Checking llvm-rocm-git dependencies...
Checking llvm-git dependencies...
Checking llvm-minimal-git dependencies...
Checking clang-opencl-headers-minimal-git dependencies...
Checking clang-build-analyzer-git dependencies...
Checking clang-format-static-bin dependencies...
Checking clangd-opt-git dependencies...
Checking clang-libs-minimal-git dependencies...
Checking clang-format-linter-git dependencies...
Checking clang-minimal-git dependencies...
Checking lib32-llvm-libs-minimal-git dependencies...
Checking lib32-llvm-libs-git dependencies...
Checking lib32-llvm-git dependencies...
Checking lib32-llvm-minimal-git dependencies...
Checking python2 dependencies...
Checking llvm-libs-minimal-git dependencies...
Resolving dependencies...
[...]
Warning: cannot resolve "lib32-llvm-libs=17.0.6", a dependency of "lib32-mesa-git"
Warning: cannot resolve "lib32-llvm=17.0.6", a dependency of "lib32-mesa-git"
[...]
Warning: cannot resolve "llvm-libs=17.0.6", a dependency of "mesa-git"
Warning: cannot resolve "llvm=17.0.6", a dependency of "mesa-git"
Warning: cannot resolve "clang=17.0.6", a dependency of "mesa-git"
Error: Failed to prepare transaction:
could not satisfy dependencies:
- unable to satisfy dependency 'llvm-libs=17.0.6' required by mesa-git
- unable to satisfy dependency 'llvm=17.0.6' required by mesa-git
- unable to satisfy dependency 'clang=17.0.6' required by mesa-git
- unable to satisfy dependency 'lib32-llvm-libs=17.0.6' required by lib32-mesa-git
- unable to satisfy dependency 'lib32-llvm=17.0.6' required by lib32-mesa-git



Edit build files : [e]
Apply transaction ? [e/y/N] y

Transaction cancelled.

For a while now, I've just been waiting for the next Manjaro stable update (since 2024-03-13) for the llvm, llvm-libs, clang dependencies to be updated but they haven't cut a stable release in almost 2 months now. The normal Arch repos have version 17.0.6 of everything needed but Manjaro lags behind to add some stability to things. Not having updates for a few weeks has been workable but I really needed a package to upgrade postgres and had a need to actually resolve this (see Resolve section below).

Resolve by going back to stable versions of mesa

I was able to get back to the stable versions of mesa by using pacman directly instead of Manjaro's pamac

sudo pacman --sync lib32-mesa, sudo pacman --sync mesa

$ sudo pacman --sync lib32-mesa
[...]

$ sudo pacman --sync mesa
resolving dependencies...
Looking for conflicting packages...
:: mesa and mesa-git are in conflict (mesa-libgl). Remove mesa-git? [y/N] y

Packages (2) mesa-git-24.1.0_devel.185004.c1418dcb3d6.d41d8cd-1 [removal] mesa-1:24.0.2-1

Total Download Size: 18.68 MiB
Total Installed Size: 96.18 MiB
Net Upgrade Size: -80.22 MiB

Proceed with installation? [Y/n]
:: Retrieving packages...
mesa-1:24.0.2-1-x86_64
(1/1) checking keys in keyring
(1/1) checking package integrity
(1/1) loading package files
(1/1) checking for file conflicts
(2/2) checking available disk space
:: Processing package changes...
(1/1) removing mesa-git
(1/1) installing mesa
Optional dependencies for mesa
    opengl-man-pages: for the OpenGL API man pages
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...

Unfortunately, the latest stable versions of mesa still don't work for me (see #32 (comment)) and now I have to figure out how to get back to mesa-git with the llvm=17.0.6 dependency.

Overall, it does suck that Manjaro/Arch doesn't have a llvm17 package yet (like they have with llvm15 for example) that can be used alongside the the latest/rolling main packages. And in general, not being able to install side-by-side versions of the same thing and have dependencies worry about what they need. Perhaps NixOS is in my future.

Notes

This type of situation isn't rare though. It happens every time LLVM updates, ex:

LLVM 16 update may break 3rd party MESA drivers

Mesa drivers are affected when there is no matching LLVM version they are complied on. If you use a 3rd party repo like mesanonfree you may want to install llvm15-libs 24 until those get recompiled. See for releases: https://github.com/mesa-freeworld/mesa-nonfree/releases 28

-- https://forum.manjaro.org/t/stable-update-2023-09-10-kernels-systemd-firefox-thunderbird-llvm/147713

Other references:

Phone charges for a second then stops when plugged in via USB

When plugging in my Pixel 4a, it plays the charging sound and the lightning bolt appears for 2 seconds then goes away. After the charging indicator lightning bolt goes away, the pull down menu still says "Charging this device via USB" but it's not charging.

Everything is plugged into a powered USB hub which I had no issues with on Windows.

Same symptoms as experienced in https://bbs.archlinux.org/viewtopic.php?id=268682 (even mentions a Pixel 4a)

Solution

Check if you have USB autosuspend enabled somewhere. With Manjaro 22.1.1 and Linux kernel 6.1.26-1, it seems like TLP is the culprit here and USB autosuspend enabled by default ("TLP is not an acronym, it’s just a three-letter name."). Here is the relevant config around USB autosuspend in TLP (USB_AUTOSUSPEND is commented out but the comment says it defaults to 1 anyway):

  $ cat /etc/tlp.conf | grep -i usb
  [...]
+ # Set to 0 to disable, 1 to enable USB autosuspend feature.
+ # Default: 1
  
+ #USB_AUTOSUSPEND=1
  
  # Exclude listed devices from USB autosuspend (separate with spaces).
  # Use lsusb to get the ids.
  # Note: input devices (usbhid) and libsane-supported scanners are excluded
  # automatically.
  # Default: <none>
  
  #USB_DENYLIST="1111:2222 3333:4444"
  
  # Exclude audio devices from USB autosuspend:
  #   0=do not exclude, 1=exclude.
  # Default: 1
  
  #USB_EXCLUDE_AUDIO=1
  
  # Exclude bluetooth devices from USB autosuspend:
  #   0=do not exclude, 1=exclude.
  # Default: 0
  
  #USB_EXCLUDE_BTUSB=0
  
  # Exclude phone devices from USB autosuspend:
  #   0=do not exclude, 1=exclude (enable charging).
  # Default: 0
  
+ #USB_EXCLUDE_PHONE=0
  
  # Exclude printers from USB autosuspend:
  #   0=do not exclude, 1=exclude.
  # Default: 1
  
  #USB_EXCLUDE_PRINTER=1
  
  # Exclude WWAN devices from USB autosuspend:
  #   0=do not exclude, 1=exclude.
  # Default: 0
  
  #USB_EXCLUDE_WWAN=0
  
  # Allow USB autosuspend for listed devices even if already denylisted or
  # excluded above (separate with spaces). Use lsusb to get the ids.
  # Default: 0
  
  #USB_ALLOWLIST="1111:2222 3333:4444"
  
  # Set to 1 to disable autosuspend before shutdown, 0 to do nothing
  # Note: use as a workaround for USB devices that cause shutdown problems.
  # Default: 0
  
  #USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN=0

There are many interesting options here. For me, since I'm trying to charge my Pixel 4a phone, I think I'll use the USB_EXCLUDE_PHONE=1 option to "Exclude phone devices from USB autosuspend". We just need to uncomment and adjust that line in the /etc/tlp.conf

As soon as I made the change and re-plugged in my phone, all was good! 🎉

Other things you may have to look at

During my research for this, I also stumbled upon these things which could be affecting USB autosuspend:

Keep bash shell history but exclude and encrypt passwords (prompt to unlock encrypted credential)

Is there anyway where I can keep commands in my history which include sensitive credentials but prompt me for my sudo password to unlock and fill in the details when I actually try to run/use the commands.

It's really useful to be able to keep that pesky Mongo command in my history but plain-text password in the shell history isn't great. I imagine using some sort of magic like this:

$ mongosh gitter-mongo.vpn.dev --username eric --password $(encrypt xxx)

Could end up in my bash history as:

mongosh gitter-mongo.vpn.dev --username eric --password $(decrypt <encrypted>)

And then when I Ctrl+r to recall it later and use it, it would recognize the encrypted syntax and prompts me for my sudo password to unencrypt and use those contents.

It seems like there would need to be some middleware when running command to recognize the encrypt syntax and decrypt syntax. Not sure if query sub-commands can also prompt.

Install PostgreSQL (database)

Install PostgreSQL (database)

$ pamac install postgresql
# Also install the old version of Postgres so you can update when the
# next major version comes out (save yourself the headache).
# See https://wiki.archlinux.org/title/PostgreSQL#Upgrading_PostgreSQL
$ pamac install postgresql-old-upgrade 

# Login and use the `postgres` user
$ sudo -iu postgres
# Initialize the database
$ initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data'

# Make sure the service is running now
$ sudo systemctl start postgresql.service
$ sudo systemctl status postgresql.service

Other things you might want to do:

# Login and use the `postgres` user
$ sudo -iu postgres

# Create a new postgres user
$ createuser eric

# Create a new database (maybe you want to replace `owner` with the user you just created)
$ createdb --encoding=UTF8 --locale=C --template=template0 --owner=postgres synapse

Dev notes

Terminal emulator alternative

Currently using xfce4-terminal which came with my Manjaro/XFCE install but it's lacking features. Basically, I'm just used to some niceties from iTerm2 on macOS.

Lacking features:

  • Ctrl + Shift + f find dialog does not show number of occurrences and highlight the position in the scrollbar
  • Be able to jump up and down to previous commands/prompts
    • With iTerm2, I could do this with Cmd + Shift + arrow up/down after installing the shell integration (https://stackoverflow.com/a/56420163/796832). Basically what it does it add a special mark to your shell prompt and you can jump from mark to mark.
  • Persistently highlight matching text in the terminal
    • In iTerm2, I could achieve this with a trigger to highlight text, https://stackoverflow.com/a/41468739/796832
    • Captured output
      • "When you build a big project, you used to have to pore over its output to find warnings and errors. No more! With the captured output feature, iTerm2 finds those messages (based on regular expressions you define) and shows them in the toolbelt.", https://iterm2.com/documentation-captured-output.html
      • I didn't even know this was a feature in iTerm2 but is exactly what I've been wanting forever and basically what I was jankily trying to achieve with the persistent highlights

Some stuff from https://www.warp.dev/ also looks cool but haven't tried it.

Potential solutions

Some recommendations: https://askubuntu.com/a/1079589/196148

Interesting options:

Possible options:

Not viable:

Solution

TBD

TODO: Install Oh My Zsh -> #35

Manjaro/XFCE tips

As @Costava mentioned:

  • Hold Alt and left-click drag on any part of a window to move a window around
  • Hold Alt and right-click drag on any part of a window to resize any window
  • TODO: Gotcha: Scrolling on a window title which expands/collapses it
  • TODO: Multiple desktops gotcha

Steam fails to launch

Steam fails to launch and just runs through the update step then disappears. Here is the output from running it in the terminal,

$ /usr/bin/steam-runtime
steam.sh[343752]: Running Steam on manjarolinux 23.0.0 64-bit
steam.sh[343752]: STEAM_RUNTIME is enabled automatically
setup.sh[343826]: Steam runtime environment up-to-date!
steam.sh[343752]: Steam client's requirements are satisfied
[2023-06-16 23:06:36] Startup - updater built Jun 16 2023 01:41:16
[2023-06-16 23:06:36] Startup - Steam Client launched with: '/home/eric/.local/share/Steam/ubuntu12_32/steam'
06/16 23:06:36 Init: Installing breakpad exception handler for appid(steam)/version(1686880776)/tid(343883)
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[2023-06-16 23:06:36] Loading cached metrics from disk (/home/eric/.local/share/Steam/package/steam_client_metrics.bin)
[2023-06-16 23:06:36] Using the following download hosts for Public, Realm steamglobal
[2023-06-16 23:06:36] 1. https://client-update.akamai.steamstatic.com, /, Realm 'steamglobal', weight was 1000, source = 'update_hosts_cached.vdf'
[2023-06-16 23:06:36] 2. https://cdn.cloudflare.steamstatic.com, /client/, Realm 'steamglobal', weight was 1, source = 'update_hosts_cached.vdf'
[2023-06-16 23:06:36] 3. http://media.steampowered.com, /client/, Realm 'steamglobal', weight was 1, source = 'baked in'
[2023-06-16 23:06:36] Checking for update on startup
[2023-06-16 23:06:36] Checking for available updates...
[2023-06-16 23:06:36] Downloading manifest: https://client-update.akamai.steamstatic.com/steam_client_ubuntu12
[2023-06-16 23:06:36] Manifest download: send request
[2023-06-16 23:06:37] Manifest download: waiting for download to finish
[2023-06-16 23:06:37] Manifest download: finished
[2023-06-16 23:06:37] Download skipped: /steam_client_ubuntu12 version 1686880776, installed version 1686880776, existing pending version 0
[2023-06-16 23:06:37] Nothing to do
[2023-06-16 23:06:37] Verifying installation...
[2023-06-16 23:06:37] Performing checksum verification of executable files
[2023-06-16 23:06:37] Verification complete

(process:343883): GLib-GObject-CRITICAL **: 23:06:37.784: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(process:343883): GLib-GObject-CRITICAL **: 23:06:37.784: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
XRRGetOutputInfo Workaround: initialized with override: 0 real: 0xec408db0
XRRGetCrtcInfo Workaround: initialized with override: 0 real: 0xec407500
GetWin32Stats: display was not open yet, good
Loaded SDL version 3.0.0-1735-g2e465ae31

(steam:343883): Gtk-WARNING **: 23:07:03.180: Unable to locate theme engine in module_path: "adwaita",
/home/eric/.themes/Fluent-custom-Light/gtk-2.0/main.rc:790: error: unexpected identifier 'direction', expected character '}'

(steam:343883): Gtk-WARNING **: 23:07:03.180: Unable to locate theme engine in module_path: "adwaita",
/home/eric/.themes/Fluent-custom-Light/gtk-2.0/hacks.rc:28: error: invalid string constant "normal_entry", expected valid string constant
GetWin32Stats: display was not open yet, good
ComputeStartupMode: found registry default startup mode: 0
Switching to desktopui, since -vgui was not specified
steamwebhelper.sh[344012]: Runtime for steamwebhelper: defaulting to /home/eric/.local/share/Steam/ubuntu12_64/steam-runtime-heavy
steamwebhelper.sh[344012]: glibc >= 2.34, partially disabling sandbox until CEF supports clone3()
CAppInfoCacheReadFromDiskThread took 19 milliseconds to initialize
src/steamUI/steamuisharedjscontroller.cpp (529) : Failed creating offscreen shared JS context
src/steamUI/steamuisharedjscontroller.cpp (529) : Failed creating offscreen shared JS context
src/steamUI/steamuisharedjscontroller.cpp (529) : Fatal assert; application exiting
src/steamUI/steamuisharedjscontroller.cpp (529) : Fatal assert; application exiting
06/16 23:07:25 Init: Installing breakpad exception handler for appid(steam)/version(1686880776)/tid(343883)
assert_20230616230725_29.dmp[344383]: Uploading dump (out-of-process)
/tmp/dumps/assert_20230616230725_29.dmp
_ExitOnFatalAssert
[eric@eric-desktop-pc ~]$ assert_20230616230725_29.dmp[344383]: Finished uploading minidump (out-of-process): success = yes
assert_20230616230725_29.dmp[344383]: response: CrashID=bp-d7ccb3a7-89c5-4bf2-bc13-211e52230616
assert_20230616230725_29.dmp[344383]: file ''/tmp/dumps/assert_20230616230725_29.dmp'', upload yes: ''CrashID=bp-d7ccb3a7-89c5-4bf2-bc13-211e52230616''

Related links:

Workaround

This worked for a while but then stopped working after Steam queued up an update (asking to restart Steam) and then I spawned outside of the map in Halo Infinite, quit the lobby and my whole screen went black and I was back at the Manjaro login screen. Signing in again and all of my applications were gone (not sure what to call this failure mode).

/usr/bin/steam-runtime -vgui

`Save as...`, `Save image as...` file dialogs do not appear sometimes

The Save as..., Save image as... file dialogs do not appear sometimes which means I can't save anything from Chrome.

If I just paste the same URL into Firefox and save, it works as expected.

It has worked in Chrome before but currently experiencing a persistent issue even closing Chrome completely and brining it back up. I haven't restarted my computer yet but will report back.

Update: Seems to work fine now

System details:

  • Chrome Version 113.0.5672.126
  • Manjaro Linux 23.0.0 (with XFCE)

Lock AUR dependencies

Anyone can submit a package to the Arch User Repository (AUR) which means there is potential for malicious packages. Since Arch is a rolling release, when using pamac/pacman, everything updates to the latest version any time you install/remove something. It would be nice to lock some of those AUR dependencies down so they have less of a chance to change under my feet.

Find AUR packages

$ pacman --query --foreign

Find orphaned packages

https://wiki.manjaro.org/index.php/Pamac#Dealing_with_Orphaned_Packages

$ pamac list -o

Solution: Lock AUR dependencies

/etc/pacman.conf

# eric: Lock AUR packages so they don't update under our feet with something malicious
IgnorePkg    = bfg

Dev notes

Thunar file manager does not always update on file changes

The default file manager that comes with Manjaro 22.1.2 with XFCE is Thunar.

It doesn't always update when new directories/files are added while you're staring at it. Requires a manual View -> Reload (Ctrl + R) to show the up to date state of things.

Noticed while playing around with npm and installing things for a Node.js project staring at the node_modules/ directory.

Solution

TBD

Possibility: Maybe switch to another file manager

Show CPU core usage (monitor)

Manjaro with XFCE desktop environment

CPU Usage

Potential options:

With the KDE Plasma desktop environment, the desktop widgets look pretty good: (picture from https://gitlab.freedesktop.org/drm/amd/-/issues/2557)

Conky

Show CPU core usage (monitor)

  1. pamac install conky
  2. Copy the default config to start your own custom config: mkdir -p ~/.config/conky && conky --print-config > ~/.config/conky/conky.conf
~/.config/conky/conky.conf for AMD Ryzen 7 7800X3D
-- Conky, a system monitor https://github.com/brndnmtthws/conky
--
-- This configuration file is Lua code. You can write code in here, and it will
-- execute when Conky loads. You can use it to generate your own advanced
-- configurations.
--
-- Try this (remove the `--`):
--
--   print("Loading Conky config")
--
-- For more on Lua, see:
-- https://www.lua.org/pil/contents.html

conky.config = {
    alignment = 'top_left',
    background = false,
    border_width = 1,
    cpu_avg_samples = 2,
    default_color = 'white',
    default_outline_color = 'white',
    default_shade_color = 'white',
    double_buffer = true,
    draw_borders = false,
    draw_graph_borders = true,
    draw_outline = false,
    draw_shades = false,
    extra_newline = false,
    font = 'DejaVu Sans Mono:size=12',
    gap_x = 60,
    gap_y = 60,
    minimum_height = 5,
    minimum_width = 5,
    net_avg_samples = 2,
    no_buffers = true,
    out_to_console = false,
    out_to_ncurses = false,
    out_to_stderr = false,
    out_to_x = true,
    own_window = true,
    own_window_class = 'Conky',
    own_window_type = 'normal',
    show_graph_range = false,
    show_graph_scale = false,
    stippled_borders = 0,
    update_interval = 1.0,
    uppercase = false,
    use_spacer = 'none',
    use_xft = true,
}

conky.text = [[
${color grey}Info:$color ${scroll 32 Conky $conky_version - $sysname $nodename $kernel $machine}
$hr
${color grey}Uptime:$color $uptime
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color2}${voffset 5}AMD® Ryzen 7 7800X3D 4.2 GHz: ${color1}@ ${color green}${freq} MHz   
${color}${goto 13}CPU 1 ${goto 81}${color green}${cpu cpu1}% ${goto 131}${color3}${cpubar cpu1 18}
${color}${goto 13}CPU 2 ${goto 81}${color green}${cpu cpu2}% ${goto 131}${color3}${cpubar cpu2 18}
${color}${goto 13}CPU 3 ${goto 81}${color green}${cpu cpu3}% ${goto 131}${color3}${cpubar cpu3 18}
${color}${goto 13}CPU 4 ${goto 81}${color green}${cpu cpu4}% ${goto 131}${color3}${cpubar cpu4 18}
${color}${goto 13}CPU 5 ${goto 81}${color green}${cpu cpu5}% ${goto 131}${color3}${cpubar cpu5 18}
${color}${goto 13}CPU 6 ${goto 81}${color green}${cpu cpu6}% ${goto 131}${color3}${cpubar cpu6 18}
${color}${goto 13}CPU 7 ${goto 81}${color green}${cpu cpu7}% ${goto 131}${color3}${cpubar cpu7 18}
${color}${goto 13}CPU 8 ${goto 81}${color green}${cpu cpu8}% ${goto 131}${color3}${cpubar cpu8 18}
${color}${goto 13}CPU 9 ${goto 81}${color green}${cpu cpu9}% ${goto 131}${color3}${cpubar cpu9 18}
${color}${goto 13}CPU 10 ${goto 81}${color green}${cpu cpu10}% ${goto 131}${color3}${cpubar cpu10 18}
${color}${goto 13}CPU 11 ${goto 81}${color green}${cpu cpu11}% ${goto 131}${color3}${cpubar cpu11 18}
${color}${goto 13}CPU 12 ${goto 81}${color green}${cpu cpu12}% ${goto 131}${color3}${cpubar cpu12 18}
${color}${goto 13}CPU 13 ${goto 81}${color green}${cpu cpu13}% ${goto 131}${color3}${cpubar cpu13 18}
${color}${goto 13}CPU 14 ${goto 81}${color green}${cpu cpu14}% ${goto 131}${color3}${cpubar cpu14 18}
${color}${goto 13}CPU 15 ${goto 81}${color green}${cpu cpu15}% ${goto 131}${color3}${cpubar cpu15 18}
${color}${goto 13}CPU 16 ${goto 81}${color green}${cpu cpu16}% ${goto 131}${color3}${cpubar cpu16 18}
${color1}All CPU ${color green}${cpu}% ${goto 131}${color1}Temp: ${color green}${hwmon 2 temp 1}°C ${goto 250}${color1}Up: ${color green}$uptime
${color grey}$hr
${color green}$running_processes ${color1}running of ${color green}$processes ${color1}loaded processes.
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
 / $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed} ${color grey} - Down:$color ${downspeed}
$hr
${color grey}Name              PID     CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
]]

Showing GPU usage

TBD. Need to figure out the command to extract this info from and put in the conky template

See https://wiki.archlinux.org/title/AMDGPU#Monitoring. You could use amdgpu_top or nvtop which despite the name, does work with AMD cards.

Other references:

Enable REISUB for safe reboots during freezes/system lockups

Instead of having to hold the power button down to hard reset the system, we can use REISUB to more gently try to let the system reboot a bit more gracefully.

Alt + SysReq + { R | E | I | S | U | B }

  • R - switch the keyboard mode

    This is said to "Switch the keyboard from raw mode, the mode used by programs such as X11 and svgalib, to XLATE mode" (from Wikipedia), but I don't really know if this would normally have any notable effect.

  • E - gracefully terminate all running programs

    This sends the SIGTERM signal to all processes except init and thereby asks them to gracefully terminate, giving them a chance to tidy up and free their resources, save data, etc...

  • I - forcibly kill all running programs

    This is similar to the E, but sends the SIGKILL signal to all processes except init, which kills them immediately and forcibly.

  • S - sync all disks and flush their caches

    All your disks normally have a write cache, a piece of RAM where the system caches data it wants to save on the device, to speed the access up. Syncing tells the system to flush these caches now and perform all remaining writes. That way you do not lose any data that has already been cached but not been written yet, and it protects from leaving the file system in an inconsistent state.

  • U - unmount all disks and remount them read-only

    This is again pretty unspectacular, it simply makes all mounted disks read-only to prevent any further (partial) writes.

  • B - reboot the system

    This reboots the system. However, it does not perform a clean shutdown, but instead a hard reset.

-- Byte Commander in a StackOverflow answer

The SysReq key is the same as the PrintScreen key.

(via https://en.wikipedia.org/wiki/Magic_SysRq_key)

Resources:

Enable the SysReq key

  1. Edit /etc/default/grub
  2. In GRUB_CMDLINE_LINUX_DEFAULT="[...]", add sysrq_always_enabled=1
  3. sudo update-grub
  4. cat /proc/sys/kernel/sysrq which will now output 16. To understand this bitmask, TODO. TODO: This also needs to read at least 128 to do all of the commands.
  5. After a system restart, cat /proc/sys/kernel/sysrq should output 1 and you should be able to run all of the REISUB commands now
  6. I usually only have to run REI to get things working again.

What are the risks? Why isn't this just enabled by default?

There are some obvious security risks involved in fully enabling the SysRq key. In addition to forcing reboots and the like, it can be used to dump the contents of the CPU registers, which could theoretically reveal sensitive information. Since using it requires physical access to the system (unless you go out of your way), most desktop users will probably consider the level of risk acceptable. That said, make sure you fully understand the implications of enabling it and the dynamics of the larger context in which your system is operating before you turn SysRq all the way on.

-- https://wiki.archlinux.org/title/keyboard_shortcuts#Enabling*

Frequent `ERR_NETWORK_CHANGED` in Chrome ("Your connection was interrupted")

Frequent ERR_NETWORK_CHANGED in Chrome ("Your connection was interrupted") and then the page just reloads on its own successfully.

Related issues:

Looking through sudo journalctl | grep 'state changed', I do see the state changed new lease message a lot but it doesn't seem to correspond to every time this happens. because I saw it around 17:00 but the last occurrence in the log is 15:50:50. The timing here is probably just whenever I unlock my computer because I have noticed that the network seems to come back online whenever I log in again (feature?)

sudo journalctl | grep 'state changed'
$ sudo journalctl | grep 'state changed
...
Jun 07 01:11:02 eric-desktop-pc NetworkManager[1330]: <info>  [1686118262.3496] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 07 01:53:34 eric-desktop-pc NetworkManager[1330]: <info>  [1686120814.0294] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 07 07:05:05 eric-desktop-pc NetworkManager[1330]: <info>  [1686139505.3063] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 07 07:21:34 eric-desktop-pc NetworkManager[1330]: <info>  [1686140494.0295] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 07 12:44:52 eric-desktop-pc NetworkManager[1330]: <info>  [1686159892.3497] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 07 12:51:11 eric-desktop-pc NetworkManager[1330]: <info>  [1686160271.0294] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 07 18:11:18 eric-desktop-pc NetworkManager[1330]: <info>  [1686179478.7956] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 07 18:27:48 eric-desktop-pc NetworkManager[1330]: <info>  [1686180468.0295] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 07 23:51:09 eric-desktop-pc NetworkManager[1330]: <info>  [1686199869.0206] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 08 00:09:12 eric-desktop-pc NetworkManager[1330]: <info>  [1686200952.3496] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 08 05:25:15 eric-desktop-pc NetworkManager[1330]: <info>  [1686219915.0296] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 08 05:39:32 eric-desktop-pc NetworkManager[1330]: <info>  [1686220772.3497] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 08 10:51:42 eric-desktop-pc NetworkManager[1330]: <info>  [1686239502.0294] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 08 11:18:52 eric-desktop-pc NetworkManager[1330]: <info>  [1686241132.3496] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 08 16:21:44 eric-desktop-pc NetworkManager[1330]: <info>  [1686259304.0296] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 08 17:17:02 eric-desktop-pc NetworkManager[1330]: <info>  [1686262622.3497] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 08 21:49:26 eric-desktop-pc NetworkManager[1330]: <info>  [1686278966.0297] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 08 22:56:22 eric-desktop-pc NetworkManager[1330]: <info>  [1686282982.3496] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 09 03:25:51 eric-desktop-pc NetworkManager[1330]: <info>  [1686299151.0300] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 09 04:48:07 eric-desktop-pc NetworkManager[1330]: <info>  [1686304087.9299] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 09 08:54:40 eric-desktop-pc NetworkManager[1330]: <info>  [1686318880.0296] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 09 10:27:13 eric-desktop-pc NetworkManager[1330]: <info>  [1686324433.9312] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 09 14:21:17 eric-desktop-pc NetworkManager[1330]: <info>  [1686338477.0297] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 09 16:24:29 eric-desktop-pc NetworkManager[1330]: <info>  [1686345869.8470] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 09 19:42:31 eric-desktop-pc NetworkManager[1330]: <info>  [1686357751.0297] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 09 22:22:22 eric-desktop-pc NetworkManager[1330]: <info>  [1686367342.3496] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 10 01:17:26 eric-desktop-pc NetworkManager[1330]: <info>  [1686377846.0299] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 10 04:14:12 eric-desktop-pc NetworkManager[1330]: <info>  [1686388452.3496] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 10 06:45:03 eric-desktop-pc NetworkManager[1330]: <info>  [1686397503.0299] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 10 10:04:38 eric-desktop-pc NetworkManager[1330]: <info>  [1686409478.6918] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx
Jun 10 12:01:00 eric-desktop-pc NetworkManager[1330]: <info>  [1686416460.0300] dhcp4 (eno1): state changed new lease, address=192.168.1.xxx
Jun 10 15:50:50 eric-desktop-pc NetworkManager[1330]: <info>  [1686430250.9306] dhcp6 (eno1): state changed new lease, address=xxx:xxx:xxxx::xxx xxxx:xxx:xxxx:xxxx::xxx

I never noticed this problem on Windows with the same wired connection or on my Macbook which comes from the same switch.

System information

inxi --admin --verbosity=7 --filter --no-host

(Personally Identifiable Information like serial numbers and MAC addresses will be filtered out by the above command)

$ inxi --admin --verbosity=7 --filter --no-host
System:
  Kernel: 6.1.29-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 12.2.1
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.1-x86_64
    root=UUID=xxx rw quiet
    cryptdevice=UUID=xxx:luks-xxx
    root=/dev/mapper/luks-xxx splash
    apparmor=1 security=apparmor udev.log_priority=3 amdgpu.aspm=0
  Desktop: Xfce v: 4.18.1 tk: Gtk v: 3.24.36 info: xfce4-panel wm: xfwm
    v: 4.18.0 vt: 7 dm: LightDM v: 1.32.0 Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Desktop System: ASUS product: N/A v: N/A serial: <superuser required>
  Mobo: ASUSTeK model: PRIME X670-P WIFI v: Rev 1.xx
    serial: <superuser required> UEFI: American Megatrends v: 1413
    date: 04/26/2023
Battery:
  Device-1: hidpp_battery_0 model: Logitech Wireless Mouse MX Master 3
    serial: <filter> charge: 100% (should be ignored) rechargeable: yes
    status: discharging
Memory:
  System RAM: available: 62.53 GiB used: 41.89 GiB (67.0%)
  RAM Report: permissions: Unable to run dmidecode. Root privileges
    required.
CPU:
  Info: model: AMD Ryzen 7 7800X3D bits: 64 type: MT MCP arch: Zen 4 gen: 5
    level: v4 note: check built: 2022+ process: TSMC n5 (5nm) family: 0x19 (25)
    model-id: 0x61 (97) stepping: 2 microcode: 0xA601203
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 512 KiB desc: d-8x32 KiB; i-8x32 KiB L2: 8 MiB desc: 8x1024 KiB
    L3: 96 MiB desc: 1x96 MiB
  Speed (MHz): avg: 3333 high: 4795 min/max: 3000/5049 boost: enabled
    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 3000 2: 2842
    3: 3761 4: 2768 5: 2773 6: 4482 7: 2759 8: 4795 9: 2774 10: 2767 11: 3297
    12: 2868 13: 2755 14: 4122 15: 2778 16: 4790 bogomips: 134194
  Flags: 3dnowprefetch abm adx aes amd_lbr_v2 aperfmperf apic arat avic avx
    avx2 avx512_bf16 avx512_bitalg avx512_vbmi2 avx512_vnni avx512_vpopcntdq
    avx512bw avx512cd avx512dq avx512f avx512ifma avx512vbmi avx512vl bmi1
    bmi2 bpext cat_l3 cdp_l3 clflush clflushopt clwb clzero cmov cmp_legacy
    constant_tsc cpb cppc cpuid cqm cqm_llc cqm_mbm_local cqm_mbm_total
    cqm_occup_llc cr8_legacy cx16 cx8 de decodeassists erms extapic
    extd_apicid f16c flush_l1d flushbyasid fma fpu fsgsbase fsrm fxsr
    fxsr_opt gfni ht hw_pstate ibpb ibrs ibs invpcid irperf lahf_lm lbrv lm
    mba mca mce misalignsse mmx mmxext monitor movbe msr mtrr mwaitx
    nonstop_tsc nopl npt nrip_save nx ospke osvw overflow_recov pae pat
    pausefilter pclmulqdq pdpe1gb perfctr_core perfctr_llc perfctr_nb
    perfmon_v2 pfthreshold pge pku pni popcnt pse pse36 rapl rdpid rdpru
    rdrand rdseed rdt_a rdtscp rep_good sep sha_ni skinit smap smca smep ssbd
    sse sse2 sse4_1 sse4_2 sse4a ssse3 stibp succor svm svm_lock syscall tce
    topoext tsc tsc_scale umip v_spec_ctrl v_vmsave_vmload vaes vgif
    vmcb_clean vme vmmcall vpclmulqdq wbnoinvd wdt x2apic x2avic xgetbv1
    xsave xsavec xsaveerptr xsaveopt xsaves
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: retbleed status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, IBRS_FW,
    STIBP: always-on, RSB filling, PBRSB-eIBRS: Not affected
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: AMD Navi 31 [Radeon RX 7900 XT/7900 XTX] vendor: ASRock
    driver: amdgpu v: kernel arch: RDNA-3 code: Navi-3x process: TSMC n5 (5nm)
    built: 2022+ pcie: gen: 4 speed: 16 GT/s lanes: 16 ports: active: DP-1
    empty: DP-2,DP-3,HDMI-A-1 bus-ID: 03:00.0 chip-ID: 1002:744c
    class-ID: 0300
  Display: x11 server: X.Org v: 21.1.8 compositor: xfwm v: 4.18.0 driver: X:
    loaded: amdgpu unloaded: modesetting,radeon alternate: fbdev,vesa
    dri: radeonsi gpu: amdgpu display-ID: :0.0 screens: 1
  Screen-1: 0 s-res: 3840x2160 s-dpi: 96 s-size: 1016x571mm (40.00x22.48")
    s-diag: 1165mm (45.88")
  Monitor-1: DP-1 mapped: DisplayPort-0 model: A409U serial: <filter>
    built: 2015 res: 3840x2160 hz: 60 dpi: 111 gamma: 1.2
    size: 878x485mm (34.57x19.09") diag: 1003mm (39.5") ratio: 16:9 modes:
    max: 3840x2160 min: 720x400
  API: OpenGL v: 4.6 Mesa 23.2.0-devel (git-8e53b293f8) renderer: AMD
    Radeon RX 7900 XTX (gfx1100 LLVM 15.0.7 DRM 3.49 6.1.29-1-MANJARO)
    direct-render: Yes
Audio:
  Device-1: AMD driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s
    lanes: 16 bus-ID: 03:00.1 chip-ID: 1002:ab30 class-ID: 0403
  Device-2: AMD Family 17h/19h HD Audio vendor: ASUSTeK
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
    bus-ID: 12:00.6 chip-ID: 1022:15e3 class-ID: 0403
  Device-3: Audio-Technica AT2020 USB driver: snd-usb-audio type: USB
    rev: 1.1 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-3:7 chip-ID: 0909:0018
    class-ID: 0102
  API: ALSA v: k6.1.29-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: JACK v: 1.9.22 status: off tools: N/A
  Server-2: PipeWire v: 0.3.70 status: off with: wireplumber status: active
    tools: pw-cli,wpctl
  Server-3: PulseAudio v: 16.1 status: active with: pulseaudio-alsa
    type: plugin tools: pacat,pactl,pavucontrol
Network:
  Device-1: Realtek RTL8125 2.5GbE vendor: ASUSTeK driver: r8169 v: kernel
    pcie: gen: 2 speed: 5 GT/s lanes: 1 port: e000 bus-ID: 0b:00.0
    chip-ID: 10ec:8125 class-ID: 0200
  IF: eno1 state: up speed: 1000 Mbps duplex: full mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
    broadcast: <filter>
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: noprefixroute scope: global
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: noprefixroute scope: link
  Device-2: Realtek vendor: AzureWave driver: N/A pcie: gen: 1
    speed: 2.5 GT/s lanes: 1 port: d000 bus-ID: 0c:00.0 chip-ID: 10ec:b852
    class-ID: 0280
  IF-ID-1: br-4e443c44bdff state: up speed: 10000 Mbps duplex: unknown
    mac: <filter>
  Message: Output throttled. IPs: 2; Limit: 10; Override: --limit [1-x;-1
    all]
  IF-ID-2: docker0 state: up speed: 10000 Mbps duplex: unknown mac: <filter>
  Message: Output throttled. IPs: 2; Limit: 10; Override: --limit [1-x;-1
    all]
  IF-ID-3: veth030bb53 state: up speed: 10000 Mbps duplex: full
    mac: <filter>
  IF-ID-4: veth12991a2 state: up speed: 10000 Mbps duplex: full
    mac: <filter>
  IF-ID-5: veth87768b4 state: up speed: 10000 Mbps duplex: full
    mac: <filter>
  IF-ID-6: vetha3f2679 state: up speed: 10000 Mbps duplex: full
    mac: <filter>
  WAN IP: <filter>
Bluetooth:
  Device-1: Cambridge Silicon Radio Bluetooth Dongle (HCI mode) driver: btusb
    v: 0.8 type: USB rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1
    bus-ID: 1-5.3.3:5 chip-ID: 0a12:0001 class-ID: e001
  Report: rfkill ID: hci1 rfk-id: 1 state: up address: see --recommends
  Device-2: IMC Networks Bluetooth Radio driver: btusb v: 0.8 type: USB
    rev: 1.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-2:2 chip-ID: 13d3:3571
    class-ID: e001 serial: <filter>
  Report: ID: hci0 rfk-id: 0 state: up address: N/A
Logical:
  Message: No logical block device data found.
  Device-1: luks-42ea82bf-14d8-4122-a190-5ae9845faa1a maj-min: 254:0
    type: LUKS dm: dm-0 size: 1.82 TiB
  Components:
  p-1: nvme0n1p2 maj-min: 259:2 size: 1.82 TiB
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 1.82 TiB used: 418.28 GiB (22.5%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: SSD 980 PRO 2TB
    size: 1.82 TiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: 5B2QGXA7 temp: 35.9 C
    scheme: GPT
  Message: No optical or floppy data found.
Partition:
  ID-1: / raw-size: 1.82 TiB size: 1.79 TiB (98.37%) used: 418.28 GiB (22.8%)
    fs: ext4 dev: /dev/dm-0 maj-min: 254:0
    mapped: luks-42ea82bf-14d8-4122-a190-5ae9845faa1a label: N/A
    uuid: e8e411f9-d7ac-4221-bb2c-8052f92e474f
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 472 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1 label: N/A
    uuid: A9FA-383D
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default)
  ID-1: swap-1 type: file size: 16 GiB used: 1.15 GiB (7.2%) priority: -2
    file: /swapfile
Unmounted:
  Message: No unmounted partitions found.
USB:
  Hub-1: 1-0:1 info: hi-speed hub with single TT ports: 12 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Hub-2: 1-5:2 info: VIA Labs Hub ports: 4 rev: 2.1
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 2109:2811
    class-ID: 0900
  Device-1: 1-5.2:36 info: Cooler Master MASTERKEYS PRO S type: keyboard,HID
    driver: hid-generic,usbhid interfaces: 3 rev: 1.1 speed: 12 Mb/s (1.4 MiB/s)
    lanes: 1 mode: 1.1 power: 100mA chip-ID: 2516:003c class-ID: 0300
  Hub-3: 1-5.3:4 info: VIA Labs Hub ports: 4 rev: 2.1
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 2109:2811
    class-ID: 0900
  Device-1: 1-5.3.3:5 info: Cambridge Silicon Radio Bluetooth Dongle (HCI
    mode) type: bluetooth driver: btusb interfaces: 2 rev: 2.0
    speed: 12 Mb/s (1.4 MiB/s) lanes: 1 mode: 1.1 chip-ID: 0a12:0001
    class-ID: e001
  Hub-4: 2-0:1 info: super-speed hub ports: 5 rev: 3.1
    speed: 20 Gb/s (2.33 GiB/s) lanes: 2 mode: 3.2 gen-2x2 chip-ID: 1d6b:0003
    class-ID: 0900
  Hub-5: 2-5:2 info: VIA Labs Hub ports: 4 rev: 3.0
    speed: 5 Gb/s (596.0 MiB/s) lanes: 1 mode: 3.2 gen-1x1 chip-ID: 2109:8110
    class-ID: 0900
  Hub-6: 2-5.3:3 info: VIA Labs Hub ports: 4 rev: 3.0
    speed: 5 Gb/s (596.0 MiB/s) lanes: 1 mode: 3.2 gen-1x1 chip-ID: 2109:8110
    class-ID: 0900
  Hub-7: 3-0:1 info: hi-speed hub with single TT ports: 12 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Device-1: 3-2:2 info: IMC Networks Bluetooth Radio type: bluetooth
    driver: btusb interfaces: 2 rev: 1.0 speed: 12 Mb/s (1.4 MiB/s) lanes: 1
    mode: 1.1 power: 500mA chip-ID: 13d3:3571 class-ID: e001 serial: <filter>
  Device-2: 3-3:7 info: Audio-Technica AT2020 USB type: audio
    driver: snd-usb-audio interfaces: 2 rev: 1.1 speed: 12 Mb/s (1.4 MiB/s)
    lanes: 1 mode: 1.1 power: 90mA chip-ID: 0909:0018 class-ID: 0102
  Device-3: 3-4:4 info: Logitech Unifying Receiver type: keyboard,mouse,HID
    driver: logitech-djreceiver,usbhid interfaces: 3 rev: 2.0
    speed: 12 Mb/s (1.4 MiB/s) lanes: 1 mode: 1.1 power: 98mA
    chip-ID: 046d:c52b class-ID: 0300
  Device-4: 3-7:5 info: ASUSTek AURA LED Controller type: HID
    driver: hid-generic,usbhid interfaces: 2 rev: 2.0 speed: 12 Mb/s (1.4 MiB/s)
    lanes: 1 mode: 1.1 power: 16mA chip-ID: 0b05:19af class-ID: 0300
    serial: <filter>
  Device-5: 3-11:6 info: Corsair HX1000i Power Supply type: HID
    driver: corsair-psu,usbhid interfaces: 1 rev: 2.0 speed: 12 Mb/s (1.4 MiB/s)
    lanes: 1 mode: 1.1 power: 100mA chip-ID: 1b1c:1c1e class-ID: 0300
  Hub-8: 4-0:1 info: super-speed hub ports: 6 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1 chip-ID: 1d6b:0003
    class-ID: 0900
  Hub-9: 5-0:1 info: hi-speed hub with single TT ports: 2 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Hub-10: 6-0:1 info: super-speed hub ports: 2 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1 chip-ID: 1d6b:0003
    class-ID: 0900
  Hub-11: 7-0:1 info: hi-speed hub with single TT ports: 2 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Hub-12: 8-0:1 info: super-speed hub ports: 2 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1 chip-ID: 1d6b:0003
    class-ID: 0900
  Hub-13: 9-0:1 info: hi-speed hub with single TT ports: 1 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Hub-14: 10-0:1 info: Linux Foundation 3.0 root hub ports: N/A rev: 3.0
    speed: 5 Gb/s (596.0 MiB/s) lanes: 1 mode: 3.2 gen-1x1 chip-ID: 1d6b:0003
    class-ID: 0900
Sensors:
  System Temperatures: cpu: 51.5 C mobo: N/A gpu: amdgpu temp: 62.0 C
    mem: 63.0 C
  Fan Speeds (RPM): N/A gpu: amdgpu fan: 1033
Info:
  Processes: 581 Uptime: 20d 1h 2m wakeups: 754 Init: systemd v: 253
  default: graphical tool: systemctl Compilers: gcc: 13.1.1 clang: 15.0.7
  Packages: 1262 pm: pacman pkgs: 1255 libs: 362 tools: pamac,yay pm: flatpak
  pkgs: 0 pm: snap pkgs: 7 Shell: Bash v: 5.1.16 running-in: wezterm-gui
  inxi: 3.3.27

(Docker is installed)

My Docker containers are not constantly restarting (up for days)

Potential solution

If you can accept disabling IPv6, it seems like that works for many people.

I've tried this out for now: https://wiki.archlinux.org/title/IPv6#Disable_IPv6

  1. Disable IPv6: sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
  2. Make the changes persist over restarts
    /etc/sysctl.d/40-ipv6.conf
    # Disable IPv6 to avoid `ERR_NETWORK_CHANGED` in Chrome
    # (see https://github.com/MadLittleMods/linux-notes/issues/36)
    net.ipv6.conf.all.disable_ipv6 = 1
    

Bluetooth headphones (audio)

Bluetooth headphones (audio)

Restart Bluetooth service

# See the status of the service
$ sudo systemctl status bluetooth

# Restart the service
sh sudo systemctl restart bluetooth

# Start/stop the service
sh sudo systemctl start bluetooth
sh sudo systemctl stop bluetooth

Bluetooth headphones don't show up as an audio output device after being connected

I was experiencing this problem with my Apple AirPods are successfully connecting Bluetooth but not being able to choose them as an audio output device in the volume mixer.

To resolve this, use the following steps:

First, you can check if you're using PulseAudio via the following command (via https://forum.manjaro.org/t/how-to-know-what-audio-driver-am-i-using/87530):

$ inxi -Ax | grep -E 'PulseAudio|PipeWire'
  Server-2: PipeWire v: 0.3.70 status: off
  Server-3: PulseAudio v: 16.1 status: active

If you're using PulseAudio, here are the easy steps to restart it:

# Check if any PulseAudio instances are running. It normally prints no output, just exit code. 0 means running.
$ pulseaudio --check

$ Kill any existing instances
$ pulseaudio -k

$ Start PulseAudio again as a daemon
$  pulseaudio -D

(via https://askubuntu.com/questions/15223/how-can-i-restart-pulseaudio-without-having-to-logout)

🎉 Yay, successful bluetooth audio

Add network Firewall

With Manjaro (with XFCE), it comes with the ufw (Uncomplicated FireWall) firewall package but it's disabled by default, https://wiki.manjaro.org/index.php/Firewalls

You can enable by going into the Firewall configuration GUI app or using the following commands to enable the service:

$ sudo systemctl enable ufw.service
$ sudo ufw enable

To see the status:

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

This indicates that it will block all incoming traffic and allow all outgoing traffic. This is a good starting point for most desktop systems.

Disable scrolling over select box changing values

It's pretty disconcerting when you scroll over a settings panel and you see some value changing in select box as you go by 😬

Solution

TODO: I don't know how to fix this yet

XFCE/GTK on Manjaro 22.1.2

Full disk encryption

How to setup?

I don't know of the best option, I used the option in the installer.

Decrypting takes a long time

Related to how I set it up initially. Seems like a LUKS2 problem or something (idk)

Graceful retry after entering the wrong password

If you use the built-in disk encryption option from the Manjaro/XFCE install, it will only give you once chance to enter your password correctly before dropping you in grub rescue.

See https://forum.manjaro.org/t/how-do-get-graceful-retry-for-bad-wrong-password-entry-at-disk-decryption-during-boot/85233

Enter passphrase for hd1,gp2 (...):
Attempting to decrypt master key...
Enter passphrase for hd2,gpt2(...long-hex-string...):
error: access denied.
error: no such cryptodisk found.
error: disk 'cryptouuid/...long-hex-string...' not found.
Entering rescue mode...
grub rescue>

To workaround this issue, you can use:

  1. cryptomount -a to mount all encrypted partitions (hopefully only one)
  2. insmod normal to get of grub rescue
  3. normal to continue the boot process

Updating the UEFI (BIOS)

When updating the UEFI (BIOS), it warns about suspending BitLocker and any encryption relying on the TPM (Trusted Platform Module, security chip on your motherboard). I was uncertain whether this applied to me with how I had full-disk encryption setup but I was completely fine without doing anything:

This is just a default warning, the BIOS always gives it. Only if you use the TPM to automatically decrypt LUKS on boot this would apply to you, if you have such a setup the TPM will not release the password anymore making it so that you will have to manually enter the password.

So if you are typing a password on boot right now this does not apply to you.

-- @arkane-linux, https://www.reddit.com/r/linux4noobs/comments/17z6ol8/comment/k9z6pqo/

Click on window buttons in task bar to cycle through windows

Expected

A really nice feature of 7+ Taskbar Tweaker that I was using on Windows 10, was the option to cycle through the windows grouped/combined under the tasbar item (window button in XFCE) just by left-clicking on the item itself.

Actual

Currently when left-clicking on a window button with the Group windows by application panel preference enabled, it just brings up the list of open windows and you have to select something in the list before it brings the window to focous.

Solution

TBD

There are some cycling options in Window Manager Tweaks -> Cycling but none of them address my use case and are pretty much focused on the Alt + Tab functionality.

And looking at the Window Buttons preferences by Right-clicking on the task bar -> Panel -> Panel Preferences -> Items -> Select the Window Buttons -> Click the 4-line hamburger menu icon at the bottom to edit the item; we don't see anything that would address this: (Window Buttons preferences screenshot)


System Details:

  • Manjaro 22.1.2 with XFCE
  • Chrome Version 113.0.5672.126

Keywords:

  • switch windows by left-clicking on window button

Screenshot tool

Expected

Something as good as ShareX (GitHub repo) that I used on Windows

Potential solutions

Screenshot tool

  • Built-in: xfce4-screenshooter (just search for Screenshot in the apps)

  • https://flameshot.org/

    • pamac install flameshot
    • No gif capture
    • Works fine for basic screenshotting
  • pamac install peek ✔️

  • pamac install kooha

    Error output
    Failed to start recording
    
    Caused by:
        0: Check out <a href="https://github.com/SeaDve/Kooha#-it-doesnt-work">It Doesn't Work page</a> for help.
        1: Failed to create ScreencastSession
        2: Failed to create session
        3: Interaction was ended in some other way with response Variant { ptr: 0x5629a1b918d0, type: VariantTy { inner: "a{sv}" }, value: "@a{sv} {}" }
    

    Error as of 2024-02-09:

    Failed to start recording
    
    Caused by:
        0: Check out <a href="https://github.com/SeaDve/Kooha#-it-doesnt-work">It Doesn't Work page</a> for help.
        1: Failed to create ScreencastSession
        2: Failed to create session
        3: Failed to call `CreateSession` with parameters: Variant { ptr: 0x5618d5dee260, type: VariantTy { inner: "(a{sv})" }, value: "({'session_handle_token': <'kooha_0'>, 'handle_token': <'kooha_1'>},)" }
        4: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface “org.freedesktop.portal.ScreenCast” on object at path /org/freedesktop/portal/desktop
    
  • TODO: Find something better

Google Drive sync

Setup

Configure

First setup the rclone config and add your Google Drive account as a remote. The docs are easy to follow but I also included the output from when I set things up below.

rclone config setup
$ rclone config
2023/05/08 13:26:18 NOTICE: Config file "/home/eric/.config/rclone/rclone.conf" not found - using defaults
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

Enter name for new remote.
name> google-drive-remote

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
[...]
18 / Google Drive
   \ (drive)
[...]
Storage> 18

Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a value. Press Enter to leave empty.
client_id> xxx

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret> xxx

Option scope.
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
 1 / Full access all files, excluding Application Data Folder.
   \ (drive)
 2 / Read-only access to file metadata and file contents.
   \ (drive.readonly)
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ (drive.file)
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ (drive.appfolder)
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ (drive.metadata.readonly)
scope> 1

Option service_account_file.
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a value. Press Enter to leave empty.
service_account_file> 

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Use web browser to automatically authenticate rclone with remote?
 * Say Y if the machine running rclone has a web browser you can use
 * Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.

y) Yes (default)
n) No
y/n> y

2023/05/08 13:33:30 NOTICE: Make sure your Redirect URL is set to "http://127.0.0.1:53682/" in your custom config.
2023/05/08 13:33:30 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=xxx
2023/05/08 13:33:30 NOTICE: Log in and authorize rclone for access
2023/05/08 13:33:30 NOTICE: Waiting for code...
2023/05/08 13:35:14 NOTICE: Got code
Configure this as a Shared Drive (Team Drive)?

y) Yes
n) No (default)
y/n> n

Configuration complete.
Options:
- type: drive
- client_id: xxx
- client_secret: xxx
- scope: drive
- token: {"access_token":"xxx","token_type":"Bearer","refresh_token":"xxx","expiry":"2023-05-08T14:35:13.748643158-05:00"}
- team_drive: 
Keep this "google-drive-remote" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Current remotes:

Name                 Type
====                 ====
google-drive-remote  drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

Setup bisync

Then setup rclone bisync between your Google drive remote and a local folder and do an initial sync with the --resync flag to get things started.

A word of warning from the docs:

rclone bisync remote1:path1 remote2:path2 --resync

Warning: Path1 files may overwrite Path2 versions.
Consider using --verbose or --dry-run first.

This will effectively make both Path1 and Path2 filesystems contain a matching superset of all files. Path2 files that do not exist in Path1 will be copied to Path1, and the process will then sync the Path1 tree to Path2.

In terms of how to refer to your remote, this notice explained it pretty well:

NOTICE: "google-drive-remote" refers to a local folder, use "google-drive-remote:" to refer to your remote or "./google-drive-remote" to hide this warning

With all that being said, we can use the following command:

$ rclone bisync google-drive-remote: ~/google-drive/ --resync --drive-acknowledge-abuse
# Wait for it to finish...
2023/05/08 14:24:54 INFO  : Bisync successful
2023/05/08 14:24:54 INFO  : 
Transferred:   	   31.500 KiB / 31.500 KiB, 100%, 117 B/s, ETA 0s
Checks:              6411 / 6411, 100%
Transferred:            1 / 1, 100%
Elapsed time:      6m39.8s


# If it fails, ----------------------------------------------------------------------------------------
# we can double-check what it will do on resync with a dry-run and then do a `--resync` again
$ rclone bisync google-drive-remote: ~/google-drive/ --resync --drive-acknowledge-abuse --dry-run --verbose
# Inspect the output to make sure it's doing sane things
$ rclone bisync google-drive-remote: ~/google-drive/ --resync --drive-acknowledge-abuse
# Wait for it to finish...

Automatically run the sync periodically/regularly

Then we need to setup a scheduled task to run the sync periodically. We're going to be using a systemd timer instead of a cron for a variety of benefits.

  1. First create the service and timer unit files:
    /etc/systemd/system/eric-rclone-bisync.service

    [Unit]
    Description=Run rclone bisync to sync Eric's Google Drive
    
    [Service]
    User=eric
    Group=eric
    ExecStart=rclone bisync google-drive-remote: ~/google-drive/ --drive-acknowledge-abuse
    

    /etc/systemd/system/eric-rclone-bisync.timer

    [Unit]
    Description=rclone bisync service timer
    
    [Timer]
    OnBootSec=0min
    # Run every 6 hours
    OnCalendar=*-*-* */6:00:00
    Unit=eric-rclone-bisync.service
    
    [Install]
    WantedBy=multi-user.target
    
  2. Run sudo systemctl daemon-reload to make systemd aware of the new files (this makes systemd reload all files and re-consider their dependencies)

  3. Enable the timer unit so the timer is enabled at boot every time: sudo systemctl enable eric-rclone-bisync.timer

  4. To start the the timer unit immediately (without booting): sudo systemctl start eric-rclone-bisync.timer

  5. To see the status of the timer and service: sudo systemctl status eric-rclone-bisync.timer eric-rclone-bisync.service


Other references:

Problems

Unable to bisync Google Docs

When trying to sync after --resync, a bunch of Ignoring incorrect line for every file that then turns into Path2 file not found in Path1 later.

See rclone/rclone#5696

Disable scroll wheel changing tabs in Chrome

When hovering over the tab strip at the top in Chrome, by default scrolling your mouse wheel will switch tabs across the strip but this is undesired.

  1. Visit chrome://flags/#scrollable-tabstrip and set Tab Scrolling to Enabled
    • The Tab Scrolling description mentions an unrelated problem but this option does stop the mouse wheel from changing tabs. It also still allows you to scroll the list of tabs when it's full and overflows.

via https://superuser.com/a/1677332/130885

Window snapping and tiling

Setup keyboards shortcuts

Go to Window Manager -> Keyboard -> Tile window to the x (edit these shortcuts)

Note: These aren't the same convenient keyboard shortcuts from Windows where you can just use the arrow keys to tile on a given side and corner with the same arrow keys. Not sure how to adapt these to that.

Setup drag to screen edge to automatically tile

Go to Window Manager Tweaks -> Accessibility -> Automatically tile windows when moving towards the screen edge

Note: This was already on by default to me but I had to open these settings and toggle for it to actually work.

Installing `timg` from source

timg is a terminal image and video viewer that supports Kitty, iTerm2, or sixel graphics protocols

Usage:

# Auto-detect and display image
$ timg test.png

# Use Kitty graphics pixelation
$ timg -pk test.png

Installation

See https://github.com/hzeller/timg?tab=readme-ov-file#get-repo-and-compile-timg

# Get repo
git clone https://github.com/hzeller/timg.git
# Enter the checked out repository directory.
cd timg
# Generate a dedicated build directory.
mkdir build
cd build
# cmake with your desired options (a bunch of sane options are already on by default),
# see descriptions above (example: `cmake ../ -DWITH_OPENSLIDE_SUPPORT=On`).
#
# You can specify your install prefix via `-DCMAKE_INSTALL_PREFIX`
cmake -DCMAKE_INSTALL_PREFIX=/home/eric/  ../
# This will produce a binary in `build/src/timg`
make

# Install on your system
# (will use the `-DCMAKE_INSTALL_PREFIX=/home/eric/` you specified in the `cmake` step)
make install

Take screenshot without prompt to save (`xfce4-screenshooter`)

Take screenshot without prompt

  1. XFCE Settings -> Keyboard -> Application Shortcuts
  2. Add a new shortcut with the following command:
    bash -c 'xfce4-screenshooter --save /home/eric/Pictures/screenshots/"Screenshot $(date -d "today" +"%Y-%m-%d %H:%M:%S").png" --window'
    
  3. Set the keyboard combination
  4. 🎉

If you want to play a sound on screenshot as well:

bash -c 'xfce4-screenshooter --save /home/eric/Pictures/screenshots/"Screenshot $(date -d "today" +"%Y-%m-%d %H:%M:%S").png" --window && mpv /usr/share/sounds/freedesktop/stereo/camera-shutter.oga'

Related posts:

Default screenshot flow

By default, pressing Print Screen, will bring up a dialogue to let you choose what you want to do with the image (save, open in an app, upload to imgur, etc), and then saving it will bring up a dialogue to choose the location/filename.

. . .
Press Print Screen

Default screenshot keyboard shortcuts (XFCE Settings -> Keyboard -> Application Shortcuts):

  • xfce4-screenshooter -fd 1: Print
  • xfce4-screenshooter -r: Shift + Ctrl + Print
  • xfce4-screenshooter -wd 1: Shift + Print

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.