Ubuntuの一定時間後に画面をロックするアプリケーション


10

定義された時間(例えば30分)後にコンピュータをロックするUbuntu用のアプリケーションはありますか?子供が漫画を見る時間を制限するためにそれが必要です。たとえば、30分間視聴した後、親がロックを解除する必要があるPCロック。

Windowsでは、Eyes Relaxアプリを使用しました。黒い画面と緑色の進行状況バー(PCのロックを解除するまでの残り時間)が表示され、ロックを上書きするにはパスワードが必要です。


以下の答えのいずれかがあなたに役に立ったかどうか知りたいですか?
WinEunuuchs2Unix 2016年

機会があったらテストし、答えをマークします
Dmitriy

私はちょうど使用1であってもよく似た質問と回答)を発見したaskubuntu.com/questions/715721/... 2)askubuntu.com/questions/68918/...及び3)askubuntu.com/questions/696620/...
WinEunuuchs2Unix

回答:


15

2018年6月4日更新

呼び出されるはるかに優れたプログラムmulti-timerが作成されました:異なるアラームを同時にセットアップするタイマー

画面ロックタイマー

systray.gif

サードパーティアプリケーションの代わりに独自の画面ロックタイマーを作成する

これを行うサードパーティアプリケーションがありますが、独自のアプリケーションを作成できます。手順の概要:

  • geditを使用してスクリプトを作成する lock-screen-timer
  • このウィンドウからコードをコピーして貼り付けます lock-screen-timer
  • lock-screen-timer実行可能ファイルとしてマーク
  • 試して!
  • Nautilusを構成してbashスクリプトを実行する
  • デスクトップショートカットリンクを作成する
  • 残り時間を監視

編集1(2016年11月19日):最終版。メッセージとサウンドを使用して、残り15、10、5、3、2、および1分の差し迫ったロック警告。zenityを使用して分数を取得します(デフォルトは30)。

編集2(2016年11月20日):以前のスリープ状態のスクリプトを強制終了するようにコードを変更。

編集3(2017年1月20日):以前のスクリプトコードの強制終了を修正。以前のバージョンがすでに実行されていて終了している場合は、情報メッセージを追加します。

編集4(2017年2月4日):デスクトップアイコンを再度クリックしなくても、ループ内で複数のカウントダウンを実行します。すなわち、洗濯の夜-すすぎサイクル(布地柔軟剤)に16分、乾燥機に負荷をかける13分、乾燥機から取り出す58分。

編集5(2017年2月11日):残り分数をに書き込み /tmp/lock-screen-timer-remainingます。これにより、他のプログラムは画面がロックされるまでの時間を表示できます。

編集6(2017年8月7日):ネットワーク上の複数のユーザーをサポートするように/tmp/作業ファイルを変更~/.します。

編集:スクリプトはogg123に依存してリマインダーサウンドを再生することに注意してください。このプログラムは、ユニバースリポジトリのvorbis-toolパッケージの一部です。ここに示すスクリプトは、ここにあるhotplugtvスクリプトも使用しようとします

編集8(2017年11月12日): WSL(Linux用Windows 10サブシステム)サポートを追加します。WSLでLinux GUI を追加するかVcXsrvubuntu-desktopまたはxubuntu-desktop使用する必要があることに注意してください。Windows 10のシステムトレイ/通知領域の残り時間の表示にindicator-sysmonitorは、Linuxの機能を補完する必要があります。将来のpowershell.exeスクリプトは、Windows 10の通知領域をサポートする予定です。

編集9(2018年2月19日):\回転するピザの「|、/、─、\」シーケンスが欠落しているアニメーションを修正しました。

geditを使用してスクリプトを作成する lock-screen-timer

+ + をTerminal使用して開き、次のように入力します。CtrlAltT

gedit lock-screen-timer

以下のウィンドウからコードをコピーして貼り付けます lock-screen-timer

この画面に戻り、次のコードを強調表示してCtrl+ を押してコピーしますC

#!/bin/bash

# NAME: lock-screen-timer
# PATH: $HOME/bin
# DESC: Lock screen in x minutes
# CALL: Place on Desktop or call from Terminal with "lock-screen-timer 99"
# DATE: Created Nov 19, 2016. Last revision May 30, 2018.
# UPDT: Updated to support WSL (Windows Subsystem for Linux)
#       Remove hotplugtv. Replace ogg with paplay.
#       Cohesion with multi-timer. New sysmonitor indicator style.

# NOTE: Time defaults to 30 minutes.
#       If previous version is sleeping it is killed.
#       Zenity is used to pop up entry box to get number of minutes.
#       If zenity is closed with X or Cancel, no screen lock timer is launched.
#       Pending lock warning displayed on-screen at set intervals.
#       Write time remaining to ~/.lock-screen-timer-remaining

MINUTES="$1" # Optional parameter 1 when invoked from terminal.

# if no parameters set default MINUTES to 30
if [ $# == 0 ]; then
    MINUTES=30
fi

DEFAULT="$MINUTES" # When looping, minutes count down to zero. Save deafult for subsequent timers.

# Check if lock screen timer already running
pID=$(pgrep -f "${0##*/}") # All PIDs matching lock-screen-timer name
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy ($$$)
if [ "$PREVIOUS" != "" ]; then
    kill "$PREVIOUS"
    rm ~/.lock-screen-timer-remaining
    zenity --info --title="Lock screen timer already running" --text="Previous lock screen timer has been terminated."
fi

# Running under WSL (Windows Subsystem for Linux)?
if cat /proc/version | grep Microsoft; then
    WSL_running=true
else
    WSL_running=false
fi


while true ; do # loop until cancel

    # Get number of minutes until lock from user
    MINUTES=$(zenity --entry --title="Lock screen timer" --text="Set number of minutes until lock" --entry-text="$DEFAULT")

    RESULT=$? # Zenity return code
    if [ $RESULT != 0 ]; then
        break ; # break out of timer lock screen loop and end this script.
    fi

    DEFAULT="$MINUTES" # Save deafult for subsequent timers.
    if [[ $MINUTES == 0 ]] || [[ $MINUTES == "" ]]; then
        break ; # zero minutes considered cancel.
    fi

    # Loop for X minutes, testing each minute for alert message.
    (( ++MINUTES )) 
    while (( --MINUTES > 0 )); do
        case $MINUTES in 1|2|3|5|10|15|30|45|60|120|480|960|1920)
            notify-send --urgency=critical --icon=/usr/share/icons/gnome/256x256/status/appointment-soon.png "Locking screen in ""$MINUTES"" minute(s)." ;
            if [[ $WSL_running == true ]]; then  
                powershell.exe -c '(New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync();'
            else
               paplay /usr/share/sounds/freedesktop/stereo/complete.oga ;
            fi
           ;;
        esac;

        # Record number of minutes remaining to file other processes can read.
        echo "Lock screen in: $MINUTES Minutes" > ~/.lock-screen-timer-remaining

        sleep 60

    done

    rm ~/.lock-screen-timer-remaining # Remove work file others can see our progress with

    if [[ $WSL_running == true ]]; then  
        # Call lock screen for Windows 10
        rundll32.exe user32.dll,LockWorkStation
    else
        # Call screen saver lock for Ubuntu versions > 14.04.
        dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
    fi

done # End of while loop getting minutes to next lock screen

exit 0 # Closed dialog box or "Cancel" selected.

次に、空のgeditウィンドウに切り替えて、Ctrl+ を使用してコードを貼り付けますV。ファイルを保存し、エディターを終了してコマンドプロンプトに戻ります。

lock-screen-timer実行可能ファイルとしてマーク

次のように入力して、スクリプトを実行可能にする必要があります。

chmod +x lock-screen-timer

試して!

GUIからスクリプトを呼び出す前に、ターミナルからスクリプトを呼び出して、エラーメッセージが表示されているかどうかを確認します。

~/lock-screen-timer

分数の入力を求められます。

画面ロックタイマー

必要な分数を設定し、[OK]をクリックしてタイマーを開始します。残り時間が15、10、5、3、2、1分になると、システム音が聞こえ、画面がロックされるタイミングを知らせるメッセージが表示されます。画面がロックされたら、パスワードを入力して画面のロックを解除する必要があります。

Nautilusを構成してbashスクリプトを実行する

Nautilusは、ファイル表示ウィンドウまたはデスクトップ上のリンクであるときに実行可能スクリプトをダブルクリックしたときに何が起こるかを定義します。通常の動作では、を使用してスクリプトを編集しますgedit。この動作が実行されるように変更したいと思います。

Nautilusを起動し、を含むディレクトリに移動しlock-screen-timerます。それを1回左クリックしてフォーカスを与えます。「ファイル編集...」メニューが表示されるまで、トップメニューバーにマウスを合わせます。

  1. Editドロップダウンメニューをクリックします
  2. Propertiesオプションをクリック
  3. Behaviorタブをクリック
  4. 下のラジオオプションボタンを確認します。 Executable Text Files
  5. ラジオボタンをチェック Run executable text files when they are opened

デスクトップショートカットリンクを作成する

前のセクションからlock-screen-timerはまだ焦点があります。そうでない場合は、スクリプトに移動し、スクリプトを1回左クリックしてフォーカスを当てます。次に使用します:

  • ファイルを右クリックすると、コンテキストメニューオプションが表示されます。
  • メニューからを選択しますMake Link
  • という新しいアイコンが表示されLink to lock-screen-timerます。
  • 新しいアイコンを左クリックして、Nautilusからデスクトップにドラッグします。

デスクトップのショートカットリンクをダブルクリックすると、スクリプトが実行されます。分数を取得するためのダイアログボックスが表示されます。2つのボタンが表示さCancelOKます。をクリックしXてウィンドウを閉じると、を選択したのと同じことになりCancelます。

タイマーが実行された後、もう一度それをダブルクリックすると、最初に実行されたコピーが「終了」します。新しいスクリーンロックカウントダウンを開始するか、クリックCancelしてカウントダウンしないようにできます。

システムトレイ/通知領域に残り時間を表示する

ロック画面タイマーの実行中、ファイルに残っている分数が記録されます~/.lock-screen-timer-remainingwatchコマンドでこのファイルを確認するか、この回答の上部に示すように、Ubuntuのシステムトレイ/アプリケーションインジケータバーに表示できます。通知領域に残っている時間を表示するには、このQ&Aの指示に従ってください(BASHをシステムトレイにアプリケーションインジケーターとして表示できますか?)。


kids-tv-timer 1はkids-tv-timer:コマンドが見つかりません。デスクトップまたはタスクバーにショートカットを作成する方法はありますか?それをクリックしてアプリケーションをアクティブ化するには?
Dmitriy

ファイルはそこにあります。ダブルクリックすると、geditで開きます。すべてのコマンドを実行しました
Dmitriy

最後の行をに変更しました~/kids-tv-timer 1。申し訳ありませんが、前に道がありませんでした。やってみて。
WinEunuuchs2Unix 2016年

はい、それは助けました。しかし、あなたは2番目の質問に答えませんでしたか?:)
Dmitriy

@geotavrosビデオの上に表示される進行状況表示ではsleepkids-tv-timerbashスクリプトで使用されるコマンドとはまったく異なるアプローチが必要になります。毎分約10秒間続く通知バブルが「残り29分」、次に「残り28分」などと動画上にポップアップするループを作成することもできます。ただし、オーバーライドするには、ビデオを中断し、kids-tv-timer強制終了して新しい時間割り当てで再起動します。時間切れ、ログオン、再起動はほとんど簡単kids-tv-timerです。
WinEunuuchs2Unix 2016年

1

インターネットカフェの管理に使用されるMkahawaのようなものを使用することもできます。


1
これは複雑すぎるように見えます。サーバーとクライアントがあります。どうすればインストールできますか?
Dmitriy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.