A Vue-powered blog & desktop simulator that looks just like Deepin Linux
Live Demo: https://linux.dawidolko.pl
- About
- Project Structure
- Star History
- Quick Start
- Blog & Content Management
- Feature Highlights
- Contributing
- License & Author
linux.dawidolko.pl is an open-source portfolio and blogging platform that perfectly imitates the Deepin Linux desktop inside the browser.
Windows can be opened, moved, resized and layered just like on the real OS; a toy terminal, music player, recursive file system and markdown-powered blog come built-in. All pages are pre-rendered to static files so the whole site can be hosted for free on GitHub Pages. π§π₯οΈ
Tech stack:
- Vue 2 + Vuetify UI
- Tailwind CSS & PostCSS for styling
- Vue Router + Vuex + Axios
- Markdown-it for article rendering
- Fully static /docs output for easy deployment
.
βββ .github/ # GitHub Actions & issue templates
βββ docs/ # Pre-built static files (deployment target)
βββ misc/ # Dev guidelines & helper scripts
βββ public/ # Static assets served at /
βββ src/ # Vue application source
β βββ .env* # Environment configs
β βββ components/ # Re-usable Vue components
β βββ router/ # Vue-Router setup
β βββ store/ # Vuex modules
β βββ views/ # Page-level components
β βββ assets/ # Images, icons, sounds
βββ blog/ # π‘ Your markdown posts live here
βββ generate.py # Converts blog β static markdown JSON
βββ tailwind.config.js
βββ vue.config.js
βββ package*.json # NPM metadata & scripts
βββ LICENSE # AGPL-3.0
βββ README.md # You are here!
Tested with Node 16+ and @vue/cli 4.5.11
# 1 β Clone the repo
git clone https://github.com/dawidolko/Linux-Simulaing-System-GUI
cd Linux-Simulaing-System-GUI
# 2 β Install dependencies
npm install # or yarn / pnpm
# 3 β Run a local dev server (hot-reload)
npm run serve# Generate static markdown metadata
python3 generate.py
# Compile & minify to /docs
npm run buildvue.config.js is already configured so that GitHub Pages serves docs/ as the site root.
| Task | How-to |
|---|---|
| Add / edit articles | Place .md files anywhere under /blog. The first # Heading is used as the title; the first normal line becomes the excerpt. |
| Direct-link to an article | https://linux.dawidolko.pl/#/desktop/post/<FILENAME>.md |
| Update playlist | Edit public/musics.json (see existing format) and store album art in public/musiccovers/. |
| Customise terminal commands | Look inside src/components/Terminal/commands.js. |
| Static rebuild | After changing blog posts or music list, re-run python3 generate.py && npm run build. |
- π» Deepin-inspired window system β drag, resize, minimise, z-index management
- π Markdown-driven blog β write posts in plain
.md, no CMS required - π΅ Mini music player β powered by
vue-aplayer; playlist is JSON-based - πΌοΈ Theming β Tailwind utility classes + Vuetify make style tweaks trivial
- β¨ Zero-backend deployment β everything compiles to static files for GitHub Pages
Whether you want to squash a bug π, add a feature β¨ or fix a typo βοΈβPRs are welcome!
# Fork β clone
git checkout -b feat/amazing-feature
# Make your changes
npm run lint # please keep the linter happy!
# Commit & push
git commit -m "Add amazing feature"
git push origin feat/amazing-feature
# Open a Pull Request πBecause there are no automated GUI tests, please describe what you changed and include screenshots or GIFs when your PR touches the UI.
-
License: GNU AGPL v3 β free as in freedom π
-
Author: Dawid Olko
- Portfolio: https://dawidolko.pl
- GitHub: https://github.com/dawidolko
- LinkedIn: https://www.linkedin.com/in/dawidolko/
Built in three caffeine-fuelled nights β with Vue, Tailwind and tons of penguin love.