1pub mod channel_view;
2pub mod collab_panel;
3pub mod notification_panel;
4pub mod notifications;
5mod panel_settings;
6
7use std::{rc::Rc, sync::Arc};
8
9pub use collab_panel::CollabPanel;
10use gpui::{
11 App, Pixels, PlatformDisplay, Size, WindowBackgroundAppearance, WindowBounds,
12 WindowDecorations, WindowKind, WindowOptions, point,
13};
14pub use panel_settings::{CollaborationPanelSettings, NotificationPanelSettings};
15use release_channel::ReleaseChannel;
16use settings::Settings;
17use ui::px;
18use workspace::AppState;
19
20pub fn init(app_state: &Arc<AppState>, cx: &mut App) {
21 CollaborationPanelSettings::register(cx);
22 NotificationPanelSettings::register(cx);
23
24 channel_view::init(cx);
25 collab_panel::init(cx);
26 notification_panel::init(cx);
27 notifications::init(app_state, cx);
28 title_bar::init(cx);
29}
30
31fn notification_window_options(
32 screen: Rc<dyn PlatformDisplay>,
33 size: Size<Pixels>,
34 cx: &App,
35) -> WindowOptions {
36 let notification_margin_width = px(16.);
37 let notification_margin_height = px(-48.);
38
39 let bounds = gpui::Bounds::<Pixels> {
40 origin: screen.bounds().top_right()
41 - point(
42 size.width + notification_margin_width,
43 notification_margin_height,
44 ),
45 size,
46 };
47
48 let app_id = ReleaseChannel::global(cx).app_id();
49
50 WindowOptions {
51 window_bounds: Some(WindowBounds::Windowed(bounds)),
52 titlebar: None,
53 focus: false,
54 show: true,
55 kind: WindowKind::PopUp,
56 is_movable: false,
57 display_id: Some(screen.id()),
58 window_background: WindowBackgroundAppearance::Transparent,
59 app_id: Some(app_id.to_owned()),
60 window_min_size: None,
61 window_decorations: Some(WindowDecorations::Client),
62 tabbing_identifier: None,
63 ..Default::default()
64 }
65}