27 Commits

Author SHA1 Message Date
coja
9eca59f80f [Doc] csv check 2026-05-02 05:05:26 +02:00
coja
c3ae746d83 [Doc] update 2026-05-02 04:49:06 +02:00
coja
a66da9b2d5 [Page] statute update 2026-05-02 04:17:07 +02:00
coja
e9147b34cb [Page] support monero wallet removed 2026-05-02 04:03:12 +02:00
coja
02c2dcc9fc [CSV] parsing csv with DictReader instead 2026-05-02 04:00:17 +02:00
coja
749574c8dc [Doc] cleanup 2026-05-02 03:58:58 +02:00
coja
c40f101540 [JS] Wrapped everything to DOM Loaded 2026-05-02 03:56:03 +02:00
coja
5958bbc24f [Doc] readme update for makefile 2026-05-02 03:45:29 +02:00
coja
d9c93d1182 [Makefile] init 2026-05-02 03:44:52 +02:00
coja
d001d6b287 [Prep] location in new tab 2026-05-02 03:43:43 +02:00
coja
910f375c94 [Requirements] missing pkgs 2026-05-02 03:36:28 +02:00
coja
69b0e5b63a [Events] readability improvement, banner spacing 2026-05-02 03:16:51 +02:00
coja
ec64147c6b [Events] spacing fix 2026-05-02 02:43:04 +02:00
coja
b6cfef830a [Theme] dark/light theme fix 2026-05-02 02:37:39 +02:00
coja
e3330ad1bd [Page] events 2026-05-02 02:13:59 +02:00
coja
6d31b3915b [Cleanup] libreoffice lock file 2026-05-02 02:13:48 +02:00
coja
e18bf1899e [Fix] menu and theme switch 2026-05-02 01:50:28 +02:00
coja
9fc58a992e [Fix] lint and error fix 2026-05-02 00:46:38 +02:00
coja
6013ff7cc8 [Page] statute, voting members update 2026-05-02 00:34:48 +02:00
coja
d1051be74b [JS] refactor 2026-05-01 23:27:36 +02:00
coja
9ff6c99615 [Style] services and about spacings 2026-05-01 22:56:30 +02:00
coja
bbf1ffa445 [Style] account link styling 2026-05-01 22:56:07 +02:00
coja
507472f6ff [Style] scroll fix 2026-05-01 22:39:29 +02:00
coja
5c2936edbc [Nginx] dev warrning fix hash bucket size 2026-05-01 22:26:22 +02:00
coja
c61f61fdd0 [Events] May 2026-04-29 22:15:25 +02:00
coja
dfa2ebbdd9 [Page] webring xecut 2026-04-29 22:01:49 +02:00
coja
2a83167bae [Page] webring xecut 2026-04-22 22:30:54 +02:00
39 changed files with 1057 additions and 680 deletions

View File

@@ -1 +0,0 @@
,user,localhost,03.05.2025 20:05,file:///home/user/.config/libreoffice/4;

30
Makefile Normal file
View File

@@ -0,0 +1,30 @@
.PHONY: build events dev stop help prep
help:
@echo "Available commands:"
@echo " make prep - Create venv and install requirements"
@echo " make events - Update site from CSV (build pages + images)"
@echo " make dev - Start development server"
@echo " make stop - Stop development server"
@echo " make build - Full website build sequence"
@echo " make help - Show this help message"
prep:
python3 -m venv .venv
./.venv/bin/pip install --upgrade pip
./.venv/bin/pip install -r requirements.txt
build:
./.venv/bin/python atom_gen.py
./.venv/bin/python prep.py
./.venv/bin/python build_pages.py
events:
./.venv/bin/python build_pages.py
./.venv/bin/python image_poster.py
dev:
nginx -p . -c nginx.dev.conf
stop:
nginx -p . -s stop

View File

@@ -1,40 +1,50 @@
# Decentrala
dmz.rs/decentrala.org website
[dmz.rs](https://dmz.rs/) / [decentrala.org](https://decentrala.org) website
## Setup
First, prepare the virtual environment and install dependencies:
```sh
make prep
```
## Build site
Run
To build the complete website:
```sh
python atom_gen.py
python prep.py
python build_pages.py
make build
```
Complete website will be contained in `site/`. You can copy this to server.
The complete website will be contained in `site/`. You can copy this to your server.
## Development server
To start a development server, first build site, then run (possibly with `sudo`)
To start a development server, first build the site, then run (possibly with `sudo`):
```sh
nginx -p . -c nginx.dev.conf
make dev
```
To stop it:
```sh
nginx -p . -s stop
make stop
```
## Events
To update events, update the `events.csv` then run commands
To update events, update `dogadjaji.csv` then run:
```sh
python build_pages.py # builds html out of csv
python image_poster.py # generates images for events
make events
```
For checking the csv data, suggestion is the [tennis pkg](https://github.com/gurgeous/tennis), with example command:
```sh
tennis -nt --zebra --color on --theme dark --tail 20 dogadjaji.csv
```

View File

@@ -36,7 +36,7 @@ def main():
f.write(html)
f.close()
with open(f'pages/en/{page["name"]}.html') as f:
pageHtml = "<div><img src='/img/students_bug.jpg' alt='Students found the bug' /></div>"
pageHtml = "<div class='cover-wrap'><img src='/img/students_bug.jpg' alt='Students found the bug' /></div>"
pageHtml += f.read()
html = buildPage(page['name'], page['titleEN'], pageHtml, page['style'], templateEN)
f = open(f'site/en/{page["name"]}.html', 'w')

View File

@@ -1,4 +1,4 @@
datum, vreme, lokacija, tema, tip, link, temaE
datum, vreme, lokacija, tema, tip, link, temaEN
20-12-2022, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u računarske mreže,,,
03-01-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Hackathon žurka, hack,,
16-01-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Privatnost na internetu, workshop,,
@@ -357,3 +357,11 @@ datum, vreme, lokacija, tema, tip, link, temaE
21-04-2026, 18:00, Matematički fakultet (Učionica JAG3) https://www.openstreetmap.org/node/3807078606,Discussion about money,discussion,,Discussion about money
27-04-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OSM contributing,lecture,,OSM contributing
28-04-2026, 18:00, Matematički fakultet (Učionica JAG3) https://www.openstreetmap.org/node/3807078606,Decentrala sastanak,meeting,https://forum.dmz.rs/t/decentrala-sastanak/13/221,Decentrala meeting
04-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Sysadmin radionica,workshop,,Sysadmin workshop
05-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Idejno-politicka diskusija,discussion,,Ideological-political discussion
11-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Hardware hackathon,workshop,,Hardware hackathon
12-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,OpenSCAD,lecture,,OpenSCAD
18-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OverTheWire (Bandit),workshop,https://forum.dmz.rs/t/overthewire-bandit-1-14/1196,OverTheWire (Bandit)
19-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Film: The Seventh Seal (1957),movie,,Movie: The Seventh Seal (1957)
25-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Reverse engineering,workshop,,Reverse engineering
26-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Film: TPB-AFK (2013),movie,,Movie: TPB-AFK (2013)
1 datum vreme lokacija tema tip link temaE temaEN
2 20-12-2022 19:00 DC Krov https://www.openstreetmap.org/node/10594728522 Uvod u računarske mreže
3 03-01-2023 19:00 DC Krov https://www.openstreetmap.org/node/10594728522 Hackathon žurka hack
4 16-01-2023 19:00 DC Krov https://www.openstreetmap.org/node/10594728522 Privatnost na internetu workshop
357 21-04-2026 18:00 Matematički fakultet (Učionica JAG3) https://www.openstreetmap.org/node/3807078606 Discussion about money discussion Discussion about money
358 27-04-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 OSM contributing lecture OSM contributing
359 28-04-2026 18:00 Matematički fakultet (Učionica JAG3) https://www.openstreetmap.org/node/3807078606 Decentrala sastanak meeting https://forum.dmz.rs/t/decentrala-sastanak/13/221 Decentrala meeting
360 04-05-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Sysadmin radionica workshop Sysadmin workshop
361 05-05-2026 18:00 Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606 Idejno-politicka diskusija discussion Ideological-political discussion
362 11-05-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Hardware hackathon workshop Hardware hackathon
363 12-05-2026 18:00 Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606 OpenSCAD lecture OpenSCAD
364 18-05-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 OverTheWire (Bandit) workshop https://forum.dmz.rs/t/overthewire-bandit-1-14/1196 OverTheWire (Bandit)
365 19-05-2026 18:00 Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606 Film: The Seventh Seal (1957) movie Movie: The Seventh Seal (1957)
366 25-05-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Reverse engineering workshop Reverse engineering
367 26-05-2026 18:00 Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606 Film: TPB-AFK (2013) movie Movie: TPB-AFK (2013)

View File

@@ -4,6 +4,7 @@ events {}
http {
# edit this for your system
types_hash_bucket_size 128;
include /etc/nginx/mime.types;
server {
@@ -20,4 +21,4 @@ http {
try_files $uri $uri.html /$uri/index.html /index.html;
}
}
}
}

View File

@@ -1,8 +1,23 @@
<h1>Account</h1>
<p>If you have created an account on dmz.rs, you can use our XMPP and e-mail server, as well as other services that support LDAP login.<p>
<p>For more on XMPP see <a href="https://wiki.dmz.rs/en/tutorial/conversations">this tutorial</a>. <p>
<p>You can see settings for the <a href="https://www.thunderbird.net">Thunderbird</a> mail client on this <a href="/img/mailsettings.png">image</a>.<p>
<p>
If you have created an account on dmz.rs, you can use our XMPP and e-mail
server, as well as other services that support LDAP login.
</p>
<p>
For more on XMPP see
<a href="https://wiki.dmz.rs/en/tutorial/conversations">this tutorial</a>.
</p>
<p>
You can see settings for the
<a href="https://www.thunderbird.net">Thunderbird</a> mail client on this
<a href="/img/mailsettings.png">image</a>.
</p>
<p><a href="/account/register/">Register</a><p>
<p><a href="/account/unregister/">Delete account</a><p>
<p><a href="/account/changepassword/">Change password</a><p>
<div class="auth-wrap">
<p><a href="/account/register/">Register</a></p>
<p></p>
<p><a href="/account/unregister/">Delete account</a></p>
<p></p>
<p><a href="/account/changepassword/">Change password</a></p>
<p></p>
</div>

View File

@@ -4,12 +4,14 @@
<p>
Decentrala is a community, united around the principles of decentralized technology and the spreading of knowledge. 
</p>
<label>Key values include:</label>
<ul>
<li>Equal access to technology</li>
<li>Free software</li>
<li>Privacy and security</li>
</ul>
<div class="values">
<label>Our key values include:</label>
<ul>
<li>Equal access to technology</li>
<li>Free and open source software</li>
<li>Privacy and security</li>
</ul>
</div>
<p> Donations are accepted only from individuals, with no conditions or obligations. </p>
<p> Only open-source services are hosted on the Decentrala infrastructure. </p>
<p> Parts of the statute can be defined immutable, and cannot be voted on. </p>
@@ -33,7 +35,7 @@
<p> An individual may withdraw from the union at any time, or may be expelled by a two-thirds majority of present members. </p
<p> If a member of a voting body is absent during three consecutive meetings, they are automatically excluded from the voting body. </p>
<p> A member can be re-admitted to the governing body according to the predefined procedure for adding new members, if they are present at that meeting. </p>
<p> The current members of the voting body are using pseudonyms climatechanged, malin, coja, bora, mad3v, wingaxe, nothke, txrpe, euffrat, netstat. </p>
<p> The current members of the voting body are using pseudonyms malin, coja, bora, mad3v, txrpe, euffrat, netstat.</p>
</div>
<h2>Meetings</h2>

View File

@@ -29,11 +29,11 @@
</p>
<ul>
<li>Bitcoin: <i>bc1qjhsfgq79wuzzv32yml9zglwzf9qcwfj3atuy74</i></li>
<li>
<!-- <li>
Monero:
<i
>8BESz45LnxrgCwZP32KieiN1D4LinCfsS1YjdFHfGXrVCmPs35167QsW1gd7qbff4UAtBbT6oWrkbfZnJm71HornVRiRZFS</i
>
</li>
</li> -->
</ul>
</dd>

View File

@@ -2,4 +2,5 @@
<ul>
<li><a href="https://pionir.org">Pionir school</a></li>
<li><a href="https://tilda.center">Tilda Center</a></li>
<li><a href="https://xecut.me/">Xecut</a></li>
</ul>

View File

@@ -1,8 +1,22 @@
<h1>Nalog</h1>
<p>Ako si napravio nalog na dmz.rs možeš koristiti naš XMPP i e-mail server, kao i ostale servise koji podržavaju LDAP login.<p>
<p>Za više o XMPP-u pogledaj <a href="https://wiki.dmz.rs/en/tutorial/conversations-srpski">tutorial</a>. <p>
<p>Podešavanja za <a href="https://www.thunderbird.net">Thunderbird</a> mail klijent možeš pogledati na <a href="/img/mailsettings.png">slici</a>.<p>
<p>
Ako si napravio nalog na dmz.rs možeš koristiti naš XMPP i e-mail server, kao
i ostale servise koji podržavaju LDAP login.
</p>
<p>
Za više o XMPP-u pogledaj
<a href="https://wiki.dmz.rs/en/tutorial/conversations-srpski">tutorial</a>.
</p>
<p>
Podešavanja za <a href="https://www.thunderbird.net">Thunderbird</a> mail
klijent možeš pogledati na <a href="/img/mailsettings.png">slici</a>.
</p>
<p><a href="/account/register/">Registruj se</a><p>
<p><a href="/account/unregister/">Izbriši nalog</a><p>
<p><a href="/account/changepassword/">Promeni lozinku</a><p>
<div class="auth-wrap">
<p><a href="/account/register/">Registruj se</a></p>
<p></p>
<p><a href="/account/unregister/">Izbriši nalog</a></p>
<p></p>
<p><a href="/account/changepassword/">Promeni lozinku</a></p>
<p></p>
</div>

View File

@@ -3,9 +3,16 @@
<div>
<p>
Decentrala je zajednica okupljena oko decentralizacije tehnologija i širenja
znanja. Decentralizacija uključuje ravnopravnost korišćenja tehnologije,
slobodnog softvera, privatnost i bezbednost.
znanja.
</p>
<div class="values">
<label> Decentralizacija uključuje: </label>
<ul>
<li>Ravnopravnost korišćenja tehnologije</li>
<li>Slobodan software otvorenog koda</li>
<li>Privatnost i bezbednost.</li>
</ul>
</div>
<p>
Na Decentralinoj arhitekturi hostuju se samo servisi koji su otvorenog koda
</p>
@@ -51,8 +58,8 @@
dodavanja novog clana, ako je prisutan na tom sastanku.
</p>
<p>
Trenutni članovi glasačkog tela su pod pseudonimom climatechanged,
malin, coja, bora, mad3v, wingaxe, nothke, txrpe, fl3ka, euffrat, netstat.
Trenutni članovi glasačkog tela su pod pseudonimom malin, coja, bora, mad3v,
txrpe, euffrat, netstat.
</p>
</div>

View File

@@ -27,11 +27,13 @@
<p>Takođe primamo donacije u bitcoinu i moneru na adresama:</p>
<ul>
<li>Bitcoin: <i>bc1qjhsfgq79wuzzv32yml9zglwzf9qcwfj3atuy74</i></li>
<!--
<li>
Monero:
<i
>8BESz45LnxrgCwZP32KieiN1D4LinCfsS1YjdFHfGXrVCmPs35167QsW1gd7qbff4UAtBbT6oWrkbfZnJm71HornVRiRZFS</i
>
</li>
-->
</ul>
</dd>

View File

@@ -2,4 +2,5 @@
<ul>
<li><a href="https://pionir.org">Slobodna škola Pionir</a></li>
<li><a href="https://tilda.center">Tilda Centar</a></li>
<li><a href="https://xecut.me/">Xecut</a></li>
</ul>

23
prep.py
View File

@@ -20,20 +20,16 @@ TYPES_DICT = {
def load_events(csv_path:str) -> list[dict]:
events = []
with open(csv_path) as csv_file:
csv_reader = csv.reader(csv_file, skipinitialspace=True)
next(csv_reader, None)
with open(csv_path, encoding='utf-8') as csv_file:
csv_reader = csv.DictReader(csv_file, skipinitialspace=True)
for event in csv_reader:
event_date = event[0]
event_date = event["datum"]
event_date_parsed = datetime.strptime(event_date, "%d-%m-%Y").date()
event_time = event[1]
event_location = event[2]
event_title = event[3]
types = event[4].split()
try:
link = event[5]
except IndexError:
link = ""
event_time = event["vreme"]
event_location = event["lokacija"]
event_title = event["tema"]
types = event["tip"].split()
link = event.get("link", "")
current_event = {"date":event_date_parsed,
"time":event_time,
"location": event_location,
@@ -43,6 +39,7 @@ def load_events(csv_path:str) -> list[dict]:
events.append(current_event)
return events
def build_html(events: list[dict], dayNames: list[str], typesNames: dict) -> str:
events_html = []
for event in events:
@@ -59,7 +56,7 @@ def build_html(events: list[dict], dayNames: list[str], typesNames: dict) -> str
event_html.append(f"<div class='title'>{title}</div>")
if "https://" in location:
place,link = location.split("https://")
event_html.append(f"<div class='place'><a href=\"https://{link}\">@{place.strip()}</a></div>")
event_html.append(f"<div class='place'><a href=\"https://{link}\" target='_blank'>@{place.strip()}</a></div>")
else:
event_html.append(f"<div class='place'>@{location.strip()}</div>")

View File

@@ -2,3 +2,5 @@ cairosvg
markdown
freetype-py
python-dateutil
feedgen
pillow

View File

@@ -1,11 +1,20 @@
<!DOCTYPE html>
<!doctype html>
<html lang="sr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<head>
<script>
(function () {
const theme = localStorage.getItem("theme");
const prefersDark = window.matchMedia(
"(prefers-color-scheme: dark)",
).matches;
if (theme === "dark" || (!theme && prefersDark))
document.documentElement.classList.add("dark");
})();
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!--
<pre>
<!-- <pre>
*@@*
*@@@@*
@@ -27,25 +36,28 @@
| |_| | |__| |___| |___| |\ | | | | _ < / ___ \| |___ / ___ \
|____/|_____\____|_____|_| \_| |_| |_| \_\/_/ \_\_____/_/ \_\
</pre>
-->
</pre> -->
<link rel="stylesheet" href="/styles/reset.css">
<link rel="stylesheet" href="/styles/style.css">
<link rel="stylesheet" href="/styles/deconference.css">
<link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon">
<script src="/scripts/main.js" defer></script>
<title>Dekonferencija Decentrala</title>
<link rel="alternate" hreflang="en" href="/en/deconference" />
</head>
<body>
<header>
<a id="logo" href="/"><img src="/img/logo-light.svg" alt="Logo"> Decentrala</a>
<button id="theme-switcher"></button>
<a class="lang" hreflang="en" href="/en/deconference">EN</a>
</header>
<main>
<div class='cover-wrap'><img src='/img/students_bug.jpg' alt='Studenti su nasli bug' /></div><h1>Dekonferencija</h1>
<link rel="stylesheet" href="/styles/reset.css" />
<link rel="stylesheet" href="/styles/style.css" />
<link rel="stylesheet" href="/styles/deconference.css">
<link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon" />
<script src="/scripts/main.js" defer></script>
<title>Dekonferencija Decentrala</title>
<link rel="alternate" hreflang="en" href="/en/deconference" />
</head>
<body>
<header>
<a id="logo" href="/">
<img src="/img/logo-light.svg" alt="Logo" />
Decentrala
</a>
<button id="theme-switcher"></button>
<a class="lang" hreflang="en" href="/en/deconference">EN</a>
</header>
<main>
<div class="page-wrap">
<div class='cover-wrap'><img src='/img/students_bug.jpg' alt='Studenti su nasli bug' /></div><h1>Dekonferencija</h1>
<h2 id="program"><a href="#program">Program</a></h2>
<p>11:00 Otvaranje<p>
@@ -81,23 +93,34 @@
<p>Decentrala prihvata donacije isključivo od fizičkih lica.</p>
</main>
<footer>
<button id="sections-button" opened="false"><img src="/img/strelica-closed-light.svg" alt="OpenMenu"></button>
<nav>
<a href="/events">Događaji</a>
<a href="/services">Servisi</a>
<a href="/statute">Statut</a>
<a href="/about">O nama</>
<a class="account" href="/account">Nalog</a>
<a href="/support">Podrška</a>
</nav>
<span class="links">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><img src="/img/cc-light.svg" alt="CreativeCommons"></a>
<a href="/webring"><img src="/img/w-light.svg" alt="Webring"></a>
<a href="https://gitea.dmz.rs/Decentrala/website"><img src="/img/git-light.svg" alt="SourceCode"></a>
<a href="https://balkan.fedive.rs/@decentrala"><img src="/img/mastodon-light.svg" alt="Mastodon"></a>
</span>
</footer>
</body>
</div>
</main>
<footer>
<button class="hamburger closed">
<img src="/img/strelica-closed-light.svg" alt="Menu" />
</button>
<nav class="menu">
<a href="/events">Događaji</a>
<a href="/services">Servisi</a>
<a href="/statute">Statut</a>
<a href="/about">O nama</a>
<a class="account" href="/account">Nalog</a>
<a href="/support">Podrška</a>
</nav>
<span class="links">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
<img src="/img/cc-light.svg" alt="CreativeCommons" />
</a>
<a href="/webring">
<img src="/img/w-light.svg" alt="Webring" />
</a>
<a href="https://gitea.dmz.rs/Decentrala/website">
<img src="/img/git-light.svg" alt="SourceCode" />
</a>
<a href="https://balkan.fedive.rs/@decentrala">
<img src="/img/mastodon-light.svg" alt="Mastodon" />
</a>
</span>
</footer>
</body>
</html>

View File

@@ -1,207 +1,275 @@
<!DOCTYPE html>
<!doctype html>
<html lang="sr">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="UTF-8">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="UTF-8" />
<title>Linux Install Fest 2025</title>
<style>
@font-face {
font-family: "Iosevka";
src: url('/font/iosevka-regular.woff') format('woff');
}
@font-face {
font-family: "Iosevka";
src: url("/font/iosevka-regular.woff") format("woff");
}
@font-face {
font-family: "Lobster";
src: url('/font/Lobster-Regular.ttf') format('truetype');
}
@font-face {
font-family: "Lobster";
src: url("/font/Lobster-Regular.ttf") format("truetype");
}
body {
background-color: #082142;
color: #FFF;
body {
background-color: #082142;
color: #fff;
}
main {
padding: 1rem;
margin: 0 auto;
max-width: 1000px;
font-family: "Iosevka", Arial, Helvetica, sans-serif;
}
a,
a:visited,
a:hover {
color: #fff;
}
h1 {
font-family: "Lobster", sans-serif;
font-size: 5rem;
text-align: center;
}
h2 {
font-family: "Lobster", sans-serif;
font-size: 2rem;
}
p {
font-size: 1.1rem;
}
@media (max-width: 650px) {
h1 {
font-size: 4rem;
}
main {
padding: 1rem;
margin: 0 auto;
max-width: 1000px;
font-family: "Iosevka", Arial, Helvetica, sans-serif;
padding: 0.5rem;
}
}
a,
a:visited,
a:hover {
color: #FFF;
@media (max-width: 500px) {
main {
padding: 0.2rem;
}
h1 {
font-family: "Lobster", sans-serif;
font-size: 5rem;
text-align: center;
font-size: 3rem;
}
h2 {
font-family: "Lobster", sans-serif;
font-size: 2rem;
}
p {
font-size: 1.1rem;
}
@media (max-width: 650px) {
h1 {
font-size: 4rem;
}
main {
padding: 0.5rem;
}
}
@media (max-width: 500px) {
main {
padding: 0.2rem;
}
h1 {
font-size: 3rem;
}
h2 {
font-size: 1.5rem;
}
font-size: 1.5rem;
}
}
</style>
</head>
</head>
<body>
<body>
<main>
<h1>Linux Install Fest</h1>
<h1>Linux Install Fest</h1>
<h2>Gde i kad</h2>
<h2>Gde i kad</h2>
<p>Linux Install Fest će se održati 9. decembra 2025 godine u učionici JAG3 Matematičkog fakulteta, na adresi
<a href="https://www.openstreetmap.org/node/3807078606">Jagićeva 5, Beograd</a>. Ulazak u učionicu је moguć od 18h do 21h.</p>
<p>
Linux Install Fest će se održati 9. decembra 2025 godine u učionici JAG3
Matematičkog fakulteta, na adresi
<a href="https://www.openstreetmap.org/node/3807078606"
>Jagićeva 5, Beograd</a
>. Ulazak u učionicu је moguć od 18h do 21h.
</p>
<p>Jagićeva ulica se nalazi između stanice <a href="https://www.openstreetmap.org/node/6670711291"><em>Pijaca
Đeram</em></a> na kojoj staju tramvaji 5, 6, 7L
i 14, i
stanice <a href="https://www.openstreetmap.org/node/1693535022"><em>Crveni krst</em></a> na kojoj staju
autobusi 21 i 83, kao i trolebusi 19, 22 i 29.</p>
<p>
Jagićeva ulica se nalazi između stanice
<a href="https://www.openstreetmap.org/node/6670711291"
><em>Pijaca Đeram</em></a
>
na kojoj staju tramvaji 5, 6, 7L i 14, i stanice
<a href="https://www.openstreetmap.org/node/1693535022"
><em>Crveni krst</em></a
>
na kojoj staju autobusi 21 i 83, kao i trolebusi 19, 22 i 29.
</p>
<h2>Plan programa</h2>
<h2>Plan programa</h2>
<p>Cilj okupljanja je da zainteresovanima za Linux pomognemo pri instalaciji Linux operativnog sistema na
laptopove. Na događaju će biti prisutno više osoba koje imaju višegodišnje iskustvo u radu sa Linuxom. Pored
toga, u zavisnosti od zainteresovanosti prisutnih, mogu se održati i kratke obuke vezane za komandnu liniju,
git, web servise, C programiranje, itd...</p>
<p>
Cilj okupljanja je da zainteresovanima za Linux pomognemo pri
instalaciji Linux operativnog sistema na laptopove. Na događaju će biti
prisutno više osoba koje imaju višegodišnje iskustvo u radu sa Linuxom.
Pored toga, u zavisnosti od zainteresovanosti prisutnih, mogu se održati
i kratke obuke vezane za komandnu liniju, git, web servise, C
programiranje, itd...
</p>
<p>Nakon 21h, druženje možemo nastaviti u nekom od obližnjih lokala.</p>
<p>Nakon 21h, druženje možemo nastaviti u nekom od obližnjih lokala.</p>
<h2>Linux distribucije</h2>
<h2>Linux distribucije</h2>
<p>Linux je jezgro operativnog sistema, na koji se instaliraju drugi programi. Sve to zajedno čini određenu
<em>Linux distribuciju</em>. Postoji mnogo distribucija, ali mi preporučujemo one sa dugom tradicijom poput
sledećih:
</p>
<p>
Linux je jezgro operativnog sistema, na koji se instaliraju drugi
programi. Sve to zajedno čini određenu <em>Linux distribuciju</em>.
Postoji mnogo distribucija, ali mi preporučujemo one sa dugom tradicijom
poput sledećih:
</p>
<ul>
<li><strong>Debian</strong> distribucija je verovatno najprimerenija za Linux početnike. Poznati derivati
Debiana su <strong>Ubuntu</strong>, <strong>Mint</strong> i <strong>Zorin</strong>.
</li>
<li><strong>Fedora</strong> je takođe pogodna za Linux početnike. Razlikuje se od Debian
distribucije, po bržem izlasku novih verzija, što u praksi znači da korisnici imaju svežije
verzije programa.</li>
<li><strong>Arch</strong> je Linux distribucija koja dozvoljava korisniku da lako konfiguriše sve delove
sistema. Ova distribucija je namenjena osobama sa značajnim Linux iskustvom.</li>
</ul>
<ul>
<li>
<strong>Debian</strong> distribucija je verovatno najprimerenija za
Linux početnike. Poznati derivati Debiana su <strong>Ubuntu</strong>,
<strong>Mint</strong> i <strong>Zorin</strong>.
</li>
<li>
<strong>Fedora</strong> je takođe pogodna za Linux početnike.
Razlikuje se od Debian distribucije, po bržem izlasku novih verzija,
što u praksi znači da korisnici imaju svežije verzije programa.
</li>
<li>
<strong>Arch</strong> je Linux distribucija koja dozvoljava korisniku
da lako konfiguriše sve delove sistema. Ova distribucija je namenjena
osobama sa značajnim Linux iskustvom.
</li>
</ul>
<p>Ako ste početnik, i niste se odlučili koju distribuciju želite da instalirate, preporučujemo vam Fedoru ili Debian.
Bez obzira koju distribuciju posedujete, moći ćete da pokrenete sve programe namenjene za Linux.
</p>
<p>
Ako ste početnik, i niste se odlučili koju distribuciju želite da
instalirate, preporučujemo vam Fedoru ili Debian. Bez obzira koju
distribuciju posedujete, moći ćete da pokrenete sve programe namenjene
za Linux.
</p>
<h2>End of 10</h2>
<h2>End of 10</h2>
<p>Ovogodišnji Linux Install Fest, organizuje se u sklopu globalne <a href="https://endof10.org/">End of 10</a>
kampanje, koja promoviše Linux operativni sistem kao zamenu za Windows 10.</p>
<p>
Ovogodišnji Linux Install Fest, organizuje se u sklopu globalne
<a href="https://endof10.org/">End of 10</a> kampanje, koja promoviše
Linux operativni sistem kao zamenu za Windows 10.
</p>
<p>Već duže vreme Windows
operativni sistem postaje sve više neprijateljski prema korisnicima. Nasuprot tome,
mnoge Linux distribucije su maksimalno unapredile korisnički doživljaj, te danas
možemo tvrditi da Linux omogućava značajno ugodniji rad, bez obzira na korisnikovo tehničko znanje.</p>
<p>
Već duže vreme Windows operativni sistem postaje sve više neprijateljski
prema korisnicima. Nasuprot tome, mnoge Linux distribucije su maksimalno
unapredile korisnički doživljaj, te danas možemo tvrditi da Linux
omogućava značajno ugodniji rad, bez obzira na korisnikovo tehničko
znanje.
</p>
<p>Windows nameće korisnicima funkcionalnosti koje korisnici ne žele da koriste, kao što
su: cloud integracije, AI, reklame, obavezni nalozi, i slično. Ove
funkcionalnosti služe pre svega za povećanje Microsoftovog profita, a nemaju benefita za većinu krajnjih
korisnika. Takođe, osnovni programi poput kalendara, kalkulatora ili editora teksta, postali su spori
i puni bug-ova.
Sa beskorisnim funkcionalnostima, Windows svake godine postaje sve više zahtevan i
iziskuje kupovinu boljeg hardvera, što dovodi do povećanja elektronskog otpada. Nasuprot Windowsu, i
najnovije Linux distribucije rade veoma performantno na računarima starijim od deceniju.</p>
<p>
Windows nameće korisnicima funkcionalnosti koje korisnici ne žele da
koriste, kao što su: cloud integracije, AI, reklame, obavezni nalozi, i
slično. Ove funkcionalnosti služe pre svega za povećanje Microsoftovog
profita, a nemaju benefita za većinu krajnjih korisnika. Takođe, osnovni
programi poput kalendara, kalkulatora ili editora teksta, postali su
spori i puni bug-ova. Sa beskorisnim funkcionalnostima, Windows svake
godine postaje sve više zahtevan i iziskuje kupovinu boljeg hardvera,
što dovodi do povećanja elektronskog otpada. Nasuprot Windowsu, i
najnovije Linux distribucije rade veoma performantno na računarima
starijim od deceniju.
</p>
<p>Izbor operativnog sistema nije više samo tehnička odluka, već i ekološki stav.</p>
<p>
Izbor operativnog sistema nije više samo tehnička odluka, već i ekološki
stav.
</p>
<h2>Načini instalacije</h2>
<h2>Načini instalacije</h2>
<p>Linux možemo instalirati na tri načina:</p>
<p>Linux možemo instalirati na tri načina:</p>
<ol>
<li><strong>Unutar virtualne mašine na Windows-u</strong>. Na ovaj način korisnik zadržava svoj postojeći
operativni sistem i
podatke na njemu. Linux u virtualnoj mašini će biti značajno sporiji u odnosu na instalaciju bez
virtualizacije.
</li>
<li><strong>Pored postojećeg operativnog sistema</strong>. U slučaju da je moguće neku od vaših
particija umanjiti
(<em>partition shrink</em>), i osloboditi barem 10GB prostora, može se instalirati Linux operativni
sistem pored Windows-a. Prilikom pokretanja računara, korisnik će moći da bira da li želi da pokrene
Windows ili Linux. Pri ovakvoj instalaciji postoji određeni rizik da će neko od narednih ažuriranja
Windowsa resetovati podešavanja bootloader-a, nakon čega je potrebna mala intervencija da bi
Linux sistem bio ponovo dostupan.</li>
<ol>
<li>
<strong>Unutar virtualne mašine na Windows-u</strong>. Na ovaj način
korisnik zadržava svoj postojeći operativni sistem i podatke na njemu.
Linux u virtualnoj mašini će biti značajno sporiji u odnosu na
instalaciju bez virtualizacije.
</li>
<li>
<strong>Pored postojećeg operativnog sistema</strong>. U slučaju da je
moguće neku od vaših particija umanjiti (<em>partition shrink</em>), i
osloboditi barem 10GB prostora, može se instalirati Linux operativni
sistem pored Windows-a. Prilikom pokretanja računara, korisnik će moći
da bira da li želi da pokrene Windows ili Linux. Pri ovakvoj
instalaciji postoji određeni rizik da će neko od narednih ažuriranja
Windowsa resetovati podešavanja bootloader-a, nakon čega je potrebna
mala intervencija da bi Linux sistem bio ponovo dostupan.
</li>
<li><strong>Kompletnim uklanjanjem Windows sistema</strong>. Na mestu Windows particije,
biće postavljena nova particija sa Linux distribucijom. Dodatne particije koje postoje mogu, i ne moraju biti uklonjene.</li>
</ol>
<li>
<strong>Kompletnim uklanjanjem Windows sistema</strong>. Na mestu
Windows particije, biće postavljena nova particija sa Linux
distribucijom. Dodatne particije koje postoje mogu, i ne moraju biti
uklonjene.
</li>
</ol>
<h2>Pre dolaska</h2>
<h2>Pre dolaska</h2>
<p>Da bi instalacija bila efikasna, pre dolaska na Linux Instal Fest neophodno je da napravite <em>backup</em>
podataka sa sistemske particije ako se odlučujete za drugu ili treću opciju instalacije. Ako posedujete dve
particije (na primer, C i D), podatke sa sistemske particije (C:) koje želite da zadržite prebacite na nesistemsku particiju (D:).
Ako nemate dodatnu particiju, možete iskoristiti USB fleš. Obratite pažnju na datoteke unutar korisničkog direkotrijuma (<em>Desktop,
Downloads, Documents,...</em>), a iz pretraživača izvezite bookmarkove i lozinke.</p>
<p>
Da bi instalacija bila efikasna, pre dolaska na Linux Instal Fest
neophodno je da napravite <em>backup</em> podataka sa sistemske
particije ako se odlučujete za drugu ili treću opciju instalacije. Ako
posedujete dve particije (na primer, C i D), podatke sa sistemske
particije (C:) koje želite da zadržite prebacite na nesistemsku
particiju (D:). Ako nemate dodatnu particiju, možete iskoristiti USB
fleš. Obratite pažnju na datoteke unutar korisničkog direkotrijuma (<em
>Desktop, Downloads, Documents,...</em
>), a iz pretraživača izvezite bookmarkove i lozinke.
</p>
<p>Takođe, pre dolaska možete se upoznati sa izgledom i načinom funkcionisanja različitih Linux distubucija.
Neke Linux distribucije možete probati kroz pretraživač, bez bilo kakve instalacije, na sajtu
<a href="https://distrosea.com/">DistroSea</a> (ponekad je potrebno sačekati kratko vreme da se oslobode
resursi na sajtu). Imajte na umu da je operativni sistem na ovom sajtu višestruko sporiji od sistema koji je
instaliran na vašem računaru.
</p>
<p>
Takođe, pre dolaska možete se upoznati sa izgledom i načinom
funkcionisanja različitih Linux distubucija. Neke Linux distribucije
možete probati kroz pretraživač, bez bilo kakve instalacije, na sajtu
<a href="https://distrosea.com/">DistroSea</a> (ponekad je potrebno
sačekati kratko vreme da se oslobode resursi na sajtu). Imajte na umu da
je operativni sistem na ovom sajtu višestruko sporiji od sistema koji je
instaliran na vašem računaru.
</p>
<p>Pre dolaska napunite baterije loptopova. Obevezno ponesite i punjač.</p>
<p>
Pre dolaska napunite baterije loptopova. Obevezno ponesite i punjač.
</p>
<h2>Organizator</h2>
<h2>Organizator</h2>
<p>Organizator događaja je <a href="https://dmz.rs/">Decentrala</a> - grupa entuzijasta okupljena oko ideja
decentralizacije i slobodnog širenja znanja. Do sada smo organizovali više od <a
href="https://dmz.rs/events_archive">300 događaja</a>, a naredne događaje redovno najavljujemo na
stranici <a href="https://dmz.rs/events">Događaji</a>.
</p>
<p>
Organizator događaja je <a href="https://dmz.rs/">Decentrala</a> - grupa
entuzijasta okupljena oko ideja decentralizacije i slobodnog širenja
znanja. Do sada smo organizovali više od
<a href="https://dmz.rs/events_archive">300 događaja</a>, a naredne
događaje redovno najavljujemo na stranici
<a href="https://dmz.rs/events">Događaji</a>.
</p>
<p>U narednom periodu, na istoj lokaciji (učionica JAG3) biće održano još dva događaja za Linux početnike:</p>
<ul>
<li><strong>Utorak 16. decembar</strong> - Uvod u Linux komandnu liniju</li>
<li><strong>Utorak 23. decembar</strong> - Uvod u Git</li>
</ul>
<p>Događaji počinju od 18h.</p>
<h2>Ponovo</h2>
<p>Na Linux install fest možete doneti neispravne uređje: laptopove, telefone, desktop računare, monitore....
Mi ćemo ih tokom januara isporočuiti organizaciji <a href="https://ponovo.rs/">Ponovo</a> u Kikindi.
Ova organizacija će popraviti ove uređaje i time sprečiti uvećavanje elektronskog otpada.</p>
<p>
U narednom periodu, na istoj lokaciji (učionica JAG3) biće održano još
dva događaja za Linux početnike:
</p>
<ul>
<li>
<strong>Utorak 16. decembar</strong> - Uvod u Linux komandnu liniju
</li>
<li><strong>Utorak 23. decembar</strong> - Uvod u Git</li>
</ul>
<p>Događaji počinju od 18h.</p>
<h2>Ponovo</h2>
<p>
Na Linux install fest možete doneti neispravne uređje: laptopove,
telefone, desktop računare, monitore.... Mi ćemo ih tokom januara
isporočuiti organizaciji <a href="https://ponovo.rs/">Ponovo</a> u
Kikindi. Ova organizacija će popraviti ove uređaje i time sprečiti
uvećavanje elektronskog otpada.
</p>
</main>
</body>
</body>
</html>
</html>

View File

@@ -1,157 +1,275 @@
<!DOCTYPE html>
<!doctype html>
<html lang="sr">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="UTF-8">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="UTF-8" />
<title>Linux Install Fest 2025</title>
<style>
@font-face {
font-family: "Iosevka";
src: url('/font/iosevka-regular.woff') format('woff');
}
@font-face {
font-family: "Iosevka";
src: url("/font/iosevka-regular.woff") format("woff");
}
@font-face {
font-family: "Lobster";
src: url('/font/Lobster-Regular.ttf') format('truetype');
}
@font-face {
font-family: "Lobster";
src: url("/font/Lobster-Regular.ttf") format("truetype");
}
body {
background-color: #082142;
color: #FFF;
body {
background-color: #082142;
color: #fff;
}
main {
padding: 1rem;
margin: 0 auto;
max-width: 1000px;
font-family: "Iosevka", Arial, Helvetica, sans-serif;
}
a,
a:visited,
a:hover {
color: #fff;
}
h1 {
font-family: "Lobster", sans-serif;
font-size: 5rem;
text-align: center;
}
h2 {
font-family: "Lobster", sans-serif;
font-size: 2rem;
}
p {
font-size: 1.1rem;
}
@media (max-width: 650px) {
h1 {
font-size: 4rem;
}
main {
padding: 1rem;
margin: 0 auto;
max-width: 1000px;
font-family: "Iosevka", Arial, Helvetica, sans-serif;
padding: 0.5rem;
}
}
a,
a:visited,
a:hover {
color: #FFF;
@media (max-width: 500px) {
main {
padding: 0.2rem;
}
h1 {
font-family: "Lobster", sans-serif;
font-size: 5rem;
text-align: center;
font-size: 3rem;
}
h2 {
font-family: "Lobster", sans-serif;
font-size: 2rem;
}
p {
font-size: 1.1rem;
}
@media (max-width: 650px) {
h1 {
font-size: 4rem;
}
main {
padding: 0.5rem;
}
}
@media (max-width: 500px) {
main {
padding: 0.2rem;
}
h1 {
font-size: 3rem;
}
h2 {
font-size: 1.5rem;
}
font-size: 1.5rem;
}
}
</style>
</head>
</head>
<body>
<body>
<main>
<h1>Linux Install Fest</h1>
<h1>Linux Install Fest</h1>
<h2>Where and when</h2>
<h2>Where and when</h2>
<p>Linux Install Fest will be held on December 9, 2025 in the JAG3 classroom of the Faculty of Mathematics, at
<a href="https://www.openstreetmap.org/node/3807078606">Jagićeva 5, Belgrade</a>. Entry to the classroom is possible from 6 pm to 9 pm.</p>
<p>
Linux Install Fest will be held on December 9, 2025 in the JAG3
classroom of the Faculty of Mathematics, at
<a href="https://www.openstreetmap.org/node/3807078606"
>Jagićeva 5, Belgrade</a
>. Entry to the classroom is possible from 6 pm to 9 pm.
</p>
<p>Jagićeva street is located between the <a href="https://www.openstreetmap.org/node/6670711291"><em>Pijaca
Đeram</em></a> station where trams 5, 6, 7L and 14 stop, and the <a href="https://www.openstreetmap.org/node/1693535022"><em>Crveni krst</em></a> station where buses 21 and 83 stop, as well as trolleybuses 19, 22 and 29.</p>
<p>
Jagićeva street is located between the
<a href="https://www.openstreetmap.org/node/6670711291"
><em>Pijaca Đeram</em></a
>
station where trams 5, 6, 7L and 14 stop, and the
<a href="https://www.openstreetmap.org/node/1693535022"
><em>Crveni krst</em></a
>
station where buses 21 and 83 stop, as well as trolleybuses 19, 22 and
29.
</p>
<h2>Program schedule</h2>
<h2>Program schedule</h2>
<p>The goal of the gathering is to help interested install the Linux operating system on laptops. Several people with working Linux experience will be present at the event. In addition, depending on the interest of those present, short trainings related to the command line, git, web services, C programming, etc. can be held.</p>
<p>
The goal of the gathering is to help interested install the Linux
operating system on laptops. Several people with working Linux
experience will be present at the event. In addition, depending on the
interest of those present, short trainings related to the command line,
git, web services, C programming, etc. can be held.
</p>
<p>After 9 p.m., we can continue socializing in one of the nearby bars.</p>
<p>
After 9 p.m., we can continue socializing in one of the nearby bars.
</p>
<h2>Linux distributions</h2>
<h2>Linux distributions</h2>
<p>Linux is the core of the operating system, on which other programs are installed. All of these together make up a particular <em>Linux distribution</em>. There are many distributions, but we recommend the ones with a long tradition like the following:
</p>
<p>
Linux is the core of the operating system, on which other programs are
installed. All of these together make up a particular
<em>Linux distribution</em>. There are many distributions, but we
recommend the ones with a long tradition like the following:
</p>
<ul>
<li><strong>The Debian</strong> distribution is probably the most suitable for Linux beginners. Known derivatives of Debian are Ubuntu, Mint and Zorin.</li>
<li><strong>Fedora</strong> is also suitable for Linux beginners. It differs from the Debian distribution by the faster release of new versions, which in practice means that users have newer versions of the program.</li>
<li><strong>Arch</strong> is a Linux distribution that allows the user to easily configure all parts of the system. This distribution is intended for people with significant Linux experience.</li>
</ul>
<ul>
<li>
<strong>The Debian</strong> distribution is probably the most suitable
for Linux beginners. Known derivatives of Debian are Ubuntu, Mint and
Zorin.
</li>
<li>
<strong>Fedora</strong> is also suitable for Linux beginners. It
differs from the Debian distribution by the faster release of new
versions, which in practice means that users have newer versions of
the program.
</li>
<li>
<strong>Arch</strong> is a Linux distribution that allows the user to
easily configure all parts of the system. This distribution is
intended for people with significant Linux experience.
</li>
</ul>
<p>If you are a beginner and haven't decided which distribution you want to install, we recommend Fedora or Debian. Regardless of which distribution you have, you will be able to run all programs intended for Linux.</p>
<p>
If you are a beginner and haven't decided which distribution you want to
install, we recommend Fedora or Debian. Regardless of which distribution
you have, you will be able to run all programs intended for Linux.
</p>
<h2>End of 10</h2>
<h2>End of 10</h2>
<p>This year's Linux Install Fest is organized as part of the global <a href="https://endof10.org/">End of 10</a>
campaign, which promotes the Linux operating system as a replacement for Windows 10.</p>
<p>
This year's Linux Install Fest is organized as part of the global
<a href="https://endof10.org/">End of 10</a> campaign, which promotes
the Linux operating system as a replacement for Windows 10.
</p>
<p>For a long time now, the Windows operating system has become increasingly unfriendly to users. On the contrary, many Linux distributions have improved the user experience to the maximum, and today we can claim that Linux enables significantly more pleasant work, regardless of the user's technical knowledge.</p>
<p>
For a long time now, the Windows operating system has become
increasingly unfriendly to users. On the contrary, many Linux
distributions have improved the user experience to the maximum, and
today we can claim that Linux enables significantly more pleasant work,
regardless of the user's technical knowledge.
</p>
<p>Windows imposes on users functionalities that users do not want to use, such as: cloud integrations, AI, advertisements, mandatory accounts, and the like. These functionalities serve above all to increase Microsoft's profits, and have no benefit for most end users. Also, basic programs such as calendars, calculators or text editors have become slow and full of bugs. With useless functionalities, Windows becomes more demanding every year and requires the purchase of better hardware, leading to an increase in electronic waste. Unlike Windows, the latest Linux distributions work very well on computers that are more than a decade old.</p>
<p>
Windows imposes on users functionalities that users do not want to use,
such as: cloud integrations, AI, advertisements, mandatory accounts, and
the like. These functionalities serve above all to increase Microsoft's
profits, and have no benefit for most end users. Also, basic programs
such as calendars, calculators or text editors have become slow and full
of bugs. With useless functionalities, Windows becomes more demanding
every year and requires the purchase of better hardware, leading to an
increase in electronic waste. Unlike Windows, the latest Linux
distributions work very well on computers that are more than a decade
old.
</p>
<p>The choice of an operating system is no longer just a technical decision, but also an environmental attitude.</p>
<p>
The choice of an operating system is no longer just a technical
decision, but also an environmental attitude.
</p>
<h2>Installation methods</h2>
<h2>Installation methods</h2>
<p>We can install Linux in three ways:</p>
<p>We can install Linux in three ways:</p>
<ol>
<li><strong>Inside a virtual machine on Windows.</strong> In this way, the user retains his existing operating system and the data on it. Linux in a virtual machine will be significantly slower than an installation without virtualization.
</li>
<li><strong>In addition to the existing operating system.</strong> If it is possible to shrink one of your partitions and free up at least 10GB of space, you can install a Linux operating system in addition to Windows. When booting the computer, the user will be able to choose whether to boot Windows or Linux. With such an installation, there is a certain risk that one of the subsequent Windows updates will reset the bootloader settings, after which a small intervention is required to make the Linux system accessible again.</li>
<li><strong>By completely removing the Windows system.</strong> In place of the Windows partition, a new partition with the Linux distribution will be placed. Additional partitions that exist may or may not be removed.</li>
</ol>
<ol>
<li>
<strong>Inside a virtual machine on Windows.</strong> In this way, the
user retains his existing operating system and the data on it. Linux
in a virtual machine will be significantly slower than an installation
without virtualization.
</li>
<li>
<strong>In addition to the existing operating system.</strong> If it
is possible to shrink one of your partitions and free up at least 10GB
of space, you can install a Linux operating system in addition to
Windows. When booting the computer, the user will be able to choose
whether to boot Windows or Linux. With such an installation, there is
a certain risk that one of the subsequent Windows updates will reset
the bootloader settings, after which a small intervention is required
to make the Linux system accessible again.
</li>
<li>
<strong>By completely removing the Windows system.</strong> In place
of the Windows partition, a new partition with the Linux distribution
will be placed. Additional partitions that exist may or may not be
removed.
</li>
</ol>
<h2>Before arrival</h2>
<h2>Before arrival</h2>
<p>In order for the installation to be effective, before coming to the Linux Instal Fest, it is necessary to make a backup of the data from the system partition if you decide on the second or third installation option. If you have two partitions (for example, C and D), move the data from the system partition (C:) that you want to keep to the non-system partition (D:). If you don't have an additional partition, you can use a USB flash drive. Pay attention to the files inside the user directory (Desktop, Downloads, Documents,... ), and export bookmarks and passwords from the browser.</p>
<p>
In order for the installation to be effective, before coming to the
Linux Instal Fest, it is necessary to make a backup of the data from the
system partition if you decide on the second or third installation
option. If you have two partitions (for example, C and D), move the data
from the system partition (C:) that you want to keep to the non-system
partition (D:). If you don't have an additional partition, you can use a
USB flash drive. Pay attention to the files inside the user directory
(Desktop, Downloads, Documents,... ), and export bookmarks and passwords
from the browser.
</p>
<p>Also, before your arrival, you can familiarize yourself with the appearance and way of functioning of various Linux distributions. You can try some Linux distributions through the browser, without any installation, on the
<a href="https://distrosea.com/">DistroSea</a> website (sometimes it is necessary to wait a short time to free up resources on the site). Please note that the operating system on this site is many times slower than the system installed on your computer.
</p>
<p>
Also, before your arrival, you can familiarize yourself with the
appearance and way of functioning of various Linux distributions. You
can try some Linux distributions through the browser, without any
installation, on the
<a href="https://distrosea.com/">DistroSea</a> website (sometimes it is
necessary to wait a short time to free up resources on the site). Please
note that the operating system on this site is many times slower than
the system installed on your computer.
</p>
<h2>Organizer</h2>
<h2>Organizer</h2>
<p>The organizer of the event is <a href="https://dmz.rs/en/">Decentrala</a> - a group of enthusiasts gathered around the ideas of decentralization and free dissemination of knowledge. So far, we have organized more than <a
href="https://dmz.rs/en/events_archive">300 events</a>, and we regularly announce the next events on the <a href="https://dmz.rs/en/events">Events</a> page.
</p>
<p>
The organizer of the event is
<a href="https://dmz.rs/en/">Decentrala</a> - a group of enthusiasts
gathered around the ideas of decentralization and free dissemination of
knowledge. So far, we have organized more than
<a href="https://dmz.rs/en/events_archive">300 events</a>, and we
regularly announce the next events on the
<a href="https://dmz.rs/en/events">Events</a> page.
</p>
<p>In the following period, two more events for Linux beginners will be held at the same location (classroom JAG3):</p>
<ul>
<li><strong>Tuesday December 16</strong> - Introduction to the Linux command line</li>
<li><strong>Tuesday, December 23</strong> - Introduction to Git</li>
</ul>
<p>Events start at 6pm.</p>
<p>
In the following period, two more events for Linux beginners will be
held at the same location (classroom JAG3):
</p>
<ul>
<li>
<strong>Tuesday December 16</strong> - Introduction to the Linux
command line
</li>
<li><strong>Tuesday, December 23</strong> - Introduction to Git</li>
</ul>
<p>Events start at 6pm.</p>
<h2>Ponovo</h2>
<p>You can bring defective devices to the Linux install fest: laptops, phones, desktop computers, monitors... We will deliver them to the organization <a href="https://ponovo.rs/">Ponovo</a> in Kikinda during January. This organization will repair these devices and thereby prevent the increase of electronic waste.</p>
<h2>Ponovo</h2>
<p>
You can bring defective devices to the Linux install fest: laptops,
phones, desktop computers, monitors... We will deliver them to the
organization <a href="https://ponovo.rs/">Ponovo</a> in Kikinda during
January. This organization will repair these devices and thereby prevent
the increase of electronic waste.
</p>
</main>
</body>
</body>
</html>
</html>

View File

@@ -1,94 +1,62 @@
const theme_switcher = document.getElementById("theme-switcher");
const imgs = document.getElementsByTagName("img");
const sections_button = document.getElementById("sections-button");
const sections_menu = document.getElementsByTagName("nav")[0];
const main = document.getElementsByTagName("main")[0];
window.addEventListener("DOMContentLoaded", () => {
let theme = window.localStorage.getItem("theme");
const getById = (id) => document.getElementById(id);
const getByClass = (className) => document.getElementsByClassName(className)[0];
if (theme !== null) {
if (theme === "light") {
changeToLightTheme();
} else {
changeToDarkTheme();
const themeBtn = getById("theme-switcher");
const hamburger = getByClass("hamburger");
const hamburgerIcon = hamburger.children[0]
const menu = document.getElementsByTagName("nav")[0];
const imgs = document.getElementsByTagName("img");
const main = document.getElementsByTagName("main")[0];
const isMenuOpen = () => hamburger.classList.contains("open");
const theme = window.localStorage.getItem("theme");
/* Functions */
const changeToDarkTheme = () => {
document.documentElement.classList.add("dark");
themeBtn?.setAttribute("title", "turn the light on");
Array.from(imgs).forEach((img) => {
if (img.src.includes("-light")) img.src = img.src.replace("-light", "-dark");
});
}
} else {
if (
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches
) {
changeToDarkTheme();
const changeToLightTheme = () => {
document.documentElement.classList.remove("dark");
themeBtn?.setAttribute("title", "turn the light off");
Array.from(imgs).forEach((img) => {
if (img.src.includes("-dark")) img.src = img.src.replace("-dark", "-light");
});
}
}
theme_switcher.addEventListener("click", () => {
const attribute = theme_switcher.getAttribute("title") ?? "off"
if (attribute.indexOf("off") !== -1) {
changeToDarkTheme();
} else {
changeToLightTheme();
const closeMenu = () => {
hamburger.classList = "hamburger closed"
hamburgerIcon.src = hamburgerIcon.src.replace("opened", "closed");
menu.classList = "menu closed";
}
});
function changeToDarkTheme() {
theme_switcher?.setAttribute("title", "turn the light on");
document.documentElement.style.setProperty("--border", "var(--dark-border)");
document.documentElement.style.setProperty("--text", "var(--dark-text)");
document.documentElement.style.setProperty("--bg", "var(--dark-bg)");
window.localStorage.setItem("theme", "dark");
for (let i = 0; i < imgs.length; i += 1) {
imgs[i].src = imgs[i].src.replace("-light", "-dark");
const openMenu = () => {
hamburger.classList = "hamburger open"
hamburgerIcon.src = hamburgerIcon.src.replace("closed", "opened");
menu.classList = "menu open";
}
}
function changeToLightTheme() {
theme_switcher?.setAttribute("title", "turn the light off");
document.documentElement.style.setProperty("--border", "var(--light-border)");
document.documentElement.style.setProperty("--text", "var(--light-text)");
document.documentElement.style.setProperty("--bg", "var(--light-bg)");
window.localStorage.setItem("theme", "light");
for (let i = 0; i < imgs.length; i += 1) {
imgs[i].src = imgs[i].src.replace("-dark", "-light");
}
}
/* Listeners */
function closeMenu() {
sections_button.setAttribute("opened", "false");
sections_button.children[0].src = sections_button.children[0].src.replace(
"opened",
"closed",
);
sections_menu.style.display = "none";
}
window.addEventListener("resize", () => isMenuOpen() && closeMenu());
main.addEventListener("click", () => isMenuOpen() && closeMenu());
hamburger?.addEventListener("click", () => isMenuOpen() ? closeMenu() : openMenu());
function openMenu() {
sections_button.setAttribute("opened", "true");
sections_button.children[0].src = sections_button.children[0].src.replace(
"closed",
"opened",
);
sections_menu.style.display = "flex";
sections_menu.style.flexDirection = "column";
}
sections_button.addEventListener("click", () => {
if (sections_button.getAttribute("opened") === "false") {
openMenu();
} else {
closeMenu();
}
});
window.addEventListener("resize", () => {
if (sections_button.getAttribute("opened") === "true") {
closeMenu();
}
});
main.addEventListener("click", () => {
if (sections_button.getAttribute("opened") === "true") {
closeMenu();
}
});
themeBtn.addEventListener("click", () => {
const title = themeBtn.getAttribute("title") ?? "off"
if (title.indexOf("off") !== -1) changeToDarkTheme();
else changeToLightTheme();
});
/* Rest */
const userPerfersDark = window?.matchMedia?.("(prefers-color-scheme: dark)").matches
if (!theme && userPerfersDark) changeToDarkTheme();
else theme === "light" ? changeToLightTheme() : changeToDarkTheme();
})

View File

@@ -1,12 +1,13 @@
main {
max-width: fit-content;
display: flex;
flex-direction: column;
align-items: center;
gap: 1rem;
margin: 0 auto;
max-width: fit-content;
display: flex;
flex-direction: column;
align-items: center;
gap: 1rem;
margin: 0 auto;
}
main img {
width: min(70vw, 15rem);
}
width: min(70vw, 15rem);
}

View File

@@ -4,8 +4,10 @@ dl {
dt {
font-weight: bold;
margin: 1rem 0;
}
dd {
margin: 0 0 1rem 1rem;
}
margin: 0 0 0.5rem 1rem;
}

View File

@@ -0,0 +1,12 @@
.auth-wrap {
display: flex;
flex-direction: column;
gap: 2px;
padding-top: 24px;
a {
font-size: 18px;
text-transform: uppercase;
letter-spacing: 3px;
font-weight: 600;
}
}

View File

@@ -1,3 +1,4 @@
#mesh {
display: none;
}
}

View File

@@ -8,4 +8,5 @@ dt {
dd {
margin: 0 0 1rem 1rem;
}
}

View File

@@ -1,25 +1,30 @@
.description {
display: flex;
flex-direction: column;
gap: 4px;
margin-bottom: 40px;
}
.event {
display: flex;
flex-direction: row;
}
.event:hover {
border-bottom: 5px var(--hightlight) solid;
}
.event:hover > div {
padding-bottom: calc(0.5rem - 5px);
}
.event > div {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
white-space: nowrap;
&:hover {
border-bottom: 5px var(--hightlight) solid;
& > div {
padding-bottom: calc(0.5rem - 5px);
}
}
& > div {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
white-space: nowrap;
}
}
.date {
width: 250px;
font-size: 0.9em;
width: 220px;
font-size: 0.75em;
overflow-x: hidden;
white-space: nowrap;
}
@@ -27,38 +32,44 @@
.title {
border-left: 2px solid var(--border);
font-weight: bold;
padding-left: 1rem;
padding-left: 2rem;
padding-right: 0.5em;
}
.place {
font-size: 0.9em;
font-size: 0.7em;
opacity: 0.7;
&:before {
content: "-";
margin-right: 12px;
}
}
.types {
font-size: 0.9em;
font-size: 0.8em;
margin-left: auto;
font-style: italic;
letter-spacing: 2px;
font-weight: 900;
opacity: 0.7;
}
@media screen and (max-width: 1160px) {
.event {
flex-direction: column;
margin-bottom: 1rem;
margin-bottom: 2.2rem;
border-left: 3px solid var(--border);
}
.event > div {
padding: 0 0.5rem;
white-space: normal;
}
.event:hover {
border-bottom: none;
}
.event:hover > div {
padding-bottom: 0;
&:hover {
border-bottom: none;
border-left: 3px solid var(--hightlight);
& > div {
padding-bottom: 0;
}
}
& > div {
padding: 0 0.5rem;
white-space: normal;
}
}
.date {
@@ -68,6 +79,9 @@
.title {
border-left: none;
}
.place:before {
display: none;
}
.types {
margin-left: 0;

View File

@@ -8,4 +8,5 @@ dt {
dd {
margin: 0 0 1rem 1rem;
}
}

View File

@@ -1,76 +1,74 @@
html {
}
@font-face {
font-family: Facade;
src: url(../font/Facade-Sud.woff);
}
@font-face {
font-family: jetbrains-mono;
src: url(../font/JetBrainsMono-Regular.ttf);
font-family: Facade;
src: url(../font/Facade-Sud.woff);
}
html, body {
margin: 0;
padding: 0;
@font-face {
font-family: jetbrains-mono;
src: url(../font/JetBrainsMono-Regular.ttf);
}
html,
body {
margin: 0;
padding: 0;
}
main {
max-width: 1200px;
margin: auto;
font-family: 'jetbrains-mono';
padding: 2.3rem;
max-width: 1200px;
margin: auto;
font-family: "jetbrains-mono";
padding: 2.3rem;
}
h1 {
font-family: 'Facade';
text-align: center;
font-size: 5rem;
margin: 0rem;
font-family: "Facade";
text-align: center;
font-size: 5rem;
margin: 0rem;
}
h2 {
text-align: center;
margin-top: 0.0rem;
margin-bottom: 2rem;
font-size: 2rem;
text-align: center;
margin-top: 0rem;
margin-bottom: 2rem;
font-size: 2rem;
}
p {
font-size: 1.5rem;
font-size: 1.5rem;
}
table {
margin: 4rem 0;
margin: 4rem 0;
}
td {
font-size: 1.8rem;
padding-top: 0.5rem;
font-size: 1.8rem;
padding-top: 0.5rem;
}
td:first-child {
width: 3.5rem;
width: 3.5rem;
}
td:nth-child(2) {
padding-right: 1rem;
padding-right: 1rem;
}
#link {
margin-top: 4rem;
font-size: 3rem;
width: fit-content;
float: right;
display: flex;
flex-direction: column;
align-items: center;
margin-top: 4rem;
font-size: 3rem;
width: fit-content;
float: right;
display: flex;
flex-direction: column;
align-items: center;
}
#link img {
width: 4rem;
width: 4rem;
}

View File

@@ -112,7 +112,7 @@ blockquote {
blockquote::before,
blockquote::after {
content: '';
content: "";
content: none;
}
@@ -146,4 +146,5 @@ h5,
h6 {
overflow-wrap: break-word;
hyphens: auto;
}
}

View File

@@ -6,21 +6,19 @@ table {
th,
td {
padding: 0 1rem 0 1rem;
text-align: left;
border-left: 2px solid var(--border);
}
th {
padding: 1rem 1rem 0 1rem;
padding: 1rem;
border-bottom: 2px solid var(--border);
}
td {
padding: 0 1rem 1rem 1rem;
padding: 1rem 1rem 0 1rem;
vertical-align: top;
}
td a {
word-break: keep-all;
a {
word-break: keep-all;
}
}

View File

@@ -8,3 +8,15 @@ h2 {
p {
padding-bottom: 1.5rem;
}
.values {
margin-bottom: 1.5rem;
label {
display: block;
padding-bottom: 1rem;
}
ul > li {
padding-left: 1.5rem;
}
}

View File

@@ -11,9 +11,15 @@
--bg: var(--light-bg);
}
html.dark {
--border: var(--dark-border);
--text: var(--dark-text);
--bg: var(--dark-bg);
}
@font-face {
font-family: "Iosevka";
src: url('/font/iosevka-regular.woff') format('woff');
src: url("/font/iosevka-regular.woff") format("woff");
}
* {
@@ -39,7 +45,7 @@ body {
"footer" 4rem
/ 1fr;
gap: 0;
font-family: 'Iosevka';
font-family: "Iosevka";
}
header,
@@ -65,32 +71,31 @@ main {
padding: 3rem;
font-size: 1.3rem;
line-height: 2rem;
max-width: 120ch;
overflow: auto;
margin: 0 auto;
}
main h1 {
margin-bottom: 2rem;
font-weight: normal;
font-size: 1.5em;
font-variant-caps: small-caps;
.page-wrap {
margin: 0 auto;
max-width: 1152px;
h1 {
margin-bottom: 2rem;
font-weight: normal;
font-size: 1.5em;
font-variant-caps: small-caps;
}
a {
text-decoration: underline;
}
}
}
a,
a:visited {
text-decoration: none;
color: var(--text);
}
main a {
text-decoration: underline;
}
a:hover,
a:focus {
background-color: var(--hightlight);
text-decoration: line-through var(--text);
&:hover,
&:focus {
background-color: var(--hightlight);
text-decoration: line-through var(--text);
}
}
#logo {
@@ -100,10 +105,9 @@ a:focus {
font-size: 2.5rem;
font-weight: bold;
font-variant: small-caps;
}
#logo img {
width: 3rem;
img {
width: 3rem;
}
}
#theme-switcher {
@@ -112,12 +116,24 @@ a:focus {
height: 1.5rem;
border-radius: 3rem;
margin-left: auto;
background: linear-gradient(90deg, var(--border) 0%, var(--border) 50%, var(--bg) 51%, var(--bg) 100%);
background: linear-gradient(
90deg,
var(--border) 0%,
var(--border) 50%,
var(--bg) 51%,
var(--bg) 100%
);
}
#theme-switcher:hover {
border-color: var(--hightlight);
background: linear-gradient(90deg, var(--hightlight) 0%, var(--hightlight) 50%, var(--bg) 51%, var(--bg) 100%);
background: linear-gradient(
90deg,
var(--hightlight) 0%,
var(--hightlight) 50%,
var(--bg) 51%,
var(--bg) 100%
);
}
.lang {
@@ -135,17 +151,15 @@ a:focus {
.links {
display: flex;
gap: 2rem;
& > a {
border-radius: 100%;
& > img {
display: block;
}
}
}
.links>a {
border-radius: 100%;
}
.links>a>img {
display: block;
}
#sections-button {
.hamburger {
display: none;
}
@@ -171,15 +185,14 @@ button {
margin-bottom: 3rem;
}
@media screen and (max-height: 860px),
screen and (max-width: 1500px) {
@media screen and (max-height: 860px), screen and (max-width: 1500px) {
#mesh {
display: none;
}
}
@media screen and (max-width: 1160px) {
nav {
nav.menu {
flex-direction: column;
border: 2px solid var(--border);
border-bottom: 0;
@@ -191,9 +204,13 @@ screen and (max-width: 1500px) {
align-items: center;
padding: 2rem 3rem;
display: none;
&.open {
display: flex;
flex-direction: column;
}
}
#sections-button {
.hamburger {
display: block !important;
}
}
@@ -209,10 +226,10 @@ screen and (max-width: 1500px) {
.links {
gap: 1.2rem;
}
.links a {
width: 1.5rem;
a {
width: 1.5rem;
}
}
header,

View File

@@ -4,11 +4,8 @@ p {
li {
padding-left: 1.5rem;
i {
word-break: break-all;
font-size: 1rem;
}
}
li i {
word-break: break-all;
font-size: 1rem;
}

View File

@@ -1,8 +1,19 @@
<h1>Events</h1>
<p>
Following list contains all forthcoming events. Held events are listed in
<a href="/en/events_archive">archive</a>.
</p>
<br />
<p>We also provide <a href="https://dmz.rs/events.ical">ical file</a></p>
<br />
<div class="description">
<p>
Following list contains all forthcoming events. Held events are listed in
<a href="/en/events_archive">archive</a>.
</p>
<p>
Events are also available as an
<a href="https://dmz.rs/events.ical">ical</a> file.
</p>
<p>We also provide <a href="https://dmz.rs/events.ical">ical</a> file</p>
<p>
<a href="https://wiki.dmz.rs/en/kako-pronaci-prostor" target="_blank">
Short description
</a>
how to find a space
</p>
</div>

View File

@@ -1,16 +1,18 @@
<h1>Događaji</h1>
<p>
Naredna lista sadrži sve predstojeće događaje. Za listu održanih događaja
pogledaj <a href="/events_archive">arhivu</a>.
</p>
<br />
<p>
Događaje možeš učitati i sa
<a href="https://dmz.rs/events.ical">ical</a> datotekom.
</p>
<br />
<p>
<a href="https://wiki.dmz.rs/en/kako-pronaci-prostor" target="_blank">Kratako uputstvo</a> kako pronaci prostor
</p>
<br />
<br />
<div class="description">
<p>
Naredna lista sadrži sve predstojeće događaje. Za listu održanih događaja
pogledaj <a href="/events_archive">arhivu</a>.
</p>
<p>
Događaje možeš učitati i sa
<a href="https://dmz.rs/events.ical">ical</a> datotekom.
</p>
<p>
<a href="https://wiki.dmz.rs/en/kako-pronaci-prostor" target="_blank">
Kratako uputstvo
</a>
kako pronaci prostor
</p>
</div>

View File

@@ -1,2 +1,6 @@
<h1>Events archive</h1>
<p>All events that we organized so far. You can find future events on <a href="/en/events">Events page</a></p><br>
<p>
All events that we organized so far. You can find future events on
<a href="/en/events">Events page</a>
</p>
<br />

View File

@@ -1,2 +1,6 @@
<h1>Arhiva događaja</h1>
<p>Svi događaji koje smo do sada organzivali. Predstojeće događaje možeš naći <a href="/events">ovde</a></p><br>
<p>
Svi događaji koje smo do sada organzivali. Predstojeće događaje možeš naći
<a href="/events">ovde</a>
</p>
<br />

View File

@@ -1,11 +1,20 @@
<!doctype html>
<html lang="en">
<head>
<script>
(function () {
const theme = localStorage.getItem("theme");
const prefersDark = window.matchMedia(
"(prefers-color-scheme: dark)",
).matches;
if (theme === "dark" || (!theme && prefersDark))
document.documentElement.classList.add("dark");
})();
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!--
<pre>
<!-- <pre>
*@@*
*@@@@*
@@ -27,33 +36,34 @@
| |_| | |__| |___| |___| |\ | | | | _ < / ___ \| |___ / ___ \
|____/|_____\____|_____|_| \_| |_| |_| \_\/_/ \_\_____/_/ \_\
</pre>
-->
</pre> -->
<link rel="stylesheet" href="/styles/reset.css" />
<link rel="stylesheet" href="/styles/style.css" />
<!--ADDITIONAL_STYLE-->
<link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon" />
<script src="/scripts/main.js" defer></script>
<script src="/scripts/main.js"></script>
<title><!--TITLE--> Decentrala</title>
<link rel="alternate" hreflang="sr" href="/PAGE_NAME" />
</head>
<body>
<header>
<a id="logo" href="/en/index"
><img src="/img/logo-light.svg" alt="Logo" /> Decentrala</a
>
<a id="logo" href="/en/index">
<img src="/img/logo-light.svg" alt="Logo" /> Decentrala
</a>
<button id="theme-switcher"></button>
<a class="lang" hreflang="sr" href="/PAGE_NAME">SR</a>
</header>
<main>
<!--MAIN-->
<div class="page-wrap">
<!--MAIN-->
</div>
</main>
<footer>
<button id="sections-button" opened="false">
<img src="/img/strelica-closed-light.svg" alt="OpenMenu" />
<button class="hamburger closed">
<img src="/img/strelica-closed-light.svg" alt="Menu" />
</button>
<nav>
<nav class="menu">
<a href="/en/events">Events</a>
<a href="/en/services">Services</a>
<a href="/en/statute">Statute</a>
@@ -62,16 +72,18 @@
<a href="/en/support">Support</a>
</nav>
<span class="links">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"
><img src="/img/cc-light.svg" alt="CreativeCommons"
/></a>
<a href="/en/webring"><img src="/img/w-light.svg" alt="Webring" /></a>
<a href="https://gitea.dmz.rs/Decentrala/website"
><img src="/img/git-light.svg" alt="SourceCode"
/></a>
<a href="https://balkan.fedive.rs/@decentrala"
><img src="/img/mastodon-light.svg" alt="Mastodon"
/></a>
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
<img src="/img/cc-light.svg" alt="CreativeCommons" />
</a>
<a href="/en/webring">
<img src="/img/w-light.svg" alt="Webring" />
</a>
<a href="https://gitea.dmz.rs/Decentrala/website">
<img src="/img/git-light.svg" alt="SourceCode" />
</a>
<a href="https://balkan.fedive.rs/@decentrala">
<img src="/img/mastodon-light.svg" alt="Mastodon" />
</a>
</span>
</footer>
</body>

View File

@@ -1,11 +1,20 @@
<!DOCTYPE html>
<!doctype html>
<html lang="sr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<head>
<script>
(function () {
const theme = localStorage.getItem("theme");
const prefersDark = window.matchMedia(
"(prefers-color-scheme: dark)",
).matches;
if (theme === "dark" || (!theme && prefersDark))
document.documentElement.classList.add("dark");
})();
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!--
<pre>
<!-- <pre>
*@@*
*@@@@*
@@ -27,42 +36,56 @@
| |_| | |__| |___| |___| |\ | | | | _ < / ___ \| |___ / ___ \
|____/|_____\____|_____|_| \_| |_| |_| \_\/_/ \_\_____/_/ \_\
</pre>
-->
</pre> -->
<link rel="stylesheet" href="/styles/reset.css">
<link rel="stylesheet" href="/styles/style.css">
<!--ADDITIONAL_STYLE-->
<link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon">
<script src="/scripts/main.js" defer></script>
<title><!--TITLE--> Decentrala</title>
<link rel="alternate" hreflang="en" href="/en/PAGE_NAME" />
</head>
<body>
<header>
<a id="logo" href="/"><img src="/img/logo-light.svg" alt="Logo"> Decentrala</a>
<button id="theme-switcher"></button>
<a class="lang" hreflang="en" href="/en/PAGE_NAME">EN</a>
</header>
<main>
<!--MAIN-->
</main>
<footer>
<button id="sections-button" opened="false"><img src="/img/strelica-closed-light.svg" alt="OpenMenu"></button>
<nav>
<a href="/events">Događaji</a>
<a href="/services">Servisi</a>
<a href="/statute">Statut</a>
<a href="/about">O nama</>
<a class="account" href="/account">Nalog</a>
<a href="/support">Podrška</a>
</nav>
<span class="links">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><img src="/img/cc-light.svg" alt="CreativeCommons"></a>
<a href="/webring"><img src="/img/w-light.svg" alt="Webring"></a>
<a href="https://gitea.dmz.rs/Decentrala/website"><img src="/img/git-light.svg" alt="SourceCode"></a>
<a href="https://balkan.fedive.rs/@decentrala"><img src="/img/mastodon-light.svg" alt="Mastodon"></a>
</span>
</footer>
</body>
<link rel="stylesheet" href="/styles/reset.css" />
<link rel="stylesheet" href="/styles/style.css" />
<!--ADDITIONAL_STYLE-->
<link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon" />
<script src="/scripts/main.js" defer></script>
<title><!--TITLE--> Decentrala</title>
<link rel="alternate" hreflang="en" href="/en/PAGE_NAME" />
</head>
<body>
<header>
<a id="logo" href="/">
<img src="/img/logo-light.svg" alt="Logo" />
Decentrala
</a>
<button id="theme-switcher"></button>
<a class="lang" hreflang="en" href="/en/PAGE_NAME">EN</a>
</header>
<main>
<div class="page-wrap">
<!--MAIN-->
</div>
</main>
<footer>
<button class="hamburger closed">
<img src="/img/strelica-closed-light.svg" alt="Menu" />
</button>
<nav class="menu">
<a href="/events">Događaji</a>
<a href="/services">Servisi</a>
<a href="/statute">Statut</a>
<a href="/about">O nama</a>
<a class="account" href="/account">Nalog</a>
<a href="/support">Podrška</a>
</nav>
<span class="links">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
<img src="/img/cc-light.svg" alt="CreativeCommons" />
</a>
<a href="/webring">
<img src="/img/w-light.svg" alt="Webring" />
</a>
<a href="https://gitea.dmz.rs/Decentrala/website">
<img src="/img/git-light.svg" alt="SourceCode" />
</a>
<a href="https://balkan.fedive.rs/@decentrala">
<img src="/img/mastodon-light.svg" alt="Mastodon" />
</a>
</span>
</footer>
</body>
</html>