-- Leo's gemini proxy

-- Connecting to typed-hole.org:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

commit 0adcb24d45ea618a309164246d193fda4d1a0091

Author: Julien Blanchard <julien@typed-hole.org>

Date: Mon Apr 27 11:26:35 2020 +0200


Choose if fonts should be monospaced or not


diff --git a/README.md b/README.md

index 7d59d30..cf1be68 100644

--- a/README.md

+++ b/README.md

@@ -70,6 +70,11 @@ h1 = ">"

h2 = "))"

h3 = "}}}"

list = "🌼"

+

+[monospace]

+gemini=false

+gopher=true

+finger=true

```



diff --git a/data/castor_settings.toml.example b/data/castor_settings.toml.example

index f77fc3e..c0f0d4c 100644

--- a/data/castor_settings.toml.example

+++ b/data/castor_settings.toml.example

@@ -14,3 +14,8 @@ h1 = ">"

h2 = "))"

h3 = "}}}"

list = "🌼"

+

+[monospace]

+gemini=false

+gopher=true

+finger=true

diff --git a/src/main.rs b/src/main.rs

index 7f53f1d..4876afc 100644

--- a/src/main.rs

+++ b/src/main.rs

@@ -292,6 +292,11 @@ fn draw_gemini_content(

let buffer = content_view.get_buffer().unwrap();


let mut mono_toggle = false;

+ let font_family = if settings::gemini_monospace() {

+ "monospace"

+ } else {

+ "sans"

+ };


for el in content {

match el {

@@ -300,8 +305,9 @@ fn draw_gemini_content(

buffer.insert_markup(

&mut end_iter,

&format!(

- "<span foreground=\"{}\" size=\"x-large\">{}{}</span>\n",

+ "<span foreground=\"{}\" size=\"x-large\" font_family=\"{}\">{}{}</span>\n",

settings::h1_color(),

+ font_family,

settings::h1_character(),

header

),

@@ -312,8 +318,9 @@ fn draw_gemini_content(

buffer.insert_markup(

&mut end_iter,

&format!(

- "<span foreground=\"{}\" size=\"large\">{}{}</span>\n",

+ "<span foreground=\"{}\" size=\"large\" font_family=\"{}\">{}{}</span>\n",

settings::h2_color(),

+ font_family,

settings::h2_character(),

header

),

@@ -324,8 +331,9 @@ fn draw_gemini_content(

buffer.insert_markup(

&mut end_iter,

&format!(

- "<span foreground=\"{}\" size=\"medium\">{}{}</span>\n",

+ "<span foreground=\"{}\" size=\"medium\" font_family=\"{}\">{}{}</span>\n",

settings::h3_color(),

+ font_family,

settings::h3_character(),

header

),

@@ -335,8 +343,9 @@ fn draw_gemini_content(

let mut end_iter = buffer.get_end_iter();

buffer.insert_markup(

&mut end_iter,

- &format!("<span foreground=\"{}\">{} {}</span>\n",

+ &format!("<span foreground=\"{}\" font_family=\"{}\">{} {}</span>\n",

settings::list_color(),

+ font_family,

settings::list_character(),

item),

);

@@ -356,8 +365,9 @@ fn draw_gemini_content(

);

},

false => {

- buffer.insert_markup(&mut end_iter, &format!("<span foreground=\"{}\">{}</span>\n",

+ buffer.insert_markup(&mut end_iter, &format!("<span foreground=\"{}\" font_family=\"{}\">{}</span>\n",

settings::text_color(),

+ font_family,

text));

}

}

@@ -382,9 +392,15 @@ fn draw_gopher_content(

match el {

Ok(gopher::parser::TextElement::Text(text)) => {

let mut end_iter = buffer.get_end_iter();

+ let font_family = if settings::gopher_monospace() {

+ "font_family=\"monospace\""

+ } else {

+ "font_family=\"serif\""

+ };

+

buffer.insert_markup(

&mut end_iter,

- &format!("<span font_family=\"monospace\">{}</span>\n", text),

+ &format!("<span foreground=\"{}\" {}>{}</span>\n", settings::text_color(), font_family, text),

);

}

Ok(gopher::parser::TextElement::LinkItem(link_item)) => {

@@ -413,9 +429,15 @@ fn draw_finger_content(

match el {

Ok(finger::parser::TextElement::Text(text)) => {

let mut end_iter = buffer.get_end_iter();

+ let font_family = if settings::finger_monospace() {

+ "font_family=\"monospace\""

+ } else {

+ "font_family=\"serif\""

+ };

+

buffer.insert_markup(

&mut end_iter,

- &format!("<span font_family=\"monospace\">{}</span>\n", text),

+ &format!("<span foreground=\"{}\" {}>{}</span>\n", settings::text_color(), font_family, text),

);

}

Err(_) => println!("Something failed."),

diff --git a/src/settings.rs b/src/settings.rs

index 0372619..4211838 100644

--- a/src/settings.rs

+++ b/src/settings.rs

@@ -12,6 +12,7 @@ struct Settings {

general: Option<General>,

colors: Option<Color>,

characters: Option<Character>,

+ monospace: Option<Monospace>,

}


@@ -37,6 +38,13 @@ struct Character {

list: Option<String>,

}


+#[derive(Deserialize)]

+struct Monospace {

+ finger: Option<bool>,

+ gemini: Option<bool>,

+ gopher: Option<bool>,

+}

+

pub fn start_url() -> Option<String> {

match read().general {

Some(general) => general.start_url,

@@ -141,6 +149,36 @@ pub fn list_character() -> String {

}

}


+pub fn finger_monospace() -> bool {

+ match read().monospace {

+ Some(monospace) => match monospace.finger {

+ Some(setting) => setting,

+ None => true

+ }

+ None => true

+ }

+}

+

+pub fn gemini_monospace() -> bool {

+ match read().monospace {

+ Some(monospace) => match monospace.gemini {

+ Some(setting) => setting,

+ None => true

+ }

+ None => true

+ }

+}

+

+pub fn gopher_monospace() -> bool {

+ match read().monospace {

+ Some(monospace) => match monospace.gopher {

+ Some(setting) => setting,

+ None => true

+ }

+ None => true

+ }

+}

+

fn read() -> Settings {

let mut file = settings_file();

let mut content = String::new();



---

Served by Pollux Gemini Server.

-- Response ended

-- Page fetched on Sun May 19 06:11:53 2024