Before beginning, you will need:
- v4l2loopback, a Linux kernel module that, like
aloop, creates a loopback device that can be seen as a camera; - gstreamer, which can integrate with pipewire but doesn't seem to use
v4l2loopbackdevices well; - ffmpeg, which does perfectly well with
v4l2loopbackbut (for now) lacks pipewire support.
I'm presuming you're using pipewire and any of the xdg-desktop-portal implementations appropriate to your compositor, and that it is configured to be running as part of your session (and reachable via the DBus session bus).
%%tana%%
- Cheat Sheet
- ✨ Tana Expressions
- Title #tana-expression
- Description:: A title expression composes values from the node into a title.
- Attributes:: Search for Tana "Title" Attributes
- Search #tana-expression
- Description:: The search expression consists of a flat list of match-clauses that must be true for a node to match the search.
- Attributes:: Search for Search Attributes + Search for Search Field Values
- Title #tana-expression
- ✨ Tana Expressions
- 🧩 Tana Attributes
| { | |
| pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/refs/tags/22.11-beta.tar.gz") {}, | |
| } : | |
| with pkgs; | |
| let | |
| init = pkgs.writeScript "init.sh" '' | |
| #!${pkgs.runtimeShell} | |
| /activate | |
| exec /run/current-system/systemd/lib/systemd/systemd $* |
| for (const elem of document.querySelectorAll('[type="email"],[placeholder*=email i],[aria-label*=email i]')) { | |
| const prevName = elem.name; | |
| const clone = elem.cloneNode(); | |
| clone.name = 'email'; | |
| elem.replaceWith(clone); | |
| setTimeout(() => { clone.replaceWith(elem) }, 5000); | |
| } |
| #!/bin/bash | |
| ########################################################################################################################################## | |
| # https://zditect.com/blog/53084068.html | |
| # On the Mac a dynamic library (dylib) has an "install name". The install name is a path | |
| # baked into the dynamic library that says where to find the library at runtime. When you | |
| # link against the dylib this path is saved in your binary so that your binary can find the | |
| # dylib at runtime. | |
| # If the given binary is a dylib | |
| # install_name_tool -id @rpath/<libname> will update the LC_ID_DYLIB (install name) of |
| import os | |
| from inspect import currentframe | |
| def get_linenumber(): | |
| cf = currentframe() | |
| return cf.f_back.f_lineno | |
| print("Current Line number: {}".format(get_linenumber())) | |
| print("Current File name : {}".format(os.path.basename(__file__))) |
Rules of thumb for common/useful parameters. Personal notes, maybe useful for others.
Official documentation: https://x265.readthedocs.io/en/master/
FFmpeg x265 guide: https://trac.ffmpeg.org/wiki/Encode/H.265
| #!/usr/bin/env python3 | |
| # SPDX-License-Identifier: 0BSD or CC0-1.0 or MIT-0 or Unlicense | |
| # Copyright (c) 2023, Ryan Castellucci, No Rights Reserved | |
| import io, sys | |
| import datetime | |
| import argparse | |
| import requests | |
| import operator | |
| import struct |
Please see here: contour-terminal/vt-extensions
Synchronized output is merely implementing the feature as inspired by iTerm2 synchronized output,
except that it's not using the rare DCS but rather the well known SM ? and RM ?. iTerm2 has now also adopted to use the new syntax instead of using DCS.