/usr/share/software-center/softwarecenter/backend/scagent.py
इस फ़ंक्शन की शुरुआत को खोलें और संपादित करें, ताकि यह कहे:
def query_exhibits(self):
import urllib, json
class Obj:
def __init__(self, obj):
self.obj = obj
def __getattr__(self, name):
if name[:2] == "__": return object.__getattr__(self, name)
return self.obj[name]
self.emit("exhibits", [Obj(x) for x in json.loads(urllib.urlopen("http://localhost:8800/cgi-bin/bannerlist.py").read())])
return
आप बाकी को छोड़ सकते हैं जैसा कि है, यह कभी नहीं पहुंचेगा।
यदि आप अपने में स्क्रिप्टिंग समर्थन चाहते हैं <iframe>
, तो संपादित करें
/usr/share/software-center/softwarecenter/ui/gtk3/widgets/exhibits.py
और खोजो settings.set_property("enable-scripts", False)
। बदलें False
करने के लिए True
।
अब /var/www/cgi-bin/bannerlist.py
इसे निष्पादित करें और बनाएं:
#!/usr/bin/env python
import json
print("Content-type: application/json\n")
print(json.dumps([
{
"html": "<iframe src='file:/tmp/test.html'></iframe>",
"title_translated": "Hey dawg",
"click_url": "http://4chan.org",
"package_names": ("gimp"),
"banner_urls": ["file:/"],
"published": True
},
{
"html": "<iframe src='http://localhost:8800/cgi-bin/banner.py'></iframe>",
"title_translated": "Hey dawg",
"click_url": "http://4chan.org",
"package_names": ("gimp"),
"banner_urls": ["file:/"],
"published": True
}
]))
यह एक उत्पन्न बैनर सूची प्रदर्शित करता है।
अब /var/www/cgi-bin/banner.py
इसे निष्पादित करें और बनाएं:
#!/usr/bin/env python3
import time
print("Content-type: image/svg+xml\n")
print("""
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<rect width="300" height="100"
style="fill:rgba(0,0,255,0.5);stroke-width:1;stroke:rgba(0,0,0,0.5)"/>
<text x="0" y="25" fill="black">Time is """ + str(time.time()) + """</text>
</svg>
""")
यह एक उत्पन्न बैनर प्रदर्शित करता है।
आपको सॉफ़्टवेयर-केंद्र कैश साफ़ करने की आवश्यकता हो सकती है। आप उस का उपयोग कर सकते हैं rm -rf ~/.cache/software-center
।
जाहिर है कि आपको /tmp/test.html
काम करने के लिए पहले बैनर के लिए कुछ करने की जरूरत है ।
cgi-bin
यह काम करने के लिए आपको 8800 पर चलने वाले वेबसर्वर की भी आवश्यकता है । यदि आपके पास यह नहीं है, तो इसे Bash में चलाएं:
cd /var/www
python -c "import BaseHTTPServer as h, CGIHTTPServer as c;
i = c.CGIHTTPRequestHandler;
i.cgi_directories = ['/cgi-bin'];
h.HTTPServer(('', 8800),i).serve_forever()"
आपको iframe
इसे भरने के लिए स्थान बनाने के लिए स्टाइल करने की आवश्यकता है , लेकिन आपने यह समझ लिया है।