Firma Anthropic, tvůrce AI modelu Claude, začala v oblasti Sanfranciského zálivu v tichosti provozovat vlastní biotechnologickou laboratoř. Anthropic prý chce pomocí AI urychlit hledání léků na nemoci, jimž farmaceutický průmysl dle názoru firmy věnuje příliš málo pozornosti. Firma tvrdí, že laboratoř se zatím soustředí především na základní biologii, nikoli přímo na vývoj léčiv. Farmaceutický výzkum je pro generálního ředitele Daria Amodeie velice osobní téma, jeho otec zemřel na hepatitidu C několik málo let před objevením účinné léčby.
Vědci z Googlu dokončili mapu všech neuronových spojení v mozku (tzv. konektom) samečka mušky octomilky obecné (drosophila melanogaster), hlavním cílem je komparativní analýza s již zmapovaným mozkem samičky. S tímto veřejně dostupným modelem, čítajícím přibližně 160 000 neuronů, se začali bavit nadšenci. Mozek mouchy pohání experimentálního kryptoburzovního bota Stonkfly, případně si zahrál počítačové hry Beat Saber, Mario64 a samozřejmě DOOM (gameplay videa). Ani mozek samičky nezůstal stranou, vyzkoušel si Minecraft.
Alibaba Cloud je dalším sponzorem nadace Omacom Foundation stojící za linuxovou distribucí Omarchy. Přislíbená částka je 3 miliony dolarů, tj. 1 milion dolarů ročně po dobu tří let. Stejná částka jako u DigitalOcean.
Byla vydána nová verze 262 správce systému a služeb systemd (Wikipedie, GitHub).
Canonical oznámil vydání Zephyr 26.04 LTS. Jedná se o komerční distribuci operačního systému pro mikrokontroléry Zephyr (Wikipedie) s podporou až 15 let.
Gravity Linux je linuxová distribuce určená pro Apple Silicon s čipy M4 a novějšími. Vydána byla alfa verze pro M4 Mac mini. Gravity Linux je fork Asahi Linuxu.
Hister je osobní soukromý vyhledávač, který lze provozovat na vlastním stroji. Umí prohledávat lokální soubory, importovat historii a záložky z webových prohlížečů, procházet vybrané weby a pomocí rozšíření pro Firefox a Chrome indexovat obsah právě navštívených stránek. Nad vytvořeným indexem pak nabízí vyhledávání prostřednictvím webového rozhraní, příkazové řádky a díky podpoře MCP i nástrojům umělé inteligence. Tento
… více »Ministerstvo dopravy uznalo prozatímní schválení asistenčního systému Tesla FSD Supervised vydané nizozemským schvalovacím orgánem RDW. Připojilo se tak k Nizozemsku a dalším pěti evropským státům. Systém je díky tomuto rozhodnutí možné používat za podmínek prozatímního schválení také na území České republiky. Tesla FSD Supervised je asistenčním systémem úrovně 2 podle klasifikace SAE (částečná automatizace řízení). Řidič se
… více »Někteří zákazníci O2 mohou aktuálně zaznamenat zhoršenou dostupnost internetových služeb. Na odstranění potíží se pracuje [Facebook].
PyPy (Wikipedie), tj. implementace Pythonu v RPythonu, alternativa CPythonu v C, byla vydána v nové major verzi 8.0.0. Podporuje Python 2.7, 3.11 a 3.12.
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! 