diff --git a/Cargo.lock b/Cargo.lock index dc3a8e90..013a8c43 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2440,7 +2440,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b" [[package]] -name = "rio-lib" +name = "rio-backend" version = "0.0.27" dependencies = [ "base64", @@ -2494,7 +2494,7 @@ dependencies = [ "parking_lot", "raw-window-handle 0.5.2", "regex", - "rio-lib", + "rio-backend", "serde", "teletypewriter", "tinyvec", diff --git a/Cargo.toml b/Cargo.toml index 32d62ab0..f8ec6955 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,9 +5,9 @@ members = [ "corcovado", "copa", "rio-proc-macros", - "rio-lib", + "rio-backend", - "backends/multi", + "frontends/multi", ] resolver = "2" diff --git a/backends/swift-ui/Rio.xcodeproj/project.xcworkspace/xcuserdata/hugoamor.xcuserdatad/UserInterfaceState.xcuserstate b/backends/swift-ui/Rio.xcodeproj/project.xcworkspace/xcuserdata/hugoamor.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index d6ff976286d2fa6dd74ef3fc33e09ace5d20e48e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45891 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 BBqIO- diff --git a/backends/swift-ui/Rio/PanelView.swift b/backends/swift-ui/Rio/PanelView.swift deleted file mode 100644 index fec44c57..00000000 --- a/backends/swift-ui/Rio/PanelView.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// PanelView.swift -// Rio -// -// Created by Raphael Amorim on 2023-11-12. -// - -import SwiftUI - -struct PanelView: View { - let title: String - let panels: [Panel] - - var body: some View { - List(panels) { panel in - HStack { - Image(systemName: "circle") - Text(panel.title) - } - } - } -} - -#Preview { - PanelView(title: "work", panels: Panel.examples()) -} diff --git a/backends/multi/Cargo.toml b/frontends/multi/Cargo.toml similarity index 96% rename from backends/multi/Cargo.toml rename to frontends/multi/Cargo.toml index 7d88fbe9..73cbd60d 100644 --- a/backends/multi/Cargo.toml +++ b/frontends/multi/Cargo.toml @@ -17,7 +17,7 @@ path = "src/main.rs" [dependencies] winit = { workspace = true } log = { workspace = true } -rio-lib = { path = "../../rio-lib" } +rio-backend = { path = "../../rio-backend" } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] bitflags = "2.4.1" @@ -61,11 +61,11 @@ windows-sys = { version = "0.48", features = [ [features] default = ["wayland", "x11"] x11 = [ - "rio-lib/x11", + "rio-backend/x11", "winit/x11" ] wayland = [ - "rio-lib/wayland", + "rio-backend/wayland", "winit/wayland", "winit/wayland-dlopen", "winit/wayland-csd-adwaita-crossfont", diff --git a/backends/multi/src/cli.rs b/frontends/multi/src/cli.rs similarity index 98% rename from backends/multi/src/cli.rs rename to frontends/multi/src/cli.rs index 7e9ef5f8..f3595558 100644 --- a/backends/multi/src/cli.rs +++ b/frontends/multi/src/cli.rs @@ -2,7 +2,7 @@ // which is licensed under Apache 2.0 license. use clap::{Args, Parser, ValueHint}; -use rio_lib::config::Shell; +use rio_backend::config::Shell; use serde::{Deserialize, Serialize}; #[derive(Parser, Default, Debug)] diff --git a/backends/multi/src/ime.rs b/frontends/multi/src/ime.rs similarity index 100% rename from backends/multi/src/ime.rs rename to frontends/multi/src/ime.rs diff --git a/backends/multi/src/logger.rs b/frontends/multi/src/logger.rs similarity index 100% rename from backends/multi/src/logger.rs rename to frontends/multi/src/logger.rs diff --git a/backends/multi/src/main.rs b/frontends/multi/src/main.rs similarity index 91% rename from backends/multi/src/main.rs rename to frontends/multi/src/main.rs index 54f9625a..e353e3cf 100644 --- a/backends/multi/src/main.rs +++ b/frontends/multi/src/main.rs @@ -4,7 +4,7 @@ // See https://msdn.microsoft.com/en-us/library/4cc7ya5b.aspx for more details. #![windows_subsystem = "windows"] -use rio_lib::{ansi, clipboard, crosswords, event, performer, selection}; +use rio_backend::{ansi, clipboard, crosswords, event, performer, selection}; mod cli; mod ime; @@ -29,7 +29,7 @@ use windows_sys::Win32::System::Console::{ AttachConsole, FreeConsole, ATTACH_PARENT_PROCESS, }; -pub fn setup_environment_variables(config: &rio_lib::config::Config) { +pub fn setup_environment_variables(config: &rio_backend::config::Config) { #[cfg(unix)] let terminfo = if teletypewriter::terminfo_exists("rio") { "rio" @@ -99,12 +99,12 @@ async fn main() -> Result<(), Box> { // Load command line options. let options = cli::Options::new(); - let mut config_error: Option = None; - let mut config = match rio_lib::config::Config::try_load() { + let mut config_error: Option = None; + let mut config = match rio_backend::config::Config::try_load() { Ok(config) => config, Err(error) => { config_error = Some(error); - rio_lib::config::Config::default() + rio_backend::config::Config::default() } }; diff --git a/backends/multi/src/panic.rs b/frontends/multi/src/panic.rs similarity index 100% rename from backends/multi/src/panic.rs rename to frontends/multi/src/panic.rs diff --git a/backends/multi/src/platform/macos/mod.rs b/frontends/multi/src/platform/macos/mod.rs similarity index 100% rename from backends/multi/src/platform/macos/mod.rs rename to frontends/multi/src/platform/macos/mod.rs diff --git a/backends/multi/src/platform/mod.rs b/frontends/multi/src/platform/mod.rs similarity index 100% rename from backends/multi/src/platform/mod.rs rename to frontends/multi/src/platform/mod.rs diff --git a/backends/multi/src/router/assistant.rs b/frontends/multi/src/router/assistant.rs similarity index 93% rename from backends/multi/src/router/assistant.rs rename to frontends/multi/src/router/assistant.rs index d3246dd8..67d98ac9 100644 --- a/backends/multi/src/router/assistant.rs +++ b/frontends/multi/src/router/assistant.rs @@ -1,7 +1,7 @@ -use rio_lib::error::{RioError, RioErrorLevel}; -use rio_lib::sugarloaf::components::rect::Rect; -use rio_lib::sugarloaf::font::FONT_ID_BUILTIN; -use rio_lib::sugarloaf::Sugarloaf; +use rio_backend::error::{RioError, RioErrorLevel}; +use rio_backend::sugarloaf::components::rect::Rect; +use rio_backend::sugarloaf::font::FONT_ID_BUILTIN; +use rio_backend::sugarloaf::Sugarloaf; pub struct Assistant { pub inner: Option, diff --git a/backends/multi/src/router/dialog.rs b/frontends/multi/src/router/dialog.rs similarity index 93% rename from backends/multi/src/router/dialog.rs rename to frontends/multi/src/router/dialog.rs index fd48720d..8166f707 100644 --- a/backends/multi/src/router/dialog.rs +++ b/frontends/multi/src/router/dialog.rs @@ -1,5 +1,5 @@ -use rio_lib::sugarloaf::components::rect::Rect; -use rio_lib::sugarloaf::Sugarloaf; +use rio_backend::sugarloaf::components::rect::Rect; +use rio_backend::sugarloaf::Sugarloaf; #[inline] pub fn screen(sugarloaf: &mut Sugarloaf, content: &str) { diff --git a/backends/multi/src/router/mod.rs b/frontends/multi/src/router/mod.rs similarity index 96% rename from backends/multi/src/router/mod.rs rename to frontends/multi/src/router/mod.rs index b1796edd..e55697fe 100644 --- a/backends/multi/src/router/mod.rs +++ b/frontends/multi/src/router/mod.rs @@ -8,8 +8,8 @@ use crate::screen::window::{configure_window, create_window_builder}; use crate::screen::Screen; use crate::EventP; use assistant::Assistant; -use rio_lib::error::{RioError, RioErrorType}; -use rio_lib::sugarloaf::font::loader; +use rio_backend::error::{RioError, RioErrorType}; +use rio_backend::sugarloaf::font::loader; use settings::Settings; use std::collections::HashMap; use std::error::Error; @@ -40,7 +40,7 @@ impl Route { #[inline] pub fn update_config( &mut self, - config: &Rc, + config: &Rc, db: &loader::Database, ) { self.window @@ -204,7 +204,7 @@ impl Router { &mut self, event_loop: &EventLoopWindowTarget, event_proxy: EventProxy, - config: &Rc, + config: &Rc, ) { let window = RouteWindow::from_target( event_loop, @@ -231,7 +231,7 @@ impl Router { &mut self, event_loop: &EventLoopWindowTarget, event_proxy: EventProxy, - config: &Rc, + config: &Rc, tab_id: Option, ) { let window = RouteWindow::from_target( @@ -266,7 +266,7 @@ pub struct RouteWindow { impl RouteWindow { pub async fn new( event_loop: &EventLoop, - config: &Rc, + config: &Rc, font_database: &loader::Database, ) -> Result> { let proxy = event_loop.create_proxy(); @@ -297,7 +297,7 @@ impl RouteWindow { pub fn from_target( event_loop: &EventLoopWindowTarget, event_proxy: EventProxy, - config: &Rc, + config: &Rc, font_database: &loader::Database, window_name: &str, tab_id: Option, diff --git a/backends/multi/src/router/settings/helpers.rs b/frontends/multi/src/router/settings/helpers.rs similarity index 94% rename from backends/multi/src/router/settings/helpers.rs rename to frontends/multi/src/router/settings/helpers.rs index 92bc920c..f6aded3f 100644 --- a/backends/multi/src/router/settings/helpers.rs +++ b/frontends/multi/src/router/settings/helpers.rs @@ -1,5 +1,5 @@ use crate::router::settings::Setting; -use rio_lib::sugarloaf::font::{ +use rio_backend::sugarloaf::font::{ constants::DEFAULT_FONT_FAMILY, fonts::default_font_size, }; use std::collections::HashMap; @@ -21,7 +21,7 @@ pub const IDX_MACOS_HIDE_BUTTONS: usize = 12; #[inline] pub fn config_to_settings( - config: rio_lib::config::Config, + config: rio_backend::config::Config, font_families: Vec, ) -> HashMap { let mut settings: HashMap = HashMap::new(); @@ -62,7 +62,7 @@ pub fn config_to_settings( } { - let options = rio_lib::config::navigation::modes_as_vec_string(); + let options = rio_backend::config::navigation::modes_as_vec_string(); let current_option: usize = options .iter() .position(|r| r == &config.navigation.mode.to_string()) @@ -272,14 +272,14 @@ pub fn config_to_settings( } #[inline] -pub fn settings_to_config(settings: &HashMap) -> rio_lib::config::Config { - let mut current_config = rio_lib::config::Config::load(); +pub fn settings_to_config(settings: &HashMap) -> rio_backend::config::Config { + let mut current_config = rio_backend::config::Config::load(); { if let Some(setting) = settings.get(&IDX_CURSOR) { let val = setting.options[setting.current_option] .parse::() - .unwrap_or_else(|_| rio_lib::config::defaults::default_cursor()); + .unwrap_or_else(|_| rio_backend::config::defaults::default_cursor()); current_config.cursor = val; } } @@ -288,9 +288,9 @@ pub fn settings_to_config(settings: &HashMap) -> rio_lib::config if let Some(setting) = settings.get(&IDX_PERFORMANCE) { let val = if setting.options[setting.current_option].to_lowercase() == *"low" { - rio_lib::config::Performance::Low + rio_backend::config::Performance::Low } else { - rio_lib::config::Performance::High + rio_backend::config::Performance::High }; current_config.performance = val; } @@ -299,8 +299,8 @@ pub fn settings_to_config(settings: &HashMap) -> rio_lib::config { if let Some(setting) = settings.get(&IDX_NAVIGATION) { let val = setting.options[setting.current_option] - .parse::() - .unwrap_or(rio_lib::config::navigation::NavigationMode::default()); + .parse::() + .unwrap_or(rio_backend::config::navigation::NavigationMode::default()); current_config.navigation.mode = val; } } @@ -316,7 +316,7 @@ pub fn settings_to_config(settings: &HashMap) -> rio_lib::config if let Some(setting) = settings.get(&IDX_PADDING_X) { let val = setting.options[setting.current_option] .parse::() - .unwrap_or_else(|_| rio_lib::config::defaults::default_padding_x()); + .unwrap_or_else(|_| rio_backend::config::defaults::default_padding_x()); current_config.padding_x = val; } } diff --git a/backends/multi/src/router/settings/mod.rs b/frontends/multi/src/router/settings/mod.rs similarity index 92% rename from backends/multi/src/router/settings/mod.rs rename to frontends/multi/src/router/settings/mod.rs index 2b336002..aa9a9d08 100644 --- a/backends/multi/src/router/settings/mod.rs +++ b/frontends/multi/src/router/settings/mod.rs @@ -1,7 +1,7 @@ mod helpers; pub mod screen; -use rio_lib::sugarloaf::font::loader::Database; +use rio_backend::sugarloaf::font::loader::Database; use std::collections::HashMap; use std::fs::File; use std::io::Write; @@ -23,7 +23,7 @@ pub struct Setting { pub struct Settings { pub default_file_path: String, pub default_dir_path: String, - pub config: rio_lib::config::Config, + pub config: rio_backend::config::Config, pub inner: HashMap, pub state: SettingsState, pub font_families: Vec, @@ -54,11 +54,11 @@ impl Settings { font_families.push(String::from("Cascadia Mono (built-in)")); Settings { - default_file_path: rio_lib::config::config_file_path(), - default_dir_path: rio_lib::config::config_dir_path(), - config: rio_lib::config::Config::default(), + default_file_path: rio_backend::config::config_file_path(), + default_dir_path: rio_backend::config::config_dir_path(), + config: rio_backend::config::Config::default(), inner: helpers::config_to_settings( - rio_lib::config::Config::load(), + rio_backend::config::Config::load(), font_families.to_owned(), ), state: SettingsState { @@ -74,7 +74,7 @@ impl Settings { #[inline] pub fn reset(&mut self) { self.inner = helpers::config_to_settings( - rio_lib::config::Config::load(), + rio_backend::config::Config::load(), self.font_families.to_owned(), ); self.state = SettingsState { @@ -192,7 +192,7 @@ impl Settings { log::info!("configuration file created {}", self.default_file_path); if let Err(err_message) = - writeln!(created_file, "{}", rio_lib::config::config_file_content()) + writeln!(created_file, "{}", rio_backend::config::config_file_content()) { log::error!( "could not update config file with defaults: {err_message}" diff --git a/backends/multi/src/router/settings/screen.rs b/frontends/multi/src/router/settings/screen.rs similarity index 97% rename from backends/multi/src/router/settings/screen.rs rename to frontends/multi/src/router/settings/screen.rs index 260d8c14..6ff405e7 100644 --- a/backends/multi/src/router/settings/screen.rs +++ b/frontends/multi/src/router/settings/screen.rs @@ -1,6 +1,6 @@ -use rio_lib::sugarloaf::components::rect::Rect; -use rio_lib::sugarloaf::font::{FONT_ID_BUILTIN, FONT_ID_ICONS}; -use rio_lib::sugarloaf::Sugarloaf; +use rio_backend::sugarloaf::components::rect::Rect; +use rio_backend::sugarloaf::font::{FONT_ID_BUILTIN, FONT_ID_ICONS}; +use rio_backend::sugarloaf::Sugarloaf; #[inline] pub fn render(sugarloaf: &mut Sugarloaf, settings: &crate::router::settings::Settings) { diff --git a/backends/multi/src/router/welcome.rs b/frontends/multi/src/router/welcome.rs similarity index 94% rename from backends/multi/src/router/welcome.rs rename to frontends/multi/src/router/welcome.rs index fb3e4bf8..075908e6 100644 --- a/backends/multi/src/router/welcome.rs +++ b/frontends/multi/src/router/welcome.rs @@ -1,5 +1,5 @@ -use rio_lib::sugarloaf::components::rect::Rect; -use rio_lib::sugarloaf::Sugarloaf; +use rio_backend::sugarloaf::components::rect::Rect; +use rio_backend::sugarloaf::Sugarloaf; #[inline] pub fn screen(sugarloaf: &mut Sugarloaf) { @@ -119,12 +119,12 @@ pub fn screen(sugarloaf: &mut Sugarloaf) { #[cfg(target_os = "macos")] fn welcome_content() -> String { format!("Your configuration file will be created in\n{}\n\nTo open settings menu use\n\"Command\" + \",\" (comma)\n\n\n\nMore info in raphamorim.io/rio/docs - ", rio_lib::config::config_file_path()) + ", rio_backend::config::config_file_path()) } #[inline] #[cfg(not(target_os = "macos"))] fn welcome_content() -> String { format!("Your configuration file will be created in\n{}\n\nTo open settings menu use\n\"Control\" + \"Shift\" + \",\" (comma)\n\n\n\nMore info in raphamorim.io/rio/docs - ", rio_lib::config::config_file_path()) + ", rio_backend::config::config_file_path()) } diff --git a/backends/multi/src/scheduler.rs b/frontends/multi/src/scheduler.rs similarity index 100% rename from backends/multi/src/scheduler.rs rename to frontends/multi/src/scheduler.rs diff --git a/backends/multi/src/screen/bindings/kitty_keyboard_protocol.rs b/frontends/multi/src/screen/bindings/kitty_keyboard_protocol.rs similarity index 100% rename from backends/multi/src/screen/bindings/kitty_keyboard_protocol.rs rename to frontends/multi/src/screen/bindings/kitty_keyboard_protocol.rs diff --git a/backends/multi/src/screen/bindings/mod.rs b/frontends/multi/src/screen/bindings/mod.rs similarity index 99% rename from backends/multi/src/screen/bindings/mod.rs rename to frontends/multi/src/screen/bindings/mod.rs index e788fd0e..68fae233 100644 --- a/backends/multi/src/screen/bindings/mod.rs +++ b/frontends/multi/src/screen/bindings/mod.rs @@ -7,7 +7,7 @@ pub mod kitty_keyboard_protocol; use crate::crosswords::vi_mode::ViMotion; use crate::crosswords::Mode; use bitflags::bitflags; -use rio_lib::config::bindings::KeyBinding as ConfigKeyBinding; +use rio_backend::config::bindings::KeyBinding as ConfigKeyBinding; use std::fmt::Debug; use winit::event::MouseButton; use winit::keyboard::Key::*; diff --git a/backends/multi/src/screen/constants.rs b/frontends/multi/src/screen/constants.rs similarity index 100% rename from backends/multi/src/screen/constants.rs rename to frontends/multi/src/screen/constants.rs diff --git a/backends/multi/src/screen/context.rs b/frontends/multi/src/screen/context.rs similarity index 99% rename from backends/multi/src/screen/context.rs rename to frontends/multi/src/screen/context.rs index 965f8e51..283b5093 100644 --- a/backends/multi/src/screen/context.rs +++ b/frontends/multi/src/screen/context.rs @@ -5,9 +5,9 @@ use crate::event::{EventListener, RioEvent}; use crate::performer::Machine; use crate::screen::Crosswords; use crate::screen::Messenger; -use rio_lib::config::Shell; -use rio_lib::error::{RioError, RioErrorLevel, RioErrorType}; -use rio_lib::sugarloaf::{font::SugarloafFont, SugarloafErrors}; +use rio_backend::config::Shell; +use rio_backend::error::{RioError, RioErrorLevel, RioErrorType}; +use rio_backend::sugarloaf::{font::SugarloafFont, SugarloafErrors}; use std::borrow::Cow; use std::collections::HashMap; use std::error::Error; diff --git a/backends/multi/src/screen/messenger.rs b/frontends/multi/src/screen/messenger.rs similarity index 100% rename from backends/multi/src/screen/messenger.rs rename to frontends/multi/src/screen/messenger.rs diff --git a/backends/multi/src/screen/mod.rs b/frontends/multi/src/screen/mod.rs similarity index 99% rename from backends/multi/src/screen/mod.rs rename to frontends/multi/src/screen/mod.rs index f54b9ac1..f3b1b4df 100644 --- a/backends/multi/src/screen/mod.rs +++ b/frontends/multi/src/screen/mod.rs @@ -39,8 +39,8 @@ use crate::selection::{Selection, SelectionType}; use core::fmt::Debug; use messenger::Messenger; use raw_window_handle::{HasRawDisplayHandle, HasRawWindowHandle}; -use rio_lib::config::colors::{term::List, ColorWGPU}; -use rio_lib::sugarloaf::{ +use rio_backend::config::colors::{term::List, ColorWGPU}; +use rio_backend::sugarloaf::{ self, layout::SugarloafLayout, Sugarloaf, SugarloafErrors, SugarloafWindow, SugarloafWindowSize, }; @@ -79,7 +79,7 @@ pub struct Screen { impl Screen { pub async fn new( winit_window: &winit::window::Window, - config: &Rc, + config: &Rc, event_proxy: EventProxy, font_database: &sugarloaf::font::loader::Database, ) -> Result> { @@ -90,8 +90,8 @@ impl Screen { let window_id = winit_window.id(); let power_preference: wgpu::PowerPreference = match config.performance { - rio_lib::config::Performance::High => wgpu::PowerPreference::HighPerformance, - rio_lib::config::Performance::Low => wgpu::PowerPreference::LowPower, + rio_backend::config::Performance::High => wgpu::PowerPreference::HighPerformance, + rio_backend::config::Performance::Low => wgpu::PowerPreference::LowPower, }; let mut padding_y_bottom = 0.0; @@ -289,7 +289,7 @@ impl Screen { #[inline] pub fn update_config( &mut self, - config: &Rc, + config: &Rc, current_theme: Option, db: &sugarloaf::font::loader::Database, ) { diff --git a/backends/multi/src/screen/mouse.rs b/frontends/multi/src/screen/mouse.rs similarity index 100% rename from backends/multi/src/screen/mouse.rs rename to frontends/multi/src/screen/mouse.rs diff --git a/backends/multi/src/screen/navigation.rs b/frontends/multi/src/screen/navigation.rs similarity index 98% rename from backends/multi/src/screen/navigation.rs rename to frontends/multi/src/screen/navigation.rs index c0dcfad0..e3aaecaf 100644 --- a/backends/multi/src/screen/navigation.rs +++ b/frontends/multi/src/screen/navigation.rs @@ -1,7 +1,7 @@ use crate::screen::constants::*; -use rio_lib::config::navigation::NavigationMode; -use rio_lib::sugarloaf::components::rect::Rect; -use rio_lib::sugarloaf::font::FONT_ID_BUILTIN; +use rio_backend::config::navigation::NavigationMode; +use rio_backend::sugarloaf::components::rect::Rect; +use rio_backend::sugarloaf::font::FONT_ID_BUILTIN; use std::collections::HashMap; pub struct Text { diff --git a/backends/multi/src/screen/state.rs b/frontends/multi/src/screen/state.rs similarity index 99% rename from backends/multi/src/screen/state.rs rename to frontends/multi/src/screen/state.rs index f346dd51..0fbed92e 100644 --- a/backends/multi/src/screen/state.rs +++ b/frontends/multi/src/screen/state.rs @@ -7,13 +7,13 @@ use crate::ime::Preedit; use crate::screen::navigation::ScreenNavigation; use crate::screen::{context, EventProxy}; use crate::selection::SelectionRange; -use rio_lib::config::colors::{ +use rio_backend::config::colors::{ term::{List, TermColors}, AnsiColor, ColorArray, Colors, NamedColor, }; -use rio_lib::config::Config; -use rio_lib::sugarloaf::core::{Sugar, SugarDecoration, SugarStack, SugarStyle}; -use rio_lib::sugarloaf::Sugarloaf; +use rio_backend::config::Config; +use rio_backend::sugarloaf::core::{Sugar, SugarDecoration, SugarStack, SugarStyle}; +use rio_backend::sugarloaf::Sugarloaf; use std::collections::HashMap; use std::rc::Rc; use std::time::{Duration, Instant}; diff --git a/backends/multi/src/screen/window/mod.rs b/frontends/multi/src/screen/window/mod.rs similarity index 96% rename from backends/multi/src/screen/window/mod.rs rename to frontends/multi/src/screen/window/mod.rs index 0e7c4388..60290008 100644 --- a/backends/multi/src/screen/window/mod.rs +++ b/frontends/multi/src/screen/window/mod.rs @@ -1,4 +1,4 @@ -use rio_lib::config::Config; +use rio_backend::config::Config; use std::rc::Rc; use winit::window::{CursorIcon, Fullscreen, Icon, ImePurpose, Window, WindowBuilder}; @@ -69,11 +69,11 @@ pub fn create_window_builder( } match config.window.mode { - rio_lib::config::window::WindowMode::Fullscreen => { + rio_backend::config::window::WindowMode::Fullscreen => { window_builder = window_builder.with_fullscreen(Some(Fullscreen::Borderless(None))); } - rio_lib::config::window::WindowMode::Maximized => { + rio_backend::config::window::WindowMode::Maximized => { window_builder = window_builder.with_maximized(true); } _ => { diff --git a/backends/multi/src/screen/window/resources/images/rio-logo.ico b/frontends/multi/src/screen/window/resources/images/rio-logo.ico similarity index 100% rename from backends/multi/src/screen/window/resources/images/rio-logo.ico rename to frontends/multi/src/screen/window/resources/images/rio-logo.ico diff --git a/backends/multi/src/sequencer.rs b/frontends/multi/src/sequencer.rs similarity index 98% rename from backends/multi/src/sequencer.rs rename to frontends/multi/src/sequencer.rs index 547d9fe1..b615bde5 100644 --- a/backends/multi/src/sequencer.rs +++ b/frontends/multi/src/sequencer.rs @@ -4,7 +4,7 @@ use crate::ime::Preedit; use crate::router::{RoutePath, RouteWindow, Router}; use crate::scheduler::{Scheduler, TimerId, Topic}; use crate::watch::watch; -use rio_lib::config::colors::ColorRgb; +use rio_backend::config::colors::ColorRgb; use std::error::Error; use std::rc::Rc; use std::time::{Duration, Instant}; @@ -22,15 +22,15 @@ use winit::platform::run_on_demand::EventLoopExtRunOnDemand; use winit::window::{CursorIcon, Fullscreen}; pub struct Sequencer { - config: Rc, + config: Rc, event_proxy: Option, router: Router, } impl Sequencer { pub fn new( - config: rio_lib::config::Config, - config_error: Option, + config: rio_backend::config::Config, + config_error: Option, ) -> Sequencer { let mut router = Router::new(); if let Some(error) = config_error { @@ -51,7 +51,7 @@ impl Sequencer { let proxy = event_loop.create_proxy(); self.event_proxy = Some(EventProxy::new(proxy.clone())); let _ = watch( - rio_lib::config::config_dir_path(), + rio_backend::config::config_dir_path(), self.event_proxy.clone().unwrap(), ); let mut scheduler = Scheduler::new(proxy); @@ -90,13 +90,13 @@ impl Sequencer { // } // } RioEventType::Rio(RioEvent::UpdateConfig) => { - let mut config_error: Option = + let mut config_error: Option = None; - let config = match rio_lib::config::Config::try_load() { + let config = match rio_backend::config::Config::try_load() { Ok(config) => config, Err(error) => { config_error = Some(error); - rio_lib::config::Config::default() + rio_backend::config::Config::default() } }; @@ -266,14 +266,14 @@ impl Sequencer { // // TODO: Reimplement this flow let mut should_revert_to_previous_config: Option< - rio_lib::config::Config, + rio_backend::config::Config, > = None; if working_dir_overwrite.is_some() { let current_config = (*self.config).clone(); should_revert_to_previous_config = Some(current_config.clone()); - let config = rio_lib::config::Config { + let config = rio_backend::config::Config { working_dir: working_dir_overwrite, ..current_config }; diff --git a/backends/multi/src/ui/appkit/global.rs b/frontends/multi/src/ui/appkit/global.rs similarity index 100% rename from backends/multi/src/ui/appkit/global.rs rename to frontends/multi/src/ui/appkit/global.rs diff --git a/backends/multi/src/ui/appkit/menu.rs b/frontends/multi/src/ui/appkit/menu.rs similarity index 100% rename from backends/multi/src/ui/appkit/menu.rs rename to frontends/multi/src/ui/appkit/menu.rs diff --git a/backends/multi/src/ui/appkit/menubar.rs b/frontends/multi/src/ui/appkit/menubar.rs similarity index 100% rename from backends/multi/src/ui/appkit/menubar.rs rename to frontends/multi/src/ui/appkit/menubar.rs diff --git a/backends/multi/src/ui/appkit/menuitem.rs b/frontends/multi/src/ui/appkit/menuitem.rs similarity index 100% rename from backends/multi/src/ui/appkit/menuitem.rs rename to frontends/multi/src/ui/appkit/menuitem.rs diff --git a/backends/multi/src/ui/appkit/mod.rs b/frontends/multi/src/ui/appkit/mod.rs similarity index 100% rename from backends/multi/src/ui/appkit/mod.rs rename to frontends/multi/src/ui/appkit/mod.rs diff --git a/backends/multi/src/ui/mod.rs b/frontends/multi/src/ui/mod.rs similarity index 100% rename from backends/multi/src/ui/mod.rs rename to frontends/multi/src/ui/mod.rs diff --git a/backends/multi/src/ui/win32.rs b/frontends/multi/src/ui/win32.rs similarity index 100% rename from backends/multi/src/ui/win32.rs rename to frontends/multi/src/ui/win32.rs diff --git a/backends/multi/src/watch.rs b/frontends/multi/src/watch.rs similarity index 100% rename from backends/multi/src/watch.rs rename to frontends/multi/src/watch.rs diff --git a/backends/swift-ui/Rio.xcodeproj/project.pbxproj b/frontends/swift-ui/Rio.xcodeproj/project.pbxproj similarity index 100% rename from backends/swift-ui/Rio.xcodeproj/project.pbxproj rename to frontends/swift-ui/Rio.xcodeproj/project.pbxproj diff --git a/backends/swift-ui/Rio.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/frontends/swift-ui/Rio.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from backends/swift-ui/Rio.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to frontends/swift-ui/Rio.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/backends/swift-ui/Rio.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/frontends/swift-ui/Rio.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from backends/swift-ui/Rio.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to frontends/swift-ui/Rio.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/frontends/swift-ui/Rio.xcodeproj/project.xcworkspace/xcuserdata/hugoamor.xcuserdatad/UserInterfaceState.xcuserstate b/frontends/swift-ui/Rio.xcodeproj/project.xcworkspace/xcuserdata/hugoamor.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a10cd09914c79ee1bacfd1a13fe36fe4a1444178 GIT binary patch literal 51080 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 literal 0 HcmV?d00001 diff --git a/backends/swift-ui/Rio.xcodeproj/xcuserdata/hugoamor.xcuserdatad/xcschemes/xcschememanagement.plist b/frontends/swift-ui/Rio.xcodeproj/xcuserdata/hugoamor.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 100% rename from backends/swift-ui/Rio.xcodeproj/xcuserdata/hugoamor.xcuserdatad/xcschemes/xcschememanagement.plist rename to frontends/swift-ui/Rio.xcodeproj/xcuserdata/hugoamor.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/backends/swift-ui/Rio/Assets.xcassets/AccentColor.colorset/Contents.json b/frontends/swift-ui/Rio/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from backends/swift-ui/Rio/Assets.xcassets/AccentColor.colorset/Contents.json rename to frontends/swift-ui/Rio/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/backends/swift-ui/Rio/Assets.xcassets/AppIcon.appiconset/Contents.json b/frontends/swift-ui/Rio/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from backends/swift-ui/Rio/Assets.xcassets/AppIcon.appiconset/Contents.json rename to frontends/swift-ui/Rio/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/backends/swift-ui/Rio/Assets.xcassets/Contents.json b/frontends/swift-ui/Rio/Assets.xcassets/Contents.json similarity index 100% rename from backends/swift-ui/Rio/Assets.xcassets/Contents.json rename to frontends/swift-ui/Rio/Assets.xcassets/Contents.json diff --git a/backends/swift-ui/Rio/ContentView.swift b/frontends/swift-ui/Rio/ContentView.swift similarity index 100% rename from backends/swift-ui/Rio/ContentView.swift rename to frontends/swift-ui/Rio/ContentView.swift diff --git a/backends/swift-ui/Rio/Model/Panel.swift b/frontends/swift-ui/Rio/Model/Panel.swift similarity index 100% rename from backends/swift-ui/Rio/Model/Panel.swift rename to frontends/swift-ui/Rio/Model/Panel.swift diff --git a/backends/swift-ui/Rio/Model/PanelGroup.swift b/frontends/swift-ui/Rio/Model/PanelGroup.swift similarity index 100% rename from backends/swift-ui/Rio/Model/PanelGroup.swift rename to frontends/swift-ui/Rio/Model/PanelGroup.swift diff --git a/backends/swift-ui/Rio/Model/PanelSection.swift b/frontends/swift-ui/Rio/Model/PanelSection.swift similarity index 100% rename from backends/swift-ui/Rio/Model/PanelSection.swift rename to frontends/swift-ui/Rio/Model/PanelSection.swift diff --git a/frontends/swift-ui/Rio/PanelView.swift b/frontends/swift-ui/Rio/PanelView.swift new file mode 100644 index 00000000..3d0eaec7 --- /dev/null +++ b/frontends/swift-ui/Rio/PanelView.swift @@ -0,0 +1,31 @@ +// +// PanelView.swift +// Rio +// +// Created by Raphael Amorim on 2023-11-12. +// + +import SwiftUI + +struct PanelView: View { + let title: String + let panels: [Panel] + + var body: some View { +// List(panels) { panel in +// HStack { +// Image(systemName: "circle") +// Text(panel.title) +// } +// } + Color.purple + .overlay( + VStack(spacing: 20) { + Text("Panel").font(.largeTitle) + }) + } +} + +#Preview { + PanelView(title: "work", panels: Panel.examples()) +} diff --git a/backends/swift-ui/Rio/Rio.entitlements b/frontends/swift-ui/Rio/Rio.entitlements similarity index 100% rename from backends/swift-ui/Rio/Rio.entitlements rename to frontends/swift-ui/Rio/Rio.entitlements diff --git a/backends/swift-ui/Rio/RioApp.swift b/frontends/swift-ui/Rio/RioApp.swift similarity index 100% rename from backends/swift-ui/Rio/RioApp.swift rename to frontends/swift-ui/Rio/RioApp.swift diff --git a/backends/swift-ui/Rio/SidebarView.swift b/frontends/swift-ui/Rio/SidebarView.swift similarity index 100% rename from backends/swift-ui/Rio/SidebarView.swift rename to frontends/swift-ui/Rio/SidebarView.swift diff --git a/backends/wasm/Cargo.toml b/frontends/wasm/Cargo.toml similarity index 100% rename from backends/wasm/Cargo.toml rename to frontends/wasm/Cargo.toml diff --git a/backends/wasm/Makefile b/frontends/wasm/Makefile similarity index 100% rename from backends/wasm/Makefile rename to frontends/wasm/Makefile diff --git a/backends/wasm/index.html b/frontends/wasm/index.html similarity index 100% rename from backends/wasm/index.html rename to frontends/wasm/index.html diff --git a/backends/wasm/src/lib.rs b/frontends/wasm/src/lib.rs similarity index 100% rename from backends/wasm/src/lib.rs rename to frontends/wasm/src/lib.rs diff --git a/rio-lib/Cargo.toml b/rio-backend/Cargo.toml similarity index 98% rename from rio-lib/Cargo.toml rename to rio-backend/Cargo.toml index 0403d19a..8a2e5513 100644 --- a/rio-lib/Cargo.toml +++ b/rio-backend/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "rio-lib" +name = "rio-backend" version.workspace = true authors.workspace = true edition.workspace = true diff --git a/rio-lib/src/ansi/charset.rs b/rio-backend/src/ansi/charset.rs similarity index 100% rename from rio-lib/src/ansi/charset.rs rename to rio-backend/src/ansi/charset.rs diff --git a/rio-lib/src/ansi/control.rs b/rio-backend/src/ansi/control.rs similarity index 100% rename from rio-lib/src/ansi/control.rs rename to rio-backend/src/ansi/control.rs diff --git a/rio-lib/src/ansi/mod.rs b/rio-backend/src/ansi/mod.rs similarity index 100% rename from rio-lib/src/ansi/mod.rs rename to rio-backend/src/ansi/mod.rs diff --git a/rio-lib/src/ansi/mode.rs b/rio-backend/src/ansi/mode.rs similarity index 100% rename from rio-lib/src/ansi/mode.rs rename to rio-backend/src/ansi/mode.rs diff --git a/rio-lib/src/clipboard.rs b/rio-backend/src/clipboard.rs similarity index 100% rename from rio-lib/src/clipboard.rs rename to rio-backend/src/clipboard.rs diff --git a/rio-lib/src/config/bindings.rs b/rio-backend/src/config/bindings.rs similarity index 100% rename from rio-lib/src/config/bindings.rs rename to rio-backend/src/config/bindings.rs diff --git a/rio-lib/src/config/colors/README.md b/rio-backend/src/config/colors/README.md similarity index 100% rename from rio-lib/src/config/colors/README.md rename to rio-backend/src/config/colors/README.md diff --git a/rio-lib/src/config/colors/defaults.rs b/rio-backend/src/config/colors/defaults.rs similarity index 100% rename from rio-lib/src/config/colors/defaults.rs rename to rio-backend/src/config/colors/defaults.rs diff --git a/rio-lib/src/config/colors/mod.rs b/rio-backend/src/config/colors/mod.rs similarity index 100% rename from rio-lib/src/config/colors/mod.rs rename to rio-backend/src/config/colors/mod.rs diff --git a/rio-lib/src/config/colors/term.rs b/rio-backend/src/config/colors/term.rs similarity index 100% rename from rio-lib/src/config/colors/term.rs rename to rio-backend/src/config/colors/term.rs diff --git a/rio-lib/src/config/defaults.rs b/rio-backend/src/config/defaults.rs similarity index 100% rename from rio-lib/src/config/defaults.rs rename to rio-backend/src/config/defaults.rs diff --git a/rio-lib/src/config/mod.rs b/rio-backend/src/config/mod.rs similarity index 100% rename from rio-lib/src/config/mod.rs rename to rio-backend/src/config/mod.rs diff --git a/rio-lib/src/config/navigation.rs b/rio-backend/src/config/navigation.rs similarity index 100% rename from rio-lib/src/config/navigation.rs rename to rio-backend/src/config/navigation.rs diff --git a/rio-lib/src/config/theme.rs b/rio-backend/src/config/theme.rs similarity index 100% rename from rio-lib/src/config/theme.rs rename to rio-backend/src/config/theme.rs diff --git a/rio-lib/src/config/window.rs b/rio-backend/src/config/window.rs similarity index 100% rename from rio-lib/src/config/window.rs rename to rio-backend/src/config/window.rs diff --git a/rio-lib/src/crosswords/attr.rs b/rio-backend/src/crosswords/attr.rs similarity index 100% rename from rio-lib/src/crosswords/attr.rs rename to rio-backend/src/crosswords/attr.rs diff --git a/rio-lib/src/crosswords/grid/mod.rs b/rio-backend/src/crosswords/grid/mod.rs similarity index 100% rename from rio-lib/src/crosswords/grid/mod.rs rename to rio-backend/src/crosswords/grid/mod.rs diff --git a/rio-lib/src/crosswords/grid/resize.rs b/rio-backend/src/crosswords/grid/resize.rs similarity index 100% rename from rio-lib/src/crosswords/grid/resize.rs rename to rio-backend/src/crosswords/grid/resize.rs diff --git a/rio-lib/src/crosswords/grid/row.rs b/rio-backend/src/crosswords/grid/row.rs similarity index 100% rename from rio-lib/src/crosswords/grid/row.rs rename to rio-backend/src/crosswords/grid/row.rs diff --git a/rio-lib/src/crosswords/grid/storage.rs b/rio-backend/src/crosswords/grid/storage.rs similarity index 100% rename from rio-lib/src/crosswords/grid/storage.rs rename to rio-backend/src/crosswords/grid/storage.rs diff --git a/rio-lib/src/crosswords/grid/tests.rs b/rio-backend/src/crosswords/grid/tests.rs similarity index 100% rename from rio-lib/src/crosswords/grid/tests.rs rename to rio-backend/src/crosswords/grid/tests.rs diff --git a/rio-lib/src/crosswords/mod.rs b/rio-backend/src/crosswords/mod.rs similarity index 100% rename from rio-lib/src/crosswords/mod.rs rename to rio-backend/src/crosswords/mod.rs diff --git a/rio-lib/src/crosswords/pos.rs b/rio-backend/src/crosswords/pos.rs similarity index 100% rename from rio-lib/src/crosswords/pos.rs rename to rio-backend/src/crosswords/pos.rs diff --git a/rio-lib/src/crosswords/square.rs b/rio-backend/src/crosswords/square.rs similarity index 100% rename from rio-lib/src/crosswords/square.rs rename to rio-backend/src/crosswords/square.rs diff --git a/rio-lib/src/crosswords/vi_mode.rs b/rio-backend/src/crosswords/vi_mode.rs similarity index 100% rename from rio-lib/src/crosswords/vi_mode.rs rename to rio-backend/src/crosswords/vi_mode.rs diff --git a/rio-lib/src/error/mod.rs b/rio-backend/src/error/mod.rs similarity index 100% rename from rio-lib/src/error/mod.rs rename to rio-backend/src/error/mod.rs diff --git a/rio-lib/src/event/mod.rs b/rio-backend/src/event/mod.rs similarity index 100% rename from rio-lib/src/event/mod.rs rename to rio-backend/src/event/mod.rs diff --git a/rio-lib/src/event/sync.rs b/rio-backend/src/event/sync.rs similarity index 100% rename from rio-lib/src/event/sync.rs rename to rio-backend/src/event/sync.rs diff --git a/rio-lib/src/lib.rs b/rio-backend/src/lib.rs similarity index 100% rename from rio-lib/src/lib.rs rename to rio-backend/src/lib.rs diff --git a/rio-lib/src/performer/handler.rs b/rio-backend/src/performer/handler.rs similarity index 100% rename from rio-lib/src/performer/handler.rs rename to rio-backend/src/performer/handler.rs diff --git a/rio-lib/src/performer/mod.rs b/rio-backend/src/performer/mod.rs similarity index 100% rename from rio-lib/src/performer/mod.rs rename to rio-backend/src/performer/mod.rs diff --git a/rio-lib/src/selection.rs b/rio-backend/src/selection.rs similarity index 100% rename from rio-lib/src/selection.rs rename to rio-backend/src/selection.rs