Společnost AMD na veletrhu Computex 2024 představila (YouTube) mimo jiné nové série procesorů pro desktopy AMD Ryzen 9000 a notebooky AMD Ryzen AI 300.
OpenCV (Open Source Computer Vision, Wikipedie), tj. open source multiplatformní knihovna pro zpracování obrazu a počítačové vidění, byla vydána ve verzi 4.10.0 . Přehled novinek v ChangeLogu. Vypíchnout lze Wayland backend pro Linux.
Národní superpočítačové centrum IT4Innovations s partnery projektu EVEREST vydalo sadu open source vývojových nástrojů EVEREST SDK pro jednodušší nasazení aplikací na heterogenních vysoce výkonných cloudových infrastrukturách, zejména pro prostředí nabízející akceleraci pomocí FPGA.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu aktuálně činí 2,32 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Ubuntu, Linux Mint a Manjaro Linux. Při výběru jenom Linuxu vede SteamOS Holo s 45,34 %. Procesor AMD používá 75,04 % hráčů na Linuxu.
Blíží se léto, chladiče topí, tranzistory se přehřívají, novinářům pomalu docházejí témata a nastává klasická okurková sezóna. Je tomu tak i mezi bastlíři? Na to se podíváme na Virtuální Bastlírně! Tentokrát se strahováci podívají na zoubek velmi slibně vypadajícímu open-source EDM projektu - ne, nejde o taneční hudbu, ale o elektroobrábění. Ukáží taky, jak vypadá starší cykloradar zevnitř nebo jak se testuje odolnost iPhonů.
… více »Společnosti Ticketmaster byla odcizena databáze s osobními údaji (jméno, adresa, telefonní číslo a část platebních údajů) 560 miliónů zákazníku. Za odcizením stojí skupina ShinyHunters a za nezveřejnění této databáze požaduje 500 tisíc dolarů [BBC].
Byla vydána nová stabilní verze 24.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Uakari. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
Byla vydána nová verze 1.48.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Fernando F. Mancera. Mimo jiné se v nastavení místo mac-address-blacklist nově používá mac-address-denylist.
Před 25 lety, 31. května 1999, započal vývoj grafického editoru Krita (Wikipedie). Tenkrát ještě pod názvem KImageShop a později pod názvem Krayon.
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!