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í
×
    dnes 16:44 | Nová verze

    ESP-IDF (Espressif IoT Development Framework), tj. oficiální vývojový framework pro vývoj aplikací na mikrokontrolérech řady ESP32, byl vydán v nové verzi 6.0. Detaily na portálu pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    dnes 12:33 | Nová verze

    DeepMind (Alphabet) představila novou verzi svého multimodálního modelu, Gemma 4. Modely jsou volně k dispozici (Ollama, Hugging Face a další) ve velikostech 5-31 miliard parametrů, s kontextovým oknem 128k až 256k a v dense i MoE variantách. Modely zvládají text, obrázky a u menších verzí i audio. Modely jsou optimalizované pro běh na desktopových GPU i mobilních zařízeních, váhy všech těchto modelů jsou uvolněny pod licencí Apache 2.0. Návod na spuštění je už i na Unsloth.

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 03:55 | Nová verze

    Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).

    Ladislav Hagara | Komentářů: 0
    včera 19:55 | Zajímavý projekt

    Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.

    |🇵🇸 | Komentářů: 0
    včera 18:22 | Nová verze

    Byla vydána nová verze 10.3 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu bezpečnostních oprav, vylepšení funkcí a oprav chyb.

    Ladislav Hagara | Komentářů: 0
    včera 15:11 | Zajímavý software

    Cloudflare představil open source redakční systém EmDash. Jedná se o moderní náhradu WordPressu, která řeší bezpečnost pluginů. Administrátorské rozhraní lze vyzkoušet na EmDash Playground.

    Ladislav Hagara | Komentářů: 3
    včera 14:00 | Komunita

    Bratislava OpenCamp 2026 zverejnil program a spustil registráciu. Štvrtý ročník komunitnej konferencie o otvorených technológiách prinesie 19 prednášok na rôzne technologické témy. Konferencia sa uskutoční v sobotu 25. apríla 2026 v priestoroch FIIT STU v Bratislave.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Humor

    Na iVysílání lze zhlédnout všechny díly kultovního sci-fi seriálu Červený trpaslík.

    Ladislav Hagara | Komentářů: 5
    včera 04:44 | IT novinky

    Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl v březnu 5,33 % (Windows -4,28 %, OSX +1,19 %, Linux +3,10 %). Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 24,48 %. Procesor AMD používá 67,48 % hráčů na Linuxu.

    Ladislav Hagara | Komentářů: 3
    1.4. 23:22 | IT novinky

    Společnost Apple slaví padesáté narozeniny. Založena byla 1. dubna 1976.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (30%)
     (3%)
     (5%)
     (1%)
     (14%)
     (23%)
    Celkem 1211 hlasů
     Komentářů: 29, poslední 31.3. 11:17
    Rozcestník

    Dotaz: zjisteni aktivity

    7.5.2009 12:03 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    zjisteni aktivity
    Přečteno: 265×

    Protože už delší dobu dělám v PHPku, tak jsem se rozhodnul, že bych zkusil i něco jiného třeba v Pythonu, nebo C.

    Chtěl bych si naprogramovat daemona powersave(v případě úspěchu bych ho samozřejmě zveřejnil), který by kontroloval aktivitu myši a klávesnice, prostě nějak jako fungujou gnome-power-manager, nebo kpowersave, aby po určité době něčinnosti spustil skript na uspani PC.

    Tyto dva nástroje nepoužívám, protože si nechci na Gentoo instalovat gnome, nebo KDE knihovny. Takze jsem se rozhodnul napsat něco vlastního, ale nevím od čeho se mám odpíchnout, jestli existují nějaké funkce, na zjištění aktivity uživatele, jestli to jde nějak zjistit.

    Odpovědi

    Fuky avatar 7.5.2009 16:24 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: zjisteni aktivity

    Neaktivitu uživatele lze zjistit např. pomocí fce XScreenSaverQueryInfo, tady máš ukázku v Pythonu, která využívá přímo C knihovny libX11.so a libXss.so.1 (tz. je z toho vidět i jak by se to dělalo přímo v C), get X idle time with python:

    #!/usr/bin/python
    
    
    import ctypes, os
    
    class XScreenSaverInfo(ctypes.Structure):
        """ typedef struct { ... } XScreenSaverInfo; """
        _fields_ = [('window',      ctypes.c_ulong), # screen saver window
                    ('state',       ctypes.c_int),   # off,on,disabled
                    ('kind',        ctypes.c_int),   # blanked,internal,external
                    ('since',       ctypes.c_ulong), # milliseconds
                    ('idle',        ctypes.c_ulong), # milliseconds
                    ('event_mask',  ctypes.c_ulong)] # events
    
    class XScreenSaverSession(object):
        def __init__( self):
            self.xlib = ctypes.cdll.LoadLibrary( 'libX11.so')
            self.dpy = self.xlib.XOpenDisplay( os.environ['DISPLAY'])
            if not self.dpy:
                raise Exception('Cannot open display')
            self.root = self.xlib.XDefaultRootWindow( self.dpy)
            self.xss = ctypes.cdll.LoadLibrary( 'libXss.so.1')
            self.xss.XScreenSaverAllocInfo.restype = ctypes.POINTER(XScreenSaverInfo)
            self.xss_info = self.xss.XScreenSaverAllocInfo()
    
        def get_idle( self):
            self.xss.XScreenSaverQueryInfo( self.dpy, self.root, self.xss_info)
            return self.xss_info.contents.idle / 1000
    
    if __name__ == "__main__":
        s = XScreenSaverSession()
        print s.get_idle()
    

    Ovšem získanou hodnotu musíš ještě dále zpracovat kvůli chybě v X serveru, viz kpowersave/src/inactivity.cpp:

    /*!
     * This function workaround a fucking XServer idleTime bug in the 
     * XScreenSaverExtension, if dpms is running. In this case always the
     * current dpms-state time is extracted from the current idletime.
     * This mean: XScreenSaverInfo->idle is not the time since the last
     * user activity, as descriped in the header file of the extension.
     * This result in SUSE bug # and sf.net bug #
     *
     * Workaround: check if if XServer is in a dpms state, check the 
     *             current timeout for this state and add this value to 
     * 	       the current idle time and return.
     *
     * \param _idleTime a unsigned long value with the current ideletime fromm
     *                  XScreenSaverInfo->idle
     * \return a unsigned long with the corrected idletime
     */
    unsigned long inactivity::workaroundCreepyXServer( unsigned long _idleTime ){
    	kdDebugFuncOut(trace);
    
    	int dummy;
    	CARD16 standby, suspend, off;
    	CARD16 state;
    	BOOL onoff;
    
    	Display *dpy = qt_xdisplay();
    
    	kdDebug() << "Current idleTime: " << _idleTime << endl;
    
    	if (DPMSQueryExtension(dpy, &dummy, &dummy)) {
    		if (DPMSCapable(dpy)) {
    			DPMSGetTimeouts(dpy, &standby, &suspend, &off);
    			DPMSInfo(dpy, &state, &onoff);
    
    			if (onoff) {
    				switch (state) {
    					case DPMSModeStandby:
    						kdDebug() << "DPMS enabled. Monitor in Standby. Standby: "
    							  << standby << " sec" << endl;
    						// this check is a littlebit paranoid, but be sure
    						if (_idleTime < (unsigned) (standby * 1000))
    							_idleTime += (standby * 1000);
    						break;
    					case DPMSModeSuspend:
    						kdDebug() << "DPMS enabled. Monitor in Suspend. Suspend: "
    							  << suspend << " sec" << endl;
    						if (_idleTime < (unsigned) ((suspend + standby) * 1000))
    							_idleTime += ((suspend + standby) * 1000);
    						break;
    					case DPMSModeOff:
    						kdDebug() << "DPMS enabled. Monitor is Off. Off: "
    							  << off << " sec" << endl;
    						if (_idleTime < (unsigned) ((off + suspend + standby) * 1000))
    							_idleTime += ((off + suspend + standby) * 1000);
    						break;
    					case DPMSModeOn:
    					default:
    						break;
    				}
    			}
    		} 
    	}
    
    	kdDebug() << "Corrected idleTime: " << _idleTime << endl;
    	kdDebugFuncOut(trace);
    	return _idleTime;
    }
    

    16.6.2009 19:37 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Rozbalit Rozbalit vše Re: zjisteni aktivity
    Když se pokouším DPMS část přepsat do Pythonu, tak mi do po prvním volání DPMS funkce hlásí Segmentation fault:
    	def get_idle_worlkaround(self):
    		dpms=ctypes.cdll.LoadLibrary('libXext.so');
    		if dpms.DPMSQueryExtension(self.dpy,None,None):
    			if dpms.DPMSCapable(self.dpy)==1:
    				standby=suspend=off=state=0;
    				onoff=False;
    				dpms.DPMSGetTimeouts(self.dpy,standby,suspend,off);
    				dpms.DPMSInfo(self.dpy,state,onoff);
    				print "STATE";
    				print state;
    
    
    Co dělám špatně?

    Založit nové vláknoNahoru

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

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