gwen: Rebrand to Gwen 1.0.0 with independent identity and environment

This commit is contained in:
yenru0 committed 2026-09-22 22:46:11 +09:00
1 parent e39622d51c
commit 3e046788b5
24 files changed
+192 -140

No files matched your search

Generated
+1 -1
View File
@@ -22934,7 +22934,7 @@ dependencies = [
[[package]]
name = "zed"
version = "1.22.0-Y1"
version = "1.0.0"
dependencies = [
"acp_thread",
"acp_tools",
+4
View File
@@ -1,6 +1,10 @@
> [!IMPORTANT]
> Remove this line to confirm you've reviewed this PR before submitting.
# Gwen
**Gwen 1.0.0** — based on zed 1.22.0.
# Zed
[![Zed](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/zed-industries/zed/main/assets/badge/v0.json)](https://zed.dev)
+9
View File
@@ -0,0 +1,9 @@
<svg width="96" height="96" viewBox="0 0 96 96" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M50 52 C54 40 62 26 70 12 C72 8 68 5 65 8 C56 18 50 32 45 48 Z" fill="black"/>
<path d="M46 52 C42 40 34 26 26 12 C24 8 28 5 31 8 C40 18 46 32 51 48 Z" fill="black"/>
<path d="M44 60 C40 66 36 70 33 74" stroke="black" stroke-width="6" stroke-linecap="round"/>
<path d="M52 60 C56 66 60 70 63 74" stroke="black" stroke-width="6" stroke-linecap="round"/>
<circle cx="30" cy="81" r="9" stroke="black" stroke-width="6"/>
<circle cx="66" cy="81" r="9" stroke="black" stroke-width="6"/>
<circle cx="48" cy="56" r="4.5" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 640 B

-10
View File
@@ -1,10 +0,0 @@
<svg width="96" height="96" viewBox="0 0 96 96" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1957_1318)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9 6C7.34315 6 6 7.34315 6 9V75H0V9C0 4.02944 4.02944 0 9 0H89.3787C93.3878 0 95.3955 4.84715 92.5607 7.68198L43.0551 57.1875H57V51H63V58.6875C63 61.1728 60.9853 63.1875 58.5 63.1875H37.0551L26.7426 73.5H73.5V36H79.5V73.5C79.5 76.8137 76.8137 79.5 73.5 79.5H20.7426L10.2426 90H87C88.6569 90 90 88.6569 90 87V21H96V87C96 91.9706 91.9706 96 87 96H6.62132C2.61224 96 0.604504 91.1529 3.43934 88.318L52.7574 39H39V45H33V37.5C33 35.0147 35.0147 33 37.5 33H58.7574L69.2574 22.5H22.5V60H16.5V22.5C16.5 19.1863 19.1863 16.5 22.5 16.5H75.2574L85.7574 6H9Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_1957_1318">
<rect width="96" height="96" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 861 B

+3 -3
View File
@@ -165,7 +165,7 @@ impl ZedAiOnboarding {
.w_full()
.relative()
.gap_1()
.child(Headline::new("Welcome to Zed AI"))
.child(Headline::new("Welcome to Gwen AI"))
.child(
Label::new("Sign in to try GPT Luna. Your 14 days begin when you start the trial.")
.color(Color::Muted)
@@ -195,7 +195,7 @@ impl ZedAiOnboarding {
.relative()
.min_w_0()
.gap_1()
.child(Headline::new("Welcome to Zed AI"))
.child(Headline::new("Welcome to Gwen AI"))
.child(YoungAccountBanner)
.child(
v_flex()
@@ -232,7 +232,7 @@ impl ZedAiOnboarding {
.w_full()
.relative()
.gap_1()
.child(Headline::new("Welcome to Zed AI"))
.child(Headline::new("Welcome to Gwen AI"))
.child(
v_flex()
.mt_2()
+19 -19
View File
@@ -48,21 +48,21 @@ trait InstalledApp {
#[derive(Parser, Debug)]
#[command(
name = "zed",
name = "gwen",
disable_version_flag = true,
before_help = "The Zed CLI binary.
This CLI is a separate binary that invokes Zed.
before_help = "The Gwen CLI binary.
This CLI is a separate binary that invokes Gwen.
Examples:
`zed`
Simply opens Zed
`zed --foreground`
`gwen`
Simply opens Gwen
`gwen --foreground`
Runs in foreground (shows all logs)
`zed path-to-your-project`
Open your project in Zed
`zed -n path-to-file `
`gwen path-to-your-project`
Open your project in Gwen
`gwen -n path-to-file `
Open file/folder in a new window",
after_help = "To read from stdin, append '-', e.g. 'ps axf | zed -'"
after_help = "To read from stdin, append '-', e.g. 'ps axf | gwen -'"
)]
struct Args {
/// Wait for all of the given paths to be opened/closed before exiting.
@@ -79,7 +79,7 @@ struct Args {
/// Reuse an existing window, replacing its workspace
#[arg(short, long, overrides_with_all = ["add", "new", "existing", "classic"], hide = true)]
reuse: bool,
/// Open in existing Zed window
/// Open in existing Gwen window
#[arg(short = 'e', long = "existing", overrides_with_all = ["add", "new", "reuse", "classic"])]
existing: bool,
/// Use the classic open behavior: new window for directories, reuse for files
@@ -100,7 +100,7 @@ struct Args {
/// Use `path:line:column` syntax to open a file at the given line and column.
#[arg(trailing_var_arg = true, value_hint = clap::ValueHint::AnyPath)]
paths_with_position: Vec<String>,
/// Print Zed's version and the app path.
/// Print Gwen's version and the app path.
#[arg(short, long)]
version: bool,
/// Run zed in the foreground (useful for debugging)
@@ -113,7 +113,7 @@ struct Args {
#[arg(long)]
dev_server_token: Option<String>,
/// The username and WSL distribution to use when opening paths. If not specified,
/// Zed will attempt to open the paths directly.
/// Gwen will attempt to open the paths directly.
///
/// The username is optional, and if not specified, the default user for the distribution
/// will be used.
@@ -124,7 +124,7 @@ struct Args {
#[cfg(target_os = "windows")]
#[arg(long, value_name = "USER@DISTRO")]
wsl: Option<String>,
/// Not supported in Zed CLI, only supported on Zed binary
/// Not supported in Gwen CLI, only supported on Gwen binary
/// Will attempt to give the correct command to run
#[arg(long)]
system_specs: bool,
@@ -141,7 +141,7 @@ struct Args {
/// Generate shell completions for Zed
#[arg(long, value_names = ["SHELL"])]
completions: Option<Shell>,
/// Uninstall Zed from user system
/// Uninstall Gwen from user system
#[cfg(all(
any(target_os = "linux", target_os = "macos"),
not(feature = "no-bundled-uninstall")
@@ -551,7 +551,7 @@ fn run() -> Result<()> {
if args.system_specs {
let path = app.path();
let msg = [
"The `--system-specs` argument is not supported in the Zed CLI, only on Zed binary.",
"The `--system-specs` argument is not supported in the Gwen CLI, only on Gwen binary.",
"To retrieve the system specs on the command line, run the following command:",
&format!("{} --system-specs", path.display()),
];
@@ -925,7 +925,7 @@ mod linux {
impl InstalledApp for App {
fn zed_version_string(&self) -> String {
format!(
"Zed {}{}{} – {}",
"Gwen {}{}{} (based on zed 1.22.0) – {}",
if *release_channel::RELEASE_CHANNEL_NAME == "stable" {
"".to_string()
} else {
@@ -1202,7 +1202,7 @@ mod windows {
impl InstalledApp for App {
fn zed_version_string(&self) -> String {
format!(
"Zed {}{}{} – {}",
"Gwen {}{}{} (based on zed 1.22.0) – {}",
if *release_channel::RELEASE_CHANNEL_NAME == "stable" {
"".to_string()
} else {
@@ -1375,7 +1375,7 @@ mod mac_os {
impl InstalledApp for Bundle {
fn zed_version_string(&self) -> String {
format!("Zed {} – {}", self.version(), self.path().display(),)
format!("Gwen {} – {}", self.version(), self.path().display(),)
}
fn launch(&self, url: String, user_data_dir: Option<&str>) -> anyhow::Result<()> {
+2 -2
View File
@@ -347,11 +347,11 @@ impl Render for Onboarding {
.child(
h_flex()
.gap_4()
.child(Vector::square(VectorName::ZedLogo, rems(2.5)))
.child(Vector::square(VectorName::GwenLogo, rems(2.5)))
.child(
v_flex()
.child(
Headline::new("Welcome to Zed")
Headline::new("Welcome to Gwen")
.size(HeadlineSize::Small),
)
.child(
+3 -3
View File
@@ -15,7 +15,7 @@ pub const EDITORCONFIG_NAME: &str = ".editorconfig";
/// and state directory paths.
///
/// Forks should change this to avoid colliding with Zed's user data.
pub const APP_NAME: &str = "Zed";
pub const APP_NAME: &str = "Gwen";
/// Lowercased form of [`APP_NAME`], for use in XDG-style paths on
/// Linux/FreeBSD and the macOS `~/.config` fallback.
@@ -68,7 +68,7 @@ static CONFIG_DIR: OnceLock<PathBuf> = OnceLock::new();
/// Returns the relative path to the zed_server directory on the ssh host.
pub fn remote_server_dir_relative() -> &'static RelPath {
static CACHED: LazyLock<&'static RelPath> =
LazyLock::new(|| RelPath::from_unix_str(".zed_server").unwrap());
LazyLock::new(|| RelPath::from_unix_str(".gwen_server").unwrap());
*CACHED
}
@@ -76,7 +76,7 @@ pub fn remote_server_dir_relative() -> &'static RelPath {
/// Returns the relative path to the zed_wsl_server directory on the wsl host.
pub fn remote_wsl_server_dir_relative() -> &'static RelPath {
static CACHED: LazyLock<&'static RelPath> =
LazyLock::new(|| RelPath::from_unix_str(".zed_wsl_server").unwrap());
LazyLock::new(|| RelPath::from_unix_str(".gwen_wsl_server").unwrap());
*CACHED
}
+4 -4
View File
@@ -205,10 +205,10 @@ impl ReleaseChannel {
/// Returns the display name for this [`ReleaseChannel`].
pub fn display_name(&self) -> &'static str {
match self {
ReleaseChannel::Dev => "Zed Dev",
ReleaseChannel::Nightly => "Zed Nightly",
ReleaseChannel::Preview => "Zed Preview",
ReleaseChannel::Stable => "Zed",
ReleaseChannel::Dev => "Gwen",
ReleaseChannel::Nightly => "Gwen Nightly",
ReleaseChannel::Preview => "Gwen Preview",
ReleaseChannel::Stable => "Gwen",
}
}
+1 -1
View File
@@ -279,7 +279,7 @@ async fn build_remote_server_from_source(
// extract step gunzip it.
let bundled_remote_server = std::env::current_exe()
.ok()
.and_then(|exe| exe.parent().map(|dir| dir.join("zed-remote-server.gz")))
.and_then(|exe| exe.parent().map(|dir| dir.join("gwen-remote-server.gz")))
.filter(|path| path.is_file());
if let Some(bundled_remote_server) = bundled_remote_server {
if binary_exists_on_server {
+1 -1
View File
@@ -842,7 +842,7 @@ impl SshRemoteConnection {
_ => version.to_string(),
};
let binary_name = format!(
"zed-remote-server-{}-{}{}",
"gwen-remote-server-{}-{}{}",
release_channel.dev_name(),
version_str,
if self.ssh_platform.os.is_windows() {
+6 -6
View File
@@ -19,7 +19,7 @@ pub enum VectorName {
ProTrialStamp,
ProUserStamp,
StudentStamp,
ZedLogo,
GwenLogo,
ZedXCopilot,
}
@@ -122,7 +122,7 @@ impl Component for Vector {
vec![
single_example(
"Default",
Vector::square(VectorName::ZedLogo, size).into_any_element(),
Vector::square(VectorName::GwenLogo, size).into_any_element(),
),
single_example(
"Custom Size",
@@ -130,7 +130,7 @@ impl Component for Vector {
.h(rems_from_px(120_f32))
.justify_center()
.child(Vector::new(
VectorName::ZedLogo,
VectorName::GwenLogo,
rems_from_px(120_f32),
rems_from_px(200_f32),
))
@@ -143,13 +143,13 @@ impl Component for Vector {
vec![
single_example(
"Accent Color",
Vector::square(VectorName::ZedLogo, size)
Vector::square(VectorName::GwenLogo, size)
.color(Color::Accent)
.into_any_element(),
),
single_example(
"Error Color",
Vector::square(VectorName::ZedLogo, size)
Vector::square(VectorName::GwenLogo, size)
.color(Color::Error)
.into_any_element(),
),
@@ -174,6 +174,6 @@ mod tests {
#[test]
fn vector_path() {
assert_eq!(VectorName::ZedLogo.path().as_ref(), "images/zed_logo.svg");
assert_eq!(VectorName::GwenLogo.path().as_ref(), "images/gwen_logo.svg");
}
}
+1 -1
View File
@@ -477,7 +477,7 @@ impl Render for WelcomePage {
.justify_center()
.mb_4()
.gap_4()
.child(Vector::square(VectorName::ZedLogo, rems_from_px(45_f32)))
.child(Vector::square(VectorName::GwenLogo, rems_from_px(45_f32)))
.child(
v_flex().child(Headline::new(welcome_label)).child(
Label::new("The editor for what's next")
+4 -4
View File
@@ -1,12 +1,12 @@
[package]
description = "The fast, collaborative code editor."
description = "Gwen: The fast, collaborative code editor. Based on Zed."
edition.workspace = true
name = "zed"
version = "1.22.0-Y1"
version = "1.0.0"
publish.workspace = true
license = "GPL-3.0-or-later"
authors = ["Zed Team <hi@zed.dev>"]
default-run = "zed"
default-run = "gwen"
[lints]
workspace = true
@@ -54,7 +54,7 @@ visual-tests = [
]
[[bin]]
name = "zed"
name = "gwen"
path = "src/main.rs"
[[bin]]
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

+51
View File
@@ -0,0 +1,51 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#232437"/>
<stop offset="1" stop-color="#15151f"/>
</linearGradient>
<linearGradient id="blade" x1="0" y1="1" x2="1" y2="0">
<stop offset="0" stop-color="#c9973a"/>
<stop offset="0.55" stop-color="#e8b851"/>
<stop offset="1" stop-color="#f4d489"/>
</linearGradient>
</defs>
<!-- rounded square background -->
<rect x="0" y="0" width="1024" height="1024" rx="228" fill="url(#bg)"/>
<!-- thread accents behind the scissors -->
<path d="M 208 700 C 330 620, 420 700, 512 640 C 604 580, 700 660, 816 576"
fill="none" stroke="#f7768e" stroke-width="14" stroke-linecap="round" opacity="0.85"/>
<path d="M 208 752 C 330 672, 420 752, 512 692 C 604 632, 700 712, 816 628"
fill="none" stroke="#7aa2f7" stroke-width="14" stroke-linecap="round" opacity="0.85"/>
<!-- scissors (Gwen's giant shears) -->
<g>
<!-- right blade -->
<path d="M 536 520
C 600 430, 668 320, 716 208
C 728 180, 712 158, 688 174
C 610 226, 540 320, 496 452 Z"
fill="url(#blade)"/>
<!-- left blade (mirrored) -->
<path d="M 488 520
C 424 430, 356 320, 308 208
C 296 180, 312 158, 336 174
C 414 226, 484 320, 528 452 Z"
fill="url(#blade)" opacity="0.94"/>
<!-- right handle: connector + ring -->
<path d="M 534 548 C 580 620, 640 700, 674 762"
fill="none" stroke="url(#blade)" stroke-width="42" stroke-linecap="round"/>
<circle cx="706" cy="812" r="76" fill="none" stroke="url(#blade)" stroke-width="42"/>
<!-- left handle: connector + ring -->
<path d="M 490 548 C 444 620, 384 700, 350 762"
fill="none" stroke="url(#blade)" stroke-width="42" stroke-linecap="round" opacity="0.94"/>
<circle cx="318" cy="812" r="76" fill="none" stroke="url(#blade)" stroke-width="42" opacity="0.94"/>
<!-- pivot -->
<circle cx="512" cy="536" r="40" fill="#f4d489"/>
<circle cx="512" cy="536" r="16" fill="#15151f"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+19
View File
@@ -0,0 +1,19 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=$APP_NAME
GenericName=Text Editor
Comment=A fast code editor based on Zed.
TryExec=$APP_CLI
StartupNotify=$DO_STARTUP_NOTIFY
Exec=$APP_CLI $APP_ARGS
Icon=$APP_ICON
Categories=Utility;TextEditor;Development;IDE;
Keywords=gwen;
# To add Gwen to "Open Folder With..." context menu, add `inode/directory` to the MimeType field (semicolon separated)
MimeType=text/plain;application/x-zerosize;x-scheme-handler/zed;
Actions=NewWorkspace;
[Desktop Action NewWorkspace]
Exec=$APP_CLI --new $APP_ARGS
Name=Open a new workspace
+11 -11
View File
@@ -1,48 +1,48 @@
#!/usr/bin/env sh
set -eu
# Installs the Zed bundle this script ships with into ~/.local.
# Installs the Gwen bundle this script ships with into ~/.local.
# Run from inside the extracted bundle directory: ./install.sh
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
app_dir=""
for dir in "$script_dir"/zed-*.app; do
for dir in "$script_dir"/gwen-*.app; do
if [ -d "$dir" ]; then
app_dir=$dir
break
fi
done
if [ -z "$app_dir" ]; then
echo "Error: no zed-*.app bundle found in $script_dir" >&2
echo "Error: no gwen-*.app bundle found in $script_dir" >&2
exit 1
fi
app_name=${app_dir##*/}
suffix=${app_name#zed}
suffix=${app_name#gwen}
suffix=${suffix%.app}
target="$HOME/.local/zed$suffix.app"
target="$HOME/.local/gwen$suffix.app"
rm -rf "$target"
mkdir -p "$HOME/.local"
cp -R "$app_dir" "$target"
# Ship the uninstaller inside the installation so the archive isn't needed to remove Zed
# Ship the uninstaller inside the installation so the archive isn't needed to remove Gwen
cp "$script_dir/uninstall.sh" "$target/uninstall.sh"
mkdir -p "$HOME/.local/bin" "$HOME/.local/share/applications"
ln -sf "$target/bin/zed" "$HOME/.local/bin/zed"
ln -sf "$target/bin/gwen" "$HOME/.local/bin/gwen"
for desktop_file in "$target"/share/applications/*.desktop; do
installed_desktop="$HOME/.local/share/applications/${desktop_file##*/}"
cp "$desktop_file" "$installed_desktop"
# sed anchors on Exec to avoid rewriting TryExec
sed -i "s|^Exec=zed |Exec=$HOME/.local/bin/zed |g" "$installed_desktop"
sed -i "s|^Icon=zed|Icon=$target/share/icons/hicolor/512x512/apps/zed.png|g" "$installed_desktop"
sed -i "s|^Exec=gwen |Exec=$HOME/.local/bin/gwen |g" "$installed_desktop"
sed -i "s|^Icon=gwen|Icon=$target/share/icons/hicolor/512x512/apps/gwen.png|g" "$installed_desktop"
done
case ":$PATH:" in
*":$HOME/.local/bin:"*) ;;
*) echo "Note: add $HOME/.local/bin to your PATH to run zed from the command line." ;;
*) echo "Note: add $HOME/.local/bin to your PATH to run gwen from the command line." ;;
esac
echo "Zed installed to $target"
echo "Gwen installed to $target"
+22 -22
View File
@@ -1,25 +1,25 @@
#!/usr/bin/env sh
set -eu
# Uninstalls a Zed installation created by the accompanying install.sh.
# Detects the installed channel automatically; override with ZED_CHANNEL.
# Uninstalls a Gwen installation created by the accompanying install.sh.
# Detects the installed channel automatically; override with GWEN_CHANNEL.
self_dir=$(CDPATH= cd -- "$(dirname -- "$0")" 2>/dev/null && pwd) || self_dir=""
channel="${ZED_CHANNEL:-}"
channel="${GWEN_CHANNEL:-}"
suffix=""
if [ -n "$channel" ] && [ "$channel" != stable ]; then
suffix="-$channel"
fi
app_dir="$HOME/.local/zed$suffix.app"
app_dir="$HOME/.local/gwen$suffix.app"
if [ -z "$channel" ]; then
app_dir=""
case "$self_dir" in
"$HOME"/.local/zed*.app) app_dir=$self_dir ;;
"$HOME"/.local/gwen*.app) app_dir=$self_dir ;;
esac
if [ -z "$app_dir" ]; then
for dir in "$HOME"/.local/zed*.app; do
for dir in "$HOME"/.local/gwen*.app; do
if [ -d "$dir" ]; then
app_dir=$dir
break
@@ -27,11 +27,11 @@ if [ -z "$channel" ]; then
done
fi
if [ -z "$app_dir" ]; then
echo "Zed is not installed in $HOME/.local"
echo "Gwen is not installed in $HOME/.local"
exit 0
fi
app_name=${app_dir##*/}
suffix=${app_name#zed}
suffix=${app_name#gwen}
suffix=${suffix%.app}
channel=${suffix#-}
if [ -z "$channel" ]; then
@@ -43,49 +43,49 @@ appid=""
db_suffix="stable"
case "$channel" in
stable)
appid="dev.zed.Zed"
appid="com.yrkaierx.Gwen"
;;
nightly)
appid="dev.zed.Zed-Nightly"
appid="com.yrkaierx.Gwen-Nightly"
db_suffix="nightly"
;;
preview)
appid="dev.zed.Zed-Preview"
appid="com.yrkaierx.Gwen-Preview"
db_suffix="preview"
;;
dev)
appid="dev.zed.Zed-Dev"
appid="com.yrkaierx.Gwen"
db_suffix="dev"
;;
*)
echo "Unknown release channel: ${channel}. Using stable app ID."
appid="dev.zed.Zed"
appid="com.yrkaierx.Gwen"
;;
esac
rm -rf "$app_dir"
rm -f "$HOME/.local/bin/zed"
rm -f "$HOME/.local/bin/gwen"
rm -f "$HOME/.local/share/applications/${appid}.desktop"
rm -rf "$HOME/.local/share/zed/db/0-$db_suffix"
rm -f "$HOME/.local/share/zed/zed-$db_suffix.sock"
rm -rf "$HOME/.local/share/gwen/db/0-$db_suffix"
rm -f "$HOME/.local/share/gwen/gwen-$db_suffix.sock"
remaining=0
for dir in "$HOME"/.local/zed*.app; do
for dir in "$HOME"/.local/gwen*.app; do
if [ -d "$dir" ]; then
remaining=1
fi
done
if [ "$remaining" -eq 0 ]; then
rm -rf "$HOME/.local/share/zed"
rm -rf "$HOME/.local/share/gwen"
if [ -t 0 ]; then
printf "Do you want to keep your Zed preferences? [Y/n] "
printf "Do you want to keep your Gwen preferences? [Y/n] "
read -r response
case "$response" in
[nN] | [nN][oO])
rm -rf "$HOME/.config/zed"
rm -rf "$HOME/.config/gwen"
echo "Preferences removed."
;;
*)
@@ -93,7 +93,7 @@ if [ "$remaining" -eq 0 ]; then
;;
esac
fi
rm -rf "$HOME/.zed_server"
rm -rf "$HOME/.gwen_server"
fi
echo "Zed ($channel) has been uninstalled"
echo "Gwen ($channel) has been uninstalled"
-21
View File
@@ -1,21 +0,0 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=$APP_NAME
GenericName=Text Editor
Comment=A high-performance, multiplayer code editor.
TryExec=$APP_CLI
StartupNotify=$DO_STARTUP_NOTIFY
Exec=$APP_CLI $APP_ARGS
Icon=$APP_ICON
Categories=Utility;TextEditor;Development;IDE;
Keywords=zed;
# To add Zed to "Open Folder With..." context menu, add `inode/directory` to the MimeType field (semicolon separated)
# Arch linux users have reported this setting Zed as default file browser. See https://github.com/zed-industries/zed/pull/39076 and related issues.
# If this happens to you, an unconfirmed fix may be to install Arch's `gnome-defaults-list` package.
MimeType=text/plain;application/x-zerosize;x-scheme-handler/zed;
Actions=NewWorkspace;
[Desktop Action NewWorkspace]
Exec=$APP_CLI --new $APP_ARGS
Name=Open a new workspace
+5 -5
View File
@@ -94,7 +94,7 @@ fn build_application() -> Application {
}
fn files_not_created_on_launch(errors: HashMap<io::ErrorKind, Vec<&Path>>) {
let message = "Zed failed to launch";
let message = "Gwen failed to launch";
let error_details = errors
.into_iter()
.flat_map(|(kind, paths)| {
@@ -156,7 +156,7 @@ fn fail_to_open_window_async(e: anyhow::Error, cx: &mut AsyncApp) {
fn fail_to_open_window(e: anyhow::Error, _cx: &mut App) {
eprintln!(
"Zed failed to open a window: {e:?}. See https://zed.dev/docs/linux for troubleshooting steps."
"Gwen failed to open a window: {e:?}. See https://zed.dev/docs/linux for troubleshooting steps."
);
#[cfg(not(any(target_os = "linux", target_os = "freebsd")))]
{
@@ -176,7 +176,7 @@ fn fail_to_open_window(e: anyhow::Error, _cx: &mut App) {
proxy
.add_notification(
notification_id,
Notification::new("Zed failed to launch")
Notification::new("Gwen failed to launch")
.body(Some(
format!(
"{e:?}. See https://zed.dev/docs/linux for troubleshooting steps."
@@ -315,7 +315,7 @@ fn main() {
client::telemetry::os_name(),
client::telemetry::os_version(),
);
println!("Zed System Specs (from CLI):\n{}", system_specs);
println!("Gwen System Specs (from CLI):\n{}", system_specs);
return;
}
@@ -500,7 +500,7 @@ fn main() {
handle_keymap_file_changes(user_keymap_file_rx, user_keymap_watcher, cx);
let user_agent = format!(
"Zed/{} ({}; {})",
"Gwen/{} ({}; {})",
AppVersion::global(cx),
std::env::consts::OS,
std::env::consts::ARCH
+1 -1
View File
@@ -68,7 +68,7 @@ pub fn app_menus(cx: &mut App) -> Vec<Menu> {
vec![
Menu {
name: "Zed".into(),
name: "Gwen".into(),
disabled: false,
items: vec![
MenuItem::action("About Zed", zed_actions::About),
+25 -25
View File
@@ -100,7 +100,7 @@ else
for attempt in 1 2 3; do
echo "Attempting sentry upload (attempt $attempt/3)..."
if sentry-cli debug-files upload --include-sources --wait -p zed -o zed-dev \
"${target_dir}/${target_triple}"/release/zed \
"${target_dir}/${target_triple}"/release/gwen \
"${target_dir}/${remote_server_triple}"/release/remote_server; then
echo "Sentry upload successful on attempt $attempt"
break
@@ -122,9 +122,9 @@ fi
# is skipped.
# We use llvm-objcopy because GNU objcopy on older distros (e.g. Ubuntu 20.04)
# doesn't understand CREL sections produced by newer LLVM.
llvm-objcopy --only-keep-debug "${target_dir}/${target_triple}/release/zed" "${target_dir}/${target_triple}/release/zed.dbg"
llvm-objcopy --only-keep-debug "${target_dir}/${target_triple}/release/gwen" "${target_dir}/${target_triple}/release/gwen.dbg"
llvm-objcopy --only-keep-debug "${target_dir}/${remote_server_triple}/release/remote_server" "${target_dir}/${remote_server_triple}/release/remote_server.dbg"
llvm-objcopy --strip-debug --discard-all "${target_dir}/${target_triple}/release/zed"
llvm-objcopy --strip-debug --discard-all "${target_dir}/${target_triple}/release/gwen"
llvm-objcopy --strip-debug --discard-all "${target_dir}/${target_triple}/release/cli"
llvm-objcopy --strip-debug --discard-all "${target_dir}/${remote_server_triple}/release/remote_server"
@@ -145,13 +145,13 @@ fi
# Move everything that should end up in the final package
# into a temp directory.
temp_dir=$(mktemp -d)
zed_dir="${temp_dir}/zed$suffix.app"
zed_dir="${temp_dir}/gwen$suffix.app"
# Binary
mkdir -p "${zed_dir}/bin" "${zed_dir}/libexec"
cp "${target_dir}/${target_triple}/release/zed" "${zed_dir}/libexec/zed-editor"
cp "${target_dir}/${target_triple}/release/cli" "${zed_dir}/bin/zed"
gzip -c --best "${target_dir}/${remote_server_triple}/release/remote_server" > "${zed_dir}/libexec/zed-remote-server.gz"
cp "${target_dir}/${target_triple}/release/gwen" "${zed_dir}/libexec/gwen"
cp "${target_dir}/${target_triple}/release/cli" "${zed_dir}/bin/gwen"
gzip -c --best "${target_dir}/${remote_server_triple}/release/remote_server" > "${zed_dir}/libexec/gwen-remote-server.gz"
# Libs
# Bundle libstdc++ so older supported systems can run binaries built with our
@@ -161,7 +161,7 @@ gzip -c --best "${target_dir}/${remote_server_triple}/release/remote_server" > "
# get dlopen'd are built against the system GLib, and resolving them against an
# older bundled copy fails with missing symbols.
find_libs() {
ldd ${target_dir}/${target_triple}/release/zed |\
ldd ${target_dir}/${target_triple}/release/gwen |\
cut -d' ' -f3 |\
grep -v '\<\(libc.so\|libgcc_s.so\|libm.so\|libpthread.so\|libdl.so\|libasound.so\)' |\
grep -v '\<\(libglib-2.0.so\|libgobject-2.0.so\|libgio-2.0.so\|libgmodule-2.0.so\|libpcre.so\|libpcre2-8.so\|libmount.so\|libblkid.so\|libselinux.so\|libffi.so\|libresolv.so\|libz.so\)'
@@ -195,31 +195,31 @@ rm -rf "${pdfium_tmp}"
# Icons
mkdir -p "${zed_dir}/share/icons/hicolor/512x512/apps"
cp "crates/zed/resources/app-icon$suffix.png" "${zed_dir}/share/icons/hicolor/512x512/apps/zed.png"
cp "crates/zed/resources/app-icon-gwen.png" "${zed_dir}/share/icons/hicolor/512x512/apps/gwen.png"
mkdir -p "${zed_dir}/share/icons/hicolor/1024x1024/apps"
cp "crates/zed/resources/app-icon$suffix@2x.png" "${zed_dir}/share/icons/hicolor/1024x1024/apps/zed.png"
cp "crates/zed/resources/app-icon-gwen@2x.png" "${zed_dir}/share/icons/hicolor/1024x1024/apps/gwen.png"
# .desktop
export DO_STARTUP_NOTIFY="true"
export APP_CLI="zed"
export APP_ICON="zed"
export APP_CLI="gwen"
export APP_ICON="gwen"
export APP_ARGS="%U"
if [[ "$channel" == "preview" ]]; then
export APP_NAME="Zed Preview"
APP_ID="dev.zed.Zed-Preview"
export APP_NAME="Gwen Preview"
APP_ID="com.yrkaierx.Gwen-Preview"
elif [[ "$channel" == "nightly" ]]; then
export APP_NAME="Zed Nightly"
APP_ID="dev.zed.Zed-Nightly"
export APP_NAME="Gwen Nightly"
APP_ID="com.yrkaierx.Gwen-Nightly"
elif [[ "$channel" == "dev" ]]; then
export APP_NAME="Zed Devel"
APP_ID="dev.zed.Zed-Dev"
export APP_NAME="Gwen"
APP_ID="com.yrkaierx.Gwen"
else
export APP_NAME="Zed"
APP_ID="dev.zed.Zed"
export APP_NAME="Gwen"
APP_ID="com.yrkaierx.Gwen"
fi
mkdir -p "${zed_dir}/share/applications"
envsubst < "crates/zed/resources/zed.desktop.in" > "${zed_dir}/share/applications/$APP_ID.desktop"
envsubst < "crates/zed/resources/gwen.desktop.in" > "${zed_dir}/share/applications/$APP_ID.desktop"
chmod +x "${zed_dir}/share/applications/$APP_ID.desktop"
# Install/uninstall scripts ship in the archive root so it is self-contained
@@ -231,11 +231,11 @@ cp "assets/licenses.md" "${zed_dir}/licenses.md"
# Create archive out of everything that's in the temp directory
arch=$(uname -m)
archive="zed-linux-${arch}.tar.gz"
archive="gwen-linux-${arch}.tar.gz"
rm -rf "${archive}"
remove_match="zed(-[a-zA-Z0-9]+)?-linux-$(uname -m)\.tar\.gz"
remove_match="gwen(-[a-zA-Z0-9]+)?-linux-$(uname -m)\.tar\.gz"
ls "${target_dir}/release" | grep -E ${remove_match} | xargs -d "\n" -I {} rm -f "${target_dir}/release/{}" || true
tar -czvf "${target_dir}/release/$archive" -C ${temp_dir} "zed$suffix.app" install.sh uninstall.sh
tar -czvf "${target_dir}/release/$archive" -C ${temp_dir} "gwen$suffix.app" install.sh uninstall.sh
gzip -f --stdout --best "${target_dir}/${remote_server_triple}/release/remote_server" > "${target_dir}/zed-remote-server-linux-${arch}.gz"
gzip -f --stdout --best "${target_dir}/${remote_server_triple}/release/remote_server" > "${target_dir}/gwen-remote-server-linux-${arch}.gz"