Instalace Fedora 39 T2 na Macbook Pro 16″ (2019), 2,3GHz i9, 32GB RAM, AMD Pro 550M 8GB, 1TB, dualboot (pracovní verze)

  1. Použijeme instalační obraz pro MBP z těchto stránek, který stáhneme odtud.
  2. Začněte s „out of box“ Mac s jedním svazkem
    • To nezahrnuje počítače Mac, které již používají „Boot Camp“ pro podporu duálního spouštění s Windows.
  3. Spusťte nástroj Disk Utility (/Applications/Utilities/Disk Utility)
  4. K opětovnému rozdělení disku použijte Disk Utility
    • Klepněte na ikonu jednotky, nikoli na svazek Mac; tím se aktivuje tlačítko Oddíl na panelu nástrojů. V závislosti na verzi macOS možná budete muset kliknout na „zobrazit“ a poté vybrat „zobrazit všechna zařízení“.
    • Klepněte na tlačítko Oddíl na panelu nástrojů
    • Kliknutím na tlačítko + přidáte oddíl. V závislosti na verzi macOS možná budete muset potvrdit, že chcete přidat oddíl, nikoli svazek.
    • Pomocí rozhraní nastavte požadovanou velikost nového oddílu. Název „Bez názvu“ a Formát „Mac OS Extended“ ponechte beze změny. Pokud je výchozí formát Formát APFS, změňte jej na Mac OS Extended (Journaled).
    • Klepněte na tlačítko Použít. Klepněte na Oddíl. Poté klikněte na Pokračovat.
  5. Vytvořte instalační médium Fedory
    • K vytvoření instalačního média Fedory použijte Fedora Media Writer pro macOS.
    • Restartujte přidržením klávesy ⌥ Opt (nebo pravého Alt ) a ve správci spouštění vyberte možnost „Fedora Media“. Spusťte Fedoru.
  6. Mluvil Pokročilá instalace do cíle
    • Vyberte správný disk
    • Vyberte „Automatická konfigurace rozdělení“
    • Klikněte na Hotovo, když se zobrazí Možnosti instalace, zvolte Reclaim Space
    • Vyhledejte a vyberte svazek hfs+ „Untitled“ vytvořený dříve v macOS Disk Utility, klikněte na tlačítko Odstranit (nikoli Smazat vše)
    • Kliknutím na tlačítko Reclaim space přijmete změny a vrátíte se do hlavní nabídky
  7. Klepněte na tlačítko Zahájit instalaci

 

Po instalaci

  1. F) WIFI

=======

1) spustit na Macu skritp firmware.sh

#!/usr/bin/env bash
#
# Copyright (C) 2022 Aditya Garg <gargaditya08@live.com>
# Copyright (C) 2022 Orlando Chamberlain <redecorating@protonmail.com>
#
# The python script is based upon the original work by The Asahi Linux Contributors.„““:“
set -euo pipefailos=$(uname -s)
case „$os“ in
(Darwin)
echo „Detected macOS“
ver=$(sw_vers -productVersion | cut -d „.“ -f 1)
if [[ ${ver} < 12 ]]
then
echo -e „\nThis script is compatible only with macOS Monterey or later. Please upgrade your macOS.“
exit 1
fi
identifier=$(system_profiler SPHardwareDataType | grep „Model Identifier“ | cut -d „:“ -f 2 | xargs)
echo „Mounting the EFI partition“
EFILABEL=$(diskutil info disk0s1 | grep „Volume Name“ | cut -d „:“ -f 2 | xargs)
sudo diskutil mount disk0s1
echo „Getting Wi-Fi and Bluetooth firmware“
if [[ ${1-default} = -v ]]
then
tar -cvf „/Volumes/${EFILABEL}/firmware.tar“ -C /usr/share/firmware/ .
gzip –best „/Volumes/${EFILABEL}/firmware.tar“
else
tar -cf „/Volumes/${EFILABEL}/firmware.tar“ -C /usr/share/firmware/ .
gzip –best „/Volumes/${EFILABEL}/firmware.tar“
fi
if [[ (${identifier} = iMac19,1) || (${identifier} = iMac19,2) || (${identifier} = iMacPro1,1) ]]
then
nvramfile=$(ioreg -l | grep RequestedFiles | cut -d „/“ -f 5 | rev | cut -c 4- | rev)
txcapblob=$(ioreg -l | grep RequestedFiles | cut -d „/“ -f 3 | cut -d „\““ -f 1)
if [[ ${1-default} = -v ]]
then
cp -v /usr/share/firmware/wifi/C-4364__s-B2/${nvramfile} „/Volumes/${EFILABEL}/brcmfmac4364b2-pcie.txt“
cp -v /usr/share/firmware/wifi/C-4364__s-B2/${txcapblob} „/Volumes/${EFILABEL}/brcmfmac4364b2-pcie.txcap_blob“
else
cp /usr/share/firmware/wifi/C-4364__s-B2/${nvramfile} „/Volumes/${EFILABEL}/brcmfmac4364b2-pcie.txt“
cp /usr/share/firmware/wifi/C-4364__s-B2/${txcapblob} „/Volumes/${EFILABEL}/brcmfmac4364b2-pcie.txcap_blob“
fi
fi
echo „Copying this script to EFI“
cp „$0“ „/Volumes/${EFILABEL}/firmware.sh“|| (echo -e „\nFailed to copy script.\nPlease copy the script manually to the EFI partition using Finder\nMake sure the name of the script is firmware.sh in the EFI partition\n“ && echo && read -p „Press enter after you have copied“ && echo)
echo „Unmounting the EFI partition“
sudo diskutil unmount „/Volumes/${EFILABEL}/“
echo
echo -e „Run the following commands or run this script itself in Linux now to set up Wi-Fi :-\n\nsudo mkdir -p /tmp/apple-wifi-efi\nsudo mount /dev/nvme0n1p1 /tmp/apple-wifi-efi\nbash /tmp/apple-wifi-efi/firmware.sh\nsudo umount /tmp/apple-wifi-efi\n“
;;
(Linux)
echo „Detected Linux“
echo „Re-mounting the EFI partition“
mountpoint=$(mktemp -d)
workdir=$(mktemp -d)
echo „Installing Wi-Fi and Bluetooth firmware“
if [[ ${1-default} = -v ]]
then
sudo mount -v /dev/nvme0n1p1 $mountpoint
sudo tar –warning=no-unknown-keyword -xvC $workdir -f $mountpoint/firmware.tar.gz
sudo python3 $0 $workdir $workdir/firmware-renamed.tar
sudo tar -xvC /lib/firmware -f $workdir/firmware-renamed.tar
else
sudo mount /dev/nvme0n1p1 $mountpoint
sudo tar –warning=no-unknown-keyword -xC $workdir -f $mountpoint/firmware.tar.gz
sudo python3 $0 $workdir $workdir/firmware-renamed.tar &> /dev/null
sudo tar -xC /lib/firmware -f $workdir/firmware-renamed.tar
fifor file in „$mountpoint/brcmfmac4364b2-pcie.txt“ \
„$mountpoint/brcmfmac4364b2-pcie.txcap_blob“
do
if [ -f „$file“ ]
then
if [[ ${1-default} = -v ]]
then
sudo cp -v $file /lib/firmware/brcm
else
sudo cp $file /lib/firmware/brcm
fi
fi
done
echo „Reloading Wi-Fi and Bluetooth drivers“
sudo modprobe -r brcmfmac_wcc || true
sudo modprobe -r brcmfmac || true
sudo modprobe brcmfmac || true
sudo modprobe -r hci_bcm4377 || true
sudo modprobe hci_bcm4377 || true
echo „Keeping a copy of the firmware and the script in the EFI partition shall allow you to set up Wi-Fi again in the future by running this script or the commands told in the macOS step in Linux only, without the macOS step. Do you want to keep a copy? (y/N)“
read input
if [[ ($input != y) && ($input != Y) ]]
then
echo „Removing the copy from the EFI partition“
for file in „$mountpoint/brcmfmac4364b2-pcie.txt“ \
„$mountpoint/brcmfmac4364b2-pcie.txcap_blob“ \
„$mountpoint/firmware.tar.gz“ \
„$mountpoint/firmware.sh“
do
if [ -f „$file“ ]
then
sudo rm $file
fi
done
fi
sudo rm -r $workdir/*
sudo umount $mountpoint
sudo rmdir $mountpoint
echo „Done!“
;;
(*)
echo „Error: unsupported platform“
;;
esac
exit 0
„““# SPDX-License-Identifier: MIT
import logging, os, os.path, re, sys
from collections import namedtuple, defaultdict#from .core import FWFile

log = logging.getLogger(„asahi_firmware.bluetooth“)

BluetoothChip = namedtuple(
„BluetoothChip“, („chip“, „stepping“, „board_type“, „vendor“)
)

class BluetoothFWCollection(object):
VENDORMAP = {
„MUR“: „m“,
„USI“: „u“,
„GEN“: None,
}
STRIP_SUFFIXES = [
„ES2“
]

def __init__(self, source_path):
self.fwfiles = defaultdict(lambda: [None, None])
self.load(source_path)

def load(self, source_path):
for fname in os.listdir(source_path):
root, ext = os.path.splitext(fname)

# index for bin and ptb inside self.fwfiles
if ext == „.bin“:
idx = 0
elif ext == „.ptb“:
idx = 1
else:
# skip firmware for older (UART) chips
continue

# skip T2 _DEV firmware
if „_DEV“ in root:
continue

chip = self.parse_fname(root)
if chip is None:
continue

if self.fwfiles[chip][idx] is not None:
log.warning(f“duplicate entry for {chip}: {self.fwfiles[chip][idx].name} and now {fname + ext}“)
continue

path = os.path.join(source_path, fname)
with open(path, „rb“) as f:
data = f.read()

self.fwfiles[chip][idx] = FWFile(fname, data)

def parse_fname(self, fname):
fname = fname.split(„_“)

match = re.fullmatch(„bcm(43[0-9]{2})([a-z][0-9])“, fname[0].lower())
if not match:
log.warning(f“Unexpected firmware file: {fname}“)
return None
chip, stepping = match.groups()

# board type is either preceeded by PCIE_macOS or by PCIE
try:
pcie_offset = fname.index(„PCIE“)
except:
log.warning(f“Can’t find board type in {fname}“)
return None

if fname[pcie_offset + 1] == „macOS“:
board_type = fname[pcie_offset + 2]
else:
board_type = fname[pcie_offset + 1]
for i in self.STRIP_SUFFIXES:
board_type = board_type.rstrip(i)
board_type = „apple,“ + board_type.lower()

# make sure we can identify exactly one vendor
otp_values = set()
for vendor, otp_value in self.VENDORMAP.items():
if vendor in fname:
otp_values.add(otp_value)
if len(otp_values) != 1:
log.warning(f“Unable to determine vendor ({otp_values}) in {fname}“)
return None
vendor = otp_values.pop()

return BluetoothChip(
chip=chip, stepping=stepping, board_type=board_type, vendor=vendor
)

def files(self):
for chip, (bin, ptb) in self.fwfiles.items():
fname_base = f“brcm/brcmbt{chip.chip}{chip.stepping}-{chip.board_type}“
if chip.vendor is not None:
fname_base += f“-{chip.vendor}“

if bin is None:
log.warning(f“no bin for {chip}“)
continue
else:
yield fname_base + „.bin“, bin

if ptb is None:
log.warning(f“no ptb for {chip}“)
continue
else:
yield fname_base + „.ptb“, ptb

# SPDX-License-Identifier: MIT
import sys, os, os.path, pprint, statistics, logging
#from .core import FWFile

log = logging.getLogger(„asahi_firmware.wifi“)

class FWNode(object):
def __init__(self, this=None, leaves=None):
if leaves is None:
leaves = {}
self.this = this
self.leaves = leaves

def __eq__(self, other):
return self.this == other.this and self.leaves == other.leaves

def __hash__(self):
return hash((self.this, tuple(self.leaves.items())))

def __repr__(self):
return f“FWNode({self.this!r}, {self.leaves!r})“

def print(self, depth=0, tag=““):
print(f“{‚ ‚ * depth} * {tag}: {self.this or “} ({hash(self)})“)
for k, v in self.leaves.items():
v.print(depth + 1, k)

class WiFiFWCollection(object):
EXTMAP = {
„trx“: „bin“,
„txt“: „txt“,
„clmb“: „clm_blob“,
„txcb“: „txcap_blob“,
}
DIMS = [„C“, „s“, „P“, „M“, „V“, „m“, „A“]
def __init__(self, source_path):
self.root = FWNode()
self.load(source_path)
self.prune()

def load(self, source_path):
included_folders = [„C-4355__s-C1“, „C-4364__s-B2“, „C-4364__s-B3“, „C-4377__s-B3“]
for dirpath, dirnames, filenames in os.walk(source_path):
dirnames[:] = [d for d in dirnames if d in included_folders]
if „perf“ in dirnames:
dirnames.remove(„perf“)
if „assert“ in dirnames:
dirnames.remove(„assert“)
subpath = dirpath.lstrip(source_path)
for name in sorted(filenames):
if not any(name.endswith(„.“ + i) for i in self.EXTMAP):
continue
path = os.path.join(dirpath, name)
relpath = os.path.join(subpath, name)
if not name.endswith(„.txt“):
name = „P-“ + name
idpath, ext = os.path.join(subpath, name).rsplit(„.“, 1)
props = {}
for i in idpath.replace(„/“, „_“).split(„_“):
if not i:
continue
k, v = i.split(„-„, 1)
if k == „P“ and „-“ in v:
plat, ant = v.split(„-„, 1)
props[„P“] = plat
props[„A“] = ant
else:
props[k] = v
ident = [ext]
for dim in self.DIMS:
if dim in props:
ident.append(props.pop(dim))
assert not props

node = self.root
for k in ident:
node = node.leaves.setdefault(k, FWNode())
with open(path, „rb“) as fd:
data = fd.read()

if name.endswith(„.txt“):
data = self.process_nvram(data)

node.this = FWFile(relpath, data)

def prune(self, node=None, depth=0):
if node is None:
node = self.root

for i in node.leaves.values():
self.prune(i, depth + 1)

if node.this is None and node.leaves and depth > 3:
first = next(iter(node.leaves.values()))
if all(i == first for i in node.leaves.values()):
node.this = first.this

for i in node.leaves.values():
if not i.this or not node.this:
break
if i.this != node.this:
break
else:
node.leaves = {}

def _walk_files(self, node, ident):
if node.this is not None:
yield ident, node.this
for k, subnode in node.leaves.items():
yield from self._walk_files(subnode, ident + [k])

def files(self):
for ident, fwfile in self._walk_files(self.root, []):
(ext, chip, rev), rest = ident[:3], ident[3:]
rev = rev.lower()
ext = self.EXTMAP[ext]

if rest:
rest = „,“ + „-„.join(rest)
else:
rest = „“
filename = f“brcm/brcmfmac{chip}{rev}-pcie.apple{rest}.{ext}“

yield filename, fwfile

def process_nvram(self, data):
data = data.decode(„ascii“)
keys = {}
lines = []
for line in data.split(„\n“):
if not line:
continue
key, value = line.split(„=“, 1)
keys[key] = value
# Clean up spurious whitespace that Linux does not like
lines.append(f“{key.strip()}={value}\n“)

return „“.join(lines).encode(„ascii“)

def print(self):
self.root.print()

# SPDX-License-Identifier: MIT
import tarfile, io, logging
from hashlib import sha256

class FWFile(object):
def __init__(self, name, data):
self.name = name
self.data = data
self.sha = sha256(data).hexdigest()

def __repr__(self):
return f“FWFile({self.name!r}, <{self.sha[:16]}>)“

def __eq__(self, other):
if other is None:
return False
return self.sha == other.sha

def __hash__(self):
return hash(self.sha)

class FWPackage(object):
def __init__(self, target):
self.path = target
self.tarfile = tarfile.open(target, mode=“w“)
self.hashes = {}
self.manifest = []

def close(self):
self.tarfile.close()

def add_file(self, name, data):
ti = tarfile.TarInfo(name)
fd = None
if data.sha in self.hashes:
ti.type = tarfile.LNKTYPE
ti.linkname = self.hashes[data.sha]
self.manifest.append(f“LINK {name} {ti.linkname}“)
else:
ti.type = tarfile.REGTYPE
ti.size = len(data.data)
fd = io.BytesIO(data.data)
self.hashes[data.sha] = name
self.manifest.append(f“FILE {name} SHA256 {data.sha}“)

logging.info(f“+ {self.manifest[-1]}“)
self.tarfile.addfile(ti, fd)

def add_files(self, it):
for name, data in it:
self.add_file(name, data)

def save_manifest(self, filename):
with open(filename, „w“) as fd:
for i in self.manifest:
fd.write(i + „\n“)

def __del__(self):
self.tarfile.close()

pkg = FWPackage(sys.argv[2])
wifi_col = WiFiFWCollection(sys.argv[1]+“/wifi“)
pkg.add_files(sorted(wifi_col.files()))
bt_col = BluetoothFWCollection(sys.argv[1]+“/bluetooth“)
pkg.add_files(sorted(bt_col.files()))
pkg.close()

2) Spustit ve Fedoře:

sudo mkdir -p /tmp/apple-wifi-efi

sudo mount /dev/nvme0n1p1 /tmp/apple-wifi-efi

bash /tmp/apple-wifi-efi/firmware.sh

sudo umount /tmp/apple-wifi-efi

==========

 

Fedora 39 Post Install Guide

Enable scaling 150%:

Odemkněte frakční škálování ve Fedoře

Otevřete nové okno Terminálu a zadejte tento příkaz:

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

Stiskněte entera máte hotovo!

Zjistíte, že 125 %, 150 % a další hodnoty zlomkového měřítka jsou nyní k dispozici k výběru na panelu Nastavení > Zobrazení (hledejte rozbalovací nabídku v části „měřítko“):

hodnoty frakčního škálování fedora 150 %
Moje stupnice ‚zlatovky‘

Bohužel, má to nevýhodu.

Zlomkové škálování v GNOME je považováno za experimentální funkci – existuje důvod, proč není ve výchozím nastavení k dispozici!
Na rozdíl od Ubuntu (a na něm založených distribucí) konfigurace GNOME ve Fedoře postrádá některé optimalizace mimo větev, které umožňují, aby frakční škálování dobře fungovalo.

Z tohoto důvodu byste měli tuto funkci používat s vědomím, že může zvýšit spotřebu energie. To může být problém na laptopech a dalších přenosných zařízeních. může také způsobit trhání obrazovky a/nebo jiné vizuální závady.

Pokud zaznamenáte problémy s výkonem poté, co povolíte zlomkové škálování na Fedoře, měli byste přepnout zpět na kulaté škálování (100 % nebo 200 %) a deaktivovat jej spuštěním:

gsettings set org.gnome.mutter experimental-features "[]"

V mém testování to zatím funguje stejně dobře na Fedoře. Ještě jsem nezaznamenal žádné velké zpomalení nebo dopad na výkon při jeho používání a výdrž baterie se zdá být konzistentní s Ubuntu na stejném zařízení – ale vaše kilometry se budou vždy lišit.

Takže to je způsob, jak povolit frakční škálování ve Fedoře (pokud používáte plochu GNOME a jste si vědomi potenciálních problémů, které mohou nastat při jejím povolení).

Things to do after installing Fedora 39

Faster Updates

 

sudo nano /etc/dnf/dnf.conf

Copy and replace the text with the following:

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=False
skip_if_unavailable=True
fastestmirror=1
max_parallel_downloads=10
deltarpm=true

 

Note: The fastestmirror=1 plugin can be counterproductive at times, use it at your own discretion. Set it to fastestmirror=0 if you are facing bad download speeds. Many users have reported better download speeds with the plugin enables so it is there by default.

RPM Fusion

Fedora has disabled the repositories for a lot of free and non-free .rpm packages by default. Follow this if you want to use non-free software like Steam, Discord and some multimedia codecs etc. As a general rule of thumb its advised to do this get access to many mainstream useful programs.

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

also while you’re at it, install app-stream metadata by

sudo dnf groupupdate core

Update

sudo dnf -y update

sudo dnf -y upgrade –refresh

Reboot

Firmware

 

If your system supports firmware update delivery through lvfs, update your device firmware by:

sudo fwupdmgr get-devices

sudo fwupdmgr refresh –force

sudo fwupdmgr get-updates

sudo fwupdmgr update

 

NVIDIA Drivers

  • Only follow this if you have a NVIDIA gpu. Also, don’t follow this if you have a gpu which has dropped support for newer driver releases i.e. anything earlier than nvidia GT/GTX 600, 700, 800, 900, 1000, 1600 and RTX 2000, 3000, 4000 series. Fedora comes preinstalled with NOUVEAU drivers which may or may not work better on those remaining older GPUs. This should be followed by Desktop and Laptop users alike.
  • Disable Secure Boot.
  • sudo dnf update #To make sure you’re on the latest kernel and then reboot.
  • Enable RPM Fusion Nvidia non-free repository in the app store and install it from there,
  • or alternatively
  • sudo dnf install akmod-nvidia
  • Install this if you use applications that can utilise CUDA i.e. Davinci Resolve, Blender etc.
  • sudo dnf install xorg-x11-drv-nvidia-cuda
  • Wait for atleast 5 mins before rebooting, to let the kermel module get built.
  • modinfo -F version nvidia #Check if the kernel module is built.
  • Reboot

Battery Life

Follow this if you have a Laptop and are facing sub optimal battery backup.

power-profiles-daemon which come pre-configured works great on a great majority of systems but still in case you’re facing sub-optimal battery backup you try installing tlp by:

sudo dnf install tlp tlp-rdw

mask power-profiles-daemon by:

sudo systemctl mask power-profiles-daemon

Also install powertop by:

sudo dnf install powertop

sudo powertop –auto-tune

Media Codecs

Install these to get proper multimedia playback.

sudo dnf groupupdate ‚core‘ ‚multimedia‘ ‚sound-and-video‘ –setop=’install_weak_deps=False‘ –exclude=’PackageKit-gstreamer-plugin‘ –allowerasing && sync

sudo dnf swap ‚ffmpeg-free‘ ‚ffmpeg‘ –allowerasing

sudo dnf install gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav –exclude=gstreamer1-plugins-bad-free-devel ffmpeg gstreamer-ffmpeg

sudo dnf install lame\* –exclude=lame-devel

sudo dnf group upgrade –with-optional Multimedia

 

H/W Video Acceleration

Helps decrease load on the CPU when watching videos online by alloting the rendering to the dGPU/iGPU. Quite helpful in increasing battery backup on laptops.

H/W Video Decoding with VA-API

sudo dnf install ffmpeg ffmpeg-libs libva libva-utils

IntelAMD No need to do this for intel integrated graphics. Mesa drivers are for AMD graphics, who lost support for h264/h245 in the fedora repositories in f38 due to legal concerns.

If you have an AMD chipset, after installing the packages above do:

sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld

OpenH264 for Firefox

sudo dnf config-manager –set-enabled fedora-cisco-openh264

sudo dnf install -y openh264 gstreamer1-plugin-openh264 mozilla-openh264

After this enable the OpenH264 Plugin in Firefox’s settings.

Update Flatpak

flatpak remote-add –if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

flatpak update

Set Hostname

hostnamectl set-hostname YOUR_HOSTNAME

Custom DNS Servers

  • For people that want to setup custom DNS servers for better privacy

sudo mkdir -p ‚/etc/systemd/resolved.conf.d‘ && sudo -e ‚/etc/systemd/resolved.conf.d/99-dns-over-tls.conf‘


[Resolve]

DNS=1.1.1.2#security.cloudflare-dns.com 1.0.0.2#security.cloudflare-dns.com 2606:4700:4700::1112#security.cloudflare-dns.com 2606:4700:4700::1002#security.cloudflare-dns.com

DNSOverTLS=yes

 

Set UTC Time

  • Used to counter time inconsistencies in dual boot systems
  • sudo timedatectl set-local-rtc ‚0‘

Optimizations

  • The tips below can allow you to squeeze out a little bit more performance from your system.

Disable Mitigations

  • Increases performance in multithreaded systems. The more cores you have in your cpu the greater the performance gain. 5-30% performance gain varying upon systems. Do not follow this if you share services and files through your network or are using fedora in a VM.
  • ·Modern intel CPUs (above 10th gen) do not gain noticeable performance improvements upon disabling mitigations. Hence, disabling mitigations can present some security risks against various attacks, however, it still might increase the CPU performance of your system.
  • sudo grubby –update-kernel=ALL –args=“mitigations=off“

Modern Standby

Can result in better battery life when your laptop goes to sleep.

sudo grubby –update-kernel=ALL –args=“mem_sleep_default=s2idle“

If „s2idle“ doesn’t work for you i.e. people with alder lake CPUs, then you might want to refer to this

Enable nvidia-modeset

  • Useful if you have a laptop with an Nvidia GPU. Necessary for some PRIME-related interoperability features.
  • sudo grubby –update-kernel=ALL –args=“nvidia-drm.modeset=1″

Disable NetworkManager-wait-online.service

Disabling it can decrease the boot time by at least ~15s-20s:

sudo systemctl disable NetworkManager-wait-online.service

Disable Gnome Software from Startup Apps

Gnome software autostarts on boot for some reason, even though it is not required on every boot unless you want it to do updates in the background, this takes at least 100MB of RAM upto 900MB (as reported anecdotically). You can stop it from autostarting by:

sudo rm /etc/xdg/autostart/org.gnome.Software.desktop

Instalace Fedy

sudo dnf copr enable kwizart/fedy

sudo dnf install fedy -y

 

Další inspirace:
https://fosspost.org/things-to-do-after-installing-fedora/

+ webapp manager (copr)

  1. TLP

V neposlední řadě byste si měli nainstalovat TLP, pokud jste uživatelem notebooku. TLP je skvělý nástroj, který pomáhá optimalizovat baterii vašeho notebooku. Tento nástroj je dodáván s různými možnostmi příkazového řádku pro vyladění a zobrazení zpráv o spotřebě energie. Vše, co musíte udělat, je nainstalovat a zapomenout. Stará se o základní optimalizace pro úsporu energie. Nezapomeňte , že nepoužíváte TLP s žádnými dalšími vylepšeními správy napájení.

sudo dnf install tlp tlp -rdw

 

Some useful Gnome Extensions

  • Don’t install these if you are using a different spin of Fedora.
  • Pop Shell – run sudo dnf install -y gnome-shell-extension-pop-shell xprop to install it.
  • GSconnect – run sudo dnf install nautilus-python for full support.
  • Gesture Improvements
  • Quick Settings Tweaker
  • User Themes
  • Compiz Windows Effect
  • Just Perfection
  • Rounded Windows Corners
  • Dash to Dock
  • Quick Settings Tweaker
  • Blur My Shell
  • Bluetooth Quick Connect
  • App Indicator Support
  • Clipboard Indicator
  • Legacy (GTK3) Theme Scheme Auto Switcher
  • Caffeine
  • Vitals
  • Wireless HID
  • Logo Menu
  • Space Bar

Apps [Optional]

Packages for Rar and 7z compressed files support:

sudo dnf install -y unzip p7zip p7zip-plugins unrar

These are Some Packages that I use and would recommend:

Amberol

Blanket

Builder

Brave

Blender

Discord

Drawing

Deja Dup Backups

Endeavour

Easyeffects

Extension Manager

Flatseal

Foliate

Footage

GIMP

Gnome Tweaks

Gradience

Handbrake

Formatlab

Iotas

Joplin

Khronos

Krita

Logseq

lm_sensors

Onlyoffice

Overskride

Parabolic

Pcloud

PDF Arranger

Planify

Pika backup

Snapshot

Solanum

Sound Recorder

Tangram

Transmission

Ulauncher

Upscaler

Upscayl

Video Trimmer

VS Codium

yt-dlp

 

Theming [Optional]

 

GTK Themes

  • Don’t install these if you are using a different spin of Fedora.
  • https://github.com/lassekongo83/adw-gtk3
  • https://github.com/vinceliuice/Colloid-gtk-theme
  • https://github.com/EliverLara/Nordic
  • https://github.com/vinceliuice/Orchis-theme
  • https://github.com/vinceliuice/Graphite-gtk-theme

Use themes in Flatpaks

  • sudo flatpak override –filesystem=$HOME/.themes
  • sudo flatpak override –env=GTK_THEME=my-theme

Icon Packs

  • https://github.com/vinceliuice/Tela-icon-theme
  • https://github.com/vinceliuice/Colloid-gtk-theme/tree/main/icon-theme

Wallpaper

  • https://github.com/manishprivet/dynamic-gnome-wallpapers

Firefox Theme

  • Install Firefox Gnome theme by: curl -s -o- https://raw.githubusercontent.com/rafaelmardojai/firefox-gnome-theme/master/scripts/install-by-curl.sh | bash

Starship (terminal theme)

  • Configure starship to make your terminal look good (refer https://starship.rs)

Grub Theme

  • https://github.com/vinceliuice/grub2-themes

System Locale and Keyboard Configuration

https://docs.fedoraproject.org/en-US/fedora/latest/system-administrators-guide/basic-system-configuration/System_Locale_and_Keyboard_Configuration/

The system locale specifies the language settings of system services and user interfaces. The keyboard layout settings control the layout used on the text console and graphical user interfaces.

These settings can be made by modifying the /etc/locale.conf configuration file or by using the localectl utility. You can also set these settings during system installation using the installer graphical interface, text mode interface, or the keyboard and lang Kickstart commands. See the link:https://docs.fedoraproject.org/en-US/fedora/fFedora 39/install-guide[Fedora Installation Guide] for information about these options.

Setting the System Locale

System-wide locale settings are stored in the /etc/locale.conf file, which is read at early boot by the systemd daemon. The locale settings configured in /etc/locale.conf are inherited by every service or user, unless individual programs or individual users override them.

The basic file format of /etc/locale.conf is a newline-separated list of variable assignments. For example, German locale with English messages in /etc/locale.conf looks as follows:

LANG=de_DE.UTF-8

LC_MESSAGES=C

Here, the LC_MESSAGES option determines the locale used for diagnostic messages written to the standard error output. To further specify locale settings in /etc/locale.conf, you can use several other options, the most relevant are summarized in Options configurable in /etc/locale.conf. See the locale(7) manual page for detailed information on these options. Note that the LC_ALL option, which represents all possible options, should not be configured in /etc/locale.conf.

OptionDescription
LANGProvides a default value for the system locale.
LC_COLLATEChanges the behavior of functions which compare strings in the local alphabet.
LC_CTYPEChanges the behavior of the character handling and classification functions and the multibyte character functions.
LC_NUMERICDescribes the way numbers are usually printed, with details such as decimal point versus decimal comma.
LC_TIMEChanges the display of the current time, 24-hour versus 12-hour clock.
LC_MESSAGESDetermines the locale used for diagnostic messages written to the standard error output.

Displaying the Current Status

The localectl command can be used to query and change the system locale and keyboard layout settings. To show the current settings, use the status option:

localectl status

Example 1. Displaying the Current Status

The output of the previous command lists the currently set locale, keyboard layout configured for the console and for the X11 window system.

~]$ localectl status

System Locale: LANG=en_US.UTF-8

VC Keymap: us

X11 Layout: n/a

Listing Available Locales

To list all locales available for your system, type:

localectl list-locales

Example 2. Listing Locales

Imagine you want to select a specific English locale, but you are not sure if it is available on the system. You can check that by listing all English locales with the following command:

~]$ localectl list-locales | grep en_ en_AG en_AG.utf8 en_AU en_AU.iso88591 en_AU.utf8 en_BW en_BW.iso88591 en_BW.utf8  output truncated

Setting the Locale

To set the default system locale, use the following command as root:

localectl set-locale LANG=locale

Replace locale with the locale name, found with the localectl list-locales command. The above syntax can also be used to configure parameters from Options configurable in /etc/locale.conf.

Example 3. Changing the Default Locale

For example, if you want to set British English as your default locale, first find the name of this locale by using list-locales. Then, as root, type the command in the following form:

~]# localectl set-locale LANG=en_GB.utf8

Changing the Keyboard Layout

The keyboard layout settings enable the user to control the layout used on the text console and graphical user interfaces.

Displaying the Current Settings

As mentioned before, you can check your current keyboard layout configuration with the following command:

localectl status

Example 4. Displaying the Keyboard Settings

In the following output, you can see the keyboard layout configured for the virtual console and for the X11 window system.

~]$ localectl status

System Locale: LANG=en_US.utf8

VC Keymap: us

X11 Layout: us

Listing Available Keymaps

To list all available keyboard layouts that can be configured on your system, type:

localectl list-keymaps

Example 5. Searching for a Particular Keymap

You can use grep to search the output of the previous command for a specific keymap name. There are often multiple keymaps compatible with your currently set locale. For example, to find available Czech keyboard layouts, type:

~]$ localectl list-keymaps | grep cz cz cz-cp1250 cz-lat2 cz-lat2-prog cz-qwerty cz-us-qwertz sunt5-cz-us sunt5-us-cz

Setting the Keymap

To set the default keyboard layout for your system, use the following command as root:

localectl set-keymap map

Replace map with the name of the keymap taken from the output of the localectl list-keymaps command. Unless the –no-convert option is passed, the selected setting is also applied to the default keyboard mapping of the X11 window system, after converting it to the closest matching X11 keyboard mapping. This also applies in reverse, you can specify both keymaps with the following command as root:

localectl set-x11-keymap map

If you want your X11 layout to differ from the console layout, use the –no-convert option.

localectl –no-convert set-x11-keymap map

With this option, the X11 keymap is specified without changing the previous console layout setting.

Example 6. Setting the X11 Keymap Separately

Imagine you want to use German keyboard layout in the graphical interface, but for console operations you want to retain the US keymap. To do so, type as root:

~]# localectl –no-convert set-x11-keymap de

Then you can verify if your setting was successful by checking the current status:

~]$ localectl status

System Locale: LANG=de_DE.UTF-8

VC Keymap: us

X11 Layout: de

Apart from keyboard layout (map), three other options can be specified:

localectl set-x11-keymap map model variant options

Replace model with the keyboard model name, variant and options with keyboard variant and option components, which can be used to enhance the keyboard behavior. These options are not set by default. For more information on X11 Model, X11 Variant, and X11 Options see the kbd(4) man page.

Consider this option if using gnome

This should work if the following conditions apply:

  • Using gnome as the desktop environment
  • Your layout is not listed under Settings → Keyboard → Input Sources

In your terminal type in:

gsettings set org.gnome.desktop.input-sources show-all-sources true

after pressing return, try looking under your keyboard settings again as there should be a lot more options available. As the proper source for help is gnome in this case, here is more information from gnome:

https://help.gnome.org/users/gnome-help/stable/keyboard-layouts.html.en

Additional Resources

For more information on how to configure the keyboard layout on Fedora, see the resources listed below:

Installed Documentation

  • localectl(1) — The manual page for the localectl command line utility documents how to use this tool to configure the system locale and keyboard layout.
  • loadkeys(1) — The manual page for the loadkeys command provides more information on how to use this tool to change the keyboard layout in a virtual console.

===========

 

WINE:

=====

https://www.linuxcapable.com/how-to-install-wine-on-fedora-linux/

 

dnf update

sudo dnf install wine

 

Podpora 32 bit:

===============

sudo dnf install wine.i686

 

 

INSTALACE WINE VE FEDOŘE POMOCÍ WINEHQ REPO:

===========================================

sudo dnf config-manager –add-repo https://dl.winehq.org/wine-builds/fedora/39/winehq.repo

sudo dnf install winehq-stable

 

Experimentální verze:

====================

sudo dnf install winehq-staging

 

Devel verze:

============

sudo dnf install winehq-devel