text:
#!/bin/bash

set -e

echo ${TRAVIS_EVENT_TYPE}
echo ${TRAVIS_BRANCH}

if [[ ${TRAVIS_EVENT_TYPE} != 'push' ]]
then
  exit
fi

if [[ ${TRAVIS_BRANCH} != 'master' ]]
then
  exit
fi

git checkout master

git config user.name "serhii-londar"
git config user.email "serhii.londar@gmail.com"

echo add readme
git add README.md

echo commit
git commit -m "Generate README"

echo push
git push --quiet "https://${DANGER_GITHUB_API_TOKEN}@github.com/serhii-londar/open-source-mac-os-apps.git"  master:master > /dev/null 2>&1

mime_type: text/xml


text:
//
//  main.swift
//  ReadmeGenerator
//
//  Created by Serhii Londar on 4/23/19.
//  Copyright © 2019 Serhii Londar. All rights reserved.
//

import Foundation

let header = """
[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://vshymanskyy.github.io/StandWithUkraine)

# Awesome macOS open source applications

List of awesome open source applications for macOS. This list contains a lot of native, and cross-platform apps. The main goal of this repository is to find free open source apps and start contributing. Feel free to [contribute](CONTRIBUTING.md) to the list, any suggestions are welcome!

To receive all new or popular applications you can join our [telegram channel](https://t.me/opensourcemacosapps).

## Support

Hey friend! Help me out for a couple of :beers:!

## Languages

You can see in which language an app is written. Currently there are following languages:

- ![c_icon] - C language.
- ![cpp_icon] - C++ language.
- ![c_sharp_icon] - C# language.
- ![clojure_icon] - Clojure language.
- ![coffee_script_icon] - CoffeeScript language.
- ![css_icon] - CSS language.
- ![go_icon] - Go language.
- ![elm_icon] - Elm language.
- ![haskell_icon] - Haskell language.
- ![javascript_icon] - JavaScript language.
- ![lua_icon] - Lua language.
- ![objective_c_icon] - Objective-C language.
- ![python_icon] - Python language.
- ![ruby_icon] - Ruby language.
- ![rust_icon] - Rust language.
- ![shell_icon] - Shell language.
- ![swift_icon] - Swift language.
- ![typescript_icon] - TypeScript language.

## Contents
- [Audio](#audio)
- [Backup](#backup)
- [Browser](#browser)
- [Chat](#chat)
- [Cryptocurrency](#cryptocurrency)
- [Database](#database)
- [Development](#development)
- [Git](#git)
- [iOS / macOS](#ios--macos)
- [JSON Parsing](#json-parsing)
- [Web development](#web-development)
- [Other development](#other-development)
- [Downloader](#downloader)
- [Editors](#editors)
- [CSV](#csv)
- [JSON](#json)
- [Markdown](#markdown)
- [TeX](#tex)
- [Text](#text)
- [Extensions](#extensions)
- [Finder](#finder)
- [Games](#games)
- [Graphics](#graphics)
- [IDE](#ide)
- [Images](#images)
- [Keyboard](#keyboard)
- [Mail](#mail)
- [Menubar](#menubar)
- [Music](#music)
- [News](#news)
- [Notes](#notes)
- [Other](#other)
- [Podcast](#podcast)
- [Productivity](#productivity)
- [Screensaver](#screensaver)
- [Security](#security)
- [Sharing Files](#sharing-files)
- [Social Networking](#social-networking)
- [Streaming](#streaming)
- [System](#system)
- [Terminal](#terminal)
- [Touch Bar](#touch-bar)
- [Utilities](#utilities)
- [VPN & Proxy](#vpn--proxy)
- [Video](#video)
- [Wallpaper](#wallpaper)
- [Window Management](#window-management)

## Applications

"""

let footer = """

## Contributors

Thanks to all the people who contribute:

[app_store]: ./icons/app_store-16.png 'App Store.'
[c_icon]: ./icons/c-16.png 'C language.'
[cpp_icon]: ./icons/cpp-16.png 'C++ language.'
[c_sharp_icon]: ./icons/csharp-16.png 'C# Language'
[clojure_icon]: ./icons/clojure-16.png 'Clojure Language'
[coffee_script_icon]: ./icons/coffeescript-16.png 'CoffeeScript language.'
[css_icon]: ./icons/css-16.png 'CSS language.'
[go_icon]: ./icons/golang-16.png 'Go language.'
[elm_icon]: ./icons/elm-16.png 'Elm Language'
[haskell_icon]: ./icons/haskell-16.png 'Haskell language.'
[java_icon]: ./icons/java-16.png 'Java language.'
[javascript_icon]: ./icons/javascript-16.png 'JavaScript language.'
[lua_icon]: ./icons/Lua-16.png 'Lua language.'
[objective_c_icon]: ./icons/objective-c-16.png 'Objective-C language.'
[python_icon]: ./icons/python-16.png 'Python language.'
[ruby_icon]: ./icons/ruby-16.png 'Ruby language.'
[rust_icon]: ./icons/rust-16.png 'Rust language.'
[shell_icon]: ./icons/shell-16.png 'Shell language.'
[swift_icon]: ./icons/swift-16.png 'Swift language.'
[typescript_icon]: ./icons/typescript-16.png 'TypeScript language.'
"""

class JSONApplications: Codable {
    let applications: [JSONApplication]

    enum CodingKeys: String, CodingKey {
        case applications
    }

    init(applications: [JSONApplication]) {
        self.applications = applications
    }

    required public init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        applications = try values.decodeIfPresent([JSONApplication].self, forKey: .applications) ?? []
    }
}

class JSONApplication: Codable {
    var title: String
    var iconURL: String
    var repoURL: String
    var shortDescription: String
    var languages: [String]
    var screenshots: [String]
    var categories: [String]
    var officialSite: String

    enum CodingKeys: String, CodingKey {
        case title
        case iconURL = "icon_url"
        case repoURL = "repo_url"
        case shortDescription = "short_description"
        case languages
        case screenshots
        case categories
        case officialSite = "official_site"
    }

    init(title: String, iconURL: String, repoURL: String, shortDescription: String, languages: [String], screenshots: [String], categories: [String], officialSite: String) {
        self.title = title
        self.iconURL = iconURL
        self.repoURL = repoURL
        self.shortDescription = shortDescription
        self.languages = languages
        self.screenshots = screenshots
        self.categories = categories
        self.officialSite = officialSite
    }
}

class Categories: Codable {
    let categories: [Category]

    init(categories: [Category]) {
        self.categories = categories
    }

    required public init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        categories = try values.decodeIfPresent([Category].self, forKey: .categories) ?? []
    }
}

class Category: Codable {
    let title, id, description: String
    let parent: String?

    init(title: String, id: String, description: String, parent: String?) {
        self.title = title
        self.id = id
        self.description = description
        self.parent = parent
    }
}

class ReadmeGenerator {
    var readmeString = String.empty

    func generateReadme() {
        print("Start")
        do {
            // get current file path:
            let thisFilePath:String = #file
            var url = URL(fileURLWithPath: thisFilePath)

            //cd ../ to the root folder: (delete `.github/main.swift`
            url = url.deletingLastPathComponent().deletingLastPathComponent()

            let applicationsUrl = url.appendingPathComponent(FilePaths.applications.rawValue)
            let applicationsData = try Data(contentsOf: applicationsUrl)
            let categoriesData = try Data(contentsOf: url.appendingPathComponent(FilePaths.categories.rawValue))
            let jsonDecoder = JSONDecoder()
            let applicationsObject = try jsonDecoder.decode(JSONApplications.self, from: applicationsData)
            let categoriesObject = try jsonDecoder.decode(Categories.self, from: categoriesData)

            var categories = categoriesObject.categories
            let subcategories = categories.filter({ $0.parent != nil && !$0.parent!.isEmpty })
            let applications = applicationsObject.applications

            for subcategory in subcategories {
                if let index = categories.lastIndex(where: { $0.parent != subcategory.id }) {
                    categories.remove(at: index)
                }
            }

            categories = categories.sorted(by: { $0.title < $1.title })

            readmeString.append(header)
            print("Start iteration....")

            for category in categories {
                readmeString.append(String.enter + String.section + String.space + category.title + String.enter)
                var categoryApplications = applications.filter({ $0.categories.contains(category.id) })
                categoryApplications = categoryApplications.sorted(by: { $0.title < $1.title })

                for application in categoryApplications {
                    readmeString.append(application.markdownDescription())
                    readmeString.append(String.enter)
                }

                var subcategories = subcategories.filter({ $0.parent == category.id })
                guard subcategories.count > 0 else { continue }
                subcategories = subcategories.sorted(by: { $0.title < $1.title })
                for subcategory in subcategories {
                    readmeString.append(String.enter + String.subsection + String.space + subcategory.title + String.enter)
                    var categoryApplications = applications.filter({ $0.categories.contains(subcategory.id) })
                    categoryApplications = categoryApplications.sorted(by: { $0.title < $1.title })

                    for application in categoryApplications {
                        readmeString.append(application.markdownDescription())
                        readmeString.append(String.enter)
                    }
                }
            }
            print("Finish iteration...")
            readmeString.append(footer)
            try readmeString.data(using: .utf8)?.write(to: url.appendingPathComponent(FilePaths.readme.rawValue))
            print("Finish")
        } catch {
            print(error)
        }
    }
}

extension String {
    static let empty = ""
    static let space = " "
    static let enter = "\n"
    static let section = "###"
    static let subsection = "####"
    static let iconPrefix = "_icon"
}

extension JSONApplication {
    func markdownDescription() -> String {
        var markdownDescription = String.empty
        var languages: String = String.empty
        for lang in self.languages {
            languages.append("![\(lang)\(String.iconPrefix)] ")
        }

        markdownDescription.append("- [\(self.title)](\(self.repoURL)) - \(self.shortDescription) \(languages)")
        /*
         if self.screenshots.count > 0 {
         var screenshotsString = String.empty
         screenshotsString += (String.space + Constants.detailsBeginString + String.space)
         self.screenshots.forEach({
         screenshotsString += (String.space + (NSString(format: Constants.srcLinePattern as NSString, $0 as CVarArg) as String) + String.space)
         })
         screenshotsString += (String.space + Constants.detailsEndString + String.space)
         markdownDescription.append(screenshotsString)
         }
         */
        return markdownDescription
    }
}

enum FilePaths: String {
    case readme = "./README.md"
    case applications = "./applications.json"
    case categories = "./categories.json"
}

struct Constants {
    static let detailsBeginString = "  Screenshots
"
    static let detailsEndString = "
"
    static let srcLinePattern = "<bt>"

    static let startProcessString = "### Database"
    static let endProcessString = "### Development"

    static func regex(for type: String) -> String {
        return "\\((.+\\.\(type))"
    }
    static func regex1(for type: String) -> String {
        return "\\\"(.+\\.\(type))"
    }
}

ReadmeGenerator().generateReadme()


text:
# Configuration for weekly-digest - https://github.com/apps/weekly-digest
publishDay: mon
canPublishIssues: true
canPublishPullRequests: true
canPublishContributors: true
canPublishStargazers: true
canPublishCommits: true


text:
name: Generate Readme
on:
  push:
    branches:
      - master
jobs:
  generate-readme:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3
      - run: swift ./.github/main.swift
      - run: chmod +x ./.github/deploy.sh
      - run: git config user.name "serhii-londar"
      - run: git config user.email "serhii.londar@gmail.com"
      - run: git add README.md
      - run: git commit -m "Generate README"
      - run: git push --quiet "https://${API_TOKEN}@github.com/serhii-londar/open-source-mac-os-apps.git"  master:master > /dev/null 2>&1


text:
name: Check PR
on:
  pull_request:
    branches:
      - master
jobs:
  setup:
    runs-on: macos-latest
    steps:
      - run: gem install awesome_bot
      - run: gem install bundler
      - run: gem install danger
      - uses: actions/checkout@v3
      - run: awesome_bot applications.json -w https://matrix.org,https://camo.githubusercontent.com,http://joshparnham.com,https://pock.pigigaldi.com,https://docs.microsoft.com/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6,https://adequate.systems/ --allow 429


text:
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 50;
	objects = {

/* Begin PBXBuildFile section */
		E8FDFD7F226E769900FE80E7 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8FDFD7E226E769900FE80E7 /* main.swift */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
		E8FDFD70226E74F400FE80E7 /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = /usr/share/man/man1/;
			dstSubfolderSpec = 0;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 1;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		E8FDFD72226E74F400FE80E7 /* ReadmeGenerator */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ReadmeGenerator; sourceTree = BUILT_PRODUCTS_DIR; };
		E8FDFD7E226E769900FE80E7 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		E8FDFD6F226E74F400FE80E7 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		E8FDFD69226E74F400FE80E7 = {
			isa = PBXGroup;
			children = (
				E8FDFD74226E74F400FE80E7 /* ReadmeGenerator */,
				E8FDFD73226E74F400FE80E7 /* Products */,
			);
			sourceTree = "<group>";
		};
		E8FDFD73226E74F400FE80E7 /* Products */ = {
			isa = PBXGroup;
			children = (
				E8FDFD72226E74F400FE80E7 /* ReadmeGenerator */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		E8FDFD74226E74F400FE80E7 /* ReadmeGenerator */ = {
			isa = PBXGroup;
			children = (
				E8FDFD7E226E769900FE80E7 /* main.swift */,
			);
			path = ReadmeGenerator;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		E8FDFD71226E74F400FE80E7 /* ReadmeGenerator */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = E8FDFD79226E74F400FE80E7 /* Build configuration list for PBXNativeTarget "ReadmeGenerator" */;
			buildPhases = (
				E8FDFD6E226E74F400FE80E7 /* Sources */,
				E8FDFD6F226E74F400FE80E7 /* Frameworks */,
				E8FDFD70226E74F400FE80E7 /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = ReadmeGenerator;
			productName = ReadmeGenerator;
			productReference = E8FDFD72226E74F400FE80E7 /* ReadmeGenerator */;
			productType = "com.apple.product-type.tool";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		E8FDFD6A226E74F400FE80E7 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftUpdateCheck = 1020;
				LastUpgradeCheck = 1130;
				ORGANIZATIONNAME = "Serhii Londar";
				TargetAttributes = {
					E8FDFD71226E74F400FE80E7 = {
						CreatedOnToolsVersion = 10.2.1;
						LastSwiftMigration = 1020;
					};
				};
			};
			buildConfigurationList = E8FDFD6D226E74F400FE80E7 /* Build configuration list for PBXProject "ReadmeGenerator" */;
			compatibilityVersion = "Xcode 9.3";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = E8FDFD69226E74F400FE80E7;
			productRefGroup = E8FDFD73226E74F400FE80E7 /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				E8FDFD71226E74F400FE80E7 /* ReadmeGenerator */,
			);
		};
/* End PBXProject section */

/* Begin PBXSourcesBuildPhase section */
		E8FDFD6E226E74F400FE80E7 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				E8FDFD7F226E769900FE80E7 /* main.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		E8FDFD77226E74F400FE80E7 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "-";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.14;
				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
				MTL_FAST_MATH = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = macosx;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
			};
			name = Debug;
		};
		E8FDFD78226E74F400FE80E7 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "-";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.14;
				MTL_ENABLE_DEBUG_INFO = NO;
				MTL_FAST_MATH = YES;
				SDKROOT = macosx;
				SWIFT_COMPILATION_MODE = wholemodule;
				SWIFT_OPTIMIZATION_LEVEL = "-O";
			};
			name = Release;
		};
		E8FDFD7A226E74F400FE80E7 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				CODE_SIGN_IDENTITY = "-";
				CODE_SIGN_STYLE = Automatic;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/../Frameworks",
					"@loader_path/../Frameworks",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_VERSION = 5.0;
			};
			name = Debug;
		};
		E8FDFD7B226E74F400FE80E7 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				CODE_SIGN_IDENTITY = "-";
				CODE_SIGN_STYLE = Automatic;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/../Frameworks",
					"@loader_path/../Frameworks",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_VERSION = 5.0;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		E8FDFD6D226E74F400FE80E7 /* Build configuration list for PBXProject "ReadmeGenerator" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				E8FDFD77226E74F400FE80E7 /* Debug */,
				E8FDFD78226E74F400FE80E7 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		E8FDFD79226E74F400FE80E7 /* Build configuration list for PBXNativeTarget "ReadmeGenerator" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				E8FDFD7A226E74F400FE80E7 /* Debug */,
				E8FDFD7B226E74F400FE80E7 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = E8FDFD6A226E74F400FE80E7 /* Project object */;
}


text:
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1130"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "E8FDFD71226E74F400FE80E7"
               BuildableName = "ReadmeGenerator"
               BlueprintName = "ReadmeGenerator"
               ReferencedContainer = "container:ReadmeGenerator.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "E8FDFD71226E74F400FE80E7"
            BuildableName = "ReadmeGenerator"
            BlueprintName = "ReadmeGenerator"
            ReferencedContainer = "container:ReadmeGenerator.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <Testables>
      </Testables>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      customWorkingDirectory = "/Users/serhii-londar/Documents/GitHub/open-source-mac-os-apps"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "E8FDFD71226E74F400FE80E7"
            BuildableName = "ReadmeGenerator"
            BlueprintName = "ReadmeGenerator"
            ReferencedContainer = "container:ReadmeGenerator.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "E8FDFD71226E74F400FE80E7"
            BuildableName = "ReadmeGenerator"
            BlueprintName = "ReadmeGenerator"
            ReferencedContainer = "container:ReadmeGenerator.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


text:
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:ReadmeGenerator.xcodeproj">
   </FileRef>
</Workspace>


text:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>


text:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


text:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>BuildLocationStyle</key>
	<string>UseAppPreferences</string>
	<key>CustomBuildIntermediatesPath</key>
	<string>Build/Intermediates.noindex</string>
	<key>CustomBuildLocationType</key>
	<string>RelativeToWorkspace</string>
	<key>CustomBuildProductsPath</key>
	<string>Build/Products</string>
	<key>CustomIndexStorePath</key>
	<string>Index/DataStore</string>
	<key>DerivedDataLocationStyle</key>
	<string>Default</string>
	<key>EnabledFullIndexStoreVisibility</key>
	<false/>
	<key>IssueFilterStyle</key>
	<string>ShowActiveSchemeOnly</string>
	<key>LiveSourceIssuesEnabled</key>
	<true/>
	<key>SharedBuildFolderName</key>
	<string>Build</string>
</dict>
</plist>


text:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>SchemeUserState</key>
	<dict>
		<key>ReadmeGenerator.xcscheme_^#shared#^_</key>
		<dict>
			<key>orderHint</key>
			<integer>0</integer>
		</dict>
	</dict>
	<key>SuppressBuildableAutocreation</key>
	<dict>
		<key>E8FDFD71226E74F400FE80E7</key>
		<dict>
			<key>primary</key>
			<true/>
		</dict>
	</dict>
</dict>
</plist>


text:
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
   uuid = "CF7C8D58-DB6B-4056-85F7-23463FD8B049"
   type = "1"
   version = "2.0">
   <Breakpoints>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            uuid = "45F482F7-51D8-424D-B20F-C8C2F0B864C5"
            shouldBeEnabled = "Yes"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "main.swift"
            timestampString = "577666659.971123"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "326"
            endingLineNumber = "326"
            landmarkName = "srcLinePattern"
            landmarkType = "24">
         </BreakpointContent>
      </BreakpointProxy>
   </Breakpoints>
</Bucket>


text:
# Awesome Legacy Code

> A curated list of legacy systems with publicly available source code

## Contents

* Languages
  * [Assembly](#assembly)
  * [C and C++](#c)
  * [Fortran](#fortran)
  * [Pascal](#pascal)
  * [Python](#python)
  * [Java](#java)
  * [C#](#CSharp)

## Languages

### Assembly

* [Apollo-11 guidance computer](https://github.com/chrislgarry/Apollo-11)
  * [The Ultimate Apollo Guidance Computer Talk](https://media.ccc.de/v/34c3-9064-the_ultimate_apollo_guidance_computer_talk)
  * [Don Eyles walks through lunar module source code](https://hackaday.com/2016/07/05/don-eyles-walks-us-through-the-lunar-module-source-code/)
* [PDP-10 Incompatible Timesharing System](https://github.com/PDP-10/its)
* [Prince of Persia - Apple II version](https://github.com/jmechner/Prince-of-Persia-Apple-II)
* [MS-DOS - Versions 1.X and 2.0](https://github.com/Microsoft/MS-DOS)
* [Commodore Source Code (BASIC, DOS and KERNEL)](https://github.com/mist64/cbmsrc)
* [Spacewar for PDP-1](https://gist.github.com/JonnieCache/4258114)
* [QuickDraw and MacPoint](http://www.computerhistory.org/atchm/macpaint-and-quickdraw-source-code/)
* [ET - The Extraterrestrial - Atari 2600](https://pastebin.com/AaSYZTHt)
* [Microsoft GW-BASIC Interpreter](https://github.com/microsoft/GW-BASIC)

### C

* [NCSA Mosaic](https://github.com/alandipert/ncsa-mosaic)
* [Mozilla (the open sourced version of Netscape Navigator)](https://archive.mozilla.org/pub/mozilla/source/)
* [Wolfenstein 3D](https://github.com/id-Software/)
* [DOOM](https://github.com/id-Software/DOOM)
* [Quake](https://github.com/id-Software/Quake)
* [Microsoft Word for Windows 1.1a](http://www.computerhistory.org/atchm/microsoft-research-license-agreement-msword-v-1-1a/)
* [Microsoft Windows File Manager (WinFile)](https://github.com/Microsoft/winfile)
* [Various Unix systems archived at the Unix Heritage Society](http://minnie.tuhs.org/cgi-bin/utree.pl)
* [notqmail](https://github.com/notqmail/notqmail) - The repo includes tags for various historical releases
* [Zapcc](https://github.com/yrnkrn/zapcc)

### Fortran

* [Colossal Cave Adventure](https://jerz.setonhill.edu/intfic/colossal-cave-adventure-source-code/)
* [NASA STRucture ANalysis (NaStrAn)](https://github.com/nasa/NASTRAN-95)

  NASA STRucture ANalysis (NaStrAn) is the base of still used code (MSC Nastran and NX Nastran) for analyzing mainly structures (planes, rockets, trains, cars,...). Name is probably also inspired by [Fortran=Formula Translating System](https://en.wikipedia.org/wiki/Fortran). Check out the corresponding [Wikipedia entry](https://en.m.wikipedia.org/wiki/Nastran) for more information

### Pascal

* [Adobe Photoshop 1.0.1](http://www.computerhistory.org/atchm/adobe-photoshop-source-code/)

### Python

* [James Webb Space Telescope Quick Look Application](https://github.com/spacetelescope/jwql) - there are many other awesome repositories to explore within the same [GitHub organization](https://github.com/spacetelescope)
### Java
* [Tennis](https://github.com/emilybache/Tennis-Refactoring-Kata)
* [Bad Fruit from Peel & Slice](https://github.com/jason-kerney/PeelAndSlice.Java/blob/main/src/main/java/com/spun/llewellyn/talks/legacycode/examples/BadFruit.java)  ( practice )
* [Guilded Rose](https://github.com/emilybache/GildedRose-Refactoring-Kata)  (practice)
* [ChartSmart](https://github.com/tonytvo/coderetreat/tree/c89ebf3e92fff5a95fdc80d37e3a4a66cf877931/refactoring/chartsmart)  ( practice )
* [trivia](https://github.com/jbrains/trivia)  (practice)
* [Apache-Solr](https://github.com/apache/lucene-solr/tree/master/solr/core/src/java/org/apache/solr)  (real)

### CSharp
* [Gilded Rose](https://github.com/arlobelshee/GildedRose)  (practice)
* [Roslyn - C# compilation service](https://github.com/dotnet/roslyn)
* [.NET Foundational Libraries](https://github.com/dotnet/corefx)
* [.NET runtime (BCL, JIT compiler, GC)](https://github.com/dotnet/coreclr)

repo_name: legacycoderocks/awesome-legacy-code

mime_type: text/plain


text:
# Contribution Guidelines

Thank you for your interest in contributing to Awesome Rices! We appreciate contributions from the community. To showcase your unique rice, please follow these guidelines:

## Share Your Rice

1. **Prepare your rice repository:** Ensure the `README.md` of your rice repository includes screenshots of your desktop environment.

2. **Create a Pull Request (PR):** Add an entry for your rice under the correct WM/DE section in our `README.md` using the following format:

    ```markdown
    ### [Your GitHub Username](https://github.com/yourusername/yourrepositoryname)
    [![Your GitHub Username](https://github.com/yourusername/yourrepositoryname/raw/main/path_to_your_image.png)](https://github.com/yourusername/yourrepositoryname)
    ```

   ##### Entries should be sorted alphabetically to ensure order and easy navigation for users.

## Optional

You're welcome to include the Awesome Rice badge in your repository!

```markdown
[![awesome-rice-badge](https://raw.githubusercontent.com/zemmsoares/awesome-rices/main/assets/awesome-rice-badge.svg)](https://github.com/zemmsoares/awesome-rices)
```

[![awesome-rice-badge](https://raw.githubusercontent.com/zemmsoares/awesome-rices/main/assets/awesome-rice-badge.svg)](https://github.com/zemmsoares/awesome-rices)

Your contribution is helping us cook up the tastiest Unix experiences around! Thanks!

repo_name: zemmsoares/awesome-rices


text:
Awesome Rices

This repository is a collection of outstanding Unix customizations.
 Explore different user rices, get inspired, inspire us.

# Table of Contents

- [Table of Contents](#table-of-contents)
- [Rices](#rices)
  - [AwesomeWM](#awesomewm)
    - [AlphaTechnolog](#alphatechnolog)
    - [Amitabha37377](#amitabha37377)
    - [chadcat7](#chadcat7)
    - [CmrCrabs](#cmrcrabs)
    - [d-solis](#d-solis)
    - [elenapan](#elenapan)
    - [frapdotbm](#frapdotbm)
    - [Gwynsav](#gwynsav)
    - [HoNamDuong](#honamduong)
    - [Kasper24](#kasper24)
    - [madhur](#madhur)
    - [Manas140](#manas140)
    - [MeledoJames](#meledojames)
    - [p3nguin-kun](#p3nguin-kun)
    - [pablonoya](#pablonoya)
    - [PassiveLemon](#passivelemon)
    - [rklyz](#rklyz)
    - [rxyhn](#rxyhn)
    - [saimoomedits](#saimoomedits)
    - [Savecoders](#savecoders)
    - [Spaxly](#spaxly)
    - [Stardust-kyun](#stardust-kyun)
    - [TorchedSammy](#torchedsammy)
    - [vulekhanh](#vulekhanh)
  - [bspwm](#bspwm)
    - [adilhyz](#adilhyz)
    - [AlphaTechnolog](#alphatechnolog-1)
    - [DominatorXS](#dominatorxs)
    - [Erennedirlo](#erennedirlo)
    - [gh0stzk](#gh0stzk)
    - [Gwynsav](#gwynsav-1)
    - [hlissner](#hlissner)
    - [JakeGinesin](#jakeginesin)
    - [justleoo](#justleoo)
    - [kabinspace](#kabinspace)
    - [Narmis-E](#narmis-e)
    - [probe2k](#probe2k)
    - [rklyz](#rklyz-1)
    - [Sinomor](#sinomor)
    - [Sophed](#sophed)
    - [star-isc](#star-isc)
    - [sudo-harun](#sudo-harun)
    - [valb-mig](#valb-mig)
    - [wahyuwiyoko](#wahyuwiyoko)
    - [Weirdchupacabra](#weirdchupacabra)
    - [zoddDev](#zodddev)
  - [Cinnamon](#cinnamon)
    - [SpreadiesInSpace](#spreadiesinspace)
  - [DkWM](#dkwm)
    - [AlphaTechnolog](#alphatechnolog-2)
  - [dwm](#dwm)
    - [AlphaTechnolog](#alphatechnolog-3)
    - [codedsprit](#codedsprit)
    - [Dorovich](#dorovich)
    - [Gwynsav](#gwynsav-2)
    - [juacq97](#juacq97)
    - [nxb1t](#nxb1t)
    - [raihanadf](#raihanadf)
    - [seeingangelz](#seeingangelz)
  - [Gnome](#gnome)
    - [1amSimp1e](#1amsimp1e)
    - [AviVarma](#avivarma)
    - [Comiclyy](#comiclyy)
    - [GabrielTenma](#gabrieltenma)
    - [NeuronSooup](#neuronsooup)
  - [Herbstluftwm](#herbstluftwm)
    - [breddie-normie](#breddie-normie)
    - [nuxshed](#nuxshed)
    - [scourii](#scourii)
  - [Hyprland](#hyprland)
    - [1amSimp1e](#1amsimp1e-1)
    - [ahujaankush](#ahujaankush)
    - [cafreo](#cafreo)
    - [command-z-z](#command-z-z)
    - [conrad-mo](#conrad-mo)
    - [dankdezpair](#dankdezpair)
    - [debuggyo](#debuggyo)
    - [dragoshr1234](#dragoshr1234)
    - [end-4](#end-4)
    - [h1tarxeth](#h1tarxeth)
    - [HeinzDev](#heinzdev)
    - [hobosyo](#hobosyo)
    - [justinlime](#justinlime)
    - [Knightfall01](#knightfall01)
    - [MathisP75](#mathisp75)
    - [maxtaran2010](#maxtaran2010)
    - [Narmis-E](#narmis-e-1)
    - [ozwaldorf](#ozwaldorf)
    - [prasanthrangan](#prasanthrangan)
    - [Redyf](#redyf)
    - [RumiAxolotl](#rumiaxolotl)
    - [SimplyVoid](#simplyvoid)
    - [Spagett1](#spagett1)
    - [Stetsed](#stetsed)
    - [Yorubae](#yorubae)
  - [i3wm](#i3wm)
    - [b1337xyz](#b1337xyz)
    - [BIBJAW](#bibjaw)
    - [bibjaw99](#bibjaw99)
    - [Blxckmage](#blxckmage)
    - [bryant-the-coder](#bryant-the-coder)
    - [fathulfahmy](#fathulfahmy)
    - [sommaa](#sommaa)
    - [SunoBB](#sunobb)
    - [TKK13909](#tkk13909)
    - [Vallen217](#vallen217)
    - [wahyuwiyoko](#wahyuwiyoko-1)
    - [zemmsoares](#zemmsoares)
  - [KDE](#kde)
    - [ComplexPlatform](#complexplatform)
  - [LeftWM](#leftwm)
    - [almqv](#almqv)
  - [Lightdm](#lightdm)
    - [TheWisker](#thewisker)
  - [Openbox](#openbox)
    - [AlphaTechnolog](#alphatechnolog-4)
    - [Narmis-E](#narmis-e-2)
    - [owl4ce](#owl4ce)
  - [Qtile](#qtile)
    - [Barbaross93](#barbaross93)
    - [Darkkal44](#darkkal44)
    - [diegorezm](#diegorezm)
    - [Fluffy-Bean](#fluffy-bean)
    - [gibranlp](#gibranlp)
    - [Hamza12700](#hamza12700)
    - [shayanaqvi](#shayanaqvi)
  - [Riverwm](#riverwm)
    - [theCode-Breaker](#thecode-breaker)
  - [Sway](#sway)
    - [eoli3n](#eoli3n)
    - [hifinerd](#hifinerd)
    - [KubqoA](#kubqoa)
    - [RicArch97](#ricarch97)
    - [Sunglas](#sunglas)
    - [viperML](#viperml)
    - [wahyuwiyoko](#wahyuwiyoko-2)
  - [Xfce](#xfce)
    - [fathulfahmy](#fathulfahmy-1)
  - [Xmonad](#xmonad)
    - [Icy-Thought](#icy-thought)
    - [TheMidnightShow](#themidnightshow)
  - [Yabai](#yabai)
    - [command-z-z](#command-z-z-1)
    - [FelixKratz](#felixkratz)
    - [QRX53](#qrx53)
    - [tcmmichaelb139](#tcmmichaelb139)
    - [ZhongXiLu](#zhongxilu)
- [Contribute](#contribute)
- [License](#license)

# Rices

## AwesomeWM

### [AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/tree/awesomewm)

[![AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/raw/awesomewm/.github/assets/banner.png)](https://github.com/AlphaTechnolog/dotfiles/tree/awesomewm)

### [Amitabha37377](https://github.com/Amitabha37377/Awesome_Dotfiles)

[![Amitabha37377](https://github.com/Amitabha37377/Awesome_Dotfiles/raw/master/screenshots/file1_20230425_185954.png)](https://github.com/Amitabha37377/Awesome_Dotfiles)

### [chadcat7](https://github.com/chadcat7/crystal)

[![chadcat7](https://github.com/chadcat7/crystal/blob/main/.github/screenshots/p1.png?raw=true)](https://github.com/chadcat7/crystal)

### [CmrCrabs](https://github.com/CmrCrabs/dotfiles)

[![CmrCrabs](https://github.com/CmrCrabs/dotfiles/blob/main/assets/paradise.png?raw=true)](https://github.com/CmrCrabs/dotfiles)

### [d-solis](https://github.com/d-solis/dotfiles/tree/awesome)

[![d-solis](https://user-images.githubusercontent.com/43517199/213188711-a370e0d1-a2c4-4119-95bc-d51e46d81214.png)](https://github.com/d-solis/dotfiles/tree/awesome)

### [elenapan](https://github.com/elenapan/dotfiles)

[![elenapan](https://raw.githubusercontent.com/wiki/elenapan/dotfiles/assets/amarena.png)](https://github.com/elenapan/dotfiles)

### [frapdotbm](https://github.com/frapdotbmp/dotfiles)

[![frapdotbm](https://user-images.githubusercontent.com/118438453/218368968-958e54f0-b70f-4a33-83f0-bda9c2641cb8.png)](https://github.com/frapdotbmp/dotfiles)

### [Gwynsav](https://github.com/Gwynsav/gwdawful/tree/master)

[![Gwynsav](https://github.com/Gwynsav/gwdawful/blob/master/.github/laptop_screenshot.png?raw=true)](https://github.com/Gwynsav/gwdawful/tree/master)

### [HoNamDuong](https://github.com/HoNamDuong/.dotfiles)

[![HoNamDuong](https://github.com/HoNamDuong/.dotfiles/blob/master/screenshots/awesomewm.png?raw=true)](https://github.com/HoNamDuong/.dotfiles)

### [Kasper24](https://github.com/Kasper24/KwesomeDE)

[![Kasper24](https://github.com/Kasper24/KwesomeDE/blob/main/.github/assets/1.png?raw=true)](https://github.com/Kasper24/KwesomeDE)

### [madhur](https://github.com/madhur/dotfiles)

[![madhur](https://raw.githubusercontent.com/madhur/dotfiles/main/fastfetch.png)](https://github.com/madhur/dotfiles)

### [Manas140](https://github.com/Manas140/dotfiles)

[![Manas140](https://github.com/Manas140/dotfiles/raw/awedots/preview.png)](https://github.com/Manas140/dotfiles)

### [MeledoJames](https://github.com/MeledoJames/awesome-setup)

[![MeledoJames](https://github.com/MeledoJames/awesome-setup/raw/Lavender/images/1.png?raw=true)](https://github.com/MeledoJames/awesome-setup)

### [p3nguin-kun](https://github.com/p3nguin-kun/penguinRice)

[![p3nguin-kun](https://camo.githubusercontent.com/33dbf105da995711d192ae89d76522fe0700bb906d48086f10f9bb9fcdd91b90/68747470733a2f2f692e696d6775722e636f6d2f6a344f713567502e706e67)](https://github.com/p3nguin-kun/penguinRice)

### [pablonoya](https://github.com/pablonoya/awesomewm-configuration)

[![pablonoya](https://user-images.githubusercontent.com/31524852/232510330-a812c5d7-f5e5-4aa3-a7d5-deb58a684390.png)](https://github.com/pablonoya/awesomewm-configuration)

### [PassiveLemon](https://github.com/PassiveLemon/lemonix)

[![PassiveLemon](https://github.com/PassiveLemon/lemonix/raw/awesomewm/desktop.png)](https://github.com/PassiveLemon/lemonix)

### [rklyz](https://github.com/rklyz/MyRice)

[![rklyz](https://camo.githubusercontent.com/cb37f166496d63d9636cbf4755789edd45450301186457102ef2fffd6ee6fb78/68747470733a2f2f692e696d6775722e636f6d2f31756d4644504d2e706e67)](https://github.com/rklyz/MyRice)

### [rxyhn](https://github.com/rxyhn/yoru)

[![rxyhn](https://github.com/rxyhn/yoru/raw/main/.github/assets/yoru.png)](https://github.com/rxyhn/yoru)

### [saimoomedits](https://github.com/saimoomedits/dotfiles)

[![saimoomedits](https://github.com/saimoomedits/dotfiles/blob/main/.github/assets/preview.png?raw=true)](https://github.com/saimoomedits/dotfiles)

### [Savecoders](https://github.com/Savecoders/dotfiles)

[![Savecoders](https://github.com/Savecoders/dotfiles/raw/main/.github/assets/Awesome/rofiAndOthers.png)](https://github.com/Savecoders/dotfiles)

### [Spaxly](https://github.com/Spaxly/espresso)

[![Spaxly](https://github.com/Spaxly/espresso/raw/main/assets/desktop.png?raw=true)](https://github.com/Spaxly/espresso)

### [Stardust-kyun](https://github.com/Stardust-kyun/dotfiles)

[![Stardust-kyun](https://github.com/Stardust-kyun/dotfiles/raw/main/src/thumbnail.png)](https://github.com/Stardust-kyun/dotfiles)

### [TorchedSammy](https://github.com/TorchedSammy/dotfiles)

[![TorchedSammy](https://camo.githubusercontent.com/6d848fcad6648bbe2836f9f7361ee6f4c4597b7c050c9c4d277d6d0b5b3cb29e/68747470733a2f2f736166652e6b617368696d612e6d6f652f796e6e377a627862337132652e706e67)](https://github.com/TorchedSammy/dotfiles)

### [vulekhanh](https://github.com/vulekhanh/dotfiles)

[![vulekhanh](https://user-images.githubusercontent.com/61068720/235719073-25941152-3121-41b6-b869-a163c3523a5d.png)](https://github.com/vulekhanh/dotfiles)

## bspwm

### [adilhyz](https://github.com/adilhyz/dotfiles-v1)

[![adilhyz](https://github.com/adilhyz/dotfiles-v1/blob/master/preview/pamela.png?raw=true)](https://github.com/adilhyz/dotfiles-v1)

### [AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/tree/bspwm)

[![AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/raw/bspwm/.github/assets/banner.png)](https://github.com/AlphaTechnolog/dotfiles/tree/bspwm)

### [DominatorXS](https://github.com/DominatorXS/LinuxDotz)

[![DominatorXS](https://github.com/DominatorXS/LinuxDotz/raw/main/everforest.png)](https://github.com/DominatorXS/LinuxDotz)

### [Erennedirlo](https://github.com/Erennedirlo/gruvbox-dotfiles)

[![Erennedirlo](https://github.com/Erennedirlo/gruvbox-dotfiles/raw/main/screenshot/unixporn.png)](https://github.com/Erennedirlo/gruvbox-dotfiles)

### [gh0stzk](https://github.com/gh0stzk/dotfiles)

[![gh0stzk](https://user-images.githubusercontent.com/67278339/221425420-4198afbb-fd7a-41a1-96f2-42c2c715f076.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221425550-05f6362b-0a4a-48c0-a87d-044cc38af8e6.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221425682-e5676155-1bbc-47a5-ba15-307513c44d06.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221425748-4a6ab441-886a-4400-b9df-5fef2a6cfb23.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221425853-ce5af1fe-f03d-48cc-a4d3-445adbe3e566.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221425915-55c6b711-9456-4b60-a1a2-8a986e45e2c4.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221425966-3e5e9db1-4e60-4b21-8c00-8235e7dde733.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221426007-81869495-d20f-4c55-b036-42ced5b4b5a1.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221426076-9aae13b0-0f1e-430a-b53a-80d0d9cfa2a4.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221426116-0c247a00-c870-4120-9b46-fbd4a1913af2.png)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://camo.githubusercontent.com/4b725b39731e725c5102a9985ffa522613f7fff5560cd8e6c13003abf158f1e5/68747470733a2f2f6769746875622d70726f64756374696f6e2d757365722d61737365742d3632313064662e73332e616d617a6f6e6177732e636f6d2f36373237383333392f3233393432393231332d32643364363261652d336337622d346337612d623530612d3633373531373134356337612e706e67)](https://github.com/gh0stzk/dotfiles)
[![gh0stzk](https://user-images.githubusercontent.com/67278339/221426218-49131fb7-e750-4bee-94a3-f26397760ec8.png)](https://github.com/gh0stzk/dotfiles)

### [Gwynsav](https://github.com/Gwynsav/messydots)

[![Gwynsav](https://github.com/Gwynsav/messydots/raw/main/basicshowcase.png)](https://github.com/Gwynsav/messydots)

### [hlissner](https://github.com/hlissner/dotfiles)

[![hlissner](https://github.com/hlissner/dotfiles/raw/screenshots/alucard/fakebusy.png)](https://github.com/hlissner/dotfiles)

### [JakeGinesin](https://github.com/JakeGinesin/dotfiles)

[![JakeGinesin](https://camo.githubusercontent.com/d57d77820bdc5bf5e77065e4caa54887443716da4a49dcbbd46b957809041ba9/68747470733a2f2f692e696d6775722e636f6d2f50716b344846582e706e67)](https://github.com/JakeGinesin/dotfiles)

### [justleoo](https://github.com/justleoo/dotfiles)

[![justleoo](https://github.com/justleoo/dotfiles/raw/bspwm-everblush/.github/assets/rice1.png)](https://github.com/justleoo/dotfiles)

### [kabinspace](https://github.com/kabinspace/dotfiles)

[![kabinspace](https://github.com/kabinspace/dotfiles/blob/master/.github/assets/preview.jpg?raw=true)](https://github.com/kabinspace/dotfiles)

### [Narmis-E](https://github.com/Narmis-E/bspwm-catppuccin)

[![Narmis-E](https://github.com/Narmis-E/bspwm-catppuccin/blob/main/images/rice-complete.png?raw=true)](https://github.com/Narmis-E/bspwm-catppuccin)

### [probe2k](https://github.com/probe2k/bspwm_rice)

[![probe2k](https://camo.githubusercontent.com/dd1cb5cbcc883816c9f7b1138d265dd0bf7070c2efcff394aa7e9f719c23a860/68747470733a2f2f692e726564642e69742f3533377a7366786d34376837312e706e67)](https://github.com/probe2k/bspwm_rice)

### [rklyz](https://github.com/rklyz/.files)

[![rklyz](https://github.com/N3k0Ch4n/.files/raw/main/screenshot.png)](https://github.com/rklyz/.files)

### [Sinomor](https://github.com/Sinomor/dots)

[![Sinomor](https://github.com/Sinomor/dots/raw/main/extra/screenshots/1.png)](https://github.com/Sinomor/dots)

### [Sophed](https://github.com/Sophed/dotfiles)

[![Sophed](https://github.com/Sophed/dotfiles/raw/main/Assets/screenshot.png)](https://github.com/Sophed/dotfiles)

### [star-isc](https://github.com/star-isc/Dotfiles)

[![star-isc](https://user-images.githubusercontent.com/130581941/239658056-41ba8bc6-e7b2-4af7-8a1f-3daf594ef772.png)](https://github.com/star-isc/Dotfiles)

### [sudo-harun](https://github.com/sudo-harun/dotfiles/tree/main)

[![sudo-harun](https://github.com/sudo-harun/dotfiles/raw/main/assets/bspwm-vertical-bar-1.png)](https://github.com/sudo-harun/dotfiles/tree/main)

### [valb-mig](https://github.com/valb-mig/.dotfiles)

[![valb-mig](https://github.com/valb-mig/.dotfiles/raw/main/.assets/dots.png)](https://github.com/valb-mig/.dotfiles)

## [wahyuwiyoko](https://github.com/wahyuwiyoko/dotfiles)

[![wahyuwiyoko](https://raw.githubusercontent.com/wahyuwiyoko/dotfiles/main/screenshots/bspwm.png)](https://github.com/wahyuwiyoko/dotfiles)

### [Weirdchupacabra](https://github.com/Weirdchupacabra/void-dotfiles)

[![Weirdchupacabra](https://user-images.githubusercontent.com/107323289/237520032-cbca0d7f-517a-4d66-82f4-23c9261d3d44.png)](https://github.com/Weirdchupacabra/void-dotfiles)

### [zoddDev](https://github.com/zoddDev/dotfiles)

[![zoddDev](https://github.com/zodd18/Horizon/raw/master/screenshot.png)](https://github.com/zoddDev/dotfiles)
[![zoddDev](https://github.com/zoddDev/Nord/raw/master/screenshot.png)](https://github.com/zoddDev/dotfiles)
[![zoddDev](https://github.com/zodd18/Forest/raw/master/screenshot.png)](https://github.com/zoddDev/dotfiles)
[![zoddDev](https://github.com/zodd18/Doombox/raw/master/screenshot.png)](https://github.com/zoddDev/dotfiles)
[![zoddDev](https://github.com/zoddDev/GruvboxMaterial/raw/main/screenshot.png)](https://github.com/zoddDev/dotfiles)
[![zoddDev](https://github.com/zodd18/PinkNord/raw/master/screenshot.png)](https://github.com/zoddDev/dotfiles)
[![zoddDev](https://github.com/zodd18/SolarizedDark/raw/master/screenshot.png)](https://github.com/zoddDev/dotfiles)
[![zoddDev](https://github.com/zodd18/Gruvbox/raw/master/screenshot.png)](https://github.com/zoddDev/dotfiles)
[![zoddDev](https://github.com/zoddDev/Dracula/raw/main/screenshot_.png)](https://github.com/zoddDev/dotfiles)
[![zoddDev](https://github.com/zoddDev/Ayu/raw/master/screenshot.png)](https://github.com/zoddDev/dotfiles)

## Cinnamon

### [SpreadiesInSpace](https://github.com/SpreadiesInSpace/cinnamon-dotfiles/tree/main)

[![SpreadiesInSpace](https://github.com/SpreadiesInSpace/cinnamon-dotfiles/blob/main/screenshots/NixOS-1.png?raw=true)](https://github.com/SpreadiesInSpace/cinnamon-dotfiles/tree/main)
[![SpreadiesInSpace](https://github.com/SpreadiesInSpace/cinnamon-dotfiles/blob/main/screenshots/Garuda-2.png?raw=true)](https://github.com/SpreadiesInSpace/cinnamon-dotfiles/tree/main)

## DkWM

### [AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/tree/dkwm)

[![AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/raw/dkwm/.github/assets/banner.png)](https://github.com/AlphaTechnolog/dotfiles/tree/dkwm)

## dwm

### [AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/tree/dwm)

[![AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/raw/dwm/.github/assets/banner.png)](https://github.com/AlphaTechnolog/dotfiles/tree/dwm)

### [codedsprit](https://github.com/codedsprit/dotfiles)

[![codedsprit](https://github.com/codedsprit/dotfiles/raw/main/assets/artix.png)](https://github.com/codedsprit/dotfiles)

### [Dorovich](https://github.com/Dorovich/dotfiles)

[![Dorovich](https://github.com/Dorovich/dotfiles/raw/main/scr/5-1.png)](https://github.com/Dorovich/dotfiles)
[![Dorovich](https://github.com/Dorovich/dotfiles/raw/main/scr/5-2.png)](https://github.com/Dorovich/dotfiles)

### [Gwynsav](https://github.com/Gwynsav/dwmrice)

[![Gwynsav](https://github.com/Gwynsav/dwmrice/raw/main/.gitignore/dwmarticblush.png)](https://github.com/Gwynsav/dwmrice)

### [juacq97](https://github.com/juacq97/dotfiles)

[![juacq97](https://github.com/juacq97/dotfiles/raw/master/screenshot.png)](https://github.com/juacq97/dotfiles)

### [nxb1t](https://github.com/nxb1t/dwm-dots)

[![nxb1t](https://user-images.githubusercontent.com/95064572/230124343-e46c7145-53ba-40e2-8049-856f6713b07c.png)](https://github.com/nxb1t/dwm-dots)

### [raihanadf](https://github.com/raihanadf/dotfiles)

[![raihanadf](https://github.com/raihanadf/dotfiles/raw/main/config/screenshot.png)](https://github.com/raihanadf/dotfiles)

### [seeingangelz](https://github.com/seeingangelz/dotfiles)

[![seeingangelz](https://user-images.githubusercontent.com/123886904/252125154-ecf02580-1666-487d-ae65-046b6e053dd1.png)](https://github.com/seeingangelz/dotfiles)

## Gnome

### [1amSimp1e](https://github.com/1amSimp1e/dots)

[![1amSimp1e](https://raw.githubusercontent.com/iamverysimp1e/dots/main/ScreenShots/Gnome_Rice/Rice1.png)](https://github.com/1amSimp1e/dots)
[![1amSimp1e](https://raw.githubusercontent.com/iamverysimp1e/dots/main/ScreenShots/Gnome_Rice/Rice2.png)](https://github.com/1amSimp1e/dots)
[![1amSimp1e](https://raw.githubusercontent.com/iamverysimp1e/dots/main/ScreenShots/Gnome_Rice/Rice3.png)](https://github.com/1amSimp1e/dots)

### [AviVarma](https://github.com/AviVarma/Dotfiles)

[![AviVarma](https://github.com/AviVarma/Dotfiles/raw/main/images/Catppuccin-Mocha.png)](https://github.com/AviVarma/Dotfiles)

### [Comiclyy](https://github.com/Comiclyy/dotfiles/tree/dotfiles-gnome)

[![Comiclyy](https://raw.githubusercontent.com/Comicly69/dotfiles/main/assets/screenza.png)](https://github.com/Comiclyy/dotfiles/tree/dotfiles-gnome)

### [GabrielTenma](https://github.com/GabrielTenma/dotfiles-gnm)

[![GabrielTenma](https://raw.githubusercontent.com/GabrielTenma/dotfiles-gnm/theme-graphitedark/.assets/desktop-1.png)](https://github.com/GabrielTenma/dotfiles-gnm)
[![GabrielTenma](https://raw.githubusercontent.com/GabrielTenma/dotfiles-gnm/theme-graphitedark/.assets/desktop-2.png)](https://github.com/GabrielTenma/dotfiles-gnm)

### [NeuronSooup](https://github.com/NeuronSooup/Gnome-topbar-le-dots)

[![NeuronSooup](https://github.com/NeuronSooup/Gnome-topbar-le-dots/assets/97825131/bc21f274-34dd-4260-8b03-42f4461da8d1)](https://github.com/NeuronSooup/Gnome-topbar-le-dots)

## Herbstluftwm

### [breddie-normie](https://github.com/breddie-normie/dotfiles)

[![breddie-normie](https://user-images.githubusercontent.com/127048853/227787358-37112254-2e5c-4c4e-97f8-0ae542073477.png)](https://github.com/breddie-normie/dotfiles)

### [nuxshed](https://github.com/nuxshed/dotfiles)

[![nuxshed](https://github.com/nuxshed/dotfiles/raw/main/rice.png)](https://github.com/nuxshed/dotfiles)

### [scourii](https://github.com/scourii/.dotfiles/tree/main)

[![scourii](https://user-images.githubusercontent.com/64178604/119293177-dba58d00-bc1f-11eb-9f8c-33b4a0626d50.png)](https://github.com/scourii/.dotfiles/tree/main)
[![scourii](https://camo.githubusercontent.com/d30437049d8a1996ac1233b4b70ae27c0983c70107b1c8b727a731e820f4de57/68747470733a2f2f63646e2e646973636f72646170702e636f6d2f6174746163686d656e74732f3734333632383239353636383439383434332f3832383637353934373934323131373337362f756e6b6e6f776e2e706e67)](https://github.com/scourii/.dotfiles/tree/main)

## Hyprland

### [1amSimp1e](https://github.com/1amSimp1e/dots)

[![1amSimp1e](https://raw.githubusercontent.com/iamverysimp1e/dots/late-night-%F0%9F%8C%83/ScreenShots/HyprLand/preview.png)](https://github.com/1amSimp1e/dots)
[![1amSimp1e](https://raw.githubusercontent.com/1amSimp1e/dots/balcony%F0%9F%9A%8A/ScreenShots/HyprLand/Rice.png)](https://github.com/1amSimp1e/dots)

### [ahujaankush](https://github.com/ahujaankush/AetherizedDots)

[![ahujaankush](https://github.com/ahujaankush/AetherizedDots/raw/main/showcase/1.png)](https://github.com/ahujaankush/AetherizedDots)

### [cafreo](https://github.com/cafreo/hyprland-intergalactic)

[![cafreo](https://github.com/cafreo/hyprland-intergalactic/raw/main/screenshots/screenshot2.png)](https://github.com/cafreo/hyprland-intergalactic)

### [command-z-z](https://github.com/command-z-z/Arch-dotfiles)

[![command-z-z](https://github.com/command-z-z/Arch-dotfiles/raw/main/img/img1.png)](https://github.com/command-z-z/Arch-dotfiles)

### [conrad-mo](https://github.com/conrad-mo/hyprland-dot)

[![conrad-mo](https://github.com/conrad-mo/hyprland-dot/raw/master/screenshot.png?raw=true)](https://github.com/conrad-mo/hyprland-dot)

### [dankdezpair](https://github.com/dankdezpair/hypr.files-V2)

[![dankdezpair](https://user-images.githubusercontent.com/55618993/240282779-89ad1f68-1e9a-4c46-b3d0-3b3a43d4b9b8.png)](https://github.com/dankdezpair/hypr.files-V2)
[![dankdezpair](https://user-images.githubusercontent.com/55618993/240282820-26096051-2daf-407b-a075-89c120c6c1db.png)](https://github.com/dankdezpair/hypr.files-V2)

### [debuggyo](https://github.com/debuggyo/dots)

[![debuggyo](https://user-images.githubusercontent.com/96699361/218343617-91b59916-a4f9-4635-b9ab-360a80ac4234.png)](https://github.com/debuggyo/dots)

### [dragoshr1234](https://github.com/dragoshr1234/hyprland-rotaru)

[![dragoshr1234](https://user-images.githubusercontent.com/23416091/238871442-fa00eec6-1874-43d3-b884-e900db80093b.png)](https://github.com/dragoshr1234/hyprland-rotaru)

### [end-4](https://github.com/end-4/dots-hyprland/)

[![end-4](https://github.com/end-4/dots-hyprland/raw/main/assets/novelknock-yellow.png)](https://github.com/end-4/dots-hyprland/)
[![end-4](https://github.com/end-4/dots-hyprland/raw/main/assets/screenshot-hybrid.png)](https://github.com/end-4/dots-hyprland/)
[![end-4](https://github.com/end-4/dots-hyprland/raw/main/assets/windoes-3.png)](https://github.com/end-4/dots-hyprland/)

### [h1tarxeth](https://github.com/h1tarxeth/Dots_infinity_horizon)

[![h1tarxeth](https://raw.githubusercontent.com/h1tarxeth/Dots/main/ScreenShots/1.jpeg)](https://github.com/h1tarxeth/Dots_infinity_horizon)
[![h1tarxeth](https://raw.githubusercontent.com/h1tarxeth/Dots/main/ScreenShots/3.jpeg)](https://github.com/h1tarxeth/Dots_infinity_horizon)

### [HeinzDev](https://github.com/HeinzDev/Hyprland-dotfiles)

[![HeinzDev](https://camo.githubusercontent.com/c26248fa7e1940bf8c07f615c8f5dd0e9435d7e358aca78a9ec16417b25ce746/68747470733a2f2f692e696d6775722e636f6d2f53345854305a462e706e67)](https://github.com/HeinzDev/Hyprland-dotfiles)

### [hobosyo](https://github.com/hobosyo/pointfichiers/tree/hyprland-kanagawa)

[![hobosyo](https://camo.githubusercontent.com/ff4f53f14b0a0c457430cc9d661eb2407740e81e17f47d3e22945b01bb941a7e/68747470733a2f2f6d656469612e646973636f72646170702e6e65742f6174746163686d656e74732f3633353632353931373632333832383532302f313132353737333936343932313237383531372f696d6167652e706e673f77696474683d31313239266865696768743d363336)](https://github.com/hobosyo/pointfichiers/tree/hyprland-kanagawa)

### [justinlime](https://github.com/justinlime/dotfiles)
[![justinlime](https://camo.githubusercontent.com/3f25d8d7e550dc4ef75310a64e42e90f6628c1436fafe6d7f23d0a1f5f23edc9/68747470733a2f2f696d6775722e636f6d2f4273576b58437a2e706e67)](https://github.com/justinlime/dotfiles)
[![justinlime](https://camo.githubusercontent.com/053fe146d765d5624f642089a81d09b805a09c41022093fbcf0db1ec4a176309/68747470733a2f2f696d6775722e636f6d2f463467475271612e706e67)](https://github.com/justinlime/dotfiles)

### [Knightfall01](https://github.com/Knightfall01/Hyprland-i3/tree/master)

[![Knightfall01](https://github.com/Knightfall01/Hyprland-i3/raw/master/assets/ImagesShowcase.png)](https://github.com/Knightfall01/Hyprland-i3/tree/master)
[![Knightfall01](https://user-images.githubusercontent.com/107239398/218796171-0a421c4d-6ea4-42e2-8203-f8942f3df8b0.png)](https://github.com/Knightfall01/Hyprland-i3/tree/master)
[![Knightfall01](https://user-images.githubusercontent.com/107239398/219070968-a5e11084-dcf9-4cdf-885d-eb59ef96f005.png)](https://github.com/Knightfall01/Hyprland-i3/tree/master)

### [MathisP75](https://github.com/MathisP75/summer-day-and-night)

[![MathisP75](https://github.com/MathisP75/summer-day-and-night/raw/main/screenshots/day-night.png)](https://github.com/MathisP75/summer-day-and-night)

### [maxtaran2010](https://github.com/maxtaran2010/hyprland-rice)

[![maxtaran2010](https://github.com/maxtaran2010/hyprland-rice/raw/main/2023-07-07-193611_hyprshot.png)](https://github.com/maxtaran2010/hyprland-rice)

### [Narmis-E](https://github.com/Narmis-E/hyprland-dots)

[![Narmis-E](https://user-images.githubusercontent.com/109248529/230755089-6eb99aa0-2015-4ba4-b06c-8b60ab06b934.png)](https://github.com/Narmis-E/hyprland-dots)
[![Narmis-E](https://github.com/Narmis-E/hyprland-dots/raw/main/tokyonight/images/rice.png)](https://github.com/Narmis-E/hyprland-dots)
[![Narmis-E](https://user-images.githubusercontent.com/109248529/221400035-32215c77-6bc4-4779-b318-4b7d46604a7e.png)](https://github.com/Narmis-E/hyprland-dots)

### [ozwaldorf](https://github.com/ozwaldorf/dotfiles)

[![ozwaldorf](https://user-images.githubusercontent.com/8976745/249312484-3d8f346c-781e-478b-b7cc-2aab2b7b856d.png)](https://github.com/ozwaldorf/dotfiles)

### [prasanthrangan](https://github.com/prasanthrangan/hyprdots)

[![prasanthrangan](https://raw.githubusercontent.com/prasanthrangan/hyprdots/main/Source/assets/theme_mocha_1.png)](https://github.com/prasanthrangan/hyprdots)
[![prasanthrangan](https://raw.githubusercontent.com/prasanthrangan/hyprdots/main/Source/assets/theme_latte_1.png)](https://github.com/prasanthrangan/hyprdots)
[![prasanthrangan](https://raw.githubusercontent.com/prasanthrangan/hyprdots/main/Source/assets/theme_decay_1.png)](https://github.com/prasanthrangan/hyprdots)
[![prasanthrangan](https://raw.githubusercontent.com/prasanthrangan/hyprdots/main/Source/assets/theme_rosine_1.png)](https://github.com/prasanthrangan/hyprdots)
[![prasanthrangan](https://raw.githubusercontent.com/prasanthrangan/hyprdots/main/Source/assets/theme_tokyo_1.png)](https://github.com/prasanthrangan/hyprdots)
[![prasanthrangan](https://raw.githubusercontent.com/prasanthrangan/hyprdots/main/Source/assets/theme_maura_1.png)](https://github.com/prasanthrangan/hyprdots)

### [Redyf](https://github.com/Redyf/nixdots)

[![Redyf](https://github.com/Redyf/nixdots/raw/main/assets/rice.png)](https://github.com/Redyf/nixdots)

### [RumiAxolotl](https://github.com/RumiAxolotl/hyprland-config)

[![RumiAxolotl](https://github.com/RumiAxolotl/hyprland-config/raw/main/darkmode.png)](https://github.com/RumiAxolotl/hyprland-config)

### [SimplyVoid](https://github.com/SimplyVoid/hyprland-dots)

[![SimplyVoid](https://github.com/SimplyVoid/hyprland-dots/raw/main/preview/4.jpeg)](https://github.com/SimplyVoid/hyprland-dots)

### [Spagett1](https://github.com/Spagett1/dotfiles)

[![Spagett1](https://user-images.githubusercontent.com/77225642/240519760-99e2d1be-cc6d-42e6-a025-e39cbcf4ff3b.png)](https://github.com/Spagett1/dotfiles)

### [Stetsed](https://github.com/Stetsed/.dotfiles)

[![Stetsed](https://github.com/Stetsed/.dotfiles/raw/main/.bin/show/extra/firefox.png)](https://github.com/Stetsed/.dotfiles)

### [Yorubae](https://github.com/Yorubae/wayland-dotfiles)

[![Yorubae](https://github.com/Yorubae/wayland-dotfiles/raw/main/preview/ss4.png)](https://github.com/Yorubae/wayland-dotfiles)

## i3wm

### [b1337xyz](https://github.com/b1337xyz/config/tree/xp)

[![b1337xyz](https://github.com/b1337xyz/config/raw/xp/screenshot.jpg)](https://github.com/b1337xyz/config/tree/xp)

### [BIBJAW](https://github.com/BIBJAW/Final_Rice)

[![BIBJAW](https://github.com/BIBJAW/i3-gruvbox/raw/main/screenshots/desktop.png)](https://github.com/BIBJAW/Final_Rice)

### [bibjaw99](https://github.com/bibjaw99/workstation)

[![bibjaw99](https://github.com/bibjaw99/workstation/raw/master/screenshots/polybar.png?raw=true)](https://github.com/bibjaw99/workstation)
[![bibjaw99](https://github.com/bibjaw99/workstation/raw/master/screenshots/i3.png?raw=true)](https://github.com/bibjaw99/workstation)

### [Blxckmage](https://github.com/Blxckmage/dotfiles)

[![Blxckmage](https://github.com/Blxckmage/dotfiles/blob/main/.assets/picture-1.png?raw=true)](https://github.com/Blxckmage/dotfiles)

### [bryant-the-coder](https://github.com/bryant-the-coder/dotfiles)

[![bryant-the-coder](https://user-images.githubusercontent.com/92417638/192753856-be6e4fc3-fea9-49ff-a947-35fad8f624ab.png)](https://github.com/bryant-the-coder/dotfiles)

### [fathulfahmy](https://github.com/fathulfahmy/dotfiles-linux/)

[![fathulfahmy](https://github.com/fathulfahmy/dotfiles-linux/raw/main/assets/screenshots/xfce-showcase.png)](https://github.com/fathulfahmy/dotfiles-linux/)

### [sommaa](https://github.com/sommaa/Mantis)

[![sommaa](https://user-images.githubusercontent.com/120776791/229539421-8e6aad53-e68e-4bc5-88d9-16ae9c0a3f44.png)](https://github.com/sommaa/Mantis)

### [SunoBB](https://github.com/SunoBB/dot)

[![SunoBB](https://github.com/SunoBB/dot/raw/main/background/preview/_028.jpg)](https://github.com/SunoBB/dot)

### [TKK13909](https://github.com/TKK13909/dotfiles)

[![TKK13909](https://github.com/TKK13909/dotfiles/raw/main/screens/screen4.png)](https://github.com/TKK13909/dotfiles)

### [Vallen217](https://github.com/Vallen217/dotfiles)

[![Vallen217](https://github.com/Vallen217/dotfiles/raw/master/screenshots/i3_rice_1.png)](https://github.com/Vallen217/dotfiles)
[![Vallen217](https://github.com/Vallen217/dotfiles/blob/master/screenshots/i3_rice_2.png)](https://github.com/Vallen217/dotfiles)

### [wahyuwiyoko](https://github.com/wahyuwiyoko/dotfiles)

[![wahyuwiyoko](https://raw.githubusercontent.com/wahyuwiyoko/dotfiles/main/screenshots/i3.png)](https://github.com/wahyuwiyoko/dotfiles)

### [zemmsoares](https://github.com/zemmsoares/.dotfiles)

[![zemmsoares](https://github.com/zemmsoares/.dotfiles/raw/master/screenshot.png)](https://github.com/zemmsoares/.dotfiles)

## KDE

### [ComplexPlatform](https://github.com/ComplexPlatform/KDE-dotfiles)

[![ComplexPlatform](https://raw.githubusercontent.com/ComplexPlatform/KDE-dotfiles/master/previews/neutral.png)](https://github.com/ComplexPlatform/KDE-dotfiles)
[![ComplexPlatform](https://raw.githubusercontent.com/ComplexPlatform/KDE-dotfiles/master/previews/cherryblossom.png)](https://github.com/ComplexPlatform/KDE-dotfiles)
[![ComplexPlatform](https://raw.githubusercontent.com/ComplexPlatform/KDE-dotfiles/master/previews/urban.png)](https://github.com/ComplexPlatform/KDE-dotfiles)
[![ComplexPlatform](https://raw.githubusercontent.com/ComplexPlatform/KDE-dotfiles/master/previews/flowers.png)](https://github.com/ComplexPlatform/KDE-dotfiles)
[![ComplexPlatform](https://raw.githubusercontent.com/ComplexPlatform/KDE-dotfiles/master/previews/coffee.png)](https://github.com/ComplexPlatform/KDE-dotfiles)
[![ComplexPlatform](https://raw.githubusercontent.com/ComplexPlatform/KDE-dotfiles/master/previews/foggy-mountain.png)](https://github.com/ComplexPlatform/KDE-dotfiles)

## LeftWM

### [almqv](https://github.com/almqv/dotfiles)

[![almqv](https://github.com/almqv/dotfiles/raw/master/preview.png)](https://github.com/almqv/dotfiles)

## Lightdm

### [TheWisker](https://github.com/TheWisker/Shikai)

[![TheWisker](https://github.com/TheWisker/Shikai/raw/master/assets/screenshots/Screenshot_One.png)](https://github.com/TheWisker/Shikai)

## Openbox

### [AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/tree/openbox)

[![AlphaTechnolog](https://github.com/AlphaTechnolog/dotfiles/raw/openbox/.github/assets/banner.png)](https://github.com/AlphaTechnolog/dotfiles/tree/openbox)

### [Narmis-E](https://github.com/Narmis-E/openbox-everforest)

[![Narmis-E](https://user-images.githubusercontent.com/109248529/247356751-87386519-cfb3-48d4-9b8d-2976411c8226.png)](https://github.com/Narmis-E/openbox-everforest)

### [owl4ce](https://github.com/owl4ce/dotfiles/tree/ng)

[![owl4ce](https://camo.githubusercontent.com/2f040ef453832974b2f6fe50be701cfeec344ae752abb32f2ad747eb665cd6ab/68747470733a2f2f692e696d6775722e636f6d2f377057673476522e6a7067)](https://github.com/owl4ce/dotfiles/tree/ng)

## Qtile

### [Barbaross93](https://github.com/Barbaross93/Nebula)

[![Barbaross93](https://github.com/Barbaross93/Nebula/raw/main/Scrots/1650648471.png)](https://github.com/Barbaross93/Nebula)
[![Barbaross93](https://github.com/Barbaross93/Nebula/raw/main/Scrots/1650648454.png)](https://github.com/Barbaross93/Nebula)

### [Darkkal44](https://github.com/Darkkal44/Cozytile)

[![Darkkal44](https://github.com/Darkkal44/Cozytile/raw/main/Assets/preview.png)](https://github.com/Darkkal44/Cozytile)

### [diegorezm](https://github.com/diegorezm/dotfiles-d/tree/master)

[![diegorezm](https://github.com/diegorezm/dotfiles-d/raw/master/desktop_print.png)](https://github.com/diegorezm/dotfiles-d/tree/master)

### [Fluffy-Bean](https://github.com/Fluffy-Bean/dots)

[![Fluffy-Bean](https://github.com/Fluffy-Bean/dots/raw/main/.github/uwu.png)](https://github.com/Fluffy-Bean/dots)

### [gibranlp](https://github.com/gibranlp/QARSlp)

[![gibranlp](https://github.com/gibranlp/QARSlp/blob/develop/screenshots/QARSlp2.png?raw=true)](https://github.com/gibranlp/QARSlp)
[![gibranlp](https://github.com/gibranlp/QARSlp/blob/develop/screenshots/QARSlp1.png?raw=true)](https://github.com/gibranlp/QARSlp)
[![gibranlp](https://github.com/gibranlp/QARSlp/blob/develop/screenshots/Slash1.png?raw=true)](https://github.com/gibranlp/QARSlp)

### [Hamza12700](https://github.com/Hamza12700/DotFiles)

[![Hamza12700](https://github.com/Hamza12700/DotFiles/raw/main/screenshots/desktop.png)](https://github.com/Hamza12700/DotFiles)

### [shayanaqvi](https://github.com/shayanaqvi/dotfilets)

[![shayanaqvi](https://github.com/shayanaqvi/dotfilets/raw/main/screenshots/desktop.png)](https://github.com/shayanaqvi/dotfilets)

## Riverwm

### [theCode-Breaker](https://github.com/theCode-Breaker/riverwm)

[![theCode-Breaker](https://raw.githubusercontent.com/theCode-Breaker/riverwm/main/screenshots/1.png)](https://github.com/theCode-Breaker/riverwm)
[![theCode-Breaker](https://raw.githubusercontent.com/theCode-Breaker/riverwm/main/screenshots/3.png)](https://github.com/theCode-Breaker/riverwm)

## Sway

### [eoli3n](https://github.com/eoli3n/dotfiles)

[![eoli3n](https://github.com/eoli3n/dotfiles/raw/master/screenshots/sway.png)](https://github.com/eoli3n/dotfiles)

### [hifinerd](https://github.com/hifinerd/lugia-sway-dots)

[![hifinerd](https://github.com/hifinerd/lugia-sway-dots/raw/main/lugiasway.png)](https://github.com/hifinerd/lugia-sway-dots)

### [KubqoA](https://github.com/KubqoA/dotfiles)

[![KubqoA](https://github.com/KubqoA/dotfiles/raw/main/hosts/unacorda/screenshots/clean.jpg)](https://github.com/KubqoA/dotfiles)

### [RicArch97](https://github.com/RicArch97/nixos-config)

[![RicArch97](https://user-images.githubusercontent.com/61013287/220374702-6bce9bd2-05cd-4023-8a66-d1c6beb18cb6.png)](https://github.com/RicArch97/nixos-config)

### [Sunglas](https://github.com/Sunglas/laptop-dots-wl)

[![Sunglas](https://camo.githubusercontent.com/e20cd13bfb549e92533f92b5db03564fb8203bd5d185a55d9506d32406741d46/68747470733a2f2f6d656469612e646973636f72646170702e6e65742f6174746163686d656e74732f3633353632353931373632333832383532302f313038353238333430303631303438383434322f726963655f636f6d702e706e67)](https://github.com/Sunglas/laptop-dots-wl)

### [viperML](https://github.com/viperML/dotfiles)

[![viperML](https://github.com/viperML/dotfiles/raw/master/misc/img/20230129.png)](https://github.com/viperML/dotfiles)

### [wahyuwiyoko](https://github.com/wahyuwiyoko/dotfiles)

[![wahyuwiyoko](https://raw.githubusercontent.com/wahyuwiyoko/dotfiles/main/screenshots/sway.png)](https://github.com/wahyuwiyoko/dotfiles)

## Xfce

### [fathulfahmy](https://github.com/fathulfahmy/dotfiles-linux/)

[![fathulfahmy](https://github.com/fathulfahmy/dotfiles-linux/raw/main/assets/screenshots/xfce-showcase.png)](https://github.com/fathulfahmy/dotfiles-linux/)

## Xmonad

### [Icy-Thought](https://github.com/Icy-Thought/snowflake)

[![Icy-Thought](https://github.com/Icy-Thought/snowflake/raw/main/.github/assets/themes/rose-pine/xmonad.png)](https://github.com/Icy-Thought/snowflake)
[![Icy-Thought](https://github.com/Icy-Thought/snowflake/raw/main/.github/assets/themes/rose-pine/neovim.png)](https://github.com/Icy-Thought/snowflake)

### [TheMidnightShow](https://github.com/TheMidnightShow/dotfiles)

[![TheMidnightShow](https://camo.githubusercontent.com/20dda8642c5cc8ac3142500eab251846d19db42d65e78f8f80dd3bfc17c979b6/68747470733a2f2f6d656469612e646973636f72646170702e6e65742f6174746163686d656e74732f3837373235323037383532313638383132342f313130343835333236363835383235383534332f323032332d30352d30372d3133323635365f3235363078313038305f7363726f742e706e673f77696474683d393331266865696768743d333933)](https://github.com/TheMidnightShow/dotfiles)

## Yabai

### [command-z-z](https://github.com/command-z-z/dotfiles)

[![command-z-z](https://github.com/command-z-z/dotfiles/raw/main/img/img1.png)](https://github.com/command-z-z/dotfiles)
[![command-z-z](https://github.com/command-z-z/dotfiles/raw/main/img/img2.png)](https://github.com/command-z-z/dotfiles)

### [FelixKratz](https://github.com/FelixKratz/dotfiles)

[![FelixKratz](https://user-images.githubusercontent.com/22680421/221013836-9c06a95a-d33b-48d0-bf1e-ae72e78eb6a1.png)](https://github.com/FelixKratz/dotfiles)

### [QRX53](https://github.com/QRX53/dotfiles)

[![QRX53](https://camo.githubusercontent.com/475595316fd93d6001d3e73a544ad7dff0ae504eec79298c6435b67740c10fb2/68747470733a2f2f6d656469612e646973636f72646170702e6e65742f6174746163686d656e74732f3831383535323935333133323534383137392f313035323330373134343434313037333732342f53637265656e73686f745f323032322d31322d31335f61745f31322e32392e34365f504d2e706e673f77696474683d31373230266865696768743d31303735)](https://github.com/QRX53/dotfiles)

### [tcmmichaelb139](https://github.com/tcmmichaelb139/.dotfiles)

[![tcmmichaelb139](https://github.com/tcmmichaelb139/.dotfiles/raw/main/assets/desktop-blank.png)](https://github.com/tcmmichaelb139/.dotfiles)
[![tcmmichaelb139](https://github.com/tcmmichaelb139/.dotfiles/raw/main/assets/desktop-full.png)](https://github.com/tcmmichaelb139/.dotfiles)

### [ZhongXiLu](https://github.com/ZhongXiLu/dotfiles)

[![ZhongXiLu](https://user-images.githubusercontent.com/25816683/135727227-9a02917c-a1be-4790-bf46-3a91cbc29453.png)](https://github.com/ZhongXiLu/dotfiles)
[![ZhongXiLu](https://user-images.githubusercontent.com/25816683/135727264-25800513-c2b9-4eb9-ab33-0fd17b6cbcec.png)](https://github.com/ZhongXiLu/dotfiles)

# Contribute

We welcome contributions from the community. If you have a unique rice that you'd like to showcase, please refer to our [Contribution Guidelines](CONTRIBUTING.md).

# License

To the extent possible under law, Miguel Soares has waived all copyright and related or neighboring rights to this work under the [CC0 1.0 Universal](LICENSE) license.

**Disclaimer:** This repository contains links to other repositories. While we aim to only link to repositories of high quality, we cannot guarantee the safety or reliability of the content found within. Please be aware of this before using anyone else's scripts or dotfiles.


text:
#!/usr/bin/env python3
"""Plot the live microphone signal(s) with matplotlib."""
import argparse
from queue import Queue, Empty

def int_or_str(text):
    """Helper function for argument parsing."""
    try:
        return int(text)
    except ValueError:
        return text

parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument(
    '-l', '--list-devices', action='store_true',
    help='show list of audio devices and exit')
parser.add_argument(
    '-d', '--device', type=int_or_str,
    help='input device (numeric ID or substring)')
parser.add_argument(
    '-w', '--window', type=float, default=200, metavar='DURATION',
    help='visible time slot (default: %(default)s ms)')
parser.add_argument(
    '-i', '--interval', type=float, default=30,
    help='minimum time between plot updates (default: %(default)s ms)')
parser.add_argument(
    '-b', '--blocksize', type=int, help='block size (in samples)')
parser.add_argument(
    '-r', '--samplerate', type=float, help='sampling rate of audio device')
parser.add_argument(
    '-n', '--downsample', type=int, default=1, metavar='N',
    help='display every Nth sample (default: %(default)s)')
parser.add_argument(
    'channels', type=int, default=[1,2], nargs='*', metavar='CHANNEL',
    help='input channels for estimation of direction (default: the first two)')
parser.add_argument(
    '-D', '--distance', type=float, default=0.2, metavar='DISTANCE',
    help='distance of the two microphones channels (default: $(default) m)')
args = parser.parse_args()
if any(c < 1 for c in args.channels):
    parser.error('argument CHANNEL: must be >= 1')
mapping = [c - 1 for c in args.channels]  # Channel numbers start with 1
queue = Queue()

def audio_callback(indata, frames, time, status):
    """This is called (from a separate thread) for each audio block."""
    if status:
        print(status, flush=True)
    # Fancy indexing with mapping creates a (necessary!) copy:
    queue.put(indata[::args.downsample, mapping])

def update_plot(frame):
    """This is called by matplotlib for each plot update.

    Typically, audio callbacks happen more frequently than plot updates,
    therefore the queue tends to contain multiple blocks of audio data.

    """
    global newdata
    global corr
    block = True  # The first read from the queue is blocking ...

    while True:
        try:
            data = queue.get(block=block)
        except Empty:
            break
        shift = len(data)

        newdata = np.roll(newdata, -shift, axis=0)
        newdata[-shift:,:] = data
        block=False # ... all further reads are non-blocking

    corr = np.correlate(newdata[:,0], newdata[:,1], mode='full')
    corr = np.abs(corr)/np.max(np.max(corr))

    lines[0].set_ydata(corr)

    return lines

try:
    from matplotlib.animation import FuncAnimation
    import matplotlib.pyplot as plt
    import numpy as np
    import sounddevice as sd

    if args.list_devices:
        print(sd.query_devices())
        parser.exit()
    if args.samplerate is None:
        device_info = sd.query_devices(args.device, 'input')
        args.samplerate = device_info['default_samplerate']

    length = int(args.window * args.samplerate/ (1000 * args.downsample))
    ran = args.distance/343*args.samplerate/args.downsample
    newdata = np.zeros((length, len(args.channels)))
    corr = np.zeros((2*length-1))

    phi = np.linspace(0, 180, 6);
    phi = np.append(phi, 90)
    xtics = ran*np.cos(phi*np.pi/180) +length-1
    xlabels = phi

    fig, ax = plt.subplots()
    lines = ax.plot(corr)
    ax.axis((-ran+length-1, ran+length-1, 0, 1))
    ax.set_xticks(xtics)
    ax.set_xticklabels(xlabels)
    ax.yaxis.grid(True)
    fig.tight_layout(pad=0)

    stream = sd.InputStream(
        device=args.device, channels=max(args.channels),
        samplerate=args.samplerate, callback=audio_callback)
    ani = FuncAnimation(fig, update_plot, interval=args.interval, blit=True)
    with stream:
        plt.show()
except Exception as e:
    parser.exit(type(e).__name__ + ': ' + str(e))

repo_language: Jupyter Notebook


text:
name: mystiasp
channels:
  - conda-forge
  - defaults
dependencies:
  - appnope=0.1.0
  - argon2-cffi=20.1.0
  - async_generator=1.10
  - attrs=20.3.0
  - autopep8=1.5.4
  - backcall=0.2.0
  - backports=1.0
  - backports.functools_lru_cache=1.6.1
  - bleach=3.2.1
  - brotlipy=0.7.0
  - ca-certificates=2020.11.8
  - certifi=2020.11.8
  - cffi=1.14.4
  - chardet=3.0.4
  - cryptography=3.2.1
  - cycler=0.10.0
  - dbus=1.13.6
  - decorator=4.4.2
  - defusedxml=0.6.0
  - entrypoints=0.3
  - expat=2.2.9
  - flake8=3.8.4
  - freetype=2.10.4
  - gettext=0.19.8.1
  - glib=2.66.3
  - icu=67.1
  - idna=2.10
  - importlib-metadata=3.1.0
  - importlib_metadata=3.1.0
  - ipykernel=5.3.4
  - ipython=7.19.0
  - ipython_genutils=0.2.0
  - ipywidgets=7.5.1
  - jedi=0.17.2
  - jinja2=2.11.2
  - jpeg=9d
  - json5=0.9.5
  - jsonschema=3.2.0
  - jupyter=1.0.0
  - jupyter_client=6.1.7
  - jupyter_console=6.2.0
  - jupyter_contrib_core=0.3.3
  - jupyter_contrib_nbextensions=0.5.1
  - jupyter_core=4.7.0
  - jupyter_highlight_selected_word=0.2.0
  - jupyter_latex_envs=1.4.6
  - jupyter_nbextensions_configurator=0.4.1
  - jupyterlab=2.2.9
  - jupyterlab_pygments=0.1.2
  - jupyterlab_server=1.2.0
  - kiwisolver=1.3.1
  - krb5=1.17.2
  - libblas=3.9.0
  - libcblas=3.9.0
  - libclang=10.0.1
  - libcxx=11.0.0
  - libedit=3.1.20191231
  - libffi=3.2.1
  - libgfortran=5.0.0
  - libgfortran5=9.3.0
  - libglib=2.66.3
  - libiconv=1.16
  - liblapack=3.9.0
  - libllvm10=10.0.1
  - libopenblas=0.3.12
  - libpng=1.6.37
  - libpq=12.3
  - libsodium=1.0.18
  - libxml2=2.9.10
  - libxslt=1.1.33
  - llvm-openmp=11.0.0
  - lxml=4.6.1
  - lz4-c=1.9.2
  - markupsafe=1.1.1
  - matplotlib=3.1.3
  - matplotlib-base=3.1.3
  - mccabe=0.6.1
  - mistune=0.8.4
  - mysql-common=8.0.21
  - mysql-libs=8.0.21
  - nb_conda=2.2.1
  - nb_conda_kernels=2.3.0
  - nbclient=0.5.1
  - nbconvert=6.0.7
  - nbformat=5.0.8
  - ncurses=6.2
  - nest-asyncio=1.4.3
  - notebook=6.1.5
  - nspr=4.29
  - nss=3.47
  - numpy=1.19.4
  - openssl=1.1.1h
  - packaging=20.4
  - pandoc=2.11.2
  - pandocfilters=1.4.2
  - parso=0.7.1
  - pcre=8.44
  - pexpect=4.8.0
  - pickleshare=0.7.5
  - pip=20.2.4
  - prometheus_client=0.9.0
  - prompt-toolkit=3.0.8
  - prompt_toolkit=3.0.8
  - ptyprocess=0.6.0
  - pycodestyle=2.6.0
  - pycparser=2.20
  - pydocstyle=5.1.1
  - pyflakes=2.2.0
  - pygments=2.7.2
  - pyopenssl=19.1.0
  - pyparsing=2.4.7
  - pyqt=5.12.3
  - pyrsistent=0.17.3
  - pysocks=1.7.1
  - python=3.7.8
  - python-dateutil=2.8.1
  - python_abi=3.7
  - pyyaml=5.3.1
  - pyzmq=20.0.0
  - qt=5.12.9
  - qtconsole=5.0.1
  - qtpy=1.9.0
  - readline=8.0
  - requests=2.25.0
  - scipy=1.5.3
  - send2trash=1.5.0
  - setuptools=49.6.0
  - six=1.15.0
  - snowballstemmer=2.0.0
  - sqlite=3.33.0
  - terminado=0.9.1
  - testpath=0.4.4
  - tk=8.6.10
  - toml=0.10.2
  - tornado=6.1
  - traitlets=5.0.5
  - urllib3=1.25.11
  - wcwidth=0.2.5
  - webencodings=0.5.1
  - wheel=0.35.1
  - widgetsnbextension=3.5.1
  - xz=5.2.5
  - yaml=0.2.5
  - zeromq=4.3.3
  - zipp=3.4.0
  - zlib=1.2.11
  - zstd=1.4.5
  - pip:
    - pyqt5-sip==4.19.18
    - pyqtchart==5.12
    - pyqtwebengine==5.12.1
    - sfs==0.5.0
    - sounddevice==0.4.1
    - soundfile==0.10.3.post1


text:
"""Some tools used in the communication acoustics exercises."""
from __future__ import division  # Only needed for Python 2.x
import numpy as np
import os
from scipy import signal
try:
    from urllib.request import Request, urlopen  # Python 3.x
except ImportError:
    from urllib2 import Request, urlopen  # Python 2.x

def normalize(x, maximum=1, axis=None, out=None):
    """Normalize a signal to the given maximum (absolute) value.

    Parameters
    ----------
    x : array_like
        Input signal.
    maximum : float or sequence of floats, optional
        Desired (absolute) maximum value.  By default, the signal is
        normalized to +-1.0.  If a sequence is given, it must have the
        same length as the dimension given by `axis`.  Each sub-array
        along the given axis is normalized with one of the values.
    axis : int, optional
        Normalize along a given axis.
        By default, the flattened array is normalized.
    out : numpy.ndarray or similar, optional
        If given, the result is stored in `out` and `out` is returned.
        If `out` points to the same memory as `x`, the normalization
        happens in-place.

    Returns
    -------
    numpy.ndarray
        The normalized signal.

    """
    if axis is None and not np.isscalar(maximum):
        raise TypeError("If axis is not specified, maximum must be a scalar")

    maximum = np.max(np.abs(x), axis=axis) / maximum
    if axis is not None:
        maximum = np.expand_dims(maximum, axis=axis)
    return np.true_divide(x, maximum, out)

def fade(x, in_length, out_length=None, type='l', copy=True):
    """Apply fade in/out to a signal.

    If `x` is two-dimenstional, this works along the columns (= first
    axis).

    This is based on the *fade* effect of SoX, see:
    http://sox.sourceforge.net/sox.html

    The C implementation can be found here:
    http://sourceforge.net/p/sox/code/ci/master/tree/src/fade.c

    Parameters
    ----------
    x : array_like
        Input signal.
    in_length : int
        Length of fade-in in samples (contrary to SoX, where this is
        specified in seconds).
    out_length : int, optional
        Length of fade-out in samples.  If not specified, `fade_in` is
        used also for the fade-out.
    type : {'t', 'q', 'h', 'l', 'p'}, optional
        Select the shape of the fade curve: 'q' for quarter of a sine
        wave, 'h' for half a sine wave, 't' for linear ("triangular")
        slope, 'l' for logarithmic, and 'p' for inverted parabola.
        The default is logarithmic.
    copy : bool, optional
        If `False`, the fade is applied in-place and a reference to
        `x` is returned.

    """
    x = np.array(x, copy=copy)

    if out_length is None:
        out_length = in_length

    def make_fade(length, type):
        fade = np.arange(length) / length
        if type == 't':  # triangle
            pass
        elif type == 'q':  # quarter of sinewave
            fade = np.sin(fade * np.pi / 2)
        elif type == 'h':  # half of sinewave... eh cosine wave
            fade = (1 - np.cos(fade * np.pi)) / 2
        elif type == 'l':  # logarithmic
            fade = np.power(0.1, (1 - fade) * 5)  # 5 means 100 db attenuation
        elif type == 'p':  # inverted parabola
            fade = (1 - (1 - fade)**2)
        else:
            raise ValueError("Unknown fade type {0!r}".format(type))
        return fade

    # Using .T w/o [:] causes error: https://github.com/numpy/numpy/issues/2667
    x[:in_length].T[:] *= make_fade(in_length, type)
    x[len(x) - out_length:].T[:] *= make_fade(out_length, type)[::-1]
    return x

def db(x, power=False):
    """Convert a signal to decibel.

    Parameters
    ----------
    x : array_like
        Input signal.  Values of 0 lead to negative infinity.
    power : bool, optional
        If `power=False` (the default), `x` is squared before
        conversion.

    """
    with np.errstate(divide='ignore'):
        return 10 if power else 20 * np.log10(np.abs(x))

def blackbox(x, samplerate, axis=0):
    """Some unknown (except that it's LTI) digital system.

    Parameters
    ----------
    x : array_like
        Input signal.
    samplerate : float
        Sampling rate in Hertz.
    axis : int, optional
        The axis of the input data array along which to apply the
        system.  By default, this is the first axis.

    Returns
    -------
    numpy.ndarray
        The output signal.

    """
    # You are not supposed to look!
    b, a = signal.cheby1(8, 0.1, 3400 * 2 / samplerate)
    x = signal.lfilter(b, a, x, axis)
    b, a = signal.cheby1(4, 0.1, 300 * 2 / samplerate, 'high')
    return signal.lfilter(b, a, x, axis)

def blackbox_nonlinear(x, samplerate, axis=0):
    """Some unknown (except that it's non-linear) digital system.

    See Also
    --------
    blackbox

    """
    # You are not supposed to look!
    thr = 1/7
    out = blackbox(x, samplerate, axis)
    x = np.max(np.abs(out)) * thr
    return np.clip(out, -x, x, out=out)

class HttpFile(object):
    """based on http://stackoverflow.com/a/7852229/500098"""

    def __init__(self, url):
        self._url = url
        self._offset = 0
        self._content_length = None

    def __len__(self):
        if self._content_length is None:
            response = urlopen(self._url)
            self._content_length = int(response.headers["Content-length"])
        return self._content_length

    def read(self, size=-1):
        request = Request(self._url)
        if size < 0:
            end = len(self) - 1
        else:
            end = self._offset + size - 1
        request.add_header('Range', "bytes={0}-{1}".format(self._offset, end))
        data = urlopen(request).read()
        self._offset += len(data)
        return data

    def seek(self, offset, whence=os.SEEK_SET):
        if whence == os.SEEK_SET:
            self._offset = offset
        elif whence == os.SEEK_CUR:
            self._offset += offset
        elif whence == os.SEEK_END:
            self._offset = len(self) + offset
        else:
            raise ValueError("Invalid whence")

    def tell(self):
        return self._offset


text:
jupyter
notebook
ipykernel
matplotlib==3.1
numpy
scipy
sfs==0.5.0
sounddevice
soundfile


text:
Selected Topics in Audio Signal Processing - Exercises
======================================================

- [static web pages (using nbviewer)](http://nbviewer.ipython.org/github/spatialaudio/selected-topics-in-audio-signal-processing-exercises/blob/master/index.ipynb)
- [interactive web based (using mybinder)](https://mybinder.org/v2/gh/spatialaudio/selected-topics-in-audio-signal-processing-exercises/HEAD?filepath=index.ipynb)

- for local usage create a conda environment (`mystiasp`), clone the git repository
and start jupyter notebook or jupyter lab
  - created with `conda 4.9.2`
  - currently we rely on some older matplotlib version
  - `conda create -n mystiasp python=3.7.8 pip=20.2.4 numpy=1.19.4 scipy=1.5.3 matplotlib=3.1.3 jupyter=1.0.0 notebook=6.1.5 jupyterlab=2.2.9 pydocstyle=5.1.1 pycodestyle=2.6.0 autopep8=1.5.4 flake8=3.8.4 ipykernel=5.3.4 nb_conda=2.2.1 jupyter_nbextensions_configurator=0.4.1 jupyter_contrib_nbextensions=0.5.1`
  - `conda activate mystiasp`
  - we need to install pip packages since conda does not have them:
  - `pip install soundfile==0.10.3.post1`
  - `pip install sounddevice==0.4.1`
  - `python3 -m pip install sfs==0.5.0 --user`
  - make sure that the kernel is accesible for the notebooks:
  - `python -m ipykernel install --user --name mystiasp --display-name "mystiasp"`
  - now clone the repo:
  - `cd git` or whatever is a good root folder
  - `git clone https://github.com/spatialaudio/selected-topics-in-audio-signal-processing-exercises.git`
  - `cd selected-topics-in-audio-signal-processing-exercises/`
  - `jupyter notebook index.ipynb` or `jupyter lab index.ipynb`
  - make sure that `mystiasp` kernel is used for the notebooks
  - have fun with the playgrounds

Copyright
---------

The authors waive copyright and related rights in the work through the
[CC0 1.0 Universal public domain dedication](http://creativecommons.org/publicdomain/zero/1.0/).

This is supposed to be an [Open Educational Resource](https://en.wikipedia.org/wiki/Open_educational_resources) (OER).


text:
Some Audio Files for Use in the Exercises
=========================================

Filename: [rir_clap.wav](rir_clap.wav)
Description: The room impulse response (RIR) of a seminar room, measured by
  clapping two wooden boards together and recording the result with a
  microphone.
  Recorded with [Audacity][]
[![CC0 1.0 Public Domain Dedication](cc-zero.png)][CC0 1.0]

Filename: [xmas.wav](xmas.wav)
Description: "Wishing you a Merry Christmas, and a Happy New Year" (male voice)
Source: http://www.freesound.org/people/davidbain/sounds/136777/
[![CC0 1.0 Public Domain Dedication](cc-zero.png)][CC0 1.0]

Filenames: `xmas_*.wav`
Description: Modifications of `xmas.wav` (see above).
[![CC0 1.0 Public Domain Dedication](cc-zero.png)][CC0 1.0]

[Audacity]: http://audacityteam.org/
[CC0 1.0]: http://creativecommons.org/publicdomain/zero/1.0/
[CC BY-SA 3.0]: http://creativecommons.org/licenses/by-sa/3.0/


text:
# URP Iridescence Example
![](/Images/sample-01.png)

An example of iridescence shader extending the Lit shader in Unity URP.

Single-layered thin-film BRDF by [Laurent Belcour and Pascal Barla's paper](https://hal.archives-ouvertes.fr/hal-01518344/document).

## TODO
- [x] Single-layered thin-film (Soap bubble)
- [ ] Multi-layered thin-film
- [ ] Diffraction grating (CD-ROM)
- [ ] Biological iridescence (Morpho butterfly wing scales)

I'll need to further study the underlying principle of these iridescences and find a way to modeling them that suitable for real-time rendering.

## Requirement
- Unity 2019.3.2f1 or higher
- Universal Rendering Pipeline 7.4.1

## Screenshots
#### Thin-film
![](/Images/sample-02.png)
![](/Images/screenshot-thinfilm-metals.png)

## Resources
- Model - UnityBall by Unity Technologies
- Skybox - [TV Studio](https://hdrihaven.com/hdri/?h=tv_studio) by Sergej Majboroda
- Skybox - [Spruit Sunrise](https://hdrihaven.com/hdri/?h=spruit_sunrise) by Greg Zaal

## License
#### Code
CC0-1.0

#### All HDRIs from HDRIHaven.com
CC0

repo_name: CJT-Jackton/URP-Iridescence-Example

repo_language: HLSL


text:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
  m_ObjectHideFlags: 61
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_LastMaterialVersion: 2