992 private links
In this article, I will discuss the steps that I took to successfully create a new MIME type association in Ubuntu 20.04 that would match any files that end with the '*.kdenlive' file extension. This article complements a related topic, Adding A Custom 'Open With' Program In Ubuntu 20.04.
Some notes on setting up an
apt-cacher-ngbased cache server for Debian apt packages in my home operations ("homeops") context, including a section on using SSL/TLS origin servers.
TL;DR:
linux /casper/vmlinuz boot=casper automatic-ubiquity url=http://192.168.X.X/preseed.cfg _iso-scan/filename=${isopath} quiet splash noprompt --
#!/usr/bin/env bash
# Run this script on a debian compatible distro
# Needed installs: xorriso isolinux
# Licence: GNU GPL 3
# Script Setup
set -e # Exit script on any error
print_heading() {
printf "\n\n"
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "="
echo $1
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "="
printf "\n\n"
}
# Variable Setup ####################################################################################################################################
ISO_TORRENT_URL="https://linuxmint.com/torrents/linuxmint-20.3-cinnamon-64bit.iso.torrent"
ISO_CHECKSUM_URL="https://ftp.heanet.ie/mirrors/linuxmint.com/stable/20.3/sha256sum.txt"
ISO_CHECKSUM_SIGNATURE_URL="$ISO_CHECKSUM_URL.gpg"
SIGNING_KEY="27DEB15644C6B3CF3BD7D291300F846BA25BAE09"
PRESEED_TEMPLATE_FILE="preseed_template.cfg"
PRESEED_FILE="preseed.cfg"
CREDENTIALS_FILE="credentials.env"
ISO_NAME="ISO"
# Internal variables ################################################################################################################################
ISO_FILE=$(basename "$ISO_TORRENT_URL" | rev | cut -c 9- | rev)
ISO_WORKDIR="isofiles"
# Download ISO FILE #################################################################################################################################
download_iso() {
print_heading "Downloading ISO File"
aria2c --follow-torrent=mem --rpc-save-upload-metadata=false --check-integrity --seed-time=0 --summary-interval=60 $ISO_TORRENT_URL
}
# Validate ISO File #################################################################################################################################
validate_iso(){
print_heading "Validating ISO File"
ISO_CHECKSUM_FILE="$(basename $ISO_CHECKSUM_URL)"
ISO_CHECKSUM_SIGNATURE_FILE="$(basename $ISO_CHECKSUM_URL).gpg"
wget -nc $ISO_CHECKSUM_URL
wget -nc $ISO_CHECKSUM_SIGNATURE_URL
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key $SIGNING_KEY
gpg --verify $ISO_CHECKSUM_SIGNATURE_FILE $ISO_CHECKSUM_FILE
sha256sum --ignore-missing -c $ISO_CHECKSUM_FILE
rm -f $ISO_CHECKSUM_FILE
rm -f $ISO_CHECKSUM_SIGNATURE_FILE
}
# Unpack ISO ########################################################################################################################################
unpack_iso() {
print_heading "Unpacking ISO"
rm -rf $ISO_WORKDIR
7z x $ISO_FILE -o$ISO_WORKDIR
}
# Add Preseed File to ISO ###########################################################################################################################
add_preseed_file_to_iso() {
print_heading "Adding Preseed File to ISO"
set -a
source $CREDENTIALS_FILE
envsubst < $PRESEED_TEMPLATE_FILE > $ISO_WORKDIR/preseed/auto.seed
set -a
}
# Configure Boot Options ############################################################################################################################
configure_boot_options() {
print_heading "Configuring ISO Boot Options"
tee -a $ISO_WORKDIR/boot/grub/grub.cfg <<- "EOF"
menuentry "Auto Install" --class linuxmint {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/auto.seed automatic-ubiquity boot=casper iso-scan/filename=${iso_path} quiet splash --
initrd /casper/initrd.lz
}
set default=4
set timeout=5
EOF
}
# Recompile ISO #####################################################################################################################################
recompile_iso() {
print_heading "Recompiling ISO"
rm -f "$ISO_NAME.iso"
dd if=$ISO_FILE bs=1 count=432 of=isohdpfx.bin
xorriso -as mkisofs \
-r -V "$ISO_NAME" \
-o "$ISO_NAME.iso" \
-J -joliet-long \
-cache-inodes \
-isohybrid-mbr isohdpfx.bin \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-boot-load-size 4 -boot-info-table -no-emul-boot \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot \
-isohybrid-gpt-basdat \
-isohybrid-apm-hfsplus \
"$ISO_WORKDIR"
rm isohdpfx.bin
}
# Cleanup ###########################################################################################################################################
cleanup() {
print_heading "Cleaning Up"
rm -rf $ISO_WORKDIR
echo "Done"
}
# download_iso
# validate_iso
unpack_iso
add_preseed_file_to_iso
configure_boot_options
recompile_iso
cleanupVous avez une tablette Android ou iOS, un ordinateur sous Linux, Windows, MacOS ? Même un vieux modèle ? Ne jetez pas ! Pourquoi ne pas les utiliser comme second écran ?
Il y a quelques jours, je posais une question sur la tribune de LinuxFR, et Bubar, sans répondre à ma question directement, s'est lancé dans l'aventure du streaming de jeux sur ses machines, et en a fait un journal. J'ai dit que j'écrirais un journal en réponse, avec des solutions plus simples pour les utilisateurs. Dont acte.
On m'a demandé dernièrement d'installer Primtux sur 2 "anciens" ordinateurs portables fournis par la région Occitanie/Languedoc-Roussillon aux lycéens. Autant il n'y a eu aucun problème sur le modèle le plus ancien mais ça n'a pas du tout été le cas pour le plus récent qui est un modèle HP Probook x360 11 G1 EE avec écran tactile.
En effet, impossible de booter directement sur mes clés USB habituelles sous Easy2Boot ou Ventoy ! Ceci est dû à un sale tour de HP/Microsoft empêchant le démarrage à partir du booloader GRUB que l'on trouve dans beaucoup de distributions GNU/Linux. Qu'à cela ne tienne car il est possible de contourner cet obstacle. Comme quoi même en compliquant la vie des simples utilisateur⋅rices, il existe souvent une solution de contournement aux blocages des constructeurs (mais c'est vrai que ça complique quand même les choses). En tout cas, cela conforte mon idée d'éviter d'acheter du HP et du Microsoft.
Sources :
Deskflow is a free and open source keyboard and mouse sharing app. Use the keyboard, mouse, or trackpad of one computer to control nearby computers, and work seamlessly between them. It's like a software KVM (but without the video). TLS encryption is enabled by default. Wayland is supported. Clipboard sharing is supported.
Mopria facilite l’impression et le scan
Pour rechercher les produits certifiés Mopria par marque, cliquez sur le logo du fabricant ou utilisez la boîte de recherche du fabricant ci-dessous.
[Via SebSauvage]
An archive of useful Linux commands shared in Self-Host Weekly
Watchtower est un outil qui surveille vos conteneurs Docker et les met à jour automatiquement.
Ce script permet de :
- Identifier les LXC en ligne qui contiennent Docker.
- Trouver les fichiers
docker-compose.ymlde Watchtower.- Voir et modifier les options essentielles de Watchtower.
- Redémarrer automatiquement les containers après modification.
Le script est adapté pour des LXC dont le répertoire Watchtower se trouve dans
/rootou un sous-répertoire de/root.
TL;DR:
#!/bin/bash
# Gestion complète de Watchtower dans LXC
MENU="
===============================================
Gestion de Watchtower dans les conteneurs LXC
===============================================
[1] 🔍 Voir l’état actuel de Watchtower
[2] 🚀 Démarrer Watchtower
[3] 🛑 Arrêter Watchtower
[4] 🔁 Redémarrer Watchtower
[5] 📂 Voir le contenu modifiable du docker-compose.yml de Watchtower
[6] 🔄 Basculer restart policy (always ↔ none)
[7] ✏️ Modifier WATCHTOWER_NO_STARTUP_MESSAGE (true/false)
[8] ✏️ Modifier WATCHTOWER_CLEANUP (true/false)
[9] 📅 Modifier le schedule aléatoire (14h-20h, min multiples de 5)
[10] 📅 Fixer le même schedule pour tous (6 champs, Spring Cron)
[11] ✏️ Modifier WATCHTOWER_TIMEOUT
[Q] ❌ Quitter
"
# Obtenir les LXC en ligne avec Docker
get_running_docker_lxc() {
pct list | awk 'NR>1 && $2=="running"{print $1}' | while read lxc; do
if pct exec "$lxc" -- docker ps >/dev/null 2>&1; then
echo "$lxc"
fi
done
}
# Trouver docker-compose.yml de watchtower avec timeout (5s)
find_watchtower_compose() {
lxc_id=$1
timeout 5s pct exec "$lxc_id" -- find /root -type f -path "*/watchtower/docker-compose.yml" 2>/dev/null | head -n1
}
# Afficher état Watchtower
status_watchtower() {
for lxc_id in $(get_running_docker_lxc); do
compose_file=$(find_watchtower_compose "$lxc_id")
echo "→ LXC $lxc_id"
if [ -n "$compose_file" ]; then
pct exec "$lxc_id" -- docker ps --filter name=watchtower
else
echo "Pas de docker-compose.yml trouvé ou recherche expirée."
fi
done
read -rp "Appuyez sur [Entrée] pour revenir au menu..."
}
# Démarrer Watchtower
start_watchtower() {
for lxc_id in $(get_running_docker_lxc); do
compose_file=$(find_watchtower_compose "$lxc_id")
if [ -n "$compose_file" ]; then
dir=$(dirname "$compose_file")
pct exec "$lxc_id" -- sh -c "cd $dir && docker compose up -d"
echo "🚀 Watchtower démarré dans LXC $lxc_id"
else
echo "Pas de docker-compose.yml trouvé ou recherche expirée pour LXC $lxc_id."
fi
done
read -rp "Appuyez sur [Entrée] pour revenir au menu..."
}
# Arrêter Watchtower
stop_watchtower() {
for lxc_id in $(get_running_docker_lxc); do
compose_file=$(find_watchtower_compose "$lxc_id")
if [ -n "$compose_file" ]; then
pct exec "$lxc_id" -- docker stop watchtower >/dev/null 2>&1
echo "🛑 Watchtower arrêté dans LXC $lxc_id"
else
echo "Pas de docker-compose.yml trouvé ou recherche expirée pour LXC $lxc_id."
fi
done
read -rp "Appuyez sur [Entrée] pour revenir au menu..."
}
# Redémarrer Watchtower
restart_watchtower() {
for lxc_id in $(get_running_docker_lxc); do
compose_file=$(find_watchtower_compose "$lxc_id")
if [ -n "$compose_file" ]; then
dir=$(dirname "$compose_file")
pct exec "$lxc_id" -- sh -c "cd $dir && docker compose down && docker compose up -d"
echo "🔁 Watchtower redémarré dans LXC $lxc_id"
else
echo "Pas de docker-compose.yml trouvé ou recherche expirée pour LXC $lxc_id."
fi
done
read -rp "Appuyez sur [Entrée] pour revenir au menu..."
}
# Voir le contenu modifiable du docker-compose.yml
view_compose() {
for lxc_id in $(get_running_docker_lxc); do
compose_file=$(find_watchtower_compose "$lxc_id")
echo "→ LXC $lxc_id"
if [ -n "$compose_file" ]; then
pct exec "$lxc_id" -- sh -c "grep -E 'restart:|WATCHTOWER_NO_STARTUP_MESSAGE|WATCHTOWER_CLEANUP|WATCHTOWER_SCHEDULE|WATCHTOWER_TIMEOUT' $compose_file"
else
echo "Pas de docker-compose.yml trouvé ou recherche expirée pour LXC $lxc_id."
fi
done
read -rp "Appuyez sur [Entrée] pour revenir au menu..."
}
# Modifier une clé dans docker-compose.yml et redémarrer
modify_key_restart() {
key=$1
new_value=$2
for lxc_id in $(get_running_docker_lxc); do
compose_file=$(find_watchtower_compose "$lxc_id")
if [ -n "$compose_file" ]; then
pct exec "$lxc_id" -- sed -i "s|^\s*-\s*$key=.*| - $key=$new_value|" "$compose_file"
dir=$(dirname "$compose_file")
pct exec "$lxc_id" -- sh -c "cd $dir && docker compose down && docker compose up -d"
echo "✅ $key mis à jour et Watchtower redémarré pour LXC $lxc_id"
else
echo "Pas de docker-compose.yml trouvé ou recherche expirée pour LXC $lxc_id."
fi
done
read -rp "Appuyez sur [Entrée] pour revenir au menu..."
}
# Basculer restart policy
toggle_restart() {
for lxc_id in $(get_running_docker_lxc); do
compose_file=$(find_watchtower_compose "$lxc_id")
if [ -n "$compose_file" ]; then
current=$(pct exec "$lxc_id" -- grep "restart:" "$compose_file" | awk '{print $2}')
if [ "$current" = "always" ]; then new="none"; else new="always"; fi
pct exec "$lxc_id" -- sed -i "s/^restart:.*/restart: $new/" "$compose_file"
dir=$(dirname "$compose_file")
pct exec "$lxc_id" -- sh -c "cd $dir && docker compose down && docker compose up -d"
echo "🔄 Restart policy basculée et Watchtower redémarré dans LXC $lxc_id : $new"
else
echo "Pas de docker-compose.yml trouvé ou recherche expirée pour LXC $lxc_id."
fi
done
read -rp "Appuyez sur [Entrée] pour revenir au menu..."
}
# Schedule aléatoire (14h-20h, minutes multiples de 5) pour chaque LXC
random_schedule() {
for lxc_id in $(get_running_docker_lxc); do
compose_file=$(find_watchtower_compose "$lxc_id")
if [ -n "$compose_file" ]; then
hour=$((RANDOM % 7 + 14))
minute=$((RANDOM % 12 * 5))
schedule="0 $minute $hour ? * 5"
pct exec "$lxc_id" -- sed -i "s|^\s*-\s*WATCHTOWER_SCHEDULE=.*| - WATCHTOWER_SCHEDULE=$schedule|" "$compose_file"
dir=$(dirname "$compose_file")
pct exec "$lxc_id" -- sh -c "cd $dir && docker compose down && docker compose up -d"
echo "✅ WATCHTOWER_SCHEDULE mis à jour et Watchtower redémarré pour LXC $lxc_id : $schedule"
else
echo "Pas de docker-compose.yml trouvé ou recherche expirée pour LXC $lxc_id."
fi
done
read -rp "Appuyez sur [Entrée] pour revenir au menu..."
}
# Schedule fixe pour tous (Spring cron, 6 champs)
fixed_schedule() {
read -rp "Entrez la valeur du schedule (ex: 0 0 16 ? * 5) : " schedule
modify_key_restart "WATCHTOWER_SCHEDULE" "$schedule"
}
# Menu principal
while true; do
clear
echo "$MENU"
read -rp "Votre choix : " choice
case $choice in
1) status_watchtower ;;
2) start_watchtower ;;
3) stop_watchtower ;;
4) restart_watchtower ;;
5) view_compose ;;
6) toggle_restart ;;
7) read -rp "Entrez true ou false pour WATCHTOWER_NO_STARTUP_MESSAGE : " val; modify_key_restart "WATCHTOWER_NO_STARTUP_MESSAGE" "$val" ;;
8) read -rp "Entrez true ou false pour WATCHTOWER_CLEANUP : " val; modify_key_restart "WATCHTOWER_CLEANUP" "$val" ;;
9) random_schedule ;;
10) fixed_schedule ;;
11) read -rp "Entrez la valeur pour WATCHTOWER_TIMEOUT (ex: 30s) : " val; modify_key_restart "WATCHTOWER_TIMEOUT" "$val" ;;
[Qq]) exit ;;
*) echo "Option invalide." ; read -rp "Appuyez sur [Entrée] pour continuer..." ;;
esac
doneFx is a CLI for JSON: it shows JSON interactively in your terminal, and lets you transform JSON with JavaScript. Fx is written in Go and uses goja as its embedded JavaScript engine.
nakeDeb est une distribution dérivée française (but could speak english) basée sur Debian et prévue pour délivrer une installation ultra-minimale vous permettant de profiter rapidement d'un système fonctionnel ou de l'utiliser en live léger de secours.
le nakedWiki vous permettra de prendre en main votre système rapidement.
vous disposez de plusieurs pages pour trouver votre bonheur :
- wiki fluxbox : prise en main de votre session par défaut
- wiki i3wm : découverte de votre session alternative
- wiki sway : découverte de votre session optionnelle
- wiki polybar : précisions sur l'outil polybar sur i3wm
- wiki CLI : les commandes sur Debian & les spécificités nakeDeb
- wiki KBD : piloter votre nakeDeb avec le clavier
European governments have been steadily moving away from reliance on foreign tech offerings, driven largely by concerns over data sovereignty and regulatory compliance.
Countries like Germany and Denmark have already taken steps to reduce their dependence on Microsoft and other foreign cloud providers, opting instead for open source alternatives that keep sensitive data within their borders.
And, recently, Austria has shown up as another player in this space. Last month, the Austrian Armed Forces completed a migration of 16,000 workstations from Microsoft Office to LibreOffice.
Extended support for Windows 10 ends on October 13, 2026.
Microsoft veut que vous achetiez un nouvel ordinateur.
Mais que se passerait-il si vous pouviez rendre votre ordinateur actuel rapide et sécurisé à nouveau ?
Si vous avez acheté votre ordinateur après 2010, il n'y a probablement aucune raison de le jeter. En installant simplement un système d'exploitation GNU / Linux récent, vous pouvez continuer à l'utiliser pour des années.
L'installation d'un système d'exploitation pourrait sembler difficile. Mais, vous n'avez pas à vous lancer tout seul(e) ! Avec un peu de chance, il y a des personnes dans votre région prêtes à vous aider !
UKUI's technology is mainly developed using Qt language, and it is integrated on the Unicorn system by default. At present, a series of plug-ins, apps and other products have been integrated, and new 4.0 components are constantly being developed, which means that UKUI will be actively maintained, continuously tested, and constantly developed to respond to user-driven needs in the real world.
Secure Boot is a security feature that ensures your computer only boots with software trusted by the Original Equipment Manufacturer (OEM). It verifies the digital signatures of bootloaders and firmware, preventing unauthorized or malicious software from loading before the operating system. This helps protect against rootkits and other malware that could compromise the system early in the boot sequence.
MOK, or Machine Owner Key, is a security feature in Linux. Basically, it enables users to add their own trusted signing keys to the system’s Secure Boot configuration. Normally, trusted keys are provided by hardware vendors or operating system developers. Thus, MOK ensures that only trusted software and kernel modules run on the system.
However, sometimes it’s necessary to load custom software or third-party drivers that aren’t signed by the default trusted keys. This is where MOK comes to help. It enables users to add their specific keys. In turn, this makes the system trust and run custom-signed software, even with Secure Boot enabled.
Run Windows apps on 🐧 Linux with ✨ seamless integration
- 🎨 Elegant Interface: Sleek and intuitive interface that seamlessly integrates Windows into your Linux desktop environment, making it feel like a native experience
- 📦 Automated Installs: Simple installation process through our interface - pick your preferences & specs and let us handle the rest
- 🚀 Run Any App: If it runs on Windows, it can run on WinBoat. Enjoy the full range of Windows applications as native OS-level windows in your Linux environment
- 🖥️ Full Windows Desktop: Access the complete Windows desktop experience when you need it, or run individual apps seamlessly integrated into your Linux workflow
- 📁 Filesystem Integration: Your home directory is mounted in Windows, allowing easy file sharing between the two systems without any hassle
- ✨ And many more: Smartcard passthrough, resource monitoring, and more features being added regularly
Un peu de culture : Unix, Linux & Open Source
Début 2014, l'École des Mines d'Alès m'a invité pour animer une conférence de trois heures sur l'histoire d'Unix et de Linux, les logiciels libres et l'Open Source. Cette présentation a eu beaucoup de succès, à tel point qu'à partir de 2015 elle a été remaniée en cours magistral et intégrée dans le cursus régulier de l'EMA.
À qui s'adresse cette formation ?
Ce cours de culture générale peut très bien se lire comme un roman. Si vous êtes un professionnel de l'informatique et que vous pensez que Linux est sorti tout ficelé du crâne de son inventeur Mark Shuttleworth en 2004, vous apprendrez sans doute pas mal de choses qui vous seront utiles un jour ou l'autre.
Par ailleurs, si vous êtes un simple utilisateur de l'outil informatique et que vous pensez vaguement que Linux est une marque de lessive ou de mouchoirs, vous profiterez également de cette introduction en la matière, ne serait-ce que pour vous montrer qu'il existe une vie après Windows.
- Unix, Linux & Open Source
- Les premiers ordinateurs et le projet Multics
- De Multics à Unix
- Richard Stallman vs. Xerox
- Le projet GNU
- Linus Torvalds et Minix
- Naissance du noyau Linux
- Les premières distributions Linux
- Slackware Linux
- Red Hat, Fedora et CentOS
- Debian
- Ubuntu
- SUSE et OpenSUSE
- Les systèmes BSD
- Choisir sa distribution Linux
- Les distributions Linux pour l'entreprise
- Qui utilise Linux ?
Hi, I am vinceliuice and I create Plasma Themes, GTK3/4 Themes, Global Themes (Plasma 5) and more. I also support Artwork (Icons, Cursors, Wallpapers), GTK Themes and Add-ons, KDE Themes and Extensions.