## 経緯
サイドバーではアイコンが設定されているが...
![[Pasted image 20230805143325.png|frame]]
開いた後はアイコンが設定されない...
![[Pasted image 20230805143419.png|frame]]
コードでは以下のように設定している。`addRibbonIcon`はサイドバーだけの模様。
```ts
private init() {
// UIなどの登録系はここ
this.registerView(
VIEW_TYPE_FREE_WRITING,
(leaf) => new FreeWritingView(leaf)
);
this.addRibbonIcon("pencil", "Free Writing", () => {
this.activateView();
});
}
```
## 設定方法
`View`の`getIcon`をoverrideする。具体的には
```ts
new FreeWritingView(leaf)
```
の`FreeWritingView`について
```ts
// Why private?
type IconName = string;
export class FreeWritingView extends ItemView {
getIcon(): IconName {
return "pencil";
}
}
```
のようにする。
> [!caution]
> `IconName`は[[obsidian.d.ts]]では非公開のため自分で[[型エイリアス (TypeScript)|型エイリアス]]を設定する