Name: senemos-fastfetch-config Version: 1.3.0 Release: 1%{?dist} Summary: Locale-aware Fastfetch configuration for SENEMOS License: MIT URL: https://github.com/MCC45TR/Nabu-Fedora-Rawhide-Builder Source0: %{name}-%{version}.tar.gz BuildArch: noarch BuildRequires: python3 Requires: bash Requires: fastfetch Requires: python3 Conflicts: nabu-core-meta < 3.0.0-56 %description SENEMOS Fastfetch configuration with locale-aware labels for every language shipped by MFile Finder. The senemos-fastfetch launcher normalizes regional locale names and falls back to English for unsupported locales. The package deliberately does not replace Fedora's Fastfetch executable. It owns the optional system-wide fallback configuration and a shell integration file, so both are removed cleanly when the package is uninstalled. %prep %autosetup %build %install install -Dm0755 bin/senemos-fastfetch \ %{buildroot}%{_bindir}/senemos-fastfetch install -Dm0755 bin/senemos-fastfetch-value \ %{buildroot}%{_libexecdir}/senemos-fastfetch-value install -Dm0644 profile.d/senemos-fastfetch.sh \ %{buildroot}%{_sysconfdir}/profile.d/senemos-fastfetch.sh install -d %{buildroot}%{_sysconfdir}/xdg/fastfetch ln -s ../../../usr/share/senemos-fastfetch-config/i18n/en.jsonc \ %{buildroot}%{_sysconfdir}/xdg/fastfetch/config.jsonc install -Dm0644 man/senemos-fastfetch.1 \ %{buildroot}%{_mandir}/man1/senemos-fastfetch.1 install -d %{buildroot}%{_datadir}/senemos-fastfetch-config/i18n install -m0644 i18n/*.jsonc \ %{buildroot}%{_datadir}/senemos-fastfetch-config/i18n/ %check bash -n bin/senemos-fastfetch bash -n profile.d/senemos-fastfetch.sh python3 -m py_compile bin/senemos-fastfetch-value python3 - <<'PY' import importlib.util from importlib.machinery import SourceFileLoader from pathlib import Path path = Path("bin/senemos-fastfetch-value") loader = SourceFileLoader("senemos_fastfetch_value", str(path)) spec = importlib.util.spec_from_loader(loader.name, loader) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) assert module.format_percent("tr", "96") == "%96" assert module.format_percent("en", "96") == "96%" assert module.format_percent("fr", "96") == "96\N{NO-BREAK SPACE}%" assert module.format_percent("fa", "96") == "96٪" assert module.usage("tr", 44, 100) == "44 B / 100 B ({#32}%44)" assert module.usage("fr", 44, 100) == "44 B / 100 B ({#32}44\N{NO-BREAK SPACE}%)" module.glob.glob = lambda pattern: ["/test/BAT0"] values = { "/test/BAT0/type": "Battery", "/test/BAT0/capacity": "96", "/test/BAT0/status": "Not charging", "/test/BAT0/temp": "385", } module.read_text = values.get module.uses_fahrenheit = lambda: False assert module.battery("tr") == "%96 [Şarj Olmuyor] {#32}38.5°C" module.uses_fahrenheit = lambda: True assert module.battery("en") == "96% [Not Charging] {#32}101.3°F" PY test "$(readlink %{buildroot}%{_sysconfdir}/xdg/fastfetch/config.jsonc)" = \ "../../../usr/share/senemos-fastfetch-config/i18n/en.jsonc" python3 - <<'PY' import json from pathlib import Path configs = sorted(Path("i18n").glob("*.jsonc")) assert len(configs) == 27, f"expected 27 locale configs, found {len(configs)}" assert {path.stem for path in configs} == { "ar", "az", "bn", "cs", "de", "el", "en", "es", "fa", "fi", "fr", "hi", "hy", "id", "it", "ja", "ko", "nl", "pl", "pt", "ro", "ru", "sv", "tr", "uk", "ur", "zh", } for config in configs: data = json.loads(config.read_text(encoding="utf-8")) assert len(data["modules"]) == 19, config module_types = [str(module["type"]).lower() for module in data["modules"]] assert module_types[:4] == ["os", "host", "command", "command"], config assert module_types[-5:] == ["command", "command", "command", "command", "localip"], config assert data["modules"][14]["text"].endswith(f" memory {config.stem}"), config assert data["modules"][15]["text"].endswith(f" swap {config.stem}"), config assert data["modules"][16]["text"].endswith(f" disk {config.stem}"), config assert data["modules"][12]["format"] == "Qualcomm Snapdragon 860{?temperature} {temperature}{?}", config assert data["modules"][13]["type"] == "command", config assert "Qualcomm Turnip Adreno (TM) 640 [Integrated]" in data["modules"][13]["text"], config PY %files %license LICENSE %doc README.md %{_bindir}/senemos-fastfetch %{_libexecdir}/senemos-fastfetch-value %{_sysconfdir}/profile.d/senemos-fastfetch.sh %{_sysconfdir}/xdg/fastfetch/config.jsonc %{_mandir}/man1/senemos-fastfetch.1* %{_datadir}/senemos-fastfetch-config/ %changelog * Sat Sep 05 2026 mcc45tr - 1.3.0-1 - Format percentages according to each supported locale. - Show localized battery state in brackets. - Follow the system measurement preference for Celsius or Fahrenheit and color the battery temperature green. * Fri Sep 04 2026 mcc45tr - 1.2.0-1 - Add localized long-form uptime and installation age values. - Add host, swap and localized battery status and temperature output. - Brand the Nabu CPU and GPU and limit storage output to the Linux root. * Fri Sep 04 2026 mcc45tr - 1.1.0-1 - Route interactive fastfetch calls through the locale-aware launcher. - Own the system Fastfetch fallback configuration for clean removal. - Coordinate file ownership migration from nabu-core-meta 3.0.0-56. * Fri Sep 04 2026 mcc45tr - 1.0.0-1 - Add locale-aware Fastfetch configuration for all 27 MFile Finder languages. - Normalize regional locale names and provide an English fallback.