mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-15 14:47:30 +00:00
ff65008316
This change implements gpui's credentials API for the linux platform, using the [`oo7`](https://lib.rs/crates/oo7) library. We had a short discussion on Discord about where to store credentials and landed on the two dbus APIs [`org.freedesktop.Secrets`](https://specifications.freedesktop.org/secret-service/latest/index.html) and [`org.freedesktop.portal.Secrets`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.Secret.html). The first one provides access to a more or less general purpose keystore, the second provides a way of obtaining a unique masterkey which in turn can be used for encrypting stuff and storing it to disk (especially interesting for sandboxed apps, think flatpak/snap). I decided to give the implementation a try with `oo7`, which uses the portal if the app is sandboxed and the secret service otherwise. If we do not want to use that library, we would probably have to more or less copy its functionality anyways. I also heard rumors of eventually changing the credentials API and I think this implementation serves as a starting point to discuss the need for this? With a working credentials implementation the sign in button now works (it panicked before). Todos: - [x] implement keystore unlocking - [x] try the change with oo7's tracing enabled? - [x] test the password deletion Release Notes: - N/A --------- Signed-off-by: Niklas Wimmer <mail@nwimmer.me> Co-authored-by: Mikayla Maki <mikayla@zed.dev>
127 lines
3.3 KiB
TOML
127 lines
3.3 KiB
TOML
[package]
|
|
name = "gpui"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
authors = ["Nathan Sobo <nathan@zed.dev>"]
|
|
description = "Zed's GPU-accelerated UI framework"
|
|
publish = false
|
|
license = "Apache-2.0"
|
|
|
|
[features]
|
|
test-support = [
|
|
"backtrace",
|
|
"env_logger",
|
|
"collections/test-support",
|
|
"util/test-support",
|
|
]
|
|
runtime_shaders = []
|
|
macos-blade = ["blade-graphics", "blade-macros", "blade-rwh", "bytemuck"]
|
|
|
|
[lib]
|
|
path = "src/gpui.rs"
|
|
doctest = false
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
async-task = "4.7"
|
|
backtrace = { version = "0.3", optional = true }
|
|
blade-graphics = { workspace = true, optional = true }
|
|
blade-macros = { workspace = true, optional = true }
|
|
blade-rwh = { workspace = true, optional = true }
|
|
bytemuck = { version = "1", optional = true }
|
|
collections.workspace = true
|
|
ctor.workspace = true
|
|
derive_more.workspace = true
|
|
env_logger = { version = "0.9", optional = true }
|
|
etagere = "0.2"
|
|
futures.workspace = true
|
|
font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "5a5c4d4" }
|
|
gpui_macros.workspace = true
|
|
image = "0.23"
|
|
itertools.workspace = true
|
|
lazy_static.workspace = true
|
|
linkme = "0.3"
|
|
log.workspace = true
|
|
num_cpus = "1.13"
|
|
parking = "2.0.0"
|
|
parking_lot.workspace = true
|
|
pathfinder_geometry = "0.5"
|
|
postage.workspace = true
|
|
profiling.workspace = true
|
|
rand.workspace = true
|
|
raw-window-handle = "0.6"
|
|
refineable.workspace = true
|
|
resvg = "0.14"
|
|
schemars.workspace = true
|
|
seahash = "4.1"
|
|
serde.workspace = true
|
|
serde_derive.workspace = true
|
|
serde_json.workspace = true
|
|
slotmap = "1.0.6"
|
|
smallvec.workspace = true
|
|
smol.workspace = true
|
|
sum_tree.workspace = true
|
|
taffy = { git = "https://github.com/DioxusLabs/taffy", rev = "1876f72bee5e376023eaa518aa7b8a34c769bd1b" }
|
|
thiserror.workspace = true
|
|
time.workspace = true
|
|
tiny-skia = "0.5"
|
|
usvg = { version = "0.14", features = [] }
|
|
util.workspace = true
|
|
uuid = { version = "1.1.2", features = ["v4"] }
|
|
waker-fn = "1.1.0"
|
|
|
|
[dev-dependencies]
|
|
backtrace = "0.3"
|
|
collections = { workspace = true, features = ["test-support"] }
|
|
env_logger.workspace = true
|
|
util = { workspace = true, features = ["test-support"] }
|
|
|
|
[build-dependencies]
|
|
bindgen = "0.65.1"
|
|
cbindgen = "0.26.0"
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
block = "0.1"
|
|
cocoa = "0.25"
|
|
core-foundation.workspace = true
|
|
core-graphics = "0.23"
|
|
core-text = "20.1"
|
|
foreign-types = "0.5"
|
|
log.workspace = true
|
|
media.workspace = true
|
|
metal = "0.25"
|
|
objc = "0.2"
|
|
|
|
[target.'cfg(any(target_os = "linux", target_os = "windows"))'.dependencies]
|
|
flume = "0.11"
|
|
#TODO: use these on all platforms
|
|
blade-graphics.workspace = true
|
|
blade-macros.workspace = true
|
|
blade-rwh.workspace = true
|
|
bytemuck = "1"
|
|
cosmic-text = "0.10.0"
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
open = "5.0.1"
|
|
ashpd = "0.7.0"
|
|
xcb = { version = "1.3", features = ["as-raw-xcb-connection", "randr", "xkb"] }
|
|
wayland-client= { version = "0.31.2" }
|
|
wayland-cursor = "0.31.1"
|
|
wayland-protocols = { version = "0.31.2", features = ["client", "staging", "unstable"] }
|
|
wayland-backend = { version = "0.3.3", features = ["client_system"] }
|
|
xkbcommon = { version = "0.7", features = ["wayland", "x11"] }
|
|
as-raw-xcb-connection = "1"
|
|
calloop = "0.12.4"
|
|
calloop-wayland-source = "0.2.0"
|
|
oo7 = "0.3.0"
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows.workspace = true
|
|
|
|
[[example]]
|
|
name = "hello_world"
|
|
path = "examples/hello_world.rs"
|
|
|
|
[[example]]
|
|
name = "image"
|
|
path = "examples/image/image.rs"
|