logiguard fork: GPUI xdg-activation keyboard-focus serial fix
Some checks failed
Update All Top Ranking Issues / update_top_ranking_issues (push) Has been cancelled
Triage Project Sync (#84) / Sync triage project (push) Has been cancelled
release_nightly / notify_on_failure (push) Has been cancelled
release_nightly / check_style (push) Has been cancelled
release_nightly / run_tests_windows (push) Has been cancelled
release_nightly / clippy_windows (push) Has been cancelled
release_nightly / bundle_linux_aarch64 (push) Has been cancelled
release_nightly / bundle_linux_x86_64 (push) Has been cancelled
release_nightly / bundle_mac_aarch64 (push) Has been cancelled
release_nightly / bundle_mac_x86_64 (push) Has been cancelled
release_nightly / bundle_windows_aarch64 (push) Has been cancelled
release_nightly / bundle_windows_x86_64 (push) Has been cancelled
release_nightly / build_nix_linux_x86_64 (push) Has been cancelled
release_nightly / build_nix_mac_aarch64 (push) Has been cancelled
release_nightly / update_nightly_tag (push) Has been cancelled
Hotfix Review Monitor / check-hotfix-reviews (push) Has been cancelled
Stale PR Review Reminder / check-stale-prs (push) Has been cancelled
Update Weekly Top Ranking Issues / update_top_ranking_issues (push) Has been cancelled
Bump collab-staging Tag / update-collab-staging-tag (push) Has been cancelled
compliance_check / scheduled_compliance_check (push) Has been cancelled

Single-commit orphan branch: full zed-industries/zed @ 8c74db0 source tree
with a 3-file patch applied (no upstream history).

Patch (crates/gpui_linux/src/linux/wayland/):
  - serial.rs: add SerialKind::KeyboardEnter
  - client.rs: store wl_keyboard.enter serial; add latest_serial_of()
  - window.rs: activate() uses keyboard-enter serial (Mutter focus gate)

Mutter honors window activation only when the token carries the keyboard-
focus serial from wl_keyboard.enter; GPUI used a stale mouse-press serial.
See docs/tray-window-focus-wayland.md in logiguard.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Mohamad Khani
2026-07-14 02:22:17 +03:30
commit b72a46db68
3984 changed files with 1583326 additions and 0 deletions

16
crates/icons/Cargo.toml Normal file
View File

@@ -0,0 +1,16 @@
[package]
name = "icons"
version = "0.1.0"
edition.workspace = true
publish.workspace = true
license = "GPL-3.0-or-later"
[lints]
workspace = true
[lib]
path = "src/icons.rs"
[dependencies]
serde.workspace = true
strum.workspace = true

1
crates/icons/LICENSE-GPL Symbolic link
View File

@@ -0,0 +1 @@
../../LICENSE-GPL

29
crates/icons/README.md Normal file
View File

@@ -0,0 +1,29 @@
# Zed Icons
## Guidelines
Icons are a big part of Zed, and they're how we convey hundreds of actions without relying on labeled buttons.
When introducing a new icon, it's important to ensure consistency with the existing set, which follows these guidelines:
1. The SVG view box should be 16x16.
2. For outlined icons, use a 1.2px stroke width.
3. Not all icons are mathematically aligned; there's quite a bit of optical adjustment. However, try to keep the icon within an internal 12x12 bounding box as much as possible while ensuring proper visibility.
4. Use the `filled` and `outlined` terminology when introducing icons that will have these two variants.
5. Icons that are deeply contextual may have the feature context as their name prefix. For example, `ToolWeb`, `ReplPlay`, `DebugStepInto`, etc.
6. Avoid complex layer structures in the icon SVG, like clipping masks and similar elements. When the shape becomes too complex, we recommend running the SVG through [SVGOMG](https://jakearchibald.github.io/svgomg/) to clean it up.
## Sourcing
Most icons are created by sourcing them from [Lucide](https://lucide.dev/).
Then, they're modified, adjusted, cleaned up, and simplified depending on their use and overall fit with Zed.
Sometimes, we may use other sources like [Phosphor](https://phosphoricons.com/), but we also design many icons completely from scratch.
## Contributing
To introduce a new icon, add the `.svg` file to the `assets/icon` directory and then add its corresponding item to the `icons.rs` file within the `crates` directory.
- SVG files in the assets folder follow a snake_case name format.
- Icons in the `icons.rs` file follow the PascalCase name format.
Make sure to tag a member of Zed's design team so we can review and adjust any newly introduced icon.

295
crates/icons/src/icons.rs Normal file
View File

@@ -0,0 +1,295 @@
use std::sync::Arc;
use serde::{Deserialize, Serialize};
use strum::{EnumIter, EnumString, IntoStaticStr};
#[derive(
Debug, PartialEq, Eq, Copy, Clone, EnumIter, EnumString, IntoStaticStr, Serialize, Deserialize,
)]
#[strum(serialize_all = "snake_case")]
pub enum IconName {
AcpRegistry,
AiAnthropic,
AiBedrock,
AiClaude,
AiDeepSeek,
AiEdit,
AiGemini,
AiGoogle,
AiLmStudio,
AiMistral,
AiOllama,
AiOpenAi,
AiOpenAiCompat,
AiOpenCode,
AiOpenRouter,
AiVercel,
AiXAi,
AiZed,
Archive,
ArrowCircle,
ArrowDown,
ArrowDown10,
ArrowDownRight,
ArrowLeft,
ArrowRight,
ArrowRightLeft,
ArrowUp,
ArrowUpRight,
AtSign,
Attach,
AudioOff,
AudioOn,
Backspace,
Bell,
BellDot,
BellOff,
BellRing,
Binary,
Blocks,
Bookmark,
BoltFilled,
BoltOutlined,
Book,
BookCopy,
Box,
BoxOpen,
CaseSensitive,
Chat,
Check,
CheckDouble,
ChevronDown,
ChevronDownUp,
ChevronLeft,
ChevronRight,
ChevronUp,
ChevronUpDown,
Circle,
CircleHelp,
Clock,
Close,
CloudDownload,
Code,
Command,
Control,
Copilot,
CopilotDisabled,
CopilotError,
CopilotInit,
Copy,
CountdownTimer,
Crosshair,
CursorIBeam,
Dash,
DatabaseZap,
Debug,
DebugBreakpoint,
DebugContinue,
DebugDetach,
DebugDisabledBreakpoint,
DebugDisabledLogBreakpoint,
DebugIgnoreBreakpoints,
DebugLogBreakpoint,
DebugPause,
DebugStepInto,
DebugStepOut,
DebugStepOver,
Diff,
DiffSplit,
DiffSplitAuto,
DiffUnified,
Disconnected,
Download,
EditorAtom,
EditorCursor,
EditorEmacs,
EditorJetBrains,
EditorSublime,
EditorVsCode,
Ellipsis,
Envelope,
Eraser,
Escape,
Exit,
ExpandDown,
ExpandUp,
ExpandVertical,
Eye,
EyeOff,
FastForward,
FastForwardOff,
File,
FileCode,
FileDiff,
FileDoc,
FileGeneric,
FileGit,
FileLock,
FileMarkdown,
FileRust,
FileTextFilled,
FileTextOutlined,
FileToml,
FileTree,
Filter,
Flame,
Folder,
FolderOpen,
FolderOpenAdd,
FolderSearch,
Font,
FontSize,
FontWeight,
ForwardArrow,
ForwardArrowUp,
GenericClose,
GenericMaximize,
GenericMinimize,
GenericRestore,
GitBranch,
GitBranchPlus,
GitCommit,
GitGraph,
GitMergeConflict,
GitWorktree,
Github,
Hash,
HistoryRerun,
Image,
Inception,
Indicator,
Info,
Json,
Keyboard,
Library,
LineHeight,
Link,
Linux,
ListCollapse,
ListFilter,
ListTodo,
ListTree,
ListX,
LoadCircle,
LocationEdit,
LockOutlined,
MagnifyingGlass,
Maximize,
MaximizeAlt,
Menu,
MenuAltTemp,
Mic,
MicMute,
Minimize,
NewThread,
Notepad,
OpenFolder,
Option,
PageDown,
PageUp,
Paperclip,
Pencil,
PencilUnavailable,
Person,
Pin,
PlayFilled,
PlayOutlined,
Plus,
Power,
Public,
PullRequest,
QueueMessage,
Quote,
Reader,
RefreshTitle,
Regex,
ReplNeutral,
Replace,
ReplaceAll,
ReplaceNext,
ReplyArrowRight,
Rerun,
Return,
RotateCcw,
RotateCw,
Scissors,
Screen,
SelectAll,
Send,
Server,
Settings,
Shift,
SignalHigh,
SignalLow,
SignalMedium,
Slash,
Sliders,
Space,
Sparkle,
Split,
SplitAlt,
SquareDot,
SquareMinus,
SquarePlus,
Star,
StarFilled,
Stop,
Tab,
Terminal,
TerminalAlt,
TextSnippet,
ThinkingMode,
ThinkingModeOff,
Thread,
ThreadFromSummary,
ThreadsSidebarLeftClosed,
ThreadsSidebarLeftOpen,
ThreadsSidebarRightClosed,
ThreadsSidebarRightOpen,
ThumbsDown,
ThumbsUp,
TodoComplete,
TodoPending,
TodoProgress,
ToolCopy,
ToolDeleteFile,
ToolDiagnostics,
ToolFolder,
ToolHammer,
ToolNotification,
ToolPencil,
ToolSearch,
ToolTerminal,
ToolThink,
ToolWeb,
Trash,
Triangle,
TriangleRight,
Undo,
Unpin,
UserCheck,
UserGroup,
UserRoundPen,
Warning,
WholeWord,
XCircle,
XCircleFilled,
ZedAgent,
ZedAgentTwo,
ZedAssistant,
ZedPredict,
ZedPredictDisabled,
ZedPredictDown,
ZedPredictError,
ZedPredictUp,
ZedSrcCustom,
ZedSrcExtension,
}
impl IconName {
/// Returns the path to this icon.
pub fn path(&self) -> Arc<str> {
let file_stem: &'static str = self.into();
format!("icons/{file_stem}.svg").into()
}
}