terhechte / ebou Goto Github PK
View Code? Open in Web Editor NEWA cross platform Mastodon Client written in Rust
Home Page: https://terhech.de/ebou/
License: GNU General Public License v3.0
A cross platform Mastodon Client written in Rust
Home Page: https://terhech.de/ebou/
License: GNU General Public License v3.0
Just a comment on the build dependencies. I used a docker container to build the app on Ubuntu successfully but I noticed that gcc
is missing from the listed dependencies to install. For a full install of Ubuntu/Debian this won't matter as it will be available by default but in a container it isn't.
Furthermore, current Fedora doesn't have a xdotool-devel
package. I tried compiling without it but the build failed (not sure if for this reason, though). Side note: gcc
is also needed as a dependency here, although the build ultimately failed.
When trying to get the access token, Ebou sends a JSON-encoded payload to the /oauth/token
endpoint.
While this is fine with Mastodon (since Rails just deserializes based on the Content-Type
header), this causes issues with alternative implementations that actually follow the OAuth2 spec closely, which states that all the body contents have to be application/x-www-form-urlencoded
.
Looking at the code, there seem to be two solutions to this:
application/x-www-form-urlencoded
bodies. This should work fine.application/x-www-form-urlencoded
instead of application/json
(this is more effort, not sure if it's worth it)Ebou can send text for posts, but would be nice if we could attach media to posts as well with Ebou.
Ebou version: Version 0.2.0 (742)
MacOS version: 13.4.1 (c)
A few days ago, I noticed that Ctrl+R
stopped working on my mac.
I was trying to redo an undone change in neovim, but nothing happened at all when I pressed Ctrl+R
. I was also unable to use Ctrl+R
in my shell, to search my previous commands. I tried a different terminal app, but that didn't help.
However, as soon as I closed Ebou, Ctrl+R
started to work again. When I reopened Ebou to see if it was consistent, Ctrl+R
went back to doing nothing.
This seems really strange. As far as I can tell, there are no keyboard shortcuts in Ebou that are bound to Ctrl+R
, and nothing happens in Ebou when I press Ctrl+R
. The closest is Cmd+R
, but that works as expected (it refreshes the posts)
I did not notice any other combinations with Ctrl
that were similarly affected. (The ones I remember using and working fine: Ctrl+Z
, Ctrl+C
, Ctrl+G
, Ctrl+T
)
OS: Arch Linux (6.4.1 kernel)
/usr/lib/libjavascriptcoregtk-4.0.so is present as a part of webkit2gtk (btw, list it as a dep maybe)
but it misses a pkg-config file so the compilation fails because it depends on it.
Tried:
cargo build --release
output:
warning: `PKG_CONFIG_ALLOW_SYSTEM_CFLAGS="1" "pkg-config" "--libs" "--cflags" "javascriptcoregtk-4.1" "javascriptcoregtk-4.1 >= 2.24"` did not exit successfully: exit status: 1
error: failed to run custom build command for `javascriptcore-rs-sys v0.5.1`
Caused by:
process didn't exit successfully: `/home/user/Ebou/target/release/build/javascriptcore-rs-sys-e2aec79b2d46c4e2/build-script-build` (exit status: 1)
--- stdout
cargo:rerun-if-env-changed=JAVASCRIPTCOREGTK_4.1_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
cargo:warning=`PKG_CONFIG_ALLOW_SYSTEM_CFLAGS="1" "pkg-config" "--libs" "--cflags" "javascriptcoregtk-4.1" "javascriptcoregtk-4.1 >= 2.24"` did not exit successfully: exit status: 1
error: could not find system library 'javascriptcoregtk-4.1' required by the 'javascriptcore-rs-sys' crate
--- stderr
Package javascriptcoregtk-4.1 was not found in the pkg-config search path.
Perhaps you should add the directory containing `javascriptcoregtk-4.1.pc'
to the PKG_CONFIG_PATH environment variable
Package 'javascriptcoregtk-4.1', required by 'virtual:world', not found
Package 'javascriptcoregtk-4.1', required by 'virtual:world', not found
I attempted this on Linux, but the build failed. Since I'm not very familiar with Rust and I'm concerned about potentially disrupting my system dependencies, I would like to explore the possibility of setting up a Dockerfile. This would make the setup process easier on any system. I will conduct some research to see if I can find a suitable solution and submit a pull request to the repository if I discover one.
Hey there, ebou looks like a beautiful project ! Unfortunately I can't get it to run on my pleroma instance, I get this error:
src/environment/native/model.rs:616 2023-06-24T13:05:59 [ERROR] - API Error: login RequestError(reqwest::Error { kind: Decode, source: Error("missing field `invites_enabled`", line: 1, column: 1982) })
Is this expected ?
I'm no Rustacean, so I can't help with the coding part but I know my way around the basics of cargo, so I've tried my hand at compiling Ebou on my Linux machine.
I just tried to cargo run
it and after installing a few missing development dependencies1 on my OpenSUSE Tumbleweed, I received a lot of error[E0433]: failed to resolve: use of undeclared crate or module
during compilation of Ebou itself. Not sure what's missing but here's the error log I collected from cargo run
: error-log.txt
If you need any further information or would like me to test some things, I'd be happy to help.
Namely gtk3-devel
, libsoup-devel
, webkit2gtk3-soup2-devel
, webkit2gtk3-devel
, webkit2gtk4-devel
. I'm not sure which of the webkit2gtk3-*
packages were really needed but webkit2gtk4-devel
alone was certainly not enough, so I just installed them both for good measure. ↩
When sending API requests, Ebou appends a trailing slash to the base API URL.
This might work fine with Mastodon (since Rails probably just ignores that slash when routing), but alternative implementations refuse to route these URLs.
This happens because of this line:
Ebou/src/components/login/reducer.rs
Line 88 in d88e3a3
Instead of re-encoding the parsed URL as a string, re-use the term
variable as the value since it's guaranteed to be a valid URL.
Like so:
if url::Url::parse(&term).is_ok() {
state.selected_instance_url = Some(term);
}
Do you think Ebou might be flexible enough to fit the vision of a multi-modal client?
https://blog.erlend.sh/juicy-clients
Basically I’m wondering if you’d accept contributions towards this, starting with an additional view to support a Reddit-style interface. There’s a lot of interest in this within the Rust community so I’m confident we could rally support for this effort: https://www.reddit.com/r/rust/comments/146qxzn/building_a_better_rrust_together/
Although it’s several Dioxus versions ago now, there’s some prior art for a links-aggregator UI by @mrxiaozhuox here: https://github.com/mrxiaozhuox/dioxus-hackernews
Currently release builds of Ebou fail due to a mistake in the build script.
#[cfg(not(debug_assertions))]
fn styles() -> String {
grass::include!("../public/style.css").to_string()
}
is probably meant to be
#[cfg(not(debug_assertions))]
fn styles() -> String {
grass::include!("public/style.scss").to_string()
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.