diff --git a/404.md b/404.md index 2896fbc5..fa7feb10 100644 --- a/404.md +++ b/404.md @@ -1,7 +1,9 @@ --- +lang: en layout: default -title: 404 Not Found permalink: /404.html +ref: 1 +title: 404 Not Found --- Sorry! diff --git a/_config.yml b/_config.yml index b7f8f740..e8111d78 100644 --- a/_config.yml +++ b/_config.yml @@ -32,6 +32,9 @@ collections: permalink: /doc/:path/ hcl: output: false + qubes-translated: + output: true + allowed_categories: - press diff --git a/_data/doc.yml b/_data/doc.yml deleted file mode 100644 index 371b13bf..00000000 --- a/_data/doc.yml +++ /dev/null @@ -1,15 +0,0 @@ -- category: Introduction - folder: introduction - -- category: Project Security - folder: project-security - -- category: User Documentation - folder: user - -- category: Developer Documentation - folder: developer - -- category: External Documentation - folder: external - diff --git a/_data/download.yml b/_data/download.yml new file mode 100644 index 00000000..4305b051 --- /dev/null +++ b/_data/download.yml @@ -0,0 +1,134 @@ +- htmlsection: hardware + title: Choosing Your Hardware + links: + - url: /doc/system-requirements/ + text: System Requirements + id: 1 + - url: /doc/certified-hardware/ + text: Certified Hardware + id: 2 + - url: /hcl/ + text: Hardware Compatibility List + id: 3 + +- htmlsection: sec + title: Installing Qubes Securely + links: + - url: /doc/installation-guide/ + text: Installation Guide + id: 1 + - url: /security/verifying-signatures/ + text: Verifying Signatures + id: 2 + - url: /doc/install-security/ + text: Installation Security + id: 3 + +- htmlsection: help + title: Help and Support + links: + - url: /support/ + text: Help and Support + id: 1 + - url: /doc/#troubleshooting + text: Troubleshooting Guides + id: 2 + - url: /doc/reporting-bugs/ + text: Report a Bug + id: 3 + +- htmlsection: sec-info + title: Security Information + links: + - url: /security/ + text: Security Center + id: 1 + - url: /security/pack/ + text: Security Pack + id: 2 + - url: /doc/security-guidelines/ + text: Security Guidelines + id: 3 + +- htmlsection: version-info + title: Version Information + links: + - url: /doc/supported-versions/ + text: Supported Versions + id: 1 + - url: /doc/templates/ + text: Templates + id: 2 + - url: /doc/version-scheme/ + text: Version Scheme + id: 3 + +- htmlsection: source-code + title: Source Code + links: + - url: /doc/source-code/ + text: Source Code + id: 1 + - url: /doc/coding-style/ + text: Coding Guidelines + id: 2 + - url: /doc/license/ + text: Software License + id: 3 + +- htmlsection: download-mirrors + title: Download Mirrors + table: + - column: Organization + - column: Location + - column: URL + links: + - url: /downloads/mirrors/#instructions-for-mirror-operators + text: How to contribute a download mirror + +- htmlsection: donation + title: Qubes OS is made possible by your donations! + paragraph: As a free and open-source software project, we rely on donations from users like you in order to keep running. Your contributions directly support the developers who work hard every day to improve your security. Please consider making a donation today. + url: /donate/ + text: Donate + +- htmlsection: survey + title: We want to learn from you! + paragraph: The Qubes team is running our first ever survey of new, prospective, and longtime users. Our goal is to ensure Qubes OS meets the needs of the community by gathering responses to common questions about what the community seeks from Qubes OS. Surveys are 100% anonymous (no IP or timestamp information collected) and hosted on a server we own and operate. 5-10 minutes is all it should take. + url: https://survey.qubes-os.org/index.php?r=survey/index&sid=791682&lang=en + text: Begin Survey + +- htmlsection: loop-releases + releases: + - r_version: testing + snippets: + - snippet: This is a testing release. + url: /doc/testing/ + - snippet: Please help us improve it by reporting any bugs you encounter. + url: /doc/reporting-bugs/ + - snippet: For important work, we recommend the latest stable release. + - r_version: stable + snippets: + - snippet: This is the latest stable Qubes OS release. We recommend this release for all new and existing users. + - r_version: old + snippets: + - snippet: This is an old, supported release. + url: /doc/supported-versions/ + - snippet: For the best Qubes OS experience, we suggest upgrading to the latest stable release. + - r_version: deprecated + snippets: + - snippet: This is an old, unsupported release. + url: /doc/supported-versions/ + - snippet: We strongly recommend upgrading to a supported release in order to receive the latest security updates. + +- htmlsection: download-content + links: + - text: Cryptographic hash values + - text: Detached PGP signature + - text: Qubes Release Signing Key + - text: How to Verify Downloads + url: /security/verifying-signatures/ + - text: All download mirrors + url: #mirrors + hover: View all download mirrors + diff --git a/_data/experts.yml b/_data/experts.yml new file mode 100644 index 00000000..99b8566d --- /dev/null +++ b/_data/experts.yml @@ -0,0 +1,58 @@ +- experts: + title: What the experts are saying about Qubes + expert: + - avatar: https://twitter.com/Snowden/status/781493632293605376 + img: /attachment/site/expert-edward-snowden.jpg + tweet: https://twitter.com/Snowden/status/781493632293605376 + quote: If you're serious about security, Qubes OS is the best OS available today. It's what I use, and free. + name: Edward Snowden + occupation: whistleblower and privacy advocate + - avatar: https://twitter.com/hashbreaker/status/577206817475850240 + img: /attachment/site/expert-daniel-j-bernstein.jpg + tweet: https://twitter.com/hashbreaker/status/577206817475850240 + quote: "Happy thought of the day: An attacker who merely finds a browser bug can't listen to my microphone except when I've told Qubes to enable it." + name: Daniel J. Bernstein + occupation: mathematician, cryptologist, and computer scientist + - avatar: https://twitter.com/micahflee/status/577998730340622337 + img: /attachment/site/expert-micah-lee.jpg + tweet: https://twitter.com/micahflee/status/577998730340622337 + quote: When I use Qubes I feel like a god. Software thinks that it's in control, that it can do what it wants? It can't. I'm in control. + name: Micah Lee + occupation: Freedom of the Press Foundation, The Intercept + - avatar: https://twitter.com/csoghoian + img: /attachment/site/expert-christopher-soghoian.jpg + tweet: https://twitter.com/csoghoian + quote: I am so much happier and less stressed out after switching to QubesOS. Can wholeheartedly recommend. + name: Christopher Soghoian + occupation: privacy researcher, activist, and principal technologist at the ACLU + - avatar: https://twitter.com/isislovecruft + img: /attachment/site/expert-isis-agora-lovecruft.jpg + tweet: https://twitter.com/isislovecruft + quote: With QubesOS, I feel more comfortable accessing Tor Project infrastructure from the same laptop I use to execute random GameBoy ROMs I downloaded from the internet. + name: Isis Agora Lovecruft + occupation: cypherpunk and Tor Project core developer + - avatar: https://twitter.com/petertoddbtc/status/924981145871060996 + img: /attachment/site/expert-peter-todd.jpg + tweet: https://twitter.com/petertoddbtc/status/924981145871060996 + quote: Donated a % of my consulting company's last year revenue to Qubes OS. I rely on it for all my work, and recommend it to clients too. + name: Peter Todd + occupation: Applied Cryptography Consultant + - avatar: https://twitter.com/legind/status/742504400854257664 + img: /attachment/site/expert-bill-budington.jpg + tweet: https://twitter.com/legind/status/742504400854257664 + quote: I really like it [Qubes OS]. If your hardware supports it, I recommend it. Everything is super well thought-out. + name: Bill Budington + occupation: security engineer and technologist, Electronic Frontier Foundation + - avatar: https://twitter.com/kennwhite/status/914924731400425475 + img: /attachment/site/expert-kenn-white.jpg + tweet: https://twitter.com/kennwhite/status/914924731400425475 + quote: Periodic shout out to [Rutkowska] and the QubesOS team for *years* of hard work to improve desktop security. Qubes is the real deal. + name: Kenn White + occupation: security researcher, Open Crypto Audit Project + - avatar: https://twitter.com/vitalikbuterin/status/1086465679904038912 + img: /attachment/site/expert-vitalik-buterin.jpg + tweet: https://twitter.com/vitalikbuterin/status/1086465679904038912 + quote: Trying out Qubes OS (qubes-os.org) recently; linux distro designed around increased security by virtualizing everything and making it really convenient to hop between VMs. Surprisingly good user-friendliness! + name: Vitalik Buterin + occupation: creator of Ethereum + diff --git a/_data/hcl.yml b/_data/hcl.yml new file mode 100644 index 00000000..846a7fb3 --- /dev/null +++ b/_data/hcl.yml @@ -0,0 +1,54 @@ +- htmlsection: hardware + title: Hardware Type + links: + - url: #hardware-laptops + text: Laptop Devices + id: 1 + - url: #hardware-desktops + text: Desktop, Workstation & Servers + id: 2 + - url: #hardware-motherboards + text: Motherboards + id: 3 + - url: /doc/hcl/#generating-and-submitting-new-reports + text: Add Your Device + id: 4 + +- htmlsection: info + title: Information + links: + - url: /doc/hcl/ + text: What is the Hardware Compatibility List (HCL)? + id: 1 + - url: /doc/hcl/#generating-and-submitting-new-reports + text: How do I Submit a Report? + id: 2 + - url: /doc/system-requirements/ + text: Qubes OS System Requirements + id: 3 + - url: /doc/certified-hardware/ + text: Certified Hardware + id: 4 + - url: /doc/hardware-testing/ + text: Hardware Testing + id: 5 + +- htmlsection: colors + title: Marks & Colours + colors: + - green: feature is working correctly + - blue: a blank cell indicates we lack information + - trump: some tweaking is needed, see remarks for more information + - red: does not work or is not present + +- htmlsection: listcol + title: List Columns + +- htmlsection: laptop + title: Laptop Devices + +- htmlsection: desk + title: Desktop, Workstation & Server + +- htmlsection: mother + title: Motherboards diff --git a/_data/includes.yml b/_data/includes.yml new file mode 100644 index 00000000..d52d018b --- /dev/null +++ b/_data/includes.yml @@ -0,0 +1,140 @@ +- section: doc-widget + title: Contents + links: + - url: /doc/ + text: Documentation + icon: fa-book + - url: /doc/doc-guidelines/ + text: Improve the Docs + icon: fa-pencil + - text: View Page Source + icon: fa-code + - text: Edit This Page + icon: fa-code-fork + - url: /security/ + text: Report a Security Issue + icon: fa-lock + - url: /doc/reporting-bugs/ + text: Report a Bug + icon: fa-bug + - url: /support/ + text: Help & Support + icon: fa-life-ring + - url: /donate/ + text: Make a Donation + icon: fa-heart + +- section: intro + links: + - url: /video-tours/ + text: Video Tours + id: 1 + - url: /screenshots/ + text: Screenshots + id: 2 + +- section: news-heading + title: Recent News + links: + - url: /news/ + text: News + id: 1 + - url: /news/categories/ + text: Categories + id: 2 + - url: /statistics/ + text: Statistics + id: 3 + +- section: doc-external + text: This is unofficial, third-party documentation. The Qubes OS Project cannot guarantee the accuracy of this page. Please exercise caution. + +- section: doc-translated + text: This page is an unverified full translation or translation currently in progress. The Qubes OS Project cannot evaluate the accuracy of translations into languages that our team cannot read. + +- section: doc-content + text: Contents + +- section: home-news + snippets: + - snippet: Posted in + - snippet: on + +- section: footer + title: The Qubes OS Project and others + search: Search + go: Go! + ddg: Using DurckDuckGo + links: + - url: https://github.com/QubesOS/qubesos.github.io + text: Website Source Code + id: 1 + - url: http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion + text: Tor Onion Service + id: 2 + - url: /doc/reporting-bugs/ + text: Report a Problem + id: 3 + - url: /privacy/ + text: Privacy Policy + id: 4 + - url: /terms/ + text: Terms of Use + id: 5 + - url: /sitemap.xml + text: Sitemap + id: 6 + +- section: catnews + htmlsections: + - htmlsection: main + title: News by Category + - htmlsection: back + title: Back to main News page + url: /news/ + +- section: news + htmlsections: + - htmlsection: download + title: Download + - htmlsection: news + title: News + url: /news/ + - htmlsection: newscategory + title: News by Category + url: /news/categories/ + +- section: security-xsa + htmlsections: + - htmlsection: statistics + title: Statistics + tts1: Total time span + tts2: years + txp: Total XSAs published + txaq: Total XSAs affecting Qubes OS + pxaq: Percentage of XSAs affecting Qubes OS + - htmlsection: tracker + title: Tracker + column1: Date + column2: XSA + column3: Is Qubes Affected? + yes_short: "Yes" + no_short: "No" + no_extended: No (unused or withdrawn XSA number) + tba: TBA + +- section: security-bulletins + htmlsections: + - htmlsection: table + columns: + - title: Date + - title: Qubes Security Bulletin + +- section: security-canaries + htmlsections: + - htmlsection: table + columns: + - title: Date + - title: Qubes Canary + + diff --git a/_data/index.yml b/_data/index.yml new file mode 100644 index 00000000..ead72de5 --- /dev/null +++ b/_data/index.yml @@ -0,0 +1,472 @@ +- topic: Qubes OS Documentation + subtopic: Welcome to the Qubes OS documentation! + metatopic: Documentation +- title: Introduction + category: introduction + sub-pages: + - url: /intro/ + text: What is Qubes OS? + - url: /video-tours/ + text: Video Tours + - url: /screenshots/ + text: Screenshots + - url: /faq/#users + text: User FAQ + - url: /doc/reporting-bugs/ + text: Reporting Bugs and Other Issues + - url: /support/ + text: Help, Support, Mailing Lists, and Forum + - url: /doc/contributing/ + text: How to Contribute + +- title: Project Security + category: project-security + sub-pages: + - url: /security/ + text: Security Center + - url: /faq/#general--security + text: Security FAQ + - url: /security/pack/ + text: Security Pack + - url: /security/bulletins/ + text: Security Bulletins + - url: /security/canaries/ + text: Canaries + - url: /security/xsa/ + text: Xen Security Advisory (XSA) Tracker + - url: /security/verifying-signatures/ + text: Verifying Signatures + - text: Qubes PGP Keys + url: https://keys.qubes-os.org/keys/ + +- title: User Documentation + subtitle: Core documentation for Qubes users. + category: user + sub-pages: + - title: Choosing Your Hardware + sub-pages: + - url: /doc/system-requirements/ + text: System Requirements + - url: /doc/certified-hardware/ + text: Certified Hardware + - url: /hcl/ + text: Hardware Compatibility List (HCL) + - url: /doc/hardware-testing/ + text: Hardware Testing + - title: Downloading, Installing, and Upgrading Qubes + sub-pages: + - url: /downloads/ + text: Downloads + - url: /doc/installation-guide/ + text: Installation Guide + - url: /doc/upgrade/ + text: Upgrade Guides + - url: /doc/supported-versions/ + text: Supported Versions + - url: /doc/version-scheme/ + text: Version Scheme + - url: /doc/testing/ + text: Testing New Releases and Updates + - title: Common Tasks + sub-pages: + - url: /getting-started/ + text: Getting Started + - url: /doc/copy-paste/ + text: Copying and Pasting Text Between Domains + - url: /doc/copying-files/ + text: Copying and Moving Files Between Domains + - url: /doc/copy-from-dom0/ + text: Copying from (and to) Dom0 + - url: /doc/updating-qubes-os/ + text: Updating Qubes OS + - url: /doc/software-update-dom0/ + text: Installing and Updating Software in Dom0 + - url: /doc/software-update-domu/ + text: Installing and Updating Software in DomUs + - url: /doc/backup-restore/ + text: Backup, Restoration, and Migration + - url: /doc/volume-backup-revert/ + text: Volume Backup and Revert + - url: /doc/disposablevm/ + text: DisposableVMs + - url: /doc/block-devices/ + text: Block (or Storage) Devices + - url: /doc/usb-devices/ + text: USB Devices + - url: /doc/pci-devices/ + text: PCI Devices + - url: /doc/device-handling/ + text: Device Handling + - url: /doc/optical-discs/ + text: Optical Discs + - url: /doc/full-screen-mode/ + text: Fullscreen Mode + - title: Managing Operating Systems within Qubes + sub-pages: + - url: /doc/templates/ + text: TemplateVMs + - url: /doc/templates/fedora/ + text: Fedora + - url: /doc/templates/debian/ + text: Debian + - url: /doc/templates/minimal/ + text: Minimal TemplateVMs + - url: /doc/windows/ + text: Windows + - url: /doc/standalone-and-hvm/ + text: StandaloneVMs and HVMs + - title: Security in Qubes + sub-pages: + - url: /doc/firewall/ + text: Qubes Firewall + - url: /doc/data-leaks/ + text: Understanding and Preventing Data Leaks + - url: /doc/vm-sudo/ + text: Passwordless Root Access in VMs + - url: /doc/device-handling-security/ + text: Device Handling Security + - url: /doc/anti-evil-maid/ + text: Anti Evil Maid + - url: /doc/split-gpg/ + text: Split GPG + - url: /doc/u2f-proxy/ + text: U2F Proxy + - url: /doc/yubi-key/ + text: YubiKey + + - title: Advanced Configuration + sub-pages: + - url: /doc/config-files/ + text: Configuration Files + - url: /doc/secondary-storage/ + text: Storing AppVMs on Secondary Drives + - url: /doc/rpc-policy/ + text: RPC Policies + - url: /doc/usb-qubes/ + text: USB Qubes + - url: /doc/managing-vm-kernel/ + text: Managing VM Kernels + - url: /doc/salt/ + text: Salt Management Stack + - url: /doc/disposablevm-customization/ + text: DisposableVM Customization + - url: /doc/bind-dirs/ + text: Making Any File Persistent Using `bind-dirs` + - url: /doc/gui-configuration/ + text: GUI Configuration + - url: /doc/resize-disk-image/ + text: Resizing Disk Images + - url: /doc/newer-hardware-troubleshooting/ + text: Troubleshooting Newer Hardware + - url: /doc/mount-from-other-os/ + text: Mounting and Decrypting Qubes Partitions from Outside Qubes + - url: /doc/kde/ + text: KDE + - url: /doc/i3/ + text: i3 Window Manager + - url: /doc/awesome/ + text: awesome Window Manager + + - title: Troubleshooting + sub-pages: + - url: /doc/installation-troubleshooting + text: Installation Troubleshooting + - url: /doc/uefi-troubleshooting/ + text: UEFI Troubleshooting + - text: Suspend/Resume Troubleshooting + url: /doc/suspend-resume-troubleshooting/ + - text: Application Shortcut Troubleshooting + url: /doc/managing-appvm-shortcuts/ + - text: VM Troubleshooting + url: /doc/vm-troubleshooting/ + - text: HVM Troubleshooting + url: /doc/hvm-troubleshooting/ + - text: Disk Troubleshooting + url: /doc/disk-troubleshooting/ + - text: PCI Troubleshooting + url: /doc/pci-troubleshooting/ + - text: USB Troubleshooting + url: /doc/usb-troubleshooting/ + - text: GUI Troubleshooting + url: /doc/gui-troubleshooting/ + - text: Media Troubleshooting + url: /doc/media-troubleshooting/ + - text: Firewall Troubleshooting + url: /doc/firewall/#firewall-troubleshooting + - text: VPN Troubleshooting + url: /doc/vpn-troubleshooting/ + - text: Update Troubleshooting + url: /doc/update-troubleshooting/ + + - title: Reference Pages + sub-pages: + - url: /doc/tools/ + text: Command-line Tools + - url: /doc/glossary/ + text: Glossary + - url: /doc/qubes-service/ + text: Qubes Service Framework + - url: /doc/qrexec/ + text: Command Execution in VMs (and Qubes RPC) + - text: Deprecated Documentation + url: https://github.com/QubesOS/qubesos.github.io#deprecated-documentation + +- title: Developer Documentation + subtitle: Core documentation for Qubes developers and advanced users. + category: developer + sub-pages: + - title: General + sub-pages: + - url: /faq/#developers + text: Developer FAQ + - url: /doc/package-contributions/ + text: Package Contributions + - url: /doc/doc-guidelines/ + text: Documentation Guidelines + - text: Community-Developed Feature Tracker + url: /qubes-issues/ + - url: /gsoc/ + text: Google Summer of Code + - url: /gsod/ + text: Google Season of Docs + - url: /doc/devel-books/ + text: Books for Developers + - url: /doc/style-guide/ + text: Style Guide + - url: /doc/usability-ux/ + text: Usability & UX + + - title: Code + sub-pages: + - url: /doc/source-code/ + text: Source Code + - url: /doc/license/ + text: Software License + - url: /doc/coding-style/ + text: Coding Guidelines + - url: /doc/code-signing/ + text: Code Signing + + - title: System + sub-pages: + - url: /doc/architecture/ + text: Qubes OS Architecture Overview + - url: /doc/security-critical-code/ + text: Security-critical Code in Qubes OS + - text: Qubes Core Admin + url: https://dev.qubes-os.org/projects/core-admin/en/latest/ + - text: Qubes Core Admin Client + url: https://dev.qubes-os.org/projects/core-admin-client/en/latest/ + - text: Qubes Admin API + url: /news/2017/06/27/qubes-admin-api/ + - text: Qubes Core Stack + url: /news/2017/10/03/core3/ + - url: /doc/gui/ + text: Qubes GUI virtualization protocol + - url: /doc/networking/ + text: Networking in Qubes + - url: /doc/template-implementation/ + text: Implementation of template sharing and updating + - url: /doc/storage-pools/ + text: Storage Pools + - url: /doc/audio-virtualization/ + text: Audio virtualization + + - title: Services + sub-pages: + - url: /doc/qfilecopy/ + text: Inter-domain file copying + - url: /doc/qmemman/ + text: Dynamic memory management in Qubes + - url: /doc/dvm-impl/ + text: Implementation of DisposableVMs + - url: /doc/dom0-secure-updates/ + text: Dom0 secure update mechanism + - url: /doc/qrexec/ + text: "Qrexec: secure communication across domains" + - url: /doc/qrexec-internals/ + text: "Qrexec: Qubes RPC internals" + - url: /doc/qrexec-socket-services/ + text: "Qrexec: Socket-based services" + + - title: Debugging + sub-pages: + - url: /doc/profiling/ + text: Profiling python code + - url: /doc/test-bench/ + text: Test environment in separate machine for automatic tests + - url: /doc/automated-tests/ + text: Automated tests + - url: /doc/vm-interface/ + text: VM-dom0 internal configuration interface + - url: /doc/windows-debugging/ + text: Debugging Windows VMs + - url: /doc/safe-remote-ttys/ + text: Safe Remote Dom0 Terminals + - url: /doc/mount-lvm-image/ + text: Mount LVM Image + + - title: Building + sub-pages: + - url: /doc/qubes-builder/ + text: Building Qubes + - url: /doc/development-workflow/ + text: Development Workflow + - url: /doc/qubes-iso-building/ + text: Building Qubes OS ISO + - url: https://github.com/QubesOS/qubes-template-configs + text: Qubes Template Configuration Files + + - title: Releases + sub-pages: + - url: /doc/releases/notes/ + text: Release notes + - url: /doc/releases/schedules/ + text: Release schedules + - url: /doc/releases/todo/ + text: Release checklist + +- title: External Documentation + subtitle: Unofficial, third-party documentation from the Qubes community and others. + snippets: + - snippet: For more, please see + - snippet: Qubes Community Documentation + url: https://github.com/Qubes-Community/Contents/tree/master/docs + category: external + sub-pages: + - title: Operating System Guides + sub-pages: + - text: "Template: Ubuntu" + url: https://github.com/Qubes-Community/Contents/blob/master/docs/os/ubuntu.md + - text: "Template: Whonix" + url: https://github.com/Qubes-Community/Contents/blob/master/docs/privacy/whonix.md + - text: "Template: CentOS" + url: https://github.com/Qubes-Community/Contents/blob/master/docs/os/centos.md + - text: "Template: Gentoo" + url: https://github.com/Qubes-Community/Contents/blob/master/docs/os/gentoo.md + - text: Pentesting + url: https://github.com/Qubes-Community/Contents/blob/master/docs/os/pentesting.md + - text: "Pentesting: BlackArch" + url: https://github.com/Qubes-Community/Contents/blob/master/docs/os/pentesting/blackarch.md + - text: "Pentesting: Kali" + url: https://github.com/Qubes-Community/Contents/blob/master/docs/os/pentesting/kali.md + - text: "Pentesting: PTF" + url: https://github.com/Qubes-Community/Contents/blob/master/docs/os/pentesting/ptf.md + - text: Tips for Using Linux in an HVM + url: https://github.com/Qubes-Community/Contents/blob/master/docs/os/linux-hvm-tips.md + - text: Creating a NetBSD VM + url: https://github.com/Qubes-Community/Contents/blob/master/docs/os/netbsd.md + + - title: Security Guides + sub-pages: + - text: Security Guidelines + url: https://github.com/Qubes-Community/Contents/blob/master/docs/security/security-guidelines.md + - text: Using Multi-factor Authentication with Qubes + url: https://github.com/Qubes-Community/Contents/blob/master/docs/security/multifactor-authentication.md + - text: How to Set Up a Split Bitcoin Wallet in Qubes + url: https://github.com/Qubes-Community/Contents/blob/master/docs/security/split-bitcoin.md + - text: Split dm-crypt + url: https://github.com/rustybird/qubes-split-dm-crypt + - text: Split SSH + url: https://kushaldas.in/posts/using-split-ssh-in-qubesos-4-0.html + - text: Using OnlyKey with Qubes OS + url: https://docs.crp.to/qubes.html + + - title: Privacy Guides + sub-pages: + - text: Whonix for Privacy & Anonymity + url: https://github.com/Qubes-Community/Contents/blob/master/docs/privacy/whonix.md + - text: Running Tails in Qubes + url: https://github.com/Qubes-Community/Contents/blob/master/docs/privacy/tails.md + - text: Anonymizing your MAC Address + url: https://github.com/Qubes-Community/Contents/blob/master/docs/privacy/anonymizing-your-mac-address.md + - text: Signal + url: https://github.com/Qubes-Community/Contents/blob/master/docs/privacy/signal.md + - text: Reducing the fingerprint of the text-based web browser w3m + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/w3m.md + + - title: Configuration Guides + sub-pages: + - text: Qubes Tips and Tricks + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/tips-and-tricks.md + - text: How to set up a ProxyVM as a VPN Gateway + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/vpn.md + - text: Multibooting + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/multiboot.md + - text: Changing your Time Zone + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/change-time-zone.md + - text: Installing ZFS in Qubes + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/zfs.md + - text: Mutt Guide + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/mutt.md + - text: Postfix Guide + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/postfix.md + - text: Fetchmail Guide + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/fetchmail.md + - text: Creating Custom NetVMs and ProxyVMs + url: https://theinvisiblethings.blogspot.com/2011/09/playing-with-qubes-networking-for-fun.html + - text: How to make proxy for individual tcp connection from networkless VM + url: https://groups.google.com/group/qubes-devel/msg/4ca950ab6d7cd11a + - text: Adding Bridge Support to the NetVM (EXPERIMENTAL) + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/network-bridge-support.md + - text: Enabling TRIM for SSD disks + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/disk-trim.md + - text: Configuring a Network Printer + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/network-printer.md + - text: Using External Audio Devices + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/external-audio.md + - text: Rxvt Guide + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/rxvt.md + - text: Adding SSD storage cache + url: https://groups.google.com/d/msgid/qubes-users/a08359c9-9eb0-4d1a-ad92-a8a9bc676ea6%40googlegroups.com + - text: How to Make a Multimedia TemplateVM + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/multimedia.md + - text: How to install an Nvidia driver in dom0 + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/install-nvidia-driver.md + + + - title: Customization Guides + sub-pages: + - text: Customizing Fedora minimal templates + url: https://github.com/Qubes-Community/Contents/blob/master/docs/customization/fedora-minimal-template-customization.md + - text: Customizing Windows 7 templates + url: https://github.com/Qubes-Community/Contents/blob/master/docs/customization/windows-template-customization.md + - text: Language Localization + url: https://github.com/Qubes-Community/Contents/blob/master/docs/customization/language-localization.md + - text: Dark Theme in Dom0 and DomU + url: https://github.com/Qubes-Community/Contents/blob/master/docs/customization/dark-theme.md + - text: "Safely Removing TemplateVM Packages (Example: Thunderbird)" + url: https://github.com/Qubes-Community/Contents/blob/master/docs/customization/removing-templatevm-packages.md + + - title: Troubleshooting + sub-pages: + - text: Nvidia troubleshooting guide + url: https://github.com/Qubes-Community/Contents/blob/master/docs/troubleshooting/nvidia-troubleshooting.md + - text: Lenovo ThinkPad Troubleshooting + url: https://github.com/Qubes-Community/Contents/blob/master/docs/troubleshooting/thinkpad-troubleshooting.md + - text: Apple MacBook Troubleshooting + url: https://github.com/Qubes-Community/Contents/blob/master/docs/troubleshooting/macbook-troubleshooting.md + - text: Sony Vaio Troubleshooting + url: https://github.com/Qubes-Community/Contents/blob/master/docs/troubleshooting/sony-vaio-tinkering.md + - text: Intel Integrated Graphics Troubleshooting + url: https://github.com/Qubes-Community/Contents/blob/master/docs/troubleshooting/intel-igfx-troubleshooting.md + - text: Multiboot Troubleshooting + url: https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/multiboot.md#troubleshooting + - text: Application Troubleshooting + url: https://github.com/Qubes-Community/Contents/blob/master/docs/troubleshooting/application-troubleshooting.md + - text: Tails Troubleshooting + url: https://github.com/Qubes-Community/Contents/blob/master/docs/troubleshooting/tails-troubleshooting.md + + - title: Building Guides + sub-pages: + - text: Building a TemplateVM based on a new OS (ArchLinux example) + url: https://github.com/Qubes-Community/Contents/blob/master/docs/building/building-non-fedora-template.md + - text: Building the Archlinux Template + url: https://github.com/Qubes-Community/Contents/blob/master/docs/building/building-archlinux-template.md + - text: Building the Whonix Templates + url: https://github.com/Qubes-Community/Contents/blob/master/docs/building/building-whonix-template.md + - text: How to compile kernels for dom0 + url: https://groups.google.com/d/topic/qubes-users/yBeUJPwKwHM/discussion + + + diff --git a/_data/style_guide_content.yml b/_data/style_guide_content.yml new file mode 100644 index 00000000..b4d3ba96 --- /dev/null +++ b/_data/style_guide_content.yml @@ -0,0 +1,45 @@ +- title: Style Guide +- htmlsection: fonts + title: Fonts + paragraph: Currently Qubes OS is using the following fonts for our website, branding, and other public facing (non-OS) materials. The OS itself uses what is normal for a user’s desktop environment of choice. + snippets: + - snippet: Custom Qubes Font + - snippet: "Family:" + +- htmlsection: colors + title: Colors + paragraph: + - snippets: + - snippet: The following + - snippet: grayscale + - snippet: colors are currently used on the Qubes website and documentation, and they will eventually match colors within the OS itself. + - snippets: + - snippet: The following + - snippet: colors + - snippet: are currently being used on the Qubes website and documentation, and they will eventually match the colors within the OS itself! + +- htmlsection: icons + title: Icons + paragraph: + - snippets: + - snippet: Currently, all the icons on the Qubes-OS.org website are generated using + - snippet: FontAwesome. + url: http://fortawesome.github.io/Font-Awesome/ + - snippets: As more custom work is done to generate icons for the operating system itself, they will be added here! + +- htmlsection: logos + title: Logos + paragraph: + - snippets: + - snippet: The following is a collection of various sizes and versions of the Qubes logo used both in the OS itself and on our website. + - snippet: The artwork is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). + - snippet: The code is licensed under GNU GPLv2. + - snippet: GPLv2 and the source code can be + - snippet: downloaded here. + url: https://github.com/QubesOS/qubes-artwork + rows: + - row: Image + - row: Size + - row: Format + - row: Download + text: this image diff --git a/_data/teamtexts.yml b/_data/teamtexts.yml new file mode 100644 index 00000000..ec8ce5c3 --- /dev/null +++ b/_data/teamtexts.yml @@ -0,0 +1,42 @@ +- htmlsection: upperlinks + security: + - text: Report a security issue + url: /security/ + bug: + - text: Report a bug + url: /doc/reporting-bugs/ + help: + - text: Get help and support + url: /support/ + join: + - text: Join the team + url: /join/ + partner: + - text: Qubes Partners + url: /partners/ + cert: + - text: Request hardware certification + url: /hardware-certification/ + biz: + - text: Business inquiries + press: + - text: Press inquiries + + + +- htmlsection: core-team + title: Core Team + picture: Picture of + email: Email + website: Website + +- htmlsection: emeritus + title: Emeritus + text: Emeriti are honorary members of the Qubes team who previously contributed to the project in a central way but who are no longer currently active. + +- htmlsection: community + title: Community Contributors + text: Qubes would not be where it is today without the input of the many users, testers, and developers of all skill levels who have come together to form this thriving community. The community's discussions take place primarily on the + mail: Qubes mailing lists + + diff --git a/news/categories/index.html b/_includes/catnews.html similarity index 69% rename from news/categories/index.html rename to _includes/catnews.html index 91496932..08703526 100644 --- a/news/categories/index.html +++ b/_includes/catnews.html @@ -1,8 +1,13 @@ ---- -layout: news -title: News Categories -permalink: /news/categories/ ---- +{% if page.lang == nil or page.lang == "en" %} + {% assign inc = site.data.includes %} +{% else %} + {% assign inc = site.data.translation[page.lang].includes %} + {% if inc == nil or iinc.size == 0 %} + {% assign inc = site.data.includes %} + {% endif %} +{% endif %} + +{% assign cat = inc | where_exp: "item", "item.section == 'catnews'" | first %} {% assign raw_categories = "" %} {% for post in site.posts %} @@ -22,9 +27,9 @@ {% endif %} {% endfor %} -

News by Category

+

{{ cat.htmlsections[0].title }}

- Back to main News page +{{ cat.htmlsections[1].title }}

{% for category in categories %} {{ category | capitalize }} @@ -39,3 +44,4 @@

{{ category | capitalize }}

{% endfor %} {% endfor %} + diff --git a/_includes/doc-content.html b/_includes/doc-content.html index f5cb6b90..10c8a2cd 100644 --- a/_includes/doc-content.html +++ b/_includes/doc-content.html @@ -1,10 +1,22 @@ +
+{% if page.lang == nil or page.lang == "en" %} + {% assign doc_content = site.data.includes %} +{% else %} + {% assign doc_content = site.data.translation[page.lang].includes %} + {% if doc_content == nil or doc_content.size == 0 %} + {% assign doc_content = site.data.includes %} + {% endif %} +{% endif %} + +{% assign docs = doc_content | where_exp: "item", "item.section == 'doc-content'" | first %} +
-

Contents

+

{{ docs.text }}

- Contents + {{ docs.text }}
{% include doc-widget.html %} @@ -13,7 +25,24 @@

Contents

+ {{ content }} + + + {% assign perm_last_part = page.url | split: '/' | last | lstrip %} + {% if perm_last_part == "bulletins" %} + {% include sec-bulletin.html %} + {% endif %} + {% if perm_last_part == "canaries" %} + {% include sec-canaries.html %} + {% endif %} + {% if perm_last_part == "xsa" %} + {% include xsa.html %} + {% endif %} + {% if perm_last_part == "style-guide" %} + {% include style-guide.html %} + {% endif %} +

diff --git a/_includes/doc-external-warning.html b/_includes/doc-external-warning.html index 86d7510d..1bf6a4fa 100644 --- a/_includes/doc-external-warning.html +++ b/_includes/doc-external-warning.html @@ -1,6 +1,16 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign msgs = site.data.includes %} +{% else %} + {% assign msgs = site.data.translation[page.lang].includes %} + {% if msgs == nil or msgs.size == 0 %} + {% assign msgs = site.data.includes %} + {% endif %} +{% endif %} + +{% assign external = msgs | where_exp: "item", "item.section == 'doc-external'" | first %} + + diff --git a/_includes/doc-heading.html b/_includes/doc-heading.html index eb7e24f9..e8df06a3 100644 --- a/_includes/doc-heading.html +++ b/_includes/doc-heading.html @@ -1,25 +1,46 @@ -{% if page.permalink == "/doc/" %} -

- - Documentation - -

+{% assign doc_segments = page.relative_path | split: '/' %} +{% if page.lang == nil or page.lang == "en" %} + {% assign indexed = site.data.index %} + {% assign lang = "" %} {% else %} - {% assign doc_segments = page.relative_path | split: '/' %} - {% for section in site.data.doc %} - {% if doc_segments contains section.folder %} -

- - - {{ section.category }} - -

- {% if section.category == "External Documentation" %} - {% include doc-external-warning.html %} - {% endif %} - {% if page.translated %} - {% include doc-translated-warning.html %} - {% endif %} + {% assign lang = "/" | append: page.lang %} + {% assign indexed = site.data.translation[page.lang].index %} + {% if indexed == nil or indexed.size == 0 %} + {% assign indexed = site.data.index %} + {% endif %} +{% endif %} + +{% assign doc_link = lang | append: "/doc/" %} +{% assign doc_ind = site.doc | concat: site.qubes-translated | where:'permalink', doc_link %} +{% if doc_ind.size == 0 %} + {% assign doc_link = "/doc/" %} + {% assign indexed = site.data.index %} +{% endif %} + +{% if page.permalink == doc_link %} + {% assign meta = indexed | where_exp: "item", "item.topic != nil" %} +

+ + {{ meta[0].metatopic }} +

+{% else %} + +{% assign ind = indexed | where_exp: "item", "item.topic == nil" %} + +{% for section in ind %} + {% if doc_segments contains section.category %} + + {% assign s = section.title | slugify %} +

+ + + {{ section.category | replace: "-", " "}} + +

+ {% if section.category == "external" %} + {% include doc-external-warning.html %} {% endif %} - {% endfor %} + {% endif %} +{% endfor %} + {% endif %} diff --git a/_includes/doc-translated-warning.html b/_includes/doc-translated-warning.html index ceabb641..c447be52 100644 --- a/_includes/doc-translated-warning.html +++ b/_includes/doc-translated-warning.html @@ -1,5 +1,15 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign msgs = site.data.includes %} +{% else %} + {% assign msgs = site.data.translation[page.lang].includes %} + {% if msgs == nil or msgs.size == 0 %} + {% assign msgs = site.data.includes %} + {% endif %} +{% endif %} + +{% assign translated = msgs | where_exp: "item", "item.section == 'doc-translated'" | first %} + diff --git a/_includes/doc-widget.html b/_includes/doc-widget.html index d918823e..5cef8724 100644 --- a/_includes/doc-widget.html +++ b/_includes/doc-widget.html @@ -1,47 +1,39 @@ - - Documentation -
- - Improve the Docs -
- - View Page Source -
- - Edit This Page -
- - Report a Security Issue -
- - Report a Bug -
- - Help & Support -
- - Make a Donation - +{% if page.lang == nil or page.lang == "en" %} + {% assign doc_content = site.data.includes %} +{% else %} + {% assign doc_content = site.data.translation[page.lang].includes %} + {% if doc_content == nil or doc_content.size == 0 %} + {% assign doc_content = site.data.includes %} + {% endif %} +{% endif %} + +{% assign docs = doc_content | where_exp: "item", "item.section == 'doc-widget'" | first %} + +{% if lang == "" %} + {% assign master_edit = site.project_repo_path | append: "/qubes-doc/edit/master" | append: page.relative_path | remove_first: '_doc' %} + {% assign master_blob = site.project_repo_path | append: "/qubes-doc/blob/master" | append: page.relative_path | remove_first: '_doc' %} +{% else %} + {% assign master_edit = site.project_repo_path | append: "/qubes-translated/edit/master" | append: page.relative_path | remove_first: '_qubes-translated' %} + {% assign master_blob = site.project_repo_path | append: "/qubes-translated/blob/master" | append: page.relative_path| remove_first: '_qubes-translated' %} +{% endif %} + +{% for item in docs.links %} + {% if item.icon == "fa-book" %} + {% assign a_class = "btn btn-primary btn-block" %} + {% else %} + {% assign a_class = "page-source-link btn btn-default btn-block" %} + {% endif %} + + {% if item.icon == "fa-code" %} + {% assign a_href = master_blob %} + {% elsif item.icon == "fa-code-fork" %} + {% assign a_href = master_edit %} + {% else %} + {% assign a_href = item.url %} + {% endif %} + + {{ item.text }} +
+{% endfor %} diff --git a/_includes/downloads.html b/_includes/downloads.html new file mode 100644 index 00000000..54fe78fd --- /dev/null +++ b/_includes/downloads.html @@ -0,0 +1,393 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign down = site.data.download %} + {% assign lang = "" %} +{% else %} + {% assign lang = "/" | append: page.lang %} + {% assign down = site.data.translation[page.lang].download %} + {% if down == nil or down.size == 0 %} + {% assign down = site.data.download %} + {% endif %} +{% endif %} + +{% assign hw = down | where_exp: "item", "item.htmlsection == 'hardware'" | first %} +{% assign sr = hw.links | where_exp: "item", "item.id == 1" | first %} +{% assign ch = hw.links | where_exp: "item", "item.id == 2" | first %} +{% assign hcl = hw.links | where_exp: "item", "item.id == 3" | first %} + +{% assign sec = down | where_exp: "item", "item.htmlsection == 'sec'" | first %} +{% assign ig = sec.links | where_exp: "item", "item.id == 1" | first %} +{% assign vs = sec.links | where_exp: "item", "item.id == 2" | first %} +{% assign isc = sec.links | where_exp: "item", "item.id == 3" | first %} + +{% assign help = down | where_exp: "item", "item.htmlsection == 'help'" | first %} +{% assign hs = help.links | where_exp: "item", "item.id == 1" | first %} +{% assign tg = help.links | where_exp: "item", "item.id == 2" | first %} +{% assign rb = help.links | where_exp: "item", "item.id == 3" | first %} + +
+
+
+

{{ hw.title }}

+ +
+
+

{{ sec.title }}

+ +
+
+

{{ help.title }}

+ +
+
+ +{% assign surv = down | where_exp: "item", "item.htmlsection == 'survey'" | first %} + +
+
+
+

{{ surv.title }}

+

+ {{ surv.paragraph }} +

+ {{ surv.text }} +
+
+ + +{% assign ls = down | where_exp: "item", "item.htmlsection == 'loop-releases'" | first %} +{% assign test = ls.releases | where_exp: "item", "item.r_version == 'testing'" | first %} +{% assign stable = ls.releases | where_exp: "item", "item.r_version == 'stable'" | first %} +{% assign old = ls.releases | where_exp: "item", "item.r_version == 'old'" | first %} +{% assign depr = ls.releases | where_exp: "item", "item.r_version == 'deprecated'" | first %} + +
+{% for releasex in site.data.downloads.releases %} +
+
+ + {% assign release_name = releasex[0] %} + {% assign release = releasex[1] %} + {% assign testing = release.testing | default: false %} + {% assign latest = release.latest | default: false %} + {% assign aging = release.aging | default: false %} + {% assign deprecated = release.deprecated | default: false %} +

{{ release_name }}

+ + {% if testing %} + + {% endif %} + {% if latest %} + + {% endif %} + + {% if aging %} + + {% endif %} + + {% if deprecated %} + + {% endif %} +
+
+ + +{% assign code = down | where_exp: "item", "item.htmlsection == 'source-code'" | first %} +{% assign scode = code.links | where_exp: "item", "item.id == 1" | first %} +{% assign cg = code.links | where_exp: "item", "item.id == 2" | first %} +{% assign sl = code.links | where_exp: "item", "item.id == 3" | first %} + +{% assign downcont = down | where_exp: "item", "item.htmlsection == 'download-content'" | first %} + +
+ {% for source in release.sources %} + {% if source.display %} +
+ + + {{ source.filename }} + + {% for verifier in source.verifiers %} + {% if verifier[0] == "hash" %} + + {{ downcont.links[0].text }} + + {% elsif verifier[0] == "sig" %} + + {{ downcont.links[1].text }} + + {% elsif verifier[0] == "key" %} + + {{ downcont.links[2].text }} + + {% endif %} + {% endfor %} +
+ {% endif %} + {% endfor %} +
+ +
+
+
+{% endfor %} + +{% assign dm = down | where_exp: "item", "item.htmlsection == 'download-mirrors'" | first %} + +
+
+ +
+
+ +{% assign secinfo = down | where_exp: "item", "item.htmlsection == 'sec-info'" | first %} +{% assign sc = secinfo.links | where_exp: "item", "item.id == 1" | first %} +{% assign sp = secinfo.links | where_exp: "item", "item.id == 2" | first %} +{% assign sg = secinfo.links | where_exp: "item", "item.id == 3" | first %} + +{% assign ver = down | where_exp: "item", "item.htmlsection == 'version-info'" | first %} +{% assign sv = ver.links | where_exp: "item", "item.id == 1" | first %} +{% assign t = ver.links | where_exp: "item", "item.id == 2" | first %} +{% assign vs = ver.links | where_exp: "item", "item.id == 3" | first %} + +
+
+
+

{{ secinfo.title }}

+ +
+
+

{{ ver.title }}

+ +
+
+

{{ code.title }}

+ +
+
+ +
diff --git a/_includes/experts.html b/_includes/experts.html new file mode 100644 index 00000000..597a575e --- /dev/null +++ b/_includes/experts.html @@ -0,0 +1,37 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign experts = site.data.experts %} +{% else %} + {% assign experts = site.data.translation[page.lang].experts %} + {% if experts == nil or experts.size == 0 %} + {% assign experts = site.data.experts %} + {% endif %} +{% endif %} +{% assign experts = experts | where_exp: "item", "item.experts == nil" | first %} + +
+
+
+

{{ experts.title }}

+
+
+
+{% for item in experts.expert %} + +{% endfor %} +
+ {% include footer.html %} +
diff --git a/_includes/footer.html b/_includes/footer.html index e35391b7..26d2048e 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -1,63 +1,88 @@
+{% if page.lang == nil or page.lang == "en" %} + {% assign inc = site.data.includes %} + {% assign archies = site.data.architecture %} + {% assign lang = "/" %} +{% else %} + {% assign inc = site.data.translation[page.lang].includes %} + {% if inc == nil or inc.size == 0 %} + {% assign inc = site.data.includes %} + {% endif %} + {% assign archies = site.data.translation[page.lang].architecture %} + {% if archies == nil or archies.size == 0 %} + {% assign archies = site.data.architecture %} + {% endif %} + {% assign lang = "/" | append: page.lang %} +{% endif %} + +{% assign foot = inc | where_exp: "item", "item.section == 'footer'" | first %} + - - {% endfor %} -
-
diff --git a/_includes/home-news.html b/_includes/home-news.html new file mode 100644 index 00000000..8142c825 --- /dev/null +++ b/_includes/home-news.html @@ -0,0 +1,24 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign home_content = site.data.includes %} +{% else %} + {% assign home_content = site.data.translation[page.lang].includes %} + {% if home_content == nil or home_content.size == 0 %} + {% assign home_content = site.data.includes %} + {% endif %} +{% endif %} + +{% assign n = home_content | where_exp: "item", "item.section == 'home-news'" | first %} + +{% for post in site.posts limit:7 %} + +{% endfor %} + diff --git a/_includes/home-research.html b/_includes/home-research.html new file mode 100644 index 00000000..b7bd4778 --- /dev/null +++ b/_includes/home-research.html @@ -0,0 +1,9 @@ +{% for research in site.data.research.papers limit:6 %} + +{% endfor %} + diff --git a/_includes/intro.html b/_includes/intro.html new file mode 100644 index 00000000..fcad7d26 --- /dev/null +++ b/_includes/intro.html @@ -0,0 +1,27 @@ +
+{% if page.lang == nil or page.lang == "en" %} + {% assign iincludes = site.data.includes %} +{% else %} + {% assign iincludes = site.data.translation[page.lang].includes %} + {% if iincludes == nil or iincludes.size == 0 %} + {% assign iincludes = site.data.includes %} + {% endif %} +{% endif %} + +{% assign intros = iincludes | where_exp: "item", "item.section == 'intro'" | first %} + +{% assign vid = intros.links | where_exp: "item", "item.id == 1" | first %} +{% assign scrn = intros.links | where_exp: "item", "item.id == 2" | first %} + +
+
+

+ + {{ page.title }} +

+
+ +
diff --git a/_includes/nav-doc.html b/_includes/nav-doc.html deleted file mode 100644 index 16e0fe3a..00000000 --- a/_includes/nav-doc.html +++ /dev/null @@ -1,11 +0,0 @@ -{% assign items = include.items %} - -{% for item in items %} - {% assign item_url = item | prepend:"/doc/" | append:"/" %} - - {% for p in site.doc %} - {% if p.url == item_url %} - {{ p.title }} - {% endif %} - {% endfor %} -{% endfor %} diff --git a/_includes/news-heading.html b/_includes/news-heading.html index a4849339..71b61b8f 100644 --- a/_includes/news-heading.html +++ b/_includes/news-heading.html @@ -1,18 +1,33 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign iincludes = site.data.includes %} +{% else %} + {% assign iincludes = site.data.translation[page.lang].includes %} + {% if iincludes == nil or iincludes.size == 0 %} + {% assign iincludes = site.data.includes %} + {% endif %} +{% endif %} + +{% assign news = iincludes | where_exp: "item", "item.section == 'news-heading'" | first %} + +{% assign n = news.links | where_exp: "item", "item.id == 1" | first %} +{% assign nc = news.links | where_exp: "item", "item.id == 2" | first %} +{% assign s = news.links | where_exp: "item", "item.id == 3" | first %} +
+ diff --git a/_includes/news-widget.html b/_includes/news-widget.html index 0094fd66..1088051d 100644 --- a/_includes/news-widget.html +++ b/_includes/news-widget.html @@ -1,5 +1,16 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign iincludes = site.data.includes %} +{% else %} + {% assign iincludes = site.data.translation[page.lang].includes %} + {% if iincludes == nil or iincludes.size == 0 %} + {% assign iincludes = site.data.includes %} + {% endif %} +{% endif %} + +{% assign news = iincludes | where_exp: "item", "item.section == 'news-heading'" | first %} +

- Recent News + {{ news.title }}

    diff --git a/_includes/news.html b/_includes/news.html new file mode 100644 index 00000000..a2e2fc5f --- /dev/null +++ b/_includes/news.html @@ -0,0 +1,73 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign inc = site.data.includes %} + {% assign lang = "" %} +{% else %} + {% assign lang = "/" | append: page.lang %} + {% assign inc = site.data.translation[page.lang].includes %} + {% if inc == nil or inc.size == 0 %} + {% assign inc = site.data.includes %} + {% endif %} +{% endif %} + +{% assign news = inc | where_exp: "item", "item.section == 'news'" | first %} + +{% assign team_link = lang | append: "/team/" %} +{% assign t = site.pages | concat: site.qubes-translated | where:'permalink', team_link %} +{% if t.size == 0 %} + {% assign team_link = "/team/" %} +{% endif %} + +{% assign nsc_link = lang | append: "/news/categories/" %} +{% assign nsc = site.posts | where:'permalink', nsc_link %} +{% if nsc.size == 0 %} + {% assign nsc_link = "/news/categories/" %} +{% endif %} + + + diff --git a/_includes/partners.html b/_includes/partners.html new file mode 100644 index 00000000..e358253d --- /dev/null +++ b/_includes/partners.html @@ -0,0 +1,66 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign partners = site.data.partners %} +{% else %} + {% assign partners = site.data.translation[page.lang].partners %} + {% if partners == nil or partners.size == 0 %} + {% assign partners = site.data.partners %} + {% endif %} +{% endif %} + + + +{% for p in partners %} +{% for partner in p.partners %} +{% assign pars = partner.paragraph %} +{% if partner.url %} + + + + +{% else %} + + + + +{% endif %} +{% endfor %} +{% endfor %} + +
    + + + + +

    {{ partner.title }}

    + {% for p in pars %} +

    + {% for s in p.snippets %} + {% if s.url != nil %} + {{ s.snippet }} + {% else %} + {{ s.snippet }} + {% endif %} + {% endfor %} +

    + {% endfor %} +

    {{ partner.title }}

    +

    {{ partner.title }}

    + {% for p in pars %} +

    + {% for s in p.snippets %} + {% if s.url != nil %} + {{ s.snippet }} + {% elsif s.bold %} + {{ s.snippet }} + {% else %} + {{ s.snippet }} + {% endif %} + {% endfor %} +

    + {% endfor %} +
    + + + + + diff --git a/_includes/research.html b/_includes/research.html new file mode 100644 index 00000000..fadcd0e9 --- /dev/null +++ b/_includes/research.html @@ -0,0 +1,13 @@ + +{% for category in site.data.research.categories %} +

    {{category.name}}

    +
      + {% for paper in site.data.research.papers %} + {% if paper.category == category.slug %} +
    • + {{paper.title}} by {{paper.author}}{% if paper.date %}, {{paper.date}}{% endif %} +
    • + {% endif %} + {% endfor %} +
    +{% endfor %} diff --git a/_includes/sec-bulletin.html b/_includes/sec-bulletin.html new file mode 100644 index 00000000..5732bbe6 --- /dev/null +++ b/_includes/sec-bulletin.html @@ -0,0 +1,27 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign inc = site.data.includes %} +{% else %} + {% assign inc = site.data.translation[page.lang].includes %} + {% if inc == nil or inc.size == 0 %} + {% assign inc = site.data.includes %} + {% endif %} +{% endif %} + +{% assign sec = inc | where_exp: "item", "item.section == 'security-bulletins'" | first %} + + + + {% for item in sec.htmlsections[0].columns %} + + {% endfor %} + + +{% for qsb in site.data.qsb reversed %} + + + + + +{% endfor %} +
    {{ item.title }}
    {{ qsb.date }}QSB #{{ qsb.qsb }}: {{ qsb.title | truncate: 68 }}
    + diff --git a/_includes/sec-canaries.html b/_includes/sec-canaries.html new file mode 100644 index 00000000..871b29bd --- /dev/null +++ b/_includes/sec-canaries.html @@ -0,0 +1,27 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign sec = site.data.includes %} +{% else %} + {% assign sec = site.data.translation[page.lang].includes %} + {% if sec == nil or sec.size == 0 %} + {% assign sec = site.data.includes %} + {% endif %} +{% endif %} + +{% assign secs = sec | where_exp: "item", "item.section == 'security-canaries'" | first %} + + + + + {% for item in secs.htmlsections[0].columns %} + + {% endfor %} + + +{% for canary in site.data.canary reversed %} + + + + + +{% endfor %} +
    {{ item.title }}
    {{ canary.date }}Qubes Canary #{{ canary.canary }}
    diff --git a/_includes/style-guide.html b/_includes/style-guide.html new file mode 100644 index 00000000..9f3db9b9 --- /dev/null +++ b/_includes/style-guide.html @@ -0,0 +1,122 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign style = site.data.style_guide_content %} +{% else %} + {% assign style = site.data.translation[page.lang].style_guide_content %} + {% if style == nil or style.size == 0 %} + {% assign style = site.data.style_guide_content %} + {% endif %} +{% endif %} + +{% assign fonts = style | where_exp: "item", "item.htmlsection == 'fonts'" | first %} +{% assign colors = style | where_exp: "item", "item.htmlsection == 'colors'" | first %} +{% assign icons = style | where_exp: "item", "item.htmlsection == 'icons'" | first %} +{% assign logos = style | where_exp: "item", "item.htmlsection == 'logos'" | first %} + +

    {{ style[0].title }}

    + +

    {{ fonts.title }}

    + +

    {{ fonts.paragraph }}

    + +
    +{% for font in site.data.styleguide.fonts %} +
    +
    +
    {{ fonts.snippets[0].snippet }}
    +
    +
    + {{ fonts.snippets[1].snippet }} {{font.family}}
    +
    +
    +{% endfor %} +
    + +
    + +

    {{ colors.title }}

    + +{% assign snippet = colors.paragraph[0].snippets %} +

    {{ snippet[0].snippet }} {{ snippet[1].snippet }} {{ snippet[2].snippet }}

    + + +
    +{% for color in site.data.styleguide.colors %} + {% if color.type == "grayscale" %} +
    +
    + {{color.name}} + #{{color.hex | downcase}} +
    + {% endif %} +{% endfor %} +
    + +{% assign snippet = colors.paragraph[1].snippets %} +

    {{ snippet[0].snippet }} {{ snippet[1].snippet }} {{ snippet[2].snippet }}

    + + +
    +{% for color in site.data.styleguide.colors %} + {% if color.type == "colors" %} +
    +
    + {{color.name}} + #{{color.hex | downcase}} +
    + {% endif %} +{% endfor %} +
    + +
    +

    {{ icons.title }}

    + +{% assign snippet = icons.paragraph[0].snippets %} +

    +{% for s in snippet %} + {% if s.url != nil %} + {{ s.snippet }} + {% else %} + {{ s.snippet }} + {% endif %} +{% endfor %} +.

    + +

    {{ icons.paragraph[1].snippets }}

    + +
    + +

    {{ logos.title }}

    + +{% assign snippet = logos.paragraph[0].snippets %} +

    +{% for s in snippet %} + {% if s.url != nil %} + {{ s.snippet }} + {% else %} + {{ s.snippet }} + {% endif %} +{% endfor %} +.

    + + +
    +{% for logo in site.data.styleguide.logos %} + {% for version in logo.versions %} +
    +
    +
    + +
    +
    +
    +

    + {{ logos.rows[0].row }}: {{logo.image}}
    + {{ logos.rows[1].row }}: {{version.size}}
    + {{ logos.rows[2].row }}: {{version.format}}
    + {{ logos.rows[3].row }}: {{ logos.rows[3].text }} +

    +
    +
    + {% endfor %} +{% endfor %} +
    diff --git a/_includes/team-simple.html b/_includes/team-simple.html index 792f2406..35302d7d 100644 --- a/_includes/team-simple.html +++ b/_includes/team-simple.html @@ -1,6 +1,18 @@
    - - {{team.name}} +{% if page.lang == nil or page.lang == "en" %} + {% assign lang = "" %} +{% else %} + {% assign lang = "/" | append: page.lang %} +{% endif %} + +{% assign team_link = lang | append: "/team/" %} +{% assign t = site.pages | concat: site.qubes-translated | where:'permalink', team_link %} +{% if t.size == 0 %} + {% assign team_link = "/team/" %} +{% endif %} + + + {{ team.name }} {{team.role}} {% if team.fingerprint %} diff --git a/pages/team.html b/_includes/team.html similarity index 55% rename from pages/team.html rename to _includes/team.html index 68234c8f..edc2eead 100644 --- a/pages/team.html +++ b/_includes/team.html @@ -1,24 +1,40 @@ ---- -layout: team -title: Team -permalink: /team/ -redirect_from: -- /people/ -- /doc/QubesDevelopers/ -- /wiki/QubesDevelopers/ ---- +{% if page.lang == nil or page.lang == "en" %} + {% assign teamed = site.data.teamtexts %} + {% assign lang = "" %} +{% else %} + {% assign lang = "/" | append: page.lang %} + {% assign teamed = site.data.translation[page.lang].teamtexts %} + {% if teamed == nil or teamed.size == 0 %} + {% assign teamed = site.data.teamtexts %} + {% endif %} +{% endif %} + +{% assign coreteam = teamed | where_exp: "item", "item.htmlsection == 'core-team'" | first %} +{% assign joined = teamed | where_exp: "item", "item.htmlsection == 'join'" | first %} +{% assign emeritus = teamed | where_exp: "item", "item.htmlsection == 'emeritus'" | first %} +{% assign community = teamed | where_exp: "item", "item.htmlsection == 'community'" | first %} + + +{% assign team_link = lang | append: "/team/" %} +{% assign teams = site.pages | concat: site.qubes-translated | where:'permalink', team_link %} +{% if teams.size == 0 %} + {% assign team_link = "/team/" %} +{% endif %} + + -
    +
    -

    Core Team

    +

    {{ coreteam.title }}

    - {% for team in site.data.team %} + + {% for team in site.data.team %} {% if team.type == "core" %}
    {% if team.picture %} - + @@ -29,7 +45,7 @@

    Core Team

    {% assign name_array = team.name | split:" " %} - +

    {{ team.name }}

    @@ -43,8 +59,8 @@

    {% endif %} {% if team.email %} - Email + title="{{ coreteam.email }}"> + {{ coreteam.email }} {% endif %} {% if team.github %} @@ -55,8 +71,8 @@

    {% endif %} {% if team.website %} - Website + title="{{ coreteam.website }}"> + {{ coreteam.website }} {% endif %}

    @@ -69,20 +85,19 @@

    {% endif %} {% endfor %} - +-->
    +
    -

    Emeritus

    +

    {{ emeritus.title }}

    - Emeriti are honorary members of the Qubes team who previously contributed - to the project in a central way but who are no longer currently active. + {{ emeritus.text }}

    {% for team in site.data.team %} @@ -101,17 +116,15 @@

    Emeritus

    {% endif %} {% endfor %}
    +
    -

    - Community Contributors -

    -

    - Qubes would not be where it is today without the input of the many users, - testers, and developers of all skill levels who have come together to form - this thriving community. The community's discussions take place primarily - on the Qubes mailing lists and forum. -

    +

    + {{ community.title }} +

    +

    + {{ community.text }} {{ community.mail }}. +

    {% for team in site.data.team %} {% if team.type == "community" %} @@ -120,13 +133,15 @@

    {% include team-simple.html %}
    - {% if team.fingerprint %} -
    - {{ team.fingerprint }} +
    + {% if team.fingerprint %} + {{team.fingerprint}} + {% endif %} + {% if team.pgp_key %} + {{name_array[0]}}'s PGP Key + {% endif %}
    - {% endif %}
    {% endif %} {% endfor %}

    - diff --git a/_includes/xsa.html b/_includes/xsa.html new file mode 100644 index 00000000..8e6bdc68 --- /dev/null +++ b/_includes/xsa.html @@ -0,0 +1,89 @@ +{% if page.lang == nil or page.lang == "en" %} + {% assign inc = site.data.includes %} +{% else %} + {% assign inc = site.data.translation[page.lang].includes %} + {% if inc == nil or inc.size == 0 %} + {% assign inc = site.data.includes %} + {% endif %} +{% endif %} + +{% assign sec = inc | where_exp: "item", "item.section == 'security-xsa'" | first %} +{% assign statistics = sec.htmlsections[0] %} +{% assign tracker = sec.htmlsections[1] %} + +

    {{statistics.title}}

    + +{% assign date_first = site.data.xsa.first.date %} +{% assign date_first_epoch = date_first | date: "%s" %} +{% assign date_last = site.data.xsa.last.date %} +{% assign date_last_epoch = date_last | date: "%s" %} +{% assign timespan_epoch = date_last_epoch | minus: date_first_epoch %} +{% assign timespan_human = timespan_epoch | divided_by: 31536000.0 | round: 1 %} +{% assign xsa_total = site.data.xsa | size | plus: 1.0 %} +{% assign xsa_unused = 0.0 %} +{% assign xsa_affected = 0.0 %} +{% for xsa in site.data.xsa %} + {% if xsa.affected == true %} + {% assign xsa_affected = xsa_affected | plus: 1.0 %} + {% endif %} + {% if xsa.unused == true %} + {% assign xsa_unused = xsa_unused | plus: 1.0 %} + {% endif %} +{% endfor %} +{% assign xsa_used = xsa_total | minus: xsa_unused %} +{% assign affected_percentage = xsa_affected | divided_by: xsa_used | times: 100.0 | round: 2 %} + +
      +
    • {{ statistics.tts1 }}: {{ timespan_human }} {{ statistics.tts2 }} ({{ date_first }} - {{ date_last }})
    • +
    • {{ statistics.txp }}: {{ xsa_used | round }}
    • +
    • {{ statistics.txaq }}: {{ xsa_affected | round }}
    • +
    • {{ statistics.pxaq }}: {{ affected_percentage }}
    • +
    + +

    {{ tracker.title }}

    + + + + + + + +{% for xsa in site.data.xsa reversed %} + + + + + + +{% endfor %} +
    {{ tracker.column1 }}{{ tracker.column2 }}{{ tracker.column3 }}
    {{ xsa.date }} + + XSA-{{ xsa.xsa }}  + + {% if xsa.affected == false %} + {% if xsa.unused %} + {{ tracker.no_extended }} + {% elsif xsa.mitigation %} + ({{ xsa.mitigation }}) + {% else %} + {{ tracker.no_short }} + {% endif %} + {% elsif xsa.affected == true %} + {{ tracker.yes_short }} + {% if xsa.qsb %} + | QSB-{{ xsa.qsb }}  + {% endif %} + {% elsif xsa.affected == "tba" %} + {% if xsa.tba %} + {{ tracker.tba }}  + {% else %} + {{ tracker.tba }} + {% endif %} + {% else %} + {% endif %} +
    diff --git a/_layouts/default.html b/_layouts/default.html index bcd438cc..43c48974 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,33 +1,49 @@ - + {% include head.html %} {% include header.html %} diff --git a/_layouts/doc-index.html b/_layouts/doc-index.html new file mode 100644 index 00000000..597e8c1f --- /dev/null +++ b/_layouts/doc-index.html @@ -0,0 +1,120 @@ + + +{% include head.html %} + + {% include header.html %} +
    + {% include doc-heading.html %} + +
    + {% if page.lang == nil or page.lang == "en" %} + {% assign doc_content = site.data.includes %} + {% assign lang = "" %} + {% assign indexed = site.data.index %} + {% else %} + {% assign lang = "/" | append: page.lang %} + {% assign doc_content = site.data.translation[page.lang].includes %} + {% if doc_content == nil or doc_content.size == 0 %} + {% assign doc_content = site.data.includes %} + {% endif %} + {% assign indexed = site.data.translation[page.lang].index %} + {% if indexed == nil or indexed.size == 0 %} + {% assign indexed = site.data.index %} + {% endif %} + {% endif %} + + {% assign docs = doc_content | where_exp: "item", "item.section == 'doc-content'" | first %} + +
    +
    +
    +

    Contents

    +
    + Contents +
    +
    + {% include doc-widget.html %} +
    +
    +
    +
    +
    + + {% assign ind = indexed | where_exp: "item", "item.topic == nil" %} + + {% assign index_english = site.data.index | where_exp: "item", "item.topic == nil" %} + {% assign topic = indexed | where_exp: "item", "item.topic != nil" | first %} +

    {{ topic.topic }}

    +

    {{ topic.subtopic }}

    + {% assign english_count = 0 %} + + {% for item in ind %} + {% assign item_en = index_english[english_count] %} + {% assign english_count = english_count | plus: 1 %} + + +

    {{ item.title }}

    + {% if item.subtitle %} +

    {{ item.subtitle }}

    + {% endif %} + {% assign subpages = item.sub-pages | where_exp: "item", "item.title == nil" %} + {% assign subpages2 = item.sub-pages | where_exp: "item", "item.title != nil" %} + {% assign subsubpages_en = item_en.sub-pages | where_exp: "item", "item.title != nil" %} +
      + {% for sub in subpages %} +
    • {{ sub.text }}
    • + {% endfor %} + + {% assign sub_count = 0 %} + {% for sub2 in subpages2 %} + {% assign sub_o2 = subsubpages_en[sub_count] %} + {% assign sub_count = sub_count | plus: 1 %} + + {% if sub2.url == nil %} + +

      {{ sub2.title }}

      + {% else %} + + {% endif %} + {% assign subpages3 = sub2.sub-pages %} + + {% endfor %} +
    + {% endfor %} + +
    +
    +
    +
    +
    + {% include doc-widget.html %} +
    +
    + {% include footer.html %} + + + + +
    + + diff --git a/_layouts/downloads.html b/_layouts/downloads.html new file mode 100644 index 00000000..ff6c96e4 --- /dev/null +++ b/_layouts/downloads.html @@ -0,0 +1,39 @@ + + + {% include head.html %} + + {% include header.html %} +
    +

    + {% if page.lang == nil or page.lang == "en" %} + {% assign archies = site.data.architecture %} + {% else %} + {% assign archies = site.data.translation[page.lang].architecture %} + {% if archies == nil or archies.size == 0 %} + {% assign archies = site.data.architecture %} + {% endif %} + {% endif %} + {% for section in archies %} + {% if section.url == page.permalink %} + + {% else %} + {% for sub in section.sub-pages %} + {% if sub.url == page.permalink %} + + {% endif %} + {% endfor %} + {% endif %} + {% endfor %} + {{ page.title }} +

    + {{ content }} + + {% include downloads.html %} + {% include footer.html %} + + +
    + + diff --git a/_layouts/experts.html b/_layouts/experts.html new file mode 100644 index 00000000..0cfff06d --- /dev/null +++ b/_layouts/experts.html @@ -0,0 +1,11 @@ + + + {% include head.html %} + + + {% include header.html %} + {{ content }} + {% include experts.html %} + + + diff --git a/_layouts/full.html b/_layouts/full.html index 9d91506a..906cba92 100644 --- a/_layouts/full.html +++ b/_layouts/full.html @@ -1,21 +1,35 @@ - + {% include head.html %} {% include header.html %}

    {% assign page_icon = "fa-page" %} - {% for section in site.data.architecture %}{% if section.url == page.permalink %} - {% assign page_icon = section.icon %} + {% if page.lang == nil or page.lang == "en" %} + {% assign archies = site.data.architecture %} + {% else %} + {% assign archies = site.data.translation[page.lang].architecture %} + {% if archies == nil or archies.size == 0 %} + {% assign archies = site.data.architecture %} + {% endif %} + {% endif %} + {% for section in archies %} + {% if section.url == page.permalink %} + {% assign page_icon = section.icon %} {% else %} - {% for sub in section.sub-pages %}{% if sub.url == page.permalink %} - {% assign page_icon = sub.icon %}{% endif %}{% endfor %} - {% endif %}{% endfor %} - {{ page.title }} + {% for sub in section.sub-pages %} + {% if sub.url == page.permalink %} + {% assign page_icon = sub.icon %} + {% endif %} + {% endfor %} + {% endif %} + {% endfor %} + {{ page.title }}

    {{ content }} + {% include hcl.html %}
    {% include footer.html %} diff --git a/_layouts/home.html b/_layouts/home.html index affb22d8..34333eab 100644 --- a/_layouts/home.html +++ b/_layouts/home.html @@ -2,6 +2,7 @@ {% include head.html %} + {% include header.html %} {{ content }} diff --git a/_layouts/news.html b/_layouts/news.html index a0544e74..940bb373 100644 --- a/_layouts/news.html +++ b/_layouts/news.html @@ -1,18 +1,27 @@ - -{% include head.html %} - -{% include header.html %} -
    - {% include news-heading.html %} -
    -
    -
    -
    - {{ content }} -
    -
    -
    + + {% include head.html %} + + {% include header.html %} +
    + {% include news-heading.html %} + +
    +
    +
    +
    + {% assign perm_last_part = page.url | split: '/' | last | lstrip %} + {% if perm_last_part == "news" %} + {% include news.html %} + {% endif %} + {% if perm_last_part == "categories" %} + {% include catnews.html %} + {% endif %} + + {{ content }} +
    +
    +
    {% include footer.html %}
    diff --git a/_layouts/post.html b/_layouts/post.html index 7150fc51..ed9bc600 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -1,47 +1,59 @@ - + {% include head.html %} {% include header.html %} -
    - {% include news-heading.html %} -
    -
    -
    -
    -

    {{ page.title }}

    -
    + {% include news-heading.html %} + + {% if page.lang == nil or page.lang == "en" %} + {% assign lang = "" %} + {% else %} + {% assign lang = "/" | append: page.lang %} + {% endif %} + + {% assign team_link = lang | append: "/team/" %} + {% assign t = site.pages | concat: site.doc | concat: site.qubes-translated | where:'permalink', team_link %} + {% if t.size == 0 %} + {% assign team_link = "/team/" %} + {% endif %} +
    +
    +
    +
    +

    {{ page.title }}

    + -
    -
    +
    {{ content }}
    diff --git a/_layouts/sidebar.html b/_layouts/sidebar.html index eee7c3c9..eb5e2e36 100644 --- a/_layouts/sidebar.html +++ b/_layouts/sidebar.html @@ -6,17 +6,25 @@

    {% if page.icon %} - + {% else %} - {% for section in site.data.architecture %} + {% if page.lang == nil or page.lang == "en" %} + {% assign archies = site.data.architecture %} + {% else %} + {% assign archies = site.data.translation[page.lang].architecture %} + {% if archies == nil or archies.size == 0 %} + {% assign archies = site.data.architecture %} + {% endif %} + {% endif %} + {% for section in archies %} {% if section.url == page.permalink %} - + {% else %} - {% for sub in section.sub-pages %} - {% if sub.url == page.permalink %} - - {% endif %} - {% endfor %} + {% for sub in section.sub-pages %} + {% if sub.url == page.permalink %} + + {% endif %} + {% endfor %} {% endif %} {% endfor %} {% endif %} diff --git a/_layouts/team.html b/_layouts/team.html index 0cba5c64..1e0d08c0 100644 --- a/_layouts/team.html +++ b/_layouts/team.html @@ -1,34 +1,59 @@ - -{% include head.html %} - -{% include header.html %} -
    - - {{ content }} - {% include footer.html %} -
    + + {% include head.html %} + + {% include header.html %} + +{% if page.lang == nil or page.lang == "en" %} + {% assign teamed = site.data.teamtexts %} + {% assign lang = "" %} +{% else %} + {% assign lang = "/" | append: page.lang %} + {% assign teamed = site.data.translation[page.lang].teamtexts %} + {% if teamed == nil or teamed.size == 0 %} + {% assign teamed = site.data.teamtexts %} + {% endif %} +{% endif %} + +{% assign upperlinks = teamed | where_exp: "item", "item.htmlsection == 'upperlinks'" | first %} + +{% assign team_link = lang | append: "/team/" %} +{% assign teams = site.pages | concat: site.qubes-translated | where:'permalink', team_link %} +{% if teams.size == 0 %} + {% assign team_link = "/team/" %} +{% endif %} + + diff --git a/_sass/_header.scss b/_sass/_header.scss index 6d2ddac9..d08be156 100644 --- a/_sass/_header.scss +++ b/_sass/_header.scss @@ -85,6 +85,66 @@ background-color: $gray-darker; } } + + // Language Switcher + .langdropbtn-lg { + border: none; + padding: 10px 15px; + margin-left: 25px; + } + + .langdropdown-lg { + position: relative; + display: inline-block; + } + + .langdropdown-content { + display: none; + position: absolute; + text-align: center; + background-color: $gray-lighter; + border: 1px solid $gray-light; + margin-top: 5px; + padding: 10px; + z-index: 1; + a { + color: $gray-base; + font-family: $ostrich-heavy; + font-size: 21px; + padding: 10px; + } + } + + .langdropdown-content a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; + } + + /* .dropdown:hover .dropdown-content {display: block;} */ + /* display the element with ID `dd` which is a sibling of the (checked) checkbox with ID `toggle` */ + #langdropdown-toggle-lg:checked ~ #langdropdown-dd-lg { + display: block; + } + + .langdropdown:hover .langdropbtn-lg { + background-color: $gray-light; + border-radius: $base-radius; + } + + /* "hide" the checkbox (`display: none` doesn't work everwhere properly) */ + #langdropdown-toggle-lg { + position: absolute; + top: -10000vh; + left: -10000vw; + opacity: 0; + } + + .langdropdown-sm { + display: none; + } + } /* Makes links not wrap */ @@ -97,6 +157,10 @@ letter-spacing: 0px; } } + .langdropdown-lg { + padding: 10px 5px; + margin-left: 15px; + } } } @@ -136,5 +200,43 @@ } } } + + // Language Switcher + .langdropbtn-sm { + border: none; + padding: 9px 10px; + margin-right: 15px; + margin-top: 3px; + margin-bottom: 8px; + } + + .langdropdown-sm { + position: relative; + display: inline-block; + float: right; + } + + /* .dropdown:hover .dropdown-content {display: block;} */ + /* display the element with ID `dd` which is a sibling of the (checked) checkbox with ID `toggle` */ + #langdropdown-toggle-sm:checked ~ #langdropdown-dd-sm { + display: block; + } + + .langdropdown:hover .langdropbtn-sm { + background-color: $gray-light; + border-radius: $base-radius; + } + + /* "hide" the checkbox (`display: none` doesn't work everwhere properly) */ + #langdropdown-toggle-sm { + position: absolute; + top: -10000vh; + left: -10000vw; + opacity: 0; + } + + .langdropdown-lg { + display: none; + } } } diff --git a/_sass/_toc.scss b/_sass/_toc.scss index da40a912..7f7c9981 100644 --- a/_sass/_toc.scss +++ b/_sass/_toc.scss @@ -74,6 +74,6 @@ #toc-container { padding-bottom: 15px; - margin-bottom: 30px; + margin-bottom: 30px; border-bottom: 1px solid $gray-light; } diff --git a/css/main.scss b/css/main.scss index dca64050..8e94fdde 100755 --- a/css/main.scss +++ b/css/main.scss @@ -152,6 +152,7 @@ article table { display: block; overflow: auto; border-collapse: collapse; + white-space: nowrap; margin: 0 0 25px; } article td, article th { diff --git a/news/categories/index.md b/news/categories/index.md new file mode 100644 index 00000000..b6d40ba1 --- /dev/null +++ b/news/categories/index.md @@ -0,0 +1,8 @@ +--- +lang: en +layout: news +permalink: /news/categories/ +ref: 219 +title: News Categories +--- + diff --git a/news/index.html b/news/index.html deleted file mode 100644 index f21e0620..00000000 --- a/news/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: news -title: News -permalink: /news/ -redirect_from: /en/news/ ---- - - diff --git a/news/index.md b/news/index.md new file mode 100644 index 00000000..ed04c01b --- /dev/null +++ b/news/index.md @@ -0,0 +1,9 @@ +--- +lang: en +layout: news +permalink: /news/ +redirect_from: /en/news/ +ref: 220 +title: News +--- + diff --git a/pages/donate.md b/pages/donate.md index 1d9c4ae7..43e7812a 100644 --- a/pages/donate.md +++ b/pages/donate.md @@ -1,11 +1,13 @@ --- +lang: en layout: default -title: Donate to Qubes permalink: /donate/ redirect_from: - /en/donate/ - /doc/Donations/ - /wiki/Donations/ +ref: 5 +title: Donate to Qubes --- Your donation directly supports the continued development of Qubes OS. @@ -38,20 +40,18 @@ Thank you! Are you an organization, company, or individual who believes in our vision and wants to make an impact on our efforts? [Become a Qubes Partner][Qubes Partners page] by giving a significant financial contribution. - ## Help us spread the word If you are a Qubes OS user or support our cause, help us expand our community by introducing Qubes to your circle, including: - - Privacy advocates - - IT companies - - Individuals who value and appreciate privacy in general - - Bitcoin companies - - Sysadmins and other professionals who work with security +- Privacy advocates +- IT companies +- Individuals who value and appreciate privacy in general +- Bitcoin companies +- Sysadmins and other professionals who work with security There are also [many more ways to contribute][contributing]! - ## FAQs on donating Frequently asked questions about Qubes donations. @@ -134,14 +134,12 @@ Qubes OS is a free and open source operating system that focuses on security and Its architecture is built to enable you to define and visualize different security environments on your computer and control how they interact, helping you to get your work done safely. Visit our [introduction page to Qubes][intro page] or watch a [video overview of the system][video page] to learn more. - ## Thank you! - [open-collective-faq]: https://opencollective.com/faq [Open Collective]: https://opencollective.com/qubes-os [Open Collective donate]: https://opencollective.com/qubes-os#support diff --git a/pages/downloads.html b/pages/downloads.html deleted file mode 100644 index 0a4bcbc6..00000000 --- a/pages/downloads.html +++ /dev/null @@ -1,346 +0,0 @@ ---- -layout: default -title: Downloads -permalink: /downloads/ -redirect_from: -- /doc/QubesDownloads/ -- /wiki/QubesDownloads/ ---- - - -
    -
    -
    -

    We want to learn from you!

    -

    - The Qubes team is running our first ever survey of new, prospective, and - longtime users. Our goal is to ensure Qubes OS meets the needs of the - community by gathering responses to common questions about what the - community seeks from Qubes OS. Surveys are 100% anonymous (no IP or - timestamp information collected) and hosted on a server we own and - operate. 5-10 minutes is all it should take. -

    - Begin Survey -
    -
    -
    -{% for releasex in site.data.downloads.releases %} -
    -
    - {% assign release_name = releasex[0] %} - {% assign release = releasex[1] %} - {% assign testing = release.testing | default: false %} - {% assign latest = release.latest | default: false %} - {% assign aging = release.aging | default: false %} - {% assign deprecated = release.deprecated | default: false %} -

    - {{ release_name }} -

    - {% if testing %} - - {% endif %} - {% if latest %} - - {% endif %} - {% if aging %} - - {% endif %} - {% if deprecated %} - - {% endif %} -
    -
    -
    - {% for source in release.sources %} - {% if source.display %} -
    - - - {{ source.filename }} - - {% for verifier in source.verifiers %} - {% if verifier[0] == "hash" %} - - Cryptographic hash values - - {% elsif verifier[0] == "sig" %} - - Detached PGP signature - - {% elsif verifier[0] == "key" %} - - Qubes Release Signing Key - - {% endif %} - {% endfor %} -
    - {% endif %} - {% endfor %} -
    - -
    -
    -
    -{% endfor %} -
    -
    - -
    -
    -
    -
    -
    -

    Security Information

    - -
    -
    -

    Version Information

    - -
    - -
    - diff --git a/pages/downloads.md b/pages/downloads.md new file mode 100644 index 00000000..c1adbf18 --- /dev/null +++ b/pages/downloads.md @@ -0,0 +1,11 @@ +--- +lang: en +layout: downloads +permalink: /downloads/ +redirect_from: +- /doc/QubesDownloads/ +- /wiki/QubesDownloads/ +ref: 2 +title: Download Qubes OS +--- + diff --git a/pages/home.html b/pages/home.html index cb5dd718..226d710f 100644 --- a/pages/home.html +++ b/pages/home.html @@ -1,4 +1,5 @@ --- +lang: en layout: home title: "Qubes OS: A reasonably secure operating system" permalink: / @@ -7,6 +8,7 @@ - /wiki/WikiStart/ - /trac/ - /trac/WikiStart/ +ref: 7 --- @@ -45,7 +47,7 @@

    What the