Reviewed-on: #1 Reviewed-by: Piotr Likoski <likoski@noreply.codingworkshop.git> Co-authored-by: Rafal Kupiec <belliash@codingworkshop.eu.org> Co-committed-by: Rafal Kupiec <belliash@codingworkshop.eu.org>
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
name: Builds
|
||||
run-name: ${{ github.actor }} runs Gitea Actions
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
ExectOS WebSite:
|
||||
runs-on: oscw
|
||||
container:
|
||||
image: codingworkshop/oscw-runner:latest
|
||||
steps:
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Build WebSite
|
||||
run: hugo
|
||||
- name: Publish WebSite
|
||||
if: ${{ github.ref == 'refs/heads/master' }}
|
||||
env:
|
||||
OSCW_ARTIFACTS_HOSTNAME: ${{ secrets.OSCW_ARTIFACTS_HOSTNAME }}
|
||||
OSCW_ARTIFACTS_USERNAME: ${{ secrets.OSCW_ARTIFACTS_USERNAME }}
|
||||
OSCW_ARTIFACTS_USERKEY: ${{ secrets.OSCW_ARTIFACTS_USERKEY }}
|
||||
run: webpage_publish public/ 1e8c78e4764c760b3d20991c8b769cf5
|
||||
@@ -0,0 +1,2 @@
|
||||
public/
|
||||
.hugo_build.lock
|
||||
@@ -1 +1,2 @@
|
||||
## ExectOS Web Site
|
||||
This repository contains the entire content of the ExectOS Website, powered by the Hugo Static Site Generator.
|
||||
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
baseURL = "https://exectos.eu.org/"
|
||||
disableKinds = ["taxonomy"]
|
||||
title = "ExectOS Operating System"
|
||||
theme = "exectos"
|
||||
languageCode = "en-us"
|
||||
defaultContentLanguage = "en"
|
||||
paginate = 10
|
||||
|
||||
[menu]
|
||||
|
||||
[[menu.main]]
|
||||
name = "Documentation"
|
||||
pre = "<div class='fa fa-book'></div> "
|
||||
url = "/documentation"
|
||||
weight = 1
|
||||
|
||||
[[menu.main]]
|
||||
name = "Contributing"
|
||||
pre = "<div class='fa fa-code-fork'></div> "
|
||||
url = "/contributing"
|
||||
weight = 2
|
||||
|
||||
[[menu.main]]
|
||||
name = "Download"
|
||||
pre = "<div class='fa fa-cubes'></div> "
|
||||
url = "/download"
|
||||
weight = 3
|
||||
|
||||
[[menu.main]]
|
||||
name = "Source Code"
|
||||
pre = "<div class='fa fa-codepen'></div> "
|
||||
url = "/source-code"
|
||||
weight = 4
|
||||
|
||||
[[menu.main]]
|
||||
name = "Discord"
|
||||
pre = "<div class='fa fa-wechat'></div> "
|
||||
url = "https://discord.com/invite/zBzJ5qMGX7"
|
||||
weight = 5
|
||||
|
||||
[params]
|
||||
defaultKeywords = ["ExectOS", "XT", "XTOS", "efi", "gpl3", "kernel", "nt", "open source", "os", "osdev", "uefi boot", "win32"]
|
||||
defaultDescription = "ExectOS Operating System"
|
||||
@@ -0,0 +1,48 @@
|
||||
+++
|
||||
title = 'About Exectos'
|
||||
date = 2024-06-16T12:12:40+02:00
|
||||
+++
|
||||
## About
|
||||
ExectOS aims to be a stable and flexible, general purpose operating system written from scratch. It is designed to be
|
||||
modular, maintainable and compatible with existing software. It implements a brand new XT architecture and features own
|
||||
native application interface. On the backend, it contains a powerful driver model between device drivers and the kernel,
|
||||
that enables kernel level components to be upgraded without a need to recompile all drivers.
|
||||
|
||||
## XT Architecture
|
||||
ExectOS is a preemptive, reentrant multitasking operating system that implements the XT architecture which derives from
|
||||
NT™ architecture. It is modular, and consists of two main layers: microkernel and user modes. Its' kernel mode has
|
||||
full access to the hardware and system resources and runs code in a protected memory area. It consists of executive
|
||||
services, which is itself made up on many modules that do specific tasks, a kernel and drivers. Unlike the NT™, system
|
||||
does not feature a separate Hardware Abstraction Layer (HAL) between the physical hardware and the rest of the OS. Instead,
|
||||
XT architecture integrates a hardware specific code with the kernel. The user mode is made up of subsystems and it has been
|
||||
designed to run applications written for many different types of operating systems. This allows us to implement any
|
||||
environment subsystem to support applications that are strictly written to the corresponding standard (eg. DOS, or POSIX).
|
||||
Thanks to that ExectOS will allow to run existing software, including Win32 applications.
|
||||
|
||||
## Features
|
||||
* Completely free, Open Source and community-driven modern Operating System.
|
||||
* Native multiple architecture support. It runs on x86 and x86_64 and is portable to other architectures.
|
||||
* Hardware layer API allows for a single unified kernel. There is no need to maintain a separate kernel forks.
|
||||
* Uses a couple of ideas from other open source projects, but it’s our own ideas that really sets us apart and defines
|
||||
ExectOS. The majority of code is original, not forked.
|
||||
* Modular design for better compatibility with existing software and drivers, enabling binaries to remain compatible even
|
||||
when the core system is updated.
|
||||
* Own, XT drivers for commonly used devices as well as NT™ drivers compatibility layer for better hardware support.
|
||||
* Technical support directly from the architects and developers of the system.
|
||||
|
||||
## Why
|
||||
* We believe, there is no ideal Operating System on the market. During ExectOS development, we try to bring most useful
|
||||
features known from existing solutions, while keeping compatibility with NT™ architecture at desired level.
|
||||
* Some of our ideas differ greatly from other projects and it is much easier if we do not have to fight legacy code and
|
||||
ideas.
|
||||
* We need the freedom to break things when necessary.
|
||||
|
||||
## Goals
|
||||
* Keep the greatest advantages of the NT™ architecture, while implementing new features and technologies known from
|
||||
other Operating Systems.
|
||||
* Flexibility where it makes sense to provide flexibility.
|
||||
* Be able to deliver features that other non-commercial Operating Systems consider too ambitious.
|
||||
|
||||
## Requirements
|
||||
ExectOS is in very early development stage, thus its requirements have been not specified yet. However according to its
|
||||
design, it requires a modern EFI enabled hardware. It is not possible currently to boot ExectOS on a legacy BIOS.
|
||||
@@ -0,0 +1,45 @@
|
||||
+++
|
||||
title = 'Contact Us'
|
||||
date = 2024-06-17T18:11:52+02:00
|
||||
+++
|
||||
### Discord
|
||||
ExectOS has a Discord Server to socialize, get support, support others, learn, contribute, collaborate, and stay up to
|
||||
date on all things related to XTOS and Open Source. This is also a place where you can meet ExectOS Developers. Everyone
|
||||
is welcome to [Join our Discord Server](https://discord.com/invite/zBzJ5qMGX7).
|
||||
|
||||
### Why Discord?
|
||||
Discord is a VoIP instant messaging and digital distribution platform. It
|
||||
* is broadly accessible,
|
||||
* is popular with non-technical people,
|
||||
* broadens the appeal of XTOS beyond traditional spaces and audiences,
|
||||
* allows for communication over voice, video, and text.
|
||||
|
||||
### Guidelines & Rules
|
||||
1. Treat everyone with respect. Absolutely no harassment, witch hunting, sexism, racism, or hate speech will be tolerated.
|
||||
2. No age-restricted or obscene content. This includes text, images, or links featuring nudity, sex, hard violence, or
|
||||
other graphically disturbing content.
|
||||
3. No spam or self-promotion (server invites, advertisements, etc) without permission from a staff member. This includes
|
||||
DMing fellow members.
|
||||
4. Do not share real media depicting gore, excessive violence, or animal harm, especially with the intention to harass
|
||||
or shock others.
|
||||
5. Do not share content that violates anyone's intellectual property or other rights.
|
||||
6. Do not distribute or provide access to content involving the hacking, cracking, or distribution of stolen goods,
|
||||
pirated content, or accounts.
|
||||
7. If you see something against the rules or something that makes you feel unsafe, let staff know. We want this server
|
||||
to be a welcoming space!
|
||||
|
||||
### How to use Discord?
|
||||
* [Official Discord client for any device](https://discord.com/download)
|
||||
* [Discord Client via the Web Browser](https://discord.gg/)
|
||||
* Any third-party client
|
||||
|
||||
### Channel Overview
|
||||
* **Activity**: Staying up-to-date with GIT and development activity.
|
||||
* **Announcements**: Staying informed and up-to-date with important activities.
|
||||
* **General**: Getting help, helping and supporting others, leveling up knowledge, participating and contributing.
|
||||
* **Offtopic**: Connecting and enjoying time with other people in the community.
|
||||
|
||||
## ExectOS Channels
|
||||
Discover more about ExectOS and dive into a world of insightful content by visiting our official
|
||||
[YouTube](https://www.youtube.com/@XT-Sys-dg3yf) channel. Join our growing community of followers and stay up-to-date
|
||||
with ExectOS by subscribing and turning on notifications. Visit us now and start watching!
|
||||
@@ -0,0 +1,17 @@
|
||||
+++
|
||||
title = 'Contributing'
|
||||
date = 2024-06-16T22:31:24+02:00
|
||||
+++
|
||||
### Contributing to Community
|
||||
* [Contributing to ExectOS](/contributing/contributing-to-exectos)
|
||||
|
||||
### Contributing Documentation
|
||||
* [Updating and Writing Documentation](/contributing/writing-documentation)
|
||||
|
||||
### Contributing Code
|
||||
* [Building ExectOS](/contributing/building-exectos)
|
||||
* [Clean Room Guidelines](/contributing/clean-room-guidelines)
|
||||
* [Developing ExectOS](/contributing/developing-exectos)
|
||||
* [ExectOS Coding Style](/contributing/coding-style)
|
||||
* [First steps with GIT](/contributing/working-with-git)
|
||||
* [Submitting Patches](/contributing/submitting-patches)
|
||||
@@ -0,0 +1,58 @@
|
||||
+++
|
||||
title = 'Building ExectOS'
|
||||
date = 2024-06-18T16:37:24+02:00
|
||||
+++
|
||||
ExectOS must be compiled with the XTChain toolchain. Make sure you have already [downloaded](/download) and installed it.
|
||||
Once this is done and the source code is ready, open a terminal and launch the XTChain Build Environment.
|
||||
```
|
||||
xtchain
|
||||
```
|
||||
Then, set your target build architecture and the build type and configure the project. Choose `i686` or `amd64` depending
|
||||
on the architecture you wish to target. The build type can be either `DEBUG` for debugging purposes or `RELEASE` for
|
||||
a production build.
|
||||
```
|
||||
charch [i686|amd64]
|
||||
chbuild [DEBUG|RELEASE]
|
||||
./configure.sh
|
||||
```
|
||||
After the sources are configured, navigate to the build directory and compile the source code.
|
||||
```
|
||||
cd build
|
||||
xbuild
|
||||
```
|
||||
Afterwards, you will find the binaries in `build/output/binaries` directory. Apart from that, depending on build type, you
|
||||
can also find a debug symbols in PDB format in `build/output/symbols` folder and precompiled libraries that can be used to
|
||||
link other software using XTDK in `build/output/library`
|
||||
|
||||
## Creating Qemu Disk Image
|
||||
If you want to build a disk image that is ready to use with Qemu, you can use the following command:
|
||||
```
|
||||
xbuild diskimg
|
||||
```
|
||||
This will create a disk image that you can boot within a Qemu Virtual Machine, or convert to other format for use within
|
||||
other hypervisor, like VirtualBox.
|
||||
|
||||
## Testing with Qemu
|
||||
After successfully compiling ExectOS, you can test it using Qemu with either hardware virtualization (KVM) or software
|
||||
emulation (TCG). To start Qemu with KVM, use the `testkvm` target, and for TCG emulation, use the `testtcg` target. These
|
||||
targets are provided for convenience and you can run these commands from your build directory.
|
||||
```
|
||||
xbuild testkvm # For KVM hardware virtualization
|
||||
```
|
||||
or
|
||||
```
|
||||
xbuild testtcg # For TCG software emulation
|
||||
```
|
||||
These commands will automatically configure Qemu with the appropriate settings for ExectOS and start the virtual machine.
|
||||
In addition to Qemu, you can also use Bochs for emulation. Bochs is an IA-32 (x86) PC emulator that provides a different
|
||||
emulation environment. To launch Bochs with the ExectOS image, run the following command:
|
||||
```
|
||||
xbuild bochsvm
|
||||
```
|
||||
This will start the Bochs emulator with ExectOS loaded, allowing you to test the system in an environment that may offer
|
||||
different debugging capabilities compared to Qemu.
|
||||
|
||||
Remember that the performance and debugging features will vary depending on whether you use KVM, TCG, or Bochs. KVM
|
||||
requires that your host machine supports hardware virtualization, while TCG is a pure software emulator which works on
|
||||
systems without hardware virtualization. Bochs provides a rich set of debugging features, which can be useful when
|
||||
troubleshooting complex issues.
|
||||
@@ -0,0 +1,36 @@
|
||||
+++
|
||||
title = 'Clean Room Guidelines'
|
||||
date = 2024-06-17T23:11:23+02:00
|
||||
+++
|
||||
You sometimes run into a need to use the [clean-room design](http://en.wikipedia.org/wiki/Clean_room_design) techniques
|
||||
to work around the problem without infringing on any copyrights. While you attempt at reverse engineering, all
|
||||
corresponding contributions should follow
|
||||
[Council Directive 91/250/EEC](https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=celex%3A31991L0250), and
|
||||
[Directive (EU) 2016/943](https://eur-lex.europa.eu/eli/dir/2016/943/oj) of the European Parliament and any newer
|
||||
directives related to reverse engineering. As per
|
||||
[Article 6 Decompilation 1. (a)](https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=celex%3A31991L0250) you must own
|
||||
a legal copy/license of the software before doing any attempts at reverse engineering. The software must be officially
|
||||
deprecated and/or obsolete. If you live outside of the European Union, you should follow similar rules described in legal
|
||||
acts issued by the local authorities if they conform to the EU law. This especially means, that
|
||||
|
||||
#### You are allowed to:
|
||||
* **Decompile for Interoperability**: According to the directives, decompilation is permissible when it's necessary to
|
||||
achieve interoperability with other software. This means you can reverse engineer parts of the software to understand
|
||||
the underlying interfaces.
|
||||
* **Own a Legal Copy**: You must own a legal copy or license of the software you wish to reverse engineer. This ensures
|
||||
that your starting point is within legal bounds.
|
||||
* **Work with Obsolete Software**: The software you reverse engineer should be obsolete or no longer maintained by the
|
||||
manufacturer. This typically applies to software that is no longer receiving updates or support.
|
||||
|
||||
#### You are NOT allowed to:
|
||||
* **Infringe Copyrights**: You must not reproduce code or utilize proprietary algorithms from the software without
|
||||
permission, as this would infringe on the copyright.
|
||||
* **Break Protection Measures**: You are not permitted to crack or bypass any form of copy protection or digital rights
|
||||
management that the software employs.
|
||||
* **Commercially Exploit the Work**: You should not use the knowledge gained from reverse engineering for commercial
|
||||
exploitation or to create direct competitors, unless you have specific agreements that allow for such activities.
|
||||
* **Reveal Trade Secrets**: It is generally illegal to uncover and reveal trade secrets through the process of reverse
|
||||
engineering.
|
||||
|
||||
Remember, laws and regulations vary by jurisdiction and change over time, so it's crucial to stay updated on the current
|
||||
laws.
|
||||
@@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = 'ExectOS Coding Style'
|
||||
date = 2024-06-18T00:20:07+02:00
|
||||
+++
|
||||
At the moment of writing this article, no coding style was established. You should check how existing code looks like and
|
||||
follow its current formatting.
|
||||
@@ -0,0 +1,30 @@
|
||||
+++
|
||||
title = 'Contributing to ExectOS'
|
||||
date = 2024-06-17T22:35:51+02:00
|
||||
+++
|
||||
The ExectOS project and CodingWorkshop Team always seek new contributors from all skill levels. No matter if you are
|
||||
a developer, tester, designer, or techwriter, your contributions are always appreciated.
|
||||
|
||||
### Software Developers
|
||||
We are always looking for people proficient in C and/or Assembly, especially familiar with tools such as Bochs, Qemu,
|
||||
or VirtualBox. Writing an Operating System is not a beginner's task. In fact, writing an Operating System is usually
|
||||
considered the most difficult programming task. Join the exclusive ranks of people knowing OSDev concepts, and yet
|
||||
smaller ranks of people knowing the secrets of NT™ architecture.
|
||||
|
||||
### Testers
|
||||
No software is usable if it is found to be unstable. Writing an Operating System, is yet more complex task. Tester role
|
||||
is responsible for assisting the development process by running [builds](/download) and providing a feedback. All and any
|
||||
information about issues you encountered during this process can be
|
||||
[reported](https://git.codingworkshop.eu.org/xt-sys/exectos/issues). The more detailed report is, the easier it will be
|
||||
to fix it. At least basic knowledge in collecting information from a crash, like backtraces and knowledge of using
|
||||
debugger will help you. When submitting issues, take care that the bug report is not a duplicate of an already existing,
|
||||
open issue. You should always follow the template specified for issues in our Gitea.
|
||||
|
||||
### Technical Writers
|
||||
As a team, we focus mostly on OS development. We are looking for some creative people to update and write documentation,
|
||||
post content to this website as well as social media accounts to promote ExectOS. New web site design ideas and bug fixes
|
||||
are as well welcome.
|
||||
|
||||
### Community Managers
|
||||
The ExectOS community keeps in touch via [Discord](/contact-us). Community Manager role is responsible to keep people
|
||||
involved, keep discussions going and moderate.
|
||||
@@ -0,0 +1,38 @@
|
||||
+++
|
||||
title = 'Developing ExectOS'
|
||||
date = 2024-06-18T16:36:47+02:00
|
||||
+++
|
||||
We leave you free to choose your working environment, but we also recommend working with VS Code, or VS Codium. Both are
|
||||
free to use, open-source IDEs, compatible with Windows, Linux, and macOS operating systems. They falls under the same
|
||||
category as Atom, Sublime, and Text Wrangler, but they also has more advanced features. While the first one is am original
|
||||
code editor from the Microsoft©, VS Codium is essentially a telemetry-free, open-source version of VS Code.
|
||||
|
||||
### Recommended Extensions
|
||||
* **[Clangd](https://open-vsx.org/extension/llvm-vs-code-extensions/vscode-clangd)**: helps developers write,
|
||||
understand and improve C/C++ code by providing code completion, compile errors and warnings, hover information and
|
||||
inlay hints, include management, code formatting and more.
|
||||
* **[CMake](https://open-vsx.org/extension/twxs/cmake)**: extension provides support for CMake in Visual Studio Code.
|
||||
* **[Codeium](https://open-vsx.org/extension/Codeium/codeium)**: modern coding superpower, a free code acceleration
|
||||
toolkit built on cutting edge AI technology. Currently, Codeium provides autocomplete, chat, and search capabilities
|
||||
in 70+ languages, with lightning fast speeds and state-of-the-art suggestion quality.
|
||||
* **[GNU Assembler Language Support](https://open-vsx.org/extension/basdp/language-gas-x86)**: extension provides
|
||||
language support for x86 and x86_64 assembly language in AT&T dialect.
|
||||
* **[Markdown Preview Enhanced](https://open-vsx.org/extension/shd101wyy/markdown-preview-enhanced)**: extension that
|
||||
provides many useful functionalities such as automatic scroll sync, math typesetting, mermaid, PlantUML, pandoc,
|
||||
PDF export, code chunk, presentation writer, etc.
|
||||
|
||||
### Getting Started with VS Code
|
||||
Opening a project in Visual Studio Code is straightforward, especially that you can find `ExectOS.code-workspace` file
|
||||
in project's GIT repository. Once you checkout the source code, you can open the workspace file directly from the command
|
||||
line:
|
||||
```
|
||||
code ExectOS.code-workspace
|
||||
```
|
||||
Alternatively, you can start VS Code and use the menu options:
|
||||
* Open Visual Studio Code.
|
||||
* Go to File > Open Workspace from File...
|
||||
* Navigate to the directory containing your cloned repository.
|
||||
* Select the ExectOS.code-workspace file and click Open.
|
||||
|
||||
VS Code will load everything defined in the workspace file, including folder structure and settings specific to the
|
||||
ExectOS project. You're now ready to start working on the project.
|
||||
@@ -0,0 +1,52 @@
|
||||
+++
|
||||
title = 'Submitting Patches'
|
||||
date = 2024-06-17T23:47:42+02:00
|
||||
+++
|
||||
In order to review code better and use established lines of communication, we accept code in the form of Pull Requests
|
||||
on our [Gitea](https://git.codingworkshop.eu.org/xt-sys/exectos/pulls) instance. The process may seem a little bit
|
||||
complicated at first, but it will become very natural. It is important for us, to make sure the author and email settings
|
||||
for your GIT are configured correctly. You should follow our '[Working with GIT](/contributing/working-with-git)' document,
|
||||
but the key point is to use your real name and valid e-mail address. This is not just for developers to show a stronger
|
||||
commitment and establish trust, but also helps discourage irresponsible programmers from submitting unacceptable code.
|
||||
You will need a Gitea account which must also use your real name. You should be precise; having the names match helps in
|
||||
identifying commits.
|
||||
|
||||
### Patch Guidelines
|
||||
In order to make your patches as easy to check as possible, try to keep them small, clear, and atomic:
|
||||
* Include only closely related changes in one commit.
|
||||
* Don't implement extra things that no one uses.
|
||||
* Try to limit each merge request to only a few commits.
|
||||
* Limit a commit to changing a single file or component.
|
||||
|
||||
Above rules make the Pull Request easier to review.
|
||||
|
||||
### Commit Message
|
||||
|
||||
|
||||
### Quality Check
|
||||
It never hurts to check through your changes one last time. Take a while, to look at each line of the patch and make sure
|
||||
there are no unintentional or unrelated changes. Also make sure that the layout of your code conforms to our
|
||||
[coding style](/contributing/coding-style).
|
||||
|
||||
### Sending Pull Request
|
||||
After checking in your local changes, you can submit a Pull Request on Gitea to get your changes upstream. This requires
|
||||
you to be working on a Gitea fork. You should make up a temporary branch name for your changes. That branch will be deleted
|
||||
once the merge request is merged, so it's better to avoid using the master branch directly.
|
||||
|
||||
### Managing Pull Request
|
||||
After you've submitted your merge request, a reviewer will be assigned to it, if someone is responsible for that area of
|
||||
the code. You can also assign a reviewer yourself if you know who the right person is. If a reviewer gives some feedback
|
||||
or a critique, carefully think about what they say and fix your patch before resubmitting. When updating your changes, you
|
||||
can simply push the fixes as a new commit on top of your Pull Request. This is prefferred way, as allows us to compare
|
||||
code before and after your fixes. All commits can be squashed by a reviewer upon merge.
|
||||
|
||||
If your Pull Request remains in the queue for several weeks without being committed and without feedback, you can ask for
|
||||
further suggestions on our [Discord](/contact-us) server. If you have patches rejected multiple times, don't be discouraged.
|
||||
You might consider finding a mentor willing to pre-review your changes before you submit them again.
|
||||
|
||||
### Reviewing Pull Request
|
||||
If you are asked to review a merge request, and find things that need to be improved, you should add a comment to the merge
|
||||
request from the Gitea interface. You can also fix things up yourself and push updated commits to the original branch, once
|
||||
submitter explicitly give you access to his GIT repository. If you think that the merge request is good to go in, you
|
||||
should mark it approved. As a rule, a merge request won't be committed until all reviewers have approved it. If you have
|
||||
been assigned as a reviewer but you feel that you cannot meaningfully review the changes, feel free to unassign yourself.
|
||||
@@ -0,0 +1,53 @@
|
||||
+++
|
||||
title = 'Working with GIT'
|
||||
date = 2024-06-17T17:31:15+02:00
|
||||
+++
|
||||
The preferred method of contributing patches to ExectOS is via our self-hosted [Gitea](https://git.codingworkshop.eu.org)
|
||||
instance.
|
||||
|
||||
### Initial Setup
|
||||
First of all you will have to create an account on our [Gitea](https://git.codingworkshop.eu.org) instance. Do note that
|
||||
you can also use your existing GitHub or GitLab account via OAuth. Creating new account on our Gitea is pretty straight
|
||||
forward, anyway:
|
||||
1. Go to our Gitea instance and click on "[Register](https://git.codingworkshop.eu.org/user/sign_up)" link in top,
|
||||
right corner.
|
||||
2. Fill in your information.
|
||||
3. Add your SSH key(s) for easier pushing via SSH instead of HTTPS.
|
||||
4. Consider also enabling 2FA for improved security access and signing your commits with GPG.
|
||||
|
||||
### Cloning Repositories
|
||||
1. Go to Gitea's frontage after you’ve signed in and search for the repository you want to clone. Click on its name to
|
||||
open it.
|
||||
2. Click on 'Fork' button, to create your own copy of the repository.
|
||||
3. Either clone your fork of it, with
|
||||
```
|
||||
git clone ssh://git@git.codingworkshop.eu.org:8822/<username>/<repository>.git .
|
||||
```
|
||||
or if you already cloned the repo you can add your fork as remote, with
|
||||
```
|
||||
git remote add <my_fork> ssh://git@git.codingworkshop.eu.org:8822/<username>/<repository>.git
|
||||
```
|
||||
|
||||
### Proper GIT Setup
|
||||
ExectOS uses GIT for Source Code Management (SCM) and GIT uses a username to associate commits with an identity. The GIT
|
||||
username is not the same as your Gitea username. You can change the name that is associated with your GIT commits. The new
|
||||
name you set will be visible in any future commits you push to Gitea from the command line. In order to accept your
|
||||
patches, we require you to provide your real name and valid e-mail address. This can be done with the following commands:
|
||||
```
|
||||
git config --global user.name "<your real name>"
|
||||
git config --global user.email "<your email>"
|
||||
```
|
||||
Above command will update username and email globally, for every repository on your computer. Alternatively, these changes
|
||||
can be introduced for a single repository, by changing the current working directory to the local repository where you want
|
||||
to configure the name that is associated with your GIT commits and issueing the following commands:
|
||||
```
|
||||
git config user.name "<your real name>"
|
||||
git config user.email "<your email>"
|
||||
```
|
||||
|
||||
### Keeping Forks Updated
|
||||
You should always ensure that you have the latest version of the repository you want to work on before starting your work to
|
||||
avoid duplicating work and merge conflicts. You can do so with:
|
||||
```
|
||||
git pull <remote> master --rebase
|
||||
```
|
||||
@@ -0,0 +1,36 @@
|
||||
+++
|
||||
title = 'Writing Documentation'
|
||||
date = 2024-06-17T18:08:34+02:00
|
||||
+++
|
||||
Our documentation is integrated with this website and it is stored in GIT repository. This website is powered by the Hugo
|
||||
Static Site Generator. All pages are created as simple Markdown files and everyone is free to submit Pull Requests to
|
||||
enhance the website. This article will help you better understand the proper guidelines for submitting documentation.
|
||||
|
||||
### Guidelines
|
||||
* **Use standard English**: Use standard United States (U.S.) English throughout all technical publications.
|
||||
* **Write in active-voice**: Active voice sentences clarify the performer of an action and are easier to understand than
|
||||
passive-voice sentences.
|
||||
* **Use present simple tense**: Users read documentation to perform tasks or gather information. For users, these
|
||||
activities take place in their present, so the present tense is appropriate in most cases.
|
||||
* **Write in second person**: Users are more engaged with documentation when you use second person (that is, you address
|
||||
the user as "you").
|
||||
* **Use appropriate mood**: For procedures, use imperative mood.
|
||||
* **Avoid ambiguous titles**: Each title should include a clear description of the page’s subject.
|
||||
* **Write objectively**: Do not use humor, jargon, exclamation marks, idioms, metaphors, and other colloquialisms.
|
||||
* **Write positively**: Write in a positive tone. Positive sentences improve readability.
|
||||
* **Avoid personification**: Avoid the adverbs such as "probably", "hopefully", "basically", and so on.
|
||||
* **Do not use contractions**: Generally, do not contract the words.
|
||||
* **Use spelling and grammar checking tools**: Run text through spelling and grammar checking tools, if available.
|
||||
|
||||
### Testing Documentation
|
||||
1. [Download](https://gohugo.io/) Hugo v0.125.7 or newer.
|
||||
2. Open a shell in the root of your repository and use below command to start server
|
||||
```
|
||||
hugo server -DF
|
||||
```
|
||||
3. Open `http://localhost:1313/` in your browser to access the website and check the results.
|
||||
|
||||
### Submitting Patches
|
||||
We welcome patches for both documentation and the website. We use the GNU Free Documentation License 1.3 or later for all
|
||||
documentation and website content. Contributions using other licenses are unlikely to be accepted. Patches should be
|
||||
contributed via our [Gitea instance](https://git.codingworkshop.eu.org/xt-sys/website).
|
||||
@@ -0,0 +1,15 @@
|
||||
+++
|
||||
title = 'Documentation'
|
||||
date = 2024-06-16T22:27:36+02:00
|
||||
+++
|
||||
### Getting Started
|
||||
* [Frequently Asked Questions](/faq)
|
||||
* [Get in Touch](/contact-us)
|
||||
* [Installation Guide](/documentation/install-guide)
|
||||
|
||||
### Contributing Documentation
|
||||
* [Contributing to ExectOS](/contributing)
|
||||
* [Working with GIT](/contributing/working-with-git)
|
||||
|
||||
### Technical Details
|
||||
* [XT Boot Loader](/documentation/xtldr)
|
||||
@@ -0,0 +1,50 @@
|
||||
+++
|
||||
title = 'Installation Guide'
|
||||
date = 2024-06-17T16:41:29+02:00
|
||||
+++
|
||||
ExectOS is in early development phase and thus it is NOT suitable for daily use, especially on real hardware. It is
|
||||
recommended to run it in a virtual machine like Qemu or VirtualBox. Otherwise, you act at your own risk!
|
||||
|
||||
### Running in Qemu
|
||||
Running ExectOS in Qemu is straight-forward, as our build pipeline produces a disk image, that is ready to use in Qemu.
|
||||
Once you download it and extract, you can use below commands to run the virtual machine, depending on the target CPU
|
||||
architecture of the image. For x86_64 use:
|
||||
```
|
||||
qemu-system-x86_64 -cpu host -enable-kvm -m 2G -hda disk-amd64.img -serial stdio \
|
||||
-drive file=sdk/firmware/ovmf_code_amd64.fd,if=pflash,format=raw,unit=0,readonly=on \
|
||||
-drive file=sdk/firmware/ovmf_vars_amd64.fd,if=pflash,format=raw,unit=1
|
||||
|
||||
```
|
||||
And for i686 use:
|
||||
```
|
||||
qemu-system-i386 -cpu host -enable-kvm -m 1G -hda disk-i686.img -serial stdio \
|
||||
-drive file=sdk/firmware/ovmf_code_i686.fd,if=pflash,format=raw,unit=0,readonly=on \
|
||||
-drive file=sdk/firmware/ovmf_vars_i686.fd,if=pflash,format=raw,unit=1
|
||||
|
||||
```
|
||||
Above commands require an UEFI firmware to be available. It can be found in the
|
||||
[ExectOS GIT repository](https://git.codingworkshop.eu.org/xt-sys/exectos/src/branch/master/sdk/firmware).
|
||||
|
||||
### Running in VirtualBox
|
||||
VirtualBox is commonly used for running the system in an isolated environment. In this case, the same disk image as
|
||||
for Qemu can be used. However, it needs to be converted to QCOW2 format, that is supported by VirtualBox. This can be
|
||||
done with the following command:
|
||||
```
|
||||
qemu-img convert -O qcow2 disk.img disk.qcow2
|
||||
```
|
||||
Once, the disk image is converted, you can create a new virtual machine. As an Operating System, you can choose either
|
||||
32-bit or 64-bit Windows® 10, depending on ExectOS disk image architecture. Just make sure, that EFI support is
|
||||
enabled.
|
||||
|
||||
### Running on Bare Metal
|
||||
It is recommended to not install, nor run ExectOS on a real hardware. Otherwise, installation should be
|
||||
straight-forward and self descriptive:
|
||||
* Download a binary package or build XTOS yourself.
|
||||
* Prepare a pendrive or USB stick. It should have at least first partition formatted as FAT32.
|
||||
* Copy all binaries to USB drive, keeping the existing directory structure. Contents of the archive, or contents of
|
||||
`build/output/binaries` is the root of your drive. Do NOT paste them into any subdirectory.
|
||||
* Reboot the computer.
|
||||
* Enter Firmware Setup or Boot Selection menu and choose your USB drive.
|
||||
* Viola, enjoy!
|
||||
|
||||
In case of any problems, take a photo of your screen and contact with ExectOS developers.
|
||||
@@ -0,0 +1,62 @@
|
||||
+++
|
||||
title = 'XT Boot Loader'
|
||||
date = 2024-06-16T23:43:56+02:00
|
||||
+++
|
||||
XTLDR (abbreviation of XT Loader) is the boot loader dedicated for XTOS. It is the first program launched by the Unified
|
||||
Extensible Firmware Interface (UEFI) of the computer and is responsible for loading the rest of ExectOS. The procedure is
|
||||
quite different for UEFI and BIOS systems. However currently, legacy BIOS boot procedure is not supported by ExectOS.
|
||||
|
||||
### UEFI
|
||||
The Unified Extensible Firmware Interface (UEFI) has support for reading both the partition table as well as file systems.
|
||||
UEFI does not launch any boot code from the Master Boot Record (MBR) whether it exists or not, instead booting relies on
|
||||
boot entries in the NVRAM. The UEFI specification mandates support for the FAT12, FAT16, and FAT32 file systems, as well
|
||||
as ISO9660 for optical discs. Any conformant vendor can optionally add support for additional file systems.
|
||||
|
||||
UEFI launches EFI applications, e.g. boot loaders, boot managers, UEFI shell, etc. These applications are usually stored
|
||||
as files in the EFI system partition (ESP). The applications can be launched by adding a boot entry to the NVRAM or from
|
||||
the UEFI shell.
|
||||
|
||||
### Startup Process
|
||||
When a PC is powered on its UEFI firmware initializes the hardware components of the system. This includes CPU, memory,
|
||||
and device initialization. Firmware has its own boot manager, which is responsible for loading UEFI applications stored
|
||||
in the EFI System Partition (ESP), a dedicated partition on a data storage device, formatted with any from the supported
|
||||
filesystem and attempts to load the selected EFI application (usually an OS bootloader) into memory and transfers control
|
||||
to it.
|
||||
|
||||
XTLDR accesses the file system on the ESP partition and reads the xtldr.ini file to determine what Operating Systems are
|
||||
present. Also additional configuration, like debugging options is loaded. Afterwards, XTLDR loads additional modules, in
|
||||
order to extend its functionality as well as to support additional file systems, that are normally not supported by UEFI.
|
||||
This allows to boot Operating System kernel from the partition other to ESP. Then boot loader menu is presented to the
|
||||
user.
|
||||
|
||||

|
||||
|
||||
After a user choose the position from the list, or timeout exceeded, XTLDR continues with loading additional modules,
|
||||
specific to the chosen Operating System. If a non XTOS is selected, XTLDR loads the associated kernel file listed in the
|
||||
configuration file and gives it control. Otherwise, if XTOS is selected, boot loader loads registry HIVE data, kernel
|
||||
and boot drivers. Finally, starts the kernel, passing to it all the necessary information.
|
||||
|
||||
### XTLDR Configuration
|
||||
XTLDR's first action is to read the xtldr.ini file. It describes whole configuration for the boot loader as well as allows
|
||||
the user to choose which Operating System to boot from at the menu. it also allows the user to pass preconfigured options
|
||||
to the kernel. Regardless an OS, the location of the Operating System is written as an ARC (Advanced RISC Computing) path.
|
||||
Below is an example of the xtldr.ini file:
|
||||
```
|
||||
[XTLDR]
|
||||
Debug=COM1,115200
|
||||
Default=ExectOS
|
||||
KeepLastBoot=TRUE
|
||||
Modules=beep
|
||||
Timeout=10
|
||||
Tune=400 880 2 988 2 783 2 392 2 587 3
|
||||
|
||||
[ExectOS]
|
||||
SystemName="ExectOS Operating System"
|
||||
SystemType=XTOS
|
||||
BootModules=xtos_o
|
||||
SystemPath=multi(0)disk(0)rdisk(0)partition(1)/ExectOS
|
||||
KernelFile=xtoskrnl.exe
|
||||
Parameters=DEBUG=COM1,115200
|
||||
```
|
||||
A full list of configuration options with their descriptions can be found in the [example configuration](https://git.codingworkshop.eu.org/xt-sys/exectos/src/branch/master/bootdata/xtldr/xtldr.ini)
|
||||
file in project's GIT repository.
|
||||
@@ -0,0 +1,20 @@
|
||||
+++
|
||||
title = 'Download'
|
||||
date = 2024-06-16T22:35:11+02:00
|
||||
+++
|
||||
### ExectOS
|
||||
ExectOS supports currently two architectures (i686 and AMD64). To get started today, either download a binaries for one of
|
||||
supported architectures or test drive ExectOS on the QEMU emulator by downloading a disk image. You can find a full list
|
||||
of files, available to download at [this page](https://artifacts.codingworkshop.eu.org/ExectOS/). Each file contains an
|
||||
information about build date, SHA1, architecture and a type of artifact, eg:
|
||||
* ExectOS-20240614-6b70074ec6-i686-bin.tar.gz - This archive contains a binary files that can be copied to USB disk and
|
||||
booted up on bare metal hardware.
|
||||
* ExectOS-20240614-6b70074ec6-i686-lib.tar.gz - Contains a libraries useful for building 3rd party drivers.
|
||||
* ExectOS-20240614-6b70074ec6-i686-sym.tar.gz - This archive includes a debug symbols in PDB format.
|
||||
* ExectOS-20240614-6b70074ec6-i686.img.gz - This is a compressed QEMU disk image, that can be used with this emulator.
|
||||
|
||||
### XTChain
|
||||
Get the latest prebuilt toolchain, needed to compile the ExectOS Operating System. This includes the Clang compiler, and
|
||||
other build utilities you need to cross compile the project, including system core (boot loader, kernel and drivers).
|
||||
The toolchain supports both i686 and AMD64 architectures, as well as ARMv7 and AArch64. Unfortunately, at the moment binary
|
||||
package is available only for Linux host. To download the XTChain, click [here](https://github.com/xt-sys/xtchain/releases).
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
+++
|
||||
title = 'Frequently Asked Questions'
|
||||
date = 2024-06-16T12:33:36+02:00
|
||||
+++
|
||||
#### What is ExectOS?
|
||||
ExectOS is an open-source, general purpose operating system written from scratch and based on new XT architecture.
|
||||
It aims to be modular, maintainable and compatible with existing software.
|
||||
|
||||
#### What does ExectOS mean? What is the origin of this name?
|
||||
The name 'ExectOS' doesn’t have a specific historical origin, as it appears to be a unique creation for this
|
||||
Operating System. The term 'Exec' within ExectOS directly relates to execution - the act of carrying out tasks,
|
||||
processes, and instructions. In the context of operating system, execution involves managing programs, resources,
|
||||
and system operations. Users should associate ExectOS with streamlined performance and reliability.
|
||||
|
||||
#### What does the ExectOS logo present and what is the relation between the logo and the OS name?
|
||||
The three wavy lines in the ExectOS logo evoke a sense of fluidity and movement. Their arrangement, forms a shape
|
||||
reminiscent of the capital letter ‘E,’ directly corresponding to the initial letter of ExectOS. The flowing waves
|
||||
symbolize dynamism, progress, and forward motion. The smooth curves suggest a seamless user experience, while gradient
|
||||
colors represent diversity and adaptability. All of this convey a message of innovation, user-friendliness, and
|
||||
adaptability. It invites users to explore a new operating system that promises a seamless computing experience.
|
||||
|
||||
#### What is the difference between XTOS and ExectOS?
|
||||
XTOS is a common name of the Operating System standard based on the XT architecture. ExectOS is a name of the specific
|
||||
project, that is a reference XTOS implementation, that implements all requirements from a corresponding specification.
|
||||
|
||||
#### What does XT mean?
|
||||
XT is a name of XTOS architecture of an Operating System, that consists of two main components, user mode and kernel
|
||||
mode. It derives mostly from NT™ architecture, as well as uses a couple of ideas from other open source projects.
|
||||
XT is a short for "neXTgen" architecture, but you can also call it "eXTendable".
|
||||
|
||||
#### What architectures does ExectOS support?
|
||||
ExectOS supports the x86_64 (sometimes called AMD64 or EM64T), as well as i686 CPU architectures. However, it requires
|
||||
a modern EFI enabled hardware, thus it is not possible currently to boot ExectOS on a legacy BIOS.
|
||||
|
||||
#### Is ExectOS a Windows replacement?
|
||||
No. ExectOS is a brand new, modern system designed to run applications written for many different types of Operating
|
||||
Systems. This allows to implement any environment subsystem to support applications that are strictly written to the
|
||||
corresponding standard (eg. DOS, or POSIX). This means that running Windows applications might be as well possible at
|
||||
some time. However development is mostly focused on providing system core at the moment.
|
||||
|
||||
#### Is ExectOS another Unix based OS?
|
||||
No. ExectOS implements the XT architecture which derives from NT™ architecture. It is modular, and consists of
|
||||
two main layers: microkernel and user mode. Its' kernel mode has full access to the hardware and system resources and
|
||||
runs code in a protected memory area. It consists of executive services, which is itself made up on many modules that
|
||||
do specific tasks, a kernel and drivers. Unlike the NT™, system does not feature a separate Hardware Abstraction
|
||||
Layer (HAL) between the physical hardware and the rest of the OS. Instead, XT architecture integrates a hardware specific
|
||||
code with the kernel.
|
||||
|
||||
#### Does ExectOS allow to use Windows drivers?
|
||||
This is one of our goals. Thanks to the NT™ drivers compatibility layer provided by ExectOS, you should be able to
|
||||
install and use the same drivers as you can on Windows®.
|
||||
|
||||
#### Can I install ExectOS on a pendrive / USB stick?
|
||||
Yes. This is how it is tested on a bare metal (real hardware).
|
||||
|
||||
#### Program X does not work when I launch it. When can I except things to change?
|
||||
It depends. ExectOS is in early development stage and it is not recommended for everyday usage. At this point we cannot
|
||||
guarantee anything.
|
||||
|
||||
#### When will feature X get added?
|
||||
If you think an idea has merit, you may choose to discuss it on [Discord Server](https://discord.com/invite/zBzJ5qMGX7).
|
||||
However, the best way to get a feature added to ExectOS is to implement it yourself.
|
||||
|
||||
#### When will the project be finished?
|
||||
Writing an Operating System is a complex task that requires time. Other popular Operating Systems, such as Linux, are
|
||||
also constantly being developed to meet the everyday users requirements.
|
||||
|
||||
#### Where can I obtain the source code?
|
||||
ExectOS source code can be obtained from GIT repository available [here](https://git.codingworkshop.eu.org/xt-sys/exectos).
|
||||
It can be also found on [GitHub](https://github.com/xt-sys/exectos) and [GitLab](https://gitlab.com/xt-sys/exectos) mirrors.
|
||||
|
||||
#### Where can I download ExectOS?
|
||||
Each ExectOS build, including binaries, disk image, libraries and debug symbols are available [here](https://artifacts.codingworkshop.eu.org/ExectOS/).
|
||||
|
||||
#### How can I contribute to ExectOS?
|
||||
We are looking for C and Assembler developers for core OS development as well as testers. If you are willing to help,
|
||||
please join our [Discord server](https://discord.com/invite/zBzJ5qMGX7) and contact one of ExectOS developers.
|
||||
|
||||
#### Why don't you use GCC?
|
||||
Because GCC is a crap.
|
||||
|
||||
#### Do you have any kind of tests to check if the code is working as expected?
|
||||
We don't need tests. If it compiles, it is good enough; if it boots up, then it is perfect.
|
||||
|
||||
#### Why don't you help Wine?
|
||||
Wine implements Win32Api only, while ExectOS is a featureful Operating System, that implements a compatibility layer with
|
||||
NT™. This means, ExectOS will be able to run NT™ drivers as well, not only Windows® software. However, thanks
|
||||
to its modular design, it will be possible to implement Win32 subsystem as well at some point, based on Wine.
|
||||
|
||||
#### Why don't you help ReactOS?
|
||||
ExectOS goals are very different from ReactOS, and contrast the project's core philosophy as being quite on different paths.
|
||||
While ReactOS aims to replicate Windows® NT™, ExectOS is a completely new Operating System implementing the XT
|
||||
architecture which derives from NT™. Although both projects share the goal of being NT™ compatible, they intend
|
||||
to achieve it in different ways. What ReactOS tries to replicate, ExectOS only implements as a compatibility layer. Thanks
|
||||
to that, ExectOS does not need to strictly follow NT™ architecture and is capable of providing modern features.
|
||||
|
||||
#### Do you intend to cooperate with ReactOS to achieve common goals?
|
||||
No. We share Wine's opinion on the inappropriate reverse-engineering methods used in the ReactOS project, as well as its
|
||||
association with the TinyKrnl project, which used every possible method of achieving the end result of having a 100%
|
||||
compatible results. This especially applies to the so-called ‘dirty’ way.
|
||||
|
||||
#### Which license does ExectOS use?
|
||||
ExectOS is licensed under the GNU General Public License v3.
|
||||
@@ -0,0 +1,11 @@
|
||||
+++
|
||||
title = 'Source Code'
|
||||
date = 2024-06-16T22:36:47+02:00
|
||||
+++
|
||||
### ExectOS
|
||||
* Main GIT repository: https://git.codingworkshop.eu.org/xt-sys/exectos
|
||||
* GitHub Mirror: https://github.com/xt-sys/exectos
|
||||
|
||||
### XTChain
|
||||
* Main GIT repository: https://git.codingworkshop.eu.org/xt-sys/xtchain
|
||||
* GitHub Mirror: https://github.com/xt-sys/xtchain
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 7.1 KiB |
@@ -0,0 +1,3 @@
|
||||
module:
|
||||
hugoVersion:
|
||||
min: "0.84.0"
|
||||
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
{{- partial "header.html" . -}}
|
||||
<div class="wrapper_content">
|
||||
<div class="content">
|
||||
{{- block "main" . }}{{- end }}
|
||||
</div>
|
||||
</div>
|
||||
{{- partial "footer.html" . -}}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,9 @@
|
||||
{{ define "main" }}
|
||||
<h2>{{ .Title }}</h2>
|
||||
{{ range .Pages.ByPublishDate.Reverse }}
|
||||
<h3><a class="title" href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
|
||||
<a class="summary" href="{{ .RelPermalink }}">
|
||||
<p>{{ .Summary }}</p>
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
{{- partial "header.html" . -}}
|
||||
<div id="content">
|
||||
{{- block "main" . }}{{- end }}
|
||||
</div>
|
||||
{{- partial "footer.html" . -}}
|
||||
{{- partial "script.html" . -}}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
{{ define "main" }}
|
||||
<h2>{{ .Title }}</h2>
|
||||
{{ .Content }}
|
||||
<br /><br />
|
||||
{{ end }}
|
||||
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
{{- partial "header.html" . -}}
|
||||
<div class="wrapper_content">
|
||||
<div class="content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
{{- partial "footer.html" . -}}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
<div class="wrapper_footer">
|
||||
<div class="footer">
|
||||
<div class="footer-left">
|
||||
Copyright© 2017 - 2024, CodingWorkshop
|
||||
</div>
|
||||
<div class="footer-right">
|
||||
Content is available under <a href="https://www.gnu.org/licenses/fdl-1.3.html">GNU Free Documentation License 1.3 or later</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,9 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="/favicon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/style.css">
|
||||
<meta http-equiv="Content-type" content="application/xhtml+xml;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
|
||||
<title>{{ $title := print .Site.Title " | " .Title }}{{ if .IsHome }}{{ $title = .Site.Title }}{{ end }}{{ $title }}</title>
|
||||
</head>
|
||||
@@ -0,0 +1,19 @@
|
||||
<div class="wrapper_header">
|
||||
<div class="header">
|
||||
<h1><a href="{{ .Site.BaseURL }}"><img src="/images/exectos_logo.png" alt="LOGO" width="50px" /> {{ .Site.Title }}</a></h1>
|
||||
<ul>
|
||||
{{ range .Site.Menus.main }}
|
||||
{{ if .HasChildren }}
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ .Name }}<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
{{ range .Children }}
|
||||
<li><a href="{{ .URL }}">{{ .Pre }}{{ .Name }}{{ .Post }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ else }}
|
||||
<li><a href="{{ .URL }}">{{ .Pre }}<b>{{ $text := print .Name | safeHTML }}{{ $text }}{{ .Post }}</b></a></li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,239 @@
|
||||
@import url("/css/fontawesome-min.css");
|
||||
|
||||
@font-face {
|
||||
font-family : 'Source Sans Pro';
|
||||
font-style : normal;
|
||||
font-weight : 400;
|
||||
src : url('/fonts/source-sans-pro-v9-latin-regular.eot');
|
||||
src : local('Source Sans Pro'), local('SourceSansPro-Regular'),
|
||||
url('/fonts/source-sans-pro-v9-latin-regular.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/source-sans-pro-v9-latin-regular.woff2') format('woff2'),
|
||||
url('/fonts/source-sans-pro-v9-latin-regular.woff') format('woff'),
|
||||
url('/fonts/source-sans-pro-v9-latin-regular.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family : 'Source Sans Pro';
|
||||
font-style : italic;
|
||||
font-weight : 400;
|
||||
src : url('/fonts/source-sans-pro-v9-latin-italic.eot');
|
||||
src : local('Source Sans Pro Italic'), local('SourceSansPro-It'),
|
||||
url('/fonts/source-sans-pro-v9-latin-italic.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/source-sans-pro-v9-latin-italic.woff2') format('woff2'),
|
||||
url('/fonts/source-sans-pro-v9-latin-italic.woff') format('woff'),
|
||||
url('/fonts/source-sans-pro-v9-latin-italic.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family : 'Source Sans Pro';
|
||||
font-style : normal;
|
||||
font-weight : 700;
|
||||
src : url('/fonts/source-sans-pro-v9-latin-700.eot');
|
||||
src : local('Source Sans Pro Bold'), local('SourceSansPro-Bold'),
|
||||
url('/fonts/source-sans-pro-v9-latin-700.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/source-sans-pro-v9-latin-700.woff2') format('woff2'),
|
||||
url('/fonts/source-sans-pro-v9-latin-700.woff') format('woff'),
|
||||
url('/fonts/source-sans-pro-v9-latin-700.ttf') format('truetype');
|
||||
}
|
||||
|
||||
:root {
|
||||
color-scheme : light;
|
||||
}
|
||||
|
||||
html {
|
||||
color : light-dark(#333333, #FFFFFF);
|
||||
background-color : light-dark(#FFFFFF, #030C12);
|
||||
margin : 0;
|
||||
padding : 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family : "Source Sans Pro", "Trebuchet MS", "Verdana", sans-serif;
|
||||
margin : 0;
|
||||
padding : 0;
|
||||
}
|
||||
|
||||
code {
|
||||
color : #186196;
|
||||
font-weight : bold;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size : 28px;
|
||||
margin-top : 8px;
|
||||
padding : 1px;
|
||||
vertical-align : middle;
|
||||
}
|
||||
|
||||
h2 {
|
||||
border-bottom : 1px solid #DDDDDD;
|
||||
font-size : 30px;
|
||||
margin-left : -1em;
|
||||
margin-right : -1em;
|
||||
text-decoration : bold;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size : 18px;
|
||||
margin-left : -1em;
|
||||
margin-right : -1em;
|
||||
text-decoration : bold;
|
||||
}
|
||||
|
||||
img {
|
||||
border : 0px;
|
||||
vertical-align : middle;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color : #3C3C3C;
|
||||
border-color : #3D3D3D;
|
||||
border-radius : 4px;
|
||||
color : #ECECEC;
|
||||
display : block;
|
||||
font-size : 13px;
|
||||
line-height : 1.42857143;
|
||||
margin : 0 0 10px;
|
||||
overflow : auto;
|
||||
padding : 9.5px;
|
||||
word-break : break-all;
|
||||
word-wrap : break-word;
|
||||
}
|
||||
|
||||
pre code {
|
||||
color : #ECECEC;
|
||||
font-weight : normal;
|
||||
}
|
||||
|
||||
.content {
|
||||
font-size : 15px;
|
||||
margin-left : 30%;
|
||||
margin-right : 30%;
|
||||
margin-top : 1.5em;
|
||||
}
|
||||
|
||||
.content img {
|
||||
border : 0px;
|
||||
display : block;
|
||||
margin : auto;
|
||||
vertical-align : middle;
|
||||
text-align : center;
|
||||
}
|
||||
|
||||
.content li {
|
||||
list-style-type : square;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
color : #404040;
|
||||
font-family : "Source Sans Pro", "Trebuchet MS", "Verdana", sans-serif;
|
||||
font-size : 10px;
|
||||
text-align : center;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
.copyright a {
|
||||
color : #404040;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
.copyright a:hover {
|
||||
color : #404040;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background : light-dark(#FFFFFF, #030C12);
|
||||
color : light-dark(#000000, #FFFFFF);
|
||||
clear : both;
|
||||
font-family : sans-serif, verdana, Helvetica;
|
||||
font-size : 12px;
|
||||
margin-left : 10px;
|
||||
margin-top : 0.4em;
|
||||
padding : 0;
|
||||
width : 100%
|
||||
}
|
||||
|
||||
.footer-left {
|
||||
position : absolute;
|
||||
text-align : left;
|
||||
width : 50%;
|
||||
}
|
||||
|
||||
.footer-right {
|
||||
left : 50%;
|
||||
position : absolute;
|
||||
text-align : right;
|
||||
width : 50%;
|
||||
}
|
||||
|
||||
.header {
|
||||
background : light-dark(#BEE0FF, #2185D0);
|
||||
border-bottom : 2px solid #186196;
|
||||
color : #186196;
|
||||
clear : both;
|
||||
font-size : 14px;
|
||||
padding-left : 1em;
|
||||
padding-top : 1px;
|
||||
text-align : center;
|
||||
vertical-align : middle;
|
||||
}
|
||||
|
||||
.header a {
|
||||
color : light-dark(#186196, #CCCCCC);
|
||||
padding-left : 5px;
|
||||
padding-right : 5px;
|
||||
padding-top : 1px;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
.header a:hover {
|
||||
color : light-dark(#000055, #FFFFFF);
|
||||
padding-left : 5px;
|
||||
padding-right : 5px;
|
||||
padding-top : 1px;
|
||||
}
|
||||
|
||||
.header img {
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
}
|
||||
|
||||
.header li {
|
||||
display : inline;
|
||||
margin-left : 2em;
|
||||
}
|
||||
|
||||
.header ul {
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
text-align : center;
|
||||
}
|
||||
|
||||
.wrapper_content {
|
||||
margin-bottom : 2.5em;
|
||||
padding : 6em 0 0 0;
|
||||
}
|
||||
|
||||
.wrapper_header {
|
||||
background : light-dark(#FFFFFF, #030C12);
|
||||
color : light-dark(#000000, #FFFFFF);
|
||||
height : 6em;
|
||||
left : 0;
|
||||
position : absolute;
|
||||
position : fixed;
|
||||
top : 0;
|
||||
width : 100%;
|
||||
}
|
||||
|
||||
.wrapper_footer {
|
||||
background : light-dark(#FFFFFF, #030C12);
|
||||
border-top : 2px solid #186196;
|
||||
bottom : 0;
|
||||
color : #000000;
|
||||
height : 1.5em;
|
||||
left : 0;
|
||||
position : absolute;
|
||||
position : fixed;
|
||||
width : 100%
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
@@ -0,0 +1,10 @@
|
||||
name = "ExectOS"
|
||||
license = "GPLv3"
|
||||
licenselink = "https://www.gnu.org/licenses/gpl-3.0.html"
|
||||
description = "ExectOS Theme"
|
||||
homepage = "https://exectos.eu.org"
|
||||
languageCode = "en-us"
|
||||
min_version = "0.1.0"
|
||||
|
||||
[author]
|
||||
name = "Rafal Kupiec"
|
||||
Reference in New Issue
Block a user