actualisation 25/08/2025
Some checks failed
Build and Deploy / build (push) Has been cancelled
Build and Deploy / deploy (push) Has been cancelled

This commit is contained in:
yann 2025-08-25 10:17:25 +02:00
parent 43c6ce4b4e
commit 4d6c70abe7
17 changed files with 564 additions and 871 deletions

View File

@ -1,5 +1,5 @@
SHELL=/bin/bash
SESSION_MANAGER=local/PC1:@/tmp/.ICE-unix/1759,unix/PC1:/tmp/.ICE-unix/1759
SESSION_MANAGER=local/PC1:@/tmp/.ICE-unix/3072,unix/PC1:/tmp/.ICE-unix/3072
NVM_RC_VERSION=
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg
@ -8,16 +8,16 @@ XDG_MENU_PREFIX=xfce-
TERMINATOR_DBUS_PATH=/net/tenshu/Terminator2
LC_ADDRESS=fr_FR.UTF-8
LC_NAME=fr_FR.UTF-8
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXvfx608/agent.1967
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXrzbF1h/agent.3180
XDG_CONFIG_HOME=/home/yann/.config
TERMINATOR_UUID=urn:uuid:db3e7f6b-9c02-422e-b47a-3f267d0ea244
TERMINATOR_UUID=urn:uuid:375d27cf-00fb-47c4-9303-f63e68d3fe1b
DESKTOP_SESSION=xfce
LC_MONETARY=fr_FR.UTF-8
SSH_AGENT_PID=1968
SSH_AGENT_PID=3181
EDITOR=nano
GTK_MODULES=canberra-gtk-module:canberra-gtk-module
XDG_SEAT=seat0
PWD=/home/yann/media/chirpy
PWD=/srv/media/chirpy
LOGNAME=yann
XDG_SESSION_DESKTOP=xfce
XDG_SESSION_TYPE=x11
@ -29,12 +29,12 @@ HOME=/home/yann
LC_PAPER=fr_FR.UTF-8
LANG=fr_FR.UTF-8
XDG_CURRENT_DESKTOP=XFCE
VTE_VERSION=7804
VTE_VERSION=8002
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
TERMINATOR_DBUS_NAME=net.tenshu.Terminator21a9d5db22c73a993ff0b42f64b396873
XDG_CACHE_HOME=/home/yann/.cache
NVM_DIR=/home/yann/.config/nvm
GEM_HOME=/home/yann/.local/share/gem/ruby/3.3.0/gems
GEM_HOME=/home/yann/.local/share/gem/ruby/3.4.0/gems
XDG_SESSION_CLASS=user
TERM=xterm-256color
LC_IDENTIFICATION=fr_FR.UTF-8
@ -52,10 +52,10 @@ LC_TIME=fr_FR.UTF-8
GTK3_MODULES=xapp-gtk3-module:xapp-gtk3-module
XDG_DATA_DIRS=/usr/local/share:/usr/share
BROWSER=firefox
PATH=/home/yann/.local/share/gem/ruby/3.3.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
PATH=/home/yann/.local/share/gem/ruby/3.4.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/yann/.local/bin:/home/yann/.local/bin
GDMSESSION=xfce
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
MAIL=/var/spool/mail/yann
LC_NUMERIC=fr_FR.UTF-8
OLDPWD=/home/yann/media
_=/usr/bin/env
OLDPWD=/home/yann

View File

@ -4,7 +4,7 @@ source "https://rubygems.org"
gemspec
gem "html-proofer", "~> 5.0", group: :test
gem "html-proofer", "~> 5.0.10", group: :test
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", ">= 1", "< 3"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
<!-- A placeholder to allow defining custom metadata
<script type="text/javascript" src="/assets/js/toc.js" defer></script>
-->

View File

@ -56,7 +56,7 @@
if (value === '') {
return `${value}`;
} else {
return `<div class="me-sm-4" style='color:red'><i class="far fa-calendar fa-fw" style='color:red'></i>${value}</div>`;
return `<div class="me-sm-4" style='color:lime'><i class="far fa-calendar fa-fw" style='color:lime'></i>${value}</div>`;
}
}

View File

@ -1,40 +0,0 @@
<!-- Get 5 last posted/updated posts -->
{% assign MAX_SIZE = 5 %}
{% assign all_list = '' | split: '' %}
{% for post in site.posts %}
{% assign datetime = post.last_modified_at | default: post.date %}
{% capture elem %}
{{- datetime | date: "%Y%m%d%H%M%S" -}}::{{- forloop.index0 -}}
{% endcapture %}
{% assign all_list = all_list | push: elem %}
{% endfor %}
{% assign all_list = all_list | sort | reverse %}
{% assign update_list = '' | split: '' %}
{% for entry in all_list limit: MAX_SIZE %}
{% assign update_list = update_list | push: entry %}
{% endfor %}
{% if update_list.size > 0 %}
<section id="access-lastmod">
<h2 class="panel-heading">{{- site.data.locales[include.lang].panel.lastmod -}}</h2>
<ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2">
{% for item in update_list %}
{% assign index = item | split: '::' | last | plus: 0 %}
{% assign post = site.posts[index] %}
{% assign url = post.url | relative_url %}
<li class="text-truncate lh-lg">
<a href="{{ url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
</section>
<!-- #access-lastmod -->
{% endif %}

View File

@ -84,15 +84,6 @@ refactor: true
<div class="post-meta flex-grow-1 d-flex align-items-end">
<div class="me-auto">
<!-- posted date -->
<i class="far fa-calendar fa-fw me-1"></i>
{% include datetime.html date=post.date lang=lang %}
{% if post.last_modified_at %}
<i class="far fa-calendar fa-fw me-1" style='color:red'></i>
{% include datetime.html date=post.last_modified_at lang=lang %}
{% endif %}
<!-- categories -->
{% if post.categories.size > 0 %}
<i class="far fa-folder-open fa-fw me-1"></i>

130
_layouts/home.html~ Normal file
View File

@ -0,0 +1,130 @@
---
layout: default
refactor: true
---
{% include lang.html %}
{% assign all_pinned = site.posts | where: 'pin', 'true' %}
{% assign all_normal = site.posts | where_exp: 'item', 'item.pin != true and item.hidden != true' %}
{% assign posts = '' | split: '' %}
<!-- Get pinned posts on current page -->
{% assign visible_start = paginator.page | minus: 1 | times: paginator.per_page %}
{% assign visible_end = visible_start | plus: paginator.per_page %}
{% if all_pinned.size > visible_start %}
{% if all_pinned.size > visible_end %}
{% assign pinned_size = paginator.per_page %}
{% else %}
{% assign pinned_size = all_pinned.size | minus: visible_start %}
{% endif %}
{% for i in (visible_start..all_pinned.size) limit: pinned_size %}
{% assign posts = posts | push: all_pinned[i] %}
{% endfor %}
{% else %}
{% assign pinned_size = 0 %}
{% endif %}
<!-- Get normal posts on current page -->
{% assign normal_size = paginator.posts | size | minus: pinned_size %}
{% if normal_size > 0 %}
{% if pinned_size > 0 %}
{% assign normal_start = 0 %}
{% else %}
{% assign normal_start = visible_start | minus: all_pinned.size %}
{% endif %}
{% assign normal_end = normal_start | plus: normal_size | minus: 1 %}
{% for i in (normal_start..normal_end) %}
{% assign posts = posts | push: all_normal[i] %}
{% endfor %}
{% endif %}
<div id="post-list" class="flex-grow-1 px-xl-1">
{% for post in posts %}
<article class="card-wrapper card">
<a href="{{ post.url | relative_url }}" class="post-preview row g-0 flex-md-row-reverse">
{% assign card_body_col = '12' %}
{% if post.image %}
{% assign src = post.image.path | default: post.image %}
{% unless src contains '//' %}
{% assign src = post.media_subpath | append: '/' | append: src | replace: '//', '/' %}
{% endunless %}
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
{% assign lqip = null %}
{% if post.image.lqip %}
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
{% endif %}
<div class="col-md-5">
<img src="{{ src }}" alt="{{ alt }}" {{ lqip }}>
</div>
{% assign card_body_col = '7' %}
{% endif %}
<div class="col-md-{{ card_body_col }}">
<div class="card-body d-flex flex-column">
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
<div class="card-text content mt-0 mb-3">
<p>{% include post-description.html %}</p>
</div>
<div class="post-meta flex-grow-1 d-flex align-items-end">
<div class="me-auto">
<!-- posted date -->
<!--
<i class="far fa-calendar fa-fw me-1"></i>
{% include datetime.html date=post.date lang=lang %}
{% if post.last_modified_at %}
<i class="far fa-calendar fa-fw me-1" style='color:lime'></i>
<font color="lime">
{% include datetime.html date=post.last_modified_at lang=lang %}
</font>
{% endif %}
-->
<!-- categories -->
{% if post.categories.size > 0 %}
<i class="far fa-folder-open fa-fw me-1"></i>
<span class="categories">
{% for category in post.categories %}
{{ category }}
{%- unless forloop.last -%},{%- endunless -%}
{% endfor %}
</span>
{% endif %}
</div>
{% if post.pin %}
<div class="pin ms-1">
<i class="fas fa-thumbtack fa-fw"></i>
<span>{{ site.data.locales[lang].post.pin_prompt }}</span>
</div>
{% endif %}
</div>
<!-- .post-meta -->
</div>
<!-- .card-body -->
</div>
</a>
</article>
{% endfor %}
</div>
<!-- #post-list -->
{% if paginator.total_pages > 1 %}
{% include post-paginator.html %}
{% endif %}

129
_layouts/home20250809.html Normal file
View File

@ -0,0 +1,129 @@
---
layout: default
refactor: true
---
{% include lang.html %}
{% assign all_pinned = site.posts | where: 'pin', 'true' %}
{% assign all_normal = site.posts | where_exp: 'item', 'item.pin != true and item.hidden != true' %}
{% assign posts = '' | split: '' %}
<!-- Get pinned posts on current page -->
{% assign visible_start = paginator.page | minus: 1 | times: paginator.per_page %}
{% assign visible_end = visible_start | plus: paginator.per_page %}
{% if all_pinned.size > visible_start %}
{% if all_pinned.size > visible_end %}
{% assign pinned_size = paginator.per_page %}
{% else %}
{% assign pinned_size = all_pinned.size | minus: visible_start %}
{% endif %}
{% for i in (visible_start..all_pinned.size) limit: pinned_size %}
{% assign posts = posts | push: all_pinned[i] %}
{% endfor %}
{% else %}
{% assign pinned_size = 0 %}
{% endif %}
<!-- Get normal posts on current page -->
{% assign normal_size = paginator.posts | size | minus: pinned_size %}
{% if normal_size > 0 %}
{% if pinned_size > 0 %}
{% assign normal_start = 0 %}
{% else %}
{% assign normal_start = visible_start | minus: all_pinned.size %}
{% endif %}
{% assign normal_end = normal_start | plus: normal_size | minus: 1 %}
{% for i in (normal_start..normal_end) %}
{% assign posts = posts | push: all_normal[i] %}
{% endfor %}
{% endif %}
<div id="post-list" class="flex-grow-1 px-xl-1">
{% for post in posts %}
<article class="card-wrapper card">
<a href="{{ post.url | relative_url }}" class="post-preview row g-0 flex-md-row-reverse">
{% assign card_body_col = '12' %}
{% if post.image %}
{% assign src = post.image.path | default: post.image %}
{% unless src contains '//' %}
{% assign src = post.media_subpath | append: '/' | append: src | replace: '//', '/' %}
{% endunless %}
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
{% assign lqip = null %}
{% if post.image.lqip %}
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
{% endif %}
<div class="col-md-5">
<img src="{{ src }}" alt="{{ alt }}" {{ lqip }}>
</div>
{% assign card_body_col = '7' %}
{% endif %}
<div class="col-md-{{ card_body_col }}">
<div class="card-body d-flex flex-column">
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
<div class="card-text content mt-0 mb-3">
<p>{% include post-description.html %}</p>
</div>
<div class="post-meta flex-grow-1 d-flex align-items-end">
<div class="me-auto">
<!-- posted date -->
<i class="far fa-calendar fa-fw me-1"></i>
{% include datetime.html date=post.date lang=lang %}
{% if post.last_modified_at %}
<i class="far fa-calendar fa-fw me-1" style='color:lime'></i>
<font color="lime">
{% include datetime.html date=post.last_modified_at lang=lang %}
</font>
{% endif %}
<!-- categories -->
{% if post.categories.size > 0 %}
<i class="far fa-folder-open fa-fw me-1"></i>
<span class="categories">
{% for category in post.categories %}
{{ category }}
{%- unless forloop.last -%},{%- endunless -%}
{% endfor %}
</span>
{% endif %}
</div>
{% if post.pin %}
<div class="pin ms-1">
<i class="fas fa-thumbtack fa-fw"></i>
<span>{{ site.data.locales[lang].post.pin_prompt }}</span>
</div>
{% endif %}
</div>
<!-- .post-meta -->
</div>
<!-- .card-body -->
</div>
</a>
</article>
{% endfor %}
</div>
<!-- #post-list -->
{% if paginator.total_pages > 1 %}
{% include post-paginator.html %}
{% endif %}

130
_layouts/home20250809.html~ Normal file
View File

@ -0,0 +1,130 @@
---
layout: default
refactor: true
---
{% include lang.html %}
{% assign all_pinned = site.posts | where: 'pin', 'true' %}
{% assign all_normal = site.posts | where_exp: 'item', 'item.pin != true and item.hidden != true' %}
{% assign posts = '' | split: '' %}
<!-- Get pinned posts on current page -->
{% assign visible_start = paginator.page | minus: 1 | times: paginator.per_page %}
{% assign visible_end = visible_start | plus: paginator.per_page %}
{% if all_pinned.size > visible_start %}
{% if all_pinned.size > visible_end %}
{% assign pinned_size = paginator.per_page %}
{% else %}
{% assign pinned_size = all_pinned.size | minus: visible_start %}
{% endif %}
{% for i in (visible_start..all_pinned.size) limit: pinned_size %}
{% assign posts = posts | push: all_pinned[i] %}
{% endfor %}
{% else %}
{% assign pinned_size = 0 %}
{% endif %}
<!-- Get normal posts on current page -->
{% assign normal_size = paginator.posts | size | minus: pinned_size %}
{% if normal_size > 0 %}
{% if pinned_size > 0 %}
{% assign normal_start = 0 %}
{% else %}
{% assign normal_start = visible_start | minus: all_pinned.size %}
{% endif %}
{% assign normal_end = normal_start | plus: normal_size | minus: 1 %}
{% for i in (normal_start..normal_end) %}
{% assign posts = posts | push: all_normal[i] %}
{% endfor %}
{% endif %}
<div id="post-list" class="flex-grow-1 px-xl-1">
{% for post in posts %}
<article class="card-wrapper card">
<a href="{{ post.url | relative_url }}" class="post-preview row g-0 flex-md-row-reverse">
{% assign card_body_col = '12' %}
{% if post.image %}
{% assign src = post.image.path | default: post.image %}
{% unless src contains '//' %}
{% assign src = post.media_subpath | append: '/' | append: src | replace: '//', '/' %}
{% endunless %}
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
{% assign lqip = null %}
{% if post.image.lqip %}
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
{% endif %}
<div class="col-md-5">
<img src="{{ src }}" alt="{{ alt }}" {{ lqip }}>
</div>
{% assign card_body_col = '7' %}
{% endif %}
<div class="col-md-{{ card_body_col }}">
<div class="card-body d-flex flex-column">
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
<div class="card-text content mt-0 mb-3">
<p>{% include post-description.html %}</p>
</div>
<div class="post-meta flex-grow-1 d-flex align-items-end">
<div class="me-auto">
<!-- posted date -->
<!--
<i class="far fa-calendar fa-fw me-1"></i>
{% include datetime.html date=post.date lang=lang %}
{% if post.last_modified_at %}
<i class="far fa-calendar fa-fw me-1" style='color:lime'></i>
<font color="lime">
{% include datetime.html date=post.last_modified_at lang=lang %}
</font>
{% endif %}
-->
<!-- categories -->
{% if post.categories.size > 0 %}
<i class="far fa-folder-open fa-fw me-1"></i>
<span class="categories">
{% for category in post.categories %}
{{ category }}
{%- unless forloop.last -%},{%- endunless -%}
{% endfor %}
</span>
{% endif %}
</div>
{% if post.pin %}
<div class="pin ms-1">
<i class="fas fa-thumbtack fa-fw"></i>
<span>{{ site.data.locales[lang].post.pin_prompt }}</span>
</div>
{% endif %}
</div>
<!-- .post-meta -->
</div>
<!-- .card-body -->
</div>
</a>
</article>
{% endfor %}
</div>
<!-- #post-list -->
{% if paginator.total_pages > 1 %}
{% include post-paginator.html %}
{% endif %}

View File

@ -241,7 +241,10 @@ main {
border-bottom: solid 2px rgba(210, 215, 217, 0.75);
th {
@extend %table-cell;
/* @extend %table-cell;*/
padding: 5px;
border: 1px solid #C2C0C0;
background-color: #55608f;
}
}
@ -258,7 +261,10 @@ main {
}
td {
@extend %table-cell;
/*@extend %table-cell;*/
padding: 5px;
border: 1px solid #C2C0C0;
border-collapse: collapse;
}
}
} /* tbody */

View File

@ -59,8 +59,8 @@
--toc-highlight: rgb(116, 178, 243);
--toc-popup-border-color: #373737;
--tag-hover: rgb(43, 56, 62);
--tb-odd-bg: #252526; /* odd rows of the posts' table */
--tb-even-bg: rgb(31, 31, 34); /* even rows of the posts' table */
--tb-odd-bg: #696666; /* odd rows of the posts' table */
--tb-even-bg: #363434; /* 1F1F22 -> rgb(31, 31, 34) even rows of the posts' table */
--tb-border-color: var(--tb-odd-bg);
--footnote-target-bg: rgb(63, 81, 181);
--btn-share-color: #6c757d;

View File

@ -7,11 +7,3 @@
{%- endif -%}
';
/* append your custom style below */
h2 {
color: #73EF35; /* red */
}
h3 {
color: #DAA520; /* blue */
}

9
assets/js/toc.js~ Normal file
View File

@ -0,0 +1,9 @@
document.querySelector("main h2, main h3")&&tocbot.refresh({
tocSelector:"#toc",
contentSelector:".content",
ignoreSelector:"[data-toc-skip]",
headingSelector:"h2, h3, h4, h5, h6",
orderedList:!1,
scrollSmooth:!1,
collapseDepth: 6
});

11
chirpy.service Normal file
View File

@ -0,0 +1,11 @@
[Unit]
Description=service chirpy
[Service]
EnvironmentFile=/srv/media/chirpy/.env_file
WorkingDirectory=/srv/media/chirpy
ExecStart=/home/yann/.local/share/gem/ruby/3.4.0/bin/bundle exec jekyll build --incremental --watch
Restart=on-abort
[Install]
WantedBy=default.target

131
tools/init.sh Executable file
View File

@ -0,0 +1,131 @@
#!/usr/bin/env bash
#
# Init the environment for new user.
set -eu
# CLI Dependencies
CLI=("git" "npm")
ACTIONS_WORKFLOW=pages-deploy.yml
RELEASE_HASH=$(git log --grep="chore(release):" -1 --pretty="%H")
# temporary file suffixes that make `sed -i` compatible with BSD and Linux
TEMP_SUFFIX="to-delete"
_no_gh=false
help() {
echo "Usage:"
echo
echo " bash /path/to/init [options]"
echo
echo "Options:"
echo " --no-gh Do not deploy to Github."
echo " -h, --help Print this help information."
}
# BSD and GNU compatible sed
_sedi() {
regex=$1
file=$2
sed -i.$TEMP_SUFFIX -E "$regex" "$file"
rm -f "$file".$TEMP_SUFFIX
}
_check_cli() {
for i in "${!CLI[@]}"; do
cli="${CLI[$i]}"
if ! command -v "$cli" &>/dev/null; then
echo "Command '$cli' not found! Hint: you should install it."
exit 1
fi
done
}
_check_status() {
if [[ -n $(git status . -s) ]]; then
echo "Error: Commit unstaged files first, and then run this tool again."
exit 1
fi
}
_check_init() {
if [[ $(git rev-parse HEAD^1) == "$RELEASE_HASH" ]]; then
echo "Already initialized."
exit 0
fi
}
check_env() {
_check_cli
_check_status
_check_init
}
reset_latest() {
git reset --hard "$RELEASE_HASH"
git clean -fd
git submodule update --init --recursive
}
init_files() {
if $_no_gh; then
rm -rf .github
else
## Change the files of `.github/`
temp="$(mktemp -d)"
find .github/workflows -type f -name "*$ACTIONS_WORKFLOW*" -exec mv {} "$temp/$ACTIONS_WORKFLOW" \;
rm -rf .github && mkdir -p .github/workflows
mv "$temp/$ACTIONS_WORKFLOW" .github/workflows/"$ACTIONS_WORKFLOW"
rm -rf "$temp"
fi
# Cleanup image settings in site config
_sedi "s/(^timezone:).*/\1/;s/(^.*cdn:).*/\1/;s/(^avatar:).*/\1/" _config.yml
# remove the other files
rm -rf tools/init.sh tools/release.sh _posts/*
# build assets
npm i && npm run build
# track the CSS/JS output
_sedi "/^_sass\/vendors/d" .gitignore
_sedi "/^assets\/js\/dist/d" .gitignore
}
commit() {
git add -A
git commit -m "chore: initialize the environment" -q
echo -e "\n> Initialization successful!\n"
}
main() {
check_env
reset_latest
init_files
commit
}
while (($#)); do
opt="$1"
case $opt in
--no-gh)
_no_gh=true
shift
;;
-h | --help)
help
exit 0
;;
*)
# unknown option
help
exit 1
;;
esac
done
main