Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/02/2008, à 08:12

torturedutopian

Limitateur / compteur de durée de session ?

Salut à tous !

Pas dans un but de flicage, mais pour mon utilisation personnelle, ayant un mal fou à restreindre mon utilisation de l'outil informatique, je cherche une solution pour comptabiliser le temps pendant lequel je suis connecté sous ma session par jour, et éventuellement pour en faire des stats / me prévenir en cas de durée trop longue / voire me déconnecter sauvagement wink

Est-ce que vous connaîtriez un moyen de faire cela ?

Sinon j'imagine qu'au pire, il doit y avoir moyen de faire un petit script qui s'interfacerait avec Conky.

Bref, j'attends vos suggestions wink Merci de m'avoir lu !

Hors ligne

#2 Le 19/02/2008, à 11:25

geenux

Re : Limitateur / compteur de durée de session ?

tu dois pouvoir faire un script.
Qulques piste:
-au démarrage de la session, enregistrer l'heure
-faire s'exécuter le script toutes les X minute (avec cron)
-comparer l'heure courant de l'heure de début et en fonction de ça, afficher des alertes (avec zenity par exemple), fermer la session ...

Hors ligne

#3 Le 19/02/2008, à 11:49

iuchiban

Re : Limitateur / compteur de durée de session ?

Ou alors un script qui au démarrage te demande :
- soit la durée d'utilisation autorisée (genre 2H)
- soit l'heure à  laquelle tu veux arrêter (genre 23H)
- 10min avant te popup et prévient qu'il reste que 10 Minutes
- 5Minute idem
- 1 minute : demande d'enregistrer le travail et lance le décompte.

Je crois que je vais m'y mettre parce que en ce moment, je fais du 00H30-6H30 de sommeil, et c'est dur au boulot après big_smile


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#4 Le 25/02/2008, à 15:05

torturedutopian

Re : Limitateur / compteur de durée de session ?

Luchiban : as-tu avancé dans ton script ? smile

Hors ligne

#5 Le 25/02/2008, à 15:48

iuchiban

Re : Limitateur / compteur de durée de session ?

iuchiban!!!!!:mad:

Bah non, j'ai pas vraiment bossé la dessus -_-"

Mais bon, promis je m'y mets (je sais pas quand, mais je m'y mets big_smile)


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#6 Le 25/02/2008, à 17:37

torturedutopian

Re : Limitateur / compteur de durée de session ?

Oops, je vois pas très clair, j'avais hésité en plus wink

C'est assez étonnant, mais j'ai googlé des heures entières et je n'ai trouvé aucun bout de soft qui fasse grossièrement ce que nous cherchons smile

Hors ligne

#7 Le 28/02/2008, à 19:05

torturedutopian

Re : Limitateur / compteur de durée de session ?

[mis à jour le 02/03]

Bon finalement j'ai pondu un p'tit truc vraiment lamentable en python (appris pour l'occasion, hum),  dites-moi ce que vous en pensez wink

#!/usr/bin/python
# -*- coding: utf-8 -*- 

import time, pickle, pynotify

# Configuration
quotat = 150 # nombre de minutes autorisées par jour
delaiInitial = 20 # délai avant démarrage du script en secondes, pour exclure le temps d'ouverture de la session
delaiMiseAJour = 1 # délai avant mise à jour du fichier en minutes - également utilisé pour la notification une fois le délai dépassé
delaiNotification = 10 # délai avant notification en minutes (multiple de delaiMiseAJour)
dureeNotificationNormale = 15 # en secondes
dureeNotificationDepassement = 5 # en secondes
nomFichier = "/home/xxx/.limitateurDuree.txt" # fichier contenant le temps d'utilisation du micro (sur une journée)
nomFichierJournal = "/home/xxx/logUtilisationPC.txt" # fichier contenant les cumuls d'utilisations quotidiennes

# Variables
nbMisesAJourAvantNotification = delaiNotification / delaiMiseAJour
compteurMisesAJour = nbMisesAJourAvantNotification

def soustraction((h1,m1), (h2,m2)):
	h = h1 - h2
	if m1 < m2:
		m1 = m1 + 60
		h = h - 1
	m = m1 - m2
	if h < 0: 
		m = 0
		h = 0
	return (h,m)

def addition((h1,m1), (h2,m2)):
	h = h1 + h2
	if (m1 + m2) > 60:
		m1 = m1 - 60
		h = h + 1
	m = m1 + m2
	return (h,m)

def ecritureJournal(cumul):
	f=open(nomFichierJournal, 'a')
	f.write("Le "+str(cumul[0])+"/"+str(cumul[1])+"/"+str(cumul[2])+", "+str(cumul[3])+" heure(s) et "+str(cumul[4])+" minute(s).\n")
	f.close()


pynotify.init("Limitateur de durée de session")

dateDemarrage = time.localtime()

# Lecture des dates précédemment sauvegardées
try:
	f=open(nomFichier, 'r')
	cumulPrecedent = pickle.load(f)
	f.close()
except:
        cumulPrecedent = (dateDemarrage.tm_mday, dateDemarrage.tm_mon, dateDemarrage.tm_year, 0, 0)

# A-t-on changé de jour depuis la dernière session ?

if (dateDemarrage.tm_mday != cumulPrecedent[0]) or (dateDemarrage.tm_mon != cumulPrecedent[1]):
	ecritureJournal(cumulPrecedent)
	cumulPrecedent = (dateDemarrage.tm_mday, dateDemarrage.tm_mon, dateDemarrage.tm_year, 0, 0)
cumulJournee = cumulPrecedent

time.sleep(delaiInitial)
tempsEcoule = (0, 0)

while 1:
	compteurMisesAJour = compteurMisesAJour + 1
	tempsRestant = soustraction((quotat/60,quotat%60),(cumulJournee[3], cumulJournee[4]))
	if tempsRestant == (0,0):
		n = pynotify.Notification("!! TEMPS ÉCOULÉ !!", str(cumulJournee[3])+" heure(s) "+str(cumulJournee[4])+ "minute(s) utilisées sur les "+str(quotat/60)+" heure(s) "+str(quotat%60)+" minute(s) quotidiennes. Veuillez quitter la session !")
		n.set_timeout(dureeNotificationDepassement * 1000)
		n.set_urgency(pynotify.URGENCY_CRITICAL)
		n.show()
	else:
		if compteurMisesAJour >= nbMisesAJourAvantNotification:
			compteurMisesAJour = 0
			n = pynotify.Notification("Temps disponible", str(tempsRestant[0])+" heure(s) "+str(tempsRestant[1])+ "minute(s) sur les "+str(quotat/60)+" heures "+str(quotat%60)+" minutes quotidiennes.")
			n.set_timeout(dureeNotificationNormale * 1000)
			n.set_urgency(pynotify.URGENCY_NORMAL)
			n.show()

	time.sleep(delaiMiseAJour * 60)

	# On vérifie si le jour a changé depuis le démarrage de la session :
	# Si oui, on remet le compteur à zéro et on écrit dans le log l'utilisation totale du jour précédent
	# Si non, on actualise le compteur en faisant la différence heure actuelle - heure de démarrage
 
	dateActuelle = time.localtime()

	if (dateActuelle.tm_mday == dateDemarrage.tm_mday):
		tempsEcoule = soustraction((dateActuelle.tm_hour,dateActuelle.tm_min),(dateDemarrage.tm_hour,dateDemarrage.tm_min))
		temp = addition((tempsEcoule[0], tempsEcoule[1]),(cumulPrecedent[3],cumulPrecedent[4]))
		cumulJournee = (dateActuelle.tm_mday, dateActuelle.tm_mon, dateActuelle.tm_year, temp[0], temp[1])
	else:
		# changement de journée
		ecritureJournal(cumulJournee)
		cumulJournee = (dateActuelle.tm_mday, dateActuelle.tm_mon, dateActuelle.tm_year, 0 ,0)
		cumulPrecedent = (dateActuelle.tm_mday, dateActuelle.tm_mon, dateActuelle.tm_year, 0 ,0)
		dateDemarrage = dateActuelle

	f=open(nomFichier, 'w')
	pickle.dump(cumulJournee, f)
	f.close()

Ça affiche une notification libnotify (délai programmable), qui devient très insistante une fois le quotat quotidien dépassé. Ça log aussi le temps d'utilisation total / journée. (faudrait que je fasse ça aussi / mois et / an pour voir les fluctuations à long terme tongue )

Mais c'est pas bien méchant : ça verrouille rien et on peut réinitialiser en effaçant le fichier temporaire, l'effet se veut psychologique wink

Dernière modification par torturedutopian (Le 02/03/2008, à 01:49)

Hors ligne

#8 Le 28/08/2008, à 12:29

Loren

Re : Limitateur / compteur de durée de session ?

Bonjour!
Aaaah! On a le même problème!
Merci pour le "truc", mais moi je suis complètement ignare en manipulation de l'ordi, donc comment ça s'utilise le "truc" en question??? Et est-ce que depuis février vous auriez trouvé quelque chose de mieux qui serve à limiter la session?
Merci!

#9 Le 28/08/2008, à 19:50

kimort

Re : Limitateur / compteur de durée de session ?

Il me le faut aussi comme ça je pourrais prouver que j'y passe pas tant de temps que ça!
...
Quoi que...

Hors ligne

#10 Le 30/08/2008, à 20:28

Tuxmouraille

Re : Limitateur / compteur de durée de session ?

Salut j'adore.

Est ce qu'il serait possible d'y ajouter quelques fonctionnalités?
Est ce que le message pourrait apparaitre en gros au milieu de l'écran?
Pouvoir le lancer avec une commande qui ouvrira un dialogue invitant à indiquer les temps d'utilisation souhaité?
Et peut être, un fichier de configuration plutôt que d'avoir les valeurs dans le scripte?

Une fonction pour fermer l'ordinateur:"Tu passe trop de temps sur l'ordi. Ton temps est écoulé. Ferme tes applications. L'ordinateur sera fermé dans 5 min."


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne