50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
|
from pathlib import Path
|
||
|
import shutil
|
||
|
|
||
|
import toml
|
||
|
|
||
|
|
||
|
class _Config:
|
||
|
DIR = Path.home() / ".config" / "fwa"
|
||
|
FILE = DIR / "config.toml"
|
||
|
ICON_DIR = DIR / "icons"
|
||
|
BIN_DIR = Path.home() / ".local" / "bin"
|
||
|
|
||
|
def __init__(self):
|
||
|
for directory in (self.DIR, self.ICON_DIR, self.BIN_DIR):
|
||
|
if not directory.exists():
|
||
|
directory.mkdir(parents=True)
|
||
|
|
||
|
if not self.FILE.exists():
|
||
|
self.FILE.touch()
|
||
|
|
||
|
with open(self.FILE) as f:
|
||
|
self.conf = toml.load(f)
|
||
|
|
||
|
def write_config(self):
|
||
|
with open(self.FILE, "w") as f:
|
||
|
toml.dump(self.conf, f)
|
||
|
|
||
|
|
||
|
Config = _Config()
|
||
|
|
||
|
|
||
|
def _get_firefox_bin() -> str:
|
||
|
"""
|
||
|
Returns a firefox binary name that exists in PATH
|
||
|
"""
|
||
|
for name in (
|
||
|
"firefox",
|
||
|
"firefox-developer-edition",
|
||
|
"firefox-esr",
|
||
|
"firefox-nightly",
|
||
|
"firefox-beta",
|
||
|
"firefox-trunk",
|
||
|
):
|
||
|
if shutil.which(name):
|
||
|
return name
|
||
|
raise OSError("Firefox binary not found in $PATH")
|
||
|
|
||
|
|
||
|
FIREFOX_BINARY = _get_firefox_bin()
|