# Tạo GUI

## OpenCore Picker Default

### Chuẩn bị

B1: Các bạn tải Open Canopy&#x20;

{% hint style="danger" %}
Phải đúng với phiên bản OpenCore
{% endhint %}

B2: Tải file Resource theo nguồn [này](https://github.com/acidanthera/OcBinaryData)

### Tiến hành

B1: Các bạn set config theo sau:

* Misc ⇒ Boot ⇒ PickerMode: `External`
* Misc ⇒ Boot ⇒ PickerAttributes : `1` (nếu muốn sử dụng chuột thì có thể đổi value thành `17`)
* Misc -> Boot -> PickerVariant : Chọn tùy theo sở thích&#x20;
  * Auto — Tự động chọn một bộ biểu tượng dựa trên màu DefaultBackground.
  * `Acidanthera\Syrah` — Bộ biểu tượng bình thường
  * `Acidanthera\GoldenGate`— Bộ biểu tượng Nouveau
  * `Acidanthera\Chardonnay`— Bộ biểu tượng vintage&#x20;

{% hint style="info" %}
Hoặc các bạn có thể set như sau:
{% endhint %}

* Misc -> Boot -> PickerVariant:
  * Default
  * Modern
  * Old

| Default (Syrah)                  | Modern (GoldenGate)              | Old (Chardonnay)                 |
| -------------------------------- | -------------------------------- | -------------------------------- |
| ![](/files/2dqwixrLNDNcGktYUciJ) | ![](/files/Qd8qyTRlVjGFMzQrcXMC) | ![](/files/G7jIDNaNKnUxoWPe9elk) |

B2: Thêm OpenCanopy vào `EFI ⇒ Drivers`

## Opencore Picker Themes

B1: Các bạn có thể tải các theme mà các bạn thích ở đây mình gợi là nên dùng app [tại đây](https://github.com/LAbyOne/OpenCore-Themes-Downloader)

B2: Bỏ theme vừa tải vào thư mục `Resource`&#x20;

{% hint style="danger" %}
Lưu ý chỉ có 1 folder sau đó phải tới các icons&#x20;

> VD khi các bạn tải theme từ app về theme sẽ nằm trong mục `oc themes` nó sẽ có các mục ⇒ opencore ⇒ icons thì thư mục icons chính là thư mục chứa các tệp ảnh nên khi copy vào resource các bạn chỉ copy thư mục icons.&#x20;
> {% endhint %}

B3: Set config như trên nhưng phần `Misc -> Boot -> PickerVariant` thì các bạn thay đổi vaule thành tên của thư mục chứa tệp ảnh&#x20;

> Sau khi đổi xong các bạn sẽ được như hình&#x20;

![](https://lh6.googleusercontent.com/_B-s4wEICtcFJMHROmQJevqbn-PUSbT7qSKGqX532l388WfKrOy8rw8YceC2YJ1DgIZ94vRGy0sY-SZnELbpuNVSUQmN1d4Ugko1JHrWbYLjC4PIUp0kU4Vs94u5DTlEK3GgBN0n=s0)

{% hint style="warning" %}
Lưu ý

Cách này chỉ áp dụng đối với phiên bản OpenCore từ 0.5.7 trở lên&#x20;

Nên bạn nào có phiên bản OpenCore dưới 0.5.7 thì nên Update OpenCore theo bài hướng dẫn [ở đây](/universal/update-macos-va-bootloader.md)&#x20;

Nếu các bạn đã làm nhưng vẫn không nhận GUI thì các bạn nên xem lại phiên bản `OpenCanopy.efi` có đúng với phiên bản OpenCore đang sử dụng hay không.
{% endhint %}

<details>

<summary>Heavietnam_Themes</summary>

Nếu bạn thích có thể tham khảo các themes sau đây là các theme do đội ngũ heavietnam tạo ra.

* [Themes\_Android12](https://drive.heavietnam.com/d/s/zBXqux2WtlwdhskN5mdwXJpMYNWlPqsu/x__-Lfn4ubeOysZiIDfJGfNB0qsnnCIz-Dr1gs_aZggs)
* [Themes\_ASUS\_ROG](https://drive.heavietnam.com/d/s/zBXqx0m1R23jtOsIRFxok8L0GmkPWpVT/2s1ZzeAwgdEzvTvt9lo6NH8bdbIkZlK--LL2grwGaggs)
* [Themes\_ASUS\_Normal](https://drive.heavietnam.com/d/s/zBXr1HKAfKYPDnFPMKqMsUJeVycfOCRv/NfHcWSfxt9ZWR89JImszhsnj9drFYU6W-Rr2A8Aqaggs)
* [Themes\_Windows11\_Dark](https://drive.heavietnam.com/d/s/zBXr4W0Zd6CN7WnMp3JFRk1OyJ7XnwdT/gSDt18QpBkoZD35oTjr2ZeKYh8ykLBPL-X71ATBOaggs)
* [Themes\_Windows11](https://drive.heavietnam.com/d/s/zBXr6MgWBGQcx4aEzX5pJRSAD49KSirU/FXs4sIOS7xPByXPI6lValrYJUHhoHzvm-eb1gZhuaggs)

</details>

## Clover

B1: Tải theme [từ nguồn](https://github.com/CloverHackyColor/CloverThemes) hoặc bất cứ nguồn nào mà bạn thích.

B2: Bỏ theme vào mục Themes.

B3: Mở config vào mục Gui.

![](https://everythingforhackintosher.files.wordpress.com/2021/09/cleanshot-2021-09-11-at-09.31.43.png?w=1024)

B4: Gõ tên Theme vào mục Theme.

B5: Save lại và Restart.

## Custom GUI

### MacOS

B1: Chọn 1 bức ảnh tương ứng với một icon hoặc background

> Chỉ với định dạng PNG.
>
> > Nếu định dạng khác bạn có thể dùng tool tại đây để convert sang PNG xem chi tiết [tại đây](https://cloudconvert.com/)

B2: Tải app [sau](https://github.com/chris1111/Icnspack-Builder/releases) về

B3: Mở app lên các bạn sẽ được như hình

![](https://lh6.googleusercontent.com/WhVfA06Ma8-fTqCYzv3raB_oYpOWxQB8AHVRLnwjxFE8gkQax2yD6GpO7VCQJRw6lBqXvDyrYSrlDKVjki89pw19bviN1KGYnjTw_4d-6uF8wY9wk5KRm7_7M6OczWtSM_n-VvpY=s0)

B4: Bấm vào ![](https://lh5.googleusercontent.com/dXIZ6F2jfhyYimw5zddIlJUSx9JzDwkr3mxHVXEp9VLwtt-1kw2PJDNHQD-AYshX1ztF3gYySOQ7q5ZPCHvzMKhdgaEd5Y8Wx_5BYNgBABM7HTqorszuJraa3r1nANNrWQaEx93W=s0)

B5: Kéo file `.png` vào.&#x20;

B6: Bấm `save` và chọn nơi save.

B7: Sau khi hoàn thành tất cả các bước trên các bạn sẽ được file ![](https://lh3.googleusercontent.com/7uhnV1xO601Efd0FROepj8RdRlQZi1MxzT3CesAtSZ99zpuK2B1Nc1dq5Egah5ssLXmIhpxPT05FGdfZRRhOsSwSsfcy5OvZtGGJ3yTuX0QqdiV61KtIeCUzFpBQcY6N7GWg2S5F=s0)&#x20;

B8: Giải nén file ra và các bạn copy vào theme đang ùng hiện tại và rename lại thành `Background.icns` như ảnh.

> Nếu như bạn custom một icon thì bạn thay `Background.icns` bằng đúng tên icon đó trong theme đang sử dụng

B9: Replace file vừa được tạo vào theme đang sử dụng của bạn

B10: Reboot và tận hưởng thôi.

### Windows

B1: Download OpenCorepkg [tại đây](https://github.com/acidanthera/OpenCorePkg/releases)&#x20;

B2: Giải nén và truy cập vào `OpenCore-PKG\Utilities\icnspack`

B3: Copy hình ảnh tương ứng với một background hoặc một icon vào folder này

B4: Nhân bản hình ảnh này

> Chọn vào image rồi ấn Control + C sau đó Control + V
>
> > Nhớ là tên viết liền không dấu

<figure><img src="/files/PR6xg0HcbnMk7YZKzpoi" alt=""><figcaption></figcaption></figure>

B4: Mở `CMD` lên và gõ các lệnh sau vào

```bash
cd + [kéo folder icnspack vào]

#Lệnh chung
icnspack image.icns <Tên image 1>.png <Tên iamge 2>.png

#Nếu bạn định thay đổi background thì nhập lệnh sau 
icnspack Background.icns <Tên image 1>.png <Tên iamge 2>.png

#Nếu bạn định thay một icon nào đó trong theme đang sử dụng thì chỉ việc thay tên icon đó vào chuỗi ký tự "image.icns"
#Ví dụ ExtHardDrive.icns
icnspack ExtHardDrive.icns <Tên image 1>.png <Tên iamge 2>.png
```

<figure><img src="/files/SVr69jj2gjpssBzmdcFs" alt=""><figcaption></figcaption></figure>

B5: Thay thế file vừa nhận được vào themes bạn đang sử dụng

## Boot-chime <a href="#setting-up-boot-chime-with-audiodxe" id="setting-up-boot-chime-with-audiodxe"></a>

### Chuẩn bị

B1: Đảm bảo Onboard audio output của bạn hoạt động

{% hint style="info" %}
Vì USB DACs sẽ không hoạt động.

Còn GPU output thì phụ thuộc vào vận may của bạn
{% endhint %}

B2: Thêm driver `AudioDxe`

> Có sẵn trong file `Opencore PKG --> X64 --> EFI --> OC --> Drivers`&#x20;
>
> > Tải [tại đây](https://github.com/acidanthera/OpenCorePkg/releases)&#x20;

B3: Đảm bảo rằng bạn đã có Folder `Resources` ở trong `EFI`

> Folder này nằm ở phần [Opencore Picker Default](#opencore-picker-default)
>
> > Nếu bạn sử dụng theme thì hãy chắc rằng theme của bạn có file `OCEFIAudio_VoiceOver_Boot.mp3`

B4: Hãy convert EFI của bạn sang bản debug

> Xem chi tiết [tại đây](https://advance.heavietnam.com/general/opencore-debug)
>
> > À khi đọc đến đây đừng vội đóng tab. Vì bạn hoàn toàn có thể trở lại bản `RELEASE` sau khi hoàn tất
> >
> > > Việc trở về bản `RELEASE` tương tự với debug

### Tiến hành

B1: Mở `Config.plist` bằng [propertree](https://github.com/corpnewt/ProperTree)

#### **Setting up NVRAM**

* `NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82`
  * `SystemAudioVolume | Data | 0x46`
    * Nó là mức âm lược của `boot-chime` và trình đọc màn hình ở `picker`&#x20;
    * Giải thích một chút mức âm lược mặc định là `0x46` khi convert nó sang `decimal` thì nó sẽ là `70` &#x20;
      * Và nếu bạn set nó vướt quá `100` ở dạng decimal thì nó sẽ mute ví dụ như `0x80` thì bạn sẽ mute nó
  * `StartupMute | Data | 0x00`
    * Đây là tuỳ chọn giúp tắt và bật tiếng khi bạn khởi động
    * Nhưng hãy nhớ răng `0x00` không có nghĩa là mute mà nó lại có nghĩa là bật tiếng
      * Bạn có thể hiểu nó như sau `StartupMute` tuỳ chọn này để mute tiếng khi khởi động và khi bạn set `vaule` của nó là `0x00` thì tức là disable cái `StartupMute` suy ra bạn sẽ có tiếng khi khởi động&#x20;
      * Từ điều này ta hoàn toàn có thể suy ra với bất kì giá trị nào của `StartupMute` thì âm thanh khi khởi động đều bị tắt

#### **Setting up UEFI -> Audio**

* `AudioCodec | Number | vaule`
  * Thay đổi `vaule` thành giá trị của `IOHDACodecAddress` &#x20;
    * Lấy giá trị này như sau
      * Tải  [IORegistryExplorer](https://github.com/khronokernel/IORegistryClone/blob/master/ioreg-302.zip)
      * Truy cập vào `HDEF -> AppleHDAController -> IOHDACodecDevice --> IOHDACodecAddress` &#x20;
* `AudioDevice | String | Vaule`
  * Thay đổi `vaule` thành `audio device path` của bạn&#x20;
    * Vậy làm sao để lấy được path này. Hãy làm như sau
      * Bạn có thể dùng [hackintool](https://github.com/benbaker76/Hackintool/releases)
        * Truy cập vào tab PCIe và quan sát mục `Class` tìm kiếm mục có tên `Audio`
        * Chuột phải vào dòng đó và chuột phải chọn `Copy Device Path`
        * Và đó chỉnh là `Vaule` cần tìm
      * Hoặc bạn có thể dùng [gfxutil](https://github.com/acidanthera/gfxutil/releases)
        * Mở `Terminal` và nhập lên sau
        * `/path/to/gfxutil -f HDEF`
  * Thường thì `Vaule` của nó sẽ là `PciRoot(0x0)/Pci(0x1f,0x3)`
* `AudioOutMask | Number | Vaule`
  * Công dụng của nó là xác định thiết bị phát ra âm thanh
  * Khi bạn đặt `Vaule` là `-1` thì tất cả các thiết bị âm thanh đều sẽ được sử dụng&#x20;
  * Các output chanel sẽ được sử dụng ở dạng bit&#x20;
    * Ví dụ như bit 0 thì sẽ có vaule là 1
    * Bit 1 sẽ có vaule là 2&#x20;
    * Chú ý không phải là công thêm mà sẽ có công thức ở bên dưới&#x20;
  * Và đến đây chắc bạn cũng đã biết rằng `vaule` là `1` không có nghĩa đó là `main speaker` mà đó chính là thiết bị `audio output` đầu tiên trong danh sách các `audio output`
  * Và đây chính là phần quan trọng nhất của mục này. Dưới đây là công thức tìm ra được `vaule` mà bạn mong muốn
    * Ta có công thức tìm `vaule` là `2^n` với `n` là thứ tự output của bạn ở trong danh sách audio output
    * Nếu bạn định hỏi tôi rằng `main speaker` của bạn ở trong danh sách xếp vị trí thứ mấy thì tôi không biết. Cách duy nhất để xác định đó là thử thủ công từng cái một cho đến khi hết danh sách&#x20;
      * Thử từ `2^0 -> 2^(n-1)`
  * Nãy giờ tôi nhắc đến danh sách `audio output` khá nhiều nhưng nó ở đâu và bạn có bao nhiêu `audio output`
    * Đáng buồn thay danh sách audio output do hệ thống tư detect và bạn không thể xem nó

    * Nhưng bạn có thể biết mình có bao nhiêu audio output bằng cách check `OpenCore Debug Log`

    * ```
      06:065 00:004 OCAU: Matching PciRoot(0x0)/Pci(0x1F,0x3)/VenMsg(A9003FEB-D806-41DB-A491-5405FEEF46C3,00000000)...
      06:070 00:005 OCAU: 1/2 PciRoot(0x0)/Pci(0x1F,0x3)/VenMsg(A9003FEB-D806-41DB-A491-5405FEEF46C3,00000000) (5 outputs) - Success
      ```

    * Như ở đây ta dễ dàng thấy có 5 `output` và như vậy bạn sẽ cần check từ `1->5`
      * Áp dụng vào công thức 2^n ta sẽ có&#x20;
        * `2^0=1`
        * `2^1=2`
        * `2^2=4`
        * `2^3=8`
        * `2^4=16`
* `AudioSupport | Boolean | True`
  * Kết nối với backend driver để hỗ trợ âm thanh
  * Thông qua giao thức dựng sẵn các thiết bị âm thanh đã được chỉ định ở `AudioOutMask` của `Codec` đã được chỉ định ở `AudioCodec` nằm trên `Audio Controller` đã được xác định ở `AudioDevice`
* `DisconnectHDA | Boolean  | False`
  * Không kết nối bộ điều kiển `HDA` trước khi load trình điều khiển.&#x20;
  * Có thể yêu cầu dành cho máy Mac, máy ảo VMware
* `MaximumGain  | Number | -15`
  * Mức `gain` tối đa được sử dụng, xác định bằng đơn vị `dB`
* `MinimumAssistGain | Number | -30`
  * Mức `gain` tối thiểu được sử dụng, xác định bằng đơn vị `dB`. Trình đọc màn hình `OpenCore Picker` sẽ ưu tiên dùng giá trị này nếu giá trị `SystemAudioVolumeDB` có trong `NVRAM` thấp hơn
* `MinimumAudibleGain | Number | -55`
  * Mức `gain` tối thiểu dành cho mọi âm thanh được phát ra, xác định bằng đơn vị `dB`
* `PlayChime | String | Enabled`
  * Giống với chức năng của `StartupMute`
  * Ở tuỳ chỉnh này sẽ có các `vaule` như sau
    * `Auto` — `Enable chime` khi `StartupMute` ở `NVRAM` không có giá trị nào hoặc được đặt thành `00`
    * `Enabled` — `Enable chime`
    * `Disabled` — `Disable chime`
* `ResetTrafficClass | Boolean | False`
  * Đặt `HDA Traffic Class Select Register` thành `TC0`. Nên sử dụng thuộc tính `alctcsel` để thay thế
* `SetupDelay | Number | 0`
  * Mặc định thì vaule của nó là `0`
  * Một số `codec` cần thêm thời gian để setup bạn nên đạt nó thành `500 milliseconds`&#x20;
    * Chỉ khi bạn gặp issue

{% hint style="info" %}
Sau khi hoàn thành bạn sẽ nhận được như sau&#x20;
{% endhint %}

<figure><img src="/files/PympHnq7Ysa6IlPgFHIz" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Bạn có thể sẽ cần chỉnh sửa `sampling rate` của file `OCEFIAudio_VoiceOver_Boot.mp3` theo `sampling rat`e mắc định của `codec` thủ công.&#x20;

> Ví dụ với `Realtek ALC295` cần chuyển `sampling rate` từ `44,1kHz` lên `48kHz.`
> {% endhint %}

{% hint style="info" %}
Nếu bạn là người khiếm thị

> Thì OpenCore vẫn có support cho bạn

* `Misc -> Boot -> PickerAudioAssist -> True` để  enable `picker audio`
* `UEFI -> ProtocolOverrides -> AppleAudio -> True` để enable `FileVault voice over`
  {% endhint %}

> Source tham khảo: [https://dortania.github.io/OpenCore-Post-Install/cosmetic/gui.html](https://dortania.github.io/OpenCore-Post-Install/cosmetic/gui.html#setting-up-opencore-s-gui) | <https://lzhoang2601.github.io/post-install/cosmetic/#boot-chime>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://basic.heavietnam.com/cosmetics/tao-gui.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
