Skip to content

Commit 2d6df2f

Browse files
committed
Adding build chain
1 parent 6014a8c commit 2d6df2f

File tree

11 files changed

+320
-2
lines changed

11 files changed

+320
-2
lines changed

.github/workflows/release.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Build yazi for Debian
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
yazi_version:
7+
description: The version of yazi to build.
8+
type: string
9+
required: true
10+
build_version:
11+
description: The build version.
12+
type: string
13+
required: true
14+
15+
permissions:
16+
contents: write
17+
18+
jobs:
19+
build-yazi:
20+
name: Build
21+
runs-on: ubuntu-latest
22+
steps:
23+
- name: Checkout yazi-debian
24+
uses: actions/checkout@v4
25+
26+
- name: Build yazi
27+
run: ./build.sh ${{ inputs.yazi_version }} ${{ inputs.build_version }}
28+
29+
- name: Upload Artifact
30+
uses: actions/upload-artifact@v4
31+
with:
32+
name: artifact
33+
path: yazi_*.deb
34+
35+
36+
release-yazi:
37+
name: (Draft-)Release yazi for Debian
38+
if: github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main'
39+
runs-on: ubuntu-latest
40+
needs: build-yazi
41+
steps:
42+
- name: Download All Artifacts
43+
uses: actions/download-artifact@v4
44+
with:
45+
name: artifact
46+
47+
- name: Publish Release Draft
48+
uses: softprops/action-gh-release@v2
49+
with:
50+
draft: true
51+
files: yazi_*.deb
52+
name: ${{ inputs.yazi_version }}+${{ inputs.build_version }}
53+
tag_name: ${{ env.RELEASE_TAG }}
54+
fail_on_unmatched_files: true

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# .deb Packages
2+
*.deb
3+
4+
.idea/*
5+
.DS_Store
6+
7+

Dockerfile

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
ARG DEBIAN_DIST=bookworm
2+
FROM buildpack-deps:$DEBIAN_DIST
3+
4+
ARG DEBIAN_DIST
5+
ARG yazi_VERSION
6+
ARG BUILD_VERSION
7+
ARG FULL_VERSION
8+
9+
ENV RUSTUP_HOME=/usr/local/rustup \
10+
CARGO_HOME=/usr/local/cargo \
11+
PATH=/usr/local/cargo/bin:$PATH \
12+
RUST_VERSION=1.85.0
13+
14+
RUN set -eux; \
15+
wget "https://static.rust-lang.org/rustup/archive/1.28.1/x86_64-unknown-linux-gnu/rustup-init"; \
16+
chmod +x rustup-init; \
17+
./rustup-init -y --no-modify-path --profile minimal --default-toolchain 1.85.0 --default-host x86_64-unknown-linux-gnu;
18+
19+
RUN mkdir -p /output/usr/bin
20+
RUN mkdir -p /output/usr/share/doc/yazi
21+
RUN git clone https://github.com/sxyazi/yazi.git
22+
RUN cd yazi && cargo build --release --all-features && cp ./target/release/yazi /output/usr/bin/
23+
RUN mkdir -p /output/DEBIAN
24+
25+
COPY output/DEBIAN/control /output/DEBIAN/
26+
COPY output/copyright /output/usr/share/doc/yazi/
27+
COPY output/changelog.Debian /output/usr/share/doc/yazi/
28+
COPY output/README.md /output/usr/share/doc/yazi/
29+
30+
RUN sed -i "s/DIST/$DEBIAN_DIST/" /output/usr/share/doc/yazi/changelog.Debian
31+
RUN sed -i "s/FULL_VERSION/$FULL_VERSION/" /output/usr/share/doc/yazi/changelog.Debian
32+
RUN sed -i "s/DIST/$DEBIAN_DIST/" /output/DEBIAN/control
33+
RUN sed -i "s/yazi_VERSION/$yazi_VERSION/" /output/DEBIAN/control
34+
RUN sed -i "s/BUILD_VERSION/$BUILD_VERSION/" /output/DEBIAN/control
35+
36+
RUN dpkg-deb --build /output /yazi_${FULL_VERSION}.deb

README.md

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,61 @@
1-
# yazi-debian
2-
Debian (.deb) packages for yazi
1+
![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/dariogriffo/yazi-debian/total)
2+
![GitHub Downloads (all assets, latest release)](https://img.shields.io/github/downloads/dariogriffo/yazi-debian/latest/total)
3+
![GitHub Release](https://img.shields.io/github/v/release/dariogriffo/yazi-debian)
4+
![GitHub Release Date](https://img.shields.io/github/release-date/dariogriffo/yazi-debian)
5+
6+
<h1>
7+
<p align="center">
8+
<a href="https://yazi.org/"><img src="https://github.com/dariogriffo/yazi-debian/blob/main/yazi-logo.png" alt="yazi Logo" width="128" style="margin-right: 20px"></a>
9+
<a href="https://www.debian.org/"><img src="https://github.com/dariogriffo/yazi-debian/blob/main/debian-logo.png" alt="Debian Logo" width="104" style="margin-left: 20px"></a>
10+
<br>yazi for Debian
11+
</p>
12+
</h1>
13+
<p align="center">
14+
Yazi (means "duck") is a terminal file manager written in Rust, based on non-blocking async I/O. It aims to provide an efficient, user-friendly, and customizable file management experience.
15+
</p>
16+
17+
# yazi for Debian
18+
19+
This repository contains build scripts to produce the _unofficial_ Debian packages
20+
(.deb) for [yazi](https://github.com/sxyazi/yazi/) hosted at [debian.griffo.io](https://debian.griffo.io)
21+
22+
Currently supported debian distros are:
23+
- Bookworm
24+
- Trixie
25+
- Sid
26+
27+
This is an unofficial community project to provide a package that's easy to
28+
install on Debian. If you're looking for the yazi source code, see
29+
[yazi](https://github.com/sxyazi/yazi/).
30+
31+
## Install/Update
32+
33+
### The Debian way
34+
35+
```sh
36+
curl -sS https://debian.griffo.io/3B9335DF576D3D58059C6AA50B56A1A69762E9FF.asc | gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/debian.griffo.io.gpg
37+
echo "deb https://debian.griffo.io//apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/debian.griffo.io.list
38+
sudo apt install -y yazi
39+
```
40+
41+
### Manual Installation
42+
43+
1. Download the .deb package for your Debian version available on
44+
the [Releases](https://github.com/dariogriffo/yazi-debian/releases) page.
45+
2. Install the downloaded .deb package.
46+
47+
```sh
48+
sudo dpkg -i <filename>.deb
49+
```
50+
## Updating
51+
52+
To update to a new version, just follow any of the installation methods above. There's no need to uninstall the old version; it will be updated correctly.
53+
54+
## Roadmap
55+
56+
- [x] Produce a .deb package on GitHub Releases
57+
- [x] Set up a debian mirror for easier updates
58+
59+
## Disclaimer
60+
61+
- This repo is not open for issues related to yazi. This repo is only for _unofficial_ Debian packaging.

build.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
yazi_VERSION=$1
2+
BUILD_VERSION=$2
3+
declare -a arr=("bookworm" "trixie" "sid")
4+
j for i in "${arr[@]}"
5+
do
6+
DEBIAN_DIST=$i
7+
FULL_VERSION=$yazi_VERSION-${BUILD_VERSION}+${DEBIAN_DIST}_amd64
8+
docker build . -t yazi-$DEBIAN_DIST --build-arg DEBIAN_DIST=$DEBIAN_DIST --build-arg yazi_VERSION=$yazi_VERSION --build-arg BUILD_VERSION=$BUILD_VERSION --build-arg FULL_VERSION=$FULL_VERSION
9+
id="$(docker create yazi-$DEBIAN_DIST)"
10+
docker cp $id:/yazi_$FULL_VERSION.deb - > ./yazi_$FULL_VERSION.deb
11+
tar -xf ./yazi_$FULL_VERSION.deb
12+
done
13+
14+

debian-logo.png

4.62 KB
Loading

output/DEBIAN/control

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Source: yazi
2+
Section: utils
3+
Priority: optional
4+
Maintainer: Dario Griffo <dariogriffo@gmail.com>
5+
Homepage: https://github.com/sxyazi/yazi
6+
Package: yazi
7+
Version: yazi_VERSION-BUILD_VERSION+DIST
8+
Architecture: amd64
9+
Depends:
10+
Description: a terminal file manager written in Rust, based on non-blocking async I/O
11+

output/README.md

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<div align="center">
2+
<sup>Special thanks to:</sup>
3+
<br><br>
4+
<a href="https://www.warp.dev/?utm_source=github&utm_medium=referral&utm_campaign=yazi" target="_blank">
5+
<img alt="Warp sponsorship" width="300" src="https://github.com/user-attachments/assets/c7f141e7-9751-407d-bb0e-d6f2c487b34f">
6+
<br>
7+
<b>Warp, the intelligent terminal</b>
8+
<br>
9+
<sup>Yazi's AI-powered terminal of choice!<br>Available for macOS, Linux and Windows</sup>
10+
</a>
11+
</div>
12+
13+
<br>
14+
15+
## Yazi - ⚡️ Blazing Fast Terminal File Manager
16+
17+
Yazi (means "duck") is a terminal file manager written in Rust, based on non-blocking async I/O. It aims to provide an efficient, user-friendly, and customizable file management experience.
18+
19+
💡 A new article explaining its internal workings: [Why is Yazi Fast?](https://yazi-rs.github.io/blog/why-is-yazi-fast)
20+
21+
- 🚀 **Full Asynchronous Support**: All I/O operations are asynchronous, CPU tasks are spread across multiple threads, making the most of available resources.
22+
- 💪 **Powerful Async Task Scheduling and Management**: Provides real-time progress updates, task cancellation, and internal task priority assignment.
23+
- 🖼️ **Built-in Support for Multiple Image Protocols**: Also integrated with Überzug++ and Chafa, covering almost all terminals.
24+
- 🌟 **Built-in Code Highlighting and Image Decoding**: Combined with the pre-loading mechanism, greatly accelerates image and normal file loading.
25+
- 🔌 **Concurrent Plugin System**: UI plugins (rewriting most of the UI), functional plugins, custom previewer/preloader/spotter/fetcher; Just some pieces of Lua.
26+
- 📡 **Data Distribution Service**: Built on a client-server architecture (no additional server process required), integrated with a Lua-based publish-subscribe model, achieving cross-instance communication and state persistence.
27+
- 📦 **Package Manager**: Install plugins and themes with one command, keeping them up-to-date, or pin them to a specific version.
28+
- 🧰 Integration with ripgrep, fd, fzf, zoxide
29+
- 💫 Vim-like input/pick/confirm/which/notify component, auto-completion for cd paths
30+
- 🏷️ Multi-Tab Support, Cross-directory selection, Scrollable Preview (for videos, PDFs, archives, code, directories, etc.)
31+
- 🔄 Bulk Renaming, Visual Mode, File Chooser, [Git Integration](https://github.com/yazi-rs/plugins/tree/main/git.yazi), [Mount Manager](https://github.com/yazi-rs/plugins/tree/main/mount.yazi)
32+
- 🎨 Theme System, Mouse Support, Trash Bin, Custom Layouts, CSI u, OSC 52
33+
- ... and more!
34+
35+
https://github.com/sxyazi/yazi/assets/17523360/92ff23fa-0cd5-4f04-b387-894c12265cc7
36+
37+
## Project status
38+
39+
Public beta, can be used as a daily driver.
40+
41+
Yazi is currently in heavy development, expect breaking changes.
42+
43+
## Documentation
44+
45+
- Usage: https://yazi-rs.github.io/docs/installation
46+
- Features: https://yazi-rs.github.io/features
47+
48+
## Discussion
49+
50+
- Discord Server (English mainly): https://discord.gg/qfADduSdJu
51+
- Telegram Group (Chinese mainly): https://t.me/yazi_rs
52+
53+
## Image Preview
54+
55+
| Platform | Protocol | Support |
56+
| ---------------------------------------------------------------------------- | -------------------------------------- | ----------------------------------------------------- |
57+
| [kitty](https://github.com/kovidgoyal/kitty) (>= 0.28.0) | [Kitty unicode placeholders][kgp] | ✅ Built-in |
58+
| [iTerm2](https://iterm2.com) | [Inline images protocol][iip] | ✅ Built-in |
59+
| [WezTerm](https://github.com/wez/wezterm) | [Inline images protocol][iip] | ✅ Built-in |
60+
| [Konsole](https://invent.kde.org/utilities/konsole) | [Kitty old protocol][kgp-old] | ✅ Built-in |
61+
| [foot](https://codeberg.org/dnkl/foot) | [Sixel graphics format][sixel] | ✅ Built-in |
62+
| [Ghostty](https://github.com/ghostty-org/ghostty) | [Kitty unicode placeholders][kgp] | ✅ Built-in |
63+
| [Windows Terminal](https://github.com/microsoft/terminal) (>= v1.22.10352.0) | [Sixel graphics format][sixel] | ✅ Built-in |
64+
| [st with Sixel patch](https://github.com/bakkeby/st-flexipatch) | [Sixel graphics format][sixel] | ✅ Built-in |
65+
| [Tabby](https://github.com/Eugeny/tabby) | [Inline images protocol][iip] | ✅ Built-in |
66+
| [VSCode](https://github.com/microsoft/vscode) | [Inline images protocol][iip] | ✅ Built-in |
67+
| [Rio](https://github.com/raphamorim/rio) | [Inline images protocol][iip] | ❌ Rio doesn't correctly clear images [#709][rio-bug] |
68+
| [Black Box](https://gitlab.gnome.org/raggesilver/blackbox) | [Sixel graphics format][sixel] | ✅ Built-in |
69+
| [Hyper](https://github.com/vercel/hyper) | [Inline images protocol][iip] | ✅ Built-in |
70+
| [Bobcat](https://github.com/ismail-yilmaz/Bobcat) | [Inline images protocol][iip] | ✅ Built-in |
71+
| X11 / Wayland | Window system protocol | ☑️ [Überzug++][ueberzug] required |
72+
| Fallback | [ASCII art (Unicode block)][ascii-art] | ☑️ [Chafa][chafa] required |
73+
74+
See https://yazi-rs.github.io/docs/image-preview for details.
75+
76+
<!-- Protocols -->
77+
78+
[kgp]: https://sw.kovidgoyal.net/kitty/graphics-protocol/#unicode-placeholders
79+
[kgp-old]: https://github.com/sxyazi/yazi/blob/main/yazi-adapter/src/drivers/kgp_old.rs
80+
[iip]: https://iterm2.com/documentation-images.html
81+
[sixel]: https://www.vt100.net/docs/vt3xx-gp/chapter14.html
82+
[ascii-art]: https://en.wikipedia.org/wiki/ASCII_art
83+
84+
<!-- Dependencies -->
85+
86+
[ueberzug]: https://github.com/jstkdng/ueberzugpp
87+
[chafa]: https://hpjansson.org/chafa/
88+
89+
<!-- Rio bug -->
90+
91+
[rio-bug]: https://github.com/raphamorim/rio/issues/709
92+
93+
## License
94+
95+
Yazi is MIT-licensed. For more information check the [LICENSE](LICENSE) file.

output/changelog.Debian

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
yazi (FULL_VERSION) DIST; urgency=low
2+
3+
This is a quick fix release that addresses the issue where, under SSH, terminal response sequences are not completely consumed and are leaked to the screen.
4+
5+
Thanks to @Crdr0122 and @SpookyYomo for reporting and helping reproduce the issue!
6+
7+
What's Changed
8+
feat: expose all theme fields in Lua by @hankertrix in #2405
9+
fix: windows-sys features for Win32_Storage_FileSystem and Win32_System_Threading by @sxyazi in #2417
10+
fix: ignore stdin redirection to ensure always accessing the real tty by @sxyazi in #2425
11+
fix: STDIN_FILENO poll always returns 0 under SSH by @sxyazi in #2427
12+
feat: expose almost the entirety of the user's configuration in Lua by @hankertrix in #2413
13+
chore: bump version to 25.3.2 by @sxyazi in #2428
14+
15+
Full Changelog at https://github.com/sxyazi/yazi/compare/v25.2.26...v25.3.2
16+
17+
18+
19+
20+
21+

output/copyright

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2023 - sxyazi
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)