Americký výrobce čipů Intel propustí 15 procent zaměstnanců (en), do konce roku by jich v podniku mělo pracovat zhruba 75.000. Firma se potýká s výrobními problémy a opouští také miliardový plán na výstavbu továrny v Německu a Polsku.
MDN (Wikipedie), dnes MDN Web Docs, původně Mozilla Developer Network, slaví 20 let. V říjnu 2004 byl ukončen provoz serveru Netscape DevEdge, který byl hlavním zdrojem dokumentace k webovým prohlížečům Netscape a k webovým technologiím obecně. Mozille se po jednáních s AOL povedlo dokumenty z Netscape DevEdge zachránit a 23. července 2005 byl spuštěn MDC (Mozilla Developer Center). Ten byl v roce 2010 přejmenován na MDN.
Wayback byl vydán ve verzi 0.1. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána nová verze 6.18 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově se lze k síti Tor připojit pomocí mostu WebTunnel. Tor Browser byl povýšen na verzi 14.5.5. Thunderbird na verzi 128.12.0. Další změny v příslušném seznamu.
Meta představila prototyp náramku, který snímá elektrickou aktivity svalů (povrchová elektromyografie, EMG) a umožňuje jemnými gesty ruky a prstů ovládat počítač nebo různá zařízení. Získané datové sady emg2qwerty a emg2pose jsou open source.
Byla vydána (𝕏) nová verze 25.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 25.7 je Visionary Viper. Přehled novinek v příspěvku na fóru.
Před 40 lety, 23. července 1985, společnost Commodore představila první počítač Amiga. Jednalo se o počítač "Amiga od Commodore", jenž byl později pojmenován Amiga 1000. Mělo se jednat o přímou konkurenci počítače Apple Macintosh uvedeného na trh v lednu 1984.
T‑Mobile USA ve spolupráci se Starlinkem spustil službu T-Satellite. Uživatelé služby mohou v odlehlých oblastech bez mobilního signálu aktuálně využívat satelitní síť s více než 650 satelity pro posílání a příjem zpráv, sdílení polohy, posílání zpráv na 911 a příjem upozornění, posílání obrázků a krátkých hlasových zpráv pomocí aplikace Zprávy Google. V plánu jsou také satelitní data.
Společnost Proxmox Server Solutions stojící za virtualizační platformou Proxmox Virtual Environment věnovala 10 000 eur nadaci The Perl and Raku Foundation (TPRF).
Byla vydána nová verze 2.4.65 svobodného multiplatformního webového serveru Apache (httpd). Řešena je bezpečnostní chyba CVE-2025-54090.
Tak jsem zkoumal, kterak by šel občas taky vypnout TrackPoint, nakonec z toho vylezlo celkem dost skriptů :).
První skript slouží ke spuštění příkazu pod uživatelem v X serveru, a to buď na aktuálně zobrazeném X serveru, nebo na všech běžících.
#!/bin/bash command="$2" getXuser() { user=$(who | grep -m1 "$DISPLAY " | awk '{print $1}') if [ $user = "" ]; then user=$(who | grep -m1 "$DISPLAY" | awk '{print $1}') fi if [ $user != "" ]; then userhome=$(getent passwd $user | cut -d: -f6) export XAUTHORITY=$userhome/.Xauthority else export XAUTHORITY="" fi } runXcommand() { getXuser echo "Display: $DISPLAY" echo "User: $user" echo "XAuthority: $XAUTHORITY" if [ "$DISPLAY" != "" ] && [ "$user" != "" ]; then echo "RUN: $command" su $user -c "$command" fi } Usage() { echo "usage: ${0/*\/} {all|actual} <command>" exit 1 } [ $# -gt 2 ] && Usage case "$1" in "all") for display in $(who | awk '{print $2}' | grep -E ':[0-9]+'); do export DISPLAY=$display runXcommand done ;; "actual") displaynum=$(ps ax | grep -m1 -e '[X] .* vt'$(fgconsole) | sed -re 's|.*/X .*:([0-9]+).*|\1|') export DISPLAY=":$displaynum" runXcommand ;; *) Usage ;; esac
Hodí se ke spouštění následujících dvou skriptů, například, při spouštění přes ACPI tlačítka.
Skript pro přepínání stavu UltraNav
#!/bin/bash TRACKPOINT_NAME="trackpoint" TRACKPOINT='TPPS/2 IBM TrackPoint' TOUCHPAD_NAME="touchpad" TOUCHPAD='SynPS/2 Synaptics TouchPad' Usage() { echo "usage: ${0/*\/} status [device]" echo " ${0/*\/} enable [device]" echo " ${0/*\/} disable [device]" echo " ${0/*\/} toggle [device]" echo "device: $TRACKPOINT_NAME" echo " $TOUCHPAD_NAME" echo "toggle order: 1) $TRACKPOINT_NAME enable" echo " $TOUCHPAD_NAME disable" echo " 2) $TRACKPOINT_NAME disable" echo " $TOUCHPAD_NAME enable" echo " 3) $TRACKPOINT_NAME disable" echo " $TOUCHPAD_NAME disable" echo " 4) $TRACKPOINT_NAME enable" echo " $TOUCHPAD_NAME enable" exit 1 } GetState() { echo $(/usr/bin/xinput list-props "$1" | grep "Device Enabled" | cut -f2 -d:) } Status() { case "$1" in "$TRACKPOINT") DEVICE="$TRACKPOINT_NAME" ;; "$TOUCHPAD") DEVICE="$TOUCHPAD_NAME" ;; esac if [ $(GetState "$1") = "1" ]; then STATUS="enabled" else STATUS="disabled" fi echo -e "$DEVICE: $STATUS" } SetState() { /usr/bin/xinput set-int-prop "$1" "Device Enabled" "8" "$2" } Enable() { SetState "$1" 1 } Disable() { SetState "$1" 0 } Toggle() { if [ $(GetState "$1") = "1" ]; then STATE=0 else STATE=1 fi SetState "$1" "$STATE" } [ $# -gt 2 ] && Usage case "$1" in "status") COMMAND="Status" ;; "enable") COMMAND="Enable" ;; "disable") COMMAND="Disable" ;; "toggle") COMMAND="Toggle" if [ -z "$2" ]; then if [ $(GetState "$TRACKPOINT") = "1" -a $(GetState "$TOUCHPAD") = "1" ]; then SetState "$TRACKPOINT" 1 SetState "$TOUCHPAD" 0 elif [ $(GetState "$TRACKPOINT") = "1" -a $(GetState "$TOUCHPAD") = "0" ]; then SetState "$TRACKPOINT" 0 SetState "$TOUCHPAD" 1 elif [ $(GetState "$TRACKPOINT") = "0" -a $(GetState "$TOUCHPAD") = "1" ]; then SetState "$TRACKPOINT" 0 SetState "$TOUCHPAD" 0 else SetState "$TRACKPOINT" 1 SetState "$TOUCHPAD" 1 fi exit fi ;; *) Usage ;; esac case "$2" in "$TRACKPOINT_NAME") $COMMAND "$TRACKPOINT" ;; "$TOUCHPAD_NAME") $COMMAND "$TOUCHPAD" ;; "") $COMMAND "$TRACKPOINT" $COMMAND "$TOUCHPAD" ;; *) Usage esac
Notně vylepšený skript pro přepínání interního-externího displeje
#!/bin/bash INTERNAL_NAME='internal' INTERNAL='LVDS' EXTERNAL_NAME='external' EXTERNAL='VGA' EXTERNAL_EXPAND="left-of" Usage() { echo "usage: ${0/*\/} status [device]" echo " ${0/*\/} enable [device]" echo " ${0/*\/} disable [device]" echo " ${0/*\/} toggle [device]" echo "device: $INTERNAL_NAME" echo " $EXTERNAL_NAME" echo "toggle order: 1) $INTERNAL_NAME enable" echo " $EXTERNAL_NAME disable" echo " 2) $INTERNAL_NAME disable" echo " $EXTERNAL_NAME enable" echo " 3) $INTERNAL_NAME enable" echo " $EXTERNAL_NAME enable" exit 1 } GetState() { if /usr/bin/xrandr | grep -q -E '^'"$1"' connected .+\('; then echo 1 else echo 0 fi } Status() { case "$1" in "$EXTERNAL") DEVICE="$EXTERNAL_NAME" ;; "$INTERNAL") DEVICE="$INTERNAL_NAME" ;; esac if [ $(GetState "$1") = "1" ]; then STATUS="enabled" else STATUS="disabled" fi echo -e "$DEVICE: $STATUS" } GetOther() { case "$1" in "$EXTERNAL") echo "$INTERNAL" ;; "$INTERNAL") echo "$EXTERNAL" ;; esac } SetState() { OTHER="$(GetOther "$1")" if [ "$2" = "0" -a $(GetState "$OTHER") = "0" ]; then /usr/bin/xrandr --output "$OTHER" --auto [ $(GetState "$OTHER") != "0" ] && /usr/bin/xrandr --output "$1" --off elif [ "$2" = "0" ]; then /usr/bin/xrandr --output "$1" --off else /usr/bin/xrandr --output "$1" --auto if [ $(GetState "$1") != "0" -a $(GetState $OTHER) != "0" ]; then /usr/bin/xrandr --output "$INTERNAL" --"$EXTERNAL_EXPAND" "$EXTERNAL" fi fi true } Enable() { SetState "$1" 1 } Disable() { SetState "$1" 0 } Toggle() { if [ $(GetState "$1") = "1" ]; then STATE=0 else STATE=1 fi SetState "$1" "$STATE" } [ $# -gt 2 ] && Usage case "$1" in "status") COMMAND="Status" ;; "enable") COMMAND="Enable" ;; "disable") COMMAND="Disable" ;; "toggle") COMMAND="Toggle" if [ -z "$2" ]; then if [ $(GetState "$INTERNAL") = "1" -a $(GetState "$EXTERNAL") = "1" ]; then SetState "$INTERNAL" 1 SetState "$EXTERNAL" 0 elif [ $(GetState "$INTERNAL") = "1" -a $(GetState "$EXTERNAL") = "0" ]; then SetState "$EXTERNAL" 1 SetState "$INTERNAL" 0 else SetState "$INTERNAL" 1 SetState "$EXTERNAL" 1 fi exit fi ;; *) Usage ;; esac case "$2" in "$INTERNAL_NAME") $COMMAND "$INTERNAL" ;; "$EXTERNAL_NAME") $COMMAND "$EXTERNAL" ;; "") $COMMAND "$INTERNAL" $COMMAND "$EXTERNAL" ;; *) Usage esac
Další skript je pro přepínání stavu UltraConnect, funguje jen pokud ho spustí root.
#!/bin/bash WLAN_MODULE="iwlagn" WLAN_IFACE="wlan0" WLAN_NAME="wifi" BT_CTRL_FILE="/sys/devices/platform/thinkpad_acpi/bluetooth_enable" BT_NAME="bluetooth" Usage() { echo "usage: ${0/*\/} status [device]" echo " ${0/*\/} enable [device]" echo " ${0/*\/} disable [device]" echo " ${0/*\/} toggle <device>" echo "device: $WLAN_NAME" echo " $BT_NAME" exit 1 } WlanPowerSave() { /usr/sbin/iwconfig "$WLAN_IFACE" power on } GetWlanState() { if [ -d "/sys/module/$WLAN_MODULE" ]; then echo 1 else echo 0 fi } SetWlanState() { if [ "$1" -eq 0 ]; then /sbin/modprobe -r "$WLAN_MODULE" else /sbin/modprobe "$WLAN_MODULE" WlanPowerSave fi } ToggleWlan() { if [ $(GetWlanState) = "0" ]; then SetWlanState 1 else SetWlanState 0 fi } GetBTState() { cat $BT_CTRL_FILE } SetBTState() { echo "$1" > "$BT_CTRL_FILE" } ToggleBT() { if [ $(GetBTState) = "0" ]; then SetBTState 1 else SetBTState 0 fi } Status() { case "$1" in "$WLAN_NAME") STATE=$(GetWlanState) ;; "$BT_NAME") STATE=$(GetBTState) ;; esac if [ $STATE = "1" ]; then STATUS="enabled" else STATUS="disabled" fi echo -e "$1: $STATUS" } [ $# -gt 2 ] && Usage case "$1" in "status") case "$2" in "$WLAN_NAME"|"$BT_NAME") Status "$2" ;; "") Status "$WLAN_NAME" Status "$BT_NAME" ;; *) Usage ;; esac ;; "enable"|"disable") case $1 in "enable") STATE="1" ;; "disable") STATE="0" ;; esac case "$2" in "$WLAN_NAME") SetWlanState "$STATE" ;; "$BT_NAME") SetBTState "$STATE" ;; "") SetWlanState "$STATE" SetBTState "$STATE" ;; *) Usage ;; esac ;; "toggle") case "$2" in "$WLAN_NAME") ToggleWlan ;; "$BT_NAME") ToggleBT ;; *) Usage ;; esac ;; *) Usage ;; esac
Poslední je vylepšený skript pro UltraBay
#!/bin/bash DEFAULT_DEVICE="/sys/class/scsi_device/1:0:0:0/device" FORCE_SLEEP="1" QUIET="0" Message() { if [ $QUIET = "0" ]; then echo "${0/*\//}: $*" else true fi } Block2Device() { /bin/readlink -e "/dev/block/$1" } IsSwap() { /sbin/swapon -s | grep -q -e "^$1\b" } IsMounted() { mount | grep -q -e "^$DEVICE\b" } ReleaseDevice() { if IsMounted "$1"; then if ! umount "$1" &> /dev/null; then Message "cannot umount $DEVICE" false fi elif IsSwap "$1"; then if ! /sbin/swapoff "$1" &> /dev/null; then Message "cannot disable swapping on $DEVICE" false fi fi } SleepDrive() { if ! /sbin/hdparm -Y "$1" &> /dev/null; then Message "cannot put drive to sleep" if [ $FORCE_SLEEP = "0" ]; then true else false fi fi } DeleteScsiDevice() { if ! { echo 1 > $SCSI_DEVICE/delete; } &> /dev/null; then Message "cannot delete device" false fi } GetDock() { grep "$1" /sys/devices/platform/dock.*/type | sed -e s%/type:.*%% } IsDocked() { [ $(cat $(GetDock "$1")/docked) -ne 0 ] } Undock() { { echo 0 > $(GetDock "$1")/undock; } &> /dev/null ! IsDocked "$1" } SCSI_DEVICE="$DEFAULT_DEVICE" for PARAM in $*; do if [ "$PARAM_DEVICE" ]; then SCSI_DEVICE="$PARAM" else case "$PARAM" in "--quiet"|"-q") QUIET="1" ;; "--no-force-sleep"|"-n") FORCE-SLEEP="0" ;; "--device"|"-d") PARAM_DEVICE="1" ;; *) echo "usage: ${0/*\/} [options]" echo "options:" echo " -q --quiet No messages" echo " -n --no-force-sleep Ignore fail when putting drive to sleep" echo " -d --device <path> SCSI device, default: $DEFAULT_DEVICE" exit 1 ;; esac fi done if [ -d $SCSI_DEVICE ] && IsDocked "ata_bay"; then sync for BLOCK in $(/bin/cat $SCSI_DEVICE/block/*/*/dev $SCSI_DEVICE/block/*/dev 2> /dev/null); do DEVICE=$(Block2Device "$BLOCK") && ReleaseDevice "$DEVICE" || FAIL="1" done if [ $FAIL ]; then exit 1 fi sync BLOCK=$(cat $SCSI_DEVICE/block/*/dev 2> /dev/null) && DEVICE=$(Block2Device "$BLOCK") && SleepDrive "$DEVICE" || exit 1 sleep 3 DeleteScsiDevice "$SCSI_DEVICE" || exit 1 sleep 1 fi if [ ! -d $SCSI_DEVICE ] && $(IsDocked "ata_bay"); then if Undock "ata_bay"; then Message "AtaBay undocked" exit 0 else Message "cannot undock AtaBay" exit 1 fi fi if $(IsDocked "battery_bay"); then if Undock "battery_bay"; then Message "BatteryBay undocked" exit 0 else Message "cannot undock BatteryBay" exit 1 fi fi Message "UltraBay is already undock" exit 1
No a nakonec, užijte si to :_).
Tiskni
Sdílej:
A na ThinkWiki s nimi!