バックグラウンドでは、私は を実行しています。これはGNOMEとFluxboxの両方で試しました。ルートウィンドウに描画した後にXが鳴るのはなぜですか
とにかく、私はデスクトップ上に描画する方法を見てきた、と私が見つけたと、ここで、このコードを試してみました: http://blog.prashanthellina.com/2007/08/24/drawing-on-your-desktop/
それは(コントロールCを押すことで)それを終了する時に除いて、うまく働いた、X新しいウィンドウを作成する機能が失われます。
私は多分問題はpygameのいくつかのリソースを解放していなかったと思っていたので、私は私に次のことを与えて、トラップするコードのブロックにkillシグナルを追加しました:
"""
Run the following command in the shell before executing this script
export SDL_WINDOWID=`xwininfo -root|grep "id:"|sed 's/^.*id: //'|sed 's/ (.*$//'`
"""
import pygame
import sys
import random
import time
import signal
pygame.init()
window = pygame.display.set_mode((1280, 1024))
screen = pygame.display.get_surface()
def handle_sigint(signum, frame):
"""I want to ensure resources are released before bailing."""
print("SIGINT received.");
pygame.display.quit()
pygame.quit()
sys.exit(0)
# Set handler to catch C^C Interupts
signal.signal(signal.SIGINT, handle_sigint)
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit(0)
x = random.choice(range(640))
y = random.choice(range(480))
radius = random.choice(range(100))
col_r = random.choice(range(255))
col_g = random.choice(range(255))
col_b = random.choice(range(255))
time.sleep(.03)
rect = pygame.draw.circle(screen, (col_r, col_g, col_b), (x,y), radius)
pygame.display.update(rect)
そして私は再び試みました。割り込みハンドラのprintステートメントは、終了時にハンドラが実行されることを通知しますが、私はまだ同じ問題を抱えています。さらに興味深いことに、Xは実行中に問題はありません。それはそれを終了した後です。
誰もが何が起こっているか考えているかもしれませんし、私のXセッションを壊さないようにコードを修正するために何ができるのでしょうか?前もって感謝します。
質問への回答: 1.私はまだ端末に入力することができますが、奇妙なことが起こり始めます。たとえば、Firefoxでこのコメントを入力すると、カーソルがありません。 2.)はい、問題が修正されます。 3)私はどのように伝えるべきかわかりません。私はps axを試しました| grep gtkとps ax | grepセッションが表示されますが、どちらのプロセスも表示されません。 実際、フラックスボックスで走っていますが、ノーチラスを使用していないので、gconftoolに関するものは無関係です。しかし、いずれにしても、アドバイスをいただきありがとうございます。 – BigBeagle
さて、あなたはgnomeとfluxboxの両方に言及しました。私はすべてのコメントがgnomeに向けられていると述べていたはずです。申し訳ありません。 gnomeを実行しているなら、間違いなく実行中のプロセスが見えるはずです。また、ファイルブラウザとして機能するだけでなく、(gnome)デスクトップを管理します。 – DaveParillo