mirror of
https://github.com/alacritty/alacritty.git
synced 2024-11-25 14:05:41 -05:00
Move Alacritty to organization
This fixes various outdated links pointing to the old jwilm/alacritty repository. Since `copypasta` now has its own github repository at https://github.com/alacritty/copypasta, the sources have been removed from Alacritty.
This commit is contained in:
parent
c34ec12c30
commit
c2c8d6bf37
29 changed files with 99 additions and 1026 deletions
|
@ -71,7 +71,7 @@ deploy:
|
|||
tags: true
|
||||
rust: stable
|
||||
condition: $CLIPPY != true
|
||||
repo: jwilm/alacritty
|
||||
repo: alacritty/alacritty
|
||||
- provider: releases
|
||||
api_key:
|
||||
secure: G6JZgC5qKZyxEmuu2eMscDO45iOhBjiCSKuO8gxywqm+4DbMZm7y2OSbQCEmnIFqEgi+DLkrH/A7e8LDngQj3lBvRnWkIcszG5ubDm8jsqckXXxjI0cy5q8jJ7s5zZXH2IdXifY59KN9V4iHPwCJlyEE7Aj9JrJLFaVhvaowlSYib9DuDibDX/2u8qZ+gP2D/TntiBlFi8SgiDPd7GrZWmNsxJR9edyYbKx9izROp+4q7KAa0Xqak/Zvg72JZnARiKPmBxESEoYYXFcRgRZD9VvjmQ/il6WcHlGSqqn1TRBtIVl8L/1I5/xBJ6KMegP9Jlh7ybm1JPfX108V5d9a9CyqvRYHrhbkHkf5oktizsgw2WyANwiBhEngliMFuUyT0826BEPtkA4TiD7lQXyvO749INdJsqUlMLLuQNpU9/7ShBcRapbGp6AjWH8yxV9ciNMpNexAaxkupYc2NaU6EAC/C34HAtTdfN+gyvrtnF1ISrPmmGj8YQRiBUsa4TxghsNPbPHWAgMfR5lFp3dONz0oIydhW/AFgpn+7BVvoIW2z8hXiRttseZHv6akeSjFC5vYObR3UdL/NiuvCjZRiYryL0Be/rI83ug8xELVFBBcv4PxcHEsXWT7EMd3QTiPoCwNKoSoBLk8hPFPAGRXULiSDFENKoJAc4A7zJyMiYY=
|
||||
|
@ -82,4 +82,4 @@ deploy:
|
|||
tags: true
|
||||
rust: stable-x86_64-pc-windows-msvc
|
||||
condition: $CLIPPY != true
|
||||
repo: jwilm/alacritty
|
||||
repo: alacritty/alacritty
|
||||
|
|
|
@ -391,7 +391,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- Alt modifier is no longer sent separately from the modified key
|
||||
- Various Windows issues, like color support and performance, through the new ConPTY
|
||||
- Fixed rendering non default mouse cursors in terminal mouse mode (linux)
|
||||
- Fix the `Copy` `mouse_bindings` action ([#1963](https://github.com/jwilm/alacritty/issues/1963))
|
||||
- Fix the `Copy` `mouse_bindings` action ([#1963](https://github.com/alacritty/alacritty/issues/1963))
|
||||
- URLs are only launched when left-clicking
|
||||
- Removal of extra characters (like `,`) at the end of URLs has been improved
|
||||
- Single quotes (`'`) are removed from URLs when there is no matching opening quote
|
||||
|
|
|
@ -17,29 +17,29 @@ Table of Contents:
|
|||
## Feature Requests
|
||||
|
||||
Feature requests should be reported in the
|
||||
[Alacritty issue tracker](https://github.com/jwilm/alacritty/issues). To reduce the number of
|
||||
[Alacritty issue tracker](https://github.com/alacritty/alacritty/issues). To reduce the number of
|
||||
duplicates, please make sure to check the existing
|
||||
[enhancement](https://github.com/jwilm/alacritty/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aenhancement)
|
||||
[enhancement](https://github.com/alacritty/alacritty/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aenhancement)
|
||||
and
|
||||
[missing feature](https://github.com/jwilm/alacritty/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22B+-+missing+feature%22)
|
||||
[missing feature](https://github.com/alacritty/alacritty/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22B+-+missing+feature%22)
|
||||
issues.
|
||||
|
||||
## Bug Reports
|
||||
|
||||
Bug reports should be reported in the
|
||||
[Alacritty issue tracker](https://github.com/jwilm/alacritty/issues).
|
||||
[Alacritty issue tracker](https://github.com/alacritty/alacritty/issues).
|
||||
|
||||
If a bug was not present in a previous version of Alacritty, providing the exact commit which
|
||||
introduced the regression helps out a lot.
|
||||
|
||||
## Patches / Pull Requests
|
||||
|
||||
All patches have to be sent on Github as [pull requests](https://github.com/jwilm/alacritty/pulls).
|
||||
All patches have to be sent on Github as [pull requests](https://github.com/alacritty/alacritty/pulls).
|
||||
|
||||
If you are looking for a place to start contributing to Alacritty, take a look at the
|
||||
[help wanted](https://github.com/jwilm/alacritty/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
|
||||
[help wanted](https://github.com/alacritty/alacritty/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
|
||||
and
|
||||
[easy](https://github.com/jwilm/alacritty/issues?q=is%3Aopen+is%3Aissue+label%3A%22D+-+easy%22)
|
||||
[easy](https://github.com/alacritty/alacritty/issues?q=is%3Aopen+is%3Aissue+label%3A%22D+-+easy%22)
|
||||
issues.
|
||||
|
||||
Please note that the minimum supported version of Alacritty is Rust 1.36.0. All patches are expected
|
||||
|
@ -71,9 +71,9 @@ If changes could affect throughput or latency of Alacritty, these aspects should
|
|||
prevent potential regressions. Since there are often big performance differences between Rust's
|
||||
nightly releases, it's advised to perform these tests on the latest Rust stable release.
|
||||
|
||||
Alacritty mainly uses the [vtebench](https://github.com/jwilm/vtebench) tool for testing Alacritty's
|
||||
Alacritty mainly uses the [vtebench](https://github.com/alacritty/vtebench) tool for testing Alacritty's
|
||||
performance. Instructions on how to use it can be found in its
|
||||
[README](https://github.com/jwilm/vtebench/blob/master/README.md).
|
||||
[README](https://github.com/alacritty/vtebench/blob/master/README.md).
|
||||
|
||||
Latency is another important factor for Alacritty. On X11, Windows, and macOS the
|
||||
[typometer](https://github.com/pavelfatin/typometer) tool allows measuring keyboard latency.
|
||||
|
@ -130,7 +130,7 @@ The exact steps for an exemplary `1.2.3` release might look like this:
|
|||
# Contact
|
||||
|
||||
If there are any outstanding questions about contributing to Alacritty, they can be asked on the
|
||||
[Alacritty issue tracker](https://github.com/jwilm/alacritty/issues).
|
||||
[Alacritty issue tracker](https://github.com/alacritty/alacritty/issues).
|
||||
|
||||
As a more immediate and direct form of communication, the Alacritty IRC channel (`#alacritty` on
|
||||
Freenode) can be used to contact many of the Alacritty contributors.
|
||||
|
|
97
Cargo.lock
generated
97
Cargo.lock
generated
|
@ -57,7 +57,7 @@ version = "0.4.2-dev"
|
|||
dependencies = [
|
||||
"base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"copypasta 0.6.1",
|
||||
"copypasta 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"font 0.1.0",
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -113,7 +113,7 @@ name = "approx"
|
|||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -146,6 +146,11 @@ name = "autocfg"
|
|||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "backtrace"
|
||||
version = "0.3.40"
|
||||
|
@ -357,13 +362,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
[[package]]
|
||||
name = "copypasta"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"andrew 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"clipboard-win 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"smithay-client-toolkit 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"smithay-clipboard 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"x11-clipboard 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -515,7 +519,7 @@ dependencies = [
|
|||
"atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -527,7 +531,7 @@ dependencies = [
|
|||
"atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -536,7 +540,7 @@ name = "euclid"
|
|||
version = "0.20.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -826,7 +830,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "http_req"
|
||||
version = "0.5.4"
|
||||
version = "0.5.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -857,9 +861,9 @@ version = "0.22.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-iter 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"png 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -969,7 +973,7 @@ name = "line_drawing"
|
|||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1207,39 +1211,39 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "num-integer"
|
||||
version = "0.1.41"
|
||||
version = "0.1.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-iter"
|
||||
version = "0.1.39"
|
||||
version = "0.1.40"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-rational"
|
||||
version = "0.2.2"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.10"
|
||||
version = "0.2.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1303,7 +1307,7 @@ name = "ordered-float"
|
|||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1492,7 +1496,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.7.2"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1651,13 +1655,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.3.1"
|
||||
version = "1.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"thread_local 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1670,7 +1674,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.12"
|
||||
version = "0.6.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
|
@ -1984,7 +1988,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -2025,6 +2029,14 @@ dependencies = [
|
|||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thread_local"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.1.42"
|
||||
|
@ -2313,7 +2325,7 @@ name = "winpty"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"http_req 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"http_req 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"named_pipe 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -2418,6 +2430,7 @@ dependencies = [
|
|||
"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"
|
||||
"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||
"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
|
||||
"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
|
||||
"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea"
|
||||
"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491"
|
||||
"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
|
||||
|
@ -2442,6 +2455,7 @@ dependencies = [
|
|||
"checksum cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "81fb25b677f8bf1eb325017cb6bb8452f87969db0fedb4f757b297bee78a7c62"
|
||||
"checksum cocoa 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f29f7768b2d1be17b96158e3285951d366b40211320fb30826a76cb7a0da6400"
|
||||
"checksum constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120"
|
||||
"checksum copypasta 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "330f194e0a09fce5852e073bcb7b6fb81ea50415a90c605647ae19cdb7f5e87f"
|
||||
"checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d"
|
||||
"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
|
||||
"checksum core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)" = "56790968ab1c8a1202a102e6de05fc6e1ec87da99e4e93e9a7d13efbfc1e95a9"
|
||||
|
@ -2491,7 +2505,7 @@ dependencies = [
|
|||
"checksum glutin_glx_sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1290a5ca5e46fcfa7f66f949cc9d9194b2cb6f2ed61892c8c2b82343631dba57"
|
||||
"checksum glutin_wgl_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f801bbc91efc22dd1c4818a47814fc72bf74d024510451b119381579bfa39021"
|
||||
"checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772"
|
||||
"checksum http_req 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "dae71e8a6f38118bf04540fe592d31b69930127469c1de1ab6abefcded205c61"
|
||||
"checksum http_req 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ef9a6b5b2cd80630d9c6bda175408a86908d8a9c1eb5b2857206529d88d063a3"
|
||||
"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
|
||||
"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
|
||||
"checksum image 0.22.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4be8aaefbe7545dc42ae925afb55a0098f226a3fe5ef721872806f44f57826"
|
||||
|
@ -2534,10 +2548,10 @@ dependencies = [
|
|||
"checksum nom 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05aec50c70fd288702bcd93284a8444607f3292dbdf2a30de5ea5dcdbe72287b"
|
||||
"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6"
|
||||
"checksum notify 4.0.15 (registry+https://github.com/rust-lang/crates.io-index)" = "80ae4a7688d1fab81c5bf19c64fc8db920be8d519ce6336ed4e7efe024724dbd"
|
||||
"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09"
|
||||
"checksum num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e"
|
||||
"checksum num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454"
|
||||
"checksum num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c81ffc11c212fa327657cb19dd85eb7419e163b5b076bede2bdb5c974c07e4"
|
||||
"checksum num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba"
|
||||
"checksum num-iter 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "dfb0800a0291891dd9f4fe7bd9c19384f98f7fbe0cd0f39a2c6b88b9868bbc00"
|
||||
"checksum num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3"
|
||||
"checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096"
|
||||
"checksum objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
|
||||
"checksum objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
|
||||
"checksum objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
|
||||
|
@ -2567,7 +2581,7 @@ dependencies = [
|
|||
"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
|
||||
"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
|
||||
"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
|
||||
"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412"
|
||||
"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
|
||||
"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
|
||||
"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
|
||||
"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
|
||||
|
@ -2585,9 +2599,9 @@ dependencies = [
|
|||
"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
|
||||
"checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d"
|
||||
"checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384"
|
||||
"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd"
|
||||
"checksum regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5508c1941e4e7cb19965abef075d35a9a8b5cdf0846f30b4050e9b55dc55e87"
|
||||
"checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7"
|
||||
"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716"
|
||||
"checksum regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e734e891f5b408a29efbf8309e656876276f49ab6a6ac208600b4419bd893d90"
|
||||
"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
|
||||
"checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf"
|
||||
"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
|
||||
|
@ -2629,6 +2643,7 @@ dependencies = [
|
|||
"checksum terminfo 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8e51065bafd2abe106b6036483b69d1741f4a1ec56ce8a2378de341637de689e"
|
||||
"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
||||
"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
|
||||
"checksum thread_local 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88ddf1ad580c7e3d1efff877d972bcc93f995556b9087a5a259630985c88ceab"
|
||||
"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
|
||||
"checksum ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa9b3b49edd3468c0e6565d85783f51af95212b6fa3986a5500954f00b460874"
|
||||
"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
members = [
|
||||
"alacritty",
|
||||
"alacritty_terminal",
|
||||
"copypasta",
|
||||
"font",
|
||||
"winpty"
|
||||
]
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
Before compiling Alacritty, you'll have to first clone the source code:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/jwilm/alacritty.git
|
||||
git clone https://github.com/alacritty/alacritty.git
|
||||
cd alacritty
|
||||
```
|
||||
|
||||
|
@ -242,7 +242,7 @@ cp -r target/release/osx/Alacritty.app /Applications/
|
|||
If you don't want to clone the repository, you can install Alacritty directly using cargo:
|
||||
|
||||
```sh
|
||||
cargo install --git https://github.com/jwilm/alacritty
|
||||
cargo install --git https://github.com/alacritty/alacritty
|
||||
```
|
||||
|
||||
### Debian/Ubuntu
|
||||
|
|
12
README.md
12
README.md
|
@ -26,7 +26,7 @@ The software is considered to be at a **beta** level of readiness -- there are
|
|||
a few missing features and bugs to be fixed, but it is already used by many as
|
||||
a daily driver.
|
||||
|
||||
Precompiled binaries are available from the [GitHub releases page](https://github.com/jwilm/alacritty/releases).
|
||||
Precompiled binaries are available from the [GitHub releases page](https://github.com/alacritty/alacritty/releases).
|
||||
|
||||
## Further information
|
||||
|
||||
|
@ -140,7 +140,7 @@ scoop install alacritty
|
|||
### Other
|
||||
|
||||
Prebuilt binaries for Linux, macOS, and Windows can be downloaded from the
|
||||
[GitHub releases page](https://github.com/jwilm/alacritty/releases). If your
|
||||
[GitHub releases page](https://github.com/alacritty/alacritty/releases). If your
|
||||
desktop environment has trouble rendering the default SVG icons, you can find
|
||||
a prerendered SVG as well as simplified versions of the SVG in the
|
||||
`extra/logo/compat` directory.
|
||||
|
@ -151,12 +151,12 @@ For Windows versions older than Windows 10 (October 2018 Update), Alacritty
|
|||
requires winpty to emulate UNIX's PTY API. The agent is a single binary
|
||||
(`winpty-agent.exe`) which **must** be in the same directory as the Alacritty
|
||||
executable and is available through the
|
||||
[GitHub releases page](https://github.com/jwilm/alacritty/releases).
|
||||
[GitHub releases page](https://github.com/alacritty/alacritty/releases).
|
||||
|
||||
## Configuration
|
||||
|
||||
You can find the default configuration file with documentation for all available
|
||||
fields on the [GitHub releases page](https://github.com/jwilm/alacritty/releases) for each release.
|
||||
fields on the [GitHub releases page](https://github.com/alacritty/alacritty/releases) for each release.
|
||||
|
||||
Alacritty looks for the configuration file at the following paths:
|
||||
|
||||
|
@ -191,7 +191,7 @@ that issue to keep up on the latest developments.
|
|||
|
||||
**_Is it really the fastest terminal emulator?_**
|
||||
|
||||
In the terminals we've [benchmarked](http://github.com/jwilm/vtebench),
|
||||
In the terminals we've [benchmarked](http://github.com/alacritty/vtebench),
|
||||
Alacritty is either faster or **way** faster than the others. If you've found a
|
||||
case where this isn't true, please report a bug.
|
||||
|
||||
|
@ -229,5 +229,5 @@ env WINIT_UNIX_BACKEND=x11 alacritty
|
|||
|
||||
Alacritty is released under the [Apache License, Version 2.0].
|
||||
|
||||
[Apache License, Version 2.0]: https://github.com/jwilm/alacritty/blob/master/LICENSE-APACHE
|
||||
[Apache License, Version 2.0]: https://github.com/alacritty/alacritty/blob/master/LICENSE-APACHE
|
||||
[tmux]: https://github.com/tmux/tmux
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
[package]
|
||||
name = "alacritty"
|
||||
version = "0.4.2-dev"
|
||||
authors = ["Joe Wilm <joe@jwilm.com>"]
|
||||
authors = ["Christian Duerr <contact@christianduerr.com", "Joe Wilm <joe@jwilm.com>"]
|
||||
license = "Apache-2.0"
|
||||
description = "GPU-accelerated terminal emulator"
|
||||
readme = "../README.md"
|
||||
homepage = "https://github.com/jwilm/alacritty"
|
||||
homepage = "https://github.com/alacritty/alacritty"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
|
@ -56,7 +56,7 @@ nightly = []
|
|||
bench = []
|
||||
|
||||
[package.metadata.deb]
|
||||
maintainer = "Joe Wilm <joe@jwilm.com>"
|
||||
maintainer = "Christian Duerr <contact@christianduerr.com>"
|
||||
license-file = ["../LICENSE-APACHE", "3"]
|
||||
extended-description = """\
|
||||
Alacritty is the fastest terminal emulator in existence. Using the GPU for \
|
||||
|
|
|
@ -214,7 +214,7 @@ impl Display {
|
|||
// Set window position
|
||||
//
|
||||
// TODO: replace `set_position` with `with_position` once available
|
||||
// Upstream issue: https://github.com/tomaka/winit/issues/806
|
||||
// Upstream issue: https://github.com/rust-windowing/winit/issues/806
|
||||
if let Some(position) = config.window.position {
|
||||
window.set_outer_position(PhysicalPosition::from((position.x, position.y)));
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
[package]
|
||||
name = "alacritty_terminal"
|
||||
version = "0.4.2-dev"
|
||||
authors = ["Joe Wilm <joe@jwilm.com>"]
|
||||
authors = ["Christian Duerr <contact@christianduerr.com>", "Joe Wilm <joe@jwilm.com>"]
|
||||
license = "Apache-2.0"
|
||||
description = "Library for writing terminal emulators"
|
||||
readme = "../README.md"
|
||||
homepage = "https://github.com/jwilm/alacritty"
|
||||
homepage = "https://github.com/alacritty/alacritty"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
|
@ -24,7 +24,7 @@ unicode-width = "0.1"
|
|||
base64 = "0.11.0"
|
||||
terminfo = "0.6.1"
|
||||
url = "2"
|
||||
copypasta = { path = "../copypasta" }
|
||||
copypasta = "0.6.1"
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
nix = "0.15.0"
|
||||
|
|
|
@ -395,7 +395,7 @@ impl<'a, C> Iterator for RenderableCellsIter<'a, C> {
|
|||
inner: self.grid[self.cursor],
|
||||
column: self.cursor.col,
|
||||
// Using `self.cursor.line` leads to inconsitent cursor position when
|
||||
// scrolling. See https://github.com/jwilm/alacritty/issues/2570 for more
|
||||
// scrolling. See https://github.com/alacritty/alacritty/issues/2570 for more
|
||||
// info.
|
||||
line: self.inner.line(),
|
||||
};
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
[package]
|
||||
name = "copypasta"
|
||||
version = "0.6.1"
|
||||
authors = ["Christian Duerr <contact@christianduerr.com>"]
|
||||
description = "copypasta is a cross-platform library for getting and setting the contents of the OS-level clipboard."
|
||||
repository = "https://github.com/jwilm/alacritty"
|
||||
license = "MIT / Apache-2.0"
|
||||
keywords = ["clipboard"]
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
clipboard-win = "2.1"
|
||||
|
||||
[target.'cfg(target_os = "macos")'.dependencies]
|
||||
objc = "0.2"
|
||||
objc_id = "0.1"
|
||||
objc-foundation = "0.1"
|
||||
|
||||
[target.'cfg(all(unix, not(any(target_os="macos", target_os="android", target_os="emscripten"))))'.dependencies]
|
||||
x11-clipboard = "0.4.0"
|
||||
smithay-clipboard = "0.3.4"
|
||||
wayland-client = { version = "0.23.3", features = ["dlopen"] }
|
||||
|
||||
[target.'cfg(all(unix, not(any(target_os="macos", target_os="android", target_os="emscripten"))))'.dev-dependencies]
|
||||
andrew = "0.2.1"
|
||||
smithay-client-toolkit = "0.6.1"
|
|
@ -1,201 +0,0 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
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.
|
|
@ -1,25 +0,0 @@
|
|||
Copyright (c) 2017 Avraham Weinstock
|
||||
|
||||
Permission is hereby granted, free of charge, to any
|
||||
person obtaining a copy of this software and associated
|
||||
documentation files (the "Software"), to deal in the
|
||||
Software without restriction, including without
|
||||
limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software
|
||||
is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice
|
||||
shall be included in all copies or substantial portions
|
||||
of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
||||
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
||||
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
|
@ -1,34 +0,0 @@
|
|||
# copypasta
|
||||
|
||||
copypasta is a [rust-clipboard](https://github.com/aweinstock314/rust-clipboard) fork, adding support for the Wayland clipboard.
|
||||
|
||||
rust-clipboard is a cross-platform library for getting and setting the contents of the OS-level clipboard.
|
||||
|
||||
## Example
|
||||
|
||||
```rust
|
||||
extern crate copypasta;
|
||||
|
||||
use copypasta::ClipboardContext;
|
||||
|
||||
fn example() {
|
||||
let mut ctx = ClipboardContext::new().unwrap();
|
||||
println!("{:?}", ctx.get_contents());
|
||||
ctx.set_contents("some string".to_owned()).unwrap();
|
||||
}
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
The `ClipboardProvider` trait has the following functions:
|
||||
|
||||
```rust
|
||||
fn get_contents(&mut self) -> Result<String, Box<Error>>;
|
||||
fn set_contents(&mut self, String) -> Result<(), Box<Error>>;
|
||||
```
|
||||
|
||||
`ClipboardContext` is a type alias for one of {`WindowsClipboardContext`, `OSXClipboardContext`, `X11ClipboardContext`, `NopClipboardContext`}, all of which implement `ClipboardProvider`. Which concrete type is chosen for `ClipboardContext` depends on the OS (via conditional compilation).
|
||||
|
||||
## License
|
||||
|
||||
`rust-clipboard` is dual-licensed under MIT and Apache2.
|
|
@ -1,12 +0,0 @@
|
|||
extern crate copypasta;
|
||||
|
||||
use copypasta::ClipboardContext;
|
||||
use copypasta::ClipboardProvider;
|
||||
|
||||
fn main() {
|
||||
let mut ctx = ClipboardContext::new().unwrap();
|
||||
|
||||
let the_string = "Hello, world!";
|
||||
|
||||
ctx.set_contents(the_string.to_owned()).unwrap();
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
extern crate copypasta;
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
use copypasta::x11_clipboard::{Primary, X11ClipboardContext};
|
||||
#[cfg(target_os = "linux")]
|
||||
use copypasta::ClipboardProvider;
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
fn main() {
|
||||
let mut ctx = X11ClipboardContext::<Primary>::new().unwrap();
|
||||
|
||||
let the_string = "Hello, world!";
|
||||
|
||||
ctx.set_contents(the_string.to_owned()).unwrap();
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "linux"))]
|
||||
fn main() {
|
||||
println!("Primary selection is only available under linux!");
|
||||
}
|
|
@ -1,227 +0,0 @@
|
|||
#[cfg(any(not(unix), target_os = "macos", target_os = "android", target_os = "emscripten"))]
|
||||
fn main() {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
#[cfg(all(unix, not(any(target_os = "macos", target_os = "android", target_os = "emscripten"))))]
|
||||
fn main() {
|
||||
wayland::main();
|
||||
}
|
||||
|
||||
#[cfg(all(unix, not(any(target_os = "macos", target_os = "android", target_os = "emscripten"))))]
|
||||
mod wayland {
|
||||
extern crate andrew;
|
||||
extern crate copypasta;
|
||||
extern crate smithay_client_toolkit as sctk;
|
||||
|
||||
use wayland::copypasta::wayland_clipboard::create_clipboards;
|
||||
use wayland::copypasta::ClipboardProvider;
|
||||
|
||||
use std::io::{Read, Seek, SeekFrom, Write};
|
||||
use std::sync::{atomic, Arc, Mutex};
|
||||
|
||||
use wayland::sctk::keyboard::{map_keyboard_auto, Event as KbEvent, KeyState};
|
||||
use wayland::sctk::utils::{DoubleMemPool, MemPool};
|
||||
use wayland::sctk::window::{ConceptFrame, Event as WEvent, Window};
|
||||
use wayland::sctk::Environment;
|
||||
|
||||
use wayland::sctk::reexports::client::protocol::{wl_shm, wl_surface};
|
||||
use wayland::sctk::reexports::client::{Display, NewProxy};
|
||||
|
||||
use wayland::andrew::shapes::rectangle;
|
||||
use wayland::andrew::text;
|
||||
use wayland::andrew::text::fontconfig;
|
||||
|
||||
pub fn main() {
|
||||
let (display, mut event_queue) =
|
||||
Display::connect_to_env().expect("Failed to connect to the wayland server.");
|
||||
let env = Environment::from_display(&*display, &mut event_queue).unwrap();
|
||||
|
||||
let (mut ctx, _) = create_clipboards(&display);
|
||||
let cb_contents = Arc::new(Mutex::new(String::new()));
|
||||
|
||||
let seat = env.manager.instantiate_range(2, 6, NewProxy::implement_dummy).unwrap();
|
||||
|
||||
let need_redraw = Arc::new(atomic::AtomicBool::new(false));
|
||||
let need_redraw_clone = need_redraw.clone();
|
||||
let cb_contents_clone = cb_contents.clone();
|
||||
map_keyboard_auto(&seat, move |event: KbEvent, _| {
|
||||
if let KbEvent::Key { state: KeyState::Pressed, utf8: Some(text), .. } = event {
|
||||
if text == " " {
|
||||
*cb_contents_clone.lock().unwrap() = ctx.get_contents().unwrap();
|
||||
need_redraw_clone.store(true, atomic::Ordering::Relaxed)
|
||||
} else if text == "s" {
|
||||
ctx.set_contents(
|
||||
"This is an example text thats been copied to the wayland clipboard :)"
|
||||
.to_string(),
|
||||
)
|
||||
.unwrap();
|
||||
} else if text == "t" {
|
||||
ctx.set_contents("Alternative text :)".to_string()).unwrap();
|
||||
}
|
||||
}
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
let mut dimensions = (320u32, 240u32);
|
||||
let surface = env.compositor.create_surface(NewProxy::implement_dummy).unwrap();
|
||||
|
||||
let next_action = Arc::new(Mutex::new(None::<WEvent>));
|
||||
|
||||
let waction = next_action.clone();
|
||||
let mut window =
|
||||
Window::<ConceptFrame>::init_from_env(&env, surface, dimensions, move |evt| {
|
||||
let mut next_action = waction.lock().unwrap();
|
||||
// Keep last event in priority order : Close > Configure > Refresh
|
||||
let replace = match (&evt, &*next_action) {
|
||||
(_, &None)
|
||||
| (_, &Some(WEvent::Refresh))
|
||||
| (&WEvent::Configure { .. }, &Some(WEvent::Configure { .. }))
|
||||
| (&WEvent::Close, _) => true,
|
||||
_ => false,
|
||||
};
|
||||
if replace {
|
||||
*next_action = Some(evt);
|
||||
}
|
||||
})
|
||||
.expect("Failed to create a window !");
|
||||
|
||||
window.new_seat(&seat);
|
||||
window.set_title("Clipboard".to_string());
|
||||
|
||||
let mut pools =
|
||||
DoubleMemPool::new(&env.shm, || {}).expect("Failed to create a memory pool !");
|
||||
|
||||
let mut font_data = Vec::new();
|
||||
std::fs::File::open(
|
||||
&fontconfig::FontConfig::new().unwrap().get_regular_family_fonts("sans").unwrap()[0],
|
||||
)
|
||||
.unwrap()
|
||||
.read_to_end(&mut font_data)
|
||||
.unwrap();
|
||||
|
||||
if !env.shell.needs_configure() {
|
||||
// initial draw to bootstrap on wl_shell
|
||||
if let Some(pool) = pools.pool() {
|
||||
redraw(pool, window.surface(), dimensions, &font_data, "".to_string());
|
||||
}
|
||||
window.refresh();
|
||||
}
|
||||
|
||||
loop {
|
||||
match next_action.lock().unwrap().take() {
|
||||
Some(WEvent::Close) => break,
|
||||
Some(WEvent::Refresh) => {
|
||||
window.refresh();
|
||||
window.surface().commit();
|
||||
},
|
||||
Some(WEvent::Configure { new_size, .. }) => {
|
||||
if let Some((w, h)) = new_size {
|
||||
window.resize(w, h);
|
||||
dimensions = (w, h)
|
||||
}
|
||||
window.refresh();
|
||||
if let Some(pool) = pools.pool() {
|
||||
redraw(
|
||||
pool,
|
||||
window.surface(),
|
||||
dimensions,
|
||||
&font_data,
|
||||
cb_contents.lock().unwrap().clone(),
|
||||
);
|
||||
}
|
||||
},
|
||||
None => {},
|
||||
}
|
||||
|
||||
if need_redraw.swap(false, atomic::Ordering::Relaxed) {
|
||||
if let Some(pool) = pools.pool() {
|
||||
redraw(
|
||||
pool,
|
||||
window.surface(),
|
||||
dimensions,
|
||||
&font_data,
|
||||
cb_contents.lock().unwrap().clone(),
|
||||
);
|
||||
}
|
||||
window.surface().damage_buffer(0, 0, dimensions.0 as i32, dimensions.1 as i32);
|
||||
window.surface().commit();
|
||||
}
|
||||
|
||||
event_queue.dispatch().unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
fn redraw(
|
||||
pool: &mut MemPool,
|
||||
surface: &wl_surface::WlSurface,
|
||||
dimensions: (u32, u32),
|
||||
font_data: &[u8],
|
||||
cb_contents: String,
|
||||
) {
|
||||
let (buf_x, buf_y) = (dimensions.0 as usize, dimensions.1 as usize);
|
||||
|
||||
pool.resize(4 * buf_x * buf_y).expect("Failed to resize the memory pool.");
|
||||
|
||||
let mut buf = vec![0; 4 * buf_x * buf_y];
|
||||
let mut canvas =
|
||||
andrew::Canvas::new(&mut buf, buf_x, buf_y, 4 * buf_x, andrew::Endian::native());
|
||||
|
||||
let bg = rectangle::Rectangle::new((0, 0), (buf_x, buf_y), None, Some([255, 170, 20, 45]));
|
||||
canvas.draw(&bg);
|
||||
|
||||
let text_box = rectangle::Rectangle::new(
|
||||
(buf_x / 30, buf_y / 35),
|
||||
(buf_x - 2 * (buf_x / 30), (buf_x as f32 / 14.) as usize),
|
||||
Some((3, [255, 255, 255, 255], rectangle::Sides::ALL, Some(4))),
|
||||
None,
|
||||
);
|
||||
canvas.draw(&text_box);
|
||||
|
||||
let helper_text = text::Text::new(
|
||||
(buf_x / 25, buf_y / 30),
|
||||
[255, 255, 255, 255],
|
||||
font_data,
|
||||
buf_x as f32 / 40.,
|
||||
2.0,
|
||||
"Press space to draw clipboard contents",
|
||||
);
|
||||
canvas.draw(&helper_text);
|
||||
|
||||
let helper_text = text::Text::new(
|
||||
(buf_x / 25, buf_y / 15),
|
||||
[255, 255, 255, 255],
|
||||
font_data,
|
||||
buf_x as f32 / 40.,
|
||||
2.0,
|
||||
"Press 's' to store example text to clipboard",
|
||||
);
|
||||
canvas.draw(&helper_text);
|
||||
|
||||
for i in (0..cb_contents.len()).step_by(36) {
|
||||
let content = if cb_contents.len() < i + 36 {
|
||||
cb_contents[i..].to_string()
|
||||
} else {
|
||||
cb_contents[i..i + 36].to_string()
|
||||
};
|
||||
let text = text::Text::new(
|
||||
(buf_x / 10, buf_y / 8 + (i as f32 * buf_y as f32 / 1000.) as usize),
|
||||
[255, 255, 255, 255],
|
||||
font_data,
|
||||
buf_x as f32 / 40.,
|
||||
2.0,
|
||||
content,
|
||||
);
|
||||
canvas.draw(&text);
|
||||
}
|
||||
|
||||
pool.seek(SeekFrom::Start(0)).unwrap();
|
||||
pool.write_all(canvas.buffer).unwrap();
|
||||
pool.flush().unwrap();
|
||||
|
||||
let new_buffer =
|
||||
pool.buffer(0, buf_x as i32, buf_y as i32, 4 * buf_x as i32, wl_shm::Format::Argb8888);
|
||||
surface.attach(Some(&new_buffer), 0, 0);
|
||||
surface.commit();
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
// Copyright 2016 Avraham Weinstock
|
||||
//
|
||||
// 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.
|
||||
|
||||
use std::error::Error;
|
||||
|
||||
// TODO: come up with some platform-agnostic API for richer types
|
||||
/// Trait for clipboard access
|
||||
pub trait ClipboardProvider: Send {
|
||||
/// Method to get the clipboard contents as a String
|
||||
fn get_contents(&mut self) -> Result<String, Box<dyn Error>>;
|
||||
/// Method to set the clipboard contents as a String
|
||||
fn set_contents(&mut self, String) -> Result<(), Box<dyn Error>>;
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
// Copyright 2016 Avraham Weinstock
|
||||
//
|
||||
// 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.
|
||||
|
||||
#![crate_name = "copypasta"]
|
||||
#![crate_type = "lib"]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
|
||||
#[cfg(all(unix, not(any(target_os = "macos", target_os = "android", target_os = "emscripten"))))]
|
||||
extern crate smithay_clipboard;
|
||||
#[cfg(all(unix, not(any(target_os = "macos", target_os = "android", target_os = "emscripten"))))]
|
||||
extern crate wayland_client;
|
||||
#[cfg(all(unix, not(any(target_os = "macos", target_os = "android", target_os = "emscripten"))))]
|
||||
extern crate x11_clipboard as x11_clipboard_crate;
|
||||
|
||||
#[cfg(windows)]
|
||||
extern crate clipboard_win;
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
#[macro_use]
|
||||
extern crate objc;
|
||||
#[cfg(target_os = "macos")]
|
||||
extern crate objc_foundation;
|
||||
#[cfg(target_os = "macos")]
|
||||
extern crate objc_id;
|
||||
|
||||
mod common;
|
||||
pub use common::ClipboardProvider;
|
||||
|
||||
#[cfg(all(unix, not(any(target_os = "macos", target_os = "android", target_os = "emscripten"))))]
|
||||
pub mod wayland_clipboard;
|
||||
#[cfg(all(unix, not(any(target_os = "macos", target_os = "android", target_os = "emscripten"))))]
|
||||
pub mod x11_clipboard;
|
||||
|
||||
#[cfg(windows)]
|
||||
pub mod windows_clipboard;
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
pub mod osx_clipboard;
|
||||
|
||||
pub mod nop_clipboard;
|
||||
|
||||
#[cfg(all(unix, not(any(target_os = "macos", target_os = "android", target_os = "emscripten"))))]
|
||||
pub type ClipboardContext = x11_clipboard::X11ClipboardContext;
|
||||
#[cfg(windows)]
|
||||
pub type ClipboardContext = windows_clipboard::WindowsClipboardContext;
|
||||
#[cfg(target_os = "macos")]
|
||||
pub type ClipboardContext = osx_clipboard::OSXClipboardContext;
|
||||
#[cfg(target_os = "android")]
|
||||
pub type ClipboardContext = nop_clipboard::NopClipboardContext; // TODO: implement AndroidClipboardContext
|
||||
#[cfg(not(any(
|
||||
unix,
|
||||
windows,
|
||||
target_os = "macos",
|
||||
target_os = "android",
|
||||
target_os = "emscripten"
|
||||
)))]
|
||||
pub type ClipboardContext = nop_clipboard::NopClipboardContext;
|
|
@ -1,42 +0,0 @@
|
|||
// Copyright 2016 Avraham Weinstock
|
||||
//
|
||||
// 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.
|
||||
|
||||
use common::ClipboardProvider;
|
||||
use std::error::Error;
|
||||
|
||||
pub struct NopClipboardContext;
|
||||
|
||||
impl NopClipboardContext {
|
||||
pub fn new() -> Result<NopClipboardContext, Box<dyn Error>> {
|
||||
Ok(NopClipboardContext)
|
||||
}
|
||||
}
|
||||
|
||||
impl ClipboardProvider for NopClipboardContext {
|
||||
fn get_contents(&mut self) -> Result<String, Box<dyn Error>> {
|
||||
println!(
|
||||
"Attempting to get the contents of the clipboard, which hasn't yet been implemented \
|
||||
on this platform."
|
||||
);
|
||||
Ok("".to_string())
|
||||
}
|
||||
|
||||
fn set_contents(&mut self, _: String) -> Result<(), Box<dyn Error>> {
|
||||
println!(
|
||||
"Attempting to set the contents of the clipboard, which hasn't yet been implemented \
|
||||
on this platform."
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
// Copyright 2016 Avraham Weinstock
|
||||
//
|
||||
// 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.
|
||||
|
||||
use common::*;
|
||||
use objc::runtime::{Class, Object};
|
||||
use objc_foundation::{INSArray, INSObject, INSString};
|
||||
use objc_foundation::{NSArray, NSDictionary, NSObject, NSString};
|
||||
use objc_id::{Id, Owned};
|
||||
use std::error::Error;
|
||||
use std::mem::transmute;
|
||||
|
||||
pub struct OSXClipboardContext {
|
||||
pasteboard: Id<Object>,
|
||||
}
|
||||
|
||||
// required to bring NSPasteboard into the path of the class-resolver
|
||||
#[link(name = "AppKit", kind = "framework")]
|
||||
extern "C" {}
|
||||
|
||||
impl OSXClipboardContext {
|
||||
pub fn new() -> Result<OSXClipboardContext, Box<dyn Error>> {
|
||||
let cls = Class::get("NSPasteboard").ok_or("Class::get(\"NSPasteboard\")")?;
|
||||
let pasteboard: *mut Object = unsafe { msg_send![cls, generalPasteboard] };
|
||||
if pasteboard.is_null() {
|
||||
return Err("NSPasteboard#generalPasteboard returned null".into());
|
||||
}
|
||||
let pasteboard: Id<Object> = unsafe { Id::from_ptr(pasteboard) };
|
||||
Ok(OSXClipboardContext { pasteboard })
|
||||
}
|
||||
}
|
||||
|
||||
impl ClipboardProvider for OSXClipboardContext {
|
||||
fn get_contents(&mut self) -> Result<String, Box<dyn Error>> {
|
||||
let string_class: Id<NSObject> = {
|
||||
let cls: Id<Class> = unsafe { Id::from_ptr(class("NSString")) };
|
||||
unsafe { transmute(cls) }
|
||||
};
|
||||
let classes: Id<NSArray<NSObject, Owned>> = NSArray::from_vec(vec![string_class]);
|
||||
let options: Id<NSDictionary<NSObject, NSObject>> = NSDictionary::new();
|
||||
let string_array: Id<NSArray<NSString>> = unsafe {
|
||||
let obj: *mut NSArray<NSString> =
|
||||
msg_send![self.pasteboard, readObjectsForClasses:&*classes options:&*options];
|
||||
if obj.is_null() {
|
||||
return Err("pasteboard#readObjectsForClasses:options: returned null".into());
|
||||
}
|
||||
Id::from_ptr(obj)
|
||||
};
|
||||
if string_array.count() == 0 {
|
||||
Err("pasteboard#readObjectsForClasses:options: returned empty".into())
|
||||
} else {
|
||||
Ok(string_array[0].as_str().to_owned())
|
||||
}
|
||||
}
|
||||
|
||||
fn set_contents(&mut self, data: String) -> Result<(), Box<dyn Error>> {
|
||||
let string_array = NSArray::from_vec(vec![NSString::from_str(&data)]);
|
||||
let _: usize = unsafe { msg_send![self.pasteboard, clearContents] };
|
||||
let success: bool = unsafe { msg_send![self.pasteboard, writeObjects: string_array] };
|
||||
return if success {
|
||||
Ok(())
|
||||
} else {
|
||||
Err("NSPasteboard#writeObjects: returned false".into())
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// this is a convenience function that both cocoa-rs and
|
||||
// glutin define, which seems to depend on the fact that
|
||||
// Option::None has the same representation as a null pointer
|
||||
#[inline]
|
||||
pub fn class(name: &str) -> *mut Class {
|
||||
unsafe { transmute(Class::get(name)) }
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
// Copyright 2017 Avraham Weinstock
|
||||
//
|
||||
// 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.
|
||||
|
||||
use std::error::Error;
|
||||
use std::ffi::c_void;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use smithay_clipboard::WaylandClipboard;
|
||||
|
||||
use wayland_client::sys::client::wl_display;
|
||||
use wayland_client::Display;
|
||||
|
||||
use common::ClipboardProvider;
|
||||
|
||||
pub struct Clipboard {
|
||||
context: Arc<Mutex<WaylandClipboard>>,
|
||||
}
|
||||
|
||||
pub struct Primary {
|
||||
context: Arc<Mutex<WaylandClipboard>>,
|
||||
}
|
||||
|
||||
pub fn create_clipboards(display: &Display) -> (Primary, Clipboard) {
|
||||
let context = Arc::new(Mutex::new(WaylandClipboard::new(display)));
|
||||
|
||||
(Primary { context: context.clone() }, Clipboard { context })
|
||||
}
|
||||
|
||||
/// Create new clipboard from a raw display pointer.
|
||||
///
|
||||
/// # Safety
|
||||
///
|
||||
/// Since the type of the display is a raw pointer, it's the responsibility of the callee to make
|
||||
/// sure that the passed pointer is a valid Wayland display.
|
||||
pub unsafe fn create_clipboards_from_external(display: *mut c_void) -> (Primary, Clipboard) {
|
||||
let context =
|
||||
Arc::new(Mutex::new(WaylandClipboard::new_from_external(display as *mut wl_display)));
|
||||
|
||||
(Primary { context: context.clone() }, Clipboard { context })
|
||||
}
|
||||
|
||||
impl ClipboardProvider for Clipboard {
|
||||
fn get_contents(&mut self) -> Result<String, Box<dyn Error>> {
|
||||
Ok(self.context.lock().unwrap().load(None))
|
||||
}
|
||||
|
||||
fn set_contents(&mut self, data: String) -> Result<(), Box<dyn Error>> {
|
||||
self.context.lock().unwrap().store(None, data);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl ClipboardProvider for Primary {
|
||||
fn get_contents(&mut self) -> Result<String, Box<dyn Error>> {
|
||||
Ok(self.context.lock().unwrap().load_primary(None))
|
||||
}
|
||||
|
||||
fn set_contents(&mut self, data: String) -> Result<(), Box<dyn Error>> {
|
||||
self.context.lock().unwrap().store_primary(None, data);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
// Copyright 2016 Avraham Weinstock
|
||||
//
|
||||
// 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.
|
||||
|
||||
use clipboard_win::{get_clipboard_string, set_clipboard_string};
|
||||
|
||||
use common::ClipboardProvider;
|
||||
use std::error::Error;
|
||||
|
||||
pub struct WindowsClipboardContext;
|
||||
|
||||
impl WindowsClipboardContext {
|
||||
pub fn new() -> Result<Self, Box<dyn Error>> {
|
||||
Ok(WindowsClipboardContext)
|
||||
}
|
||||
}
|
||||
|
||||
impl ClipboardProvider for WindowsClipboardContext {
|
||||
fn get_contents(&mut self) -> Result<String, Box<dyn Error>> {
|
||||
Ok(get_clipboard_string()?)
|
||||
}
|
||||
|
||||
fn set_contents(&mut self, data: String) -> Result<(), Box<dyn Error>> {
|
||||
Ok(set_clipboard_string(&data)?)
|
||||
}
|
||||
}
|
|
@ -1,72 +0,0 @@
|
|||
// Copyright 2017 Avraham Weinstock
|
||||
//
|
||||
// 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.
|
||||
|
||||
use common::*;
|
||||
use std::error::Error;
|
||||
use std::marker::PhantomData;
|
||||
use std::time::Duration;
|
||||
use x11_clipboard_crate::xcb::xproto::Atom;
|
||||
use x11_clipboard_crate::Atoms;
|
||||
use x11_clipboard_crate::Clipboard as X11Clipboard;
|
||||
|
||||
pub trait Selection: Send {
|
||||
fn atom(atoms: &Atoms) -> Atom;
|
||||
}
|
||||
|
||||
pub struct Primary;
|
||||
|
||||
impl Selection for Primary {
|
||||
fn atom(atoms: &Atoms) -> Atom {
|
||||
atoms.primary
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Clipboard;
|
||||
|
||||
impl Selection for Clipboard {
|
||||
fn atom(atoms: &Atoms) -> Atom {
|
||||
atoms.clipboard
|
||||
}
|
||||
}
|
||||
|
||||
pub struct X11ClipboardContext<S = Clipboard>(X11Clipboard, PhantomData<S>)
|
||||
where
|
||||
S: Selection;
|
||||
|
||||
impl<S> X11ClipboardContext<S>
|
||||
where
|
||||
S: Selection,
|
||||
{
|
||||
pub fn new() -> Result<X11ClipboardContext<S>, Box<dyn Error>> {
|
||||
Ok(X11ClipboardContext(X11Clipboard::new()?, PhantomData))
|
||||
}
|
||||
}
|
||||
|
||||
impl<S> ClipboardProvider for X11ClipboardContext<S>
|
||||
where
|
||||
S: Selection,
|
||||
{
|
||||
fn get_contents(&mut self) -> Result<String, Box<dyn Error>> {
|
||||
Ok(String::from_utf8(self.0.load(
|
||||
S::atom(&self.0.getter.atoms),
|
||||
self.0.getter.atoms.utf8_string,
|
||||
self.0.getter.atoms.property,
|
||||
Duration::from_secs(3),
|
||||
)?)?)
|
||||
}
|
||||
|
||||
fn set_contents(&mut self, data: String) -> Result<(), Box<dyn Error>> {
|
||||
Ok(self.0.store(S::atom(&self.0.setter.atoms), self.0.setter.atoms.utf8_string, data)?)
|
||||
}
|
||||
}
|
|
@ -74,9 +74,9 @@ Defines the X11 window ID (as a decimal integer) to embed Alacritty within
|
|||
\fB\-\-working\-directory\fR <working\-directory>
|
||||
Start the shell in the specified working directory
|
||||
.SH "SEE ALSO"
|
||||
See the alacritty github repository at https://github.com/jwilm/alacritty for the full documentation.
|
||||
See the alacritty github repository at https://github.com/alacritty/alacritty for the full documentation.
|
||||
.SH "BUGS"
|
||||
Found a bug? Please report it at https://github.com/jwilm/alacritty/issues.
|
||||
Found a bug? Please report it at https://github.com/alacritty/alacritty/issues.
|
||||
.SH "AUTHORS"
|
||||
Maintainers:
|
||||
.sp
|
||||
|
@ -88,4 +88,9 @@ Maintainers:
|
|||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
Christian Duerr <contact@christianduerr.com>
|
||||
.sp
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
Joe Wilm <joe@jwilm.com>
|
||||
|
|
|
@ -25,11 +25,11 @@ However, it does allow configuration of many aspects of the terminal.</p>
|
|||
<keyword>terminal emulator</keyword>
|
||||
<keyword>GPU</keyword>
|
||||
</keywords>
|
||||
<url type="homepage">https://github.com/jwilm/alacritty</url>
|
||||
<url type="bugtracker">https://github.com/jwilm/alacritty/issues</url>
|
||||
<url type="homepage">https://github.com/alacritty/alacritty</url>
|
||||
<url type="bugtracker">https://github.com/alacritty/alacritty/issues</url>
|
||||
<releases>
|
||||
<release version="0.4.2-dev" date="2019-06-16" unix_timestamp="1560694196"/>
|
||||
</releases>
|
||||
<update_contact>https://github.com/jwilm/alacritty/blob/master/CONTRIBUTING.md#contact</update_contact>
|
||||
<update_contact>https://github.com/alacritty/alacritty/blob/master/CONTRIBUTING.md#contact</update_contact>
|
||||
<developer_name>Joe Wilm</developer_name>
|
||||
</component>
|
||||
|
|
|
@ -3,8 +3,8 @@ Version: 0.4.2-dev
|
|||
Release: 1%{?dist}
|
||||
Summary: A cross-platform, GPU enhanced terminal emulator
|
||||
License: ASL 2.0
|
||||
URL: https://github.com/jwilm/alacritty
|
||||
VCS: https://github.com/jwilm/alacritty.git
|
||||
URL: https://github.com/alacritty/alacritty
|
||||
VCS: https://github.com/alacritty/alacritty.git
|
||||
Source: alacritty-%{version}.tar
|
||||
|
||||
BuildRequires: rust >= 1.36.0
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[package]
|
||||
name = "font"
|
||||
version = "0.1.0"
|
||||
authors = ["Joe Wilm <joe@jwilm.com>"]
|
||||
authors = ["Christian Duerr <contact@christianduerr.com>", "Joe Wilm <joe@jwilm.com>"]
|
||||
description = "Font rendering using the best available solution per platform"
|
||||
license = "Apache-2.0"
|
||||
|
||||
|
|
Loading…
Reference in a new issue