abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    25.7. 19:55 | IT novinky

    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.

    Ladislav Hagara | Komentářů: 22
    25.7. 17:33 | Komunita

    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.

    Ladislav Hagara | Komentářů: 0
    25.7. 14:55 | Nová verze

    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.

    Ladislav Hagara | Komentářů: 0
    25.7. 13:33 | Nová verze

    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.

    Ladislav Hagara | Komentářů: 0
    24.7. 14:33 | IT novinky

    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.

    Ladislav Hagara | Komentářů: 1
    24.7. 14:22 | Nová verze

    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.

    Ladislav Hagara | Komentářů: 0
    24.7. 13:33 | IT novinky

    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.

    Ladislav Hagara | Komentářů: 2
    24.7. 06:00 | IT novinky

    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.

    Ladislav Hagara | Komentářů: 9
    23.7. 21:55 | Komunita

    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).

    Ladislav Hagara | Komentářů: 2
    23.7. 21:22 | Bezpečnostní upozornění

    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.

    Ladislav Hagara | Komentářů: 0
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (29%)
     (26%)
     (6%)
     (5%)
     (4%)
     (1%)
     (3%)
     (26%)
    Celkem 143 hlasů
     Komentářů: 17, poslední včera 20:08
    Rozcestník

    Ultra{Connect,Nav,Bay} až do zblbnutí

    7.6.2009 22:13 | Přečteno: 1171× | ThinkPad

    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 :_).

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    8.6.2009 00:37 Jan Grmela | skóre: 45 | blog: Kilo šťávy z lachtana | Brno
    Rozbalit Rozbalit vše Re: Ultra{Connect,Nav,Bay} až do zblbnutí

    A na ThinkWiki s nimi! :-)

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.