Fixes for file-watching, user assets, and system dependencies (#2)

Amin Yahyaabadi created

* fix: avoid panics in case of non-existing path for watching

* fix: copy the themes and plugins

* Revert "add a few more libraries to the linux script"

This reverts commit 7509677003da3398d0df796eca9c5435a12f576e.

* fix: add vulkan validation layers to the system deps

* fix: fix the themes paths

Change summary

Cargo.lock          |  1 +
crates/fs/src/fs.rs |  7 ++++++-
script/linux        | 19 +++++++++++--------
3 files changed, 18 insertions(+), 9 deletions(-)

Detailed changes

Cargo.lock 🔗

@@ -937,6 +937,7 @@ dependencies = [
 [[package]]
 name = "blade-graphics"
 version = "0.3.0"
+source = "git+https://github.com/kvark/blade?rev=f35bc605154e210ab6190291235889b6ddad73f1#f35bc605154e210ab6190291235889b6ddad73f1"
 dependencies = [
  "ash",
  "ash-window",

crates/fs/src/fs.rs 🔗

@@ -287,12 +287,17 @@ impl Fs for RealFs {
     ) -> Pin<Box<dyn Send + Stream<Item = Vec<Event>>>> {
         let (tx, rx) = smol::channel::unbounded();
 
+        if !path.exists() {
+            log::error!("watch path does not exist: {}", path.display());
+            return Box::pin(rx);
+        }
+
         let mut watcher = notify::recommended_watcher(move |res| match res {
             Ok(event) => {
                 let _ = tx.try_send(vec![event]);
             }
             Err(err) => {
-                eprintln!("watch error: {:?}", err);
+                log::error!("watch error: {}", err);
             }
         })
         .unwrap();

script/linux 🔗

@@ -3,10 +3,17 @@
 # if not on Linux, do nothing
 [[ $(uname) == "Linux" ]] || exit 0
 
-# Copy settings and keymap to the user's home directory if they don't exist
+# Copy assets to the user's home directory if they don't exist
 mkdir -p "$HOME/.config/zed"
+
+mkdir -p "$HOME/.config/zed/plugins"
+
+mkdir -p "$HOME/.config/zed/themes"
+cp -ruL ./assets/themes/*/*.json "$HOME/.config/zed/themes"
+
 test -f "$HOME/.config/zed/settings.json" ||
   cp -uL ./assets/settings/initial_user_settings.json "$HOME/.config/zed/settings.json"
+
 test -f "$HOME/.config/zed/keymap.json" ||
   cp -uL ./assets/keymaps/default.json "$HOME/.config/zed/keymap.json"
 
@@ -21,13 +28,7 @@ if [[ -n $apt ]]; then
   deps=(
     libasound2-dev
     libfontconfig-dev
-    libxcb-dev
-    alsa-base
-    cmake
-    fontconfig
-    libssl-dev
-    build-essential
-
+    vulkan-validationlayers*
   )
   $maysudo "$apt" install -y "${deps[@]}"
   exit 0
@@ -40,6 +41,7 @@ if [[ -n $dnf ]]; then
   deps=(
     alsa-lib-devel
     fontconfig-devel
+    vulkan-validation-layers
   )
   $maysudo "$dnf" install -y "${deps[@]}"
   exit 0
@@ -52,6 +54,7 @@ if [[ -n $pacman ]]; then
   deps=(
     alsa-lib
     fontconfig
+    vulkan-validation-layers
   )
   $maysudo "$pacman" -S --noconfirm "${deps[@]}"
   exit 0