2009-08-19 7 views
5

पृष्ठभूमि के लिए, मैं डेबियन लेनी चला रहा हूं, और इसे गनोम और फ्लक्सबॉक्स दोनों के साथ करने की कोशिश की है।रूट विंडो पर जाने के बाद एक्स चोक क्यों करता है

वैसे भी, मैं कैसे डेस्कटॉप पर आकर्षित करने के लिए पर देख रहा हूँ, और मैंने पाया और यहाँ इस कोड की कोशिश की: एक्स (नियंत्रण सी मारकर), http://blog.prashanthellina.com/2007/08/24/drawing-on-your-desktop/

यह ठीक काम किया है, यह समाप्त पर छोड़कर नई विंडो बनाने की क्षमता खो देता है।

मैंने सोचा था कि शायद समस्या था pygame कुछ संसाधन को रिहा नहीं है, इसलिए मैं जाल करने के लिए कोड को मारने के संकेत के एक ब्लॉक में कहा, मुझे दे रही है निम्नलिखित:

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

और इसलिए मैं फिर से कोशिश की। इंटरप्ट हैंडलर में प्रिंट स्टेटमेंट मुझे बताता है कि जब मैं बाहर निकलता हूं तो हैंडलर चलाता है, लेकिन मुझे अभी भी वही समस्या है। और इससे भी दिलचस्प बात यह है कि एक्स चलने के दौरान कोई समस्या नहीं है। यह केवल इसे समाप्त करने के बाद ही है।

क्या किसी के पास कोई विचार हो सकता है कि क्या हो रहा है, और मैं कोड को ठीक करने के लिए क्या कर सकता हूं, इसलिए यह मेरे एक्स सत्र को बर्बाद नहीं करता है? अग्रिम में धन्यवाद।

उत्तर

1

प्रश्न, विचारों & तुएं:

  1. आप एक टर्मिनल ऊपर है, तो इससे पहले कि आप एक -c कोशिश, आप अभी भी उस में के बाद टाइप कर सकते हैं? यदि हां, तो आपके सत्र या विंडो प्रबंधक में कोई समस्या हो सकती है, न कि एक्स सर्वर।
  2. क्या आपने Ctrl-Alt-Backspace को आजमाया है? क्या यह आपकी समस्या को ठीक करता है?
  3. क्या gtk-window-decorator और x-session-manager अभी भी चल रहे हैं?

पायगैम आम तौर पर एक खिड़की से बाहर चला जाता है और आमतौर पर खुद के बाद सफाई करने की कोशिश करता है। आपने pygame.display.quit() पर एक स्पष्ट कॉल जोड़ा है, लेकिन मुझे नहीं लगता कि यह कुछ भी बदलता है - pygame SDL_WINDOWID चर द्वारा निर्दिष्ट विंडो को हटाने का प्रयास करता है। असल में आपकी रूट विंडो को हटाने में सफल होना शायद एक बुरी चीज है। मैं अनुमान लगाने जा रहा हूं कि जिस लड़के से आप इसे प्राप्त कर चुके हैं, उबंटू चल रहा है, pygame खिड़की को हटाने में विफल रहता है क्योंकि उसके पास अनुमति नहीं है। आप अपने ओएस पर हो सकता है।

चूंकि आपकी रूट विंडो को मारना बुरा है, रूट रूट के नियंत्रण को वापस नॉटिलस (gnome) पर पुनर्स्थापित करने के बारे में कैसे? gconftool-2 --type bool --set /apps/nautilus/preferences/show_desktop true जैसे कुछ?

+0

प्रश्नों के उत्तर में: 1.) मैं अभी भी टर्मिनल में टाइप कर सकता हूं, हालांकि अजीब चीजें होने लगती हैं। उदाहरण के लिए, जैसे ही मैं फ़ायरफ़ॉक्स में यह टिप्पणी टाइप करता हूं, मेरे पास कर्सर नहीं है। 2.) हां, यह समस्या को हल करता है। 3.) मुझे यकीन नहीं है कि कैसे बताना है। मैंने पीएस कुल्हाड़ी की कोशिश की है grep gtk और ps ax | grep सत्र, लेकिन मुझे उन प्रक्रियाओं में से कोई भी दिखाई नहीं देता है। और वास्तव में, फ्लक्सबॉक्स में चल रहा है, मैं नॉटिलस का उपयोग नहीं कर रहा हूं, इसलिए gconftool से संबंधित सामान अप्रासंगिक लगता है। लेकिन किसी भी मामले में, सलाह के लिए धन्यवाद। – BigBeagle

+0

ठीक है, आपने gnome और fluxbox दोनों का उल्लेख किया है। मुझे यह उल्लेख करना चाहिए था कि मेरी सभी टिप्पणियां gnome की ओर निर्देशित की गई थीं। उसके लिए माफ़ करना। यदि आप gnome चला रहे हैं, तो आप * निश्चित रूप से * उन प्रक्रियाओं को चलाना चाहिए। साथ ही, फ़ाइल ब्राउज़र के रूप में काम करने के अलावा, नॉटिलस आपके (gnome) डेस्कटॉप का प्रबंधन करता है। – DaveParillo

संबंधित मुद्दे

 संबंधित मुद्दे