Yan kaydırma duvar kağıdını nasıl ayarlayabilirim?


10

Duvar kağıdımın Super Mario World Yoshi's Island 1'in bir yan kaydırma olmasını istiyorum . Duvar kağıdı baştan sona kaydırıldığında, sorunsuz bir şekilde başlangıca geri dönecektir.

Bunu benim için yapacak bir program veya XML var mı? GNOME Shell kullanıyorum.


6
Yani . . . animasyonlu bir duvar kağıdı mı istiyorsunuz?
Sergiy Kolodyazhnyy

Animasyonlu, ancak yan kaydırma yapabilen bir şey bulamadım.
Soren

3
Ne yapılabilir, bu görüntüyü birden çok "anlık görüntüleri" bölmek ve ayarlanan süre ile geçişler ayarlamak için XML dosyasını kullanmaktır. Bu şekilde, eski konsol oyunlarında olduğu gibi, bir "görünümünüz" olduğunda sınır ötesi ve ekranda başka bir görünüm belirir vb. Bunun iyi bir fikir olacağını mı düşünüyorsun?
Sergiy Kolodyazhnyy

2
Bunun için bir senaryo yazmayı düşünüyorum. Beni birkaç gün sürebilir. Bazı çalışma kodları bulduğumda size haber vereceğim, tamam mı?
Sergiy Kolodyazhnyy

1
Bu isteği XScreenSaver geliştiricisine iletirim. Geliştiricinin dikkate alacağını umuyorum harika bir fikir gibi geliyor. İstediğiniz gibi duvar kağıdı olmaz, ancak "grafik isteklerinizi" karşılamak için alternatif bir çözümdür. Benzer şekilde olanlar / Resimler klasörü de bu şekilde sıraya konabilir. Talebinizi gerçekten çok seviyorum!
WinEunuuchs2Unix

Yanıtlar:


4

Güncelleme 22/10/2016

Komut dosyası, bu sorudaki gereksinimlere uyacak şekilde güncellendi: https://askubuntu.com/a/840381/295286

Geçiş ve süre isteğe bağlı hale getirildi ve varsayılan değerlere sahipti. -sseçeneği, duvar kağıtlarının boyutlandırılması için de eklenir (Sistem Ayarlarındaki Döşeme, Ölçek, Uzatma seçenekleriyle aynı).


Tıpkı yorumlarda söylediğim gibi, görüntüyü eşit boyutlu veya çakışan parçalara ayırmanız ve bunun için bir slayt gösterisi oluşturmanız gerekir. İstediğiniz o görüntünün lisansını bilmiyorum, bu yüzden kesmek için size bırakacağım ( İpucu ).

Ancak, burada yazdığım bir animasyonlu duvar kağıdı jeneratör komut dosyası. Kullanımı çok basit. -hSeçenek ile gösterildiği gibi :

usage: xml_wallpaper_maker.py [-h] -d DIRECTORY -t TRANSITION -l LENGTH [-o]

Serg's XML slideshow creator

optional arguments:
  -h, --help            show this help message and exit
  -d DIRECTORY, --directory DIRECTORY
                        Directory where images stored
  -t TRANSITION, --transition TRANSITION
                        transition time in seconds
  -l LENGTH, --length LENGTH
                        Time length in seconds per image
  -o, --overlay         Enables use of overlay transition

Misal:

./xml_wallpaper_maker.py -d Pictures/My_SideScroller_Images/ -t 5 -l 10 

Kaynak kodu

GitHub'da da mevcuttur

#!/usr/bin/env python3
# -*- coding: utf-8 -*- 

#
# Author: Serg Kolo , contact: 1047481448@qq.com
# Date: September 2 , 2016
# Purpose: A program that creates and launches XML slideshow
#      
# Tested on: Ubuntu 16.04 LTS
#
#
# Licensed under The MIT License (MIT).
# See included LICENSE file or the notice below.
#
# Copyright © 2016 Sergiy Kolodyazhnyy
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.


from gi.repository import Gio
import xml.etree.cElementTree as ET
import lxml.etree as etree
import argparse
import sys
import os

def gsettings_set(schema, path, key, value):
    """Set value of gsettings schema"""
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema, path)
    if isinstance(value,list ):
        return gsettings.set_strv(key, value)
    if isinstance(value,int):
        return gsettings.set_int(key, value)
    if isinstance(value,str):
        return gsettings.set_string(key,value)

def parse_args():
        """ Parses command-line arguments """
        arg_parser = argparse.ArgumentParser(
        description='Serg\'s XML slideshow creator',
        )

        arg_parser.add_argument(
                                '-d', '--directory',
                                help='Directory where images stored',
                                type=str,
                                required=True
                                )

        arg_parser.add_argument(
                                '-t','--transition', 
                                type=float,
                                help='transition time in seconds',
                                required=True
                                )


        arg_parser.add_argument(
                                '-l','--length', 
                                type=float,
                                help='Time length in seconds per image',
                                required=True
                                )

        arg_parser.add_argument(
                                '-o','--overlay', 
                                action='store_true',
                                help='Enables use of overlay transition',
                                required=False
                                )
        return arg_parser.parse_args()



def main():
    """ Program entry point"""
    args = parse_args()
    xml_file = os.path.join(os.path.expanduser('~'),'.local/share/slideshow.xml')
    path = os.path.abspath(args.directory)
    duration = args.length
    transition_time = args.transition

    if not os.path.isdir(path):
       print(path," is not a directory !")
       sys.exit(1)

    filepaths = [os.path.join(path,item) for item in os.listdir(path) ]
    images = [ img for img in filepaths if os.path.isfile(img)]
    filepaths = None
    images.sort()
    root = ET.Element("background")
    previous = None

    # Write the xml data of images and transitions
    for index,img in enumerate(images):

        if index == 0:
           previous = img
           continue

        image = ET.SubElement(root, "static")
        ET.SubElement(image,"duration").text = str(duration)
        ET.SubElement(image,"file").text = previous

        if args.overlay: 
            transition = ET.SubElement(root,"transition",type='overlay')
        else:
            transition = ET.SubElement(root,"transition")
        ET.SubElement(transition,"duration").text = str(transition_time)
        ET.SubElement(transition, "from").text = previous
        ET.SubElement(transition, "to").text = img

        previous = img

    # Write out the final image
    image = ET.SubElement(root, "static")
    ET.SubElement(image,"duration").text = str(duration)
    ET.SubElement(image,"file").text = previous

    # Write out the final xml data to file
    tree = ET.ElementTree(root)
    tree.write(xml_file)

    # pretty print the data
    data = etree.parse(xml_file)
    formated_xml = etree.tostring(data, pretty_print = True)
    with open(xml_file,'w') as f:
        f.write(formated_xml.decode())

    gsettings_set('org.gnome.desktop.background',None,'picture-uri','file://' + xml_file)

if __name__ == '__main__':
    main()

Her kesimde x ve piksel y pikselleri boyunca hareket ederek görüntüyü n* nparçalara nasıl bölebileceğinizi biliyor musunuz ? Örneğin, YI1 duvar kağıdı için komut olurdu ve kendi kendine dönecekti? nncommand 1920 1080 1 0
Soren

@moo_we_all_do Aslında, bu daha önce sorulmuştur: askubuntu.com/a/143501/295286
Sergiy Kolodyazhnyy

Dönmek için ilk 1920 piksel alıp arkaya kopyalamak?
Soren

@moo_we_all_do döngü etrafında ne demek istiyorsun? Yapmanız gereken bu görüntüyü eşit parçalara bölmek, onları klasöre koymak ve sadece bu klasöre komut dosyası yolunu söylemektir. XML duvar kağıdı otomatik olarak geçiş ve ilk görüntüye geri döngü
Sergiy Kolodyazhnyy

Döngü ile kaydırma demek istiyorum ve anladım, teşekkürler! : D
Soren
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.