Starting point for a website (#1114)

* Create a simple Zola website on a subdirectory

This uses the [Juice theme](https://www.getzola.org/themes/juice/), with
small customizations. It could be further customized later.

* Automate website content update

RISS and Makefile are used to pull the website content from various
parts of the neovide repository (reusing images and the README.md file
for instance)

* Document how to build and edit the website

It can be counter-intuitive to have to make changes outside of the
`website` directory, adding documentation and scripting clarify it.

* Deploy automatically to GitHub Pages

Uses https://github.com/marketplace/actions/zola-deploy-to-pages to
build and deploy the website on GitHub Pages.

TODO (after merging)
* A `TOKEN` need to be set as explained in https://github.com/marketplace/actions/zola-deploy-to-pages#secrets
* I’ve tested with https://cljoly.github.io/neovide/, but we need to
  change this to at least https://neovide.github.io/neovide/.

* Fix website URL

Co-authored-by: Keith Simmons <keith@the-simmons.net>
macos-click-through
Clément Joly 3 years ago committed by GitHub
parent f7845c7792
commit 4424731ba4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,38 @@
name: Website
on:
push:
branches:
- main
pull_request:
jobs:
build:
runs-on: ubuntu-latest
if: github.ref != 'refs/heads/main'
steps:
- name: 'Checkout'
uses: actions/checkout@master
- name: 'Content update'
run: |
make -C website content_update
- name: 'Build only'
uses: shalzz/zola-deploy-action@master
env:
BUILD_DIR: website
BUILD_ONLY: true
build_and_deploy:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: 'Checkout'
uses: actions/checkout@master
- name: 'Content update'
run: |
make -C website content_update
- name: 'Build and deploy'
uses: shalzz/zola-deploy-action@master
env:
PAGES_BRANCH: gh-pages
BUILD_DIR: website
# See https://github.com/marketplace/actions/zola-deploy-to-pages#secrets for details
TOKEN: ${{ secrets.TOKEN }}

3
.gitmodules vendored

@ -0,0 +1,3 @@
[submodule "website/themes/juice"]
path = website/themes/juice
url = https://github.com/huhu/juice

@ -1,249 +1,258 @@
# Neovide [![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/SjFpZdQys6) [![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#neovide_community:gitter.im) [![Discussions](https://img.shields.io/badge/GitHub-Discussions-green?logo=github)](https://github.com/Kethku/neovide/discussions) <!-- insert
---
This is a simple graphical user interface for [Neovim](https://github.com/neovim/neovim) (an aggressively refactored and updated title: Neovide
Vim editor). Where possible there are some graphical improvements, but functionally it should act like the terminal UI. date: 2021-12-23T22:13:46
---
![Basic Screen Cap](./assets/BasicScreenCap.png) end_insert -->
<!-- remove -->
I've been using this as my daily driver since November 2019. It should be relatively stable, but I'm still working out some kinks # Neovide [![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/SjFpZdQys6) [![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#neovide_community:gitter.im) [![Discussions](https://img.shields.io/badge/GitHub-Discussions-green?logo=github)](https://github.com/Kethku/neovide/discussions)
and ironing out some cross platform issues. In general it should be usable at this point, and if it isn't I consider that a bug and <!-- end_remove -->
appreciate a report in the issues! Any help and ideas are also greatly appreciated. <!-- Powered by https://cj.rs/riss -->
I'm also very interested in suggestions code quality/style wise when it comes to Rust. I'm pretty new to the language and appreciate This is a simple graphical user interface for [Neovim](https://github.com/neovim/neovim) (an aggressively refactored and updated
any critiques that you might have to offer. I won't take all of them, but I promise to consider anything you might have to offer. Vim editor). Where possible there are some graphical improvements, but functionally it should act like the terminal UI.
## Features ![Basic Screen Cap](./assets/BasicScreenCap.png)
Should be a standard fully featured Neovim GUI. Beyond that there are some visual niceties: I've been using this as my daily driver since November 2019. It should be relatively stable, but I'm still working out some kinks
and ironing out some cross platform issues. In general it should be usable at this point, and if it isn't I consider that a bug and
### Ligatures appreciate a report in the issues! Any help and ideas are also greatly appreciated.
Supports ligatures and font shaping. I'm also very interested in suggestions code quality/style wise when it comes to Rust. I'm pretty new to the language and appreciate
any critiques that you might have to offer. I won't take all of them, but I promise to consider anything you might have to offer.
![Ligatures](./assets/Ligatures.png)
## Features
### Animated Cursor
Should be a standard fully featured Neovim GUI. Beyond that there are some visual niceties:
Cursor animates into position with a smear effect to improve tracking of cursor position.
### Ligatures
![Animated Cursor](./assets/AnimatedCursor.gif)
Supports ligatures and font shaping.
### Smooth Scrolling
![Ligatures](./assets/Ligatures.png)
Scroll operations on buffers in neovim will be animated smoothly pixel wise rather than line by line at a time. Note, multigrid must be
enabled for this to work. ### Animated Cursor
https://github.com/Kethku/neovide/wiki/Configuration#multigrid
Cursor animates into position with a smear effect to improve tracking of cursor position.
![Smooth Scrolling](./assets/SmoothScrolling.gif)
![Animated Cursor](./assets/AnimatedCursor.gif)
### Animated Windows
### Smooth Scrolling
Windows animate into position when they are moved making it easier to see how layout changes happen. Note, multigrid must be enabled for
this to work. Scroll operations on buffers in neovim will be animated smoothly pixel wise rather than line by line at a time. Note, multigrid must be
https://github.com/Kethku/neovide/wiki/Configuration#multigrid enabled for this to work.
https://github.com/Kethku/neovide/wiki/Configuration#multigrid
![Animated Windows](./assets/AnimatedWindows.gif)
![Smooth Scrolling](./assets/SmoothScrolling.gif)
### Blurred Floating Windows
### Animated Windows
The backgrounds of floating windows are blurred improving the visual separation between foreground and background from
built in window transparency. Note, multigrid must be enabled for this to work. Windows animate into position when they are moved making it easier to see how layout changes happen. Note, multigrid must be enabled for
https://github.com/Kethku/neovide/wiki/Configuration#multigrid this to work.
https://github.com/Kethku/neovide/wiki/Configuration#multigrid
![Blurred Floating Windows](./assets/BlurredFloatingWindows.png)
![Animated Windows](./assets/AnimatedWindows.gif)
### Emoji Support
### Blurred Floating Windows
Font fallback supports rendering of emoji not contained in the configured font.
The backgrounds of floating windows are blurred improving the visual separation between foreground and background from
![Emoji](./assets/Emoji.png) built in window transparency. Note, multigrid must be enabled for this to work.
https://github.com/Kethku/neovide/wiki/Configuration#multigrid
### WSL Support
![Blurred Floating Windows](./assets/BlurredFloatingWindows.png)
Neovide supports displaying a full gui window from inside wsl via the `--wsl` command argument. Communication is passed via standard io into the wsl copy of neovim providing identical experience similar to visual studio code's remote editing https://code.visualstudio.com/docs/remote/remote-overview.
### Emoji Support
### Remote TCP Support
Font fallback supports rendering of emoji not contained in the configured font.
Neovide supports connecting to a remote instance of Neovim over a TCP socket via the `--remote-tcp` command argument. This would allow you to run Neovim on a remote machine and use the GUI on your local machine, connecting over the network.
![Emoji](./assets/Emoji.png)
Launch Neovim as a TCP server (on port 6666) by running:
### WSL Support
```sh
nvim --headless --listen localhost:6666 Neovide supports displaying a full gui window from inside wsl via the `--wsl` command argument. Communication is passed via standard io into the wsl copy of neovim providing identical experience similar to visual studio code's remote editing https://code.visualstudio.com/docs/remote/remote-overview.
```
### Remote TCP Support
And then connect to it using:
Neovide supports connecting to a remote instance of Neovim over a TCP socket via the `--remote-tcp` command argument. This would allow you to run Neovim on a remote machine and use the GUI on your local machine, connecting over the network.
```sh
/path/to/neovide --remote-tcp=localhost:6666 Launch Neovim as a TCP server (on port 6666) by running:
```
```sh
By specifying to listen on localhost, you only allow connections from your local computer. If you are actually doing this over a network you will want to use SSH port forwarding for security, and then connect as before. nvim --headless --listen localhost:6666
```
```sh
ssh -L 6666:localhost:6666 ip.of.other.machine nvim --headless --listen localhost:6666 And then connect to it using:
```
```sh
Finally, if you would like to leave the neovim server running, close the neovide application window instead of issuing a `:q` command. /path/to/neovide --remote-tcp=localhost:6666
```
### Some Nonsense ;)
By specifying to listen on localhost, you only allow connections from your local computer. If you are actually doing this over a network you will want to use SSH port forwarding for security, and then connect as before.
```vim
let g:neovide_cursor_vfx_mode = "railgun" ```sh
``` ssh -L 6666:localhost:6666 ip.of.other.machine nvim --headless --listen localhost:6666
```
![Railgun](./assets/Railgun.gif)
Finally, if you would like to leave the neovim server running, close the neovide application window instead of issuing a `:q` command.
### More to Come
### Some Nonsense ;)
I've got more ideas for simple unobtrusive improvements. More to come.
```vim
## Configuration let g:neovide_cursor_vfx_mode = "railgun"
```
Configuration is done almost completely via global neovide variables in your vim config and can be manipulated live at runtime. Details can be found [here](https://github.com/Kethku/neovide/wiki/Configuration).
![Railgun](./assets/Railgun.gif)
## Install
### More to Come
**Note**: Building instructions are somewhat limited at the moment. All the libraries I use are cross platform and should have
support for Windows, Mac, and Linux. On Windows this should be enabled by default if you have a relatively recent system. I've got more ideas for simple unobtrusive improvements. More to come.
**Note**: Neovide requires neovim version 0.6 or greater if built from main, or 0.4 if downloaded from releases. ## Configuration
### From binary Configuration is done almost completely via global neovide variables in your vim config and can be manipulated live at runtime. Details can be found [here](https://github.com/Kethku/neovide/wiki/Configuration).
Building instructions are somewhat limited at the moment. All the libraries I use are cross platform and should have support for Windows, Mac, and Linux. The rendering is based on opengl, so a good gpu driver will be ## Install
necessary. On Windows this should be enabled by default if you have a relatively recent system.
**Note**: Building instructions are somewhat limited at the moment. All the libraries I use are cross platform and should have
Installing should be as simple as downloading the binary, making sure `nvim.exe` with version 0.4 or greater is on your path, and running it. Everything should be self contained. support for Windows, Mac, and Linux. On Windows this should be enabled by default if you have a relatively recent system.
### Windows **Note**: Neovide requires neovim version 0.6 or greater if built from main, or 0.4 if downloaded from releases.
#### Package manager ### From binary
[Scoop](https://scoop.sh/) has Neovide in the `extras` bucket. Ensure you have the `extras` bucket, and install: Building instructions are somewhat limited at the moment. All the libraries I use are cross platform and should have support for Windows, Mac, and Linux. The rendering is based on opengl, so a good gpu driver will be
necessary. On Windows this should be enabled by default if you have a relatively recent system.
```
$ scoop bucket list Installing should be as simple as downloading the binary, making sure `nvim.exe` with version 0.4 or greater is on your path, and running it. Everything should be self contained.
main
extras ### Windows
$ scoop install neovide
``` #### Package manager
#### From source [Scoop](https://scoop.sh/) has Neovide in the `extras` bucket. Ensure you have the `extras` bucket, and install:
1. Install the latest version of Rust. I recommend <https://rustup.rs/> ```
2. Install CMake. I use chocolatey: `choco install cmake --installargs '"ADD_CMAKE_TO_PATH=System"' -y` $ scoop bucket list
3. Install LLVM. I use chocolatey: `choco install llvm -y` main
4. Ensure graphics libraries are up to date. extras
5. Build and install Neovide: $ scoop install neovide
```
```sh
git clone https://github.com/Kethku/neovide #### From source
cd neovide
cargo build --release 1. Install the latest version of Rust. I recommend <https://rustup.rs/>
``` 2. Install CMake. I use chocolatey: `choco install cmake --installargs '"ADD_CMAKE_TO_PATH=System"' -y`
3. Install LLVM. I use chocolatey: `choco install llvm -y`
6. Copy `./target/release/neovide.exe` to a known location and enjoy. 4. Ensure graphics libraries are up to date.
5. Build and install Neovide:
### Mac (from source)
```sh
1. Install the latest version of Rust. Using homebrew: `brew install rustup-init` git clone https://github.com/Kethku/neovide
2. Configure rust by running `rustup-init` cd neovide
3. Install CMake. Using homebrew: `brew install cmake` cargo build --release
4. `git clone https://github.com/Kethku/neovide` ```
5. `cd neovide`
6. `cargo build --release` 6. Copy `./target/release/neovide.exe` to a known location and enjoy.
7. Copy `./target/release/neovide` to a known location and enjoy.
8. `cargo install cargo-bundle` ### Mac (from source)
9. `cargo bundle --release`
10. Copy `./target/release/bundle/osx/neovide.app` to `~/Applications` and enjoy. 1. Install the latest version of Rust. Using homebrew: `brew install rustup-init`
2. Configure rust by running `rustup-init`
### Linux 3. Install CMake. Using homebrew: `brew install cmake`
4. `git clone https://github.com/Kethku/neovide`
#### Arch Linux 5. `cd neovide`
6. `cargo build --release`
There is an [AUR package for neovide](https://aur.archlinux.org/packages/neovide-git/). 7. Copy `./target/release/neovide` to a known location and enjoy.
8. `cargo install cargo-bundle`
##### With Paru (or your preferred AUR helper) 9. `cargo bundle --release`
10. Copy `./target/release/bundle/osx/neovide.app` to `~/Applications` and enjoy.
```sh
paru -S neovide-git ### Linux
```
#### Arch Linux
##### Without helper
There is an [AUR package for neovide](https://aur.archlinux.org/packages/neovide-git/).
```sh
git clone https://aur.archlinux.org/neovide-git.git ##### With Paru (or your preferred AUR helper)
cd neovide-git
makepkg -si ```sh
``` paru -S neovide-git
```
To install a non-default branch:
##### Without helper
```sh
git clone https://aur.archlinux.org/neovide-git.git ```sh
cd neovide-git git clone https://aur.archlinux.org/neovide-git.git
nvim PKGBUILD cd neovide-git
:%s/l}/l}#branch=branch-name-here/ makepkg -si
:wq ```
makepkg -si
``` To install a non-default branch:
Note: Neovide requires that a font be set in `init.vim` otherwise errors might be encountered. ```sh
See [#527](https://github.com/Kethku/neovide/issues/527) git clone https://aur.archlinux.org/neovide-git.git
cd neovide-git
##### With non-default branch nvim PKGBUILD
:%s/l}/l}#branch=branch-name-here/
```sh :wq
git clone https://aur.archlinux.org/neovide-git.git makepkg -si
cd neovide-git ```
REGEX=$(printf 's/{url}/&\#branch=%s/g' '<YOUR-BRANCH-HERE>')
sed "$REGEX" PKGBUILD Note: Neovide requires that a font be set in `init.vim` otherwise errors might be encountered.
makepkg -si See [#527](https://github.com/Kethku/neovide/issues/527)
```
#### With Snap ##### With non-default branch
Neovide is also available in the Snap Store. You can install it
using the command below. ```sh
git clone https://aur.archlinux.org/neovide-git.git
``` cd neovide-git
snap install neovide REGEX=$(printf 's/{url}/&\#branch=%s/g' '<YOUR-BRANCH-HERE>')
``` sed "$REGEX" PKGBUILD
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-white.svg)](https://snapcraft.io/neovide) makepkg -si
```
#### With Snap
#### From source Neovide is also available in the Snap Store. You can install it
1. Install necessary dependencies (adjust for your preferred package manager) using the command below.
```sh ```
sudo apt install -y curl \ snap install neovide
gnupg ca-certificates git \ ```
gcc-multilib g++-multilib cmake libssl-dev pkg-config \ [![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-white.svg)](https://snapcraft.io/neovide)
libfreetype6-dev libasound2-dev libexpat1-dev libxcb-composite0-dev \
libbz2-dev libsndio-dev freeglut3-dev libxmu-dev libxi-dev libfontconfig1-dev
``` #### From source
1. Install necessary dependencies (adjust for your preferred package manager)
2. Install Rust
```sh
```sh sudo apt install -y curl \
curl --proto '=https' --tlsv1.2 -sSf "https://sh.rustup.rs" | sh gnupg ca-certificates git \
``` gcc-multilib g++-multilib cmake libssl-dev pkg-config \
libfreetype6-dev libasound2-dev libexpat1-dev libxcb-composite0-dev \
3. Clone the repository libbz2-dev libsndio-dev freeglut3-dev libxmu-dev libxi-dev libfontconfig1-dev
```
```sh
git clone "https://github.com/Kethku/neovide" 2. Install Rust
```
```sh
4. Build curl --proto '=https' --tlsv1.2 -sSf "https://sh.rustup.rs" | sh
```
```sh
cd neovide && ~/.cargo/bin/cargo build --release 3. Clone the repository
```
```sh
5. Copy `./target/release/neovide` to a known location and enjoy. git clone "https://github.com/Kethku/neovide"
```
## Troubleshooting
- Neovide requires that a font be set in `init.vim` otherwise errors might be encountered. This can be fixed by adding `set guifont=Your\ Font\ Name:h15` in init.vim file. Reference issue [#527](https://github.com/Kethku/neovide/issues/527). 4. Build
### Linux-specific ```sh
- If you recieve errors complaining about DRI3 settings, please reference issue [#44](https://github.com/Kethku/neovide/issues/44#issuecomment-578618052). cd neovide && ~/.cargo/bin/cargo build --release
```
5. Copy `./target/release/neovide` to a known location and enjoy.
## Troubleshooting
- Neovide requires that a font be set in `init.vim` otherwise errors might be encountered. This can be fixed by adding `set guifont=Your\ Font\ Name:h15` in init.vim file. Reference issue [#527](https://github.com/Kethku/neovide/issues/527).
### Linux-specific
- If you recieve errors complaining about DRI3 settings, please reference issue [#44](https://github.com/Kethku/neovide/issues/44#issuecomment-578618052).

@ -0,0 +1,6 @@
# Zola output
public
# Will be copied during the build process
static/assets
# Most md files are created by RISS on the fly, updated during the build process
content/*.md

@ -0,0 +1,16 @@
.PHONY: md_update
md_update:
@awk -f ./riss.awk < ../README.md >content/_index.md
.PHONY: content_update
content_update: md_update
@mkdir -p static/assets
@cp -r ../assets static/
.PHONY: all
all: content_update
@zola build
.PHONY: serve
serve: content_update
@zola serve

@ -0,0 +1,18 @@
## Build
To build neovides website, ensure you have [zola](https://getzola.org/) and `awk` installed.
Then, in this directory, run:
```sh
git submodule update --init
make serve
```
## Edit
To ease maintenance, markdown files in [`content`](./content/) are often sourced from other parts of the repository, thanks to [RISS](https://cj.rs/riss). RISS allows to change the files slightly, see the [transformation reference](https://cj.rs/readme-in-static-site/#transformations-reference) for the syntax.
For instance, `content/_index.md` is sourced from the [`README`](/README.md). Thus to make changes to `content/_index.md`, edit the [`README`](/README.md) and run:
```
make md_update
```

@ -0,0 +1,23 @@
# The URL the site will be built for
base_url = "https://neovide.github.io/neovide"
theme = "juice"
# Whether to automatically compile all Sass files in the sass directory
compile_sass = true
# Whether to build a search index to be used later on by a JavaScript library
build_search_index = false
[markdown]
# Whether to do syntax highlighting
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
highlight_code = true
[extra]
# Put all your custom variables here
juice_logo_name = "Neovide"
juice_logo_path = "assets/neovide.svg"
juice_extra_menu = [
{ title = "Github", link = "https://github.com/neovide/neovide"}
]
repository_url = "https://github.com/neovide/neovide"

@ -0,0 +1,41 @@
#!/usr/bin/awk -f
#
# Copyright 2021 Clément Joly
# https://cj.rs/riss
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Divide the input file into these types of sections:
# * inserting: the current line is copied to the output, verbatim
# * removing: the line is not copied to the output
# To distinguish between these sections, the script interprets special
# comments. These comments are removed from the output.
BEGIN {
# Section identifier
removing = 0
}
/^<!--+ remove -+->$/ {
removing = 1
next
}
/^<!--+ end_remove -+->$|^<!--+ insert$|^end_insert -+->$/ {
removing = 0
next
}
! removing {
print $0
}

@ -0,0 +1,15 @@
<style>
:root {
/* Primary theme color */
--primary-color: #FED43F;
/* Primary theme text color */
--primary-text-color: #543631;
/* Primary theme link color */
--primary-link-color: #F9BB2D;
/* Secondary color: the background body color */
--secondary-color: #fcfaf6;
--secondary-text-color: #303030;
/* Highlight text color of table of content */
--toc-highlight-text-color: #d46e13;
}
</style>

@ -0,0 +1,32 @@
{% extends "juice/templates/index.html" %}
{% block hero %}
<section class="text-center">
<h1 class="heading-text" style="font-size: 50px">
No Nonsense Neovim Client in Rust
</h1>
<div>
<img src="https://badgen.net/badge/icon/discord?icon=discord&amp;label" alt="Discord"></a> <a href="https://matrix.to/#/#neovide_community:gitter.im"><img src="https://matrix.to/img/matrix-badge.svg" alt="Chat on Matrix"></a> <a href="https://github.com/Kethku/neovide/discussions"><img src="https://img.shields.io/badge/GitHub-Discussions-green?logo=github" alt="Discussions"></a>
</div>
</section>
<img class="hero-image" style="width: 50%" src="{{ get_url(path="assets/neovide.svg") }}">
<div class="explore-more text"
onclick="document.getElementById('features').scrollIntoView({behavior: 'smooth'})">
Explore More ⇩
</div>
<style>
.hero section {
padding: 0 5rem;
}
@media screen and (max-width: 768px) {
.hero section {
padding: 0 2rem;
}
.hero-image {
display: none
}
}
</style>
{% endblock hero %}

@ -0,0 +1 @@
Subproject commit a5eb57d2781eed43301215e27679c0bb7b4cbedf
Loading…
Cancel
Save