layout
This commit is contained in:
1 parent
7ed84a1368
commit
45d3b0ec0d
11 files changed
+1106
-12
No files matched your search
@@ -37,6 +37,16 @@ FOOTER_PAGE = "footer" # Baustein: wird unter den Inhalt jeder Seite gesetzt
|
||||
|
||||
# ---------------------------------------------------------------- markdown
|
||||
|
||||
def inline(s):
|
||||
"""Inline-Markdown: bilder, code, fett, kursiv, Links."""
|
||||
s = re.sub(r"`([^`]+)`", r"<code>\1</code>", s)
|
||||
s = re.sub(r"!\[([^\]]*)\]\(([^)]+)\)", r'<img src="\2" alt="\1">', s)
|
||||
s = re.sub(r"\*\*([^*]+)\*\*", r"<strong>\1</strong>", s)
|
||||
s = re.sub(r"\*([^*]+)\*", r"<em>\1</em>", s)
|
||||
s = re.sub(r"\[([^\]]+)\]\(([^)]+)\)", r'<a href="\2">\1</a>', s)
|
||||
return s
|
||||
|
||||
|
||||
def md_to_html(text, headings=None):
|
||||
"""Minimaler Markdown->HTML-Konverter:
|
||||
Ueberschriften, **fett**, *kursiv*, `code`, [Links](url),
|
||||
@@ -44,6 +54,8 @@ def md_to_html(text, headings=None):
|
||||
Ueberschriften bekommen id-Anker; in headings (Liste) werden
|
||||
optional (anker, text) aller Ueberschriften gesammelt.
|
||||
"""
|
||||
# vergessenes Trigger-Wort "image" direkt vor einem Bild nicht mit ausgeben
|
||||
text = re.sub(r"\bimage\s*(?=!\[)", "", text, flags=re.IGNORECASE)
|
||||
lines = text.replace("\r\n", "\n").split("\n")
|
||||
out = []
|
||||
i = 0
|
||||
@@ -53,13 +65,6 @@ def md_to_html(text, headings=None):
|
||||
used_ids = {}
|
||||
sec_stack = [] # offene Sektionen (pro # mehr eine Ebene, eingerueckt)
|
||||
|
||||
def inline(s):
|
||||
s = re.sub(r"`([^`]+)`", r"<code>\1</code>", s)
|
||||
s = re.sub(r"\*\*([^*]+)\*\*", r"<strong>\1</strong>", s)
|
||||
s = re.sub(r"\*([^*]+)\*", r"<em>\1</em>", s)
|
||||
s = re.sub(r"\[([^\]]+)\]\(([^)]+)\)", r'<a href="\2">\1</a>', s)
|
||||
return s
|
||||
|
||||
def close_list():
|
||||
nonlocal in_list, list_tag
|
||||
if in_list:
|
||||
@@ -134,6 +139,24 @@ def md_to_html(text, headings=None):
|
||||
i += 1
|
||||
continue
|
||||
|
||||
# Tabellen: | zelle | zelle | mit --- Trennzeile
|
||||
if stripped.startswith("|"):
|
||||
close_list()
|
||||
rows = []
|
||||
j = i
|
||||
while j < len(lines) and lines[j].strip().startswith("|"):
|
||||
rows.append(lines[j].strip())
|
||||
j += 1
|
||||
tbl = _parse_table(rows)
|
||||
if tbl:
|
||||
out.append(tbl)
|
||||
i = j
|
||||
else:
|
||||
# keine gueltige Tabelle -> als normaler Absatz
|
||||
out.append("<p>%s</p>" % inline(_escape(stripped)))
|
||||
i += 1
|
||||
continue
|
||||
|
||||
m = re.match(r"^([-*+])\s+(.*)$", stripped)
|
||||
if m:
|
||||
if not in_list or list_tag != "ul":
|
||||
@@ -167,7 +190,7 @@ def md_to_html(text, headings=None):
|
||||
close_list()
|
||||
para = [stripped]
|
||||
while (i + 1 < len(lines) and lines[i + 1].strip()
|
||||
and not re.match(r"^(#{1,6}\s|[-*+]\s|\d+\.\s|>|```|-{3,}$|<)",
|
||||
and not re.match(r"^(#{1,6}\s|[-*+]\s|\d+\.\s|>|```|-{3,}$|<|\|)",
|
||||
lines[i + 1].strip())):
|
||||
i += 1
|
||||
para.append(lines[i].strip())
|
||||
@@ -185,6 +208,54 @@ def _escape(s):
|
||||
return (s.replace("&", "&").replace("<", "<").replace(">", ">"))
|
||||
|
||||
|
||||
def _parse_table(rows):
|
||||
"""Baut aus |-getrennten Zeilen eine HTML-Tabelle.
|
||||
Zeile 1: Kopfzeile, Zeile 2: Trenner (---, :---, ---:, :---:),
|
||||
danach: Datenzeilen. Liefert None, wenn es keine gueltige Tabelle ist.
|
||||
"""
|
||||
def split_row(r):
|
||||
if r.startswith("|"):
|
||||
r = r[1:]
|
||||
if r.endswith("|"):
|
||||
r = r[:-1]
|
||||
return [c.strip() for c in r.split("|")]
|
||||
|
||||
def is_sep(c):
|
||||
return re.match(r"^:?-{2,}:?$", c) is not None
|
||||
|
||||
if len(rows) < 2 or not all(is_sep(c) and c for c in split_row(rows[1])):
|
||||
return None
|
||||
|
||||
aligns = []
|
||||
for c in split_row(rows[1]):
|
||||
left, right = c.startswith(":"), c.endswith(":")
|
||||
if left and right:
|
||||
aligns.append("center")
|
||||
elif right:
|
||||
aligns.append("right")
|
||||
else:
|
||||
aligns.append("left")
|
||||
|
||||
def cell(tag, j, text):
|
||||
style = ' style="text-align: %s"' % aligns[j] if j < len(aligns) else ""
|
||||
return "<%s%s>%s</%s>" % (tag, style, inline(text), tag)
|
||||
|
||||
out = ["<table>", "<thead><tr>"]
|
||||
for j, c in enumerate(split_row(rows[0])):
|
||||
out.append(cell("th", j, _escape(c)))
|
||||
out.append("</tr></thead>")
|
||||
if len(rows) > 2:
|
||||
out.append("<tbody>")
|
||||
for r in rows[2:]:
|
||||
out.append("<tr>")
|
||||
for j, c in enumerate(split_row(r)):
|
||||
out.append(cell("td", j, _escape(c)))
|
||||
out.append("</tr>")
|
||||
out.append("</tbody>")
|
||||
out.append("</table>")
|
||||
return "".join(out)
|
||||
|
||||
|
||||
def _slugify(s):
|
||||
"""Ueberschriftentext -> HTML-id (ankertauglich, klein, ohne Sonderzeichen)."""
|
||||
s = s.lower()
|
||||
@@ -388,6 +459,14 @@ class Handler(BaseHTTPRequestHandler):
|
||||
self._json({"slug": slug, "raw": load_page(slug)})
|
||||
else:
|
||||
self._json({"error": "Seite nicht gefunden"}, 404)
|
||||
elif path == "/api/images":
|
||||
img_dir = os.path.join(ROOT, "images")
|
||||
files = []
|
||||
if os.path.isdir(img_dir):
|
||||
for f in sorted(os.listdir(img_dir)):
|
||||
if os.path.isfile(os.path.join(img_dir, f)) and not f.startswith("."):
|
||||
files.append(f)
|
||||
self._json({"images": files})
|
||||
elif path == "/api/export":
|
||||
self._json({"exported": export_site()})
|
||||
else:
|
||||
@@ -433,7 +512,11 @@ ADMIN_HTML = """<!DOCTYPE html>
|
||||
#side h1 { font-size: 1rem; }
|
||||
#pages a { display: block; padding: .35rem .5rem; border-radius: 4px; cursor: pointer; text-decoration: none; color: #000; }
|
||||
#pages a.active, #pages a:hover { background: #ddd; }
|
||||
#main { flex: 1; display: flex; flex-direction: column; padding: 1rem; box-sizing: border-box; gap: .5rem; }
|
||||
#main { flex: 1; display: flex; flex-direction: column; padding: 1rem; box-sizing: border-box; gap: .5rem; position: relative; }
|
||||
#imgdrop { position: absolute; top: 3.2rem; left: 1rem; background: #fff; border: 1px solid #999; border-radius: 4px; box-shadow: 0 2px 10px rgba(0,0,0,.25); max-height: 220px; overflow: auto; z-index: 20; min-width: 240px; }
|
||||
#imgdrop .imgdrop-title { font-size: .8rem; padding: .4rem .6rem; background: #eee; }
|
||||
#imglist a { display: block; padding: .35rem .6rem; cursor: pointer; color: #000; }
|
||||
#imglist a:hover { background: #dde8ff; }
|
||||
#toolbar { display: flex; gap: .5rem; align-items: center; }
|
||||
button { padding: .45rem .9rem; border: 1px solid #999; border-radius: 4px; background: #fff; cursor: pointer; }
|
||||
button.primary { background: #0066cc; color: #fff; border-color: #0066cc; }
|
||||
@@ -461,12 +544,17 @@ ADMIN_HTML = """<!DOCTYPE html>
|
||||
<button id="btn-delete" style="margin-left:auto">Seite löschen</button>
|
||||
</div>
|
||||
<div id="msg"></div>
|
||||
<div id="imgdrop" style="display:none">
|
||||
<div class="imgdrop-title">Bild aus images/ einfügen:</div>
|
||||
<div id="imglist"></div>
|
||||
</div>
|
||||
<textarea id="editor" spellcheck="false">---
|
||||
titel: Neue Seite
|
||||
beschreibung: Kurze Seitenbeschreibung fuer Suchmaschinen (SEO).
|
||||
---
|
||||
|
||||
Hier den Inhalt schreiben. **fett**, *kursiv*, [Link](seite.html), # Ueberschrift, - Liste.</textarea>
|
||||
Hier den Inhalt schreiben. **fett**, *kursiv*, [Link](seite.html), # Ueberschrift, - Liste.
|
||||
Das Wort "image" tippen, um ein Bild aus dem images-Ordner einzufuegen.</textarea>
|
||||
<div id="preview"></div>
|
||||
</div>
|
||||
<script>
|
||||
@@ -557,6 +645,59 @@ $("btn-export").onclick = async () => {
|
||||
msg(d.exported ? "Exportiert: " + d.exported.join(", ") : ("Fehler: " + d.error));
|
||||
};
|
||||
|
||||
// ---- Bild einfuegen: "image" tippen -> Dropdown mit Dateien aus images/ ----
|
||||
let dropGen = 0;
|
||||
let lastCaret = 0;
|
||||
|
||||
function hideImageDrop() {
|
||||
dropGen++;
|
||||
$("imgdrop").style.display = "none";
|
||||
}
|
||||
|
||||
async function showImageDrop(caret) {
|
||||
const gen = ++dropGen;
|
||||
lastCaret = caret;
|
||||
const d = await api("/api/images");
|
||||
if (gen !== dropGen) return; // inzwischen wieder geschlossen
|
||||
const list = $("imglist");
|
||||
list.innerHTML = "";
|
||||
if (!d.images.length) {
|
||||
const p = document.createElement("div");
|
||||
p.style.padding = ".4rem .6rem";
|
||||
p.textContent = "Keine Dateien in images/.";
|
||||
list.appendChild(p);
|
||||
}
|
||||
for (const f of d.images) {
|
||||
const a = document.createElement("a");
|
||||
a.textContent = f;
|
||||
a.onmousedown = e => { e.preventDefault(); insertImage(f); };
|
||||
list.appendChild(a);
|
||||
}
|
||||
$("imgdrop").style.display = "block";
|
||||
}
|
||||
|
||||
function insertImage(name) {
|
||||
const ed = $("editor");
|
||||
let pos = lastCaret;
|
||||
let before = ed.value.slice(0, pos), after = ed.value.slice(pos);
|
||||
const md = "![" + name.replace(/\.[^.]+$/, "") + "](images/" + name + ")";
|
||||
// das getippte Wort "image" durch die Bild-Syntax ersetzen
|
||||
if (before.slice(-5).toLowerCase() === "image") before = before.slice(0, -5);
|
||||
ed.value = before + md + after;
|
||||
ed.focus();
|
||||
ed.selectionStart = ed.selectionEnd = (before + md).length;
|
||||
hideImageDrop();
|
||||
}
|
||||
|
||||
$("editor").addEventListener("input", () => {
|
||||
const ed = $("editor");
|
||||
const pos = ed.selectionStart;
|
||||
const tail = ed.value.slice(Math.max(0, pos - 5), pos).toLowerCase();
|
||||
if (tail === "image") showImageDrop(pos);
|
||||
else hideImageDrop();
|
||||
});
|
||||
$("editor").addEventListener("keydown", e => { if (e.key === "Escape") hideImageDrop(); });
|
||||
|
||||
loadPages();
|
||||
</script>
|
||||
</body>
|
||||
|
||||
@@ -138,6 +138,24 @@ main div.sec0 {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* ---- Bilder ---- */
|
||||
|
||||
img {
|
||||
display: block; /* Text startet immer unter dem Bild */
|
||||
max-width: 500px; /* Desktop: maximal 500px breit */
|
||||
height: auto;
|
||||
border: 1px solid #333333; /* dunkelgrauer Rand */
|
||||
margin: .8rem 0;
|
||||
}
|
||||
|
||||
/* Smartphone: Bild ueber die volle Breite */
|
||||
@media (max-width: 600px) {
|
||||
img {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* ---- Anker-Navigation im Header (Links auf die Ueberschriften) ---- */
|
||||
|
||||
.anker-nav {
|
||||
@@ -215,6 +233,28 @@ hr {
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
/* ---- Tabellen ---- */
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid var(--border);
|
||||
padding: .4rem .8rem;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
color: var(--heading);
|
||||
background: #141414;
|
||||
}
|
||||
|
||||
td {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
/* ---- Code ---- */
|
||||
|
||||
code {
|
||||
|
||||
@@ -0,0 +1,872 @@
|
||||
[Version]
|
||||
AppVersion=5.13
|
||||
Version=353
|
||||
|
||||
[General]
|
||||
ColorLabel=0
|
||||
InTrash=false
|
||||
|
||||
[Exposure]
|
||||
Auto=false
|
||||
Clip=0.02
|
||||
Compensation=0
|
||||
Brightness=0
|
||||
Contrast=0
|
||||
Saturation=0
|
||||
Black=0
|
||||
HighlightCompr=0
|
||||
HighlightComprThreshold=0
|
||||
ShadowCompr=50
|
||||
HistogramMatching=false
|
||||
CurveFromHistogramMatching=false
|
||||
ClampOOG=true
|
||||
CurveMode=Standard
|
||||
CurveMode2=Standard
|
||||
Curve=0;
|
||||
Curve2=0;
|
||||
|
||||
[HLRecovery]
|
||||
Enabled=false
|
||||
Method=Coloropp
|
||||
Hlbl=0
|
||||
Hlth=1
|
||||
|
||||
[Retinex]
|
||||
Enabled=false
|
||||
Str=20
|
||||
Scal=3
|
||||
Iter=1
|
||||
Grad=1
|
||||
Grads=1
|
||||
Gam=1.3
|
||||
Slope=3
|
||||
Median=false
|
||||
Neigh=80
|
||||
Offs=0
|
||||
Vart=200
|
||||
Limd=8
|
||||
highl=4
|
||||
skal=3
|
||||
complexMethod=normal
|
||||
RetinexMethod=high
|
||||
mapMethod=none
|
||||
viewMethod=none
|
||||
Retinexcolorspace=Lab
|
||||
Gammaretinex=none
|
||||
CDCurve=0;
|
||||
MAPCurve=0;
|
||||
CDHCurve=0;
|
||||
LHCurve=0;
|
||||
Highlights=0
|
||||
HighlightTonalWidth=80
|
||||
Shadows=0
|
||||
ShadowTonalWidth=80
|
||||
Radius=40
|
||||
TransmissionCurve=1;0;0.5;0.34999999999999998;0.34999999999999998;0.59999999999999998;0.75;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998;
|
||||
GainTransmissionCurve=1;0;0.10000000000000001;0.34999999999999998;0;0.25;0.25;0.34999999999999998;0.34999999999999998;0.69999999999999996;0.25;0.34999999999999998;0.34999999999999998;1;0.10000000000000001;0;0;
|
||||
|
||||
[Local Contrast]
|
||||
Enabled=false
|
||||
Radius=80
|
||||
Amount=0.20000000000000001
|
||||
Darkness=1
|
||||
Lightness=1
|
||||
|
||||
[Channel Mixer]
|
||||
Enabled=false
|
||||
Red=1000;0;0;
|
||||
Green=0;1000;0;
|
||||
Blue=0;0;1000;
|
||||
|
||||
[Black & White]
|
||||
Enabled=false
|
||||
Method=Desaturation
|
||||
Auto=false
|
||||
ComplementaryColors=true
|
||||
Setting=RGB-Rel
|
||||
Filter=None
|
||||
MixerRed=33
|
||||
MixerOrange=33
|
||||
MixerYellow=33
|
||||
MixerGreen=33
|
||||
MixerCyan=33
|
||||
MixerBlue=33
|
||||
MixerMagenta=33
|
||||
MixerPurple=33
|
||||
GammaRed=0
|
||||
GammaGreen=0
|
||||
GammaBlue=0
|
||||
Algorithm=SP
|
||||
LuminanceCurve=0;
|
||||
BeforeCurveMode=Standard
|
||||
AfterCurveMode=Standard
|
||||
BeforeCurve=0;
|
||||
AfterCurve=0;
|
||||
|
||||
[Luminance Curve]
|
||||
Enabled=false
|
||||
Brightness=0
|
||||
Contrast=0
|
||||
Chromaticity=0
|
||||
Gamutmunse=MUN
|
||||
RedAndSkinTonesProtection=0
|
||||
LCredsk=true
|
||||
LCurve=0;
|
||||
aCurve=0;
|
||||
bCurve=0;
|
||||
ccCurve=0;
|
||||
chCurve=0;
|
||||
lhCurve=0;
|
||||
hhCurve=0;
|
||||
LcCurve=0;
|
||||
ClCurve=0;
|
||||
|
||||
[Sharpening]
|
||||
Enabled=false
|
||||
Contrast=20
|
||||
Method=usm
|
||||
Radius=0.5
|
||||
BlurRadius=0.20000000000000001
|
||||
Amount=200
|
||||
Threshold=20;80;2000;1200;
|
||||
OnlyEdges=false
|
||||
EdgedetectionRadius=1.8999999999999999
|
||||
EdgeTolerance=1800
|
||||
HalocontrolEnabled=false
|
||||
HalocontrolAmount=85
|
||||
DeconvRadius=0.75
|
||||
DeconvAmount=100
|
||||
DeconvDamping=0
|
||||
DeconvIterations=30
|
||||
|
||||
[Vibrance]
|
||||
Enabled=false
|
||||
Pastels=0
|
||||
Saturated=0
|
||||
PSThreshold=0;75;
|
||||
ProtectSkins=false
|
||||
AvoidColorShift=true
|
||||
PastSatTog=true
|
||||
SkinTonesCurve=0;
|
||||
|
||||
[SharpenEdge]
|
||||
Enabled=false
|
||||
Passes=2
|
||||
Strength=50
|
||||
ThreeChannels=false
|
||||
|
||||
[SharpenMicro]
|
||||
Enabled=false
|
||||
Matrix=false
|
||||
Strength=20
|
||||
Contrast=20
|
||||
Uniformity=5
|
||||
|
||||
[White Balance]
|
||||
Enabled=true
|
||||
Setting=Camera
|
||||
Temperature=6501
|
||||
Green=1
|
||||
Equal=1
|
||||
TemperatureBias=0
|
||||
StandardObserver=TWO_DEGREES
|
||||
Itcwb_green=0
|
||||
Itcwb_rangegreen=1
|
||||
Itcwb_nopurple=false
|
||||
Itcwb_alg=false
|
||||
Itcwb_prim=beta
|
||||
Itcwb_sampling=false
|
||||
CompatibilityVersion=2
|
||||
|
||||
[Color appearance]
|
||||
Enabled=false
|
||||
Degree=90
|
||||
AutoDegree=true
|
||||
Degreeout=90
|
||||
AutoDegreeout=true
|
||||
Surround=Average
|
||||
complex=normal
|
||||
ModelCat=16
|
||||
CatCat=clas
|
||||
Surrsrc=Average
|
||||
AdaptLum=16
|
||||
Badpixsl=0
|
||||
Model=RawT
|
||||
Illum=i50
|
||||
Algorithm=JC
|
||||
J-Light=0
|
||||
Q-Bright=0
|
||||
C-Chroma=0
|
||||
S-Chroma=0
|
||||
S-Chroma-red=0
|
||||
S-Chroma-green=0
|
||||
S-Chroma-blue=0
|
||||
M-Chroma=0
|
||||
J-Contrast=0
|
||||
Q-Contrast=0
|
||||
H-Hue=0
|
||||
H-Hue-red=0
|
||||
H-Hue-green=0
|
||||
H-Hue-blue=0
|
||||
RSTProtection=0
|
||||
AdaptScene=2000
|
||||
AutoAdapscen=true
|
||||
YbScene=18
|
||||
Autoybscen=true
|
||||
SurrSource=false
|
||||
Gamut=false
|
||||
Tempout=5003
|
||||
Autotempout=true
|
||||
Greenout=1
|
||||
Tempsc=5003
|
||||
Greensc=1
|
||||
Ybout=18
|
||||
Datacie=false
|
||||
Tonecie=false
|
||||
CurveMode=Lightness
|
||||
CurveMode2=Brightness
|
||||
CurveMode3=Chroma
|
||||
Curve=0;
|
||||
Curvered=0;
|
||||
Curvegreen=0;
|
||||
Curveblue=0;
|
||||
Curve2=0;
|
||||
Curve3=0;
|
||||
|
||||
[Impulse Denoising]
|
||||
Enabled=false
|
||||
Threshold=50
|
||||
|
||||
[Defringing]
|
||||
Enabled=false
|
||||
Radius=2
|
||||
Threshold=13
|
||||
HueCurve=1;0.16666666699999999;0;0.34999999999999998;0.34999999999999998;0.34699999999999998;0;0.34999999999999998;0.34999999999999998;0.51366742600000004;0;0.34999999999999998;0.34999999999999998;0.66894457100000004;0;0.34999999999999998;0.34999999999999998;0.82877752459999998;0.97835991;0.34999999999999998;0.34999999999999998;0.99088838270000001;0;0.34999999999999998;0.34999999999999998;
|
||||
|
||||
[Dehaze]
|
||||
Enabled=false
|
||||
Strength=50
|
||||
ShowDepthMap=false
|
||||
Depth=25
|
||||
Saturation=50
|
||||
|
||||
[Directional Pyramid Denoising]
|
||||
Enabled=false
|
||||
Enhance=false
|
||||
Median=false
|
||||
Luma=0
|
||||
Ldetail=0
|
||||
Chroma=15
|
||||
Method=Lab
|
||||
LMethod=SLI
|
||||
CMethod=MAN
|
||||
C2Method=AUTO
|
||||
SMethod=shal
|
||||
MedMethod=soft
|
||||
RGBMethod=soft
|
||||
MethodMed=Lonly
|
||||
Redchro=0
|
||||
Bluechro=0
|
||||
AutoGain=true
|
||||
Gamma=1.7
|
||||
Passes=1
|
||||
LCurve=1;0.050000000000000003;0.14999999999999999;0.34999999999999998;0.34999999999999998;0.55000000000000004;0.040000000000000001;0.34999999999999998;0.34999999999999998;
|
||||
CCCurve=1;0.050000000000000003;0.5;0.34999999999999998;0.34999999999999998;0.34999999999999998;0.050000000000000003;0.34999999999999998;0.34999999999999998;
|
||||
|
||||
[EPD]
|
||||
Enabled=false
|
||||
Strength=0.5
|
||||
Gamma=1
|
||||
EdgeStopping=1.3999999999999999
|
||||
Scale=1
|
||||
ReweightingIterates=0
|
||||
|
||||
[FattalToneMapping]
|
||||
Enabled=false
|
||||
Threshold=30
|
||||
Amount=20
|
||||
Anchor=50
|
||||
|
||||
[Shadows & Highlights]
|
||||
Enabled=false
|
||||
Highlights=0
|
||||
HighlightTonalWidth=70
|
||||
Shadows=0
|
||||
ShadowTonalWidth=30
|
||||
Radius=40
|
||||
Lab=false
|
||||
|
||||
[Compression gamut]
|
||||
Enabled=false
|
||||
th_c=0.81499999999999995
|
||||
th_m=0.80300000000000005
|
||||
th_y=0.88
|
||||
d_c=1.147
|
||||
Autodc=true
|
||||
d_m=1.264
|
||||
Autodm=true
|
||||
d_y=1.3120000000000001
|
||||
Autody=true
|
||||
pwr=1.2
|
||||
colorspace=dcip3
|
||||
rolloff=true
|
||||
|
||||
[ToneEqualizer]
|
||||
Enabled=false
|
||||
Band0=0
|
||||
Band1=0
|
||||
Band2=0
|
||||
Band3=0
|
||||
Band4=0
|
||||
Band5=0
|
||||
Regularization=0
|
||||
Pivot=0
|
||||
|
||||
[Crop]
|
||||
Enabled=false
|
||||
X=0
|
||||
Y=0
|
||||
W=1920
|
||||
H=1080
|
||||
FixedRatio=true
|
||||
Ratio=As Image
|
||||
Orientation=As Image
|
||||
|
||||
[CropGuide]
|
||||
Enabled=true
|
||||
RuleOfThirds={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618}
|
||||
RuleOfDiagonals={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618}
|
||||
HarmonicMeans={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618}
|
||||
Crosshair={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618}
|
||||
Grid={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618}
|
||||
GoldenTriangle={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618}
|
||||
GoldenRatio={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618}
|
||||
Epassport={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618}
|
||||
CenteredSquare={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618}
|
||||
GoldenTriangleMirror=false
|
||||
GoldenRatioRotate=false
|
||||
GoldenRatioMirror=false
|
||||
Bleed=0
|
||||
Basis=Scale
|
||||
AspectRatios=[]
|
||||
|
||||
[Coarse Transformation]
|
||||
Rotate=0
|
||||
HorizontalFlip=false
|
||||
VerticalFlip=false
|
||||
|
||||
[Common Properties for Transformations]
|
||||
Method=log
|
||||
Scale=1
|
||||
Scale horizontally=1
|
||||
Scale vertically=1
|
||||
AutoFill=true
|
||||
|
||||
[Rotation]
|
||||
Degree=0
|
||||
|
||||
[Distortion]
|
||||
Amount=0
|
||||
FocalLength=12
|
||||
Defish=false
|
||||
|
||||
[LensProfile]
|
||||
LcMode=none
|
||||
LCPFile=
|
||||
UseDistortion=true
|
||||
UseVignette=true
|
||||
UseCA=false
|
||||
LFCameraMake=
|
||||
LFCameraModel=
|
||||
LFLens=
|
||||
|
||||
[Perspective]
|
||||
Method=simple
|
||||
Horizontal=0
|
||||
Vertical=0
|
||||
CameraCropFactor=0
|
||||
CameraFocalLength=0
|
||||
CameraPitch=0
|
||||
CameraRoll=0
|
||||
CameraShiftHorizontal=0
|
||||
CameraShiftVertical=0
|
||||
CameraYaw=0
|
||||
ProjectionShiftHorizontal=0
|
||||
ProjectionPitch=0
|
||||
ProjectionRotate=0
|
||||
ProjectionShiftVertical=0
|
||||
ProjectionYaw=0
|
||||
ControlLineValues=
|
||||
ControlLineTypes=
|
||||
|
||||
[Gradient]
|
||||
Enabled=false
|
||||
Degree=0
|
||||
Feather=25
|
||||
Strength=0.59999999999999998
|
||||
CenterX=0
|
||||
CenterY=0
|
||||
|
||||
[Locallab]
|
||||
Enabled=false
|
||||
Selspot=0
|
||||
|
||||
[PCVignette]
|
||||
Enabled=false
|
||||
Strength=0.59999999999999998
|
||||
Feather=50
|
||||
Roundness=50
|
||||
|
||||
[CACorrection]
|
||||
Red=0
|
||||
Blue=0
|
||||
|
||||
[Vignetting Correction]
|
||||
Amount=0
|
||||
Radius=50
|
||||
Strength=1
|
||||
CenterX=0
|
||||
CenterY=0
|
||||
|
||||
[Resize]
|
||||
Enabled=true
|
||||
Scale=0.63
|
||||
AppliesTo=Cropped area
|
||||
Method=Lanczos
|
||||
DataSpecified=4
|
||||
Width=900
|
||||
Height=900
|
||||
LongEdge=1200
|
||||
ShortEdge=675
|
||||
AllowUpscaling=false
|
||||
|
||||
[Framing]
|
||||
Enabled=false
|
||||
FramingMethod=Standard
|
||||
AspectRatio=0
|
||||
Orientation=AsImage
|
||||
FramedWidth=800
|
||||
FramedHeight=600
|
||||
AllowUpscaling=false
|
||||
BorderSizingMethod=Percentage
|
||||
Basis=Auto
|
||||
RelativeBorderSize=0.10000000000000001
|
||||
MinSizeEnabled=false
|
||||
MinWidth=0
|
||||
MinHeight=0
|
||||
AbsWidth=0
|
||||
AbsHeight=0
|
||||
BorderRed=255
|
||||
BorderGreen=255
|
||||
BorderBlue=255
|
||||
|
||||
[PostDemosaicSharpening]
|
||||
Enabled=false
|
||||
Contrast=10
|
||||
AutoContrast=true
|
||||
AutoRadius=true
|
||||
DeconvRadius=0.75
|
||||
DeconvRadiusOffset=0
|
||||
DeconvIterCheck=true
|
||||
Showcap=false
|
||||
Noisecaptype=true
|
||||
Noisecap=0
|
||||
Noisecapafter=0
|
||||
DeconvIterations=20
|
||||
|
||||
[PostResizeSharpening]
|
||||
Enabled=false
|
||||
Contrast=15
|
||||
Method=rld
|
||||
Radius=0.5
|
||||
Amount=200
|
||||
Threshold=20;80;2000;1200;
|
||||
OnlyEdges=false
|
||||
EdgedetectionRadius=1.8999999999999999
|
||||
EdgeTolerance=1800
|
||||
HalocontrolEnabled=false
|
||||
HalocontrolAmount=85
|
||||
DeconvRadius=0.45000000000000001
|
||||
DeconvAmount=100
|
||||
DeconvDamping=0
|
||||
DeconvIterations=100
|
||||
|
||||
[Color Management]
|
||||
InputProfile=(embedded)
|
||||
ToneCurve=false
|
||||
ApplyLookTable=false
|
||||
ApplyBaselineExposureOffset=true
|
||||
ApplyHueSatMap=true
|
||||
DCPIlluminant=0
|
||||
WorkingProfile=Rec2020
|
||||
WorkingTRC=none
|
||||
Wwgamut=none
|
||||
Will=D65
|
||||
Wprim=def
|
||||
Wcat=brad
|
||||
OpacityCurveWLI=1;0;0.5;0.34999999999999998;0.34999999999999998;0.5;0.69999999999999996;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998;
|
||||
WorkingTRCGamma=2.3999999999999999
|
||||
WorkingTRCSlope=12.92
|
||||
WorkingTRCsat=0.5
|
||||
Wmidtcie=0
|
||||
Sigmatrc=1
|
||||
Offstrc=1
|
||||
Residtrc=0
|
||||
Wgampower=1
|
||||
Wgamgain=0
|
||||
Pyrwavtrc=2
|
||||
Wsmoothcie=false
|
||||
Wsmoothciesli=0
|
||||
Redx=0.70799999999999996
|
||||
Redy=0.29199999999999998
|
||||
Grex=0.17000000000000001
|
||||
Grey=0.79700000000000004
|
||||
Blux=0.13100000000000001
|
||||
Bluy=0.045999999999999999
|
||||
Redrot=0
|
||||
Redsat=0
|
||||
Grerot=0
|
||||
Gresat=0
|
||||
Blurot=0
|
||||
Blusat=0
|
||||
Refi=0
|
||||
Shiftx=0
|
||||
Shifty=0
|
||||
LabGridcieALow=0.46908899999999998
|
||||
LabGridcieBLow=-0.287273
|
||||
LabGridcieAHigh=-0.57999999999999996
|
||||
LabGridcieBHigh=-0.81799999999999995
|
||||
LabGridcieGx=-0.50900900000000004
|
||||
LabGridcieGy=0.63090000000000002
|
||||
LabGridcieWx=-0.24959000000000001
|
||||
LabGridcieWy=-0.22
|
||||
LabGridcieMx=0
|
||||
LabGridcieMy=0
|
||||
Preser=0
|
||||
Fbw=false
|
||||
TrcExp=false
|
||||
WavExp=false
|
||||
Gamut=true
|
||||
OutputProfile=RTv4_sRGB
|
||||
aIntent=Relative
|
||||
OutputProfileIntent=Relative
|
||||
OutputBPC=true
|
||||
|
||||
[Wavelet]
|
||||
Enabled=false
|
||||
Strength=100
|
||||
Balance=0
|
||||
Sigmafin=1
|
||||
Sigmaton=1
|
||||
Sigmacol=1
|
||||
Sigmadir=1
|
||||
Rangeab=20
|
||||
Protab=0
|
||||
Iter=0
|
||||
MaxLev=7
|
||||
TilesMethod=full
|
||||
complexMethod=normal
|
||||
mixMethod=mix7
|
||||
sliMethod=sli
|
||||
quaMethod=cons
|
||||
DaubMethod=6_
|
||||
ChoiceLevMethod=all
|
||||
BackMethod=grey
|
||||
LevMethod=4
|
||||
DirMethod=all
|
||||
CBgreenhigh=0
|
||||
CBgreenmed=0
|
||||
CBgreenlow=0
|
||||
CBbluehigh=0
|
||||
CBbluemed=0
|
||||
CBbluelow=0
|
||||
Ballum=7
|
||||
Sigm=1
|
||||
Levden=0
|
||||
Thrden=0
|
||||
Limden=0
|
||||
Balchrom=0
|
||||
Chromfine=0
|
||||
Chromcoarse=0
|
||||
MergeL=20
|
||||
MergeC=20
|
||||
Softrad=0
|
||||
Softradend=0
|
||||
Strend=50
|
||||
Detend=0
|
||||
Thrend=0
|
||||
Expcontrast=false
|
||||
Expchroma=false
|
||||
Expedge=false
|
||||
expbl=false
|
||||
Expresid=false
|
||||
Expfinal=false
|
||||
Exptoning=false
|
||||
Expnoise=false
|
||||
Expclari=false
|
||||
LabGridALow=0
|
||||
LabGridBLow=0
|
||||
LabGridAHigh=0
|
||||
LabGridBHigh=0
|
||||
Contrast1=0
|
||||
Contrast2=0
|
||||
Contrast3=0
|
||||
Contrast4=0
|
||||
Contrast5=0
|
||||
Contrast6=0
|
||||
Contrast7=0
|
||||
Contrast8=0
|
||||
Contrast9=0
|
||||
Chroma1=0
|
||||
Chroma2=0
|
||||
Chroma3=0
|
||||
Chroma4=0
|
||||
Chroma5=0
|
||||
Chroma6=0
|
||||
Chroma7=0
|
||||
Chroma8=0
|
||||
Chroma9=0
|
||||
ContExtra=0
|
||||
HSMethod=with
|
||||
HLRange=50;75;100;98;
|
||||
SHRange=0;2;50;25;
|
||||
Edgcont=0;10;75;40;
|
||||
Level0noise=0;0;
|
||||
Level1noise=0;0;
|
||||
Level2noise=0;0;
|
||||
Level3noise=0;0;
|
||||
Leveldenoise=0;0;
|
||||
Levelsigm=1;1;
|
||||
ThresholdHighlight=4
|
||||
ThresholdShadow=5
|
||||
Edgedetect=90
|
||||
Edgedetectthr=20
|
||||
EdgedetectthrHi=0
|
||||
Edgesensi=60
|
||||
Edgeampli=10
|
||||
ThresholdChroma=5
|
||||
CHromaMethod=link
|
||||
Medgreinf=less
|
||||
Ushamethod=clari
|
||||
CHSLromaMethod=SL
|
||||
EDMethod=CU
|
||||
NPMethod=none
|
||||
BAMethod=none
|
||||
TMMethod=cont
|
||||
ChromaLink=0
|
||||
ContrastCurve=1;0;0.25;0.34999999999999998;0.34999999999999998;0.5;0.75;0.34999999999999998;0.34999999999999998;0.90000000000000002;0;0.34999999999999998;0.34999999999999998;
|
||||
blcurve=1;0;0;0;0.34999999999999998;0.5;0;0.34999999999999998;0.34999999999999998;1;0;0.34999999999999998;0.34999999999999998;
|
||||
Pastlev=0;2;30;20;
|
||||
Satlev=30;45;130;100;
|
||||
OpacityCurveRG=1;0;0.5;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998;
|
||||
OpacityCurveBY=1;0;0.5;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998;
|
||||
wavdenoise=1;0;1;0.34999999999999998;0.34999999999999998;0.5;1;0.34999999999999998;0.34999999999999998;1;1;0.34999999999999998;0.34999999999999998;
|
||||
wavdenoiseh=1;0;1;0.34999999999999998;0.34999999999999998;0.5;1;0.34999999999999998;0.34999999999999998;1;1;0.34999999999999998;0.34999999999999998;
|
||||
OpacityCurveW=1;0;0.34999999999999998;0.34999999999999998;0;0.34999999999999998;0.75;0.34999999999999998;0.34999999999999998;0.59999999999999998;0.75;0.34999999999999998;0.34999999999999998;1;0.34999999999999998;0;0;
|
||||
OpacityCurveWL=1;0;0.5;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998;
|
||||
HHcurve=0;
|
||||
Wavguidcurve=0;
|
||||
Wavhuecurve=0;
|
||||
CHcurve=0;
|
||||
WavclCurve=0;
|
||||
Median=false
|
||||
Medianlev=false
|
||||
Linkedg=false
|
||||
CBenab=false
|
||||
Lipst=false
|
||||
Skinprotect=0
|
||||
chrwav=0
|
||||
bluwav=1
|
||||
Hueskin=-5;25;170;120;
|
||||
Edgrad=15
|
||||
Edgeffect=1
|
||||
Edgval=0
|
||||
ThrEdg=10
|
||||
AvoidColorShift=false
|
||||
Showmask=false
|
||||
Oldsh=true
|
||||
TMr=false
|
||||
Sigma=1
|
||||
Offset=1
|
||||
Lowthr=40
|
||||
ResidualcontShadow=0
|
||||
ResidualcontHighlight=0
|
||||
ThresholdResidShadow=30
|
||||
ThresholdResidHighLight=70
|
||||
Residualradius=40
|
||||
Residualchroma=0
|
||||
Residualblur=0
|
||||
Residualblurc=0
|
||||
ResidualTM=0
|
||||
ResidualEDGS=1.3999999999999999
|
||||
ResidualSCALE=1
|
||||
Residualgamma=1
|
||||
HueRangeResidual=0
|
||||
HueRange=-260;-250;-130;-140;
|
||||
Contrast=0
|
||||
|
||||
[Spot removal]
|
||||
Enabled=false
|
||||
|
||||
[Directional Pyramid Equalizer]
|
||||
Enabled=false
|
||||
Gamutlab=false
|
||||
cbdlMethod=bef
|
||||
Mult0=1
|
||||
Mult1=1
|
||||
Mult2=1
|
||||
Mult3=1
|
||||
Mult4=1
|
||||
Mult5=1
|
||||
Threshold=0.20000000000000001
|
||||
Skinprotect=0
|
||||
Hueskin=-5;25;170;120;
|
||||
|
||||
[HSV Equalizer]
|
||||
Enabled=false
|
||||
HCurve=0;
|
||||
SCurve=0;
|
||||
VCurve=0;
|
||||
|
||||
[SoftLight]
|
||||
Enabled=false
|
||||
Strength=30
|
||||
|
||||
[Film Simulation]
|
||||
Enabled=false
|
||||
ClutFilename=
|
||||
Strength=100
|
||||
|
||||
[RGB Curves]
|
||||
Enabled=false
|
||||
LumaMode=false
|
||||
rCurve=0;
|
||||
gCurve=0;
|
||||
bCurve=0;
|
||||
|
||||
[ColorToning]
|
||||
Enabled=false
|
||||
Method=LabRegions
|
||||
Lumamode=true
|
||||
Twocolor=Std
|
||||
Redlow=0
|
||||
Greenlow=0
|
||||
Bluelow=0
|
||||
Satlow=0
|
||||
Balance=0
|
||||
Sathigh=0
|
||||
Redmed=0
|
||||
Greenmed=0
|
||||
Bluemed=0
|
||||
Redhigh=0
|
||||
Greenhigh=0
|
||||
Bluehigh=0
|
||||
Autosat=true
|
||||
OpacityCurve=1;0;0.29999999999999999;0.34999999999999998;0;0.25;0.80000000000000004;0.34999999999999998;0.34999999999999998;0.69999999999999996;0.80000000000000004;0.34999999999999998;0.34999999999999998;1;0.29999999999999999;0;0;
|
||||
ColorCurve=1;0.050000000000000003;0.62;0.25;0.25;0.58499999999999996;0.11;0.25;0.25;
|
||||
SatProtectionThreshold=30
|
||||
SaturatedOpacity=80
|
||||
Strength=50
|
||||
HighlightsColorSaturation=60;80;
|
||||
ShadowsColorSaturation=80;208;
|
||||
ClCurve=3;0;0;0.34999999999999998;0.65000000000000002;1;1;
|
||||
Cl2Curve=3;0;0;0.34999999999999998;0.65000000000000002;1;1;
|
||||
LabGridALow=0
|
||||
LabGridBLow=0
|
||||
LabGridAHigh=0
|
||||
LabGridBHigh=0
|
||||
LabRegionA_1=0
|
||||
LabRegionB_1=0
|
||||
LabRegionSaturation_1=0
|
||||
LabRegionSlope_1=1
|
||||
LabRegionOffset_1=0
|
||||
LabRegionPower_1=1
|
||||
LabRegionHueMask_1=1;0.16666666699999999;1;0.34999999999999998;0.34999999999999998;0.82877752459999998;1;0.34999999999999998;0.34999999999999998;
|
||||
LabRegionChromaticityMask_1=1;0;1;0.34999999999999998;0.34999999999999998;1;1;0.34999999999999998;0.34999999999999998;
|
||||
LabRegionLightnessMask_1=1;0;1;0.34999999999999998;0.34999999999999998;1;1;0.34999999999999998;0.34999999999999998;
|
||||
LabRegionMaskBlur_1=0
|
||||
LabRegionChannel_1=-1
|
||||
LabRegionsShowMask=-1
|
||||
|
||||
[RAW]
|
||||
DarkFrame=/szeva
|
||||
DarkFrameAuto=false
|
||||
FlatFieldFile=/szeva
|
||||
FlatFieldAutoSelect=false
|
||||
FlatFieldFromMetaData=false
|
||||
FlatFieldBlurRadius=32
|
||||
FlatFieldBlurType=Area Flatfield
|
||||
FlatFieldAutoClipControl=false
|
||||
FlatFieldClipControl=0
|
||||
CA=false
|
||||
CAAvoidColourshift=true
|
||||
CAAutoIterations=2
|
||||
CARed=0
|
||||
CABlue=0
|
||||
HotPixelFilter=false
|
||||
DeadPixelFilter=false
|
||||
HotDeadPixelThresh=100
|
||||
PreExposure=1
|
||||
|
||||
[RAW Bayer]
|
||||
Method=amaze
|
||||
Border=4
|
||||
ImageNum=1
|
||||
CcSteps=0
|
||||
PreBlack0=0
|
||||
PreBlack1=0
|
||||
PreBlack2=0
|
||||
PreBlack3=0
|
||||
PreTwoGreen=true
|
||||
Dehablack=false
|
||||
LineDenoise=0
|
||||
LineDenoiseDirection=3
|
||||
GreenEqThreshold=0
|
||||
DCBIterations=2
|
||||
DCBEnhance=true
|
||||
LMMSEIterations=2
|
||||
DualDemosaicAutoContrast=true
|
||||
DualDemosaicContrast=20
|
||||
PixelShiftMotionCorrectionMethod=1
|
||||
PixelShiftEperIso=0
|
||||
PixelShiftSigma=1
|
||||
PixelShiftShowMotion=false
|
||||
PixelShiftShowMotionMaskOnly=false
|
||||
pixelShiftHoleFill=true
|
||||
pixelShiftAverage=false
|
||||
pixelShiftMedian=false
|
||||
pixelShiftGreen=true
|
||||
pixelShiftBlur=true
|
||||
pixelShiftSmoothFactor=0.69999999999999996
|
||||
pixelShiftEqualBright=false
|
||||
pixelShiftEqualBrightChannel=false
|
||||
pixelShiftNonGreenCross=true
|
||||
pixelShiftDemosaicMethod=amaze
|
||||
PDAFLinesFilter=false
|
||||
|
||||
[RAW X-Trans]
|
||||
Method=3-pass (best)
|
||||
DualDemosaicAutoContrast=true
|
||||
DualDemosaicContrast=20
|
||||
Border=7
|
||||
CcSteps=0
|
||||
PreBlackRed=0
|
||||
PreBlackGreen=0
|
||||
PreBlackBlue=0
|
||||
Dehablackx=false
|
||||
|
||||
[MetaData]
|
||||
Mode=1
|
||||
ExifKeys=*;
|
||||
|
||||
[Film Negative]
|
||||
Enabled=false
|
||||
RedRatio=1.3600000000000001
|
||||
GreenExponent=1.5
|
||||
BlueRatio=0.85999999999999999
|
||||
ColorSpace=1
|
||||
RefInput=0;0;0;
|
||||
RefOutput=2739.961181640625;2740.07568359375;2739.944580078125;
|
||||
|
||||
[RAW Preprocess WB]
|
||||
Mode=1
|
||||
Vendored
BIN
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 115 KiB |
@@ -30,6 +30,7 @@ Alle, die sich für Linux, Open Source und die Förderung von Wissen in Kunst un
|
||||
Ziel ist es, den Einsatz freier Software in Kunst und Design zu fördern. Durch Workshops, den Aufbau von Wissensdatenbanken, Austausch und Debatten sollen Eigenermächtigung und Verantwortung für Technologie wiederhergestellt werden. Dazu entwickeln wir gemeinsam ein eigenes Linux-basiertes Betriebssystem und unterstützen bei allen Schritten des Wechsels zu freier Software.
|
||||
|
||||
# Das hfg_OS_
|
||||

|
||||
Das hfg_OS ist ein auf Debian 13 (Trixie) basierendes, Linux-basiertes Betriebssystem. Es wurde speziell für die Bedürfnisse von Künstler:innen und Designer:innen angepasst und wird kontinuierlich weiterentwickelt.
|
||||
|
||||
Bald verfügbar: hfg_OS_Falbella-2026-10
|
||||
|
||||
@@ -138,6 +138,24 @@ main div.sec0 {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* ---- Bilder ---- */
|
||||
|
||||
img {
|
||||
display: block; /* Text startet immer unter dem Bild */
|
||||
max-width: 500px; /* Desktop: maximal 500px breit */
|
||||
height: auto;
|
||||
border: 1px solid #333333; /* dunkelgrauer Rand */
|
||||
margin: .8rem 0;
|
||||
}
|
||||
|
||||
/* Smartphone: Bild ueber die volle Breite */
|
||||
@media (max-width: 600px) {
|
||||
img {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* ---- Anker-Navigation im Header (Links auf die Ueberschriften) ---- */
|
||||
|
||||
.anker-nav {
|
||||
@@ -215,6 +233,28 @@ hr {
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
/* ---- Tabellen ---- */
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid var(--border);
|
||||
padding: .4rem .8rem;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
color: var(--heading);
|
||||
background: #141414;
|
||||
}
|
||||
|
||||
td {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
/* ---- Code ---- */
|
||||
|
||||
code {
|
||||
|
||||
Vendored
BIN
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 115 KiB |
+2
-2
@@ -31,7 +31,7 @@
|
||||
<p>Die nächsten Termine für den Herbst/Winter 2026 werden aktuell geplant:</p>
|
||||
<div class="sec">
|
||||
<h2 id="hfg-linux-usergroup-date-1-music">hfg_linux_usergroup_date_1_music</h2>
|
||||
<p>Platzhalter inhalt, um was geht es hier. Test für den upload.</p>
|
||||
<p>Platzhalter inhalt, um was geht es hier.</p>
|
||||
</div>
|
||||
<div class="sec">
|
||||
<h2 id="hfg-linux-usergroup-date-2-image-editing">hfg_linux_usergroup_date_2_image-editing</h2>
|
||||
@@ -56,7 +56,7 @@
|
||||
</div>
|
||||
<div class="sec0">
|
||||
<h1 id="das-hfg-os">Das hfg_OS_</h1>
|
||||
<p>Das hfg_OS ist ein auf Debian 13 (Trixie) basierendes, Linux-basiertes Betriebssystem. Es wurde speziell für die Bedürfnisse von Künstler:innen und Designer:innen angepasst und wird kontinuierlich weiterentwickelt.</p>
|
||||
<p><img src="images/hfg_os_background_1_fullhd.jpg" alt="hfg_os_background_1_fullhd"> Das hfg_OS ist ein auf Debian 13 (Trixie) basierendes, Linux-basiertes Betriebssystem. Es wurde speziell für die Bedürfnisse von Künstler:innen und Designer:innen angepasst und wird kontinuierlich weiterentwickelt.</p>
|
||||
<p>Bald verfügbar: hfg_OS_Falbella-2026-10</p>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
Reference in new issue
Block a user