Update Dependencies: Ratatui and Crossterm

This commit is contained in:
Gijs Burghoorn 2023-06-25 21:07:08 +02:00
parent 0743de7365
commit 07e8267635
10 changed files with 124 additions and 140 deletions

199
Cargo.lock generated
View file

@ -34,12 +34,12 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]] [[package]]
name = "crossterm" name = "crossterm"
version = "0.20.0" version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0ebde6a9dd5e331cd6c6f48253254d117642c31653baa475e394657c59c1f7d" checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"crossterm_winapi 0.8.0", "crossterm_winapi",
"libc 0.2.139", "libc 0.2.139",
"mio", "mio",
"parking_lot", "parking_lot",
@ -48,31 +48,6 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "crossterm"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c85525306c4291d1b73ce93c8acf9c339f9b213aef6c1d85c3830cbf1c16325c"
dependencies = [
"bitflags",
"crossterm_winapi 0.9.0",
"libc 0.2.139",
"mio",
"parking_lot",
"signal-hook",
"signal-hook-mio",
"winapi",
]
[[package]]
name = "crossterm_winapi"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507"
dependencies = [
"winapi",
]
[[package]] [[package]]
name = "crossterm_winapi" name = "crossterm_winapi"
version = "0.9.0" version = "0.9.0"
@ -109,20 +84,11 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
name = "instant"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
"cfg-if",
]
[[package]] [[package]]
name = "lemurs" name = "lemurs"
version = "0.3.1" version = "0.3.1"
dependencies = [ dependencies = [
"crossterm 0.22.1", "crossterm",
"env_logger", "env_logger",
"libc 0.2.139", "libc 0.2.139",
"log", "log",
@ -131,9 +97,9 @@ dependencies = [
"pam", "pam",
"pgs-files", "pgs-files",
"rand", "rand",
"ratatui",
"serde", "serde",
"toml", "toml",
"tui",
"unicode-width", "unicode-width",
"users 0.11.0", "users 0.11.0",
] ]
@ -180,24 +146,14 @@ dependencies = [
[[package]] [[package]]
name = "mio" name = "mio"
version = "0.7.14" version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
dependencies = [ dependencies = [
"libc 0.2.139", "libc 0.2.139",
"log", "log",
"miow", "wasi",
"ntapi", "windows-sys",
"winapi",
]
[[package]]
name = "miow"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
dependencies = [
"winapi",
] ]
[[package]] [[package]]
@ -213,21 +169,6 @@ dependencies = [
"memoffset", "memoffset",
] ]
[[package]]
name = "ntapi"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"
dependencies = [
"winapi",
]
[[package]]
name = "numtoa"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef"
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.17.1" version = "1.17.1"
@ -256,27 +197,25 @@ dependencies = [
[[package]] [[package]]
name = "parking_lot" name = "parking_lot"
version = "0.11.2" version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
dependencies = [ dependencies = [
"instant",
"lock_api", "lock_api",
"parking_lot_core", "parking_lot_core",
] ]
[[package]] [[package]]
name = "parking_lot_core" name = "parking_lot_core"
version = "0.8.6" version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"instant",
"libc 0.2.139", "libc 0.2.139",
"redox_syscall", "redox_syscall",
"smallvec", "smallvec",
"winapi", "windows-targets",
] ]
[[package]] [[package]]
@ -343,21 +282,25 @@ dependencies = [
] ]
[[package]] [[package]]
name = "redox_syscall" name = "ratatui"
version = "0.2.16" version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" checksum = "ce841e0486e7c2412c3740168ede33adeba8e154a15107b879d8162d77c7174e"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"cassowary",
"crossterm",
"unicode-segmentation",
"unicode-width",
] ]
[[package]] [[package]]
name = "redox_termios" name = "redox_syscall"
version = "0.1.2" version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f" checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
dependencies = [ dependencies = [
"redox_syscall", "bitflags",
] ]
[[package]] [[package]]
@ -433,18 +376,6 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "termion"
version = "1.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
dependencies = [
"libc 0.2.139",
"numtoa",
"redox_syscall",
"redox_termios",
]
[[package]] [[package]]
name = "toml" name = "toml"
version = "0.5.11" version = "0.5.11"
@ -454,20 +385,6 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "tui"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39c8ce4e27049eed97cfa363a5048b09d995e209994634a0efc26a14ab6c0c23"
dependencies = [
"bitflags",
"cassowary",
"crossterm 0.20.0",
"termion",
"unicode-segmentation",
"unicode-width",
]
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.6" version = "1.0.6"
@ -532,3 +449,69 @@ name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0" version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-sys"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-targets"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
[[package]]
name = "windows_i686_gnu"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
[[package]]
name = "windows_i686_msvc"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"

View file

@ -17,9 +17,9 @@ license = "MIT or APACHE"
[dependencies] [dependencies]
# UI and TUI interface # UI and TUI interface
tui = { version = "0.16.0", features = [ "crossterm" ] } ratatui = "0.21.0"
crossterm = "0.26"
unicode-width = "0.1" unicode-width = "0.1"
crossterm = { version = "0.22" }
# Interacting with the kernel interfaces # Interacting with the kernel interfaces
rand = "0.8.4" rand = "0.8.4"

View file

@ -7,7 +7,7 @@ use crossterm::event::KeyCode;
use log::error; use log::error;
use serde::{de::Error, Deserialize}; use serde::{de::Error, Deserialize};
use tui::style::{Color, Modifier}; use ratatui::style::{Color, Modifier};
pub fn get_color(color: &str) -> Color { pub fn get_color(color: &str) -> Color {
if let Some(color) = str_to_color(color) { if let Some(color) = str_to_color(color) {

View file

@ -9,8 +9,8 @@ use crossterm::{
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
}; };
use log::{error, info, warn}; use log::{error, info, warn};
use tui::backend::CrosstermBackend; use ratatui::backend::CrosstermBackend;
use tui::Terminal; use ratatui::Terminal;
mod auth; mod auth;
mod chvt; mod chvt;

View file

@ -1,4 +1,4 @@
use tui::{ use ratatui::{
backend::Backend, backend::Backend,
layout::{Constraint, Direction, Layout, Rect}, layout::{Constraint, Direction, Layout, Rect},
Frame, Frame,

View file

@ -1,5 +1,5 @@
use crossterm::event::{KeyCode, KeyModifiers}; use crossterm::event::{KeyCode, KeyModifiers};
use tui::{ use ratatui::{
layout::Rect, layout::Rect,
style::Style, style::Style,
terminal::Frame, terminal::Frame,
@ -290,7 +290,7 @@ impl InputFieldWidget {
pub fn render( pub fn render(
&mut self, &mut self,
frame: &mut Frame<impl tui::backend::Backend>, frame: &mut Frame<impl ratatui::backend::Backend>,
area: Rect, area: Rect,
is_focused: bool, is_focused: bool,
) { ) {
@ -302,17 +302,18 @@ impl InputFieldWidget {
self.width = inner.width; self.width = inner.width;
let show_string = self.show_string(); let show_string = self.show_string();
let widget = Paragraph::new(show_string.as_ref())
.style(self.get_text_style(is_focused))
.block(self.get_block(is_focused));
frame.render_widget(widget, area);
if is_focused { if is_focused {
let Rect { x, y, .. } = inner; let Rect { x, y, .. } = inner;
let cursor_offset = get_byte_offset_of_char_offset(&show_string, self.cursor.into()); let cursor_offset = get_byte_offset_of_char_offset(&show_string, self.cursor.into());
frame.set_cursor(x + show_string[..cursor_offset].width() as u16, y); frame.set_cursor(x + show_string[..cursor_offset].width() as u16, y);
} }
let widget = Paragraph::new(show_string)
.style(self.get_text_style(is_focused))
.block(self.get_block(is_focused));
frame.render_widget(widget, area);
} }
pub(crate) fn key_press( pub(crate) fn key_press(

View file

@ -1,11 +1,11 @@
use std::process::{Command, Output}; use std::process::{Command, Output};
use crossterm::event::KeyCode; use crossterm::event::KeyCode;
use tui::layout::{Alignment, Rect}; use ratatui::layout::{Alignment, Rect};
use tui::style::Style; use ratatui::style::Style;
use tui::text::{Span, Spans, Text}; use ratatui::text::{Span, Line, Text};
use tui::widgets::Paragraph; use ratatui::widgets::Paragraph;
use tui::Frame; use ratatui::Frame;
use crate::config::{ use crate::config::{
get_color, get_key, get_modifiers, PowerControlConfig, SwitcherConfig, SwitcherVisibility, get_color, get_key, get_modifiers, PowerControlConfig, SwitcherConfig, SwitcherVisibility,
@ -54,7 +54,7 @@ impl KeyMenuWidget {
style style
} }
pub fn render(&self, frame: &mut Frame<impl tui::backend::Backend>, area: Rect) { pub fn render(&self, frame: &mut Frame<impl ratatui::backend::Backend>, area: Rect) {
let mut items = Vec::new(); let mut items = Vec::new();
if self.power_config.allow_shutdown { if self.power_config.allow_shutdown {
@ -93,7 +93,7 @@ impl KeyMenuWidget {
} }
let mut text = Text::raw(""); let mut text = Text::raw("");
text.lines.push(Spans(items)); text.lines.push(Line::from(items));
let left_widget = Paragraph::new(text); let left_widget = Paragraph::new(text);
frame.render_widget(left_widget, area); frame.render_widget(left_widget, area);

View file

@ -17,8 +17,8 @@ use crossterm::execute;
use crossterm::terminal::{ use crossterm::terminal::{
disable_raw_mode, enable_raw_mode, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen,
}; };
use tui::backend::CrosstermBackend; use ratatui::backend::CrosstermBackend;
use tui::{backend::Backend, Frame, Terminal}; use ratatui::{backend::Backend, Frame, Terminal};
mod chunks; mod chunks;
mod input_field; mod input_field;

View file

@ -1,8 +1,8 @@
use tui::backend::Backend; use ratatui::backend::Backend;
use tui::layout::Rect; use ratatui::layout::Rect;
use tui::style::Color; use ratatui::style::{Style, Color};
use tui::widgets::Paragraph; use ratatui::widgets::Paragraph;
use tui::Frame; use ratatui::Frame;
use crate::auth::AuthenticationError; use crate::auth::AuthenticationError;
@ -86,7 +86,7 @@ impl StatusMessage {
pub fn render<B: Backend>(status: Option<Self>, frame: &mut Frame<B>, area: Rect) { pub fn render<B: Backend>(status: Option<Self>, frame: &mut Frame<B>, area: Rect) {
if let Some(status_message) = status { if let Some(status_message) = status {
let widget = Paragraph::new(<&'static str>::from(status_message.clone())).style( let widget = Paragraph::new(<&'static str>::from(status_message.clone())).style(
tui::style::Style::default().fg(if status_message.is_error() { Style::default().fg(if status_message.is_error() {
Color::Red Color::Red
} else { } else {
Color::Yellow Color::Yellow

View file

@ -1,10 +1,10 @@
use crossterm::event::KeyCode; use crossterm::event::KeyCode;
use log::warn; use log::warn;
use tui::{ use ratatui::{
layout::{Alignment, Rect}, layout::{Alignment, Rect},
style::Style, style::Style,
terminal::Frame, terminal::Frame,
text::{Span, Spans, Text}, text::{Span, Line, Text},
widgets::{Block, Paragraph}, widgets::{Block, Paragraph},
}; };
@ -281,7 +281,7 @@ impl<T> SwitcherWidget<T> {
pub fn render( pub fn render(
&self, &self,
frame: &mut Frame<impl tui::backend::Backend>, frame: &mut Frame<impl ratatui::backend::Backend>,
area: Rect, area: Rect,
is_focused: bool, is_focused: bool,
) { ) {
@ -378,7 +378,7 @@ impl<T> SwitcherWidget<T> {
)); ));
} }
let text = Text::from(Spans::from(spans)); let text = Text::from(Line::from(spans));
let widget = Paragraph::new(text) let widget = Paragraph::new(text)
.block(Block::default()) .block(Block::default())
.alignment(Alignment::Center); .alignment(Alignment::Center);